Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm “与”的区别是什么;“爬山”;及;贪婪的;算法?_Algorithm - Fatal编程技术网

Algorithm “与”的区别是什么;“爬山”;及;贪婪的;算法?

Algorithm “与”的区别是什么;“爬山”;及;贪婪的;算法?,algorithm,Algorithm,请解释“爬山”和“贪婪”算法之间的区别 似乎两者都很相似,我怀疑“爬山”是一种算法;这似乎是一种优化。这是正确的吗?是的,你是正确的。爬山是一种通用的数学优化技术(见:)。贪婪算法是任何一种算法,它只是简单地选择它在当时看到的最佳选择并接受它 这方面的一个例子是在尽量减少硬币数量的同时进行更改(至少使用美元)。你取最高面额的硬币中的大部分,然后再取下最高面额的大部分,直到你达到所需的数量 这样,爬山就是一种贪婪算法。爬山和贪婪算法都是可用于优化问题的启发式算法。在优化问题中,我们通常寻求一些问题

请解释“爬山”和“贪婪”算法之间的区别


似乎两者都很相似,我怀疑“爬山”是一种算法;这似乎是一种优化。这是正确的吗?

是的,你是正确的。爬山是一种通用的数学优化技术(见:)。贪婪算法是任何一种算法,它只是简单地选择它在当时看到的最佳选择并接受它

这方面的一个例子是在尽量减少硬币数量的同时进行更改(至少使用美元)。你取最高面额的硬币中的大部分,然后再取下最高面额的大部分,直到你达到所需的数量


这样,爬山就是一种贪婪算法。

爬山和贪婪算法都是可用于优化问题的启发式算法。在优化问题中,我们通常寻求一些问题元素的最佳组合或排序。给定的组合或顺序就是解决方案。在这两种情况下,都可以对解决方案进行评估,以将其与其他解决方案进行比较

爬山启发式中,从初始解开始。生成一个或多个相邻解决方案。选择最好的并继续,直到没有更好的解决方案。这通常会产生一种解决方案。在爬山中,我们需要知道如何评估解决方案,以及如何生成“邻居”

在贪婪的启发式中,我们需要了解手头问题的一些特殊情况。贪婪算法使用信息生成单个解

优化问题的一个好例子是0-1背包。在这个问题中,有一个背包有一定的重量限制,还有一堆物品要放在背包里。每个项目都有一个权重和一个值。目标是使背包中物品的价值最大化,同时将重量保持在限制范围内

贪婪算法将拾取密度最高的对象并将其放入背包中,直到背包装满为止。例如,与砖块相比,钻石的价值高,重量小,因此我们将首先放入钻石

下面是一个贪婪算法失败的例子:假设你有一个容量为100的背包。您有以下项目:

  • 钻石,价值1000,重量90(密度=11.1)
  • 5枚金币,价值210,重量20(每枚密度=10.5)
贪婪算法将输入菱形,然后执行,给出1000的值。但最佳的解决方案是包括5枚金币,价值1050英镑

爬山算法将生成一个初始解——只需随机选择一些项目(确保它们在重量限制下)。然后评估解决方案,即确定值。生成一个相邻的解决方案。例如,尝试将一件物品换成另一件(确保您仍处于重量限制之下)。如果该值较高,请使用此选项并重新开始


爬山不是贪婪的算法。

你的结论听起来有误导性。您描述的特定贪婪算法贪婪地构造解决方案,而爬山启发式算法贪婪地达到局部最优。唯一的区别是,第一步中的贪婪步骤涉及构造一个解,而爬山中的贪婪步骤涉及选择一个邻居(贪婪局部搜索)。爬山是一种贪婪的启发。如果你想区分算法和启发式,我建议你阅读米科拉的答案,这更准确。