聊聊計算和這個世界(上)

2021-09-13 16:31:30 字數 3664 閱讀 4355

凡是計算機專業的學生,一定聽說過,要學好英語和數學——英語自然是很重要的不提,那數學是為什麼呢?

我還是願意寫一點自己的淺薄想法

圖靈機(英語:turing machine),又稱確定型圖靈機,是英國數學家艾倫·圖靈於2023年提出的一種抽象計算模型,其更抽象的意義為一種數學邏輯機,可以看作等價於任何有限邏輯數學過程的終極強大邏輯機器。
直白的說,圖靈認為圖靈機就是能模擬人類所能進行的任何計算過程的機器。

他是怎麼得出這個結論的我們不管,如果感興趣請自行閱讀圖靈的秘密。現代計算機可以看作是圖靈機的實現,所以如果我們想在計算機裡創造乙個世界——只要用計算來表示這個世界就可以了。

那什麼是計算呢?

計算(英語:calculation),是一種將單一或複數之輸入值轉換為單一或複數之結果的一種思考過程。
又是乙個分開都認識,合起來看不懂的東西——囧rz,不如用畫圖來理解

在把這個定義想了很多遍之前,我很狹隘的認為計算只屬於數學,比如輸入可以是乙個/一堆蘋果,輸出可以是蘋果10個/青蘋果5個、紅蘋果5個/大蘋果5個、小蘋果5個...根據不同的計算可以有不同的輸出。用數學的方式來表達就是:

但乙個廚師看菜譜,在腦子思考用料、比例、做法也是計算,比如這裡有一道紅油耳片:

做法計算過程

1. 豬耳入鍋,加花椒和薑塊煮熟

(豬耳,花椒,薑塊) =

2. 煮熟後豬耳切片

(去腥煮熟豬耳) =

3. 醬油、辣椒油、花椒粉、白糖、味精、食鹽、醋、香油調勻

調勻(醬油、辣椒油、花椒粉、白糖、味精、食鹽、醋、香油) =

4. 拌好上桌

(調味料, 切片的去腥煮熟豬耳) =

有經驗的廚師可以想象得出:不加花椒和姜是什麼味道;怎麼切、切多大口感最好;白糖放多少才最能提鮮...在實際操作之前,可能已經想過了很多種方案,然後挑出最合適的去做——圖靈機執行的就是這樣的乙個計算過程

萬事萬物之間都有聯絡,聯絡恰恰符合計算的定義,那麼這個世界就可以用計算來表示,而關鍵就在於如何把這些聯絡用合適的計算表達出來。

就像如果用地心說來解釋太陽系執行,不僅多了本輪/均輪的區分,而且執行軌跡過於複雜,所以假如地心說是正確的,我想天文學家也不會選擇這個模型來計算。

我對計算和這個世界的理解就是這樣,接下來簡單舉幾個例子,說明軟體開發中是如何用到數學模型的。

假如存在一堆蘋果,用小學數學的知識可以做這些計算:

無論是新買/撿到/收到蘋果,只要是數量上有增加,都可以統一用+來表示;無論是扔了/丟了/吃了蘋果,都用-來表示。

來看看格鬥遊戲是怎麼用計算來表示的

紅色代表攻擊,藍色代表身體,當a的紅色塊接觸到b的藍色塊,b就扣100血。寫成偽**就是這樣的:

def collapse (a, b):

if a.red 碰撞 b.blue:

b.life -= 100

97裡面,禁止八神在對方跳起來的時候放八稚女,就是因為碰撞框太大,snk也因此在98裡做了調整

還是順便提一句,3d遊戲裡的碰撞檢測也是同樣的原理

比如這是虛幻4引擎中的碰撞模型,黃色的是角色,線框膠囊形狀的包圍是實際處理的碰撞檢測物件!計算是到膠囊為止的,並不會對其內的三角形再進行額外的檢測。這樣的話乙個人也就被分為了十幾二十個檢測,再加上包圍盒和八叉樹,一幀就算有數十人亂跑,所需執行的碰撞檢測也就在數百次左右o(nlogn).

所以格鬥、回合、棋牌、moba、競速...所有的遊戲,看似不同,但都可以抽象成同樣的+、-、×、÷...等等計算

因此,有人說最好的遊戲引擎是撲克牌,因為數字不像畫面,會限制想象。

我還聽人說過,ps4上的 地平線 比swtich上的 荒野之息 畫面好幾千倍,但他花在 荒野之息 上的遊戲時間也是 地平線 上的幾千倍。

這裡有一片關於荒野之息設計的文章,裡面有一段寫得很好

然而,作為遊戲設計師,我卻可以看到隱藏在水下的,更多可能被拋棄的設計。為什麼冰塊上限是三塊,而不是兩塊、五塊乃至無限塊?為什麼再次使用技能是拆毀,而不是將冰塊變作一種攻擊**?為什麼一定要是從水面上豎起的方形冰塊,而不是憑空生成的冰塊、或者像炸彈技能一樣拆分成不同形狀、高度的冰塊?為什麼冰塊技能不能彼此疊加,提供林克通向更高高度的橋梁?為什麼不設計出乙個可以移動的冰塊技能,就好像冰舟一樣供林克搭乘?更進一步思考,為什麼一定是冰?他們為什麼不設計乙個隨時可以生成木塊、鐵塊甚至力場塊的技能?為什麼不設計出乙個能夠隨時生成空中落腳點的憑空生成方塊的技能?為什麼只有在步行的時候才能使用這個技能,如果允許在跳躍中或空中使用是否可行?為什麼冰塊不能移動,不能像其他技能的目標一樣,靜止後予以攻擊然後飛出?為什麼結冰技能不能對所有的冰使用?

我只用了大概15分鐘,就構思了關於「結冰方塊」這個技能十多套不同的設計實現方案,並且想出了其中六七套劣於現有設計的理由。剩下的設計則各有優劣,我難以斷言說它們的設計就劣於現有方案,可能需要實際製作並試玩後才能決定;其中有些可能有技術難點,但也有些的技術難度乍看上去和現有的方案其實相差無幾。

現在,你們可以假想自己退回到《荒野之息》「結冰方塊」異能定案之前的時間點上,重新審視這個技能的設計,從中挑選出最後的定稿。你們要面對的很可能不只是十多個可行的方案,而是數倍於此的不同選擇:畢竟,《荒野之息》的設計師人數要更多,他們也更加專心致志於此。這就是那「水面下的設計冰山」——它們之中的很大一部分,或是在2d的驗證版中,或是在3d的驗證版中,可能都被實際製作出來過。

其實這套思維方式在產品設計的時候也可以用到,比如身邊用的最多的手機:為什麼用玻璃後蓋,為什麼用異型全面屏,為什麼攝像頭要突出?

按思路寫下去,應該說說演算法是如何提高計算效率的,但我並沒有想好該如何表達,再者這一篇也已經拖了夠久了,所以先發布出來。

世界上沒有天堂和地獄

每個人不僅是眾生,也是佛陀。在普通人的眼中,所有的生命都存在 在佛陀的眼中,佛陀的尊嚴也存在。生活是一種修行,培養自己的心。當你沒有意識到的時候,宇宙就在心裡。看看山或山,水或水,世界或世界,但所有這些都是安靜和乾淨的。人們常說天堂和地獄,其實世界上沒有天堂和地獄,他們只是在人的心裡,有貪婪 仇恨 ...

這個世界上總有比你更努力的朋友

這個世界上總有比你更努力的朋友。成功者與失敗者之間其實相差並不是很大,這個相差不大,比如你總是覺得自己無論怎麼努力,看起來別人似乎都比你要強,感覺自己的努力毫無意義,於是逐漸放棄了。這也就是為什麼同一名校畢業生處於同一水平或者水平相差不大時,很多年後,一下子就變成了乙個天上,乙個地下的原因之一。不少...

世界上最複雜的函式 世界上什麼貨幣最值錢?

世界上什麼貨幣最值錢?這點可能大多數人都會說歐元 美元之類的貨幣。但是現在,本文將給大家普及下世界上最值錢的貨幣是什麼。請往下看。世界上最值錢的貨幣是科威特的第納爾,它值22.8675元人民幣。除此之外,世界上前十的貨幣名單為 巴林第納爾 阿曼里亞爾 約旦第納爾 英鎊 開曼元 歐元 瑞士法郎 美元 ...