算法分析与设计-2016-第3讲.pptVIP

  • 9
  • 0
  • 约8.41千字
  • 约 37页
  • 2016-12-26 发布于重庆
  • 举报
x11 x12 x13 x14 x21 x22 x23 x24 x31 x32 x33 x34 x41 x42 x43 x44 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 用0/1方阵表示表示哈密顿回路 v1, v2, v3, v4 (1){y12}, {y21}, {y14}, {y41}, {y23}, {y32}, {y24},{y42},{y34},{y43} 用yij表示边(i, j)是否存在 y11 y12 y13 y14 y21 y22 y23 y24 y31 y32 y33 y34 y41 y42 y43 y44 (1) xi1,xi2,xi3,xi4中有且只有一个1 {xi1,xi2,xi3,xi4} ,(k?j) (2) x1j,x2j,x3j,x4j中有且只有一个1 {x1j,x2j,x3j,x4j} ,(k?l) x11 x12 x13 x14 x21 x22 x23 x24 x31 x32 x33 x34 x41 x42 x43 x44 (3)第一个顶点vj,第二个顶点vk,则vj和vk之间必须有一条边 (4)第2个顶点vj,第3个顶点vk,则vj和vk之间必须有一条边 (5)第3个顶点vj,第4个顶点vk,则vj和vk之间必须有一条边 (6)第4个顶点vj,第1个顶点vk,则vj和vk之间必须有一条边 x11 x12 x13 x14 x21 x22 x23 x24 x31 x32 x33 x34 x41 x42 x43 x44 多项式变换定义: 希望将?1变为?2,若?2多项式时间可解,则?1也多项式时间可解。 ?1=?1,L1,?1;?2=?2,L2,?2 变换f:?1*??2*,I?L1,f(I)?L2,?1(I)=?2(f(I)) f变换可以在p(|I|=n)时间内计算完成。 则f称为由?1到?2的多项式归约。 前面定义NP问题的时间复杂度时, 只关心那些回答是的实例的时间复杂度。 若?1可以多项式归约到?2,则若?2存在多项式算法, 则?1也有多项式算法。 前面的多项式规约进一步修改如下: ?1=?1,L1,?1;?2=?2,L2,?2 ?1=?1,L1,?1;?2=?2,L2,?2 变换f:?1*??2*,I?L1,f(I)?L2, ?1(I)=1???2(f(I))=1 将问题?1转换为?2问题,则如果问题?2有多项式算法,则问题?1有多项式算法。 算法分析与设计 第3讲-2016 山东大学 上次内容: (1)5个算法设计技术,分而治之,贪心法,回溯搜索(?,?-删除,分支定界),动态规划,局部搜索 (2)局部搜索设计近似算法,现在也有了。 (3)说明什么是好算法,什么是坏算法。 多项式时间算法是好算法,指数时间算法叫坏算法。 (4)许多问题设计不出多项式时间求解算法,也有很多问题能找到多项式算法,以前的算法绝大多数都是多项式时间的。告诉人们正面的东西。 (5)企图把问题分类,能否分为两类,一类可以设计多项式时间算法,另一类不能设计多项式时间算法。 前人建立了一种模型,说明问题很难,怎样说明。也是多年思考认识的结果。 应用背景:硬件测试,软件测试,知识库表达,推理 SAT问题一般描述: 实例:布尔变量集合:U={u1,u2,…,un},项集合C={c1, c2, …, cm}, ck={yk1,yk2,…,ykt}, ykj?{u1,u2,…,un, }. 询问:是否存在U的真值指派,使c1?c2?…?cm=1,就是为真(T), ck=yk1?yk2?…?ykt 在人工智能的搜索求解中,推理规则均采用合取范式表示。 芯片测试,测试条件都表示为逻辑表达式。 Satisfiability Problem 不需要求出解来,只需要判定是或否。 TSP问题:货郎问题 实例:城市集合:C = {c1,c2,…,cm}, d(ci, cj) ? Z+,ci, cj?C,正整数K. 询问:是否存在城市排列? c?(1),c?(2),…,c?(m)?,使 Hamilton回路问题: 实例:无向简单图G = (V, E),|V| = n。 询问:是否存在V的顶点排列v?(1), v?(2), …, v?(n),使(v?(i),v?(i+1))?E(G), i=1,…,n,v?(n+1)=v?(1)。 上述三个问题均是询问解的存在性,判断是否具有满足条件的解。 这三个问题都找不到多项式时间算法,但都能找到指数时间算法。 什么是多项式时间?什么是指数时间? 输入长度:问题实例的规模。

文档评论(0)

1亿VIP精品文档

相关文档