Jednym z głównych powodów, dla których uważam teorię obliczeń („moją” gałąź teoretycznej informatyki) za fascynującą i wartą przestudiowania, jest następująca: zapewnia nam ona możliwość zbadania niektórych głębokich (i czasem zagadkowych) pytań filozoficznych.
Jeden z założycieli teorii obliczeń, Alan Turing, próbował określić znaczenie „obliczania funkcji” dla człowieka wyposażonego w kartkę papieru, podając matematyczny opis tego procesu. Nie tylko ja sądzę, że odniósł ogromny sukces, a maszyny Turinga okazały się dokładnym modelem wielu innych procesów obliczeniowych.
Teraz, gdy posiadamy klasę obiektów matematycznych opisujących obliczenia, możemy faktycznie udowodnić twierdzenia na ich temat, próbując w ten sposób odkryć, co można obliczyć i jak można je obliczyć; od razu okazało się, że wielu całkowicie uzasadnionych funkcji nie można w ogóle obliczyć i że można je sklasyfikować według stopnia niemożliwości obliczenia (niektóre funkcje są po prostu „bardziej nieobliczalne” niż inne).
Niektórzy inni faceci, pierwsi zwykle utożsamiani z Jurisem Hartmanisem i Richardem E. Stearns, próbowali matematycznie opisać, co to znaczy, że funkcja (odpowiednio, problem) jest trudna lub łatwa do obliczenia (odpowiednio. Do rozwiązania). Istnieje kilka miar złożoności, według których można opisać stopień trudności problemów; najczęstszym jest to, ile czasu potrzebujemy na ich rozwiązanie. Alan Cobham i Jack Edmonds z powodzeniem zidentyfikowali rozsądne pojęcie „wydajnego obliczenia”.
W ramach złożoności obliczeniowej możemy teraz udowodnić pewne wyniki, które są spójne z naszym intuicyjnym pojęciem obliczeń. Moim ulubionym przykładem jest twierdzenie o hierarchii czasu: jeśli mamy więcej czasu na obliczenia, możemy rozwiązać trudniejsze problemy.
Centralny otwarty problem teorii złożoności, P vs NP , jest po prostu sformalizowaniem innego istotnego filozoficznie pytania: czy naprawdę trudniej jest rozwiązać problem, niż sprawdzić, czy rzekome rozwiązanie jest rzeczywiście poprawne? Uważam, że warto zadać to pytanie i odpowiedzieć niezależnie od jego praktycznego znaczenia.