一、问题难证明(难解)的原因

1)问题是难解,只能在指数时间内找到问题的解决方案;(问题是复杂

2)问题的解法长度超过了对应输入的任意一个多项式方法;(问题规模大,语句频度

二、决策问题(decision problem)

定义:结果只回答“是”或‘否’的问题称为决策性问题;

组成部分:1)问题名称; 2)问题实例; 3)基于问题实例提出是(否)问题;

三、P问题&NP问题&NPC问题(多项式问题,非确定性多项式问题)

P问题定义:可以在多项式时间内解决的问题(可以用一个确定的多项式算法求解);

NP问题定义:存在一个非确定性多项式算法的问题(可以用一个确定算法在多项式时间内检查或验证出它们的解);

(非确定性多项式算法:算法的每一步都面临着选择,对选择的内容时不明确的且在多项式时间内完成)

特殊的:P问题是NP问题的子集,说明并不是所有的NP问题都是难解的;

NPC问题定义:在NP问题中难解的问题;

图灵规约(Turing):对于给定的两个问题A和B,如果对于求解问题A的一个算法可以作为求解问题B的算法的子程序,

则称问题A图灵规约到问题B;

Karp规约:对于给定的两个问题A和B,如果存在一个变换T,满足变换前后存在等价关系,I∈YA<=>T(I)∈YB

则称此变换T为问题A到问题B的Karp规约;

四、NPC问题(A)的证明

1) 通过NPC的定义去证明:证明对于任意一个NPC问题存在一个多项式变换T将其变换为带证明问题A;

2) 通过一个已知NPC问题(SAT问题)进行多项式变换T到带证明问题A;

步骤:证明A是NP问题; 选取一个已知的NPC问题B; 构造B到A的变换T;证明变换T是多项式变换且变换前后等价;

几种基本的NPC问题:(如下图所示,从SAT问题开始证明)

即:对于SAT和3SAT问题的区别就是对于Ci是由不同个数变量组成的析取范式(SAT为任意个数,3SAT约束为3个)

按照上述的证明步骤:

1) 对于3SAT问题,对于每一个变量进行赋值验证每一个子句Ci为真值即可,显然可以在多项式时间内完成,

故3SAT属于NP问题;

2) 选取一个已知的NPC问题,在这里我们选取SAT问题作为进行变换的基础;

3) 找出从SAT到3SAT的一个变换并证明此变换为多项式变换;

因为SAT中CI个数不唯一,在这里将其分为上述四种情况进行讨论(对应的每一种情况均满足3SAT) ,说明SAT到3SAT

存在一个变换,现在在证明此变换为多项式变换且可以在多项式时间内完成。

对于每一个子句Ci,由上述的4情况显示最多增加k-3个变量,则对于SAT的m个子句,最多增加m(k-3)个变量,

由此可以显然特征此变换为多项式变换;

先证明当SAT为真时,3SAT也为真:

(分为三种情况:前两个为真,后两个为真,中间部分的任意一个为真)

在证明当3SAT为真时SAT为真(这里采用反证法,假设SAT为假,3SAT为真推出矛盾即可)

算法分析与设计(NPC问题)相关推荐

  1. 程振波 算法设计与分析_算法分析与设计之动态规划

    动态规划同样是一种将问题分解为求解子问题的方法,不过与分治不同的是,动态规划算法的子问题不是相互独立的,而是有公共的部分,即有重叠子问题,这个时候使用分治算法,将会重复计算公共的子问题,效率很低!而用 ...

  2. 一本好的教辅,可以少走很多弯路:算法分析和设计 王晓东

    算法分析和设计 王晓东 我觉得第三版JAVA版本最好,第4版是C++版本,删减了几章. 可以配合北大屈婉玲教授的视频课程一起看 自己走了一些弯路,希望后续的可以避免以下 下载地址如下,也可以淘宝买本二 ...

  3. 非计算机专业教学改革,非计算机专业算法分析与设计教学改革论文

    非计算机专业算法分析与设计教学改革论文 [摘要]算法分析与设计不仅是计算机专业的核心课程,同时也是与计算机有关的非计算机专业的专业课.本人针对非计算机专业学生在学习过程中存在的若干问题,就教学内容.教 ...

  4. 《算法分析与设计》课程任务

    <算法分析与设计>课程任务 内容包括以下8个部分,建议将任务按以下方式分解:其中1-6的每个部分的简介.适用条件.基本思想.基本步骤.复杂度分析等由1人讲解,实例分析由1人讲解(注:至少一 ...

  5. 用c语言验证装载问题 回溯法,《算法分析与设计》期末考试复习题纲(完整版)...

    <算法分析与设计>期末复习题 一.选择题 1. 算法必须具备输入.输出和( D )等4个特性. A.可行性和安全 性 B .确定性和易读性 C.有穷性和安全 性 D .有穷性和确定性 2. ...

  6. 东师19年春计算机在线作业,东师算法分析与设计20春在线作业1【标准答案】

    算法分析与设计20春在线作业1题目 试卷总分:100  得分:100 一.单选题 (共 20 道试题,共 40 分) 1.按F5开始调试,程序便会直接运行到断点处.接下来可以逐行来运行程序,查看各个变 ...

  7. 算法分析与设计实验报告 ——二分搜索程序算法的实现

    算法分析与设计实验报告 --二分搜索程序算法的实现 实验目的及要求 1.理解分治算法的概念和基本要素: 2.理解递归的概念: 3.掌握设计有效算法的分治策略: 4.通过二分搜索技术学习分治策略设计技巧 ...

  8. 算法分析与设计实验报告——实现汽车加油问题

    算法分析与设计实验报告--实现汽车加油问题 目录: 算法分析与设计实验报告--实现汽车加油问题 一. 实验目的 二.实验要求 三. 实验原理 四. 实验过程(步骤) 五. 运行结果 六.实验分析与讨论 ...

  9. 算法分析与设计实验报告——二分搜索算法的实现

    算法分析与设计实验报告--二分搜索算法的实现 目录: 算法分析与设计实验报告--二分搜索算法的实现 一. 实验目的 二.实验要求 三. 实验原理 四. 实验过程(步骤) 五. 运行结果 六.实验分析与 ...

  10. 中北大学算法分析与设计实验报告一(BF算法)

    中北大学算法分析与设计实验报告一(BF算法) 1.实验名称 实验一 算法基础实验:数理基础与串匹配程序设计 2.实验目的 以字符串匹配问题为例,结合C等编程语言和链表.堆.栈等数据结构知识,基于BF算 ...

最新文章

  1. 查找xml文件中某接点的值
  2. restTemplate 传递map
  3. 如何把一个软件嵌入另一个软件_自动化正在成为一个“软件”行业
  4. jquery在选择器中使用变量及innerText问题(转载)
  5. React Portals的使用
  6. 专题:数据自治开放(上)
  7. oracle 把逗号分隔符,oracle 分逗号分隔字符串函数
  8. uc的剪切板能关掉吗_创意手工 | 一张纸折出专属礼品袋,漂亮简单还实用!你爱了吗?!...
  9. easyconnect无法在mac上使用_Mac上Python无法输入中文- 2017年
  10. NPM私有服务器搭建方法——sinopia
  11. 机器学习实战8-Apriori算法
  12. JedisCluster设置密码
  13. 苹果设备plist编辑器plist editor Pro V2.1绿色版
  14. 电子电路设计——multisum中快捷设置555定时器
  15. 基于java的仓库管理系统_基于Java的仓库管理系统.doc
  16. java 实现站内信_群发站内信实现
  17. 达人评测 r7 7730U和R5 7530U选哪个好 锐龙r77730U和R57530U对比
  18. 阿里,B站小伙伴刚刚分享的大数据开发运维学习规划,抓紧收藏
  19. 百度浏览器的隐私安全问题分析
  20. 毁灭行星,微信小游戏开发

热门文章

  1. 一款漂亮的Bootstrap模板INSPINIA_adminV2.5 ---- 20161102
  2. 寻路算法 --- A星寻路算法
  3. 传统行业中CPK的计算方法
  4. ubuntu安装openpose
  5. java基础题及答案
  6. JavaScript实现随机抽奖功能
  7. ms10_002(极光漏洞)渗透步骤——MSF搭建钓鱼网站
  8. 歌谷服务套件gms_谷歌gms框架安装器下载-安卓9谷歌服务框架app安装-游戏大玩家...
  9. Linux内存映射实现
  10. php中10的几次方,C++中10的几次方怎么表示