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