我很抱歉這個新手問題,但我需要一個快速的答案告訴朋友,如果這是可能的。是否可以編寫自解釋的FSM或下推自動機?
回答
哇。很多回答這個問題歸結爲決定這樣的事情意味着什麼。
快速回答是「否」。
可以解釋程序寫在語言。你不能'解釋'FSM。你可以做的是讓一個FSM模擬另一個。以一種微不足道的,無趣的方式,FSM可以模擬自己。還可以設置FSM來模擬另一個比它小的FSM。一般來說,它不能模擬比它大的FSM。它的狀態總數太少,不足以代表更大的密克羅尼西亞聯邦的狀態。
是否FSM可以考慮模仿本身在不平凡的方式下降到語義。考慮產生序列1,1,1,1的FSM。現在看看每個第二個輸出。這是完全一樣的順序。 FSM同樣可以重複產生1,0,1,1,1五個步驟序列。解釋自己的解釋器的有趣行爲 - 即你看到的只是不同規模的完全相同的輸出 - 是存在的。那麼這樣做的答案是「是」?
「分形」屬性本身就足以證明這樣的FSM被稱爲自我模擬器 - 但不是自我解釋器。一個自我解釋者,至少對於任何明智的定義,都必須有更多的榮譽。
- 空解釋器解釋 語言「停止」應該不算 作爲自我解釋。語言必須具有更多的複雜性。在上面的例子中,我們並沒有要求FSM做足夠的事情。它忽略了它的輸入。
- 一個可以解釋自己的解釋器只是一個有趣的東西,因爲它也可以解釋其他程序以相同的語言寫成,並且變化很小(粗略地說,最小改變意味着只改變一個指向不同程序的指針)。
所以,現在的問題。一個FSM,同樣也是一個下推式自動機,不能在其輸入磁帶中倒退。如果我們將磁帶上的輸入符號當作計算機語言中的程序來考慮,那麼無論是FSM還是下推自動機都不能作爲傳統意義上的解釋器。嗯,我們已經知道我們不能使用FSM或下推自動機來解釋圖靈完成的語言。那麼一些更具限制性的語言會怎樣產生一個任意長度的重複二進制模式呢?
我們允許三個指令,
- OUT0 - 輸出0
- OUT1 - 輸出1個
- RESTART - 又回到了起點。
我們可以爲此語言的任何程序編寫一個FSM。這真的很容易。我們不能編寫一個可以用這種語言解釋任何程序的FSM。
下推自動機也是如此。除了一定大小的序列之外,它必須使用堆棧來存儲內存。問題是,只要它從堆棧中讀回,下推自動機的堆棧部分就忘記了那裏的東西。同時FSM部分只能存儲一個有限大小的序列。
下推自動機和FSM不能解釋簡單的三種指令語言。如果固定的FSM或下推自動機能夠執行一些語言中的任意程序,那麼該語言不僅必須不是圖靈完整的,而且必須比給定的更簡單。這是非常嚴格的,所以說FSM和下推自動機不能自我解釋是合理的。
FSM = Flying Spaguetti Monster?你可以寫一個自我解釋的圖靈機,但是一個FSM不是圖靈完整的(據我所知),所以我認爲答案是否定的,你不能。
- 1. 瞭解下推自動機
- 2. 隊列自動機可以模擬任何下推自動機?
- 3. [自動釋放]是否可以接受?
- 4. 想知道下推自動機解決方案是否正確
- 5. 下推自動機
- 6. 編寫長文檔和註釋時是否可以讓PyCharm自動斷行?
- 7. 在這種情況下,下推自動機是否有用?
- 8. Palindrones下推自動機
- 9. 下推自動機(PDA)
- 10. 以後自動釋放或釋放是否更好?
- 11. 是否可以編寫腳本來自動安裝Firefox插件?
- 12. 是否可以自動擴展主機容量或帶寬?
- 13. 有限自動機,下推自動機和圖靈機示例
- 14. 這種語言是否有下推自動機(PDA)?
- 15. 下推式自動機可以有零終態嗎?
- 16. C的自動化FSM
- 17. 是否可以編寫自己的發佈ActionEvents的對象?
- 18. 是否可以自動顯示所有文件的git註釋?
- 19. 是否可以自動從Keras的flow_from_directory中推斷出class_weight?
- 20. 下推自動機的語言
- 21. 下推自動機的結構問題
- 22. 是否可以編寫自修改的PowerShell腳本?
- 23. 是否可以自動滾動iFrame?
- 24. Xdefaults是否可以自動啓動?
- 25. 是否可以在PostgreSQL中自動釋放鎖定?
- 26. 是否可以自動將用戶類預加載到groovy解釋器中?
- 27. 爲以下語言創建下推自動機
- 28. 是否可以編寫自定義tvOS屏保?
- 29. 是否可以用C編寫一個自毀程序?
- 30. 是否可以編寫WSS自定義搜索webpart?
但是...一個自我解釋器可能不如圖靈機器強大。你的回答需要編輯來覆蓋這種可能性。 – 2011-03-14 17:00:00