首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最小化排列之和的贪心算法

最小化排列之和的贪心算法
EN

Stack Overflow用户
提问于 2021-02-19 02:03:13
回答 1查看 135关注 0票数 0

我有一个数组{a1,a2,....,an} (由自然数组成),我需要构建一个贪婪的算法来找到一个排列(i1,...in)为1..n,从而最小化和:1.ai1 + 2.ai2 + .... + (n − 1)ain−1 + n.ain

当然,我可以尝试所有的方法,并选择给出最小和的一个(这将给出O(n!)的正确结果)。

我认为贪婪的选择是按降序选择数字,但我不知道如何证明这是有效的。

附言:这只是为了学习和训练,我不能“贪婪”地思考。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-19 02:15:27

按降序选择数字是最优的。

证据是通过对n的归纳来证明的:假设有一个最优的排列,最小的数字不在最后。然后,交换最后一个位置的元素和最小的元素会减少总和。这与最优性的假设相矛盾,所以我们必须确保最小的元素在最后。根据归纳假设,其他元素在前(n-1)位按降序排列。

n=1的基本情况很简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66265604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档