我必须完成以下任务: "你有一个图G(V,E)及其顶点x和y。编写一个程序,通过顶点数找到2个顶点之间的最短路径。
我不明白是否由我来决定这个图是否有针对性,或者我是否应该有一个边缘类或者是什么样的图形实现。这是第34章“树木和图形”中的第一个练习。我的书(java编程简介),我不知道从哪里开始。你会怎么做?为什么?
答案 0 :(得分:0)
您正在寻找Dijkstra的算法。它将为您提供两点之间任何图形的最短路径,使用该算法,您将需要知道如何使用图形本身和优先级队列。维基百科有一篇关于该算法的非常好的文章。
答案 1 :(得分:0)
由于没有告知它是针对问题的,因此假设它是无向的。他们还希望您通过顶点数找到最短路径,因此它也是未加权的。假设它是无向的和未加权的。
例如 - N - 顶点数,M - 边数
4 5
1 2
2 3
3 4
1 3
2 4
对于图形表示,使用邻接矩阵(最简单的矩阵)或邻接列表。邻接矩阵是二维数组G,其中当a
和b
之间存在边时,G [a] [b]为真,否则为假。