【发布时间】:2016-02-28 19:56:49
【问题描述】:
给定一个简单的无向图G=(V,E) 和V 的子集S。
我们被告知S 的所有顶点都在G 中形成一个简单的循环(length |S|)。
现在,我们要找到那个精确的循环(或它的任何循环移位)(S 的所有顶点的序列)。我们怎样才能找到它?有什么办法吗?
我尝试了DFS/BFS,但它似乎无法正常工作。
例如:如果我们有 4 个顶点 A, B, C, D in G 并且边是 (A,C), (A,D), (B,C), (B,D)。让给S= {A, B, C, D}
那么我们的答案应该是ADBCA(或BCADB或其任何循环移位)。
【问题讨论】:
-
在我看来,如果你稍微修改一下,dijkstra 就可以解决问题。您可以查看此链接:stackoverflow.com/questions/3911626/…
-
你想在 G[S] 中找到一个哈密顿循环,这是 G 在 S 上的子图。这个问题是 NP 完全的。
标签: graph-theory graph-algorithm cycle