Graph 闭环搜索的点处理

Graph 闭环搜索的点处理,graph,vector,topology,topological-sort,Graph,Vector,Topology,Topological Sort,我有一组线段。每个节点仅包含2个节点。我想找到通过连接线段生成的可用闭合循环。实际上,如果存在多个循环,我正在寻找最小的循环。如果可以,请给我一个很好的解决办法。 例如,我在下面的行列表中添加了点索引,以了解m案例。(其中第一个值=线号,第二个值为点索引) 假设我从第1行开始。也就是说,我已经从第9点,第18点开始寻找连接的循环。那么,请你解释一下(一步一步)我如何从那条线中得到“闭合环” >我没有看到任何C++代码,但我会尝试提出一个C++解决方案(虽然我不打算为你写)。p> 如果你的图是无向

我有一组线段。每个节点仅包含2个节点。我想找到通过连接线段生成的可用闭合循环。实际上,如果存在多个循环,我正在寻找最小的循环。如果可以,请给我一个很好的解决办法。 例如,我在下面的行列表中添加了点索引,以了解m案例。(其中第一个值=线号,第二个值为点索引)


假设我从第1行开始。也就是说,我已经从第9点,第18点开始寻找连接的循环。那么,请你解释一下(一步一步)我如何从那条线中得到“闭合环”

>我没有看到任何C++代码,但我会尝试提出一个C++解决方案(虽然我不打算为你写)。p> 如果你的图是无向的(如果它是有向的,s/邻接的/在边的顶点中/),并且你想找到通过某个顶点N的所有最短循环,那么我认为你可以遵循以下步骤:

G <= a graph
N <= some vertex in G
P <= a path (set of vertexes/edges connecting them)
P_heap <= a priority queue, ascending by distance(P) where P is a path

for each vertex in adjacent(N):
  G' = G - edge(vertex, N)
  P = dijkstraShortestPath(vertex, N, G')
  push(P, P_heap)

<代码> G和C++有什么关系?@ Kerrek:我想标签应该意味着我们应该理解C++中应该提供TEDCODEZ。
G <= a graph
N <= some vertex in G
P <= a path (set of vertexes/edges connecting them)
P_heap <= a priority queue, ascending by distance(P) where P is a path

for each vertex in adjacent(N):
  G' = G - edge(vertex, N)
  P = dijkstraShortestPath(vertex, N, G')
  push(P, P_heap)