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