当前位置: 首页 > 网络应用技术

一篇文章与贪婪算法进行了交谈

时间:2023-03-05 19:30:12 网络应用技术

  人们的原始性质,但是随着自己的经验和生活环境等因素的影响,人们会逐渐发展贪婪。实际上,不仅人们贪婪,而且我们的算法也会贪婪。今天,我将使用贪婪的绿色算法介绍下一个算法模型,以了解算法如何产生贪婪。

  在分析和解决问题时,每个步骤的计算选择是最佳或最佳。这样,最终计算结果也是最佳的。换句话说,算法首先追求本地最佳解决方案,以寻求总体最佳解决方案。

  贪婪算法的基本步骤:

  1.首先定义问题,以确定问题模型是否适合使用贪婪算法,即解决最有价值的问题;

  2.拆卸极值的问题,然后在拆卸后解决每个子问题,尝试获得当前子问题的局部最佳解决方案;

  3.在完成所有子问题的部分最佳解决方案完成后,我们将汇总这些本地最佳解决方案,以获得最终全局的最终最佳解决方案。然后,此最佳解决方案是整个问题的最佳解决方案。

  概念算法的描述可能不容易理解,因此您需要与某些实际场景结合解释。在这里,我们剪了时间来查找更改。尽管每个人都使用手机来支付付款,但已经如此很长一段时间以来,他们没有触摸这笔钱,但并没有阻碍找到零问题来帮助我们的形象理解贪婪算法的实施过程。

  假设您是一家小商店的所有者,您有各种小规模的变化,例如1元,3元,5元。这次,一个孩子来买东西。他要求您找到更改的最小更改,以便可以安装他的口袋。我们将更改记录为C [0],C [1],C [2] ...,儿童购买小吃的钱,我们将其记录为总数。然后刚才说刚才想获得最小变化的孩子。

  示例1:

  假设鉴于更改为11,而当前的更改为1、3和5。

  输入:总计= 11,C [0] = 1,C [1] = 3,C [2] = 5

  输出:3

  通过提取问题中的关键字,我们可以澄清一下,这个问题实际上是要解决的最有价值的问题。只要您找到符合条件的最小变更编号,就可以解决检索最小更改的问题。如果您想找到最小变化,我们想到的第一种方法是使贫穷并列出所有组合11的满意度总数。如下图所示,我们可以在这些组合中的这些组合中找到最终答案并计算计算的特定数量。但是这显然不是一个好的解决方案。很大,我们的结果不佳将爆炸。

  有更好的解决方案吗?目前,我们可以考虑实施贪婪算法,并找到满足要求的最小变更数量。由于我们正在寻找更改,我们可以将问题转换为找到满足满足的最低步骤总总数。实际上,问题分为一个小步骤以找到更改。在这一小步骤中,贪婪寻求部分最佳解决方案。因此,在找到更改的每个步骤中,都需要对应于该步骤的最佳奶油的相应奶油为了一起找到贪婪算法的大小,假定每个面值的变化就足够了。

  在寻找更改的步骤中,首先获得最大面值为5的更改(贪婪,找到最大的面值),然后找到其余的以找到更改6 = 11-5,因此请继续找到最大的口袋最大值为5(继续贪婪的贪婪),等待更改1 = 6-5.在这次,只要您得到面值1的更改,您就可以完成任务,然后整合结果在前面的步骤中。最后,我们可以得出结论,总计11的最小变化的大小为3.通过此分析,贪婪算法是否为此并不是那么复杂。

  相应的代码实现如下:

  我们分析了贪婪算法的一般实施过程,但实际上存在问题。我不知道每个人是否发现,因为贪婪的算法太贪婪了,每个步骤都希望找到一个本地的最佳解决方案。,我们没有1元的更改,上述代码的返回结果为-1,也就是说,没有合格的答案。满足条件,但找不到上述代码。

  因此,上述代码仍然存在问题。关键点是,当您发现没有1元更改时,您需要回头看看是否可以在第二步中更换5元更改为3元更改。在此步骤中,您可以找到一个组合5,3,3。

  总结本文主要通过描述贪婪算法并与实际发现的变化结合在一起,主要分析贪婪算法的特定实施过程。同时,缺乏贪婪算法的存在,即易于属于当地的最佳陷阱,无法解释自己,这导致无法满足条件的结果。这也是一个特殊问题,每个人都需要注意使用贪婪算法来分析问题。

  创建并不容易。如果您认为这篇文章很好,请喜欢它+Collection+Comment.old外观,文本的结尾与您分享了一首诗。

  dingwubo·南海回到王丁哥等待母亲

  Changxian在世界上,天Ying应该乞求和酥脆的母亲。TaoQingge散布牙齿,风升高,海洋变得凉爽。

  当您微笑时,您回到Yan,微笑的米克西安(Ling Meixiang)越少。

  原始:https://juejin.cn/post/7102976328516763679