我的貓圖靈完備嗎? - belaycpp

banq發表於2021-11-30

本週我將觸及一個更輕鬆的主題,但仍然非常重要:我的貓圖靈完備嗎?

Peluche(法語中的“毛絨”的意思)是一隻光滑的貓,不知何故住在我家。

她將是我們今天的測試物件。

 

Peluche 圖靈完備嗎?

 

什麼是圖靈完備

圖靈完備性的概念是,如果裝置可以模擬圖靈機,那麼它就可以執行任何型別的計算1

這意味著任何實現以下八條指令的機器都是一臺計算機(因此可以執行任何型別的計算):

  • .與,: 輸入和輸出一個值
  • +與-:增加和減少儲存單元包含的值。
  • >與<:向左或向右移動當前儲存磁帶。
  • [ and ]:執行迴圈。

所以,如果 Peluche 能夠執行這八個指令,我們可以考慮她的圖靈完備。

 

圖靈完備性的證明

  • 輸入輸出

首先,如果我能得到反應,我會嘗試戳 Peluche。她看了我一眼,然後才轉過身。所以它是這樣的:我戳了她一下,我得到了一個反應。所以她可以處理輸入並給出輸出。

輸入/輸出確認!

  • 增減記憶體值

前幾天,我下班回來:瓷磚上到處都是貓糧……

但後來我仔細看了一下,意識到可以對瓷磚塊進行編號,對我來說,這看起來很像記憶帶!由於她可以將貓尿從貓糧盆中灑在瓷磚上,然後直接從瓷磚上吃掉它們,因此她可以增加和減少給定儲存單元中包含的值。增加/減少確認!

  • 向左或向右移動當前記憶體單元

還有一次,我在洗碗時不小心灑了一些水在 Peluche 身上。她開始在廚房裡到處亂跑,弄得一團糟。

在弄得一團糟時,她移動了她的碗。

由於碗的移動,她又會將貓糧灑在另一塊瓷磚上。這算作移動記憶體頭以編輯另一個記憶體單元。

已確認儲存磁帶的移位!

  • 執行迴圈

所以,在這個爛攤子之後,我(顯然)不得不清理。

不到五分鐘後,瓷磚上又撒有貓糧了。

是的......她絕對可以執行迴圈......

迴圈確認!

 

我們剛剛證明了 Peluche 確實是圖靈完備的。那麼現在,我們如何使用她來執行高效能運算?

現在我已經證明 Peluche 是圖靈完備的,我可以對她做任何事情!

因此,我試圖給她簡單的程式碼來執行:

..........

執行結果是我們知道的:她什麼都不做。

雖然它們可以,但也許貓根本不是為了執行程式碼而設計的?

 

這是一個幽默笑話。

相關文章