也就是旅行商(TSP)问题,有很多解决方法,这里就介绍一种:动态规划,参考干货|十分钟教你用动态规划算法解Travelling Salesman Problem(TSP)问题,附代码……。
最重要的是找到状态转移方程,是这个:
从某一点出发,经过V‘+{i}中的所有点到达i(注意i是在V’中的)的最短距离是[经过V‘中所有点最后到达某一点k的最短距离加上k到i的距离]的最小值,Python代码以及解释:
# -*- coding:utf-8 -*-
class Solution:
def tsp(self, matrix):
m, n = len(matrix) * len(matrix), len(matrix)
# 状态压缩DP,5表示0101,dp[i][j]表示从0出发,经过i中的几个到达j,要求i中有j
dp = [[float('inf')] * n for _ in