Hierholzer算法帮助我们在O(m + n)时间内找到图中的欧拉电路(如果存在),但它使用一个取O(n ^ 2)空间的邻接矩阵。有人可以使用O(m + n)时间算法,该算法使用深度优先搜索遍历,使用图的邻接列表表示,该表示需要O(m + n)个空间吗?这里m表示边数,n表示图中顶点数。
答案 0 :(得分:0)
如果所有非零度数的顶点都连接并且所有顶点均为偶数度数,则无向图具有欧拉回路。度定义为入射到顶点的边数(循环被计数两次)。如果所有非零度数的顶点都被连接,并且两个顶点是奇数度,而所有其他顶点都具有偶数度,则无向图将具有欧拉路径。
要检查您的无向图是否具有欧拉回路以及该图的邻接表表示,请计算具有奇数度的顶点数。在这里可以使用邻接表。如果奇数为0,则检查是否所有非零顶点都已连接。您可以通过使用DFS遍历来做到这一点。如果从起始节点遍历图形,并且发现遍历结束后尚未访问其他节点,则不得连接图形。但是,如果已连接,则您的无向图具有欧拉回路。