Z okazji urodzin Alana Turinga Google opublikował doodle przedstawiające maszynę. Jaką maszyną jest doodle? Czy może wyrażać język Turing Complete?
Istnieją oczywiste różnice w stosunku do klasycznej maszyny Turinga: skończona taśma, ograniczenia w sposobie łączenia stanu, ...
Doodle jest nadal dostępne tutaj
(Wyświetlacz w prawym górnym rogu pokazuje oczekiwane wyjście.)
Taśma pośrodku jest podzielona na kwadraty, które mogą pomieścić puste miejsce, zero lub jeden. Głowa jest umieszczona nad jednym z kwadratów i służy do czytania i pisania.
Pod taśmą widać zieloną strzałkę, którą można kliknąć, aby uruchomić maszynę. Obok niego znajdują się dwie linie kół, z których niektóre są połączone. Nazywam je „stanami”.
Po uruchomieniu komputera zaświeci się pierwszy stan z prawej strony zielonego przycisku, następnie następny z prawej strony i tak dalej ... Każdy stan zawiera jedno z następujących poleceń:
- puste = nic nie rób (po prostu przejdź do następnego stanu)
- 1 = napisz jeden na taśmie w bieżącej pozycji głowy
- 0 = zapisz zero na taśmie w bieżącej pozycji głowy
- strzałka w lewo = przesuń głowę o jeden krok w lewo
- strzałka w prawo = przesuń głowę o jeden krok w prawo
- warunek: jeśli wartość pod głową jest równa wartości pokazanej w kwadracie, przejdź do drugiej linii stanów. jeśli nie, przejdź do następnego stanu po prawej
- lewy skok: powrót do (naprawionego) poprzedniego stanu, ale tylko w górnym rzędzie [Pierwotnie zapomniałem tego, dzięki @Marzio!]
Nie ma możliwości „nałożenia” dwóch skoków (jeden na drugi). Maszyna zatrzymuje się, gdy opuści stan i nie ma następnego stanu po prawej stronie.
(Po zatrzymaniu urządzenia zawartość taśmy jest porównywana z zawartością wyświetlacza, ale nie uważam tego za część zamierzonej funkcjonalności urządzenia).
Odpowiedzi:
Przy założeniu, że:
... więc nawet gdy co za Doodle jest być może nie Turinga kompletne (ze względu na zakaz kumulacji lewej tylko operatora skoku dostępnej tylko w pierwszym rzędzie), jest wystarczająco silny, aby chodzić linię grzywnie (ONZ) rozstrzygalności: - re
EDYCJA: TURING DOODLE TO TURING KOMPLETNY
(Pozostawiam poprzednią odpowiedź powyżej, ponieważ nie jestem pewien, czy ta część jest poprawna :-)
Wydaje mi się, że nawet przy jednym skoku w lewo, bez nakładania się, Turing Doodle jest już gotowy! . (Prostym) pomysłem jest użycie samej taśmy do przechowywania bieżącego stanu i użycie wielu komórek do przedstawienia większego alfabetu.
Na przykład 2 symbole 8 stanów TM mogą być symulowane przy użyciu następującej reprezentacji taśmy:
Doodle Turinga może:
Pełny obraz jest dostępny tutaj .
źródło
alen turing
. Podobało mi się czytanieJest to fragment oryginalnego artykułu Turinga „O liczbach obliczalnych z zastosowaniem do Entscheidungsproblem”.
Współczesnym dobrym towarzyszem pracy, którą polecam, jest Annotated Turing Charlesa Petzolda.
Jak widać, Google po prostu próbowało przypominać maszynę, która jest bardzo podobna do opisu Turinga.
EDYCJA: Zakładając, że pełny alfabet Google'a to ten pokazany na końcu gry po kliknięciu ikony króliczka i biorąc pod uwagę fakt, że tworzy nieskończoną sekwencję, ma więcej wierszy i kolumn (więc możemy założyć, że możemy dodać dowolne ), ma lewe skoki (a także nakładające się na lewe skoki) w dowolnym rzędzie , ma warunkowy i bezwarunkowy skok między sąsiednimi rzędami, myślę, że Turing jest ukończony .
źródło
W łamigłówkach skoki są dozwolone na obu liniach, ale nie mogą się pokrywać. Na końcowym doodle sekwencji królików na końcu gry, pozwalają na skoki w każdej linii i mogą być zagnieżdżone w nawiasach, więc [()] jest dozwolone, ale ([)] wydaje się niedozwolone.
Wykorzystam następujące założenia:
Przy tych założeniach Google Doodle Machine jest Turing Complete .
GDM symuluje TM w następujący sposób:
Wybierz swoją ulubioną uniwersalną bazę TM i zastosuj ją w powyższej procedurze, aby uzyskać uniwersalną GDM.
źródło