算法设计与分析_算法设计与分析(三)

ddc90d276fc81ea026978bc787fc03d5.png

矩阵乘法验证的问题。目前最好的确定性算法时间复杂度是

0/1向量指其中元素非0即1.

55839cc6c26f62002169f1369ede9f1b.png

这么搞肯定有些问题,但重复执行显然能显著降低错误率。

fec49f0773cbd1fa3c335daa9ecb507f.png

9eb030c56ad06538c146070faf73c8ea.png

4a3c0d810e1c987c5555c360e6d7cc84.png

很显然算法是偏假的。毕竟只要返回假,就肯定有错。

69521bce9fa169898bc3ab5134514341.png

c6f3ad16056afdb53f62d6b96e45d221.png

8843e126f244c23432df96d8b70297cb.png

一个习题。

07dac72246c3f089ba3ad60ff8714d67.png

以上就是介绍的所有概率算法。接下来是近似算法。

三、近似算法

a5d5d7318737ff045b3fc08ca9d5ce25.png

3.1 NP-完全性理论

因为至今有很多问题无法通过计算机在可行时间内找到解,因此我们不必所有问题去寻找最优解,有的只需要寻找次优解就行。我们要考虑次优解的质量,这也是近似算法要明确的问题。

问题的可计算性与其对应的数学模型无关。什么是算法?有限,无二义性等,最重要的是有穷性。

1c135088b34ac3a94f48799eb8166e42.png

d31c7ea864940cae9a3571794f3c3805.png

cc3f7ec983531a19d36d1808f8700a84.png

caf0e4bf186c0d51416efa487a4043bb.png

050d346b1f97ddfa05f6f6dcc8384fef.png

问题I的回答是yes当且仅当f(I)的回答是yes。

eb25dacd682275568376ea212ec17c07.png

停机问题是个很好的栗子(感觉这东西就跟理发师问题一个亚子,“我只给不给自己理发的人理发”)。

归约最重要的是传递性(还有个反身),将现有的结果归约到你想证的结果,就可以了。第一个证明出某个问题是NPC的是真的强。

a649df6c4131a50ca9b88faea8ffeb2d.png

6ffca39c266bb9bab9c01cb459f8b482.png

NPC问题是NP中最难的。

我们猜想它们的关系如下。

注意如何证明问题q是NP-hard或是NPC的。所以现在最关键的是找出第一个NPC问题(传递性),剩下的就可以归约就好了。

6cf489f560525205e1598fa42be99da5.png

728c73fd4e6f2c7395cdc8544edc60b8.png

52da1fb45df6630977b8b580a7dff121.png

3823ec847daa4496a79cde322b1eb8f2.png

acab3db89059aaa8b384f8ebe8255bce.png

3.2 近似算法

f823e6647ce3b4d39ecab54cfd7e2b03.png

存在伪多项式时间算法的问题称为弱NPC问题。

6d120a93e974a22eaf38e7e01491c4b1.png

54a001f5e3a05dfc8e57c558938fd0b5.png

97a804eaad27b171682f2f1ba3fe38d6.png

要保证精确度,先定义一些东西。

3437900f31690acbceb90338f7a79235.png

3fa261c3b90a9df7a813dfcbbc8bf4b4.png

基于最后一行的原因,我们考虑最优解的问题,而不考虑判定问题。

2c79d7be0001a193b49a5fddc82f3e6f.png

注意是近似算法了。最优解和近似解这里都是指的是它们对应的值,这是需要清楚的。

4d5eab9bfecd5657282b257a080fb4b5.png

68e740cc2371b09d06a2c00f0692e26e.png

目前如果能对一个实际问题将其证明是NP-hard问题,然后用近似算法解决,那么一定能发个很好的文章,绕不开的就是这个性能度量。

只有很少一部分问题能找到绝对近似算法。

b4aceb9d55c26a82308b56cbdbf616e8.png

图的定点着色问题是一个有绝对近似算法的。

9e69899f99dae64888e8076ebdce860b.png

每一个顶点有三条边与其相邻,称为三正则。下图右上角的就是一个三正则的。

cad52b82d8f17f4b6414362b64bf7da0.png

b67566e8b54e989f8b79fa073459140c.png

下面就是否定找不到绝对近似算法的栗子。

d8827bd92627e7dfd9d61b1c9dc8ca95.png

一个构造性的证法,不过很好想到,从最后反解就好了,惯用伎俩。

b918a5875d18f8a8499df197c4ec1605.png

a2b8fcbddb199a1a439ef884fcef4ec9.png

c009c2d8389793ce90c5ac119205da38.png

将图复制m个,然后做全连接。

2fd0118e23aef0677a3a3a76f3b77e6f.png

ab1434f438e640cda4e877bcce77f6a0.png

由上述分析,我们有必要放松对好的近似算法的要求。近似解与准确解的比值,称为相对性能比。

以多级调度为例。

b0bd33753a96c7386d028cbe8a9ba3ac.png

List调度算法显然是一种贪心策略。

c8bb0a1e2d968ee62c98da3e28856147.png

44f1a085f38ca2c18934548c35bbb226.png

下面说明上述上界是一个紧致的上界。

fd63c8319d693206b875c3f7eb4ed85a.png

d554787da82e6502c2cf13f55288c5eb.png

好的论文需要好的近似比以及相应的严格的证明。

9e3154e14abb2d213e4471142e04e6fe.png

128d6400fcd07c86d64124ced3d4eac8.png

ad8df578a095bece890cff6b5295260a.png

中间差了几张,不过不要紧,证明过程就那样子吧,知道结论就好了。

只考虑最优解值足够大的实例。

大多时候渐进性能比更好。

027b913eda8815a0378d981b1a5db67d.png

fc534b2c377015b89cb7b1ab695936d8.png

6a6a2196d51210ca956313af22225d96.png

357a81480eed47926b02de0440f8c1c9.png

FFD是先把所有物品按size递减排,然后再使用FF策略。

更多时候要关注渐进性能比。

14c7accbcf7b84d3423d16ddc1a062c8.png

旅行商问题。

我们只对特殊版本找一个近似解,正常的TSP问题可能找不到一个近似算法。

29d5767b6880ccd9fc0ba57a5963b057.png

近邻法就是去离得最近的没去过的地方,但这种策略不行,渐进性能比达到logn。

4c9f053b9cd26f102d698b32d5d409e7.png

多重图,两个顶点之间可以有多条边。

欧拉路:经过每个顶点一次的。

a2e4759e338dcb09d7b34bc289ed07df.png

2b2613f5b466ffdd2a20ee7cedecf9ec.png

653d5725a31f293ad3c21d7ccbc02446.png

a794df61c1c734901577146672e60f8a.png

5e1636e953d2bd1964ab8a8815842f2c.png

c063559a4090b4a73e7f21e831f28fc2.png

24d197ea730ecd04e1070b5442eede04.png

——————————————————————————————————————

我找到屁屁踢了,这里就记到这儿叭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值