Algorithm 如何在一个完全无向图中求出哈密顿圈的个数?

Algorithm 如何在一个完全无向图中求出哈密顿圈的个数?,algorithm,graph,cycle,Algorithm,Graph,Cycle,有人能解释一下如何在一个完整的无向图中找到哈密顿圈的数目吗 公式是(n-1)/2,但当我用这个公式计算时,K3只有一个循环,K4有5个循环。我的计算不正确吗?因为图是完整的,任何以固定顶点开始的排列都会给出一个(几乎)唯一的循环(排列中的最后一个顶点将有一条边回到第一个固定顶点。除了一件事:如果你以相反的顺序访问循环中的顶点,那么这实际上是同一个循环(因此,数量是(n-1)个顶点排列的一半) e、 g.对于顶点1、2、3,固定“1”,则有: 123 132 但是123反转(321)是(132)的

有人能解释一下如何在一个完整的无向图中找到哈密顿圈的数目吗


公式是
(n-1)/2
,但当我用这个公式计算时,K3只有一个循环,K4有5个循环。我的计算不正确吗?

因为图是完整的,任何以固定顶点开始的排列都会给出一个(几乎)唯一的循环(排列中的最后一个顶点将有一条边回到第一个固定顶点。除了一件事:如果你以相反的顺序访问循环中的顶点,那么这实际上是同一个循环(因此,数量是(n-1)个顶点排列的一半)

e、 g.对于顶点1、2、3,固定“1”,则有:

123 132

但是123反转(321)是(132)的旋转,因为32是23反转


有(n-1)!非固定顶点的置换,其中一半是另一个顶点的倒数,因此有(n-1)在n个顶点的完全图中,2个不同的哈密顿循环。< / P> < P>在回答您的谷歌代码阻塞评论时,请参阅

< P>当我们有哈密顿循环时,因为每个顶点位于哈密顿循环中,如果我们把一个顶点看作开始和结束循环,那么我们应该使用这个顶点的2个边。因此,我们有(N-1)(N-2)。/2哈密顿循环,因为我们应该选择n-1条边中的2条边,这些边链接到这个顶点。

我问了这个问题,与去年的一个代码阻塞问题有关。但我仍然无法找出算法。你能解释一下这个代码阻塞问题吗?我会生成2…n的所有排列,其中2在前半部分,然后跳过如果你的排列是4235(意味着循环142351…),那么如果14 42 23 35或51被禁止,那么跳过它。你可以在生成排列时这样做,例如,如果14被禁止,那么你会在“4…”停止但是,如果顶点的数量非常大,比如说30,那么生成所有置换,即29!/2,在计算上非常昂贵。还有一件事,为什么你说“2在前半部分中的位置”?这意味着什么?我只是想用某种方法来区分置换p和反向(p)。一种方法是选择一个元素(我选择了2)并确保它发生在前半部分。计算循环总数时出错。哈密顿循环必须包括所有边。
k4
只有3个这样的循环,总共有5个循环,因此公式是正确的。Anubhav不正确,哈密顿循环不需要包括所有边,它需要s以包括所有节点/顶点。