matematykaszkolna.pl
Maszyna Turinga dla palindromów. Bartek: Skonstruować maszynę Turinga. Witam, nie bardzo wiem jak zabrać się za zadanie z maszyną Turinga, a mianowicie: Przykładowo chciałbym skonstruować maszynę która akceptuje język PALINDROMY ∊ {a,b}* Czyli "abba" ∊ PALINDROMY, zaś "aabb" nie należy do PALINDROMY. Zakładam że na "początku" i "końcu" taśmy znajdują się symbole "pusty", które umownie oznaczę wielkim "O" Czyli taśma wygląda tak O|O|O|a|b|b|a|O|O|O Chciałbym wstępnie rozwiązać to zadanie dla maszyny z jedną taśmą. Zaczynam od stanu zerowego Q0, głowica znajduje się na pierwszym niepustym symbolu, czyli na 'a'. Zapamiętuje symbol, w kolejnym stanie przechodzę głowicą ciągle w prawo aż do napotkania symbolu pustego O. W momencie napotkania symbolu pustego przechodzę o jedną komórkę w lewo i porównuje symbol z zapamiętanym symbolem. Następnie pojawia się problem, co dalej. Jeden z moich pomysłów to: Gdy jestem w stanie początkowym na literce 'a' zamieniam ją np na gwiazdkę '*'. Przechodzę w prawo aż do symbolu pustego, cofam się o jedną komórkę i sprawdzam czy znajduje się tam zapamiętany symbol. Jeżeli tak to wstawiam '*'. Przesuwam głowice w lewo aż do gwiazdki, przesuwam o jedną komórkę w prawo, zapamiętuje symbol, przesuwam głowice w prawo aż do napotkania gwiazdki, przesuwam o jedną komórkę w lewo i porównuje znak. Jeżeli jest taki sam wstawiam gwiazdkę i tak w kółko, aż taśma się wypełni gwiazdkami, wtedy wiemy że wyraz należy do języka PALINDROMY. Jednak zastanawiając się nad tym, wpadam w pętle, bo nie potrafię zatrzymać. Zamieniać na symbole puste? Czyli przechodzę w prawo, napotkam symbol pusty, przechodzę o komórke w lewo i jeżeli jest też symbolem pustym to przechodze to stanu końcowego? Poproszę o wskazówki jak rozwiązać takie zadanie. Następnie postaram się zapisać stany takiej maszyny. Pozdrawiam serdecznie.
31 maj 16:55