Arkadiusz Jadczyk Arkadiusz Jadczyk
998
BLOG

A numer jego 30 - nieprzypadkowy przypadek

Arkadiusz Jadczyk Arkadiusz Jadczyk Nauka Obserwuj temat Obserwuj notkę 12

Jakoś nie wierzę w przypadki. No, niedokładnie. Czasem powtarzam: brak determinizmu jest konieczny. Inaczej nie może być mowy o wolnej woli. Nawet sam Bóg nie mógł (a raczej nie chciał) wszystkiego przewidzieć. Bo gdyby chciał, to by przewidział i nie byłoby potrzeby tworzenia czegokolwiek. Kiedy indziej mówię jednak: nie ma rzeczy przypadkowych. Wszystko ma jakiś swój powód. Być może powód głęboko schowany, nam nieznany. I nie mogę się zdecydować, które stanowisko mam wybrać, na co postawić?

Przypadkowo, lub nieprzypadkowo, zająłem się automatami komórkowymi. Zaciekawiły mnie od samego początku. Sama historia zaczyna się od Polaka, Stanisława Ulama,

Ulam

także od jego kolegi Johna von Neumanna. Obaj pracowali nad bombą atomową. Lecz także obaj dali podstawy dla teorii automatów.

A numer jego 30 - nieprzypadkowy przypadek

Z angielskiej Wikipedii dowiadujemy się:

Von Neumann cellular automata are the original expression of cellular automata, the development of which were prompted by suggestions made to John von Neumann by his close friend and fellow mathematician Stanislaw Ulam.

Czyli idea należała do Ulama, praca nad ideą do von Neumanna. Był to rok 1951. W publikacji Stanislaw M. Ulam Contributions to Theoretical Theory, autorzy zaczynają od stwierdzenia, że

„W przedwojennej Polsce tradycją było, że naukowiec winien być zaznajomiony także z innymi dyscyplinami naukowymi, poza swoją własną. Stanisław M. Ulam zdobył wykształcenie matematyka w przedwojennej Polsce właśnie zgodnie z tą tradycją, i przez całe swoje życie cieszyło go rozwiązywanie problemów w fizyce, astronomii i biologii, jak również w matematyce.”

Dowiadujemy się stamtąd, że Ulam pracował nad teorią automatów niezależnie od von Neumanna. Między innymi nad ideą automatów samoreprodukujących się. Jeśli ludzkość kiedyś zniknie z powierzchni Ziemi, to będzie to prawdopodobnie dzięki jednej z tych rzeczy do których Ulam i von Neumann się przyczynili: zmiotą nas bomby jądrowe lub samoreprodukujące się automaty (realnych możliwości zagłady gatunku ludzkiego jest oczywiście więcej).

Dobrze jest znać naszych wrogów i przyjaciół. Zatem wracam do automatów komórkowych. Tych najprostszych, jednowymiarowych, tych o których zacząłem pisać w poprzedniej notce.

Chcę zacząć od jednego przykładu. Od konkretnego automatu komórkowego, mianowicie od automatu numer 30. Lub lepiej: od automatu opartego na regule numer 30. Co to znaczy? Powróćmy do poprzedniej notki. Nasz automat rozwija się w czasie krok po kroku. Jeśli jestem jedną z komórek tego automatu, to decyduję się czy żyć dalej (stan 1) czy też umrzeć (stan 0) patrząc na mój aktualny stan i na stan najbliższych dwóch sąsiadów, tego z lewej i tego z prawej. W świecie automatów, teoretycznie, możliwe jest zmartwychwstawanie, chyba, że je programowo wyeliminujemy. Reguła działania automatu kodowana jest w ciągu ośmiu liczb 0 lub 1. By związać automat z numerem 30 zapisujemy 30 w układzie dwójkowym. Idziemy do Decimal to Binary Converter, wpisujemy 30, wychodzi

00011110

To znaczy, reguła naszego automatu to przejścia

111

110

101

100

011

010

001

000

0

0

0

1

1

1

1

0

Zapiszmy otoczenie jako abc. Nasz lewy sąsiad to a, nasz prawy sąsiad to c, by sami to b. Regułę naszego automatu możemy zapisać jednym wzorem, mianowicie

abc przechodzi w

a + b + c + bc modulo 2

Wypiszmy a+b+c +bc dla każdego z ośmiu przypadków:

abc

111

110

101

100

011

010

001

000

a+b+c+bc

4

2

2

1

3

1

1

0

Przypomnę, że liczba całkowita modulo 2 to albo 0, jeśli parzysta, albo 1 jeśli nieparzysta. Zatem w samej rzeczy otrzymujemy z naszej formuły liczbę 30.

W definicji zmiany stanów mamy a+b+c – to jest wyrażenie liniowe w a,b,c. Nie ma potęg i iloczynów. Mamy jednak także iloczyn bc. To czyni nasz automat nieliniowym. W ogóle, to bardzo niewiele jest automatów liniowych. Zajmiemy się jeszcze nimi. Dzisiaj mamy automat 30, liniowa suma ale z nieliniowym dodatkiem.

Teraz nasz automat puścimy w ruch. Trzeba jedna zdecydować jaki będzie stan początkowy. Bóg stwarzając świat wypowiedział jakieś tajemnicze słowo. Nie znając tego słowa możemy zawsze zacząć od czegoś bardzo prostego: wszystkie komórki martwe z wyjątkiem jednej, żywej, w którą wdechnięta została dusza. Jak się taki automat będzie rozwijał? Znamy reguły, więc możemy obliczać. Ręcznie to męczące. Zaprzęgamy więc do pracy komputer. I tu mamy problem. Kiedyś, gdy komputery dopiero wchodziły w świat, były dwa języki programowania: Basic i Logo. Uczono ich w szkołach. I niemal każdy właściciel prymitywnych komputerów ZX 90 czy Commodore czy Atari, miał Basic czy Logo i umiał napisać program w tym języku. Dziś języków jest od metra, w szkołach nie wiem czego uczą, i nie wiem co kto na swoim komputerze ma, poza przeglądarką i programami do oglądania filmów i słuchania muzyki. Zatem będę zaprzęgał do pracy mój własny komputer. Kto się nie boi Javy może ściągnąć sobie

http://kastin.pl/wp-content/uploads/2013/04/automaty.jar

Po kliknięciu otworzy się okienko. Ewentualnie powiększamy. Wpisujemy Typ 30, przesuwamy suwak na środek. Generujemy. Wychodzi coś takiego:

A numer jego 30 - nieprzypadkowy przypadek

 

 

Ja używam programu Mathematica. Tu wystarczy jedna komenda

ArrayPlot[CellularAutomaton[30,{{1},0},100]]

Co oznacza: sto kroków, startując z jednej jedynki na tle samych zer. Wynik ten sam co z programu Javy.

W międzyczasie zapomnieliśmy o punkcie wyjścia. O nieprzypadkowej przypadkowości. Nasz obrazek w samej rzeczy wygląda nieco chaotycznie. Regularna jest jedynie jego lewa strona. Przyjrzyjmy się jednak ciągowi zer i jedynek w środkowej kolumnie, pod osamotnioną początkową jedynką. Oto ciąg 100 wyników w środkowej kolumnie:

1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1,

1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0,

0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0,

0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1,

0, 0, 1, 0, 1, 1, 0, 0, 0

Oczywiście możemy tak generować 0 i 1 w nieskończoność (uważając przy tym na warunki na brzegach). Wolfram, ten twórca „Nowego Rodzaju Nauki” opartego na automatach komórkowych, twierdzi, że stosował wszystkie znane mu testy na losowość, i tak wygenerowanego ciągu zer i jedynek nie udaje się odróżnić od „czysto losowego”. Żadnej regularności nie widać a średnie występowania różnych bloków wychodzą też jak trzeba.

Jeśli to prawda, to prosta reguła 30 wystarcza do generowania przypadku. Jest to przypadek nieprzypadkowy. Reguła prosta, wynik niemożliwy do przewidzenia inaczej niż poprzez zastosowanie reguły. Na skróty się nie da. Chcesz przewidzieć co będzie za lat dziesięć? Proszę bardzo. Obliczenia będą trwały lat dziesięć. Takie rozwiązanie zadowoliłoby mnie jako wahającego się pomiędzy Bóg gra w kości a Bóg nie gra w kości.

Reguła 30 jest ciekawa. Ugryźliśmy ją trochę. A jak dalej będzie smakować? I co z innymi regułami? I czy jest odwracalna?

Naukowiec, zainteresowany obrzeżami nauki. Katalog SEO Katalog Stron map counter Życie jest religią. Nasze życiowe doświadczenia odzwierciedlają nasze oddziaływania z Bogiem. Ludzie śpiący są ludźmi małej wiary gdy idzie o ich oddziaływania ze wszystkim co stworzone. Niektórzy ludzie sądzą, że świat istnieje dla nich, po to, by go pokonać, zignorować lub zgasić. Dla tych ludzi świat zgaśnie. Staną się dokładnie tym co dali życiu. Staną się jedynie snem w "przeszłości". Ci co baczą uważnie na obiektywną rzeczywistość wokół siebie, staną się rzeczywistością "Przyszłości" Lista wszystkich wpisów  

Nowości od blogera

Komentarze

Inne tematy w dziale Technologie