【C语言学习笔记】算法篇——简易贪心

本文首先介绍了NP完全问题的概念,指出其在旅行商问题等经典难题中的体现。由于NP完全问题不存在快速解决算法,因此转向了近似算法——贪心算法。贪心算法在局部最优解中寻找解决方案,虽然无法保证全局最优,但在某些问题上表现出色。文中以钱币找零问题为例,展示了贪心算法的应用。
摘要由CSDN通过智能技术生成

NP完全问题

*什么是NP完全问题

在了解贪心算法之前我们先了解下这个算法可以处理的问题,即世界七大数学难题之一的NP完全问题

NP完全问题的简单定义是,以难解著称的问题,如旅行商问题和集合覆盖问题,很多非常聪明的人都认为,根本不可能编写出可快速解决这些问题的算法。(摘自算法图解)

那既然这类问题没有快速算法,那我们就要学习近似算法(贪心算法就是近似算法之一),使它们可以快速找到NP完全问题的近似解

*如何识别NP完全问题

既然到目前为止,NP完全问题没有快速算法,如果我们在一开始遇到问题时能够识别出来,欸,这是NP完全问题,那我们就不用浪费时间去寻找一个根本不可能存在的快速算法了。但很可惜的是,并没有一个很确切的指标来判断这个题目是否是NP完全问题。

NP完全问题无处不在!如果能够判断出要解决的问题属于NP完全问题就好了,这样就不用去寻找完美的解决方案,而是使用近似算法即可。但要判断问题是不是NP完全问题很难,易于解决的问题和NP完全问题的差别通常很小。

但如果要找出经由指定几个点的最短路径,就是旅行商问题——NP完全问题。简言之,没办法判断问题是不是NP完全问题,但还是有一些蛛丝马迹可循的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值