以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 算法理论与分析 』  (http://bbs.xml.org.cn/list.asp?boardid=60)
----  判定图中是否存在初级回路的O(n)时间算法  (http://bbs.xml.org.cn/dispbbs.asp?boardid=60&rootid=&id=29551)


--  作者:Logician
--  发布时间:3/30/2006 2:53:00 AM

--  判定图中是否存在初级回路的O(n)时间算法
首先假定图是用邻接表表示的。
直接对图作DFS,如果搜索时遇到以前访问过的顶点,则直接返回False。
为了判断G是否被遍历完,我们可以做一个小trick:
用一个变量k记录最小的未被访问过顶点号。
初始时,k=1,(假定G中顶点是从1开始编号的)。
每次访问一个顶点时,比较这个顶点的编号与k,如果不相等,则不修改k。
如果正好相等,就让k往上增加大下一个没有被访问过顶点号。
当k>n时,返回True。

设置变量k是为了避免当G不连通时,需多次扫描全图(从而导致时间复杂度增至Θ(kn),k为连通分支数)。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
56.641ms