我正在阅读关于Binary search的不同材料,而且我不清楚这是一个贪婪的二进制文件(看起来像我不喜欢它)或者,它可以是一个具有一些特定实现的贪心算法?
如果它可以贪婪,它是如何有意义的?如果通过选择局部最优值获得全局最优值,而不重新考虑先前的选择,则无法保证二进制搜索的正确结果。
答案 0 :(得分:2)
考虑您正在寻找8位值范围内的索引100处的元素(1-256)。您的二进制搜索进度将考虑以下索引:
很容易注意到,在每个步骤中,您都在测试尚未测试的最重要的位,如果它没有溢出结果,则会将其添加到部分解决方案中,直到找到最终结果。
因此可以指出贪婪选择的以下特征:
当然不需要回溯,所以这是一个完美的贪婪算法。
答案 1 :(得分:2)
我想如果你侧身眯着眼睛,二元搜索就是贪婪,因为你在每一步都尽可能地减少你的搜索空间。它恰好是搜索空间中的一种贪婪算法,其结构使得它既高效又总能找到正确的答案。
我不会眯着眼睛。
所述二进制搜索可以在传统的贪心算法中使用。例如,针对打包问题的贪婪算法可能会要求您接下来选择可以适用的最大可用项目"。可以使用二进制搜索来找到它。
相反,贪婪算法可用于创建非常适合二进制搜索的数据结构。请参阅示例https://en.wikipedia.org/wiki/Geometry_of_binary_search_trees#Greedy_algorithm