Algorithm 从最大化适应度函数的矩阵中选择列表

Algorithm 从最大化适应度函数的矩阵中选择列表,algorithm,Algorithm,我正在开发一个音乐应用程序,但我在一个算法上遇到了麻烦。这是问题的一个玩具版本。假设我们有n个城市,我们想按一定顺序参观。我们得到的是每个“步骤”可能的城市列表: {{“伦敦”、“格拉斯哥”}、{“慕尼黑”、“伦敦”}、{“格拉斯哥”、“慕尼黑”、“伦敦”} 我们必须将其简化为一个城市列表,从每个子列表中选择一个城市。我们还收到了每个城市之间的距离列表: {{“伦敦”->“格拉斯哥,100},{“伦敦”->“慕尼黑”,400},{“慕尼黑”->“伦敦”,300},…} 请注意,此列表不是对称的-

我正在开发一个音乐应用程序,但我在一个算法上遇到了麻烦。这是问题的一个玩具版本。假设我们有
n个
城市,我们想按一定顺序参观。我们得到的是每个“步骤”可能的城市列表:

{{“伦敦”、“格拉斯哥”}、{“慕尼黑”、“伦敦”}、{“格拉斯哥”、“慕尼黑”、“伦敦”}

我们必须将其简化为一个城市列表,从每个子列表中选择一个城市。我们还收到了每个城市之间的距离列表:

{{“伦敦”->“格拉斯哥,100},{“伦敦”->“慕尼黑”,400},{“慕尼黑”->“伦敦”,300},…}

请注意,此列表不是对称的-伦敦到慕尼黑可以不同于慕尼黑到伦敦(这是德国飞机的效率)。还假设从任何城市到自身的距离为0。我们希望选择总距离最小的列表

该列表不必覆盖每个城市,它可以多次覆盖同一个城市
{伦敦,伦敦,伦敦}

到目前为止,我一直在使用贪婪算法,但这并不总是给出最佳结果。我考虑过的唯一其他选择(暴力除外)是遗传算法,但这也不能保证给出最优解


实现这一点最有效的算法是什么?

让我们以这种方式简化问题

将多次发生的城市分割成不同的城市,构造一个层次图,添加两个伪城市作为起点和终点,成为最短路径问题


有关最短路径问题的更多信息。

这看起来像是一个@Cid,我也这么认为,但最大的区别是它不必访问每一个城市,可以连续多次访问同一个城市,并且有一个选项列表,而不仅仅是一个城市和距离列表。因此我不确定TSP算法如何适应。在TSP问题,我们需要访问每一个城市内部,但在这里,如果我们创建伪启动城市和结束城市,我们得到了一个最短路径问题。现在让我们考虑问题的规模……我不清楚你是否有一个可能的下一个城市的名单,每一个城市或每一个时间步长。无论如何,如果名单不必打击每个城市,然后最佳索洛。这是一个空列表。@j_random_hacker我在规范中声明,我们必须从每个选项中选择一个城市。