Algorithm 对于给定的图G=(V,E)和边E∈;E、 设计一个O(n+;m)时间算法,以找到(如果存在)包含E的最短周期
试图理解图形,但却很难理解。我知道如何找到最短的路径,但不确定如何找到最短的循环,并且仍然在O(n+m)时间内完成 包含e的最短循环 BFS是完美的。循环将是目标。时间复杂性是相同的 你想要这样的东西(从维基百科编辑): 有关循环和BFS的更多信息,请阅读此链接Algorithm 对于给定的图G=(V,E)和边E∈;E、 设计一个O(n+;m)时间算法,以找到(如果存在)包含E的最短周期,algorithm,graph,Algorithm,Graph,试图理解图形,但却很难理解。我知道如何找到最短的路径,但不确定如何找到最短的循环,并且仍然在O(n+m)时间内完成 包含e的最短循环 BFS是完美的。循环将是目标。时间复杂性是相同的 你想要这样的东西(从维基百科编辑): 有关循环和BFS的更多信息,请阅读此链接 那么你的问题是什么?你不会得到任何免费代码:)你应该用什么编程语言来做这件事?我猜O(n+m)你的意思是O(| V |+| E |)?不是真的在寻找免费代码。也许只是一个大概的想法。也许psuedo代码可以最好地实现这一点。是的,我所说
那么你的问题是什么?你不会得到任何免费代码:)你应该用什么编程语言来做这件事?我猜
O(n+m)
你的意思是O(| V |+| E |)
?不是真的在寻找免费代码。也许只是一个大概的想法。也许psuedo代码可以最好地实现这一点。是的,我所说的“m+n”是指“V+E”定义“循环”。有人可能会说E中的(a,b)已经是长度为2的循环了。非常感谢!这真的很有帮助,还有资源!
Cycle-With-Breadth-First-Search(Graph g, Edge e):
remove e from E
root is b where e = (a,b)
create empty set S
create empty queue Q
root.parent = a
Q.enqueueEdges(root)
while Q is not empty:
if current = a
return current
current = Q.dequeue()
for each node n that is adjacent to current:
if n is not in S:
add n to S
n.parent = current
Q.enqueue(n)