莊子有句話:“夏蟲不可以語于冰者,篤于時也。”意思是說,夏天的蟲子無法理解冰雪,因為它受限于生命的時長,等不到能看見冰雪的冬天就死了。其實在莊子看來,人的生命也很短暫,認識也很有限。
他說,“吾生也有涯,而知也無涯”,就是說用短暫、有限的生命,無法理解無限世界的事情。不過,人具有想象力,雖然看不到無限的事物,卻能想象出一些規律,并且通過邏輯保留合理的。有些人做到了這一點,他們的認知水平就比其他人高出好幾個層次了。
我們今天就從無窮大說起,說說認知升級的事情。
![]()
說起無窮大,先要說大數字。小孩子們常常愛比誰說的數大,比如一個孩子說出一百,另外一個孩子說一萬。別的孩子就問了,一萬有多大?他說,一萬就是一百個一百,別人只好不說話認輸了,因為孩子們還是有基本邏輯的,知道一百個一百顯然比一個一百多。
當然,過兩天輸了的孩子跑去問家長,從家長那里知道一億這個數,他就又贏回來了。這時,如果輸了的孩子腦瓜子靈,會說出兩億來翻盤,最后孩子們就不斷地喊,一億億億億億億……,最后是肺活量最大、氣最長的那個孩子贏。
接下來,可能又有孩子要回去問家長,家長告訴他無窮大,這回,他就可以回去秒殺那些一億億億……不斷喊下去的孩子們了。但是你要問他無窮大是多少,誰也說不出來,大家只是接受了這個虛構的概念,認為它是世界上最大的數。
下面我就問大家一個問題,無窮大是一個數嗎?它可以被看成是數軸的終點嗎?它在數學上和某個具體的大數一樣大嗎?
這些很基本的問題很多人在大學里學完高等數學其實也沒有一個明確的概念,在絕大多數人心目中,無窮大是一個數,只是它比你能想象的數更大而已,人們依然會用理解一些具體數字的方式去理解它。無窮大的世界和我們日常認知的世界完全不一樣。
![]()
當然人類也是直到現代才開始正確認識無窮大。1924年,大數學家希爾伯特講了一個旅館悖論,讓人們重新認識無窮大的哲學意義。他的悖論是這樣講的:
假如一個酒店有很多房間,每一個都住滿了客人,這時你去酒店問,還能給我安排一間房子嗎?老板一定說:“對不起,所有的房間都住上了客人,沒有辦法安排您了。”
![]()
但是,如果你去一家擁有無限多個房間的旅館,情況可能就不同了。雖然所有的房間均已客滿,但是老板還是能幫你“擠出”一間空房的。
他只要這樣做就可以了。他對服務生講,將原先在1號房間的客人安排到2號房間,將2號房間原有的客人安排到3號房間,以此類推,這樣空出來的1號房間就可以給你了。類似的,如果來了十個、八個人,也可以用這種方式安排進“已經滿客”的酒店。
![]()
接下來的問題來了,既然每個房間都被現有的客人占據了,怎么又能擠下新的客人?因此我們說這是悖論。但是“旅館悖論”其實并不是真正意義上的數學悖論,它僅僅是與我們直覺相悖而已。
在我們的直覺中,每個房間都被占據,和無法再增加客人是等同的,但這只是在有限的世界里的等價性,在無窮大的世界里,數學中的很多邏輯都需要重新梳理一遍。我們在有限的世界里得到的很多結論,放到無窮大的世界里,需要重新檢驗,有些能夠成立,有些不成立。
比如說在有限的世界里,一個數加上1就不等于這個數了,因為比它大1,但是在無窮大的世界里,這條結論就不成立,因為無窮大加1還是無窮大,就如酒店悖論中的那個酒店一樣,再增加一個客人,酒店依然能夠容納得下。
事實上,在希爾伯特做完那個報告后,全世界數學家不得不回去把所有的數學結論在無窮大的世界里又推導了一遍,看看有沒有什么漏洞。
![]()
在上面的問題中,客滿的、無窮多房間的旅館,不僅可以增加有限個客人,甚至能增加無限個新客人。那么當無限的客人來住店,怎么辦呢?具體的做法是這樣的,我們讓原來住在第1間的客人搬到第2間,第2間的客人搬到第4間,第3間的搬到第6間。
總之,就是讓第N間的客人搬到第2N間即可。這樣就騰出無數間的客房安排新的客人了。我們知道一萬乘以2是兩萬,不等于原來的一萬,但是無窮大乘以2還是無窮大,并不是兩個無窮大。
無限集合的性質與有限集合的性質并不相同。對于擁有有限個房間的旅館,其偶數號房間的數量顯然總是小于其房間總數的,比如1萬個房間,偶數號的有5000間,不等于總數。然而,在無窮房間的旅館中,偶數號房間的數量與總房間數量是相同的。
類似的,我們可以證明一條長5厘米的線段上的點,和一條長10厘米線段上的點是“一樣多”的。這個證明也很簡單:
![]()
在圖中,下面的線段長度是10厘米,上面的是5厘米。我們將它們平行放置,于是將它們兩端相連(虛線),就會交會到一個點S處。接下來,對于10厘米長線上的任意一個點X,我們將X和S相連,就和5厘米短線有一個交點,我們假設為Y,這就說明長線上的任意點,在短線上都可以找到對應點。
因此,短線上的點應該不少于長線上的點。這樣,在無窮大的世界里,我們可以認為10厘米線段上點的數量和它的一個子集,即5厘米線段上的點是“相同的”。當然更準確的說法是基數相同。
接下來就有一個問題了,不同類型的無窮大,比如整數的個數,或者10厘米長線段上的點數,它們彼此能比較么?答案是可以,這里面的細節我們省略了,在這里我直接給大家答案,就是一根很短的線段上的點數,要比所有的有理數數量都多,前者的基數比后者大。我知道這可能有點顛覆你的直覺,但這個結論是正確無疑的。
講到這里,我們一開始的問題,“無窮大是不是一個特別特別大的數?”現在有答案了。它不是一個具體的數,它和萬億、googol數(10的一百次方)等等都不同。它不是靜態的,而是動態的,它反映一種趨勢,一種無限增加的趨勢。在增大的過程中,有的無窮大會比其它的更大,因為它變化的趨勢比其他的無窮大更快。
對于無窮大的概念,關鍵要理解它是動態變化到了最終盡頭的描述。事實上,無窮大(和以后要介紹的無窮小)代表著一種新的科學世界觀,就是讓我們關注動態變化的趨勢,特別是發展變化延伸到遠方之后的情況。
上面這些關于無窮大世界的特點可能有些顛覆你的認知,這并不是說你原先的認知有問題,而是說我們在有限世界里得到的認知太狹隘了,相比浩瀚的宇宙和人類的知識體系,我們的認知可能就如同夏天的蟲子,受限于我們的生活環境。這也是我們比較接受通識教育的原因,因為這樣可以讓我們以最快速度走出我們認知的圍墻。
當然,有些同學可能會問,了解無窮大世界這件事情有什么現實的意義?它的意義很多,這里我不妨說一個具體的例子。
我在《谷歌方法論》中講到了關于計算機算法的衡量標準。假如有三個完全相同功能的算法,A、B和C。
- 算法A要進行100,000*N次運算;
- 算法B要進行N^2次運算;
- 算法C要進行N次運算。
請問哪種算法好?
很多人會說,當然是算法C好,至于A和B,要看情況。如果N<100,000,那么算法B更好,否則就是算法A好。比如,N是20萬時,A方案就相當于10萬*20萬,B方案相當于20萬*20萬,可見B是很大的。
但是,在計算機科學中,衡量兩個算法的復雜度時,只會考慮這兩種算法在處理近乎無窮大的問題上的表現,也就是N趨近于無窮大的情況。因為它關心的是,當問題越來越復雜后,每一種算法所需要消耗的計算機資源(比如計算時間)的增長趨勢。這樣一來,算法B顯然是計算量最大的。
至于兩個算法在復雜度上只差出常數倍,在計算機科學上就認為它們是等價的。對計算機科學家們來講,將一個算法從平方的復雜度降低到線性,這是撿西瓜的事情,將一個線性復雜度的算法的計算量再減小幾倍,這是撿芝麻的事情。
要點總結:
首先,我們通過希爾伯特旅館悖論,說明生活在有限世界的人,其實很難想象無窮大的世界,在那里,很多規律和有限世界是不同的。比如說,在無窮大的世界里,部分可以完全和整體等價。
因此,我們不能以有限的認知,去理解無限的事物,也不能把那些從很少的經驗中得到的結論,放大后用于更大的場景。比如,有些人受過一兩次騙,就得到一個結論,世界上沒有一個是好人。這就陷入了以有限的經驗理解無限事物的誤區。
接下來我們強調了,無窮大并非是一個靜態的、具體的大數字,而是一個動態的、不斷擴大的變化趨勢,希望通過這個概念,提示大家能夠以動態的眼光看待世界。
至于無窮大這個概念的現實意義,我們舉了計算機科學中算法復雜度的例子,量級的差異,要比同量級之間幾倍的差異重要得多。我們在工作中,要優先考慮量級的提高,而不是撿芝麻的事情。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.