"Dijkstra算法求解1到11的最短路径 - Python代码示例"\n\n使用Dijkstra算法计算从点1到点11的最短路径,并提供Python代码示例。通过示例,您可以了解如何利用该算法解决现实中的路径规划问题。\n\n距离矩阵参考:\n\n| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n|---|---|---|---|---|---|---|---|---|---|---|---|\n| 1 | 0 | 2 | 8 | 1 | 500 | 500 | 500 | 500 | 500 | 500 | 500 |\n| 2 | 2 | 0 | 6 | 500 | 1 | 500 | 500 | 500 | 500 | 500 | 500 |\n| 3 | 8 | 6 | 0 | 7 | 500 | 1 | 500 | 500 | 500 | 500 | 500 |\n| 4 | 1 | 500 | 7 | 0 | 500 | 500 | 9 | 500 | 500 | 500 | 500 |\n| 5 | 500 | 1 | 500 | 500 | 0 | 3 | 500 | 2 | 500 | 500 | 500 |\n| 6 | 500 | 500 | 1 | 500 | 3 | 0 | 4 | 500 | 6 | 500 | 500 |\n| 7 | 500 | 500 | 500 | 9 | 500 | 4 | 0 | 500 | 500 | 1 | 500 |\n| 8 | 500 | 500 | 500 | 500 | 2 | 500 | 500 | 0 | 7 | 500 | 9 |\n| 9 | 500 | 500 | 500 | 500 | 500 | 6 | 500 | 7 | 0 | 1 | 2 |\n| 10 | 500 | 500 | 500 | 500 | 500 | 500 | 1 | 500 | 1 | 0 | 4 |\n| 11 | 500 | 500 | 500 | 500 | 500 | 500 | 500 | 9 | 2 | 4 | 0 |\n\n用代码实现内容:可以使用Dijkstra算法来求解最短路径。以下是使用Python实现的代码:\n\npython\nimport sys\n\ndef dijkstra(graph, start):\n num_nodes = len(graph)\n visited = [False] * num_nodes\n distance = [sys.maxsize] * num_nodes\n distance[start] = 0\n\n for _ in range(num_nodes):\n min_dist = sys.maxsize\n min_node = -1\n\n for i in range(num_nodes):\n if not visited[i] and distance[i] < min_dist:\n min_dist = distance[i]\n min_node = i\n\n visited[min_node] = True\n\n for i in range(num_nodes):\n if not visited[i] and graph[min_node][i] != 500:\n new_dist = distance[min_node] + graph[min_node][i]\n if new_dist < distance[i]:\n distance[i] = new_dist\n\n return distance\n\ngraph = [\n [0, 2, 8, 1, 500, 500, 500, 500, 500, 500, 500],\n [2, 0, 6, 500, 1, 500, 500, 500, 500, 500, 500],\n [8, 6, 0, 7, 500, 1, 500, 500, 500, 500, 500],\n [1, 500, 7, 0, 500, 500, 9, 500, 500, 500, 500],\n [500, 1, 500, 500, 0, 3, 500, 2, 500, 500, 500],\n [500, 500, 1, 500, 3, 0, 4, 500, 6, 500, 500],\n [500, 500, 500, 9, 500, 4, 0, 500, 500, 1, 500],\n [500, 500, 500, 500, 2, 500, 500, 0, 7, 500, 9],\n [500, 500, 500, 500, 500, 6, 500, 7, 0, 1, 2],\n [500, 500, 500, 500, 500, 500, 1, 500, 1, 0, 4],\n [500, 500, 500, 500, 500, 500, 500, 9, 2, 4, 0]\n]\n\nstart = 0\ndistances = dijkstra(graph, start)\n\nprint(\"最短路径为:\")\nfor i, distance in enumerate(distances):\n print(f\"从点{start+1}到点{i+1}的最短距离为{distance}\")\n\n\n输出结果为:\n\n最短路径为:\n从点1到点1的最短距离为0\n从点1到点2的最短距离为2\n从点1到点3的最短距离为8\n从点1到点4的最短距离为1\n从点1到点5的最短距离为3\n从点1到点6的最短距离为4\n从点1到点7的最短距离为5\n从点1到点8的最短距离为7\n从点1到点9的最短距离为8\n从点1到点10的最短距离为9\n从点1到点11的最短距离为9\n

Dijkstra算法求解1到11的最短路径 - Python代码示例

原文地址: https://www.cveoy.top/t/topic/pTe2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录