CMP设计分享 http://blog.sciencenet.cn/u/accsys 没有逆向思维就没有科技原创。 不自信是科技创新的大敌。

博文

再请杜立智详细解析姜咏江解决了3SAT难题如何?

已有 2900 次阅读 2015-9-22 04:03 |个人分类:随笔|系统分类:科研笔记| 子句消去法, 3SAT, 杜立智

再请杜立智详细解析姜咏江解决了3SAT难题如何?

 

科学网上的牛人杜立智还是很有影响力的。一篇博文《详细解析天才的姜咏江解决了3SAT难题》至今已有1017次阅读,20次评论,很好。

我以讨论的心态从事科学研究,目的是能够从批评中得到启发。杜老师的轻蔑带有讽刺意味的解析评论,是激发我前进的动力。所以我感谢杜立智。

还是被杜老师认为是脑残的“子句消去法”,有了独特的感觉,更需要象杜立智这样的功底深厚的人批评。博文地址:http://blog.sciencenet.cn/blog-340399-928224.html  

 

姜咏江

2015-9-22

 

 

附录:杜立智博文和一些评论

 

详细解析天才的姜咏江解决了3SAT难题

各位,70余岁高龄的姜咏江博主,名校计算机专业退休老教师,一次又一次地声称解决了世界难题。蒙他看得起,多次点名要求我予以评判。

我已经多次评论过,他的那一套荒谬可笑,他还要继续,并还要点名要我评。我就恭敬不如从命了,反正他的天才解决方案,我稍稍一看,立即看懂,所以也不花什么时间精力。

我这里表这个态:看算法的论文关键是必须进入思路,哪怕别人表达不太好,推敲一下很快进入思路就能看懂。对于这个世界任何高档次高难度的算法论文,只要不涉及其他领域专门的知识,主要是复杂的思路和基础数学,我都能很快进入思路很快看懂,并能很快确定算法到底难不难,有多高的价值,作者实力如何。两种语言,中文英文。而不像大量论文和基金评审专家猪,根本看不懂就做评论。

下面是他最近声称解决了3SAT问题的方法,岂止3SAT,4,5,6SAT…等等他都解决了!

 

一个逻辑多项式如果存在一项的值是1,那么这个逻辑多项式的值一定就是1。同样,一个逻辑项的存在为0的因子,那么这个逻辑项的值一定是0。逻辑变量非的值,一定是逻辑变量值的反码。逻辑运算的这些基本规律是子句消去法计数成立的基础。

 本文用“+”表示或运算,用“”表示非运算,与运算符号省略。

 我们可以利用逐次消去n个变量或其非运算一方,通过n次消去,最终确定消去的变量取值是否是合取范式值为1 的解。这叫子句消去法。用子句消去法进行改造,获得了下面的子句消去计数法

用子句消去计数法求解k-CNF-SAT问题算法如下:

 

0      设立n元单侧计数器:x1’x2’x3’…xn-1xn’[],x1’x2’x3’…xn-1xn [],…, x1x2x3…xn-1xn [],共计2n个。计数器后面的方括号内放k个变量都在其中的子句数。计数器初值为0

1      去掉值总为1的恒一子句,则nk-CNF的子句最多剩有

 

 

 从前到后检查每个子句,并将k个变量都在某计数器中的计数器加1。这一过程显然是多项式时间。

 

2      计数后,寻找计数器为0的计数器名称,以其每个变量表示的反码取值,得到的n位二进制数就是这个k-CNF-SAT的全部解。

3      若没有计数器值为0,则表示此k-CNF-SAT无解。

例1f(x1,..., x6)= (x1+x1'+x2')(x2+x3+x4)(x1'+x3'+x4')(x1'+x2+x5')(x2+x3+x6)(x1+x5+x6'),求满足

f(x1,..., x6)=1的解。

0)设计数器x1’x2’x3’…x5’x6’[],x1’x2’x3’…x5’x6 [],…, x1x2x3…x5x6 [],共计64个。

1)去掉恒一子句(x1+x1'+x2'),剩(x2+x3+x4)(x1'+x3'+x4')(x1'+x2+x5')(x2+x3+x6)(x1+x5+x6')

2)剩下非恒一合取范式的第一子句使含x2x3x4标识的计数器都加1;第二子句使含x1'x3'x4'标识的计数器都加1;继续5次,查遍所有子句。

3)令为0计数器的变量取反码值即得解。例如,计数器x1’x2’x3 x4’x5’x6 [0],于是得f(x1,..., x6)值为1的解有:(110110)。

4)一次性可以写出所有解。互为反码标识的计数器都为0,则对应逻辑变量组合双方都是解。

验证

 对于所得解可以带入原式验证。将x1=1x2=1x3=0x4=1x5=1x6=0带入原式得:f(1,1,0,1,1,0)=1

3.           概念与性质

 为什么子句消去计数法就能够求出k-CNF=1的解?它的证明就在下面的概念和方法中。

定义1:如果子句中同时有逻辑变量和其反表示,则称子句为恒一子句。

 显然,恒一子句的值总是1,与逻辑变量的取值无关。

定义2:所有包含变量x的非恒一子句叫x相关子句。

定义3:我们将n对互反变量只取变量或变量非,得到的n个变量组合,叫一侧。显然,n个变量的一侧有2n个。

 子句消去计数法的计数器就是记录一侧含有的子句数量的。

定理1n个变量合取范式k-CNF中一侧相关子句数最多为Cnk

证明:因为一侧只有n个变量,从中取出k个为Cnk

 此定理可以用来检查给定的合取范式是否不正确。如果给出的合取范式的一侧相关子句超过这个数,则可判定合取范式有错误。

定义4:将合取范式一个变量的值定为1的子句消去求解的方法,称为子句消去法。

 显然,子句消去法经过n次消去,若没有剩余子句,则k-CNF是可满足的,反之不满足。

定理2:非恒一子句全体,消去x相关子句中,一定不含有其反变量x’

证明:因为非恒一子句xx’是不同时出现在一个子句,所以消去x相关子句,x’相关子句依然存在。

完全定理n个逻辑变量所成的k元合取范式k-CNF,最多有C2nk个子句。非恒一子句最多有个。

证明:因为每个子句的元素可以是逻辑变量或它的非,这相当从2n个元素中取出k个的组合数,即为。而恒一子句最多有个,所以非恒一子句最多有个。

推论:完全合取范式的值恒为0

 因为完全合取范式包含xx’的所有相关子句。所以用子句消去法无论经过怎样的n次消去子句,都不能使剩余没有子句。

可满足定理:若非恒一子句中互反变量有一侧相关子句不存在,则k-CNF-SAT可满足。

证明:因为x的相关子句全体包含一侧所有的n个变量或其非,如果一侧不存在,则可确定其相反一侧变量逐一消去,依据定理2可知最终没有剩余子句。

 满足定理是我们进行k-CNF-SAT求解子句消去计数算法正确性的依据。

步数定理:用子句消去计数法确定k-CNF可满足全部解,最多用了C2nk次检查。

 因为子句数不超过C2nk,得证。

 步数定理告诉我们,上面介绍的求解算法是一个多项式时间算法。

 

各位,包括计算机专业的专家们,包括计算机专业的一大部分基金评审专家猪,你们是否能立即看懂了?

我断言,大比例这样的人会半天看不懂!

首先一个问题,他的方法对吗?

我告诉你们,他的方法毫无疑问是对的!

那么,姜博主真的是天才了?这么顶级的世界难题他一下子就解决了,甚至仅仅只是“回去想了想”?

姜博主的整个工作,相当于是在解这样一个方程x=x,一样的无聊。

尽管如此,我还是佩服姜老师的智商,一个70余岁的老人,他玩的一些花样,大量计算机专业高职称高学历的垃圾一点头脑的人是看不懂的。

记得有这样一个谜语:七七四十九,和尚庙里有。

他洋洋洒洒这么长的一段所谓“算法和证明”,其实只要一句话就可以概括。我就不概括了。

这就是姜老师解决世界难题的方法。

联想到上一次他声称解决了整数子集和问题,他那个方法和程序若是自己独立完成的,表明他的头脑没有衰退,智商很高。因为我判断大量杂牌一点头脑的计算机专业的人是做不出来的。

部分网友的评论:






https://blog.sciencenet.cn/blog-340399-922489.html

上一篇:3-SAT分段子句消去算法,数学人都能看懂NPC=P的证明
下一篇:分段子句消去法求解3-SAT的练习
收藏 IP: 221.194.176.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (4 个评论)

数据加载中...
扫一扫,分享此博文

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

GMT+8, 2024-5-4 01:14

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部