【计算理论】计算复杂性 ( 多项式时间规约 | NP 完全 ★ | 布尔可满足性问题 ) ★

文章目录

  • 一、多项式时间规约 分析
  • 二、NP 完全 ★ ( 计算理论最重要的概念 )

一、多项式时间规约 分析


多项式时间规约概念 : 【计算理论】计算复杂性 ( 多项式等价引入 | 多项式时间规约 )

下图中 , 给定 输入

\rm x

, 想要知道

\rm x

字符串 , 是否可以被

\rm L

语言对应的算法接受 ;

做一个规约 , 将上述问题 , 转化为

\rm f(x)

是否能被

\rm L'

语言对应的算法接受 ;

首先将

\rm x

字符串 , 输入到函数

\rm f

中计算 , 得到输出

\rm f(x)

,

然后将

\rm f(x)

输入到

\rm L'

算法中 , 查看该输入是否能被接受 ,

如果

\rm L'

接受

\rm f(x)

, 那么就说

\rm x

是被

\rm L

所接受的 ;

二、NP 完全 ★ ( 计算理论最重要的概念 )


NP 完全 定义 ★ :

如果 语言

\rm B

\rm NP

完全的 , 必须满足如下两个条件 :

① 是

\rm NP

问题 : 语言

\rm B

对应的计算问题必须在

\rm NP

中 , 换句话说就是可以找到一个多项式算法 , 可以验证该计算问题 ;

② 是

\rm NP

最难问题 :

\rm NP

中的任何计算问题

\rm A

, 都可以在 多项式时间规约 到

\rm B

, 也就是说在

\rm NP

中的任何计算问题 , 其难易程度都不会超过

\rm B

,

\rm B

\rm NP

中最难的问题 ;

\rm NP

中其它所有的计算问题的难以长度都不会超过

\rm B

,

\rm B

问题是

\rm NP

中最难的问题 ;

NP 完全命题 ★ : 如果

\rm B

问题是

\rm NP

完全的 , 并且

\rm B

能在 多项式时间规约 到

\rm C

, 记作

\rm B \leq C

, 则

\rm C

也是

\rm NP

完全的 ;

该命题是很重要的命题 , 验证一个命题是

\rm NP

完全的 , 需要满足上面的两个条件 , ① 是

\rm NP

问题 , ② 是

\rm NP

最难问题 ;

将计算问题与

\rm NP

中最难问题

\rm B

进行比较 , 是很难的 , 如果已经知道某个计算问题是

\rm NP

完全的 , 就不需要与

\rm NP

中所有问题进行比较 , 只与当前已知的

\rm NP

完全问题比较即可 ;

将 已知的

\rm NP

完全的 计算问题

\rm B

, 与 要验证的

\rm C

问题 , 进行规约 , 就知道

\rm C

问题是否是

\rm NP

完全的 ;

历史已经找到了一个

\rm NP

完全问题 : 布尔可满足性问题 ( Boolean Satisfiability Problem;SAT ) ;