Java 在无向图中寻找两条非重叠路径
两个多星期以来,我一直在努力解决一个问题。我应该生成一个无向图,它表示街道地图,我应该把地图分成两组不重叠的街道,两条路径的距离应该大致相同 我应该使用什么样的算法来解决它? 我只是在这里寻找一个大致的方向,我应该用什么样的算法来实现这一点 编辑:(测试用例) 假设我们有一个顶点为a,B,C,D,E的无向图Java 在无向图中寻找两条非重叠路径,java,python,algorithm,graph,artificial-intelligence,Java,Python,Algorithm,Graph,Artificial Intelligence,两个多星期以来,我一直在努力解决一个问题。我应该生成一个无向图,它表示街道地图,我应该把地图分成两组不重叠的街道,两条路径的距离应该大致相同 我应该使用什么样的算法来解决它? 我只是在这里寻找一个大致的方向,我应该用什么样的算法来实现这一点 编辑:(测试用例) 假设我们有一个顶点为a,B,C,D,E的无向图 A --- B | / | \ | / | C | / | / D --- E 这意味着像这样的邻接矩阵: A B C D E A - 1 0 1
A --- B
| / | \
| / | C
| / | /
D --- E
这意味着像这样的邻接矩阵:
A B C D E
A - 1 0 1 0
B 1 - 1 1 1
C 0 1 - 0 1
D 1 1 0 - 1
E 0 1 1 1 -
假设所有边都是无向的,我们有以下边:
(a,b) (a,d) (b,d) (b,e) (b,c) (e,d) (e,c)
我想要的是,通过人工智能,我可以得到这张图,并生成两组大小大致相同的边。(在这种特殊情况下,由于我们有7条边,我们将得到一组3条边和另一组4条边
Group 1: (a,b) (a,d) (b,d) (e,d)
A --- B
| /
| /
| /
D --- E
Group 2: (b,e) (b,c) (e,c)
B
| \
| C
| /
E
请注意,每个组中的所有边都至少由一个节点连接,这是一项要求
另一个有效的解决方案可以是,例如:
Group 1: (d,a) (a,b) (b,c) (c,e)
A --- B
| \
| C
| /
D E
Group 2: (d,b) (b,e) (e,d)
B
/ |
/ |
/ |
D --- E
诸如此类,正如你们看到的,有很多有效的解决方案,但我想要一个算法来找到一个,我会保留第一个找到的,我该怎么做呢
我确信有一种正式的方式来说明这个问题,如果你告诉我应该怎么做,我将非常感激。你能提供一个测试用例吗?不确定你的意思是什么,什么样的测试用例?你说你需要从一个图中找到两个不重叠的路径。所以,提供一个图和该图的两个不重叠的路径。顺便说一下路径有任何代价,或者遍历每条路径需要相同的代价。路径的来源和目的地是什么?