![算法(第4版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/947/26211947/b_26211947.jpg)
数字版权声明
图灵社区的电子书没有采用专有客户端,您可以在任意设备上,用自己喜欢的浏览器和PDF阅读器进行阅读。
但您购买的电子书仅供您个人使用,未经授权,不得进行传播。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
表1.2.14 一种能够累加数据的抽象数据类型(可视版本)
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0004-0001.jpg?sign=1739324612-sUaQZRYP88TEMLFhL9Ea6ysoL6omNink-0-e21a94b720d61db96fc3cbfa22b28bac)
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0005-0002.jpg?sign=1739324612-7PRfk5rMTVIimCj81PgAVDrkYWBlLP0k-0-872c87033ef2754573ac6622d308f88c)
图1.2.8 可视化累加器图像
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0005-0003.jpg?sign=1739324612-VPO0Iq1Pgej1eURpO4AoKdnQ59QNJFTw-0-7e7918483501b53b0d905402d3998b4a)
图1.3.1 背包的操作
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0005-0004.jpg?sign=1739324612-bYY4WkKw9IONTxlevk0cDc5yE9w0hNrE-0-8ac57c09bead5be0b29118d623d16bcf)
图1.4.7 向一个RandomBag对象中添加元素时的均摊成本
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0006-0005.jpg?sign=1739324612-jXk8oZAdn94f9HFwuYxVesdBNeCUzHaR-0-96e87610deb95fca1528ececd65bdd76)
图1.5.1 动态连通性问题
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0006-0006.jpg?sign=1739324612-gIft8EqkBODfYOII3c1dOeWVRG2aZOyc-0-e06c9151175b0bc5069253c0c19571a9)
图1.5.10 所有操作的总成本
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0006-0007.jpg?sign=1739324612-SJz2FgnXD9Epsw9QB44uaXwLs1kzsILO-0-48562ad51b13ab3a1ec06c22050c47af)
图2.1.1 初级排序算法的可视轨迹图
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0007-0008.jpg?sign=1739324612-ZTQAImewf8UO5rMiCx77eaYUt8OKr59S-0-4990eaaeaf50624f3fc0639d3334c886)
图2.3.3 使用了三取样切分和插入排序转换的快速排序
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0007-0009.jpg?sign=1739324612-gdQSBelrwP0N2LtCFH3dVvvuJmbi6hws-0-987713e4d996bd2b1e02f34e115f71fb)
图2.3.5 三向切分的快速排序的可视轨迹
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0008-0010.jpg?sign=1739324612-3L1ePHrexSP41k9D6KCdgs3Au4d2WzMi-0-18258c694c3ac0c6fcfac806e0b97690)
图2.4.8 堆排序的可视轨迹
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0008-0011.jpg?sign=1739324612-SncXkJPvyKQGaIq5VUvsi8YQnvk49KLS-0-74bc82e38d1ceed02759a81b763c8e3a)
图2.5.2 用切分找出中位数
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0008-0012.jpg?sign=1739324612-nkpg9AymVJgwpj0oUuNd1hbd79UhS1zV-0-6a47244eff4fbbeb1f71b7a53da64ab9)
图3.1.2 使用基于链表的符号表的索引用例的轨迹
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0009-0013.jpg?sign=1739324612-S0Bhe8zJsrBisj1BFa6tfITtWjyFpAO2-0-b179556d94f24f53e905182bfbf3ef9a)
图3.2.14 一棵随机构造的二叉查找树中由根到达任意结点的平均路径长度
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0009-0014.jpg?sign=1739324612-ksLRykywy5QtBNVFfNtJiz6gTgsKdTfK-0-7fa063213ce7f592dcac22bca650b801)
图3.3.12 由一条红色左链接相连的两个2-结点表示一个3-结点
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0009-0015.jpg?sign=1739324612-ZlZ0Nse8wl86qOe3Gqp4JmoOyf9oVsRY-0-b805fd6f496f0ecfcf889122fc48f114)
图3.3.13 将红链接画平时,一棵红黑树就是一棵2-3树
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0010-0016.jpg?sign=1739324612-GQuD26DVG6ZpynmOcX8AhSjtOsIWTAqo-0-71daf1a394493c9a685eee15cc997670)
图3.3.14 红黑树和2-3树的一一对应关系
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0010-0017.jpg?sign=1739324612-ES5Zl1qAlD1lyVJ05Z6ZvWkBWmSxJCAS-0-44b4d347b7d578552b8d2c688d0256fc)
图3.3.15 红黑树的结点表示
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0010-0018.jpg?sign=1739324612-BBfHJE6fYOrq5SKDBUBH20lcY8jTSSEv-0-564399a8265ac45a684592c7989707a0)
图3.3.16 左旋转h的右链接
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0010-0019.jpg?sign=1739324612-ymMrqod9WZYINDlsTIdjZzbCHYfBnCYZ-0-ad6f0a7f14c8d7808c6f72383d143f06)
图3.3.17 右旋转h的左链接
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0011-0020.jpg?sign=1739324612-0jyvggtxErE4aCOwXx6CFGAEPK5j6buV-0-5771b095d4c58cf2b9cd198c0499c497)
图3.3.18 向单个2-结点中插入一个新键
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0011-0021.jpg?sign=1739324612-uSAoucHmPq5vkcdW7orXscdUhJfhRs6p-0-58268c7939e08e87b15c74cf64c3fb77)
图3.3.19 向树底部的2-结点插入一个新键
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0011-0022.jpg?sign=1739324612-AwaaiqVjvPKnZY6mGt5l5bS7Fcv0Ccui-0-54f888088fd3096b7a91716a82ee0e64)
图3.3.20 向一棵双键树(即一个3-结点)中插入一个新键的三种情况
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0012-0023.jpg?sign=1739324612-1aNixMR1fbEXDUn0dNR0zX67O78GV2wD-0-99f2658ac78587aa36c83b3f9e9d66e5)
图3.3.21 通过转换链接的颜色来分解4-结点
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0012-0024.jpg?sign=1739324612-WfVUr7UEhSYWZtaN63vKkj4HaOV81FWZ-0-2ea50606d14c9822f9e08187723f52c2)
图3.3.22 向树底部的3-结点插入一个新键
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0012-0025.jpg?sign=1739324612-WkJZ3hTZpjkFmyx2oqAMYOy4HiQFn37X-0-df0dc485a26ce973a3de2c0d2417c596)
图3.3.23 红黑树中红链接向上传递
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0013-0026.jpg?sign=1739324612-rhmoVD8WgucJHJNcGPmcvyLjSHBGvIoZ-0-29ba087e8b9d78904e894f4e477f09bc)
图3.3.24 红黑树的构造轨迹
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0013-0027.jpg?sign=1739324612-qNK3GYvyZs0caYDLWXcliRGyYHnldpwk-0-6ed0a1b297c7d42b55ece58cac60ff3d)
图3.3.27 使用随机键构造的典型红黑树,没有画出空链接
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0014-0028.jpg?sign=1739324612-85vfxi6d7u97my6VaPxRv79lPHUFrw8C-0-9e6227c228a6fad69591a03c61c3c1eb)
图3.3.28 使用升序键列构造的一棵红黑树,没有画出空链接
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0014-0029.jpg?sign=1739324612-T8Cc49p6PBK5BMq5zhzF4kcHmPMUU7NJ-0-a9171734c3555702634ddf71addb3759)
图3.3.30 随机构造的红黑树中到达一个随机结点的平均路径长度
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0014-0030.jpg?sign=1739324612-RfPehfz8iyRS3haBrX3YctKHoG5y4WrP-0-f7066c5476ac23ef17234e736de41e89)
图3.4.2 《双城记》中每个单词的散列值的出现频率(10679个键,即单词,M=97)
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0014-0031.jpg?sign=1739324612-zYnC7N9H9OpdehR2Dor728zSzo8CyKXy-0-8b9a895d67b6634c354eb73cf4bca02e)
图3.4.4 使用SeparateChainingHashST,运行java FrequencyCounter 8 < tale.txt时所有链表的长度
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0015-0032.jpg?sign=1739324612-0AyXf21afkAiOGVwtkcPMWR8XRRb6W7N-0-cf5fe2cab55cfadb871bf2cc1083a39c)
图3.4.6 标准索引用例使用的基于线性探测的符号表的轨迹
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0015-0033.jpg?sign=1739324612-zZ6Cff7aUZ247T2VePL2O1KQ98YAZfUU-0-8d9e4ac56a70eed04363d0af9fd546bd)
图4.1.7 二分图
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0015-0034.jpg?sign=1739324612-tFPR0Yokae7n6q3HZDCkbXt7uY5cBitQ-0-5aa24e7db784925a62c26ddea029ee8a)
图4.1.10 由边得到的邻接表
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0015-0035.jpg?sign=1739324612-bm2EYmYFC1cz2AdFRIkSCsFcOqWNK8sO-0-b228fe2ccecf9de5ad38ab84af54e611)
图4.1.12 Tremaux搜索
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0016-0036.jpg?sign=1739324612-81XJ8E8VVwn3tvP9rDquiMTd1TLoIo3P-0-7f3116d1dae9f227f789462deee7389b)
图4.1.14 使用深度优先搜索的轨迹,寻找所有和顶点0连通的顶点
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0016-0037.jpg?sign=1739324612-7cfxhrZ05WQjZaNG8n0kQFAcLID0E6IB-0-20d855b6a007ba1b4156460f747c8936)
图4.1.15 使用深度优先搜索的轨迹,寻找所有起点为0的路径
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0017-0038.jpg?sign=1739324612-XDEyDBFyXCvA18cLTuDZ3dMWl0KVL68J-0-681f9ee979714166519a28d1096c966b)
图4.1.18 使用广度优先搜索的轨迹,寻找所有起点为0的路径
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0017-0039.jpg?sign=1739324612-zlIiJ7s0iF3A80D3cnGsvR1FtyxShPKJ-0-df3386addc9496d1c0d3424e055b5799)
图4.2.18 传递闭包
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0017-0040.jpg?sign=1739324612-LkvNEkddUrCyWicfP7wQ5847bx1bNYVq-0-02c5fa447410ec70715c254b16fbb68e)
图4.3.4 切分定理
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0017-0041.jpg?sign=1739324612-7dmcsUDs3TULddJDABBIfzo5YQHNipVA-0-f95ef8b2db675a9ed6691d0e3bd17018)
图4.3.6 贪心最小生成树算法
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0018-0042.jpg?sign=1739324612-AmwXlVNVRNvrquS42VZYWK3gCUaccSGr-0-128066b93bd7d0799efd7116422f8e5d)
图4.3.9 最小生成树的Prim算法
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0018-0043.jpg?sign=1739324612-uJBknRYvVjefmipLmVDhSr660rZVyUKQ-0-0ca59ef1690396160b83992e51d15ffb)
图4.3.10 Prim算法的轨迹
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0019-0044.jpg?sign=1739324612-cxub0L1ounGQIjnS6H662gZmewqwqXwd-0-49c7790c3e1f89cc1a28e8ba4a31617e)
图4.3.12 Prim算法的轨迹图
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0020-0045.jpg?sign=1739324612-zc5w5bGhH6EpR1QL4yjyxrJfDZS5v7gn-0-569c75b1dcc3fd9638014ebf966c8591)
图4.3.14 Kruskal算法的轨迹
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0020-0046.jpg?sign=1739324612-2oaP9IFrEluj2xdmU3LZBCfIJlMkrDiG-0-3713eaf037286c927c33258178dbce45)
图4.4.2 最短路径树
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0021-0047.jpg?sign=1739324612-MpbOmUOO5qpi7sqICcaEXqvSI38PLbIL-0-731d2569d80afdcca9faba79f6d0c9c7)
图4.4.6 边的松弛的两种情况
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0021-0048.jpg?sign=1739324612-4qdLpOKW5wxl2we7KKlC3lMLdq8OEme4-0-8c54bf867ef435d593108a59e31d0bc6)
图4.4.9 Dijkstra的最短路径算法
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0022-0049.jpg?sign=1739324612-ZNh3sPGLutxRvR8hrYgm3na13rD4usim-0-cc1aa39647b48ca39722ab850fc42f97)
图4.4.10 Dijkstra算法的轨迹
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0022-0050.jpg?sign=1739324612-dUbhiJvioQVoxxBBWGrsh4tVGtMkzQXe-0-ccbfcbfd11cc0989740296c35d778ff2)
图4.4.13 寻找无环加权有向图中的最短路径的算法轨迹
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0023-0051.jpg?sign=1739324612-ksx5AH0kHj3IdirkM4cQ7BZT8ulKSUul-0-e8c5917c69996d0bccc86ca1de15d153)
图4.4.14 无环图中的最长路径算法
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0023-0052.jpg?sign=1739324612-ZbuZHRgBzySZiIxsnmEj1rWN1bAUtxr6-0-45d0f09fa0cef8e3611da50a1f54fda5)
图4.4.20 含有负权重环的加权有向图
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0023-0053.jpg?sign=1739324612-nfuy8p5WJLsyIHRZ09BobcgDINb2yQm1-0-67d639589a88ee8cc5d7f13293a0faa7)
图4.4.21 最短路径问题的各种可能性
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0024-0054.jpg?sign=1739324612-lfuBwSqRoaUIUdxA6xwga1uZBGEBOHp5-0-5270643eecdf96fe1f49834eb5e0ac63)
图4.4.22 Bellman-Ford算法的轨迹
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0024-0055.jpg?sign=1739324612-r3pOHQtAg9uvaa9M5wvwzfbr69VIkpUE-0-7ff6af2a9c10b31f2407292c426cd495)
图4.4.23 Bellman-Ford算法(250个顶点)
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0025-0056.jpg?sign=1739324612-lGzTTBzRubfxD7vLpXeyrMafec4AeSmh-0-f091e24f08f2ab755affa3d457df19a5)
图4.4.24 Bellman-Ford算法的轨迹(图中含有负权重边)
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0026-0057.jpg?sign=1739324612-Zce1lmGZtpR3kqQg7Ix5jJNFKtSUR4OC-0-a2dba5e2d5c32db2b4cba792734182a9)
图4.4.25 Bellman-Ford算法的轨迹
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0026-0058.jpg?sign=1739324612-QLmi24dilKtjtwU8ZfNnQJn1N1zThA0R-0-1a376034f22fa15cf473c7d11a6a361b)
图5.3.2 暴力子字符串查找
![](https://epubservercos.yuewen.com/C3E2A1/14642182104081606/epubprivate/OEBPS/Images/Figure-0027-0059.jpg?sign=1739324612-NXWpZqTOE9OR6hz5HKDtS9jbLBc45iNu-0-6f546e48d083d28d10bd0f37d075e5a3)
图5.4.2 找到与((A*B|AC)D)NFA相匹配的模式