我有一个Graphs的任务,我需要找到最短的路径。
它不是正常的算法,因为你不需要计算路径,你需要计算顶点。
规则就像通过特定Vertex的成本一样:
| P = costOfPathFromThePreviousVertex - costOfPathToTheNextVertex |
所以例如当你有Graph时: A-> B-> C->
,费用是
A->B = 10 ;
B->C = 15 ;
通过Vertex B的成本将是: P = | 10 - 15 |
假设根和目标顶点的成本= 0。
因此,在上述情况下,通过B从A到C的成本将是5.
很容易说,但我不知道在有x顶点时我需要实现哪些算法来获得结果。我正在考虑Dijkstra的算法和DFS,但在这种情况下它们是不正确的。
任何帮助都会非常感激。
答案 0 :(得分:0)
我会添加一个连接到实际起点和终点的虚拟起始点和目标顶点。
然后将图表转换为line graph,其中每个边都有一个顶点,例如V1 ="&A- GT; B"和v2 =" B-> C"。
根据您的公式为新图表中的边缘指定权重。
例如,连接v1到v2的边将具有权重| 10-15 |。
然后在此线图上使用Dijkstra算法找到虚拟起始边和虚拟结束边之间的最短路径。