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