我设法创建了一个算法,在无向连通图中找到一条欧拉路径(如果有的话),时间复杂度为O(k ^ 2 * n)其中:
< p> k:边数n:节点数
我想知道是否有更好的算法,如果是的话背后的想法。
提前致谢! :)
答案 0 :(得分:3)
Hierholzer的算法在O(k)时间运行:https://en.wikipedia.org/wiki/Eulerian_path#Hierholzer.27s_algorithm
首先,在奇数度的两个顶点之间找到一条路径。然后,只要路径上有一个带有未使用边的顶点,就可以跟随该顶点中未使用的边,直到再次返回该顶点,然后在新路径中合并。
如果没有奇数度的顶点,那么你可以从任何顶点的空路径开始。
如果奇数度的顶点数不是0或2,则没有欧拉路径。