import sys
# 贪心算法求解TSP,得到的为局部最优解
# 需要提前给出path_length, path_vertexs = [],[]
def find_path(start, n, end):
path_vertexs.append(start)
row = C[start] # C为代价矩阵
copy_row = row[:]
for i in path_vertexs: # 删除已走过的点(包括自身),有可能删除前面位置的点
copy_row.remove(row[i])
if len(path_vertexs) < n:
min_length = min(copy_row)
start = row.index(min_length) # 若删除前面的点,则索引查找刚好为前面的点,所以没问题
path_length.append(min_length)
find_path(start, n, end)
else:
min_length = C[start][end]
path_length.append(min_length)
path_vertexs.append(end)
return path_length, path_vertexs
# 动态规划方法,任意起点可得出全局最优解,时间复杂度O(n3)
def dp_tsp(n):
dp = [[-1] * (1 << (n - 1)) for i in range(n)] # 从0点开始出发
for i in range(n):
dp[i][0] = C[i][0]
for j in range(1, 1 << (n - 1)):
for i in range(n):
dp[i][j] &#
旅行商(TSP)问题,贪心法和动态规划法解答
最新推荐文章于 2024-07-20 08:00:00 发布
本文探讨了经典的旅行商问题,通过详细解析介绍了如何运用贪心算法和动态规划策略来求解这一问题,旨在帮助读者理解这两种方法在解决复杂路径优化问题中的应用。
摘要由CSDN通过智能技术生成