“哥德尔不完备定理”到底说了些什么?

来源: 赵昊彤科学网博客

链接地址:http://blog.sciencenet.cn/blog-409681-1067019.html  

【编者按:不知为何?一直不相信已有的数理、物理、生理、心理、管理……能够研究好人机融合智能系统。究其因,需要出现新的数/物/心理逻辑和哥德尔。有些经典是偶然的,但有些经典却是必然的。美,不一定是漂亮(在甲骨文里,美就是羊大);真,不一定是事实;善,不一定是同情;人工智能,不一定是聪明;智慧,则一定不是聪明。】

(一)

【中文网上深入介绍哥德尔不完备定理的文章很少,我这篇文章写得很长,花了不少时间打磨它,希望能帮助到爱好数学与逻辑的人。文章把理解哥德尔不完备定理分为了五重,建议只是想初步了解的读者,可以重点看第一重;希望了解一些背景的读者,可以修炼到第二重;希望较深入理解哥德尔证明思路的读者,建议修炼到第三重;如果确实感兴趣,希望详细了解哥德尔证明过程以及其严谨性的读者,可以修炼到第四重;如果还想多知道一些知识的读者,可以练到第五重。——— 作者】

1931年,库尔特∙弗雷德里希∙哥德尔(KurtFriedrich Gödel)发表了一篇影响深远的论文“On formally undecidablepropositions of Principia Mathematica and related systems I”[1](论文的原文是用德文发表的,这里给出的是英译名)。今天,我们一般笼统的把论文中提出的定理称为“哥德尔不完备定理”。80多年过去了,“哥德尔不完备定理”的影响仍然持续、深远,特别是引起了很多非数学界人士的兴趣,引发了各种各样的解读。很遗憾,有一些解读是不准确的,甚至是错误的;更为严重的是,有一些人出于对“哥德尔不完备定理”的一知半解,甚至开始怀疑、批判人类的理性,以至于发展到相信、鼓吹不可知论。近期,我在认真研读了哥德尔论文原文(英译版,本人实在是不懂德文)和相关资料的基础上,加深了自己的认识,同时也很希望尽自己绵薄之力,分享对“哥德尔不完备定理”的理解,厘清对“哥德尔不完备定理”的误解。

“哥德尔不完备定理”是数学、逻辑学领域的划时代成果,使人们对于数学研究基础的认识更加深刻、准确,同时它也是现代逻辑史上的重要里程碑。“哥德尔不完备定理”虽然伟大、深刻,但是个人认为它并不深奥。对于一个普通人,只要愿意动脑,都可以在一定程度上准确理解它。当今的互联网时代,网上有不少对“哥德尔不完备定理”的介绍和解读;60多年前,两位美国作家欧内斯特·内格尔(Ernest Nagel)和詹姆士 R. 纽曼 (James R. Newman)撰写的的著作《哥德尔证明》更是科普“哥德尔不完备定理”的重要作品。如今网上能看到的中文介绍“哥德尔不完备定理”的文章,绝大部分是转述《哥德尔证明》这本书的内容的。不过这本书撰写太早,有些新的结论当年尚不了解;另外这本书在普及哥德尔证明的时候,更多的是讲解背景、思路,并用作者自己的理解来讲述哥德尔的证明,个别地方不够严谨,一些讲述方式也不够准确。本文则全部基于哥德尔论文的原文来介绍“哥德尔不完备定理”的证明,并适当融入一些80多年来新的认识和结论,希望能帮助数学、逻辑学爱好者了解并理解“哥德尔不完备定理”。

为了帮助更多人在各自需要的层面上理解“哥德尔不完备定理”,下面的介绍把理解“哥德尔不完备定理”分为了五重,从对定理的基本含义的理解一直到对核心证明的了解都包括了进来。读者可以像修习“乾坤大挪移”神功一样,依照自身内力基础,修炼到适合自己的层面即可。祝愿大家都能练成“哥德尔不完备定理”第五重神功!

第一重:“庐山真面目”——准确了解“哥德尔不完备定理”

赏玩一块美玉的时候,首先不应该是听各类专家讲这块玉多么晶莹剔透、多么价值连城,而应该是首先把玉拿出来让大家看看,有个感性认识。在哥德尔的论文中,我们一般所说的“哥德尔不完备定理”(有时候也被叫做“哥德尔第一不完备定理”)是指论文中的定理VI,原文如下:

TheoremVI: For every ω-consistent primitive recursive class κ of formulae, there is aprimitive recursive class-sign r , such that neither forall(v,r) nornot(forall(v,r)) belongs to Conseq(κ) (where v is the free variable of r).

尽量原汁原味的翻译如下:

定理VI:对于任意一个ω一致(第四重)的原始递归公理集合κ,一定存在一个原始递归(第三重、第四重)的表达式r,使得无论是“r总成立”这个命题,还是“r不总成立”这个命题,都不属于通过κ可推导出来的定理的集合(原文中的Conseq(κ))。

补充说明一点,哥德尔论文中的κ所代表的公理集合,是指蕴含了皮亚诺算术公理(Peano Axioms)的集合,这是在哥德尔论文的前面明确了的,所以在阐述定理VI时就没有再特意强调。

修炼第一重神功的读者可能会问了“大哥,你说的这些都是啥?”。别担心,修炼第一重神功没那么复杂。

让我们先从公理说起,公理其实就是无需证明而被认定为成立的命题。公理体系是指一组公理的集合。通过这些公理和基本的逻辑关系,可以推导出更多成立的命题,称为定理。公理体系一般被认为发源于2300多年前欧几里德撰写的《几何原本》。在现代科学形成的过程中,人们发现通过定义一组公理再加上合理的逻辑推演,可以证明很多命题或结论。公理体系是当今数学研究和科学研究的基础,数学研究成果就是(或者说在极大的程度上依赖于)一组公理体系的推演,而其它科学研究除了依赖公理体系进行推演外,还需要通过系统的实验来进行验证。

“哥德尔不完备定理”是针对公理体系的一项结论,它之所以如此伟大且深刻,正是因为它撼动的是一切科学的研究基础——公理体系。修炼第一重神功的时候,我们简要理解“哥德尔不完备定理”说的是:一个足够复杂的公理体系(至少蕴含了皮亚诺算术公理),如果它是一致的(相容的,无矛盾的),那么它就是不完备的。这里的完备,指的是“对于任何可在这个公理体系内描述的命题,都可以在这个公理体系内得到判定,要么是正确的,要么是错误的”。

再用大白话解释一下,就是说,一个没有矛盾的公理体系内,总有一些命题是说不清楚对还是错的(务必注意,这是指在这个体系内说不清楚,不是说永远都说不清楚了)。也许有人说了,既然没矛盾的公理体系有问题,那就搞个有矛盾的公理体系呗。如果设想一个公理体系,一会儿告诉我们“1+1=2”,一会儿又告诉我们“1+12”,相信不会再有人把这个公理体系当回事。有矛盾的公理体系会导致彻底的无意义和虚无,修炼第二重神功的时候会详细阐明这一点。

上述结论听起来是比较可怕的,公理体系必须没有矛盾,可是没有矛盾的公理体系又会导致出现一些命题说不清楚对错。于是开始出现了各种各样的解读,比如“哥德尔定理告诉了我们数学和逻辑的极限,这也几乎是人类理性的极限。它证明理性不是无所不能的”、“哥德尔定理告诉我们,人类不可能真正认识这个世界,永远不可能理解宇宙的真理”等等。相信作为人类理性智慧光辉代表之一的哥德尔,如果听到这些说法,可能也会很无奈吧。

第一,“哥德尔不完备定理”不仅不是所谓人类理性的极限,恰恰相反,它是人类理性智慧的重大成果。它告诉了我们,正是由于有了人类理性的智慧,才有可能认识到这样深刻的结论。哥德尔是通过构造出了一个无法在这个公理体系内证明的命题来证明出“哥德尔不完备定理”的。这个命题的内容说的正是“命题自身无法在此公理体系内被证明”,既然哥德尔已经清楚的证明了这一点,说明这个命题毫无疑问是正确的。所以,“哥德尔不完备定理”的证明过程其实告诉了我们,存在一个可在这个公理体系内表达的正确的命题,但是在这个公理体系内却既不能证明它,也无法证伪它。如果说“哥德尔不完备定理”阐明了什么极限的话,那它阐明的也只是“某类公理体系的极限”,而不是“数学、逻辑的极限”,更不是什么“人类理性的极限”。

第二,“哥德尔不完备定理”不仅不会告诉我们“人类不可能真正认识这个世界”,反而是在更深刻的层面上告诉了我们人类应该如何去认识世界、探索真理。譬如在数学上,如果发现一个命题通过现有的方法、公理和定理一直得不到证明,我们就可以尝试扩展现有的方法和公理体系来进一步研究;费马大定理、黎曼猜想等命题被称为“会下金蛋的母鸡”就是这个道理。物理学上,广义相对论的发现过程,也是因出现了平直空间中狭义相对论某些推论难以解释(如高速旋转的圆盘会发生扭曲),爱因斯坦提出了等效原理并毅然拓展了平直空间的假设,创建了广义相对论这个伟大的理论。值得一提的是,哥德尔和爱因斯坦在普林斯顿大学成为了非常好的朋友。晚年的爱因斯坦曾经说过,之所以他每天还会经常坚持去办公室上班,是因为可以在路上和哥德尔聊聊天;而爱因斯坦的去世也曾给哥德尔的情绪以很大打击。

第三,“哥德尔不完备定理”也没有给出人类认识真理的上限。如果一个命题在某个公理体系内无法判定,那也不是意味着这个命题就是无法判定的了。对于这类命题,如果属于科学范畴的,可以通过科学实验加以判定,从而扩展现有的公理体系,发现新的科学规律;如果属于数学范畴的,可以通过寻找新的数学工具、数学方法或者数学理论来直接拓展现有公理体系,从而准确的判定这个命题,进而扩大人类研究的深度和广度。

还有人了解到,数学研究已经证明了“不存在一个通用的算法,能够判定一个给定的命题在某个确定的公理体系内是否是可判定的”。由此认为既存在着不可判定的命题,又不存在“能够判定某个命题是否不可判定的方法”,显然我们没法准确认识这个世界了。这种观点是不准确的。虽然我们的确证明了不存在通用的判定算法,但是人类认识世界不是只依靠某组公理体系和确定的逻辑与算法的,人类的思维也不可能只局限在某个或者某组公理体系之内。虽然我们无法设计出一个通用算法,来判定一个命题是否在某个公理体系内可判定,但是这并不必然导致我们无法认知这个命题。举个比较简单的例子,“Goodstein定理”(这个定理相对简单易懂,修炼到第五重的时候会详细说明这个例子)就是一个在皮亚诺公理体系里无法判定的命题,但是在集合论中,利用序数知识可以非常简单的证明它。

“哥德尔不完备定理”揭示了公理体系内在而深刻的性质和固有局限性,告诉我们不要奢望仅仅通过若干组公理出发,机械地利用基本逻辑规则进行推导,就能够对全部的命题进行判定。从这个意义上讲,无论是数学还是其它科学,都需要不断的完善、扩充自身的公理体系(或者基本规律),只有这样才能不断认知更加深刻复杂的客观世界。或者说,哥德尔真正严格证明了这句格言——“科学研究是永无止境的”。

(二)

第二重:“静水流深”——“哥德尔不完备定理”的深刻背景

哥德尔为什么会想到证明这样一个“不完备定理”呢?既然已经修炼到第二重了,就稍微说的多一点。

(一)数学公理化

人们经常说,数学研究领先其他学科研究至少200年。其实在上上个世纪,也就是19世纪的时候,数学研究就已经大幅度超前于其他学科的研究了。数学家以及很多科学家们越来越意识到数学应该是一个公理化的系统,它的结构应该是这样的——首先定义一批公理和基本逻辑规则,然后依据这些公理和逻辑规则可以推演出这个体系内的无穷多的定理——这就应该是理想的数学。

倡导并推进数学公理化的最主要代表人物就是德国数学家大卫·希尔伯特(David Hilbert),19世纪和20世纪最具影响力的大数学家之一。希尔伯特的影响力主要体现在他于1900年在巴黎举行的第二届国际数学家大会上作的题为《数学问题》的演讲。在这个演讲中,希尔伯特提出了23个他认为最重要的数学问题,而这23个问题至今还在指引着数学家的研究方向。

这23个问题中的第2个问题,就是有关数学公理化的。希尔伯特说“在这些无数个问题之上,我倾向于确定下面这个问题才是最重要的:这些公理在经过有限步骤的推演后是不会导致相互矛盾的结论的。……也就是说,我们需要一个关于算术公理一致性(相容性)的证明。”。

1910~1913年,怀特海(Alfred North Whitehead)和罗素(Bertrand Russell)撰写的《数学原理》(《Principia Mathematica》)的发表,是数学公理化推进的又一里程碑事件。《数学原理》希望从最基础的逻辑出发来定义全部数学,试图构建一个宏大的逻辑体系结构,彻底的解决数学公理化的问题。我们只要稍微想象一下,就能够猜到这个过程有多复杂,特别是罗素还要在这个过程中消除自己发现的“罗素悖论”(后面会提到)。直到《数学原理》第一卷的363页,才推导出了数字“1”的定义;第二卷又费了很大的力气,证明了乘法交换律。《数学原理》工程浩大,两位作者只完成了前三卷,覆盖了集合、基数、序数和实数的相关内容,虽然对第四卷几何的基础做了筹划,但整个体系结构实在太过复杂,两位作者“才智枯竭”[2],实在无法再写下去了。

数学公理化推进的最关键标志性事件是1920~1923年间,希尔伯特推动的“希尔伯特计划”。这个计划的主要目标,是为全部的数学提供一个安全的理论基础。这个计划对数学公理化提出了如下要求:

  • 形式化:形式化是希尔伯特提出来的一个关键思想,意思是,所有数学应该使用用统一的、严格的、无意义的、形式化的语言来表述,并且按照一套严格的、基础的逻辑规则来推演。

  • 完备性:形式化之后,数学里所有的真命题都可以通过上述规则被证明。

  • 一致性:运用这一套形式化的表达和规则,不可能推导出矛盾。

  • 保守性:这是针对形式化而言的,即如果赋予一些形式化的表达以含义(希尔伯特将这称为元数学),并由此证明了某些结论,那么必须保证即使不赋予这些含义,依然可以证明同样的结论。

  • 确定性:可以通过一个算法来确定每一个形式化的命题是真还是假。

对于修炼完成了“哥德尔不完备定理”第一重神功的读者来说,应该会看出上述“希尔伯特计划”是有问题的。没错,之所以我们比大数学家希尔伯特还要目光如炬,是因为我们站在哥德尔这个巨人的肩膀上!要知道,在哥德尔的论文发表之前,甚至是发表之后的一段时间,主流数学家、逻辑学家们仍然认为希尔伯特计划毫无疑问是正确的,问题只不过是如何给出证明罢了。

(二)一致性(相容性)的重要意义

在详细阐述“哥德尔不完备定理”对数学公理化特别是“希尔伯特计划”的影响之前,我们先来谈一下“一致性”的重要意义。这里说的“一致性”就是指很多文章或书籍里面说的“相容性”,希尔伯特说的compatibility,哥德尔说的consistency,意思是“无矛盾的”。

在修炼第一重神功的时候,我们谈到构造一个不一致(不相容、存在矛盾)的公理体系是无意义的。从直觉出发,我们都清楚,存在矛盾的体系当然有问题了。这里,我们给出逻辑上的说明(或者说证明)。

做这件事之前,让我们先来感谢罗素和怀特海,是他们的艰苦工作成果《数学原理》给出了数学形式化的基础。我们正是以此为基础,来说明一致性的重要意义。另外,了解《数学原理》中给出的数学形式化的基本表示,也是继续修炼第三重、第四重神功的基础,因为哥德尔就是基于《数学原理》中数学形式化的表达来证明“哥德尔不完备定理”的。

由于形式化表达的符号存在不同的样式,为避免歧义,本文中数学形式化的表达与哥德尔论文中的样子保持一致。以下是数学形式化的基本原则:

(1)使用字母(一般使用p、q、r等)表示命题变量,即一个字母表示一个命题;使用如下符号表示特定逻辑(注意,形式化之后的表达式是无含义的,因此这些符号仅表示某种逻辑关系):

~        逻辑“非”;

∨        逻辑“或”;

⇒    逻辑“推出”,意思是“如果……那么……”;

∧        逻辑“与”;

∀x∙p   对于任意x,p都成立;

∃x∙p   存在x使p成立;

(2)组成合理的命题表达式。譬如,“p∨q”就是一个合理的命题表达式,而“p∨”就是一个错误的表达式。

(3)两条变换规则:一是代入规则,可以使用其它的命题表达式对某个命题表达式中的某个命题变量进行全部统一替换;二是分离规则,其实就是我们常说的逻辑三段论,已知p和p⇒q成立,则q成立。

(4)《数学原理》提出的四条基本逻辑推演公理:

(p∨p)⇒p

p⇒(p∨q)

(p∨q)⇒(q∨p)

(p⇒q)⇒((r∨p)⇒(r∨q))

大家可能觉得这四条基本逻辑推演公理看起来像是废话,由此可知《数学原理》这本巨著是从多么基础的逻辑出发的。不要小看这四条基本推演公理,它们可以推导出难以想象的复杂的结论。

好,以上四条数学形式化的基本原则叙述完毕,下面开始推出一个逻辑定理:p⇒(~p⇒q)。推演过程如下:

根据第二条推演公理,得到p⇒(p∨q);

根据变换规则二,设p成立,则得到如下结论,

p∨q成立;

在p成立的前提下,设~p成立(即p不成立),则由∨逻辑的基本含义得到q成立(意思就是,“p或q”成立,且p不成立,那么必然q要成立);

根据上述结果,在p成立的条件下,如果~p也成立,那么q成立。

于是得到上面的逻辑定理p⇒(~p⇒q)。注意,这里面q是一个自由的命题变量,根据基本变换规则一,可以把任何命题代入q。因此,我们得到了一个重要结论,如果有一个命题“p”和它的逻辑非“~p”都成立,那么任意命题q都成立。也就是说,有矛盾的公理体系可以推导出任意命题都成立。这就是为什么公理体系必须一致,不一致的公理体系为什么无意义的原因了。

(三)数学形式化的目的

在谈完了“一致性”的意义后,我们还要再谈一下为什么希尔伯特要搞数学形式化?希尔伯特是提出数学形式化的代表人物,他提出数学形式化的目的还是从证明“希尔伯特第2问题”出发来考虑的。人们之所以笃信公理体系必然是一致的、无矛盾的,其实是因为人们日常研究并应用的公理体系都是有含义的,都是对应着客观实体的。人们相信客观实体及其规则是不会发生矛盾的。这正像我们中国成语“自相矛盾”故事所说的,一个无坚不摧的矛和一个无比坚固的盾在现实世界是不会同时存在的,只要用这个矛刺一下这个盾,就会有一方露馅。可是我们的公理体系不总是对应着存在的客观实体,很多情况下(特别是数学中)的公理体系对应着抽象实体或者理想实体(如集合、点、线、面),而且被对应的实体是无穷多的,我们无法通过有限枚举来证明这些公理体系的一致性。

由此,希尔伯特想到,彻底抛弃(数学)公理体系中的含义,构造一个形式化的公理体系,这个体系内的各种表达式仅仅具有符号意义。如果能由此证明这样的公理体系的一致性,那么无论把任何含义赋予这个公理体系时,必然是无矛盾的、一致的了。

正是由于希尔伯特这个想法,以及罗素和怀特海的“身体力行”,才使得哥德尔最终发现了不完备定理。否则,人们在研究公理体系的时候,总会把它对应的含义和其逻辑关系一起考虑,就不太容易把思路聚焦到公理体系的逻辑本身上面,也就不容易发现“哥德尔不完备定理”了。

(四)“哥德尔不完备定理”打破了“希尔伯特计划”么?

最后让我们再回到“哥德尔不完备定理”,看看哥德尔是如何在数学公理化(以及公理体系形式化)的大背景下“釜底抽薪”的。我们先来看“希尔伯特计划”的几个要素:

一是形式化。显然,“哥德尔不完备定理”并没有反对形式化,而且正是通过《数学原理》中公理体系形式化的成果,哥德尔才证明了不完备定理。

二是完备性和一致性。“哥德尔不完备定理”明确指出了公理体系完备性和一致性的矛盾之处,它证明了一致的公理体系(指蕴含皮亚诺公理的公理体系,以下类似,不再赘述)必然是不完备的,也就是说,完备性和一致性不可能同时获得。另外,“哥德尔不完备定理”还有一个推论,一般被叫做“哥德尔第二不完备定理”,它表明公理体系的一致性不能在这个公理体系内被推导出来。也就是说,不仅完备性和一致性有矛盾,即使是一致性本身,也不能在公理体系内得到证明(这个结论似乎显得更可怕)。

三是保守性。事实上,保守性也不再成立了。在“哥德尔不完备定理”的详细证明过程(第四重)和“Goodstein定理”介绍(第五重)中,我们就可以发现,当赋予了某些含义给公理体系之后,原来不可证明的命题变得可证明了。个人认为,赋予含义的过程本身就是在扩充这个公理体系(个人观点,可讨论)。这也是为什么哥德尔构造的forall(v,r)这个命题在《数学原理》确定的逻辑基础和皮亚诺公理体系内不可通过形式化的推演而证明,但是却在哥德尔的论文中被证明了的原因。哥德尔论文中也提到了,provable(x)是他构造的46个表达式中唯一个不能断言为原始递归性质的,这说明命题的“可证性”某种意义上是被哥德尔新赋予的含义。

四是确定性。显然确定性也不成立,因为哥德尔证明了存在某些命题无法证明其真假。而且就算在确定性判断的“真”和“假”以外加入“不可证明”这一类,也是不成立的。我们前面提到过,没有一个通用的算法能够判定任意命题是否不可证。

从上面这些要素来看,除了公理形式化没有问题外,其他要素都存在问题,要么互相矛盾,要么根本不成立。从这个意义上讲,“希尔伯特计划”确实被打破了,这也是当年“哥德尔不完备定理”最重大且最直接的影响。

“哥德尔不完备定理”发表时,希尔伯特还在世,面对这个伟大成果,大数学家希尔伯特也只能退让,不过只是略微退让。毕竟哥德尔只是在某一个范畴内(皮亚诺公理体系+原始递归性质)构造出了一个在公理体系内不可证明的命题,剔除这个范畴之后,结果又会是怎么样的呢(第五重)?

无论怎样,我们必须指出希尔伯特“为全部的数学提供一个安全的理论基础”这个目标并没有被打破,通过不断扩展公理体系,我们仍然可以为数学提供一个越来越安全的基础,只不过这个公理体系结构看起来要从原来的“有限”变为“无限”了[3]。

(三) 

第三重:“惊鸿一瞥”——“哥德尔不完备定理”的概要证明思路

首先恭喜开始修炼第三重神功的读者,相信你们已经对“哥德尔不完备定理”有了足够的理解了,现在我们开始进入到“哥德尔不完备定理”的证明思路中。

哥德尔在25岁就发表了这篇伟大的论文,但是哥德尔这个人却是一个很谨慎细致的人,他知道自己这篇论文可能带来的影响,因此他非常担心别人没有读懂它,或者引发什么误会。为此,在这篇论文的第一部分Introduction中,哥德尔概括但细致地给出了整个证明的思路。

不过,在我们理解哥德尔的证明思路之前,让我们先从更简单、更易懂的方式入手来逐步进入状态。

(一)悖论式语言

喜欢搞点逻辑类脑筋急转弯的读者可能了解一些悖论式的语言,譬如“这句话是谎话”。这句话到底对不对呢?如果说它对,那么它就真的是谎话了,既然是谎话,那么显然是不对的;如果说它不对,就意味着它不是真话而是谎话,显然它又对了。对可以推演出不对,不对却可以推演出对,这种语言可以称之为“悖论式语言”。由此,我们可以给出一个结论,能用语言表达的语句中,一定存在既不能说明它对也不能说明它错的句子。于是我们可以说,语言体系的逻辑表达是不完备的。

如果有人以为这就证明了“哥德尔不完备定理”,那未免太天真了。这种逻辑悖论在几千年前就被人们发现了,如果像希尔伯特、罗素等大数学家、逻辑学家连这个问题都搞不定,还有什么资格去推进数学公理化和公理体系形式化呢?

其实,这种悖论式语言在《数学原理》所定义的形式化公理体系中是无法表达的。设这句话(看作一个命题)为X,那么“这句话是谎话”就应该表达为“~X”。而悖论式语言需要把“~X”定义成X自己,也就是让“X=(~X)”,这是无论如何也不可能通过《数学原理》中的四条基本逻辑推演公理推演得到的结论。所以,这种悖论式语言只能证明“人类的语言体系逻辑表达不完备”,而并不能证明“公理体系不完备”。但是,这个思路和哥德尔的证明是有着相通之处的。

(二)罗素悖论

如果小时候对数学与逻辑感兴趣,也许会记得那个“只给不给自己理发的人理发”的理发师?这个悖论其实就是罗素悖论,只不过为了让人容易理解,把抽象的罗素悖论给改头换面了一下。罗素悖论是集合论中的一个经典悖论,我们把若干具有同一性质的对象划分为一个类,类中的这些对象被称为类的元素,当然,某些情况下类里面的元素也可能是一个类。现在我们设计某一种性质P(x)= x∉x ,也就是说具有性质P的对象不是自身的元素。那么,满足性质P的类为A={x|x∉x}。此时,如果我们想判定A这个类是否是A自身的元素时,悖论就出现了,如果A∈A,根据性质P,得到A∉A;如果A∉A,那么A就满足性质P,则A∈A。

罗素悖论是不能仅仅归因于语言表达的不严谨的,事实上这是一个实实在在的悖论,是关于类的公理体系必须要解决的问题。后来,人们修改了类的内涵公理,并提出了一个新的概念——集合。集合是能够成为某一个类的元素的那种类。由此,我们把类分成了两种,一种是集合,另外一种是真类(不能成为任何类的元素的类)。由于罗素悖论与“哥德尔不完备定理”的证明没有直接关系,因此本文不再讨论它了,有兴趣的读者可以自行深入了解。

之所以在这里谈到了罗素悖论,是因为希望读者知道,当公理体系引发了悖论之后,人们马上就会通过定义新的概念、提出或者修改公理来完善它。可是,当哥德尔的证明也构造出了类似悖论的命题之后,人们宁可接受这个命题是不可证明的,也没有试图通过修补公理体系来解决这个问题。因为通过哥德尔的方法构造的这类命题,使得人们无论定义多少个概念、补充或修补多少个公理,也无法消除它。

(三)哥德尔证明思路

哥德尔的证明思路和前面那些制造悖论的思路类似,都是要把命题自身引入到命题之中。区别在于哥德尔既不是利用了某种语言的不严谨,也不是简单地把命题变量直接代入到自身,而是严格按照公理体系形式化的要求,一丝不苟地把命题自身引入到这个命题之中,其论证过程天衣无缝、无懈可击!

需要说明的是,哥德尔的证明所使用的公理体系是基于《数学原理》中提出的形式化的公理体系,哥德尔在论文中把这个公理体系称为PM(Principia Mathematica),我们在后面也会沿用这个名字。

(1)建立命题表达式与自然数的对应(哥德尔对应)

哥德尔做的第一件事是把PM中的表达式和自然数对应起来。我们在讲解“一致性的重要意义”的时候,专门介绍了PM中的表达式和相应规则。PM中的表达式就类似下面的这些例子:

~ (∃z≤x ∙ (z≠1∧z≠x∧z|x))∧(x>1)    (判断x是否为质数的PM公式)

∀q∙p⇒(~p⇒q)         (我们证明过的公式,矛盾的体系可推出任何命题)

哥德尔说,这些表达式都是由一些基本符号组成的,是一组符号序列;而“证明过程”无非就是一组表达式组成的序列,是符号组成的序列的序列。按照希尔伯特的数学形式化思路,这些符号、表达式和“证明过程”都是无意义的,如果需要,可以赋予某种含义来表达一些现象。哥德尔指出,显然把这些符号赋予什么含义是与PM体系本身无关的,因此在这里哥德尔把这些符号对应为自然数。

于是,每一个基本符号都对应于一个自然数,每一个表达式则对应于一个自然数序列,每一个“证明过程”都对应于一个自然数序列的序列。反过来,每当给出一个合规的自然数序列,就可以唯一的对应一个PM表达式;每给出一个合规的自然数序列的序列,就可以唯一的对应一个PM证明过程。

再深入一步,有了这种对应后,就可以把一些对PM表达式或者证明过程的有含义性的判断对应成对于某一个自然数序列的判断,而这类对自然数序列的判断显然又可以使用PM中的表达式来进行。换句话说,通过哥德尔建立的对应,我们终于可以使用PM表达式来表达有含义的判断了。比如,根据事先对应关系的定义,一个合法的表达式对应的自然数序列一定满足某种规则,这种规则显然可以在PM中表达,于是我们就可以在PM中给出一个表达式,用来表达“某个表达式是否合规”这个含义。

由于这种对应(也被称为哥德尔对应)对于“哥德尔不完备定理”的证明非常关键,我们宁可不厌其烦地再举个很简单例子来使读者能够准确理解它。我们建立一种类似哥德尔说的对应关系,事先声明,我们建立的这个对应关系仅仅是为了容易理解下面的例子,实际上这个对应关系并不利于证明“哥德尔不完备定理”。我们建立的对应关系为,把PM体系中的全部合规表达式以及证明过程按照ASCII字符顺序排列,形成一个无限长的序列;然后从第一个表达式开始,我们把它对应到自然数1,第二个对应3,以此类推,直至无穷;然后再把全部不合规的表达式排列好顺序,从第一个开始,分别对应到自然数2、4、6、……。这样,PM中的任意表达式及证明过程都对应着唯一的自然数。我们再定义一个PM表达式,这个表达式用来判断某个表达式是否合规,设这个表达式为isFm(x)。显然,这种对应关系下的isFm(x)在PM中应为“~(∃z ∙ x=2z)”(注意PM中的任意数字变量都是0或自然数),这个表达式实际是判断x是否为奇数,如果是,则对应x的表达式合规,否则不合规。于是,一个“表达式是否合规的有含义的判断”被表示为PM中的一个表达式了。

当然,除了表示“表达式是否合规”外,也应该还可以表示“某个表达式是否在PM体系内可以证明”,哥德尔把这种表达式设为provable(x),他表示自然数(或自然数序列,或自然数序列的序列,修炼第四重时会看到,哥德尔采用一种巧妙的方法把这些序列们都对应为唯一的自然数了)x对应的表达式是否可在PM体系内证明。

最后,再强调一点,哥德尔把PM中的表达式对应为自然数,并不是哥德尔为了研究自然数或者数论而做的什么工作,而是哥德尔为了构造某种特殊的PM表达式而提出的方法。通过把PM表达式映射为自然数,再利用PM体系自身本来具备的表达自然数间关系的能力,来实现把PM中的命题引入自身的目标。

(2)构造一个特殊的命题表达式

哥德尔定义,“在PM命题表达式中,只有一个自然数类型的自由变量的那种表达式称为class-sign(考虑到这只是哥德尔起的一个名字,就不翻译了)”,比如“x>10”、“∃z∙z<x”、“∀y<x,z<x∙ ~(x=y∙z)”等等,这些都是class-signs,都只有一个自由变量x且x是一个自然数。

下面,我们给每个class-sign分配一个序号,并设第n个class-sign为Rn。当我们把某个自然数k代入到某个class-sign的变量时,得到的表达式记为Rn(k)。例如,若R9是“∃z∙z<x”,那么R9(8)就是“∃z∙z<8”,R9(9)就是“∃z∙z<9”。

再设provable(R)表示R这个命题表达式可以在PM中被证明(前面已经提到了)。大家知道,有些表达式是可以在PM体系中证明的,比如“3<9”、“~(x>10∧x<8)”,有些表达式是不可证明的,比如“3>9”、“(x>10∧x<8)”。因此,provable(3<9)为真,provable(x>10∧x<8)为假。

然后,我们定义一个集合K,K={n|~provable(Rn(n))}。也就是说,K是这样一组自然数的集合,集合中的元素n使得Rn(n)不可证(注意这里面的Rn(n)是把命题表达式R的序号带入到它的自由变量中得到的表达式)。

基于上述定义,必然存在一个命题表达式S(n),它表示n∈K,而且显然这个表达式是一个class-sign。既然S也是一个class-sign,那么S也必然有一个对应的序号,设这个序号为q,则S就是Rq。如果我们把Rq的序号q带入到Rq中,就得到了表达式Rq(q),这应该是一个可以在PM中表达的表达式。

最后,我们来考察表达式Rq(q)和~Rq(q)是否可以证明。根据上面的定义,我们可以得到下面的结论:

Rq(q) ⇔ S(q) ⇔ q∈K ⇔ ~provable(Rq(q))  …………………  (式1)

如果Rq(q)可以证明,意味着provable(Rq(q))为真,显然意味着Rq(q)也为真,根据(式1)可得到~provable(Rq(q))也为真,发生了“~provable(Rq(q))”和“provable(Rq(q))”同时为真的情况,也就是PM不一致了。换句话说,如果PM是一个一致的体系,那么只有Rq(q)不可证。

如果~Rq(q)可以证明,意味着~Rq(q)为真,根据(式1)得到~(~provable(Rq(q)))为真,也就是provable(Rq(q))为真,即Rq(q)可以证明,也即Rq(q)为真。这次又发生了Rq(q)与~Rq(q)同时为真的情况。于是,如果PM一致,那么~Rq(q)也不可证。

综上,对于Rq(q)这个命题,只要PM是一个一致的公理体系,那么在PM中既不能证明它,也不能否证它。换句话说,在PM体系之内,可表达的命题Rq(q)说不清楚对错。

(3)进一步的分析

哥德尔在论文中明确提到,这种构造思路是来源于两个有名的悖论——理查德悖论(Richard-antinomy)和说谎者悖论(liar-antinomy),后者就是我们最前面说到的“这句话是谎话”的悖论,而前者则与哥德尔的构造有类似之处,感兴趣的读者可以自行了解。

哥德尔证明的一个关键点,就是把“真”、“假”与“可证明”及“不可证明”区分开来了。这里谈到的可证明与否都是指在PM体系之内。我们日常生活与工作中,经常把“真假”与“是否可证明”等同起来,认为“真⇔可证明”,“假⇔不可证明”。其实,“真假”与“是否可证明”的严格关系应该是“可证明⇒真”、“假⇒不可证明”,但是它们的逆命题却不成立,也就是说“真命题未必可证明”,同时“不可证明的也未必就是假命题”。

前面我们给出了~Rq(q)和Rq(q)都是不可证明的论断,但这并不意味着Rq(q)的真假不确定。其实我们看一下(式1),就可以得到,Rq(q) ⇔ ~provable(Rq(q)),也就是说,命题Rq(q)说的其实是“Rq(q)不可证”,或者说,Rq(q)说的是“自己不可证”。那么根据我们前面的论断,Rq(q)确实是不可证的,也就是说Rq(q)这个命题为真。大家没有必要为此而感到惊讶,前面我们说了,哥德尔清晰的区分了“可证与否”与“真假”的关系,真命题不一定可证。

(4)再进一步分析——哥德尔第二不完备定理

哥德尔在论文的Introduction部分中介绍了自己的证明思路之后,特别指出,在详细的对Rq(q)为真这个结论进行分析时,会得出一个奇怪的结论——关于公理体系一致性证明的奇怪结论,哥德尔说将在论文的定理XI中进行讨论。

哥德尔论文中的定理XI就是我们今天常说的“哥德尔第二不完备定理”。

由前面的论证过程可知,当PM体系一致的时候,可以得到结论“Rq(q)不可证”,也就是“Rq(q)为真”。这里面并没有附加任何别的条件。因此,根据前面的论证,我们得到,

“PM体系一致”⇒Rq(q)

可我们知道,Rq(q)是不可证的。也就是说,“PM体系一致”也应该是不可证的,否则如果“PM体系一致”可证,那么就可以推出Rq(q),这与Rq(q)不可证矛盾。(严格的讲,这样的说法是不准确的,他没有证明“PM体系一致”⇒Rq(q)是可在PM体系中推导出来的。修炼第四重时会给出哥德尔更严格的证明过程。)

通过上面的简单分析,我们得到了“哥德尔第二不完备定理”,简单表述为“一个蕴含了皮亚诺公理的公理体系,其一致性是不能在这个公理体系内得到证明的”。

以上就是哥德尔不完备定理的证明思路,对于绝大部分数学爱好者,修炼到这里应该满意了。因为修炼到第三重之后,已经比较深入的理解了“哥德尔不完备定理”的证明思路,足够准确、全面的理解了“哥德尔不完备定理”的意义。

对于愿意学习的读者,可能仍然会有各种疑问?有人会问,哥德尔把PM表达式对应到自然数,到底有什么用,是怎么通过这种方式表达出provable(x)之类的有含义的命题的?也有人会问,修炼第一重的时候说到的“ω一致”和“原始递归”到底是什么意思?可能还有读者会问,第三重介绍的证明思路难道不是一个严格的证明过程么,为什么还要修炼第四重?对于需要解开这些疑问的读者,请你们和我一起,开始修炼第四重神功吧。

(四)

http://blog.sciencenet.cn/blog-409681-1067025.html

(五)

第五重:“洞见古今”——拓展了解“哥德尔不完备定理”的相关知识

正像金庸小说《倚天屠龙记》中的乾坤大挪移神功一样,连创作者都没有修炼到最高层。本人也一样,完全不敢说自己修炼成了第五重神功。因此,这部分内容略简单,只谈两个方面。

(一)“哥德尔不完备定理”的实例

1931年哥德尔提出了不完备定理以来,人们逐步相信了复杂公理体系的不完备性。80多年来,人们也逐渐发现了越来越多的哥德尔不完备定理的实例,最著名的就是“选择公理和连续统假设是在集合论中不能确定的命题”,1963年美国数学家保罗∙科恩最终证明了这一点,解决了希尔伯特23个问题中的第1个问题,这其中也有着哥德尔的贡献。

那么有没有直接符合哥德尔论文条件下的实例呢?也就是在皮亚诺公理体系中不可确定的命题?1982年,人们发现了第一个不属于哥德尔构造的、在皮亚诺公理体系内无法证明也无法证伪的算术命题实例——Goodstein定理。

Goodstein定理说的是,Goodstein数列一定会在有限步收敛到0。

Goodstein数列是这样的:首先选取一个正整数g1,比如设g1=18,然后把它写成2的次幂之和的形式(18 = 24+ 21),再把大于2的指数也写成2的次幂的形式,如果改写后得到的表达式中还有大于2的指数,则再继续把这样的数字写成2的次幂的形式,直到所有出现的数字都小于等于2,最后得到,

g1=22^2+21

这种写法叫Hereditary Base 2 Notation。g2是把g1的这种写法中所有的2都换成3,得到的新数字再减1,也就是,

g2=33^3+31-1

注意到这是个非常大的数,约等于7.6×1012。再继续下去,把g2写成3的次幂的形式,一直到不出现大于3的数字,然后把3换成4,得到的数再减1,就得到了g3。以此类推,不断计算下去,就得到了一个数列,这个数列就是Goodstein数列。

下面我们以g1=18为例,看看数列的前几项:

g1=22^2+21=18

g2=33^3+31-1=33^3+2×30=7.6×1012

g3=44^4+2×40-1=44^4+40=1.3×10154

g4=55^5+50-1=55^5=1.9×102184

只看这几项,我们一定会认为这个数列以极快的速度发散到无穷。事实上,这个数列会在有限步骤收敛到0。

Goodstein定理是一个容易看懂的算术命题,其证明可以通过集合论、良序定理以及超限序数等理论和知识来完成。大概思路就是使用超限序数ω构造一个与Goodstein数列平行的数列,这个新数列的每一项都不小于Goodstein数列的对应项,且这个新数列是递减的,必然在有限步后会收敛到0。

Goodstein定理在集合论中的证明过程不长,简单易懂。但是当我们在皮亚诺公理体系内研究这个命题的时候,神奇的事情发生了。1982年,Laurie Kirby和Jeff Paris发现,这个定理在皮亚诺公理体系下是不可证的。这个定理正好是哥德尔不完备定理的一个典型例证。

我们前面说过,哥德尔不完备定理是通过构造出一个不可证的算术命题来证明的。可是,作为已经修炼到第五重神功的我们,清楚的知道,哥德尔构造的这个算术命题我们几乎不可能直接的表达出来,因为太复杂、做不到。所以,哥德尔只是通过构造方法证明了不可证命题的存在性。直到Goodstein定理的发现,我们终于可以见到一个皮亚诺公理体系内不确定的算术命题的样子了。Goodstein定理简明易懂,计算过程明确,但是在皮亚诺公理体系居然无法证明,想想都觉得神奇。由此,我们应该更加钦佩哥德尔的伟大贡献了吧!

(二)是存在既一致且完备的公理体系的

我们讨论了这么多关于哥德尔不完备定理的内容了,估计大家已经毫无疑问地坚信这个定理了。在此,还是要再一次提醒大家,哥德尔不完备定理是有前提条件的,那就是“蕴含皮亚诺公理体系”。也就是说,并不是任何一致的公理体系都不完备。那么,真的存在既一致又完备的公理体系么?答案是肯定的。

我在这里可以给大家即兴构建一个公理体系:

这个公理体系只有两个数字0和1,只有一种二元运算“+”,其三条公理如下,

(1)0+0=0

(2)0+1=1+0=1

(3)1+1=0

公理体系构建完毕。

这个公理体系极为简单,在这个体系内可表达的全部命题都可以证明(比如1+1+1+0=1),而且这个公理体系肯定是一致的,也是“ω一致”的。

其实,一个公理体系如果比较简单,不能承载哥德尔对应中起码的编码要求,那么这个公理体系的一致性与完备性是否存在矛盾就不属于哥德尔定理覆盖的范畴了。对于一些简单的公理体系,是可以证明其既一致又完备的。当然,我构造的公理体系太简单了,以至于一点用处也没有。在实际的数学中,有一种叫做Presburger arithmetic(Presburger算术)的体系,因不包括乘法,所以其实是既一致又完备的,感兴趣的话可以Google之以详细了解。

另外,对于一些也很复杂的公理体系,如果其不足以定义自然数,哪怕这样的公理体系包含了自然数,也可能不受“哥德尔不完备定理”的约束。比如,塔斯基(Tarski)证明了实数和复数理论都是一致且完备的一阶公理体系,虽然它们都包括了自然数;再比如,著名的欧几里德几何在补充了平行公理和实数理论之后,也是一个一致且完备的一阶公理化系统。

“哥德尔不完备定理”确实伟大,但是也用不着神化,它有它的前提条件,有它的适用范围,当然,也同样有着划时代的伟大贡献!

结语

到此,五重神功全部修炼完毕。“哥德尔不完备定理”是一个划时代的伟大成就,也是哥德尔一生唯一的一个重大研究成果。作为一个数学家、逻辑学家的哥德尔,一生能做出这样一个伟大的成就,值了。作为读者,如果通过这个修炼过程,能够真正深入了解并理解了“哥德尔不完备定理”,我想,也值回大家花费在阅读和思考上的时间了吧。

[1] 网上能查到的哥德尔论文的英译版,网址:http://www.research.ibm.com/people/h/hirzel/papers/canon00-goedel.pdf

[2] 本人实在不忍心这样描述罗素和怀特海,“才智枯竭”这个说法参见维基百科https://zh.m.wikipedia.org/zh-hans/数学原理

[3] 参见张寅生先生在科学网的博客,http://blog.sciencenet.cn/blog-320682-969874.html

未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ghost镜像浏览器_新电脑,GHOST装不进系统?不要急,跟我来

前几天&#xff0c;朋友转了台新电脑&#xff0c;用的是第十代CPU I3 10100&#xff0c;什么都安装好了&#xff0c;也按要求做了GPT分区&#xff0c;用GHOST安装了WIN10系统&#xff0c;可是重启时就是进不去&#xff0c;在BOOT选项里根本看不到硬盘。这是为什么呢&#xff1f…

python异步消费kafka_Kafka 通过python简单的生产消费实现

使用CentOS6.5、python3.6、kafkaScala 2.10 - kafka_2.10-0.8.2.2.tgz (asc, md5) 一、下载kafka 下载地址 https://kafka.apache.org/downloads 里面包含zookeeper二、安装Kafka 1、安装zookeeper mkdir /root/kafka/ tar -vzxf kafka_2.10-0.8.2.2cd /root/kafka/kafka_2.10…

【技术趋势】2020 五大技术趋势:无人驾驶发展、机器视觉崛起、区块链实用化、人类增强技术、超自动化...

图源&#xff1a;https://unsplash.com/来源&#xff1a;AI开发者原标题&#xff1a;Here Is A Rundown of 5 Major Tech Trends Hitting 2020作者&#xff1a;| Richard Liu链接&#xff1a;https://medium.com/swlh/here-is-a-rundown-of-5-major-tech-trends-hitting-2020-6…

正则不能输入特殊字符_正则表达式语法学习和在线练习

标题: 正则表达式语法学习和在线练习作者: 梦幻之心星 sky-seekerqq.com标签: [#正则表达式,#语法,#学习,#练习]目录: [语法]日期: 2021-01-26背景说明正则表达式使搜索和替换操作更加灵活高效。许多程序设计语言都支持使用正则表达式进行字符串操作。正则表达式是由普通字符…

非接触物体尺寸形态测量_检修人必备的测量常识

小编今天给大家分享一下测量的常识&#xff0c;咱们搞机械的一定要懂点测量知识&#xff01;一、测量器具的分类测量器具是一种具有固定形态、用以复现或提供一个或多个已知量值的器具。按用途的不同量具可分为以下几类&#xff1a;1. 单值量具只能体现一个单一量值的量具。可用…

生物战教训、生物安全问题以及未来监控军民两用生物技术扩散的手段

来源&#xff1a;美国空军国家安全研究学会研究报告2005年9月【知远导读】本篇推送编辑节选自美国空军国家安全研究学会2005年9月发布的一份题为《生物战教训、生物安全问题以及未来监控军民两用生物技术扩散的手段》的研究报告。该报告直接来源于作者海伦普凯特&#xff08;He…

如何避免字符串混淆加密_iOS-代码混淆加固方案

对于iOS来说&#xff0c;由于系统是封闭的&#xff0c;APP上架需要通过App Store&#xff0c;安全性来说相当高。但是对于大厂和知名APP而言&#xff0c;别人给的安全保障永远没有自己做的来得踏实。所以对于大厂、少部分企业级和金融支付类应用来说加固是相当重要的。下面是目…

DARPA计划在2021年开展多种新型武器概念研究

来源&#xff1a;中国指挥与控制学会“远射”项目DARPA计划于2021年投资2200万美元启动“远射”项目&#xff0c;演示一种空射武器系统。该系统由速度较慢的远程飞行器搭载至战区&#xff0c;在战区上空发射多枚空空导弹来实施作战。该武器可由现有战斗机外部挂载&#xff0c;或…

python算法实现源码_Python实现七个基本算法

1.顺序查找当数据存储在诸如列表的集合中时&#xff0c;我们说这些数据具有线性或顺序关系。 每个数据元素都存储在相对于其他数据元素的位置。 由于这些索引值是有序的&#xff0c;我们可以按顺序访问它们。 这个过程产实现的搜索即为顺序查找。顺序查找原理剖析&#xff1a;从…

python词云设计实例_python词云库wordcloud的使用方法与实例详解

wordcloud是优秀的词云展示第三方库一、基本使用 import jieba import wordcloud txt open("1.txt", "r", encodingutf-8).read() words jieba.lcut(txt) txt_1 " ".join(words) # print(txt1) w wordcloud.WordCloud(font_path"msyh.t…

细胞因子风暴与新冠肺炎

来源&#xff1a;陈辉科学网博客链接地址&#xff1a;http://blog.sciencenet.cn/blog-3426569-1219679.html 2020年2月15日下午&#xff0c;在国务院联发联控机制新闻发布会上&#xff0c;周琪院士介绍说“炎症因子风暴”[作者注释&#xff1a;即是细胞因子风暴&#xff08;Cy…

mysql 启动 修改密码_基础的启动/停止/重启/密码修改MySQL

如何启动/停止/重启MySQL一、启动方式1、使用 service 启动&#xff1a;service mysqld start2、使用 mysqld脚本启动&#xff1a;/etc/inint.d/mysqld start3、使用 safe_mysqld启动&#xff1a;safe_mysqld&二、停止1、使用 service 启动&#xff1a;service mysqldstop2…

预编译对象解决SQL注入问题

转载于:https://www.cnblogs.com/suanshun/p/6739454.html

eclipse中添加jar包后运行时提示noclassdeffounderror_一看你就懂,超详细 java 中的 ClassLoader 详解,耐心看~...

备注&#xff1a;本文篇幅比较长&#xff0c;但内容简单&#xff0c;大家不要恐慌&#xff0c;安静地耐心翻阅就是Class文件的认识我们都知道在Java中程序是运行在虚拟机中&#xff0c;我们平常用文本编辑器或者是IDE编写的程序都是.java格式的文件&#xff0c;这是最基础的源码…

寻找人机之间的中间地带-评述3本人机协作的书

来源&#xff1a; 混沌巡洋舰1 AI 错觉知其然&#xff0c;更要知其所以然&#xff0c;了解数据挖掘的算法的基础原理&#xff0c;可以在这个人工智能和大数据可能比工业革命更能改变人的一生的历史时期中&#xff0c;更有智慧的应用人工智能。AI错觉这本书18年在美国出版&#…

TypeError: HashUpdate fail

关于crypto的md5加密报错&#xff1a; 代码&#xff1a; var crypto require(crypto); var md5 crypto.createHash(md5); //crypto模块功能是加密并生成各种散列 var oldpass md5.update(oldpass).digest(hex); var newpass md5.update(newpass).digest(hex);如果md5.updat…

mysql 与gemfire的同步_(转)分布式缓存GemFire架构介绍

1什么是GemFireGemFire是一个位于应用集群和后端数据源之间的高性能、分布式的操作数据(operational data)管理基础架构。它提供了低延迟、高吞吐量的数据共享和事件分发。GemFire充分利用网络中的内存和磁盘资源&#xff0c;形成一个实时的数据网格(data fabric or grid)。Gem…

混合云关键技术能力和发展趋势

来源&#xff1a;IDC圈为满足成本、按需、隐私、合规、避免供应商锁定等目的&#xff0c;企业常常会采用多个公有云或私有云&#xff0c;这会造成基础设施资源池多样化&#xff0c;还要面临同时管理物理机、虚拟化等异构资源环境。多云管理由于面临同时管理物理机、虚拟化等异构…

文字竖着写怎么设置_微信置顶文字怎么设置 微信置顶文字的方法介绍|微信|置顶软硬件资讯川北在线...

阅读本文前&#xff0c;请您先点击上面的“蓝色字体”&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到文章了。每天都会有分享&#xff0c;都是免费订阅&#xff0c;请您放心关注。注&#xff1a;本文转载自网络&#xff0c;不代表本平台立场&#xff0c;仅供…

DOM查找元素的方法总结

按HTML查找&#xff1a;优点&#xff1a;范围可大可小&#xff0c;可设置条件&#xff1b;包括五种方式&#xff1a;1.按id查找&#xff1b;2.按标签名查找&#xff1a;var elems parent.getElementsByTagName();3.按name属性查找&#xff1a;要回传给服务器的元素需要name属性…