minecraftpe吧 关注:638,571贴子:15,084,572

在minecraftpe中造台图灵机

只看楼主收藏回复

图灵机是一种抽象的计算机器,是另一种体系的电脑。它有一条无限个单元格的纸带,每次检查一格是否满足某一特定状态,对其进行处理并移动到下一格。每个单元格要么包含一个符号,要么是空白,另外有一个读写头,一次仅指向一个单元格。读取和输入均在一条纸带上。
mc的红石元件体系是图灵完全的,因此我尝试在mc中建造图灵机。这台机器可以根据需要编入不同的程序,目前我已设计了加法程序,计算斐波那契数列程序,判断当前输入数字是否是奇数程序。只要你设计正确的程序,理论上图灵机可以解决所有电脑能解决的问题。


事实上我总共建了两台图灵机,但第一台效果不太好,仅作为一个实验品,而第二台我把它设计成可扩展的了。
我的机器分为:纸带移动部分,显示部分,接口部分,状态器以及那长长的一行行的命令集。下面是详细说明。


IP属地:广西1楼2019-02-12 22:31回复
    二楼备用


    IP属地:广西2楼2019-02-12 22:33
    回复
      纸带部分,我用方块和玻璃来表示有和无,图中是钻石块和金块,其他块也可以。把块的有无转换成信号的原理是利用红石火把给块充能,然后交错布线导出信号。圆圈处是写头,它可以交换上下的方块,效果就像往带上写0或1。纸带的移动靠四角活塞的时序推出。


      IP属地:广西4楼2019-02-12 22:38
      回复
        这是张早期的照片,我把纸带部分封装起来了
        最终导出7个接头,蓝色线亮表示一个周期完成,绿色是读头读取信号线,中间白色是写入线,它分出两条:写一和写零,由比较器判断。最右边三条是移动方向线,分别代表左移保持和右移。


        IP属地:广西5楼2019-02-12 22:41
        回复
          显示器部分,由于我的字符集只有0和1,因此屏幕可以很简单,只是起提示作用,不必绕到后面直接看方格


          IP属地:广西6楼2019-02-12 22:43
          回复
            未完待续……


            IP属地:广西7楼2019-02-12 22:44
            回复
              顶!


              IP属地:四川来自Android客户端8楼2019-02-12 23:32
              回复
                睡前一顶


                IP属地:云南9楼2019-02-13 00:17
                回复
                  dd


                  IP属地:陕西来自iPhone客户端10楼2019-02-13 01:40
                  回复
                    这是状态码库,指示机器应该按照哪一行的指令来做事。实际上它就是4个RS寄存器并排放,共可存储16种状态。我建的时候没有压缩电路,但预留了扩展的空间,意味着它可以有32、64或更多状态。
                    理想图灵机有无限个状态,但实际运算用不着这么多


                    IP属地:广西11楼2019-02-13 09:09
                    回复
                      下面的内容如果不介绍图灵机的编程原理,我想你们可能很难理解。摘抄:“
                      每个循环周期检查以下内容
                      1. 如果机器处于状态s1,且磁头正在读取符号L1
                      2. 切换到状态s2,写入符号L2并将头向右移动。
                      状态S1和S2可以是机器的任何状态,符号L1和L2实际上可以是任何符号。头部可以移动一格右,一格左,或停留在它所在的地方。


                      IP属地:广西12楼2019-02-13 09:11
                      回复
                        不玩sr了?图灵机好评


                        IP属地:辽宁来自Android客户端13楼2019-02-13 09:50
                        收起回复
                          我们还是已一个实际的例子来说明吧!图中的红石灯表明机器已写入程序,只要拉下拉杆或单击按钮让灯对应的亮/灭,就是编程的过程了。一楼的图显示屏前面长长一排就是编程模块。

                          这里的第二行,从上往下数第二根石柱和第三根之间,由灯的亮灭(01)转换成口语表达是:
                          当前是0011状态,读到1,则写入1,右移并转入0011状态。


                          IP属地:广西15楼2019-02-13 11:57
                          收起回复
                            sdl,wsl


                            IP属地:山东来自Android客户端16楼2019-02-13 12:03
                            收起回复
                              对应每一位比较,我采用的是同或门,3*7*5=105的体积,没有压缩纯原创。多个并排成一行后用与门连接


                              IP属地:广西17楼2019-02-13 12:16
                              回复