我正在尝试确定最有效的算法来完成以下描述的任务。
我有一组记录。对于这组记录,我有连接数据,它指示此集合中的记录成对连接在一起的方式。这基本上表示一个无向图,其中记录是顶点,连接数据是边缘。
集合中的所有记录都有连接信息(即不存在孤立的记录;集合中的每个记录都连接到另一个或多个记录)。
我想选择集合中的任意两个记录,并能够显示所选记录之间的所有简单路径。所谓“简单路径”是指路径中不重复出现记录的路径(即仅有有限路径)。
注意:所选的两个记录将始终不同(即起始和结束顶点永远不会相同;没有循环)。
例如:
如果我有以下记录: A, B, C, D, E
并且以下表示连接: (A,B),(A,C),(B,A),(B,D),(B,E),(B,F),(C,A),(C,E), (C,F),(D,B),(E,C),(E,F),(F,B),(F,C),(F,E)
[其中(A,B)表示记录A连接到记录B]
如果我选择B作为开始记录,选择E作为结束记录,我希望找到通过记录连接连接记录B到记录E的所有简单路径。
连接B到E的所有路径: B->E B->F->E B->F->C->E B->A->C->E B->A->C->F->E
这是一个例子,在实践中,我可能有包含数十万条记录的集合。