贪心算法求解TSP问题(python)

这里使用贪心算法求解TSP问题的python版本

# dist 为距离矩阵,start_index 为起始位置
def tsp_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
        seq_result.append(start_index)
    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
  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值