18+
Ta strona może zawierać treści nieodpowiednie dla osób niepełnoletnich.
Zapamiętaj mój wybór i zastosuj na pozostałych stronach
topic

Gra w Życie

gi...........on • 2012-08-13, 22:53
"Gra w Życie" (ang. The Game of Life)

Jest wymyślonym przez brytyjskiego matematyka Johna Conwaya w 1970 roku automatem komórkowym, czyli prościej mówiąc zestawem modeli matematycznych opisujących siatkę komórek oraz reguły ich zachowania - zmiany stanów i przejść.

Założenie również jest proste - mamy dwuwymiarową płaszczyznę podzieloną na komórki. W teorii jest ona nieskończenie wielka - tutaj natomiast dla celów prezentacyjnych będzie miała określony, skończony wymiar X na Y.

Każda komórka na płaszczyźnie może przyjąć jeden z dwóch stanów (stany binarne) - wizualnie komórka jest "wypełniona" (żywa) lub pusta (martwa).

Po zadaniu stanu początkowego na płaszczyźnie (wypełnieniu określonych przez "gracza" komórek) algorytm startuje i przetwarza stany wszystkich komórek w każdym kolejnym korku według określonych zasad:

- Jeśli zadana komórka jest martwa i otaczają ją dokładnie trzy komórki żywe, to komórka ta staje się żywa (rodzi się) w następnej turze.

- Jeśli zadana komórka jest żywa i otaczają ją mniej niż dwie lub więcej niż trzy żywe komórki, to komórka ta umiera w następnej turze - w przeciwnym wypadku pozostaje żywa.

Przez komórki otaczające mają być rozumiane takie, które sąsiadują z zadaną komórką - znajdują się na dowolnym z otaczających ośmiu pól na siatce 3x3, na której zadana komórka jest na środku.

Warto nadmienić, że opisane zasady wykorzystane są w oryginalnej grze, natomiast modyfikując je można stworzyć "życie" tworzące struktury innego rodzaju i reagujące w inny sposób.


To by było na tyle, jeśli chodzi o teorię...

No tak... pewnie początek wrzutki nie brzmi za ciekawie, bo robię wywody matematyczne, ale zaraz będzie ciekawiej.

Otóż okazuje się, że prosty w założeniu i pracujący na prostych zasadach układ jest w stanie wykazywać bardzo ciekawe "zachowania" - poczynając od tworzenia różnych typów struktur, które można pogrupować (o czym dalej), a kończąc na złożonych konfiguracjach potrafiących na przykład replikować się, tworzyć inne struktury, lub nawet... dokonywać obliczeń, stając się przy tym maszyną Turinga (modelem komputera zdolnego wykonywać algorytmy).

I z grubsza na tym polega cały fenomen - ludzie od lat obserwują zachowania się zadanych układów, odnajdując coraz nowsze cechy charakterystyczne.


Rodzaje struktur

Stabilne:

Struktury, których komórki nie zmieniają stanów w kolejnych fazach (generacjach, rundach "gry"), przykładowo takie:



Oscylatory:

Struktury zmieniające się okresowo, czyli powtarzające pewien cykl w formie zestawu układów komórek w nieskończoność.

Przykładowo prosty oscylator zwany "blinker" o okresie równym 2:



Oraz bardziej zaawansowany "pulsar" o okresie 3:



Oczywiście istnieją też bardziej zaawansowane oscylatory z okresami rzędów tysięcy.

"Statki":

Podobnie jak oscylatory charakteryzują się cyklicznością, jednak w odróżnieniu od nich przemieszczają się po wykonaniu pełnego okresu (w kierunku zależnym od struktury) - przykładowo "glider":



"Pociągi" (lub "Lokomotywy"): (ang. "puffers")

Warianty statków, które dodatkowo przy przemieszczaniu się pozostawiają za sobą inne struktury. Nazwa pochodzi od skojarzenia z lokomotywą, która pozostawia za sobą kłęby dymu.

Bardziej zaawansowana forma puffera to Breeder ("rozpłodnik"), zdolny do pozostawiania po sobie innych bardzo złożonych struktur. Jego przyrost komórek w populacji jest kwadratowy.

Breeder w makroskali:



Pozostawia on po sobie serie "dział" (ang. Guns) - struktur produkujących seryjnie statki. W tym przypadku są to działa "Gosper's Glider", które wyglądają tak (w przybliżeniu i odwrócone o 90 stopni w stosunku do poprzedniego obrazka):



Jak można zauważyć i wywnioskować po nazwie, działo to produkuje opisane wcześniej "glidery".

Niestałe (niestabilne):

To struktury, które "żyją" i rozwijają się przez określoną ilość pokoleń, po czym ulegają zniszczeniu lub stabilizacji w prostszą stałą strukturę - przykładowo taki układ (zwany "acorn"):



Potrzebuje on 5206 faz aby się ustabilizować - dodatkowo przy okazji produkując inne struktury.


Podsumowując

Jeśli temat Cię zaciekawił to polecam obejrzeć te filmy:





Oraz pobawić się napisanym przeze mnie symulatorem. Kliknięcie w komórkę zmienia stan - ustaw stan początkowy (i ewentualnie prędkość upływania pokoleń w milisekundach), kliknij "Start" i podziwiaj. Ewentualnie klikaj w "Step", aby samemu wywoływać kolejne pokolenia:

http://www.gipson.pl/gol/

P.S. Symulator jest on-line, napisany w JavaScript'cie - nic nie trzeba ściągać.

majster0000

2012-08-14, 18:30
@gipson

No tak ale jak ma sie ta maszyna Turinga do tego co jest w tym symulatorze skoro w symulatorze bylo wymienione że są ustalone własne zasady kiedy kwadraciki giną i tak dalej .

No i nie bardzo troche rozumiem o co chodzi w tym linku co dałeś.

Skończyłem teraz pierwszy rok elektroniki i widziałem troche inne sposoby na mnożenie używając kodu binarnego.

Sam niewiem albo mnie ten temat przerasta albo jestem głąbem :D

W każdym razie dzięki że chciało ci sie to wyjaśniać jeszcze raz ;-)

.:...........:.

2012-08-14, 18:30
majster0000 napisał/a:

Sam niewiem albo mnie ten temat przerasta albo jestem głąbem :D



A jaki masz kolor włosów na głowie?

gi...........on

2012-08-14, 19:33
@majster0000:

Ja też studiowałem elektronikę i powiem Ci, że nie masz się czego dziwić. Zamiast rozpocząć od podstaw - rzeczy użytecznych, ciekawych i przydatnych, program nauczania przewiduje, że rozpoczniesz czystą, teoretyczną matematyką, a później będziesz do końca napie**alać druty i układy :) Powodzenia!

A tak jeszcze podsumowując dla Ciebie:

Chodzi właśnie o to, że zamiast czynności:
- włączasz kalkulator,
- klikasz "3",
- klikasz "x",
- klikasz "4",
- klikasz "=",
- odczytujesz wynik (a wszystkie operacje obliczenia robi komputer).

Wykonujesz czynności:
- tworzysz własny model komputera (w tym przypadku na dodatek w stworzonym przez siebie środowisku - Grze w Życie),
- tworzysz zestaw instrukcji dla niego (tak jak instrukcje dla normalnego fizycznego procesora - program),
- ur*chamiasz ten program,
- Twój komputer wylicza wynik (tutaj działania maszyny Turinga),
- odczytujesz wynik.

Ponownie w DUŻYM skrócie, ale może teraz jaśniej.

nanab

2012-08-15, 00:31
ozzy88 napisał/a:



Znawca się odezwał.

Mówiłbyś inaczej, gdybyś rozumiał sens całości...


No własnie nie widze sensu ze zaznaczam jakieś punkciki a one się obracają