贪婪算法

本文介绍了贪婪算法作为解决NP完全问题的一种近似算法,通过旅行商问题和广播台覆盖问题阐述其工作原理,强调了贪婪算法在效率上的优势以及在精度上的局限性。

本文参考书籍《图解算法》

一、在了解贪婪算法之前,首先需要了解一下 NP完全问题

NP完全问题(NP-C问题),是世界七大数学难题之一。 NP的英文全称是Non-deterministic Polynomial的问题,即多项式复杂程度的非确定性问题。简单的写法是 NP=P?,问题就在这个问号上,到底是NP等于P,还是NP不等于P。。。。。。。

具体的详细描述可以参考百度百科,不过其中解释实在晦涩难懂,下面就讲一下一个经典的NP完全问题–旅行商问题

有一位旅行商。 他需要前往5个城市。
这位旅行商(姑且称之为Opus吧)要前往这5个城市,同时要确保旅程最短。为此,可考虑 前往这些城市的各种可能顺序。
这里写图片描述这里写图片描述

对于每种顺序,他都计算总旅程,再挑选出旅程最短的路线。5个城市有120种不同的排列方式。因此,在涉及5个城市时,解决这个问题需要执行120次操作。涉及6个城市时,需要执行720 次操作(有720种不同的排列方式)。涉及7个城市时,需要执行5040次操作!
推而广之,涉及n个城市时,需要执行n!(n的阶乘)次操作才能计算出结果。因此运行时间 为O(n!),即阶乘时间。除非涉及的城市数很少,否则需要执行非常多的操作。如果涉及的城市 数超过100,根本就不能在合理的时间内计算出结果——等你计算出结果,太阳都没了。

上面的问题就是一个典型的NP

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值