最短路問題

2021-10-13 00:27:12 字數 1541 閱讀 3160

第一章、問題描述

第二章、直接求解

import time

import numpy as np

start=time.perf_counter(

)first=np.array([2

,5,1

])second=np.array([[

12,14,

10],[

6,10,

4],[

13,12,

11]])

third=np.array([[

3,9]

,[6,

5],[

8,10]

])forth=np.array([5

,2])

distance_ijk=

#字典型別

for i in

range(3

):for j in

range(3

):for k in

range(2

):distance_ijk[

(first[i]

+second[i]

[j]+third[j]

[k]+forth[k])]

=((i,j,k)

)#將所有距離儲存為鍵,相對於的序號儲存為元組型別的值

print

(distance_ijk)

#返回相應的字典資料

print

(distance_ijk.keys())

#返回字典中鍵的資訊,也就是所有的距離,為列表型別

print

(distance_ijk.values())

#返回字典中值得資訊,也就是序號組合

min_jian=

min(distance_ijk.keys())

#求出最小的距離

relative_zhi=distance_ijk.get(min_jian)

#當為最小距離時返回相應的順序組合

print

("最距離值為:,最距離值順序組合為:"

.format

(min_jian,relative_zhi)

)end=time.perf_counter(

)print

("執行時間為s"

.format

(end-start)

)

執行結果:

dict_keys([22, 25, 27, 23, 24, 19, 26, 21, 20])

dict_values([(2, 0, 0), (2, 2, 0), (0, 1, 0), (0, 1, 1), (2, 2, 1), (1, 0, 0), (1, 1, 0), (1, 2, 1), (2, 1, 1)])

最距離值為:19,最距離值順序組合為:(1, 0, 0)

執行時間為0.004156999999999966s

注:也可用動態規劃求解

最短路 最短路徑問題

題目描述 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點直線的距離。現在的任務是找出從一點到另一點之間的最短路徑。input 共有n m 3行,其中 第一行為乙個整數n。第2行...

最短路問題

簡單的最短路問題 includeconst int maxnum 1002 const int maxint 100005 void dijkstra int n,int v,int dist,int c maxnum maxnum dist v 0 s v 1 依次將未放入s集合的結點中,取dis...

最短路問題

time limit 5000ms memory limit 65536kb total submit 16 accepted 3 page view 402submit status discuss description 現在有n個城市,編號從1到n。現在已知從城市i到城市j需要走的時間為aij...