- 博客(4)
- 收藏
- 关注
原创 算法导论随笔(十六):线性规划与单纯形算法(下篇:算法细节和实现(附Python源码))
在算法导论随笔(十五):线性规划与单纯形算法(上篇:基本概念)中,我介绍了解决线性规划问题的单纯性算法所用到的一些概念。在这篇文章中我们来看看算法的一些实现的细节。单纯形算法的Python实现已经上传到我的GitHub仓库https://github.com/tjfy1992/Simplex中。下载后在PyCharm中打开工程即可。1. 松弛型的转动(Pivot)上篇文章中提到过,单纯形算法的目的是将一个标准型的线性规划问题转化为松弛型,并且对松弛型进行一系列转化,使得该松弛型的目标函数中,所有变量的系
2020-11-15 10:28:59 960 2
原创 算法导论随笔(十五):线性规划与单纯形算法(上篇:基本概念)
线性规划(Linear Programming)问题指的是在给定有限资源的前提下,最大化或最小化某个目标的问题。这里我将分上下两篇来谈谈线性规划和单纯形算法。前言线性规划问题有很多例子,比如在算法导论随笔(六):贪心算法Greedy algorithm与分数背包问题中,我曾经提到过一个分数背包问题。当时是使用贪心策略来解决。其实,这个问题也可以使用线性规划来解决。先来回顾一下分数背包问题:如下图,图中有5瓶液体,分别标号为1,2,3,4,5。编号为1的液体有4毫升,每毫升价值3美元。所以该液体的总价值
2020-11-12 12:52:01 938 1
原创 算法导论随笔(十四):NP完全性之P问题、NP问题、NPC问题和NP难问题
这篇文章中我来简单谈谈NP完全性。不同于前面所有文章中的各个具体的问题和算法,NP完全性是一个很抽象的大概念,其包括但不仅限于标题中提到的P问题、NP问题、NPC问题和NP难问题。这里我简单谈谈我对书上的内容和一些例子的理解。P问题首先来谈谈P问题。算法导论随笔系列写到现在,已经介绍了很多问题及它们的算法。其中大部分的问题,都是P问题。那么什么是P问题呢?P问题指的是能在多项式时间内解决的问题。这里的P是Polynomial(即多项式)的缩写。初中数学告诉我们,一个多项式有如下的形式:其中a0,a1
2020-11-10 12:12:46 4040 2
原创 算法导论随笔(十三):动态规划与最长公共子序列(LCS)
前言动态规划(Dynamic programming)与前文算法导论随笔(二): 归并排序与分治策略中提到的分治策略类似,都是通过组合子问题的解来求解原问题。与分治策略不同的是,在分治策略中,每一个子问题是独立的,而动态规划中每一个子问题之间则有重叠的情况。举例来说,归并排序使用的是分治策略,因为它的每一个子问题都是将一个子数组中的数进行排序,而每个子问题中排序的子数组与其他子问题中的子数组并没有任何关系,即互相独立。因此,对于每一个子数组,归并排序算法都要对其进行重新排序。例如有两组长度为2的子数组,
2020-11-09 06:14:36 488 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人