Poznawalność i niepoznawalność
Poznanie samochodu jest trudne, a komputera niemożliwe
Co dzień rano kupuję świeże pieczywo w sklepie pani Marzeny i pana Bogdana. Zaopatrzenie do swego sklepu dostarczają starszym już wiekiem Fordem Transitem, który niedawno miał kłopoty z instalacją elektryczną. Przez dłuższy czas pan Bogdan szukał elektryka, który by odkrył, co należy naprawić. Po kilku nieudanych próbach znalazł się prawdziwy fachowiec, który w godzinę ustalił, co trzeba zrobić i dziś samochód znowu jeździ.
Pod moim poprzednim wpisem Bobola skomentował, że „Każdy kto prowadzi samochód czy używa komputera nie jest świadom całego szeregu operacji, które prowadzą do oczekiwanego rezultatu. Niemniej funkcjonowanie takich urządzeń nie oznacza fundamentalnej niepoznawalności ich działania.” (polskie literki dorobiłem sam).
Faktycznie, w wypadku samochodu udało się, choć wcale nie było łatwo i Ford stał nieczynny kilka tygodni. Czemu to był taki problem, skoro wszystkich urządzeń elektrycznych i kabli jest w nim tylko kilkadziesiąt? Bo nie wystarczy znać je wszystkie, tylko trzeba znać objawy awarii w różnych konfiguracjach systemu, określonych przez to, które elementy nie funkcjonują należycie. Tych konfiguracji jest bez porównania więcej niż kilkadziesiąt.
A co z komputerem? Na pewno będzie trudniej, bo ma więcej elementów.
Porachujmy zatem, o ile trudniej. Komputer z 1 MB RAM ma około 1000000000 bajtów pamięci operacyjnej. Każdy z bajtów może zapisać 256 różnych wartości, ale powiedzmy, że w każdym bajcie zapisujemy tylko jedną cyfrę dziesiętną. Możemy w ten sposób zapisać każdą liczbę o co najwyżej 1000000000 cyfrach: od 0 (same zera wszędzie) do liczby złożonej z 1000000000 dziewiątek. To bardzo skromne oszacowanie wskazuje, że liczba różnych konfiguracji, w których może się teoretycznie znajdować komputer ma ponad 1000000000 cyfr. Tymczasem liczba wszystkich cząstek w obserwowalnym wszechświecie nie ma więcej niż 100 cyfr. Do rozpatrywanej w filozofii matematyki nieskończoności potencjalnej i aktualnej dodałbym też nieskończoność praktyczną i uważam, że liczba konfiguracji, w których komputer może się znajdować jest praktycznie nieskończona.
Ta skala oznacza, że komputer jest fundamentalnie niepoznawalny, bo, jak wszyscy się domyślają, zmiana jednego bajtu w pamięci zmienia dalsze działanie programu. Oczywiście liczba stanów, w których każdy konkretny komputer znajdzie się w trakcie całego swego istnienia, jest drobnym pyłkiem przy tej praktycznej nieskończoności, ale żadnego stanu z niej nie można wyłączyć jako niemożliwego do uzyskania.
Wszystko co informatycy z tym robią, to próby wyodrębnienia i kontrolowania systematycznie zbudowanych konfiguracji, które są efektem działania dobrze napisanych i przetestowanych programów. Tylko tyle i aż tyle.
Ale nawet dla bardzo prostych programów pytanie, co się z nimi dzieje i jak działają, bywa dramatycznie trudne. Nie mogę się powstrzymać od opisania problemu Collatza: startujemy od dowolnej dodatniej liczby całkowitej, którą zapisujemy w pamięci komputera. Jeśli jest ona podzielna przez 2, to ją dzielimy, a jeśli nie jest podzielna, to mnożymy ją przez 3 i do iloczynu dodajemy 1. W każdym wypadku wynik zapisujemy w miejsce starej liczby i powtarzamy operację z nową liczbą jeszcze raz, i jeszcze raz, i jeszcze raz, tak długo, aż w końcu dostaniemy 1 – albo w nieskończoność, jeśli nigdy 1 nie dostaniemy. Oczywiście tę procedurę można zapisać jako prościutki program komputerowy (można go dostrzec, choć pewnie nie odczytać, na ilustracji przedstawiającej jedną z tablic na fasadzie Biblioteki UW). Hipoteza Collatza mówi, że niezależnie od początkowej liczby, zawsze kiedyś dostaniemy 1 i program zakończy działanie. Dowodu albo kontrprzykładu dotąd nie ma i wielu wybitnych badaczy uważa, że trudniej go będzie znaleźć niż dowód ostatniego twierdzenia Fermata, na który czekano 300 lat. I tak wygląda sprawa z tą poznawalnością komputera.
Jerzy Tyszkiewicz
Fot. Jerzy Tyszkiewicz (CC SA)
Komentarze
A niekoniecznie. Jeśli zmieniony bajt nie należy do żadnego programu, to nie zmieni. Może też taka zmiana nie spowodować żadnych efektów, nawet zmiana w samym kodzie programu może być w teorii nieznacząca.
Ale: jak liczymy złożoność i liczbę kombinacji, to trzeba dodać np. rejestry i pamięć podręczną procesora (lub -ów), rejestry i pamięć karty grafiki, rejestry sprzętowe (i pamięć) innych układów (kontroler dysków, kontroler USB, karty sieciowe i multum innych) i ich wzajemnie relacje. Dochodzą różne możliwe kombinacje stanów wejściowych interfejsów (klawiatura, mysz, złacza, sygnały od podłączonych urządzeń). Zatem to wyliczeń dodałbym kilkadziesiąt jeszcze rzędów wielkości.
przykład z biologii do komentarza Jurgiego powyżej – istnieje coś takiego, jak genowe mutacje neutralne, które mogą się kumulować bez wpływu na działanie genu, tworzonego białka, organizmu etc. Przykładem – z głowy, na szybko – może być choćby mutacja kodonu stop – zamiast trójki kodującej przerwanie odczytywania RNA. Kiedy podmienimy kodon UAA kodonem UAG zmiana będzie widoczna tylko w samych kodonach – bez zmiany funkcjonowania kodowanej cząsteczki.
Pewnie nie rozumiem ale intuicyjnie wydaje mi sie ze komputer jest bardziej poznawalny niz na przyklad cep. Kiedy naciskam klawisz z litera, to chyba przynajmniej w tym przypadku wiadomo precyzyjnie jakie zmiany nastapia we wszystkich czesciach komputera. A z cepem nie jest tak latwo. Podejrzewam ze nie jest mozliwe wykrycie wszystkich zmian molekularnych ktore zachodza w ruchomym cepie, wlaczajac napiecia wewnetrzne, tarcie, transfer czasteczek itd. Przynajmniej komputer sklada sie z uorganizowanych elementow ktore maja skonczona liczbe mozliwych stanow (256 jak wspomniane wyzej). Cep jest zbudowany z materialu pochodzenia roslinnego, material ktory powstawal poza kontrola operatora. Tak wiec cep jest bardziej niepoznawalny niz komputer. Cokolwiek moze byc niepoznawalne lub poznawalne w zaleznosci od ambicji poznawczych obserwatora, a raczej poziomu organizacji ktora obserwator zamierza poznac.
ekolog,
uwaga: wszystko prawda, tylko ze oprocz suchego kodu genetycznego istnieje jeszcze cos, co po polsku mozna nazwac preferencyjne uzycie kodonow przez dana grupe taksonomiczna czy dany organizm. Jak to wyglada mozna sprawdzic np. tutaj:
http://www.kazusa.or.jp/codon/
.Kiedy dla przykladu chce sie uzyc E.coli jako maszynki do produkcji bialek, to aby otrzymac oczekiwany wynik trzeba czasem zmutowac sekwencje tak, zeby np. arginina byla kodowana wedlug preferencji tej bakterii, a nie organizmu, z ktorego gen pochodzi. Za egzotycznymi kodonami kryje sie egzotycznosc ARNt, a to moze miec (i ma) duzy wplyw na produkcje danego bialka jesli mutacja neutralna zmieni kodon z popularnego wlasnie na egzotyczny.
@ Jacobsky
Oczywiście, zgadzam się, ale w takiej sytuacji taka mutacja jest pozornie neutralna – bo chociaż kodowanie teoretycznie nie zmieni się, to jednak różnica w produkcie finalnym będzie występować. Ja podałem taki przykład z kodonem stop, ale do neutralności niezbędne są jak widać wszystkie elementy muszą być sprawdzone, żeby potwierdzić neutralną mutację 🙂
@Jacobsky:
Piszesz z Francji, prawda? Dlatego napisałeś ARNt (acide ribonucléique de transfert) zamiast tRNA? 🙂
Jeśli chodzi o preferencyjne użycie kodonów, to jest to prawda… ale nie do końca; poza kodonami najczęściej używanymi i kodonami najrzadziej używanymi istnieje szara strefa, gdzie różnicę ciężko stwierdzić, o ile nie ma się dużej statystyki (a i wtedy ciężko powiedzieć, jak się przekłada na rzeczywiste różnice w tempie translacji).
W biologii jednak miałbym skojarzenie z innymi problemami — np. fałdowania białek, tzn. paradoksem Levinthala. Teoretycznie istnieje niemal nieskończona liczba sposobów fałdowania białka o pewnej sewkencji aminokwasów.
Mimo to, białka potrafią znaleźć właściwą strukturę spontanicznie i bardzo szybko. Wiele białek potrafi szybko znaleźć właściwą konformację nawet in vitro, zgodnie z dogmatem Anfinsena. My natomiast nie potrafimy jej przewidzieć wyłącznie na podstawie sekwencji aminokwasów.
A co właściwie wiadomo w kwestii problemu collatza. Są jakieś oszacowania, przybliżenia, wzory, chociażby elementarny postęp?
Mi przykładowo sprytną, ale i trywialną sztuczką myślową udało się udowodnić, że żadna liczba postaci 3n się nie zapętla. A jak to jest z poważnymi matematykami? Czy wiedzą chociażby właśnie o tym? Bo nigdzie nie zetknąłem się z tą właśnie konstatacją, zresztą trudno znaleźć coś o tym problemie w internecie, księgarniach w ogóle co nie byłoby tylko kolejnym anemicznym jego opisem.