关于图的各种概念的定义直接看参考书吧。。。下面直接上定理。
同时因为一些像求解欧拉路径的算法或者一些最短路的算法众所周知,所以这里不会提及,这里会讲一些好像不太听说过的一些东西。
先是一些可以用来判断一个图是否有哈密顿圈的一系列定理。(判断哈密顿圈是已经被证明的经典的npc问题,所以这里说的判断实际上都是充分条件啦)。
定理1,ore定理:。。啊,一般的组合数学书上都有的经典定理,就是如果一个简单图G,顶点数n>=3,且对每一对不相邻的顶点v,v‘有degv+degv’>=n,那么图G有哈密顿圈。显然直接暴力所有点的复杂度是O(n^2),但是最重要的问题是这个定理可能不够强,正像上面说的,判断一个图是不是存在哈密顿圈是npc问题,所以我们实际上做的时候是选择考虑有一些其他特征的问题的子集,显然这个定理感觉要求太高了。。在讲闭包问题前为了完整性还是补充一下ore的一个推论。。
推论,dirac定理:设。。。(同上),且每一点的次数>=n/2,那么G有哈密顿圈。在先离线好每个顶点邻接的边数的条件下,这个直接暴力的复杂度就只有o(n)啦。。不过这个定理也更弱。。
定理2:一个简单图有哈密顿圈的充分必要条件是他的闭包有简单图。所谓闭包就是把一个图G,每一步选一对不相邻的顶点v与v‘,满足degv+degv’>=n,然后在v与v‘中间添加一条边,重复进行,直到没有可能再添加为止,所得的图就是G的一个闭包。同时体现复杂度也是o(n^2)的地方就是,无论添加的次序如何,由简单图G得到的闭包总是相同的。这意味着我们只需要有限常数次的ore一下就能得到一个闭包,然后ore闭包就行了,所以实际的复杂度还是o(n^2)。这个定理,是把判断一个图G是不是简单图的问题等价为一个边数更多,不相邻的点更少的一个更强的图(比如一个图G他可能不满足ore,但他的闭包可能满足)。
代码以后看到题后再补充吧。。(大好时光,为什么不好好学数学)