8299308018

8299308018



1.2.2.3    Maszyny Turinga jako generatory

Ponieważ maszyny Turinga w trakcie swojej pracy zmieniają zapis na taśmie, można ich używać nie tylko do akceptowania słów, ale również do wykonywania obliczeń.

Przykład 1.14


Maszyna na rysunku obok wykonuje dodawanie 1 do liczby binarnej. Zakładamy, że oryginalna liczba, ciąg zer i jedynek, jest zapisana na taśmie, a głowica ustawiona jest na ostatniej (najmniej znaczącej) cyfrze. Maszyna zmienia ten zapis i kończy z głowicą znowu na ostatniej znaczącej cyfrze — temu służy pętelka przy stanie C oraz strzałka z C do D. Stan oznacza, że jest jeszcze jedynka „w pamięci” (przeniesienie) do dodania do następnej cyfry.

Konstrukcja maszyn Turinga, wykonujących bardziej złożone obliczenia, jest żmudna, a powstałe maszyny mają sporo stanów. Proponuję czytelnikowi skonstruowanie maszyny dodającej dwie liczby. Proszę nie dziwić się, że będzie potrzeba wielu komend, których jedyną rolą będzie przenoszenie informacji z jednego miejsca taśmy w inne.

1.2.2.4    Znaczenie maszyn Turinga

Okazuje się, że maszyny Turinga, mimo swojej prostoty pojęciowej, potrafią policzyć wszystko, co w ogóle może zostać policzone. Stanowi to treść t.zw. „tezy Churcha-Turinga”:

Teza 1.15

Dla każdej funkcji f, której wartości dają się efektywnie obliczać dowolnymi sposobami, istnieje maszyna Turinga obliczająca f.

Ta teza oczywiście nie jest twierdzeniem i nie daje się dowieść, bo nie posiadamy żadnej ogólnej definicji „liczenia” niezależnej od pojęcia maszyny Turinga oraz od innych mechanizmów jej równoważnych. Jest to raczej teza filozoficzna, poparta tym, że jak dotąd nikomu nie udało się wymyślić żadnego przykładu czegoś, co sensownie można by nazwać obliczaniem, co nie byłoby wykonalne na jakiejś maszynie Turinga.

W szczególności wszystko, co daje się zaprogramować w dowolnym języku na komputer o dowolnej architekturze, daje się również policzyć przy pomocy jakiejś maszyny Turinga. Zachodzi też zależność odwrotna: jeśli abstrahować od skończoności pamięci komputerów, to każdy imperatywny język programowania1 ogólnego zastosowania, taki jak Pascal, C lub Java, ma pełną moc maszyn Turinga. Natomiast niekoniecznie mają ją języki wąsko specjalizowane, takie jak HTML (język opisu witryn internetowych) lub SQL (język zapytań baz danych).

Znaczenie poznawcze maszyn Turinga wynika z tego, że

• stanowią one uniwersalny model obliczeń, oraz

11

1

Większość języków programowania komputerów to języki imperatywne. O nieimperatywnych językach programowania będzie jeszcze wzmianka w rozdz. 1.2.3.



Wyszukiwarka

Podobne podstrony:
Nowe skanowanie 20130610122835 00004 Opis zdarzenia do wykorzystania w zadaniach 13 i 14. Poszkodowa
W trakcie swojej pracy naukowej przeprowadziłem analizę teoretyczną i doświadczalną procesu walcowan
3. Korzystanie z programów komputerowy i Internetu w praktyce szkolnej W trakcie swojej pracy w znac
Mechanika i Budowa MaszynChłodnictwo i KlimatyzacjaW trakcie studiów ChiK zdobywasz umiejętności: ✓
Inżynieria finansowa Tarcz0 70 Innowacje finansowe jako atrybut... Ponieważ w transakcje z instrum
page0820 Saint-sUnon 812 stanowiska w r. 1831, udał się do Pondiszery, jako generalny gubernator pos
b)    Komórki, tkanki, narządy i całe organizmy jako generatory napięć,
Poznaj C++ w$ godziny0107 94 Godzina 7 UstawWiek() nie może być zadeklarowana jako const, ponieważ z
v. Urna europejska zainteresowana jest rozwojem miast jako generatorów rozwoju e.    
rtr0004 138.    Bilans czasu pracy agregatu maszynowego, metody badania czasu pracy a
Untitled64 120 12. Port szeregowy Jeżeli w mikrokontrolerach 8xC52 jako generator zostanie użyty lic
• wysokiej średniej wieku maszynistów kolejowych na rynku pracy - długotrwała przerwa w systematyczn

więcej podobnych podstron