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

问题描述 投票:0回答:1

我正在开发一个音乐应用程序,我遇到了一个算法问题。这是问题的玩具版本。假设我们按照一定的顺序拥有我们想要访问的n城市。我们给出的是每个“步骤”的可能城市列表:

{{"London","Glasgow"},{"Munich","London"},{"Glasgow","Munich","London"}}

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

{{"London"->"Glasgow,100},{"London"->"Munich",400},{"Munich"->"London",300},...}

请注意,这个列表并不对称 - 伦敦到慕尼黑可能有所不同,从慕尼黑到伦敦(德国飞机的效率)。还假设从任何城市到自身的距离为0.我们想要选择总距离最小的列表。

该列表不必命中每个城市,它可以多次击中同一个城市。对于上面的例子,最有效的解决方案是{London, London, London}

到目前为止,我一直在使用贪心算法,但这并不总是能给出最好的结果。我考虑过的唯一另一种选择(除了蛮力)是遗传算法,但这并不能保证给出最佳解决方案。

什么是最有效的算法来实现这一目标?

algorithm
1个回答
1
投票

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

将城市分裂多次发生到不同的城市,并构建一个分层图。添加两个伪城市作为开始和结束,然后它成为最短路径问题。

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

© www.soinside.com 2019 - 2024. All rights reserved.