科学网

 找回密码
  注册

tag 标签: 密码锁

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

关于“P vs NP”的讨论(3)
liuyu2205 2017-12-16 19:30
我们继续和大家分享这次关于P vs NP讨论的第三部分,希望对此议题感兴趣的网友能对其中所蕴含的认知方面的问题有所思考。 我们的NP理论工作起于对流行NP定义的质疑和解读,在此基础上我们认为计算复杂性理论的“P问题”实际上就是可计算性理论的“可计算性问题(确定性问题)”,由此相对于P我们来认知NP,其定义自然为“不确定性问题(Nondeterministic Problem )”。 如此针对Y君提出的“密码锁”问题,我们的观点也就与流行观点截然不同了,体现在讨论中就是与Y君观点的分歧,。。。 ******* 黄岱永: 柳渝认为(这里所有的说法仅针对这个特定的密码问题)只要解的存在是可判定的,图灵机可求(精确)解的,那么可推演出P=NP。你无法证明这是错误的。所以有俗语说:天下没有绝对不可破译的密码(Cook有篇短文“The importance of the P versus NP question”其中有P vs NP与密码学的关系说明)。 正如Y君前所述,除了简单粗暴的穷举法外,我们也不能排除其它多项式时间内的破译密码算法。 实际上,如cook也意识到“一般来说,证明了诸如RSA之类的密码协议的安全性或DES比证明P ≠NP困难得多。”(In general, proving the security of cryptographic protocols such as RSA or DES is much harder than proving P ≠NP.)不仅基于离散量运算的密码学受到“P vs NP”问题的制约,就是连续量运算的密码学也受到实数环上的“P vs NP”问题的影响和制约。 正如图灵二战时期破译德军的密码,首先图灵判断德军的密码是存在的,因此他相信P=NP的(否则他不会徒劳而动的),也许一天前,这貌似是个不可能问题,但一天后,就已经解决。所以就此问题选择P问题不是错误的选择!(注意:我没说这是正确的选择,因为,真有可能破译不出来。) 至于柳渝定义的NP问题,我觉得还是比较清晰的,连解的存在都不可判定,那么显然没有求(精确)解的必然前提了,转而其次求图灵机近似解。从这里看来,密码问题显然不是柳渝定义下的NP问题。(但我觉得我还没有完全理解cook的思想,特别是其“hence bounded proof existence is in NP”有哪些内涵和外延 ?) G君: 看来从严格的数学公理也好,定理也好很难判断某一个组合问题的可求解性,不如反过来从实际已经求解成功的案例看,哪种组合可以求解,哪种组合必须要穷举法才能解。大规模集成电路的最短配线长,最小面积等的组合最佳化解的成功,用到了模块与模块之间的连结关系,通过由于存在着的连结关系而产生的概率信息,模块之间连结关系最密切的尽可能放在一起的规则,以及模块在相反的两个方向的对抗,从而获得最佳解,AlphaGo实际上也是利用了围棋的规则,人为的用程序进行的规则的堆积,再加上在出某一个棋子时的胜算概率,这个概率信息实际上也是由围棋规则产生的,以及双方的对抗,这个对抗的条件也是用程序进行规则的堆积的完善性,因此在组合问题上,各个要素之间是否有相关性是判断是否可进行最佳化解的判据。 柳渝: 黄岱永,你说 “只要解的存在是可判定的,图灵机可求(精确)解的,那么可推演出P=NP”,这样说的前提是认可NP的流行定义:“NP是NDTM多项式时间可求解”;如果不认可,P/=NP。 现在大家已经清楚关于NP的二种观点: 1,当前流行定义: -P是TM多项式时间可求解 -NP是NDTM多项式时间可求解;NP是TM多项式时间可验证 2,我们的定义: -P,确定性问题(等价于:解的存在可判定,图灵机可求(精确)解) -NP,不确定性问题(等价于:解的存在不可判定,图灵机可求(近似)解) 具体到密码锁,这二种观点导致: -密码锁是NP,如果能确定密码锁只有指数时间(O(2^N))的“穷举法”求解; -密码锁是P,因为密码锁已经知道密码存在了,即“解的存在是可判定”的,图灵机可(确定性)求解。 大家会反驳我的“密码锁是P”的观点:这样一来岂不是说,所有的NP问题(如3SAT问题)都成了P,因为所有的NP问题都可“穷举法”求解。 实际上,求解密码锁与求解NP如3SAT的“穷举法”意义是不同的,表面上看都是“穷举法”,但是密码锁的搜索空间是O(2^N),具有“线性结构”,使得机器的能力可以匹配问题规模的线性增长;而3SAT的搜索空间是比O(2^N)复杂得多,是“非线性增长”,机器的能力无法匹配问题规模的非线性增长,只能近似求解。 正是密码锁的“线性结构”体现了P的本质:“解的存在可判定”,而3SAT的“非线性结构“体现了NP的本质:“解的存在不可判定”。 我用一个例子图式说明密码锁与SAT的搜索空间(假设:密码是011,而3SAT公式的解也是011): 所以,我们不同意NP的二个流行定义,根本原因就是NDTM的本质是TM(图灵机): -“Every nondeterministic Turing machine has an equivalent deterministic Turing machine”-Sipser书中Theorem 3.16 NP的二个流行定义都让NP的本质“不确定性”消失了。 Y君: 你的想法基本讲清楚了。但是无法说服我。我想也无助于解决千禧年问题3。至于你是否能够说服学术界接受你的定义,我不知道,但是不看好。因为,你说的这些事情,大家都知道了几十年了。你并没有提供新的思路新的工具,完全仅是在定义上纠缠。可以这样看,即使学术界全面采用你的定义,我们对这些问题,是否有了进步?我看没有。 这里最关键的问题就是现在流行的NP表述:如果容易验证,是否容易求解?可以这样讲,为什么表述会逐渐演变成这个样子,其实正是因为这个样子反应了最本质的思想。这个问题成了千禧年问题3,就是科学家对此的反应。 你其实仅是在现有的NP里面再做分类:把那些不能够确知有解的再分出来。好啊。但是,这样分后,对我们有什么特别的好处呢?至少你还讲不清楚吧? 即使如你所愿,定义中,把不确定性凸显出来,又能怎样? 但是我很感谢你带来的讨论。虽然我不同意结论,但是讨论过程,以及过程中呈现出来的思路,乃至思绪苗头,都非常有趣,有帮助。我认为我收获很大。由衷感谢! 话说到这里,遵循这个原则,思绪是更有趣的,我就来提问。可能有重要作用。 你讲: -但是密码锁的搜索空间是O(2^N),具有“线性结构”,使得机器的能力可以匹配问题规模的线性增长;正是密码锁的“线性结构”体现了P的本质:“解的存在可判定”。 我想抓住这个问题讨论深入。请对这些话,做最详尽的解释。什么是线性结构?怎么增长机器能力?等等。我想你在这里面肯定思考过。但是从来没有看见你仔细写出来。 柳渝: 我们的讨论非常不容易,需要不断的学习和思考,所以不能着急。这里,我接着“密码锁”提一个问题: 问题:已知一个长度为m的数组A随机放置从0到m-1的整数,现给定一个0与m-1之间的整数a,问a在A中的位置。比如:A =5,A =1,A =3,A =0,A =4,A =6,A =7,A =2, 欲找整数6在A中位置。 既然m个整数是随机放置在A中的,也就是说,其放置没有任何规律,那么唯一的算法就是“穷举法”:枚举数组的元素,与a比较,最多比较m次,即可判定a在A中的位置。 比如,整数6在A中位置是i=5,即A =6。 现在问此穷举法的“算法(时间)复杂度”是什么? Y君: 现在来说这个问题。这是很有名的搜索,叫什么名呢?我忘记了。其复杂度是log m。这没有问题,就是查查书就知道的。但是这个问题可以连接到密码锁吗?还联系不上。因为,放进数组,就已经给出了重大信息。而这个信息是密码锁不具备的。 柳渝: 这里因为没有任何关于数组里m个元素的排列信息,要找一个元素,就只能穷举搜索:从第一元素开始比较,最多比较m次,故算法复杂度是O(m)。 此穷举搜索的原理与你的密码锁开锁应该是一致的,你同意吗? 这是有3个键的密码锁,假设密码是011,寻找密码开锁的过程示意图。你看有没有问题? Y君: 没有问题。你已经用了最平凡的穷举。就是说,你认为对N长度的密码,搜索的难度是O(2^N)。这是我们一直在说的。 柳渝: 上面的穷举法的算法复杂度是O(m),对应的问题是简单的数组搜索问题,一个公认的且显而易见的P问题。 现在令数组的长度m=2^n,数组里的整数用二进制表达,比如上面的数组A放置2^3个二进制整数:A =101,A =001,A =101,A =000,A =100,A =110,A =111,A =010 穷举法的算法复杂度从O(m)变成了O(2^n),那么是否就说原问题因此也就从P变成了NP?由此得出密码锁是NP? 数组搜索问题从十进制变成二进制,参照系变了,计时的单位也变了,但问题本质却没变。就好比做一件事用了1小时,也可说用了60秒,但是不能说用60秒做的这件事,就变成了一个性质完全不同的事。 黄岱永: 涉及具体的算法时,相关信息在”算法与复杂性“的有关专著里基本都有详细的讨论。 Y君: 这个事情我就再说一次。 我们是从N位密码锁开始的。因此我们关心的是操作步数和N的关系。如N为3,平均要查找4次,N为4,平均查找8次,类推下去,如果N为100,平均查找(2^100)/2。对吗?那么,你怎么称呼这个规律呢? 你考虑一个M维数组的搜索,其难度是O(M),这个肯定。没有任何争论。但是当M自身是幂呢?而且我们关心的是这个难度随指数的规律呢? 柳渝: 记住我们的主题是:判断密码锁是P还是NP。 我前述分析是想表明,用穷举法的O(2^n)不能判断密码锁是P还是NP,反而会导致矛盾的结论。 因为这里涉及到对算法的“时间复杂度”的理解。在算法理论中,“时间复杂度”不是指算法求解问题的实际计算时间,而是指算法的计算能力对问题规模n的增长是否胜任,即“渐进时间复杂度O(f(n))”。 这里的关键是如何理解“问题规模n”? 算法的“时间复杂度”针对二个层次的问题: 1,具体问题,比如:密码锁问题(如@岱永指出的) 2,P类或者NP类问题,比如:密码锁是P还是NP? 就具体问题而言,“时间复杂度”是相对于同一问题来比较不同的算法的效率,同一问题的结构相同,所以只要设定一个表达“问题规模”的“数量”n,就可以在此基础上比较不同的算法。 比如:于密码锁,设n是锁位数,可以问:是否存在更有效的算法,其复杂度是O(n^k)?其实还可以设m是搜索空间,可以问:是否存在比O(m)更有效的算法? 也就是说,针对具体问题的“时间复杂度”,仅仅是用数学意义上的“数量”n就可以表达“问题规模”,来比较求解同一问题的不同的具体算法。 但是就P或者NP而言,“时间复杂度”是相对于P与NP来比较二者的不同。由于具体问题有千差万别的结构,仅仅“数量”n不足以表达“问题规模”,而必须将问题的“结构”纳入“问题规模”的表达。 换句话说,针对P或者NP的“时间复杂度”,“问题规模”必须要反映问题在结构与数量的双重意义。 所以,我们分析密码锁:密码锁的n个锁位之间相互独立,不存在约束关系,故导致问题规模线性增长,而图灵机的计算能力也是线性增长,故我们认为密码锁是P问题。 Y君: 那么请给一个你对什么是P的严格定义。 柳渝: 图灵机可计算的(指可计算性),即可判定的、多项式时间复杂度(指问题规模线性增长)、问题具有线性结构,。。。这些都是一致性的表达。 Y君: 请给出精确严格定义。 黄岱永: 在上述我所说的三类定义下的第二类用法里,我觉得柳渝进一步说明了密码锁是P问题的问题,这个是很清晰的。特别强调的是“问题的线性规模的增长与图灵机 计算能力的线性增加的”的对应性,这个很重要。 实际上,从具体的算法来看,可以更加简化,因为密码锁是2的n次方个不相等的n位数的集合,可按大小排序,所以问题可转变为“求n个数中第k大数”(k不大于 n)的问题,用BFPTR算法,令密码数是数集中的第K大数即可,这样可以使算法的时间复杂度由最坏的O(n^2)变为O(n),因此密码锁是一个P问题。 所以问题不是出自在算法上的,而是概念混乱导致的在P,NP以及NDTM,DTM的意义和层次上的歧义所致。 柳渝: Y君,P问题是图灵机可确定性求解的问题,在可计算性理论中由“可计算性”定义,在计算复杂性理论中由“多项式时间”(polynomial time,简记为P)定义。 黄岱永 你说的“求n个数中第k大数”(k不大于 n)的问题,好像与密码锁有别,因为关于密码锁的密码是没给出任何信息的,只能穷举或猜测。Y君,你同意吗? Y君: 柳渝,你没有回答我的问题。我没有看到你的精确定义。如果我们没有一个明确的对象,就完全是在各说各话,没有有意义的交流。 我暂且不说任何其他的,等你的精确定义后,我们再说。 柳渝: Y君, “可计算性”的数学意义是“递归函数”。“可计算性”在可计算性理论中严格定义了的。 Y君: 你没有回答我的问题。 黄岱永: 柳渝, 1:密码锁的所有密码的集合是不是可以归结为2的n次方个n位数?2:由于每一个数是不等的,是不是可以排序?3:密码是不是上述集合中唯一的一个数?4:我们可不可以假设那个密码数在密码数集合里按序排在第k位?如果对以上四个问题的回答都是yes,那么就能用BFTPR算法。实际上是说,对于任一个有界有序数列集,求出其中任何一个(元)数的“中位数”算法的算法复杂度可以是O(n)。 我从我的观点来帮Y君回答,分三种情况讨论。特别地在定义一下,密码锁可以是NP问题。例如,A是上海人,我们说,A是中国人没错吧?这是P,NP的传统定义中即对立又包含的矛盾造成的。 柳渝: Y君,维基上关于P定义如下(https://fr.wikipedia.org/wiki/P_(complexité)): Par définition, un problème de décision est dans P s'il peut être décidé par une machine de Turing déterministe en temps polynomial par rapport à la taille de l'entrée. On dit que le problème peut être décidé en temps polynomial. 这是我们认可的P定义。 柳渝: 黄岱永,Y君提出的密码锁问题是:不给开锁人任何信息,只知道有n个锁位,其值取0/1。 在此前提下,我来回答你的问题: 1:密码锁的所有密码的集合是不是可以归结为2的n次方个n位数? 是。 2:由于每一个数是不等的,是不是可以排序? 是。 3:密码是不是上述集合中唯一的一个数? 是。 4:我们可不可以假设那个密码数在密码数集合里按序排在第k位? 不能,因为你不知道k(k≤2^n)是什么,而这正是需要寻找的。 黄岱永: 实际都是在“猜”,中位数算法是两边同时向中间扫描的,猜到k位的时间相对较少。 柳渝: 我用Java编了一个模拟“穷举法”开密码锁的程序,程序非常简单,大家可以分析一下此程序复杂度。 public class Crypto { public static void main(String ); else { System.out.println(Number of bits must be provided as argument); return; } // print 2^n integers m = (int) Math.pow(2,n); System.out.println(Search a password in +m+ binarys); for (i=0; im; i++) { System.out.print(Integer.toBinaryString(i)+ ); } System.out.println(); // set a password x in x=(int)(Math.random()*m); // print this password System.out.println(); System.out.println(Set a password : ); System.out.println(Binary : + Integer.toBinaryString(x)); // serach this password i=0; stop = false; while (im stop!=true) { if (i==x) stop = true; else i++; } // print the found password System.out.println(); System.out.println(Find the password : ); System.out.println(Binary : + Integer.toBinaryString(i)); } } Y君: 我现在认为,关键在于密码锁这样的问题:搜索空间是2^N这样大,是否只能是穷举搜索?如果可以证明,基本上就证明了P不等于NP。如果能够证明总是能找到多项式搜索,基本上就证明了P等于NP。因此对这个问题的理解,就不仅仅是起认知模型的作用,而是最直接关联到核心。 说到多项式,2^N是N的指数函数,当然不是多项式。但是,如果m=2^N,那么m自然是m的多项式。但是这和定义已经违背了。P的定义中的多项式是定义为问题的尺度的多项式。密码锁的尺度是N,而不是2^N。 这些是非常初等的。在这些上面扯,实在没有任何意义。这是我感到讨论无法进行的原因。
个人分类: 不确定性问题和算法讨论|3274 次阅读|0 个评论
关于“P vs NP”的讨论(2)
liuyu2205 2017-12-9 12:23
我与Y君围绕着“P vs NP”继续讨论,逐渐将讨论的焦点集中在由NDTM定义的NP上,Y君提出一个“密码锁问题”,大家通过判断“密码锁”是P还是NP来考察NP的定义。 继续分享我们的部分对话: 一,对话(2017/11/22) Y君: 看了你的最新博文。感到你是在这个地方有问题: 你说:追本溯源,NP欲指“与P相对的NP”,即“P指易解的问题,而NP指难解的问题”,这样的“相对性(P versus NP)”决定了NP概念的定义。 我认为这里有重大理解的偏差。固然,NP是难解的问题。但是这个难解需要严格证明。很多问题,看起来难解,但是未必真的难解,很可能在若干时间后,就成为不难解的了。 P vs NP困难,不在于理解,而在于,我给你一个问题,的确看起来非常难解,是NP,但是我们不能确定它是否真是NP,它很可能是P。 这样的看起来是NP但是P的问题很多,看起来难,到最后,并不难。 那么,是否可以有一个问题,看起来难,而且的确难?你可以证明对这个问题没有容易的解。如果你找到了这个问题,而且你提供了严格的数学证明。但是必须要有数学证明。否则无论你怎样解释,都没有用。 柳渝: “是否可以有一个问题,看起来难,而且的确难?你可以证明对这个问题没有容易的解。如果你找到了这个问题,而且你提供了严格的数学证明”,如我所说,图灵他们已经证明了。 “P vs NP”实际上隐含着非常纠缠的层次: 1,是否存在一个“能行的”形式化方法(P算法)判断任何一个具体问题是NP问题还是P问题? 这实际上就是“判定问题(Entscheidungsproblem)”,图灵已经对此给出了否定性的回答:“判定问题”是“不可判定的”,其真正意义是说:不存在能判断任何一个问题是P问题还是NP问题的形式化方法。 图灵是通过设计一个特殊问题,然后无法构造出P算法,来否定性回答“判定问题”的。 2,是否存在一个具体问题没有多项式时间复杂度算法(P算法)求解? (1)图灵设计的那个特殊问题; (2)我跟你说起的“丢番图问题”,就是一个看起来难而且的确难,但不存在P算法的问题(丢番图问题的解决)。 二,对话(2017/11/26) 柳渝: 我先说明一点,我们的NP理论工作在讨论NP时首先把NP与P分开,这只是认知NP的第一步,并不是就肯定NP/=P,完全有可能待进一步认知后,发现NP=P。但是若一开始就用P的属性(多项式时间可验证)来定义NP,NP就与P混在一起了,根本谈不上进一步认知NP,也就是说,在认知的开始就已经肯定了NP与P没有区别(NP=P)! Y君: 你说:“我先说明一点,我们的NP理论工作在讨论NP时首先把NP与P分开,并不是就肯定NP/=P,这只是认知NP的第一步”,这个完全没有问题。我们没有必要采用现在的通常定义,即P时间可以验证,而采用这个定义:用P时间,在NDTM上找到解。 这个定义是当初Cook的定义。但是,问题仍然存在,并不因为我们改变定义而消失。问题是:是否存在这样一个问题W,我们知道可以用P时间,NDTM可以找到解,但是我们能证明,不能用P时间,TM找到解。 我们必须要提出W问题,而且严格证明不能用P时间,TM能找到解。我关心:1,你是否明确了这个问题W?2,你是否有严格证明,而不是说明? 这个问题延续了几十年,学界都不能解决,我认为,不是那种可以靠重新解释就能解决的问题。必须要有新工具,新思想。 我看了你的文字,感到你的一个基本想法很对,那就是在这个领域中去找W:问题的答案需要反馈。但是这仅是思路,而不是直接的答案。答案还需要严格证明。 三,对话(2017/11/27) 柳渝: 你说“用P时间,在NDTM上找到解”,但NDTM根本就是一笔糊涂账! 读读我们讲这个NDTM的新博文: 英语博文:NDTM的两个来源初析-NDTM的歧义性 -作为一种思想实验,不妨说“NP是NDTM(神喻机)在多项式时间内可以判定解的存在的问题”,但这只是借此表达“NP是TM在多项式时间内不可以判定解的存在的问题”,而不是“NP是NDTM(TM)在多项式时间内可以判定解的存在的问题”!换句话说,NP定义中的NDTM出现了歧义性。 你说“我们必须要提出W问题,而且严格证明不能用P时间,TM能找到解。”这个问题就是“丢番图问题”,可是计算机工作者从来没有深入研究此问题,而把它留给了数学家。 “这个问题延续了几十年,这个学界都不能解决,我认为,不是那种可以靠重新解释就能解决的问题。必须要有新工具,新思想。”这个“新工具,新思想”,就是彻底清算现有理论的混乱,清理好了,问题自然就解决了,。。。 Y君: 我不认为会那么简单。如果真是仅靠梳理思路,就能解决这样的问题,那才是超过神谕的事情。不过,我们继续仔细谈。 或者这样讲,如果按照你的思路做了,大家也都认同你了,是否可以对按照现在的流行定义理解的P vs NP有帮助?即,帮助找到一个问题W,它可以在P之内验证但是确定不能在P之内解。这才是科学社区关心的。你的梳理应该有助于此才好。 柳渝: 这个问题W就是“丢番图问题”,但需要结合图灵的“判定问题”的工作。 你看看Stackexchange 上关于这个问题的讨论( 关于“丢番图方程的两难问题”的英语讨论(1) ),就可以感觉出问题有多么严重。一般人们(包括你和Stackexchange 上提问题的人)都认为丢番图问题是NP,且与3-sat等价,但是按现有理论看,丢番图问题与NP一点关系都没有! Y君: 我以为自圆其说的理论应该是有严格定义的,然后再在其基础上,仔细讨论。现在你批评了很多,但是你应该拿出你的严格定义来。我目前还没有看到,对吗? 然后我们看你的定义和现在流行的定义的差别和联系。现在你的这些表述,在我看来很糊涂和含混。我想,对我如此,对其他人恐怕更甚。 柳渝: 我们的理论,或者说图灵那些前辈的理论(只是他那个年代还没提出NP这个术语)就是:NP就是“不可判定问题”,即NP是TM多项式时间不可判定,也即不可(精确)求解而只能近似求解的问题。 Y君: 我不知道是否说清楚了。你的定义没有问题。但是1,你的证明要随着你的定义展开。我没有看到。2,你的定义对大家关心的问题是否有帮助?你说了很多,但是我认为没有帮助。如果你认为把几十年的努力全部否定叫做帮助,那我也不能说什么了。现在的这个P vs NP是有价值的问题。你不能否定。 是否可以这样表述:一个问题W,我有一个神谕机,可以在多项式时间内,解开W,是否一定有一个TM,可以在多项式时间内,也能解开W。 柳渝: 你以后会慢慢明白我,我们並没有否定P vs NP的意义,也没有否定计算复杂性领域中的实际成果,但我们希望这些工作建立在正确的理论基础上,並为人机伦理关系理论奠定基础。 Y君: 现在我们来看这样的一个问题:我从N维布尔向量开始,前行K步,每一步都是将该步的向量变成下一步的向量,但是每一步都有两种选择。只有每一步都对了,我才能得到正确的答案。神谕机就是非常好的描述每一步都对了这个事情。那么我问,当我有一个神谕机时,我是否可以找到一个不用神谕机,而且可以在N的多项式时间内也找到正确答案? 这样一个问题,有没有错?是否清晰?有没有其他问题使得含混和模糊?都是把该步的向量变成下一步的向量。 四,对话(2017/11/28) 柳渝: 你说的是一般对NDTM的定义,所谓的“多选择”,这又是一个让人混淆的概念。 Y君: 请就问题论之。我说的那个W,是否定义清晰? 柳渝: 实际上无法是P问题还是NP问题在求解过程中都面临着“多选择”,比如求解“从s到t二点之间最短路径”的dijstra算法,在未到达t结点时,计算必须保留不同的选择。 你的那个W定义清楚,但是错误的。就像流行的多项式可验证定义,很清楚,但是错误的。 Y君: 请讲为什么是错的。 柳渝: 先分析你的表述1:一个问题W,我有一个神谕机,可以在多项式时间内,解开W,是否一定有一个TM,可以在多项式时间内,也能解开W。 记: A:一个问题W,我有一个神谕机,可以在多项式时间内,解开W。 B:有一个TM,可以在多项式时间内,也能解开W。 现在你问:if A, then B? 实际上,你是问:能否从A推导出B,即(A-B)? 分析: 1,A中的神谕机是一个“黑箱”,此“黑箱”没有给出关于问题w是P还是NP的任何信息,换句话说,“黑箱”不能在A与B之间建立起任何联系,故A-B作为命题不成立。 2,A中的神谕机是一个假设,更不能作为推理的前提使用:A=true,问B=true? 所以从逻辑推理的角度,你提出的表述1没有成立的理由。 Y君: 对的,我认为这个表述是对的:一个问题W,我有一个神谕机,可以在多项式时间内,解开W,是否一定有一个TM,可以在多项式时间内,也能解开W? 但是你这句话我认为不对:实际上,你是问:能否从A 推导 出B,即(A-B)? 为什么呢?因为我的问题并不是:如A成立,是否一定B成立?而是,如果对W有一个比较困难的解,是否有容易的解?这个区别很明确。 另外,我想明确表示,这个问题W,其实就是你多次说过的那类问题,即需要反馈结果的问题。因此,神谕机的存在,仅说明这种需要反馈。其实,所谓的神谕,其实就是穷举的结果,即如果我做过了穷举,我自然有了神谕。 这样有问题吗?如果没有,那么神谕就不是黑箱,而是说明一种确定的状况,即我可以穷举求解。 因此,表述也可以这样:一个问题W,我在预先穷举之后,可以在多项式时间内,解开W,是否一定有一个TM(即不需要预先穷举),可以在多项式时间内,也能解开W? 其实这个表述也不够好,我来再改进一下:一个问题W,我在预先穷举之后,可以在多项式时间内,解开W,进而我问,对这样的问题,我是否可以改进,使得不需要预先穷举,就可以在多项式时间内,也能解开W? 那么,如果说,对任何问题一定可以改进,就是NP=P。如果说,有某个问题,一定做不到这种改进,就是NP/=P。 我认为,虽然讲法不同,但是现行的NP定义,就是这样的。在我看来,并没有不合理处。 五,对话(2017/11/29) Y君: 我们再说一个更简单的问题W:假设我有一个密码锁,上面有N个键,每个键可选0或1,如果我有密码,我解开这个锁需要N步,这个密码就是神谕。所以,有了神谕,打开锁的复杂度是多项式。我问,如果没有密码,我是否还是可以多项式时间内打开这把锁? 这样的问题,是否就是P vs NP? 柳渝: 我在考虑你的密码锁。 知道“有N个键且每个键可选0或1的密码锁”就是P,因为可穷举搜索,你能有多长的位数,图灵机就会有多大的空间搜索能力,这就是最简单的在一维数组中搜索某种元素的最简单的P算法! Y君: 你说,““穷举法”不过是一个一维数组简单的搜索而己,是P算法,与NP的本质没有半点关系“。请解释,我不懂你说的。请参照我上面的问题。
个人分类: 不确定性问题和算法讨论|3858 次阅读|0 个评论
[转载]行李箱密码锁忘记破译方法
热度 1 ChinaAbel 2013-6-19 15:50
1.那个转的纽 下面有个凹进去的地方 三个都找到 记下数字 然后按照那个数字加0-9(都试一圈吧 顶多试10次)就行了 转的时候慢点 别让那个凹的地方错位了 2.如果您的密码忘记是了是无法打开的。解决的方法是所有数字下面都有窍门的。其实每一个数字转盘下面都有一个小小的缺口,可以在灯光下或者用手电筒照就可以找出来。请大家把他们找到所有的缺口。方向偏一致。然后就是看上面的数字。例如,如果这个缺口上面的数字就是三个2,密码呢就是000。大家是不是很奇怪怎么就知道是000呢。其实诀窍就是缺口上面的数字。无论上面是什么数字可以使用 【按上面的数字【加减五、或者加八减二、或者加三减七】缝二或八就使用加八减二。碰到五就使用加减五,碰到三或者七就使用加三减七。无论一个数字你加也好减也好答案是不变的比如我的三个222使用加八减二就可以调整答案是000】方法是需要灵活运用的。 3.从密码锁侧面缝隙可以看到码轮有个凹下去的地方,只要在凹下去的地方所对应数加一个5(大于9时可以用余数)就是你的密码了 4.将密码尽力向开关可拉动的反方向推,打开手电照缝隙,转动密码盘,观察之下的转轴凹槽。 发现凹槽后,记录凹槽所对数字,三个密码盘逐一记录数字。 得到三个数字,将数字逐位处理:小于 5 的加 5,大于 5 的减 5,即得到密码。 例如:观察凹槽得到911,则密码为466。 9-5=4,1+5=6,1+5=6。
14446 次阅读|2 个评论
乘飞机从昆明到或广州:谁动了我托运行李箱的密码
热度 2 tropicalfern 2012-9-1 23:52
昨天(2012年8月31日)乘南航航班CZ3408,从昆明回广州。 记得昨天14:00的时候,我往行李箱里塞了最后一样东西,拉上拉链,把两条靠拢的拉链柄嵌入密码锁孔,随手拨动密码,算是把行李箱锁上了,然后拖了行李箱上了出租车,直奔昆明长水机场。 约15:00在昆明机场办理行李托运,17:00登机,19:50到广州,20:00取回托运行李,21:00到家。 回到家里的第一件事是开行李箱,可是行李箱上的密码锁怎么也打不开。是行李箱的密码锁坏了,还是有人开了我的锁、改了密码、又给锁上了? 话说有人能打开我的行李箱的密码锁,那是轻而易举的事。因为这是一个新的箱子,三位数的密码设置为000,买回来后我偷懒(也压根没有想到会有人对我的行李箱有兴趣),没有修改这一原始密码。 当晚无论如何也打不开行李箱的密码锁,更多的还是怀疑密码锁经过飞机的折腾,已经坏掉了。毕竟当代中国的东西,水货太多,虽然我的这个行李箱好像也并不是一目了然的山寨货,它终究也花费了我300大洋。情急之下,只好忍痛废了行李箱的拉链头,让拉链柄留在锁孔里,这样可以打开行李箱了。 不甘心一个崭新行李箱的如此厄运,今天午饭后,来了倔劲,我要试试所有可能的密码,确定到底是密码锁坏了还是真的有人动了手脚。先保持百位数和十位数为0,转动个位数从0到9;再保持百万数是0,十位数改动到1,把个位数从0到9再来一遍。。。。。。如此转动到312的时候,密码锁应声而开——NND,机场有人开了我的密码锁、改动了密码、又恶毒地锁上! 中国之乱,无奇不有! 如此看来,开我行李箱密码锁的只有特定的三群人:昆明长水机场办理CZ3408航班行李托运的工作人员、昆明长水机场负责CZ3408行李上飞机的搬运工人、广州白云机场负责CZ3408行李下飞机的搬运工人。 你们这三群人的作案动机是什么?是工作人员对我不良情绪的报复(他们罚了我57元——3kg的超重行李托运费,我只是一言不发地交了钱并无任何语言上的抱怨,表情上可能表现不爽而已)?难不成这帮搬运的家伙真以为我这个特殊的新行李箱里装了满满一箱钞票? NND,当代中国竟有这等怪事?
8450 次阅读|6 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-12 10:42

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部