第3讲P类NP类NPC类.docx

上传人:b****3 文档编号:27015555 上传时间:2023-06-25 格式:DOCX 页数:14 大小:87.50KB
下载 相关 举报
第3讲P类NP类NPC类.docx_第1页
第1页 / 共14页
第3讲P类NP类NPC类.docx_第2页
第2页 / 共14页
第3讲P类NP类NPC类.docx_第3页
第3页 / 共14页
第3讲P类NP类NPC类.docx_第4页
第4页 / 共14页
第3讲P类NP类NPC类.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

第3讲P类NP类NPC类.docx

《第3讲P类NP类NPC类.docx》由会员分享,可在线阅读,更多相关《第3讲P类NP类NPC类.docx(14页珍藏版)》请在冰豆网上搜索。

第3讲P类NP类NPC类.docx

第3讲P类NP类NPC类

上次内容:

(1)5个算法设计技术,分而治之,贪心技术,回溯,动态规划,局部搜索

(2)局部搜索设计近似算法,现在也有了。

(3)许多问题设计不出多项式时间求解算法,也有很多问题能找到多项式算法,大学学的算法都是多项式时间的。

(4)企图把问题分类,能否分为两类,一类可以设计多项式时间算法,另一类不能设计多项式时间算法。

前人建立了一种模型,说明问题很难,怎样说明。

实际也是多年研究的结果,科学就是解释现象。

例子:

实例:

布尔变量集合:

U={u1,u2,u3,u4,u5},C={{

},{

},{

},{

}}

询问:

是否存在U真值指派,使(

)(

)(

)(

)=1

SAT问题一般描述:

实例:

布尔变量集合:

U={u1,u2,…,un},项集合C={c1,c2,…,cm},

ck={yk1,yk2,…,ykt},ykj{u1,u2,…,un,

}.

询问:

是否存在U的真值指派,使c1c2…cm=1,就是,

ck=yk1yk2…ykt

在人工智能的搜索求解中,推理规则均采用合取范式表示。

tsp问题:

实例:

城市集合:

C={c1,c2,…,cm},d(ci,cj)Z+,ci,cjC,正整数K.

询问:

是否存在城市排列c

(1)c

(2)…c(m),使

Hamilton回路问题:

实例:

无向简单图G=(V,E),|V|=n。

询问:

是否存在定点排列v

(1),v

(2),…,v(n),使(v(i),v(i+1))E(G),i=1,…,n-1,(v(n),v

(1))E(G)。

上述两个问题均是询问解得存在性,判断是否具有满足条件的解。

书上的表:

表上是以前的计算机的计算时间。

问题的算法时间复杂性有很多,什么样的好呢?

每秒100万次的计算机。

T(n)

问题输入长度n

10

20

30

40

50

60

n

0.00001

0.00002

0.00003

0.00004

0.00005

0.00006

n2

0.0001

0.0004

0.0009

0.0016

0.0025

0.0036

n3

0.001

0.008

0.027

0.064

0.125

0.216

n5

10.1

320

1243

1.7p

25.2p

130p

2n

0.001

1

17.9p

12.7天

35.7年

366世纪

3n

0.059

58分

6.5年

3855世纪

表说明多项式时间复杂度与指数时间复杂度,区别大。

主要是增长速度区别。

§3.2确定型图灵机与P类

下面要说明什么是多项式时间可以求解的问题,实际要定义多项式时间复杂度,什么是时间复杂度,什么是空间复杂度。

自圆其说,说明自然界中的问题,解决问题。

英文名字:

DTM

(1)一个硬壳;

存储带:

一个方格存一个符号;

读写头在那里,可以左右移动,一次移动一个方格。

状态控制器可以读写带方格中的内容;

(2)硬壳中放入数据;

带上放的符号:

有限个,其中包括空白符号b,

={b},是输入符号集合。

符号有限个,不能无限多个。

(3)有限个状态;状态个数不随问题实例长度变化而变化。

Q={q0,q1,q2,…,qy,qn},q0:

起始状态,qy,qn都是停机状态,qy表示停机时回答yes,qn表示停机时回答no。

qf={qy,qn}

(4)状态转换规则。

什么是状态,三要素表示DTM状态:

(qk,读写头位置,读写头指向位置的带符号),现在不关心读写头位置,只关心读写头指定带方格的符号。

在造计算机时,有一个地址寄存器。

(Q-{qf})Q:

这是一个映射。

(qi,si)(

):

含义,当前状态qi,当前读写头所指方格中的符号si,则下一个状态qi’,将带方格中的符号修改为si’,读写头移动一个位置:

={L,R,S}

程序实际就是状态转换规则:

初始状态q0,按照程序转换状态,到结束时状态qf,回答yes或no。

我们编的程序就是告诉计算机怎样改变状态。

真正实现计算机,还有很多工作,怎样用语言的形式描述状态转换规则。

那些硬件,那些软件,电子计算机怎样实现。

例子:

利用turing机判断正整数的奇偶性。

(1)={0,1,b};

(2)Q={q0,q1,q2,qy,qn}

(3)状态转换规则如下:

 

Q

0

1

b

q0

(q0,0,r)

(q0,1,r)

(q1,b,l)

q1

(q2,0,s)

(q2,1,s)

(q2,b,s)

q2

(qy,0,s)

(qn,1,s)

(q2,b,s)

 

以下是输入的带符号,输入数据,实例,

B

b

1

0

1

0

b

b

b

b

-2

-1

0

1

2

3

4

5

6

7

(1)q0,1,r---q0,0读写头位置1;

(2)Q0,0,r---q0,1读写头位置2

(3)q0,1,r---q0,0读写头位置3;

(4)q0,0,r---q0,b读写头位置4;

(5)q0,b,L---q1,0读写头位置3;

(6)q1,0,s---q2,0读写头位置3

直接讲就可以了。

定义3.1:

把问题的任意实例I输入给DTM,都能经过DTM有限步计算到达停机状态qf{qy,qn},则称问题是确定turing机可计算的,否则称为确定turing机不可计算的。

有的问题不可计算。

不是所有问题都可以计算。

团问题:

实例:

无向图G=(V,E),正整数JZ+,

询问:

是否存在G的一个完全子图G’,|V(G’)|J?

输入数据格式认为是一种语言,规则当然是语言,带格式的数据,人们把它看作语言。

问题的描述:

<,L,>

描述问题的符号集合,

描述实例的形式化,输入数据的格式是什么,L,也称为一种语言。

针对任意一个输入IL,回答是什么?

(I){yes,no}

***实例有了以后,就有答案了,解也就有了,回答yes的解可能多个。

每个实例对应一个确定的答案。

定义3.2:

问题<,L,>是用某个DTM程序可解的,任意实例IL,只要I写在带上,从q0状态开始执行,总可经过有限步计算停机,且在带上保留着该问题的解答(I){yes,no}。

所用的状态数为计算的时间复杂度:

TM(I)。

计算中所占用的带方格数为空间复杂度SM(I)。

L(n)={I|IL,|I|=n},实例集合,长度为n的语言集合。

问题规模怎么描述。

TM(n)=max{TM(I)|IL(n)},问题输入长度为n时的时间复杂度。

SM(n)=max{SM(I)|IL(n)},问题输入长度为n时的空间复杂度。

所有长度为n的实例中,计算时间最长的那个实例的时间复杂度定义为T(n)。

本质上,TM(n)也是几乎不可能精确得到的,我们往往只能得到TM(n)的一个上界。

定义3.4:

多项式时间可解的:

存在存在多项式函数P(n),使TM(n)P(n)。

则称问题是多项式时间可计算的。

P类问题------DTM多项式时间可计算的。

§3.3非确定图灵机与NP类

素数分解问题:

实例:

大整数n

询问:

是否存在两个素数p1,p2,使得:

p1*p2=n?

密码学上十分重要的问题。

验证容易,求解难。

货郎判定问题,团问题都是这样,Hamilton回路问题。

Sat问题:

实例:

U={u1,u2,u3,u4,u5},

C={(u1,u2,

),(u2,

u5),(

u3,

),(u2,u3,u5)}

询问:

是否存在U的真值指派使C中的项均满足。

解释何谓满足,就是使项对应布尔表达式取值为1。

TSP问题:

实例:

城市集合:

C={c1,c2,…,cm},d(ci,cj)Z+,ci,cjC,正整数K.

询问:

是否存在城市排列c

(1)c

(2)…c(m),使

验证容易求解难。

三个问题都是这样。

Hamilton回路问题:

实例:

无向简单图G=(V,E),|V|=n。

询问:

是否存在定点排列v

(1),v

(2),…,v(n),使(v(i),v(i+1))E(G),i=1,…,n-1,(v(n),v

(1))E(G)。

所以给出NTM模型如下:

(1)硬壳:

(2)机器的符号,={b}

(3)状态集合:

Q={q0,q1,q2,…,qf},qf{qy,qn}

(4)状态转换函数:

(qi,si)(qi’,si’,)

,哪一个状态,哪一个符号,怎么移动,NTM自己通过猜测部件获得选择。

把这件事讲清楚很难。

解释什么是NTM,

●实际就是验证机器,由猜测部件猜测最好的动作,然后状态控制器去执行动作。

求出最优解。

根据猜测部件求出的解回答结果。

●猜测部件猜测正确,则多项式时间内可以回答正确答案。

我们只需要编验证程序就可以。

●猜测部件猜测错了,就不能保证最后回答对了。

猜测部件应该能够保证,若是就能猜出来。

●相当于验证了。

猜测一个动作就相当于猜测一个解。

一步一步猜,所以一步一步改变状态。

●Sat问题若猜测部件给定一个解,能否编一个程序验证是否满足?

能否编一个程序对任意猜测的解去验证是否满足?

当然能,这有什么不确定的地方?

因为不知道猜测什么解,所以下一步不确定。

●问题是猜测部件有多大能力。

可以认为猜测解。

定义3.5:

NTM可解,<,L,>给定,任意IL,NTM总可在有限步停机,给出正确答案。

定义3.6:

时空复杂度。

L(n)={I|IL,(I)=1,|I|=n},回答是的实例长度为n的集合。

TNTM(n)=max{TNTM(I)|IL(n)}

SNTM(n)=max{SNTM(I)|IL(n)}

定义3.7:

NP类问题,TNTM(n)P(n)。

问题类。

NTM多项式时间可解的问题。

是否可以编个程序,

v[1],…,v[m]:

所有图的点

P[1]=v[1],L=0.

Fori=2Tomdostep1

Guess(v[1],x)

Ifx{P[1],…,P[i-1]}returnerror

P[i]=x;

Ifx=v[2],L=L+d(v[i-1],v[2])

Ifx=v[3],L=L+d(v[i-1],v[3])

Ifx=v[m],L=L+d(v[i-1],v[m])

Endfor

IfL≤KReturnYESelseNO.

v[1],…,v[m]:

所有图的点

P[1]=v[1],L=0.

Guess(v[1],x[2m])

Fori=2Tomdostep1

Ifx[i]{P[1],…,P[i-1]}returnerror

P[i]=x[i];

Ifx[i]=v[2],L=L+d(v[i-1],v[2])

Ifx[i]=v[3],L=L+d(v[i-1],v[3])

Ifx[i]=v[m],L=L+d(v[i-1],v[m])

Endfor

IfL≤KreturnYESelsereturnNO.

说明:

●P类,NP类,多项式时间可验证的问题类NP类。

●PNP

●定理3.1:

NP类的问题,均可用DTM在T(n)=O(2P(n))时间内求解。

存在P(n)。

●简单说明怎样证明。

因为每一步有好几个选择,用O(2P(n))可以全部枚举出来。

不让猜测部件猜了,把所有可能的解都举出来,每个都验证,因为一次验证多项式时间:

q(n),解的长度不会超过q(n),总时间复杂度不超过:

||q(n).

§3.4多项式变换与NPC类

前面的东西没法证明TSP问题不存在多项式时间复杂度。

举例子,很多人花费大量时间企图证明TSP问题不存在多项式算法,但是都没有证出来。

求解问题时想到用变换。

实际上求解问题用变换效果并不好。

但是可以用变换证明问题的计算难度。

用一个问题的语言描述另一个问题,任何一个实例都行方可。

把一个问题转换为另一个问题解决。

用1的语言描述2,若1存在多项式算法,则2也存在多项式算法。

举个例子:

 

sat,n皇后问题

x11

x12

x13

x1n

x21

x22

1

x2n

1

1

1

1

1

1

1

1

xn1

xnn

sat,团问题

Sat问题:

实例:

U={u1,u2,u3,u4,u5},C={(u1,u2,

),(u2,

u5),

u3,

),(u2,u3,u5)}

询问:

是否存在U的真值指派使C中的项均满足。

1说明别人做过n皇后问题,速度很快,就是找不出好算法来。

2说明怎样做?

变量:

x11,x12,…x1n,…xn1,…,xnn

每行只有一个取1:

{xi1,…,xin},{

},。

,{

}。

每列只有一个取1:

每个斜线只有一个取1。

项个数,不超过

,时间复杂度O(n3)

变换:

reduction

Hamilton回路可以用Sat表达:

V1

V2

V3

V4

1

x11

(1)

x12

x13

x14

2

x21

x22

x23

(1)

x24

3

x31

x32

(1)

x33

x34

4

x41

x42

x43

x44

(1)

{y12,y13,y14}

{y21,y23,y24}

{y31,y32,y34}

{y41,y42,y43}

每行一个1,每列一个1,第i行与第i+1行

(x11,x12,x13,x14),(

),…………,(

(x21,x22,x23,x24),(

),…………,(

(x31,x32,x33,x34),(

),…………,(

(x41,x42,x43,x44),(

),…………,(

(x11,x21,x31,x41),(

),…………,(

(x12,x22,x32,x42),(

),…………,(

(x13,x23,x33,x43),(

),…………,(

(x14,x24,x34,x44),(

),…………,(

有边取1,无边取0。

{y12},{y21},{y14},{y41},{

},{

},{y23},{y32},{y24},{y42},{y34},{y43}。

两点之间一定要有边。

yjk),1j,k4。

yjk),1j,k4。

yjk),1j,k4。

yjk),1j,k4。

多项式变换定义:

●1=<1,L1,1>;2=<2,L2,2>

●变换f:

1*2*,IL1,f(I)L2,1(I)=2(f(I))

●f变换可以在p(|I|=n)时间内计算完成。

则f称为由1到2的多项式规约。

若1可以多项式归约到2,则若2存在多项式算法,则1也有多项式算法。

前面的多项式规约进一步修改如下:

●1=<1,L1,1>;2=<2,L2,2>

●变换f:

1*2*,IL1,f(I)L2,

1(I)=12(f(I))=1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1