Path by Hcycle(V,E):在通过添加一个连接到所有其他顶点的顶点创建的图上调用 Hcycle()。如果新图有一个循环而不是从该循环中删除新节点,我们会得到原始图上的路径。
按 Hpath(V,E) 循环:在通过添加一个顶点并将其连接到与一个现有顶点相同的邻居创建的图上调用 Hpath()。这意味着这两个顶点将具有相同的邻居。如果新图有一条路径,则至少一个路径末端位于这两个顶点上。如果其他顶点没有结束,则它位于路径第三位置,通过重新排序路径,我们可以将两个顶点都设置为路径端点。合并这两个顶点(因为它们具有相同的邻居),我们在原始图中得到一个循环。
Hcycle(V,E) 的路径:如果图有循环,则它也有路径。如果图没有循环,则对于每个未连接的顶点对 ( v1
, v2
) 在它们之间添加边并检查是否存在带有 的循环Hcycle(V,E+(v1,v2))
。如果有一个循环,那么原始图中v1
和之间就有一条路径。v2
Hcycle 称为最大|V|^2
次数。
按 Hpath(V,E) 循环:想法是强制路径具有我们知道的结束顶点。这可以通过构建两个顶点的度数为一的图来完成。成为N(v)
的邻居v
。对于一条边(v1,v2)
和n1
fromN(v1)-v2
和n2
from ,通过从except to中删除所有边,并从except to 中删除N(v2)-v1
所有边来构造一个图。如果该图有一条路径,那么它的端点在和上,并且我们的原始图有一个圆圈。Hpath 称为最大次数。v1
n1
v2
n2
v1
v2
|E|*|V|^2