科学网

 找回密码
  注册

tag 标签: 千禧大奖

相关帖子

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

没有相关内容

相关日志

我应不应该去踢美国克雷数学研究所的门?
热度 2 accsys 2016-12-20 10:48
姜咏江 美国克雷数学研究所千禧年悬赏百万美元,征求 P/NP 问题解答。我用我的限位数理论和子句消去法,两年多时间找到了 SAT 问题的多项式时间求解算法,从而使 NPC=P 了,进而也就将 P=NP 这个问题解决了。我是不是应该在圣诞节之前去踢克雷数学所的门?
个人分类: 随笔|3032 次阅读|4 个评论
算法程序执行时间计算与P=NP问题终结
热度 7 accsys 2015-5-4 19:09
算法程序执行时间计算与P=NP问题终结 姜咏江 对于千禧大奖P与NP问题,我给出了肯定的回答P=NP。为什么?这是因为解答p与np类问题是否相同,只懂得数学知识不行,还必须深刻理解计算机的核心设计方法,理解程序执行的本质,即任何算法程序的执行都是由确定执行时间的机器指令执行累计而成的。懂得了这一点,才会理解任何计算机算法程序能够解决的问题,全都是在所谓多项式时间内完成的,而且所有的结果都是有限的。真正懂得计算机设计的人都能够懂得,无限多的结果是不能够通过计算机计算出来的。这就是说不论何种形式的算法程序,最终都要转化成所谓多项式时间复杂度的机器指令程序执行完成。我相信,理解了这种计算机(包括图灵机)的程序执行基本方式,就不难理p与np的问题了。 1. 程序执行时间计算公式 计算机任何程序执行都是通过相应的机器指令执行来完成的。考虑到不失一般性,可以假定机器指令周期相同。那么对于一个程序来说,循环结构的层数和每层循环的次数,及循环体内的执行指令数是决定程序执行时间的因素。为了说明问题简单,我们假设每层循环的次数都是n,那么k层循环结构中指令重复执行总数就可以用下式计算: f(n,k) = a 0 n 0 + a 1 n 1 +a 2 n 2 +...+ a k-1 n k-1 +a k n k = (1) 其中a i 为第i层执行的指令数。 考虑到程序由j个子程序构成,那么(1)式可以表示成 (j) 如果程序含有有限次子程序嵌套,只要将调用语句换成相应的子程序,就可以转化为非嵌套形式,自然可以用公式(j)计算程序执行时间了。 2. 算法程序执行都是多项式时间 不论在计算机上执行的任何程序,只要要能够得到结果,则n与k都必须是确定的自然数。既然k是自然数,就总可以认定(j)式是一个多项式,因而总可以认定任何可以求出结果的算法程序执行时间总为(j)式的多项式时间。 3. p 与np问题 人们认可的p与np问题是如下定义的: 复杂度类P包含所有那些可以由一个确定型图灵机在多项式表达的时间内解决的问题;类NP由所有其肯定解可以在给定正确信息的多项式时间内验证的决定问题组成,或者等效的说,那些解可以在非确定图灵机上在多项式时间内找出的问题的集合。 问题的焦点是P=NP? 我们先来解释P类问题为什么会提出来。 我们暂且将图灵机就理解成现在的计算机,那么要搞清计算机解决的问题是什么。简单地说,问题是由条件和结果两部分组成的,解决问题往往是从条件出发寻求结果的过程,在计算机上实现的方法是通过程序执行完成。程序的设计方法称为算法,即使是同一个问题,也可能有不同的算法,因而书写的程序往往是不相同的。同一个问题的不同算法程序执行时间有长有短,故而人们提出了研究算法效率的时间复杂度,进而来确定程序设计当中算法的优劣。在算法时间复杂度研究中,多数人错误地认为多项式形式的算法程序执行时间会最短,因而提出了所谓p类问题。 4. 计算机能够解决的问题都是p类问题 通过程序执行时间的计算,我们可以断定,靠程序设计的组织形式来判定程序执行时间的长短并不准确,这其中起着决定性作用是数据的结构和数据量。由公式(j)我们立刻可以知道计算机能够计算出结果的问题都是p类问题。因而提出p类问题的实际意义并不很大。实际决定程序执行时间长短的是程序循环层次数k和指令在循环体内的执行次数n和不同种指令数a。任何在计算机上能够解决的问题,循环层次数k和指令重复执行数n最高都是一个确定的自然数,不可能出现无穷大,因为这样计算机无法计算出问题结果。 5. 计算机解决问题结果都可顺序查询 计算机可以求出的问题结果都是有限的,因而对结果的查询都可顺序进行。因为问题结果为有限多个,因而总可以对任意的猜测结果,通过顺序查询来回答yes/no的问题。顺序查询的时间复杂度为O(n)(为说明问题简单,在此借用一下这类符号),即是所谓的多项式时间查询。如此我们可以得出结论:任何计算机算法程序执行的结果都可以用多项式时间复杂度查询。 6. 结论及其它 从4和5我们不难知道P类问题集合与NP类问题的集合是一个,即P=NP。 许多学者的疑问是:P与NP的问题如此简单,“为什么还有那么多的学者在此问题上绞尽脑汁?为什么P versus NP会演变成世界难题?” 这个问题说起来,应该归结到数学与计算机科学研究的不同之处。首先要知道除非专门讨论时间,各种数学方法并不带有“时间要素”。数学并不要象计算机那样随时都要考虑时间要素。举例来说,考察两个变量x、y是否相等,数学在推演中只要得出x=y或x≠y的结果就行,而计算机程序执行却要考察x、y的值何时相等与何时不等,因为只有在恰当的时间点上,计算机程序执行才会得出正确的结果。 搞数学而对计算机不甚透彻理解的人,可以设计计算机程序,而且某些算法程序会设计得很完美。但他们思考问题的方式并不带有时间要素,即使有,或者也是将他们设计的各种算法语句就替代了计算机执行的真实时间。这样一来就可能抽象出“多项式时间复杂度”这类,以算法中具有代表性的“最高项”讨论时间的做法,实际上这已经脱离了计算机本质的时间特性。 至于说到P与NP是否相等的证明,我想就不必费时间了吧。我们知道概念是逻辑证明的基础,如果我们对“多项式时间复杂度”这类概念含糊其辞,还怎么去证明呢?从本文的(j)公式已经能够清楚地理解,无论什么样的算法程序执行的时间计算,都可以理解成多项式时间;而计算机算法程序能够处理的问题总是有限的,因而都可以用顺序的查询方式获得是与否的答案,那么还能说P versus NP是世界难题吗? 请参阅: http://blog.sciencenet.cn/blog-340399-849311.html http://blog.sciencenet.cn/blog-340399-861142.html 2015-05-04
个人分类: 科研讨论|7222 次阅读|29 个评论
P与NP问题是让聪明人做傻事
热度 3 accsys 2015-5-1 06:59
P 与 NP 问题是让聪明人做傻事 姜咏江 世界上的事情有难有易,这是人们都知道的常识。然而就是被称为世界上的聪明人常常做傻事。上中学时听说过:牛顿在门上挖一个大洞和一个小洞,为的是让小猫走小洞,大猫走大洞。这事真假且不论,反映出聪明的科学家也可能办傻事。 千禧大奖的头号世界难题, P/NP 问题就是一个让聪明人办傻事的闹剧。为什么?这事是让人们将所有的复杂的事情都去找简单的方法解决同一件事情的全部结果混为了一谈。 我以解决任意 N 个数的子集和问题为例,就可以说明这种混淆给人们带来的艰苦劳动是多么的不值得。 N 个元素集合每增加一个元素,那么就要增加 2 N 个子集,这就是说在不知道子集都是什么的情况下,需要以指数运算的方式来求这些子集,这在算法执行中自然要消耗大量的时间。如果我们将这一过程做为查找某个满足条件的子集是否存在( yes/no 问题),那么就不可能是一种较快执行的算法。如果我们在 N 个元素集合的所有子集都存在的情况下,去回答某个满足条件的子集是否存在的 yes/no 问题,我们只要用查询的方法就可以完成,也就是说我们可以用 O ( n )的所谓多项式时间复杂度解决问题,也就可以得出 P=NP 的结论。 因为求子集的算法是一个指数型运算过程,这个问题不可能用 n k 形式的算法( k 是常数)求解全部子集。即使某个曾经认为复杂的问题能够用简单的函数问题求解,也不代表能够将所有复杂的问题都可以用简单的固定多项式函数方式得到 yes/no 问题的回答。 我在这里规劝那些科学界的聪明人莫要再为这种傻事浪费时间了。请参考 http://blog.sciencenet.cn/blog-340399-849311.html http://blog.sciencenet.cn/blog-340399-861142.html 2015-5-1
个人分类: 科研讨论|3604 次阅读|9 个评论
美国克雷数学研究所会不会颁奖?
热度 2 accsys 2014-12-8 11:17
美国克雷数学研究所 会不会颁奖? 姜咏江 千禧年大奖难题 (Millennium Prize Problems), 又称世界七大数学难题, 是七个由美国克雷数学研究所 (Clay Mathematics Institute,CMI) 于 2000 年 5 月 24 日公布的数学猜想。根据克雷数学研究所订定的规则,任何一个猜想的解答,只要发表在数学期刊上,并经过两年的验证期,解决者就会被颁发一百万美元奖金。这些难题是呼应 1900 年德国数学家大卫 · 希尔伯特在巴黎提出的 23 个数学问题。 上面这段话是从《百度》上复制下来的。 CMI 的悬赏很有诱惑力。就 p\np 问题来说, CMI 会不会颁奖呢?我的回答是不一定。为什么呢? 我就最近设计的 subset_Sum 软件来说一下理由。 有一个元素个数为 2 100 的整数集合,要查找某数 a 在不在其中,请问查找的时间复杂度应是多少?我们可以设一个变量 x n ,承载这 2 100 个数,则 n =1,2,..., 2 100 。那么找到 a 的比较次数应不超过 2 100 -1 次吧?用 n 来表示呢?那就是 n -1 次而已。看来这无疑是一个多项式时间复杂度的问题。 现在我们来说,给定 k 个数组成的集合,求其全部非空子集。我们都知道子集数应为 2 k -1 。子集元素和最多有多少?最多也就是这 2 k -1 个。现在我们要给出一个数 a ,问 a 是否在这 2 k -1 个和数当中,验证的时间复杂度是多少?是 O(2 k ) 还是 O( n ) ? 在这个问题中, k 是一个常量,莫要将其当成变量来看。用变量表达式来研究程序执行时间复杂度,必须要加以严格区分变量和常量。问题的正确答案应该说是 O( n ) 。由此来看,程序执行时间复杂度问题与变量取值即定义域无关。莫把变量的取值范围与程序执行时间复杂度混为一谈,不然将出现悖论。 任意一个 n 元数构成的集合,其非空子集为 2 n -1 个。这是说 n 一旦确定,那么 2 n -1 就是一个确定的数;当 n 是变量的时候,你不能确定 2 n -1 比 100 大还是小。变量和常量是一对相互对立的概念,凡是混淆了对立概念,把它们放到一起等同来看的时候,都会产生悖论,这是悖论产生的一种普遍现象。 因而我们应该得出结论: 任何在数集上查找一个数的过程都是具有多项式时间复杂度 O( n ) 的过程。 我在前面博文中提出了一个比较公理。 Subset_sum 问题中,如果将确定的子集数 2 n -1 又做为变量来研究,那就违背了比较公理,也违背了 Subset_sum 问题的基本涵义。 CMI 如果明确了这个问题,那么他才会有颁奖之日,否则无日可待。 又对 Subset_sum 问题的软件进行了修理。大家可以见到在集合确定的情况下,查找一个子集和猜测验证一个数是不是某些子集的元素和,同样都可以快速地完成。由于每人计算机的存储资源不同,该软件的运行数据范围会有区别。 特将最后整理的软件附上,内有使用说明书,供有心人参考。 2014-12-8 BuidSubset_Sum.rar
个人分类: 科研讨论|8115 次阅读|5 个评论
NPC子集和软件PNP难题得解,P=NP
accsys 2014-12-4 07:18
NPC 子集和软件 PNP 难题得解 P=NP 姜咏江 美国克雷数学所的千禧大奖引起了众多人的关注,没想到我也成了关注者之一。数学、计算机乃是我一生所学,不参与这个众目关注的问题,岂不是妄为数学与计算机方面人才? 2 个月前网友李斌与我提及此事,他认为设计 CPU 事小,解决 p 与 np 问题事大。遂引起我兴致。至今奋斗 2 月,极尽所学,问题有了自己的观点。并设计出了 npc 子集和求解的相应软件,可供有兴趣之人参考,讨论。 在此郑重声明,此软件就算正式发表。用函数真值表解决 PNP 问题乃是本人独创。若有人引用,勿忘声明出处。 附上《子集和猜测验证安装》软件。 2014 年 12 月 4 日 BuildSubsetSum.rar
个人分类: 科研讨论|3958 次阅读|0 个评论
需要一个比较公理?
热度 1 accsys 2014-10-20 06:50
需要一个比较公理 姜咏江 我提出以下比较公理,是发现许多有关程序的时间属性是用程序自身结构进行证明的。这违反了比较的原则,因而得不到结果。对与错?希望博友讨论。 【比较公理】 事物的比较都遵从以下几条: 1• 任何事物都不必自身比较; 2• 比较只能通过事物的确定属性进行; 3• 不同种属性不能比较; 4• 比较必有标准单位 1 ,称为尺; 5• 比较的结果用等级或数表示。 以上 5 条称为公理,原因是不能用逻辑方法证明。说几个比较的实际例子。 ( 1 )物体的质量比较,可以用重量属性比较,不能用体积或组成材质等其他属性比较。 ( 2 )人与人的比较,可以用身高、体重等属性等进行;但不能用一人的身高和另一人的体重进行比较。 ( 3 )程序设计的好不好,可以用程序使用的语句数量,来比较程序编写的简捷程度;用程序运行的时间来比较处理问题的优秀程度。但不能用程序结构形式来比较程序处理问题的优秀程度,因为没有标准的比较单位 1 。 2014-10-20
个人分类: 科研讨论|3088 次阅读|5 个评论

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

GMT+8, 2024-5-21 04:45

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部