计算机算法设计与分析 第一章 算法概述

1.1 算法与程序

要有输入 , 有输出 , 确定性 , 有限性

1.2 算法复杂度分析

C = F(N,I,A)
T = T(N,I,A)
S = S(N,I,A)
其中 , N为问题规模 , I为输入 , A为算法

可省略A , 因为A通常隐含在函数中

考虑三种情况下的算法复杂度 , \(T_{max}(N)\) , \(T_{min}(N)\) , \(T_{avg}(N)\) , 表示最坏 , 最好 , 平均情况下的时间复杂度

1.3 NP完全性理论

P问题

两种时间复杂性 , 即多项式时间算法和指数函数时间算法

多项式时间算法求解的是易解的问题 , 需要超多项式时间才能求解的问题为难解的问题

所有可以在多项式时间内求解的判定问题构成P类问题

通常情况下 , 解一个问题比验证要困难

NP问题

NP问题 , 非确定性多项式问题 , 需要引入非确定性算法

非确定性算法将问题求解分为猜测和验证两部分 , 猜测阶段是非确定性的 , 给出问题解的一个猜测

算法的验证阶段是确定的 , 给出猜测解的正确性

当验证阶段是P问题时 , 称原问题为NP类问题

NPC问题

NPC问题是NP问题的子集 , 该类问题性质为 : 如果一个NPC问题可以在多项式时间内求解 , 那么NP中每个问题都可以在多项式时间内求解

什么是NPC问题 ?
NPC问题首先要是一个NP问题 , 然后所有的NP问题都要能规约到它

NP-Hard问题

NP-Hard问题为 , 满足NPC问题的第二条但不一定满足第一条 , NP-Hard问题不一定是NP问题
即所有的NP问题都能约化到它 , 但是它也不一定是NP问题 , 即使NPC问题发现了多项式级的算法 , NP-Hard问题有可能仍然无法得到多项式级的算法

posted @ 2025-05-26 23:09  Guaninf  阅读(10)  评论(0)    收藏  举报