Maszyna Turinga: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Nie podano opisu zmian
Linia 1:
{{Definicja|Maszyna Turinga stanowi najprostszy, wyidealizowany matematyczny model komputera, zbudowany z taśmy, na której zapisuje się dane i poruszającej się wzdłuż niej "głowicy"„głowicy”, wykonującej proste operacje na zapisanych na taśmie wartościach.}}
[[Plik:Turing Machine.png|thumb|right|Artystyczna wizja maszyny Turinga]]
[[Plik:Turing machine 2b.svg|thumb|Grafika przedstawiająca maszynę Turinga w stanie q<sub>1</sub> nad zerem na taśmie]]
'''Maszyna Turinga''' - stworzony przez [[Alan Turing|Alana Turinga]] abstrakcyjny model [[komputer]]a służącego do wykonywania [[algorytm]]ów, składającego się z nieskończenie długiej taśmy podzielonej na pola. Taśma może być nieskończona jednostronnie lub obustronnie. Każde pole może znajdować się w jednym z N stanów. Maszyna zawsze jest ustawiona nad jednym z pól i znajduje się w jednym z M stanów. Zależnie od kombinacji stanu maszyny i pola maszyna zapisuje nową wartość w polu, zmienia stan, a następnie może przesunąć się o jedno pole w prawo lub w lewo. Taka operacja nazywana jest [[rozkaz]]em. Maszyna Turinga jest sterowana listą zawierającą dowolną liczbę takich rozkazów. Liczby N i M mogą być dowolne, byle skończone. Czasem dopuszcza się też stan M+1, który oznacza zakończenie pracy maszyny. Lista rozkazów dla maszyny Turinga może być traktowana jako jej [[Oprogramowanie|program]].
 
== Wstęp ==
Każdy algorytm wyrażalny na maszynie Turinga można wyrazić w [[rachunek lambda|rachunku lambda]] i odwrotnie. Ponieważ jednak maszyny Turinga rozszerza się bardzo trudno, zaś rachunek lambda bardzo łatwo, w praktyce są one o wiele mniej popularne jako rzeczywiste modele obliczeń. Są za to używane często do udowadniania nierozstrzygalności różnych problemów.
 
Linia 13:
Istnieją też maszyny Turinga wielotaśmowe lub [[determinizm|niedeterministyczne]] (gdzie jednej parze (symbol, stan) może odpowiadać kilka instrukcji) oraz wielowymiarowe (prostą dwuwymiarową maszyną Turinga jest [[mrówka Langtona]]).
 
W informatyce dowodzi się równoważności wielu różnych wariantów maszyny Turinga. Np. dość łatwo jest pokazać, że maszyna Turinga z wieloma taśmami nie różni się istotnie od klasycznej maszyny jednotaśmowej. Również niedeterministyczne maszyny Turinga są równoważne deterministycznym. Rozważania na temat mocy obliczeniowej niedeterministycznych maszyn Turinga są podstawą centralnego problemu [[Złożoność obliczeniowa|teorii złożoności obliczeniowej]] – "P„P versus NP"NP”.
 
Mimo że maszyna Turinga jest abstrakcją o dużej mocy obliczeniowej (większej na przykład niż dowolny komputer), istnieje wiele problemów (np. [[problem stopu]]), których nie da się na niej rozwiązać. Matematycy rozważają więc (od czasów samego [[Alan Mathison Turing|Turinga]]) silniejsze modele obliczeń, które mogą takim zadaniom podołać. Hipotetyczne maszyny potrafiące wykonywać takie obliczenia, nazywa się [[hiperkomputer]]ami. Należy zauważyć, że przy obecnym stanie wiedzy nie jest jasne, czy prawa fizyki rządzące naszym światem pozwalają na skonstruowanie maszyn obliczeniowych silniejszych niż maszyna Turinga. Jest to pole aktywnych prac badawczych.
 
== Zapis formalny ==
Linia 39:
np. ciąg wejściowy ''ΦabcΦ'' (gdzie Φ to symbol pusty oznaczający koniec danych) zamieni na ''ΦaabbccΦ''
 
: Q = { q<sub>0</sub>, q<sub>1</sub>, q<sub>2</sub>, q<sub>3</sub>, q<sub>4</sub>, q<sub>5</sub>, q<sub>6</sub>, q<sub>7</sub>, q<sub>8</sub>, q<sub>9</sub>, q<sub>10</sub>, q<sub>11</sub>, q<sub>12</sub> }
: q<sub>0</sub> = q<sub>0</sub>
: F = { q<sub>12</sub> }
: Γ = { Φ, a, b, c }
: B = Φ
: Σ = { a, b, c }
 
<center>
Linia 137:
Weźmy znacznie prostszą maszynę Turinga niż w przykładzie powyżej – będzie sprawdzać, czy dane słowo jest [[palindrom]]em.
 
: Q = { q<sub>0</sub>, q<sub>1</sub>, q<sub>2</sub>, q<sub>3</sub>, q<sub>4</sub>, q<sub>5</sub>, q<sub>6</sub>, q<sub>7</sub> }
: q<sub>0</sub> = q<sub>0</sub>
: F = { q<sub>6</sub>, q<sub>7</sub> }
: Γ = { Φ, a, b }
: B = Φ
: Σ = { a, b }
 
{| class="wikitable"
|-
!
! q<sub>0</sub>
Linia 163 ⟶ 162:
| q<sub>6</sub><br />-,-
| q<sub>0</sub><br />Φ,P
| rowspan="3" | TAK
| rowspan="3" | NIE
|-
! a
Linia 252 ⟶ 251:
 
Spis przejść wraz ze stanem taśmy, nawiasy prostokątne wskazują położenie głowicy.
0. [#]#1000#
1. (A,A;#→#R) #[#]1000#
2. (A,A;#→#R) ##[1]000#
Linia 269 ⟶ 268:
 
== Inne ujęcie ==
Model przedstawiony przez [[Roger Penrose|Rogera Penrose'aPenrose’a]] w ''Nowym umyśle cesarza'' (s. 46-93, ISBN 83-01-11819-9, str. 46-93) jest nieco inny, bardziej oszczędny, chociaż równoważny matematycznie.
 
Przyjmuje się, że maszyna obsługuje tylko dwa znaki na taśmie – zero i jedynkę. Przy tym stany wewnętrzne są oznaczone [[dwójkowy system dwójkowyliczbowy|liczbami dwójkowymi]] i maszyna zaczyna od stanu 0. Maszyna po każdej operacji zmienia stan wewnętrzny, znak na taśmie i przesuwa się w lewo lub w prawo. Może też się zatrzymać. Reguły oznacza się przez odpowiedni zestaw przejść, np. (ostatnia cyfra oznacza znak na taśmie i jest wytłuszczona dla czytelności)
 
0'''0''' → 0'''0'''R,
Linia 278 ⟶ 277:
1'''1''' → 1'''1'''R.
 
Jest to maszyna '''UN+1''' zwiększająca liczbę zapisaną w [[Jedynkowy system jedynkowyliczbowy|systemie jedynkowym]] o jeden, czyli dopisująca na końcu pierwszego ciągu jedynek na taśmie jeszcze jedną jedynkę.
 
Można przyjąć, że instrukcja L.STOP nigdy nie występuje, gdyż odpowiedź ma znaleźć się po lewej stronie maszyny. Dlatego R.STOP skraca się do STOP. W ten sposób zapisujemy maszynę '''UN×2''' jako
Linia 356 ⟶ 355:
T<sub>5</sub>: 0'''0''' → 0'''0'''R, 0'''1''' → 0'''1'''L,
T<sub>6</sub>: 0'''0''' → 0'''0'''R, 0'''1''' → 0'''0'''R, 1'''0''' → 0'''0'''R,
T<sub>7</sub>: 0'''0''' → 0'''0'''R, 0'''1''' → ???,
T<sub>8</sub>: 0'''0''' → 0'''0'''R, 0'''1''' → 10'''0'''R,
T<sub>9</sub>: 0'''0''' → 0'''0'''R, 0'''1''' → 1'''0'''L,
Linia 363 ⟶ 362:
T<sub>12</sub>: 0'''0''' → 0'''0'''R, 0'''1''' → 0'''0'''R, 1'''0''' → 0'''0'''R
 
Większość jest niekompletna (bywa np. ,<!-- POPRAW TO MIEJSCE! --> że zawierają więcej, niż cztery jedynki z rzędu, czyli są ''niepoprawnie określone'') lub nigdy się nie zatrzymuje, zdarzają się też powtórzenia. Żaden system kodowania nie pozwala wyeliminować wszystkich takich dat.
 
Pewna skomplikowana maszyna Turinga zastosowana do numeru dowolnej maszyny Turinga i jej argumentu da wynik działania tej maszyny.
Linia 375 ⟶ 374:
== Linki zewnętrzne ==
* [http://mathworld.wolfram.com/TuringMachine.html Maszyna Turinga] {{lang|en}} w encyklopedii [[MathWorld]]
* [http://edu.i-lo.tarnow.pl/inf/prg/003_mt/index.php Maszyna Turinga] w serwisie edukacyjnym [[I Liceum Ogólnokształcące im. Kazimierza Brodzińskiego w Tarnowie|I LO w Tarnowie]]
* Prezentacja modelu [http://www.youtube.com/watch?v=cYw2ewoO6c4 maszyny Turinga] zrealizowanej za pomocą klocków lego.