Graph 如何有效地找到图中所有节点对之间的路径?

Graph 如何有效地找到图中所有节点对之间的路径?,graph,Graph,给定的是一个有n个顶点和n-1条连接所有顶点的边的图。我使用邻接列表来存储边。我想找到不同节点对之间的路径,这些节点以最有效的方式作为输入?怎么办 编辑: 我还想将以前找到的路径存储在某个地方,这样,如果已经直接或间接找到两个节点之间的路径,我就不必再找到它了。选择一个节点作为根节点,并用其深度标记每个节点 然后,给定指向两个节点的指针,向上移动较深的节点,直到它们处于相同的深度,然后逐步向上移动它们,直到它们相遇。如果每个节点上都有自己的父亲,则可以向上移动到根,一步一步地创建到根的路径,然后

给定的是一个有n个顶点和n-1条连接所有顶点的边的图。我使用邻接列表来存储边。我想找到不同节点对之间的路径,这些节点以最有效的方式作为输入?怎么办

编辑:
我还想将以前找到的路径存储在某个地方,这样,如果已经直接或间接找到两个节点之间的路径,我就不必再找到它了。

选择一个节点作为根节点,并用其深度标记每个节点


然后,给定指向两个节点的指针,向上移动较深的节点,直到它们处于相同的深度,然后逐步向上移动它们,直到它们相遇。

如果每个节点上都有自己的父亲,则可以向上移动到根,一步一步地创建到根的路径,然后比较是否在另一个路径中找到相同的节点,即从另一个节点到根的路径

root ---a---b---c---d---e
        |
        f---g---h---i
            |
            j---k---l
在本例中,您希望从c转到i

i->{i,h,g,f,a,root}的根路径

c->{c,b}break//的根路径与在i的列表a中找到的节点相同

创建一个新列表,其中c的列表和反向i的列表从0到a的索引

从c到i->{c,b,a,f,g,h,i}的路径

        a---b---c
        |
        f---g---h---i