提答相关(笔记)
参考资料(matrix67大牛):http://www.matrix67.com/blog/archives/105
P问题:能在多项式时间内解决的问题。
NP问题:能在多项式时间内判定答案是否正确的问题。
NPC问题:是NP问题,并且所有NP问题都可以规约到这个问题。
NP-Hard问题:将NPC问题变成求最优解问题。
常见的三种提答:
- 将一个NPC问题转换成类似于NP-Hard的问题(判定性问题转成最优解问题)。
- 让你玩游戏,玩一组优秀的解。
- 给出例入例出,让你猜算法,或者给定两个算法,构造能卡掉其中一个算法的输入。
第一类提答
对于规模小的部分分,可以用搜索/状压dp解决。
对于大数据,只能用找规律/用爬山和模拟退火来乱搞了。
爬山的优化方法:可以随机起点。
如何定义爬山中点的相邻点:
- 交换两个相邻的元素
- 交换任意两个元素
模拟退火:每次产生一个相邻点,如果这个点更糟糕,定义糟糕程度为k,我们就以一个概率pk接受这个点(p随着时间推移变小),否则一定接受这个点。
第二类提答
用蒙特卡洛树解决(我也不会)
还是乱搞和面向数据编程现实一点吧
第三类提答
这种题型就是考验算法能力。对算法的理解和掌握程度越高越容易得分~
本文介绍了P、NP、NPC及NP-Hard问题的概念,并探讨了针对NPC问题的三种常见求解策略:通过搜索或状态压缩动态规划解决小规模问题;采用爬山法或模拟退火法寻找大规模问题的近似解;以及通过实例输入输出猜测高效算法。
2380

被折叠的 条评论
为什么被折叠?



