貪心演算法求解TSP問題(python)

2021-10-07 04:08:30 字數 1055 閱讀 2998

這裡使用貪心演算法求解tsp問題的python版本

# dist 為距離矩陣,start_index 為起始位置

deftsp_quick

(dist:

list

, start_index:

int)

: sum_distance, seq_result, n =0,

[start_index,],

len(dist)

for path_index in

range

(n -1)

: distance_list = dist[start_index]

min_dis =

max(distance_list)

for index, distance in

enumerate

(distance_list):if

(index not

in seq_result)

and(distance < min_dis)

: min_dis = distance

start_index = index

sum_distance += min_dis

return sum_distance,seq_result

#使用方法:

dist =[[

2,5,

6,7,

3],[

5,9,

3,4,

5],[

6,3,

7,2,

6],[

7,4,

2,5,

2],[

3,5,

6,2,

9],]

sum_distance,seq_list = tsp_quick2(dist,3)

# dist為距離矩陣,3表示從下標為3開始

#返回sum_distance 即為最短距離

#返回序列 [3,2,1,0,4] 表示 3 -> 2 -> 1 -> 0 -> 4

貪心演算法 求解畜欄問題

題目內容 有n頭牛 1 n 50,000 要 給定每頭牛 的時間區間a,b。牛需要呆在畜欄裡才能 乙個畜欄同一時間只能容納一頭牛。問至少需要多少個畜欄,才能完成全部 工作,注意 在同乙個畜欄的兩頭牛,它們 時間區間不能在端點重合。輸入格式 第1行 乙個正整數n 第2 n 1行 第i 1行的兩個整數給...

貪心演算法之TSP 旅行商 問題C 實現

貪心演算法 貪心演算法 又稱貪婪演算法 是指在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。所以不能保證最後結果是最優解,一般是最優解的近似解,但是貪心演算法的效率高。問題描述 旅行商問題 tsp 又譯為旅行推銷員問題 貨郎擔...

找零問題之貪心演算法求解Python

貪心演算法是基於區域性最優原理,將問題分割成若干個小的子問題,然後求解子問題的最優解,這樣歸併子問題的解,從而求得整個問題的解。當然這個解並不是最優解,只能說是近似最優解,因為區域性最優的合併並不一定是全域性最優。貪心演算法還有驗證解的步驟,這個比較簡單,就是把解帶入即可 找零問題,比如說售貨員需要...