- A+
领500g书库,关注公众号:程叫兽的宝藏 (长按可复制!)
热门下载区==>点此链接进入<<<
目录(点击切换)
本文节选自《计算之魂吴军》电子版:
/第5章//工具与算法一一图论及应用//|字|生于村和让人~本人es1国[|机上]|ed|ee|21|C1CC图5.15两个字符串编辑距离最小的对应方式TeTTTelnilani在一张有向的网格图中,从左下角(相当于对应于坐标系的原点)到右上角的路径数是拼写长度的指数函数,具体讲是我们前面讲过的卡特兰数。因此从中挑选一个最短的路径并非易事。所幸的是,有一种动态规划的算法,可以将这个指数复杂度的问题变成线性复杂度的问题。为了让算法具有普遍性,我们用一个普通的有向图G=(玉Bosj)来说明,如图5.16所示。同时为了简单起见,我们假定有向边的权重都是正实数。图5.16一张具有权重的有向图如果我们要寻找从起点$到终点E的最短路径,不妨先倒过来想这个问题:假定已经找到了最短路径,即图中虚线和双线构成的路径,我们称之为路径1,如果它经过Y节点,那么在这条路径上,从S$到Y的部分,也就是虚线的子路径PS,7),必然是所有从S到Y路径中最短的。为什么这么说呢?因为假定还存在从S到Y更短的路径比如图中点画线的那条子路径Q(S,7),那么只要用子路径Q代替了,就可以和原来路径中
计算之魂吴军在哪看
的剩余部分R(YB)形成一条从$到E经过Y更短的路径,我们称之为路径2。这就和我们讲的路径1是S到E经过Y的最短路径相矛盾了。了矛盾的根源在于,我们所假设的子路径Q比子路径P短是错误的。185//计算之魂于最短路径有这样的性质,我们就可以将一个“寻找全程最短路径”的问题,分解成一个个寻找局部最短路径的小问题,然后用递归的方式加以解决。比如要寻找从S到Y的最短路径,我们可以假定从$到YY上一级的节点X1、X2和X3的最短路径已经找到了,它们是P(S,XU)、P(S,X2)和P(S,X1),对应的长度是LI、L2和L3。然后比较一下这三个数值:LI+10、L2+7和L3+7,看看哪一个最小。最小的那个就指示出从S到Y的最短路径。具体到路径最短。至于从起点到节点XI1、X2和X3的最短路径,也可以用上述方法递归算法5.1动态规划(Dijkstra算法)得到。有了这个递归算法,我们可以一层层地从终点E往起点$倒推,就能找到从S到了的最短路径。当然在计算机工程中,我们会把这个算法倒过来实现,恒5.16,显然是经过XI到Y的体描述如下。步又1,先算出起点S到与它相邻的所有
计算之魂pdf 下载
节点的最短路径,也就;是从S到这些节点的距离。然后把这些节点连同s放到一个集合中,我们称之为厂(有些书中也把超点放在单独的一个集合矶中)。步骤2,拷到从万能够直接到达的节点,算出从s到那些节点的最短距离,然后把新的一批节点,连同原来广中的节点,放到新的集合太中。步又3,用类似的方法得到和节点集合太相邻的各个节点的最短路径,然后形成新直到起点S到终点E的最短路径被找到为止。上述算法被称为Dijkstra算法,它的正确性有严格的证明。该算法是由荷兰科学家埃格斯格"迪克斯特拉(EdsgerW,Dijksta,又译作艾效格。迪科斯彻)在1956年提出的,当时他只有26岁。1972年,迪克斯特拉因此获得了在于,它将原本的一个指数复杂度的问题,变成了一个平方复杂度的问题,因的复杂度只有OU4HH印,其中|也是图中节点的数目图灵奖。Dijkstra算法了不起的地方为该算法,因是图中边的数目。比如,前面计算两个拼写的编辑距离的例子,采用Dijkstra算法也就是百十来次的运算,而如果采用枚举各种路径的方法,需要运算上亿次。Dijkstra算法的伪代码参见本章的附录三。186
计算之魂主要内容简介
| 吴军 计算之魂 mobi | 计算之魂思维导图 |
| 计算之魂 吴军 pdf | 吴军的计算之魂读后感 |
| 计算之魂解析 | 吴军 计算之魂 |

《计算之魂吴军》下载
-

[PDF电子书下载]《计算之魂吴军》 -

[epub电子书下载]《计算之魂吴军》 -

[word电子书下载]《计算之魂吴军》 -

[txt电子书下载]《计算之魂吴军》
版权提示: 本站为导购型网站,对拥有版权的书籍及内容,本站已经加入内容屏蔽,仅提供书籍介绍,并未提供资源下载地址,如需要删除书籍介绍,请联系我们删除。
综上:计算之魂概述值得推荐阅读。

