如何解决如何找到最短的路线来完成旅程?
{A,B} 5
{A,C} 6
{A,D} 3
{A,E} 4
{B,C} 4
{B,D} 3
{B,E} 6
{C,D} 3
{C,E} 5
{D,E} 5
其中数字代表重量。
假设我有兴趣从 A 出发,游览 B、C 和 E。我怎样才能找到最短的路线来进行这次旅行?没有目的地,我只想走最短距离的那三个顶点。我在堆的帮助下使用 Dijkstra 算法,由于没有最终目的地,我该如何修改算法来实现这一点。
解决方法
一种简单的方法,可能不是最有效的,但易于实施。
- 在您的示例中生成您要访问的节点的所有排列:
- A -> B -> C -> E
- A -> B -> E -> C
- A -> C -> B -> E
- A -> C -> E -> B
- A -> E -> B -> C
- A -> E -> C -> B
- 对于每个可能的序列,用 Dijkstra 计算路径
- 例如对于 A B C E,路径 = dist(A,B) + dist(B,C) + dist(C,E)
- 选择计算出的最短路径
其他可能的方法,在这里,最后附上一个相对复杂度的对比表:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。