我一般理解这个问题,但不知道如何设计和分析问题中的算法。我正在考虑应用某种图搜索算法,如深度优先/广度优先搜索。
更新:这是我尝试过的,从图的任何节点开始(称之为N),访问该节点的每个邻居。现在,我们刚刚访问的N的最后一个邻居(称之为L)访问不是N的L的任何其他邻居?
答案 0 :(得分:1)
其他人已经在评论中暗示了可能的解决方案,让我们详细说明。当d<=1
时,解决方案是即时的(并且取决于您对周期的确切定义),因此我假设d>1
。
一种这样的算法是:
V
开始的路径。在路径长度d
之前,不要允许已经访问过的顶点。d
时,请继续向路径添加顶点,但现在只允许顶点与路径的最后d
个顶点不同。在(1)和(2)中,通过G是d-正则的事实保证了这种顶点的存在。搜索要添加的顶点时,我们只排除最后d
个顶点,即最后一个顶点(U
)及其d-1
个前辈。 U有d
个邻居,因此至少有一个邻居可以使用。
由于条件(3)和G是有限的,因此算法将停止。
在(2)中选择已经访问过的顶点是有意义的,但它并没有改变最坏情况的复杂性。
这给我们n*d
的最坏情况复杂性 - 因为我们可能必须访问每个顶点一次并检查它的所有边缘。