- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如果一个优化问题可以用贪心法来解决,那么它的所有最优解一定总是包含第一选择(即贪心选择)是真的吗?
最佳答案
我将您的问题解释为“所有最佳解决方案的集合必须始终包含第一选择”,否则一个解决方案包含另一个解决方案是没有意义的。
当然,答案是肯定的。如果贪心算法解决了问题,它会产生一个最优解,根据定义,该最优解在最优解集合中。
也许你的意思是“如果一个贪心算法有时产生一个最优解,......”在那种情况下答案也是微不足道的。
如果您的意思是“如果贪心算法有时产生最优解,那么所有有保证的最优算法是否也会产生该解?”答案取决于问题是否具有唯一最优解或多个最优解。
如果一个问题有多个最优解,答案显然是否定的。
一个值得思考的好例子是对数字列表进行排序,使所有单个数字排在两位数之前,两位数排在三位数字之前,等等。 IE。你不关心 99 出现在 11 之前还是相反,你只希望 9 出现在 25 之前,33 出现在 872 之前,555 出现在 1234 之前。
这个示例问题有多个最优解。懒惰但不贪婪的算法无法确保 11 在 99 之前出现。过于热情的算法会这样做。两者都会产生彼此不同的最优解。
如果这没有帮助,什么也没有;-)
关于algorithm - 使用贪心算法进行优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17137617/
>>> import re >>> p = re.compile('.*&l=(.*)(&|$)') >>> p.search('foo&l=something here&bleh').group(1
最近有一道面试题如下:我们得到了一个单词列表,我们想要格式化它们以最大化回车符的数量,同时将每行的字母数量保持在一个范围内。 例如,我们希望每行的字母范围为 5 - 10(含),一种解决方案是: he
我正在使用二维数组来处理游戏中的对象。数组的维度就像笛卡尔网格上的坐标。当玩家选择一个点时,我想从数组中收集 N 个最近的网格单元,即使该点不是有效的数组索引。 例子:从 [0,0] 到 [10,10
我在 Hibernate 之上使用 Olingo 1.2。 我有一个返回 250 行的请求,每行以一对多关系链接到另一个表。 我执行 $expand 以获取子表中的所有数据,但是当我检查在数据库中执行
我正在 ANTLR4 中构建语法,但收到此警告 TL4.g4:224:12: greedy block ()* contains wildcard;非贪婪语法 ()*?可能是首选 这是它引用的代码行
In the default greedy mode, all data offered to targets are accepted, even if the other target doesn
假设我有 n 个盒子,每个盒子里面都有一些值 b[i] .我可以保证对一组框进行排序,使得 b[1] j; { min_{k=i}^j (c[k] + max(T(i, k-1)
本文已收录到 AndroidFamily ,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周末是 LeetCode 第 339 场周赛,你参加
什么是 PHP 中的“贪心 token 解析”?我在 Codeigniter 指南中找到了这个: “除非需要解析变量,否则始终使用单引号字符串,并且在确实需要解析变量的情况下,使用大括号防止贪婪的标记
本文已收录到 AndroidFamily ,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周末是 LeetCode 第 337 场周赛,你参加
我是一名优秀的程序员,十分优秀!