C++最适合数据结构

C++ best fit data structures

本文关键字:数据结构 C++      更新时间:2023-10-16

我们有一组节点{1,2,3,4,5,6}和边(这里不需要显示),并假设在找到两个任意节点之间的所有可能路径的过程之后,比如说在(1,4)之间。然后,我们得到了一些路径作为输出

1 2 4
1 3 4
1 2 3 4
1 3 2 4

start和begin节点始终相同。在这种情况下,这是(1,4)。

然后,我们希望将这些输出存储在一个合适的数据结构(可能是一棵树)中,以便从当前输出(在(1,4)之间)重新排序和再现新的路径,而无需再次查看图。例如,假设现在我们想列出(2,4)之间的所有可能路径,但不是再次从图中列出,只是从我们从(1,4)中获得的列表中列出。将作为;

2 4 (from 1st line)
2 3 4 (from 3rd line)
2 4 (from 4th line ) 

或在(3,4)之间;

3 4 (from 2nd line)
3 4  (from 3rd line)
3 2 4  (from 4th line)

问题是以这样一种方式存储(1,4)之间的路径,即从搜索(1,4) 之间的路径中所需的节点(即(2,4))开始,应该可以容易地生成(2,4)之间的路径

我相信在这种情况下,最合适的数据结构是树,不幸的是,我没有太多的编程经验来解决这个问题。

哪种数据结构是解决方案?有人给我看实例实现吗?

为了解决这个问题,我认为你可以使用Union-Find Sets,关于如何使用这个结构,你可以在这里看到!

你可以在O(lgn) 中找到一条路径

我将定义一个新的图,该图只包括被查找(1,4)之间的连接的至少一个结果"触摸"的节点和拱门。这样,你就只有一个"例程"来进行路径搜索,所有的东西都是同质的。