Przeskocz do treści

Delta mi!

Co to jest?

Drobiazgi

Funkcja nieobliczalna

Tomasz Kazana

o artykule ...

  • Publikacja w Delcie: kwiecień 2019
  • Publikacja elektroniczna: 31 marca 2019
  • Autor: Tomasz Kazana
    Afiliacja: Instytut Informatyki, Uniwersytet Warszawski
  • Wersja do druku [application/pdf]: (308 KB)

Komputery to urządzenia bardzo nietypowe. Same jako takie nie mają sprecyzowanego, jasno zdefiniowanego zadania, do wykonywania którego zostały zaprojektowane. Zadania, które wykonuje komputer, mogą się w czasie zmieniać, a ich określenie odbywa się poprzez pisanie programów komputerowych. Owe programy formułuje się w specjalnym języku (Pascal, C/C++, Java, Python itp.), a następnie zleca komputerowi do wykonania.

Komputery to urządzenia bardzo nietypowe. Same jako takie nie mają sprecyzowanego, jasno zdefiniowanego zadania, do wykonywania którego zostały zaprojektowane. Zadania, które wykonuje komputer, mogą się w czasie zmieniać, a ich określenie odbywa się poprzez pisanie programów komputerowych. Owe programy formułuje się w specjalnym języku (Pascal, C/C++, Java, Python itp.), a następnie zleca komputerowi do wykonania.

Skoro definiujemy komputer jako urządzenie elastyczne (zdolne do przedefiniowania się), naturalne jest pytanie o zakres jego wszechstronności. To znaczy: jak bardzo skomplikowane problemy daje się zapisać jako odpowiedni program komputerowy? Wydawałoby się, że odpowiedź mocno zależy od typu komputera oraz wyboru języka programowania. Być może zaskakująco, okazuje się, że wcale nie. To znaczy: dane zadanie zwykle albo da się rozwiązać przy użyciu niemal dowolnego komputera i języka programowania (niezależnie, czy dysponujemy starym Atari i językiem BASIC, czy najnowszym PC-tem i Pythonem), albo nie da się po prostu wcale. Wynika to z tego, że generalnie wszystkie komputery i języki programowania realizują ten sam model, tak zwaną (teoretyczną) maszyną Turinga. Innymi słowy: różnią się efektywnością (czasem) wykonania, a nie zbiorem problemów, które da się przy ich użyciu rozwiązać.

Co więcej, panuje powszechne przekonanie, że same prawa fizyki sprawiają, że żadna maszyna nigdy nie będzie w stanie realizować modelu silniejszego niż model Turinga. Czyli że każde zagadnienie nierozwiązywalne przez maszynę Turinga (tytułowa funkcja nieobliczalna) jest po prostu zadaniem niemożliwym do rozwiązania przez żaden komputer: ani obecnie istniejący, ani żaden z przyszłości.

No, chyba że odkryjemy i ujarzmimy jakieś nowe cudowne zjawisko fizyczne. W to jednak naprawdę nikt nie wierzy, bo nawet komputer kwantowy może być symulowany (bardzo nieefektywnie) przez maszynę Turinga.