1、偶图的算法及应用 南师附中 孙方成第 1 页 共 13 页偶图的算法及应用南京师范大学附属中学 孙方成【摘要】 本文首先介绍了匹配这种无向图中特殊的关系,以及偶图这种特殊图的定义。然后将两者结合起来,介绍了偶图的最大基数匹配和最佳匹配的有效算法。同时通过给出有关偶图的最大匹配数和最小覆盖数间的数量关系,说明了和一般图相比,偶图所具有的独特优势。【关键词】偶图 匹配 增广路 覆盖集 算法复杂度一、 前言偶图是一种特殊的图。偶图的结点总是被分成两个互补的部分,这两部分常常用来分别表示两类不同的事物。而两类事物间的最基本的关系,就是匹配的关系。如果能根据具体的情况,将偶图和匹配结合起来,则可以在很大
2、程度上打开思路,优化算法。总之,偶图这种特殊的图,在程序设计中有着广泛的应用。它的高效性有助于对某些复杂问题的较特殊情况,给出完美的解。二、 匹配的概念定义 1 设图 ,而 是 的一个子集,如果 中的任,GVEMEGM两条边均不邻接,则称 是 的一个匹配。 中的一条边的两个端点叫做在下是配对的。M若匹配 中的某条边与顶点 关联,则称 饱和顶点 ,并称 是 饱和vv的。设 是图 的一个匹配,若 中存在一条基本路径 ,路径的边是由属于R的匹配边和不属于 的非匹配边交替出现组成,则称 为交替路。若 的R两个端点都是 的非饱和点,则称这条交替路为可增广路。设图 , 被分成两个非空的互补顶点子集 和 ,
3、若,GVEVGXY图 的一个匹配 能饱和 中的每个顶点,换言之, 中的全部顶点MX和 中的一个子集的顶点之间确定一个一一对应关系,则称 是图 的一个完Y MG偶图的算法及应用 南师附中 孙方成第 2 页 共 13 页备匹配。在大多数情况下,如果直接从可增广路的角度求一个图的最大(最佳)匹配,其算法效率较低。所以,对于一般图的匹配算法同时还要涉及到花苞 1的定义即处理。但由于本文主要考虑偶图的匹配问题,所以对这些内容不进行展开。三、 偶图的定义和判定定义 2 设图 ,若能把 分成两个集合 和 ,使得 中的每条),(EVG1V2E边的两个端点,一个在 中,另一个在 中,这样的图称为偶图,也叫二分图
4、,12或是二部图。根据这个定义, 或 中任何两个顶点都不邻接。偶图也可表示为12。对于顶点集 , 表示 中所有和 相连的顶点的集合。);,(21EVG1VP2V定义 3 如果偶图 的互补结点子集 中的每一结点都与 中的所有结点邻G12接,则称 为完全偶图。对于较简单的图,可以用肉眼来判断其是否为偶图。然而,根据定义或用直观的改画方法判定一个较复杂的图是否是偶图是很不方便的,因此有必要寻求一个行之有效的判定定理。定理 1 当且仅当无向图 的每一个回路的次数均为偶数时, 才是一个偶G图。如果无回路,相当于任一回路的次数为 0,0 视为偶数。证:必要性,即若 是偶图,则 的任一回路的次数为偶数。G设
5、 中任意一个长度为的回路 。因 是偶图,因.,.,01210iiii vvCm此可将 V 分为两个互补结点子集 和 ,因 和 是邻接的,设1V20i1iV210vi必有同理可得 215342,.Vvmii从结点的下标可以看出,下标为偶数的结点属于 ,而下标为奇数的结点1属于 ,今 属于 ,故 m-1 为奇数,即 m 为偶数。2V1miv2V1我们把匹配边数达到最大时的奇次回路称为“花苞” 。偶图的算法及应用 南师附中 孙方成第 3 页 共 13 页充分性,即 的任一回路的次数为偶数时, 必是偶图。分两种情况进行GG讨论(1) 是连通图将图的结点集合 V 按下列定义分为两个子集。 12 01 |
6、vvi的 距 离 为 偶 数与 某 一 指 定 结 点下面证明 和 就是 的两个互补结点子集。1任取图 的一条边 ,如果 e 的两个端点 和 都在 中,如图G),(jiveivj1V所示的那样得到一个回路 ,因ijivC,.0,按定义 和 到 的距离都是偶数,再加1,Vvjiivj上边 e,故回路 C 的长度为奇数,与题设矛盾,说明和 不可能都处于 中。ij 1如果任意边 e 的两个端点 和 都在 中,则由定义 和 到 的距离都ivj2Vivj0是奇数,再加上边 e,故回路 C 的长度仍为奇数,也与题设矛盾,说明 和iv也不可能都处于 中。因此只有唯一一种可能,即 e 的两个端点,一个在jv2
7、V中而另一个在 中,由于 e 是任意一条边,根据偶图的定义, 是偶图。1V G(2) 是非连通图G此时可分片讨论,对 的每个连通分量应用上面的证明,然后合并起来,即可得证。四、 偶图的最大匹配根据偶图的定义,它在继承了一般图的性质的同时,更有一些特殊的性质。因此,偶图的最大匹配算法相对于一般图的最大匹配算法较为简单,也有更广泛的适用性。可以说,偶图的最大匹配算法是所有偶图算法的基础。Edmonds于 1965 年提出了解决偶图的最大匹配的匈牙利算法。(1) 从 G 中取一个初始匹配 M。(2) 若 X 中的顶皆为 M 中边的端点,止,M 即为完备匹配;否则,取X 中不与 M 中边关联的顶 u,
8、记 。TS,(3) 若 ,止,无完备匹配,否则,取 。()PST()yPs(4) 若 y 是 M 中边的端点,设 ,令 ,转yz ,yTz偶图的算法及应用 南师附中 孙方成第 4 页 共 13 页(3);否则,取可增广通路 ,令 ,转(2)。(,)Ruy()MER分析上述算法,可以得到求偶图最大匹配的算法的时间复杂度为:。()OEG在现实生活中,有很多的问题都可以转化成偶图的最大匹配问题,例如工作安排问题等。这里,举一个相对较新的例子。 小狗散步选自 NOI2001 上海市选拔赛试题:Grant 喜欢带着他的小狗 Pandog 散步。Grant 以一定的速度沿着固定路线走,该路线可能自交。Pa
9、ndog 喜欢游览沿途的景点,不过会在给定的N 个点和主人相遇。小狗和主人同时从 点出发,并同时在 点1,XY,nXY汇合。小狗的速度最快是 Grant 的两倍。当主人从一个点以直线走向另一个点时,Pandog 跑向一个他感兴趣的景点。Pandog 每次与主人相遇之前最多只去一个景点。你现在的任务是:为 Pandog 寻找一条路线(有可能与主人的路线部分相同) ,使它能够游览最多的景点,并能够准时与主人在给定地点相遇或者汇合。如果直接考虑小狗的行进路线,每到达一个新的汇合点,都要考虑小狗的行动方案。总的计算量为 ,这种指数级复杂度的算法无疑是低效的,不切合nmP实际的。同时,由于题目模型本身和
10、排列模型的相关性。过高的后效性,从根本上否定了动态规划算法的可能性。即使是使用网络流模型,如果单从狗的角度直接构造,也非常难以实现。但如果能抓住题目中某些关键性叙述,将其抽象成偶图的模型,则能有较好的效果。由于“ 当主人从一个点以直线走向另一个点时, Pandog 跑向一个他感兴趣的景点 ”,并且主人的移动路线是确定的,所以寻找一条路线,可以看作确定在每一段路线上,小狗的选择:跑向哪一个景点,或是和主人的路线重合。显然,如果把主人的移动路线的每一段都抽象成点,其性质和小狗所向往的景点的性质是不同的。所以图中的点被自然的分成了两类,题目要求的也就是这两类点之间的关系。由于在一个线段上,小狗只能跑
11、向一个景点,所以景点的可达与否只和景点到这个线段的两端点的距离有关。由于一条线段只能和一个景点发生关联,而一个景点也只在第一次访问的时候才有意义,所以任何两项关联都不会有任何交点。这显然满足匹配的定义。所以,题目的所求就是在这样一个由两类点所组成的图中,两个点集间的最大匹配。偶图的构造过程如下:设共有 n 个定点和 m 个景点, ; ;11|iVPin2|1iVQm。对于有向线段 和景点 ,当且仅当2VG1 ikQ时,边 属于 。其中11,ikkiiDPQD1ik, EG偶图的算法及应用 南师附中 孙方成第 5 页 共 13 页定义为 。参照偶图的定义,这是一个典型的偶(,)DAB22AbAb
12、XY图。然后就是根据求偶图的最大匹配的匈牙利算法,求出其最大匹配数及匹配方案,最后按题目要求生成输出。五、 偶图的最小覆盖问题偶图的最大匹配算法在解决实际问题中,有着广泛的应用。最典型的就是利用偶图的最大匹配算法解决偶图的最小覆盖问题。如 BOI2001 的Knights一题,问题描述如下:一张大小为 n*n 的国际象棋棋盘,上面有一些格子被拿走了。你的任务是确定在这个棋盘上放置尽可能多的马并使他们不互相攻击。棋盘的大小 n 不超过 200。题目要求放置尽可能多的马,并要求不能相互攻击。类似这种描述的题目非常普遍,最常见的就是 8 皇后问题。8 皇后问题是回溯算法的典型例题,由于在每一行中对几
13、乎每一个点都要进行一次穷举,所以事件复杂度为 ,!On更是经典的 NP 问题。如果按照 8 皇后问题的思路来解决这道题,面临的挑战是十分严峻的。首先,8 皇后问题的扩展方式远比本题简单。由于皇后的攻击范围是完整的一行一列,或是一条斜线,所以在扩展时可以大量的回避无效状态,而本题的攻击范围相对复杂,所以在搜索过程中直接回避无效状态的难度较大,算法效率自然不理想。其次,本题的问题规模达到 200,已经远远超过 8 皇后问题的可解范围。同时由于马控制范围较小,必然带来可行方案的增多,而回溯或是其它的搜索算法都是基于求方案而得到问题的解,其基本思想还是穷举,解的增多必然带来效率的大大降低。而本题的求解
14、目标却是针对最多放置马的数目,搜索类算法显然针对性太差。然后考虑 NOI2001 中炮兵阵地一题。在炮兵阵地一题中,采用了状态分离的办法,最终实现了动态规划。但动态规划过程中,如果相对于宽度来说,算法复杂度仍然是指数级的。这道题和炮兵阵地相比,攻击范围的不规则性同样是本题的劣势,在状态转移过程中的难度必然大大增加。更主要的是,动态规划解决炮兵阵地问题的关键在于长宽的极端不对称性。而在一只马放在 S 处,攻击所有标有 X 的点偶图的算法及应用 南师附中 孙方成第 6 页 共 13 页本题中,棋盘是严格的正方形,状态分离的思想很难得到实现(时空上都无法得到保证) 。所以说动态规划的方法也不适用本题
15、。也就是说,从常规思路上类比考虑,无法得到关于本题的可行解法。下面,从构造图的角度分析本题的模型。将棋盘的每一个格子作为一个顶点,两点间直接可达(互可攻击)的关系作为边。则题目所要求的就是在这样一张图中的最大独立子集。由于对于任意一张图,其最大独立子集和最小覆盖集互为补集,所以本题也是一个求最小覆盖集的图论问题。众所周知,一般图的最小覆盖图是一个 NPC 问题。那么本题能否逃脱厄运呢?这只有从本题的特殊性来分析。常识告诉我们,在一张国际象棋的棋盘上,白格和黑格是相交错的,一匹马只能从一个白格跳到一个黑格,或是从一个黑格跳到一个白格。由于这种特殊性,马的攻击范围的不规则,在这时却给我们的解题带来
16、了方便。因为一个位置上的马只能攻击和其所在位置颜色不同的格子,这是一个必要条件。换句话说,同一颜色的任意两个格子间不存在边。所以,棋盘可以按照颜色分成两个部分,在同一部分的任意两点都是不能互相攻击的。也就是说,题述所描述的棋盘,定义在攻击关系上是一个偶图。同时,由于偶图的独特性质,求它的最小覆盖数有着多项式的算法。偶图的最大匹配数和最小覆盖数之间存在着确定的数量关系。1931 年 Knig 给出最大匹配与最小覆盖的关系定理如下:定理 2 设 是偶图 的最大匹配数, 是其邻接矩阵的最小覆盖数,则有rGs 。rs要证明这个定理,要用到 Hall 婚姻定理:设 是一个偶图,两个顶点集分G别为 和 。
17、则存在 的一个完备匹配,当且仅当 对所有 均VWSPVS成立。对于这个定理的证明将在附录中给出。下面证明最大匹配最小覆盖定理:因为每个不在同行同列的非零元需要一行或一列才能盖住,所以 个不在r同行同列的非零元需要 行、列才能盖住,而 个不同的行、列盖住了矩阵 的rs A全部非零元,自然也盖住了 个不在同行同列的非零元。因此 。再证明s。不失一般性,设最小覆盖盖住 的 行、 列,即 。设这 行对rsAcdcdc应的结点子集是 其余为 ; 列对应的结点集是 ,其余为 。把cXcdYdY矩阵 的行、列进行调整,如图所示,显然 每行都被覆盖, 每列都被覆A12A盖, 中每个元素既被行也被列所覆盖,而
18、。12 20A偶图的算法及应用 南师附中 孙方成第 7 页 共 13 页现证明 到 存在完备匹配。在 中任取 行,这些行中的非零元cXdY1AV至少分布在它的 个不同列上。否则,不覆盖这 行,而覆盖这些更少的列,V中的所有非零元仍然全部覆益,这时所用的覆盖数比原先要少,与原来是最A小覆盖矛盾。这就是说,对 的任意子集 ,总有 。根据 Hall 婚cX()P姻定理, 到 存在完备匹配 , 。同理 到 也存在完备cXdY1McdYcX匹配 , , 仍然是 的一个匹配, 。因此2M12G12Ms的最大匹配数 。证明结束。Grs由于这个定理的存在,有关偶图的最小覆盖集、最大独立子集等算法,都可以通过求
19、偶图的最大匹配数来间接得到。六、 偶图的最佳匹配问题前文给出了偶图的最大匹配的算法,但在实际的工作中,效率往往是考虑问题时必不可少的一环。比如说工作效率不同的工作安排问题,或是在小狗散步一题中加入各个景点的权信息仅仅用最大匹配就无法求解。下面举一个加权的工作安排问题,问题描述如下:某公司有工作人员 ,他们去做工作 ,每个人都能做其12,.nx12,.ny中的几项工作,并且对每一项工作都有一个固定的效率。问能否找到一种合适的工作分配方案,使得总的效率最高。要求一个人只能参与一项工作,同时一项工作也必须由一个人独立完成。不要求所有的人都有工作。对于如右方表格所示的数据(如果员工完全不能完成一项工作
20、,则效率用0 来表示) ,如果采用最大基数匹配算法,得到的解为:甲A,乙B,丙C,丁D,最后总的价值为 4。但是,如果采用甲项目不匹配,乙A,丙C,丁D,虽然匹配数较少,但是最后的总价值却达到了 12。事实证明,最大匹配的算法对解决这类效益至上的问题没有实际的效果。那么,是否有解决这类问题的其它有效途径呢?由于一个人只能做一项工作,一项工作也只能由一个人做,所以在方案的决策上所带来的后效性是十分明显的。如果要通过改变状态的描述方式来摆脱后效性的麻烦,也必将带来维数灾的动态规划致命问题。所以说,动态规划不能用来解决此类问题。可以用来解决此类问题的可行办法是分支定界算法。也就是通过估价函数的合理选
21、择,在深度搜索的基础上,不断的更新最优结果,以达到减少无效搜索,提高效率的目的。然而,分支定界算法虽然在中小规模的应用中有着不错的效率,但是其本身指数级的复杂度,导致其效率随着规模的增加而急剧降低。实际上,这类问题就是图论中的最佳匹配问题。问题描述如下:甲 乙 丙 丁A 1 10 0 0B 0 1 0 0C 0 0 1 0D 0 0 0 1偶图的算法及应用 南师附中 孙方成第 8 页 共 13 页是加权完全偶图, , ,权12,;GVE12,.nVx212,.nVy,求权最大的完备匹配,这种匹配称为最佳匹配。由于定义中要求0ijwxy的是加权完全偶图(从算法角度分析,这种定义的主要目的是保证完
22、备匹配的必然存在) 。所以,当原图中某些边不存在时,往往通过将边的权赋为 0 或 1 或是其它一些不影响最终结果的值,使边达到完备。在做好这些准备工作后,具体解决这类问题之前,首先要了解一些相关概念。定义 4 映射 满足 , ,成立 ,:lVGR1xV2ylxywx则称 是偶图 的可行顶标;令lv|,lExylxywx称以 为边集的 的生成子图为“相等子图” ,记成 。lEGlG可行顶标是存在的,例如 21max,0,yVllv定理 3 的完备匹配即为 的最佳匹配。lGG证:设 是 的一个完备匹配,因为 是 的生成子图,故 也是*Ml l *M的完备匹配。 中的边的端点集合含 的每个顶点恰一次
23、,所以*vVGeMWwl另一方面,若 是 中任一完备匹配,则GevVl所以 ,即 是最佳匹配。*WM*根据定理 3,1955 年 Kuhn,1957 年 Munkres 给出修改顶标的方法,使新的相等子图的最大匹配逐渐扩大,最后出现相等子图的完备匹配。Kuhn-Munkres 算法(KM 算法)(1) 选定初始可行顶标 ,在 上选取一个匹配 。llGM(2) 若 中的顶皆与 中边关联,止, 即为最佳匹配;否则,取1VM中不与 中的边关联的顶 ,令 。lGu,ST(3) 若 ,转 ;若 ,取lGPST4lGP偶图的算法及应用 南师附中 孙方成第 9 页 共 13 页,min,lxSyTlaywx
24、vaSll,其 它 。,lllG(4) 选 中一顶 ,若 与 中边关联,且 ,则lPSTyMMyz,转(3);否则,取 中一个 的可增广通路 ,,zSlG,Ruy令 ,转(2) 。()MER下面,通过一个实例来进一步了解算法的具体实现和各方面的效率。设五名员工参加五个项目的效率如下表所示:Y1 Y2 Y3 Y4 Y5X1 3 5 5 4 1X2 2 2 0 2 2X3 2 4 4 1 0X4 0 1 1 0 0X5 1 2 1 3 3首先,选取可行顶标 如下:lv123410,45;max1,20,a,x13yilll构造 ,并求其最大匹配,流程如下:lG步骤编号 S T M1、选取初始匹配
25、2、取 1ux1x4、取 2y 12exy2、取 x2x4、取 1y 121,exy偶图的算法及应用 南师附中 孙方成第 10 页 共 13 页2、取 3ux3x121,exy4、取 y 3exy2、取 5x5x121,exy4、取 y 35exy2、取 4ux4x121,exy4、取 3y3,3y35exy4、取 241x2,121,exy2、 lGPST无完全匹配其最终得到的最大匹配如图所示。图中粗点划线构成最大匹配。 中无完备匹配,故修改顶标。lG由于 ,所以443132,uxSxTy,min1lxSyalwxy修改后的顶标为: 123454,0,3;01yyy根据新的顶标构造 ,并求其
26、上的一个完全匹配如图所示:lG1x 5x43x21y23y45y1x 5x43x21y23y45y偶图的算法及应用 南师附中 孙方成第 11 页 共 13 页图中粗点划线给出了一个最佳匹配,其最大权为 4241314。题目完成。通过解题的过程,并对比 KM 算法和匈牙利算法的描述可以发现,除了KM 算法中第三部分修改顶标的内容外,绝大部分是相同的。可以说,KM 算法就是在匈牙利算法的基础上加入了修改顶标的部分。由于 是逐步增大的,M所以对于每一个 的增广过程中产生的信息,都很好的得到了继承和合理的利lG用。因此,KM 算法虽然加入了对权的考虑,有着更广泛的适用性,但从时间复杂度的数量级上是和匈
27、牙利算法本质相同的,也是 。OEG七、 小结偶图是一种特殊的图。对于一个偶图 ,其点集 可被分成两个互补V的子集 ,对于属于同一子集的两点 ,都有边 。由于这种12,V,xy,exyEG特殊性,偶图作为描述现实世界中两类不同事物间的相互关系的有效模型而得到广泛的应用。图结构因为其包含信息的多元化,往往能反映出问题的本质属性,抓住问题的关键。尤其是在解决动态规划的后效性、维数灾等问题时,一般能发挥出较好的效果。又由于建立在偶图上的算法有很多区别于一般图算法的优势,所以将一个一般图转换成偶图的形式,在程序设计中更是有很大的作用。而转换的关键,一般是从题目本身的条件出发,挖掘题目中深层次的信息,从而
28、将关系复杂的图的结点进行分类。例如在棋盘上,染色往往是一种很好的分类方式。在建立起偶图的模型后,求解也是十分重要的。本文给出了偶图的一些基本算法和相关定理。通过合理的使用这些信息,基本上可以解决程序设计中遇到的大部分偶图问题。如果有更多的限制和要求,可以通过最大流等更复杂的模型来解决。但是,从算法效率和编程复杂度上说,基于偶图的算法一般比基于最大流的算法简单高效。对于匹配算法,除偶图的匹配之外,对一般图的匹配也有定义,但求解算法相对复杂。同时,我个人认为,由于匹配是两物品之间一一对应的关系。所以建立两类事物间的匹配关系,也就是偶图的匹配,比一般图的匹配有着更高的实用价值。综上所述,我认为,偶图
29、是一种高效的、有着广泛使用价值的模型。合理、有效的使用偶图模型,将大大提高编程及解决现实生活中实际问题的能力。【附录】Hall 婚姻定理的证明如下:显然,对 每一个子集 , 是存在 到 内的完备匹配的必要XA()PXY偶图的算法及应用 南师附中 孙方成第 12 页 共 13 页条件。因为,若有 的一个子集 ,使得 ,则不可能在 的顶点X0A00()PA0A和 的子集中的顶点之间确定一个一一对应关系。下面,用两种方法证明条件Y的充分性。用归纳法证明条件的充分性。对于 中只有一个顶点的任何偶图,条件显然是充分的,因为这个顶点必定同 中至少一个顶点相邻接。现假定,对于 中有不多于 个顶点的偶图X1m
30、这个条件是充分的。假设存在一个偶图 , 中有 个顶点,对 X 的每一个子G集都有 ,考察下面两种情况,从而证明存在 到 内的一个完备匹配:()AP Y(1) 对 的每一非空真子集 ,都有 。可取 中任一顶点XA()PA且把它与 中一个顶点 相匹配。从 中移去顶点 , 以及它们相关联的0xY0yG0xy全部边,得到图 。在偶图 中,因 的每一个子集中的顶点都同G0X中的至少 个顶点相邻接,故由归纳假设,存在 到 内0yA0Xx0Yy的一个完备匹配。因此,图 中存在 到 的一个完备匹配。Y(2) 存在 的一个非空真子集 ,且 。设 是 的这样一个X0A0()PG子图,它包含顶点集 以及同 中的顶点
31、相邻接的顶点集 ,和连接这0A0()A两个顶点集中的顶点之全部边。由于 的每一子集 中的顶点同 中至少0 P个顶点相邻接,故由归纳假设,在图 中存在 到 内的一个完备匹配。AG00()设 中包含顶点集 到 以及连接这两个子集中的顶点的边的子图,G 0XA0()YP可以断言, 中有 到 内的完备匹配。如若不然,则由归纳假设,存在 的一个子集 ,在图 中, 中的顶点同 中少于 个顶01G1A0()YPA1点相邻接,这意味着,在图 中,子集 中的顶点同少于 个顶点0相邻接,这同假设“对 的每一个子集 A 都有 ”相矛盾。因此,在X()图 中有 到 内的一个完备匹配。由此推知,在图 中有 到G0A0(
32、)YPGX内的一个完备匹配。证毕。Y用反证法证明条件的充分性。设 不存在完备匹配,则 中 个结点不能与 中 个不同结点配对,1V1n2V1n偶图的算法及应用 南师附中 孙方成第 13 页 共 13 页现在假设找到 的一个最大基数匹配 ,则中至少有一个结点不是 饱和点G*M*M(否则 就是完备匹配了) ,设这个结点为 ,我们从 开始找出所有 的*M0v0v交替路,并把这些交替路上的结点集合记作 , 中属于 的结点集合记作 ,S1VA属于 的结点集合记作 ,即 ; ; 如图所示。2VBSA12B根据交替路的性质可知,与 中结点邻接的结点一定是 饱和点,这些结*M点一定都在从 开始的 交替路上,因此有0v*M()PA1此外, 中除 外,它0v的每个结点都与 中的结点B一一配对,因此有 1A2由 和 可得()1PA与题设条件矛盾。得证。【参考文献】1. 组合数学及其算法 中国科学技术大学出版社 杨振生 编著2. 图论及其算法 航空工业出版社 肖位枢 主编3. 信息学奥林匹克季刊 全国青少年信息学(计算机)奥林匹克分区联赛组织委员会主办4. 数学建模竞赛教程 江苏教育出版社 李尚志 主编除此以外,还参考了 BOI,USACO 以及 ACM 的相关试题及解答,综合了与江苏省其它同学的讨论成果。