Instrukcja 3: Maszyna Turinga

Transkrypt

Instrukcja 3: Maszyna Turinga
LINGWISTYKA MATEMATYCZNA - LAB
Instrukcja 3:
MGR INŻ. MICHAŁ POSTOLSKI
Maszyna Turinga
Opis zadania
Celem zadania jest napisanie programu będącego symulatorem Maszyny Turinga, który będzie w
stanie wykonać dowolny zbiór instrukcji na zadanym ciągu symboli wejściowych (możliwe jest
ustalenie maksymalnej długości ciągu wejściowego w celu ułatwienia implementacji GUI). Jako
dane wejściowe symulator przyjmuje kolejno:
• zawartość taśmy;
• ilość symboli należących do alfabetu;
• ilość stanów. Stan q0 jest stanem początkowym;
• kolejne symbole. Ostatni symbol odpowiada symbolowi pustemu;
• początkowa pozycja głowicy;
• ilość wszystkich instrukcji
• kolejne instrukcje w postaci:
(symbolOdczytany, aktualnyStan, symbolDoZapisu, nowyStan, kierunek)
np. instrukcja:
(a, q0, b, q2, L)
definiuje zachowanie maszyny gdy znajduje się ona w stanie q0 i odczytano symbol “a”. W tym
wypadku na taśmie zapisany zostanie symbol “b”, głowica przesunie się o jedną pozycję w Lewo, a
stan maszyny zmieni się na q2.
Wynikiem działania symulatora powinien być zbiór kolejnych uzyskanych stanów taśmy po
wykonaniu kolejnych pojedynczych instrukcji.
Symulator można zaimpelemntować w dowolnym języku programowania. Dane wejściowe
powinny być odczytywane z pliku “program.txt” lub podawane w polu tekstowym jeśli symulator
posiada GUI. Wynik działania symulatora należy wydrukować na standardowe wyjście lub zapisać
do pliku.
STRONA 1 Z 3
LINGWISTYKA MATEMATYCZNA - LAB
MGR INŻ. MICHAŁ POSTOLSKI
Przykładowy interfejs programu, który neguje kolejne bity, może wyglądać następująco:
?
?
?
1
0
1
1
0
?
?
Program:
3, 1, 0, 1, ?, 2
(0, q0, 1, q0, L)
(1, q0, 0, q0, L)
Wykonaj
1
instrukcje
Zadanie do zaliczenia instrukcji
1.
Implementacja Symulatora Maszyny Turinga, zgodnie z opisem zadania
2.
Wykonanie następujących zestawów instrukcji i odpowiedź na pytanie jakie działanie
arytmetyczne one wykonują:
• Program 1
0,q0,0,q0,L
1,q0,0,q1,L
0,q1,1,q0,L
1,q1,1,q1,L
?,q0,0,q2,L
?,q1,1,q2,L
• Program 2
0,q0,1,q2,L
1,q0,0,q1,L
0,q1,1,q2,L
1,q1,0,q1,L
?,q1,1,q2,L
STRONA 2 Z 3
?
LINGWISTYKA MATEMATYCZNA - LAB
3.
MGR INŻ. MICHAŁ POSTOLSKI
Zamiana następującej tabeli na ciąg instrukcji, wykonanie ich, oraz odpowiedź na pytanie co
robi program:
Zadanie na ocenę 5
1.
Samodzielnie podać i uruchomić zestaw instrukcji rozwiązujacy przynajmniej jeden z podanych
problemów:
• Napisz program, który posortuje bity dowolnej liczby binarnej ustawiając wszystkie 0 po prawej
stronie, a 1 po lewej. Na przykład liczba 10111001 musi zostać przekształcona do postaci
11111000.
• Napisz program, który odwróci kolejność bitów dowolnej liczby binarnej, tzn. z liczby
01100111 ma powstać 11100110.
STRONA 3 Z 3