21
Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a fraktály Deterministický chaos: zdanlivo chaotické zmeny generované nelineárnymi systémami, nie "šum" prudký nárast rozdielov pôvodne blízkych stavov určený rovnicami - "motýli efekt" (A) Trajektórie dynamického systému nie sú veľmi citlivé na malé zmeny počiatočných

Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a fraktály

Deterministický chaos: zdanlivo chaotické zmeny generované nelineárnymi systémami, nie "šum" prudký nárast rozdielov pôvodne blízkych stavov určený rovnicami - "motýli efekt"

(A) Trajektórie dynamického systému nie sú veľmi citlivé na malé zmeny počiatočných

Page 2: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

podmienok. (B) sú veľmi citlivé na zmeny počiatočného stavu.

Koncom 19 storočia. pohyb sústavy dvoch hmotných telies (napr. Slnka a Jupitera) na ľubovoľný čas dopredu dosadením do jedného vzorčeka, pre 3 telesá analytické riešenie neexistuje, nestability, nepravidelný (teda chaotický) pohyb pre presne dané rovnice.

Logistická rovnica a evolučná dynamika

diferenčná rovnica xi+1=r xi (1- xi) xi napr. veľkosť populácie v čase i r plodnosť (r ∈(0,4))

Page 3: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

0.2 0.2 0.20.4 0.4 0.40.6 0.6 0.60.8 0.8 0.81 1 1

0.2 0.2 0.2

0.4 0.4 0.4

0.6 0.6 0.6

0.8 0.8 0.8

1 1 1

1

Typické behy iterácií logistickej rovnice pre rôzne hodnoty r a ich "pavučinové" diagramy.

Page 4: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

r

x

00

0.5

0.5

2.51.5 3.51

1

32 4

Bifurkačný diagram logistickej rovnice ukazuje, ku ktorých hodnotám x pre dané r logistická rovnica konverguje, alebo medzi ktorými osciluje. Napr. pre r=2.8 sa iterácie blížia k 1 hodnote, pre r=3.2 k 2 a pre r=3.54 k 4 hodnotám.

Page 5: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

#include <stdio.h> #include <stdlib.h> int sort(void *a, void *b){ return *(int*)a-*(int*)b; } void main(void) { int i, pocet=1; float r, x=0.1; float pole[100]; printf("r="); scanf("%f", &r); for(i=0;i<10000;i++) pole[i%100]=x=r*x*(1.-x); qsort((void *) pole, 100, sizeof(int), sort); printf("%f\n",pole[0]); for(i=1;i<100;i++) if(pole[i]-pole[i-1]>0.0001) { printf("%f\n",pole[i]); pocet++; } printf("Iteracie sa blizi k %d hodnotam",pocet); }

Page 6: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

Oscilácie aj inak – populačný systém dravec – korisť (Hudsonov záliv) Lotkova-Volterrova diferenciálna rovnica dN1(t)/dt = N1(r1−b1N2 ),dN2(t)/dt = N2(−r2+b2N1 ), kde N1(t) korisť, N2(t) dravci, r1 plodnosť koristi, vymieranie dravcov r2, úspešnosť dravcov b1, vplyv nasýtenia dravcov na ich rozmnožovanie b2.

5 10 15 20 25 30 350

10

20

30

40

50

10 20 30 40 50 600

5

10

15

20

25

čas

čas

počet dravcov

počet dravcov

počet kusov koristi

počet kusov koristi

Page 7: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

Dvojrozmerné a jednorozmerné celulárne automaty

CA sú diskrétne nelineárne dynamické systémy zložené z rovnakého typu "buniek" s konečným počtom stavov, ktorých správanie je určené ich momentálnym stavom a stavmi "buniek" v ich najbližšom okolí. jednoduchých zákonov však vznikajú veľmi zložité štruktúry a vzory správania vyšších celkov (zložitých vzorov) jednoduchých buniek.

Von Neumann asi 1950 - modely biologickej autoreprodukcie Použitie pri modelovaní turbulencie v kvapalinách a oscilačných

chemických reakcií, pri modelovaní fibrilácií srdca, rastu rastlín a dendritického rastu kryštálov, v ekológii, DNA evolúcii, modelovaní rozširovania infekčných chorôb, sociálnej dynamiky mestskej populácie, šírenia správ, imitačného správania, rastu populácie, vývoja mesta alebo dopravných zápch, šírenia lesných požiarov, alebo pre modelovanie biologických fenoménov, ako sú hmyzie spoločenstvá, bunkové kolónie, sietnica – vnútorný obal očnej gule, imunitný systém, v geológii na modelovanie zemetrasenia, sopiek a pretvárania zemského povrchu, v ekonomike pri fluktuáciách cien.

Page 8: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

Čas 1 Čas 2 Čas 3 Čas 4 Čas 5

Štruktúra “klzák” z hry Life (primitívny celulárny automat, r. 1970, GameOfLife.exe) Pravidlá: 1. STABILNÝ STAV: Bunka s 2 živými susedmi nemení stav 2. RAST: Bunka s 3 živými susedmi v ďalšej generácii živá 3. SMRŤ: Bunka s 0, 1, 4-8 živými susedmi v ďalšej generácii "mŕtva” (podchladenie alebo prehriatie). Pri použití "klzákov" ako bitov je možné vytvoriť "and"-brány, "or"-brány apod. Life je Turingovým počítačom.

Page 9: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a
Page 10: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

čas

iterácie podľa súboru pravidiel č. 110

prvá bunka sused zľava bunka v čase t sused zprava

bunka v čase +1t

zväčšený obrázokzľava

Wolframov jednorozmerný celulárny automat začínajúci jedinou čiernou štvorcovou bunkou v riadku buniek. Odhora dolu sú riadky od prvej po 74 iteráciu. Pravidlo 110 je dekadickým zakódovaním binárneho čísla 01101110 určujúceho pravidlá premeny, nula je biela, jednotka čierna bunka, horná trojica stavu bunky a jej susedov zľava a sprava ide pritom od 111 po 000.

Page 11: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

#include <stdio.h> #include <stdlib.h> void main(void) { int i,j, int poleX[27], poleY[27], *pX, *pY, *pPOM; pX=poleX; pY=poleY; for(i=0;i<27;i++) poleX[i]=poleY[i]=0; poleX[25]=1; for(j=0;j<24;j++) { for(i=0;i<=25;i++) if(pX[i]) printf("X"); else printf(" "); printf("\n"); for(i=1;i<=25;i++) if(((pX[i-1]+pX[i]+pX[i+1])==3) || ((pX[i]+pX[i+1])==0)) pY[i]=0; else pY[i]=1; pPOM=pX; pX=pY; pY=pPOM; } }

Page 12: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

Úkol za 5 bodov na skúšku (pre prvých 3 študentov, ktorí úlohu budú mať do 10 minút naprogramovanú v jazyku C): Upravte vyššie uvedený program tak, aby užíval pravidlo č. 30 a začínal vprostred riadku jednou živou bunkou.

Page 13: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

Hranica chaosu a emergencia Celulárny automat 110 vyrába trojuholníky, ale ako to predpovedať? Ako z vlastností molekúl odvodiť existenciu tornád, zo zrnka piesku existenciu lavín, zo semena podobu rastliny či z neurónu vedomie? Emergentné správanie sa je typicky neočakávané. Najrýchlejší "výstup" semena – nechať ho vyklíčiť.

Christopher Langton: parameter lambda na predpoveď, či daný celulárny automat bude usporiadaný, chaotický alebo na hranici medzi poriadkom a chaosom = komplexné správanie λ=(K N-n)/K N. N – veľkosť okolia, K možných stavov bunky, n – pravidlá vedúce k 0

λc0.0 1.0

stab

ilné

nič

sa n

emen

í

chao

s

zložité správanie,tvorenie komplexných štruktúr

stav

y sa

per

iodi

cky

op

akuj

ú

sprá

vani

e nest

abiln

é

vedie kstabilnému stavu

vedie k periodickému opakovaniustavov

komplexné dlho neustálené, ale neperiodickésprávanie so"zaujímavými"štruktúrami

chaos, okom nerozlíšiteľné od náhodnegenerovaných stavov

Page 14: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

Fraktály a Lindenmayerove systémy geometrické tvary s veľmi komplikovanou štruktúrou. Keď si zväčšíte nejakú sekciu fraktálu, vidíte rovnaké množstvo detailov ako u celého fraktálu. Fraktály sú rekurzívne definované (sebapodobnosť).

Lindenmayerov systém na modelovanie rastu a rozvoja organizmov, v simulátoroch a v počítačovej animácii. Počiatočný symbol je F a produkčné pravidlo F → F [+F][-F], interpretovaný je ďalej uvedenými pravidlami a rovnicami, s rekurziou do úrovne 7.

F znamená nakresli čiaru (začíname z 0,0 do 0,10) [ zapamätať si súradnice koncového bodu a zodpovedajúcu zmenu súradníc dx= xkoncový − xpočiatočný , dy= ykoncový − ypočiatočný ] znamená vrátiť sa na zapamätané súradnice bodu a zodpovedajúce dx a dy + znamená otočiť sa doľava; použili sme prepis pre súradnice nového bodu xkon= xpoč +0.7(cos40o dx - sin40o dy); ykon = ypoč +0.7(sin40o dx + cos40o dy) − znamená podobne sa otočiť doprava o 33o;

Page 15: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

kvadratický Kochovej ostrov = Lindenmayerov systém pre počiatočný bod F+F+F+F, produkčné pravidlo F → F+F-F-FF+F+F-F. Uhol otáčania v hore uvedených rovniciach bude 90o a zmenšenie sa použije iba pri rekurzii. Má nekonečný obvod. Fraktály majú aplikácie v biológii na modelovanie • napr. sieť 10 miliárd ciev a kapilár v 5% ľudského tela, je taká hustá, že

žiadna bunka nie je od nej vzdialená viac ako 3-4 bunky • systém 300 000 000 alveol v pľúcach, 1 cm3 = respiračná plocha 300 cm2 • vnútrajšok ľadvín, 1800 litrov krvi za deň, 1 000 000 filtračných jednotiek • u Purkyněho vlákien regulujúcich tep – pre defibrilátory proti infarktu • metódy fraktálnej kompresie dát a šifrovanie, kedy príjemca kódovanej

správy musí mať chaotický algoritmický kľúč

Page 16: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

Fraktálová dimenzia =log(počet sebepodobných kópií)/ log(faktor zväčšenia) Úsečku môžeme rozdeliť na N sebepodobných dielov, a každý z nich zväčšiť N-krát. Pre štvorec to je dimenzia=log(N2)/ log(N) =2 log(N)/ log(N) =2. Pre fraktálový obrazec tzv. Sierpinského sita je dimenzia=log(3)/ log(2) ≅1.26, čo je neceločíselná dimenzia.

Postupná tvorba fraktálovej štruktúry Sierpinského sito s nulovou plochou. Generuje sa z rovnostranného trojuholníka, kde spojíme stredy strán, z 4 nových trojuholníkov opakujeme tento proces iba pre 3 externé. Táto štruktúra môže byť vyjadrená aj ako Lindenmayerov systém s počiatkom F+F+F a pravidlom F → F+F-F-F+F. Uhol otáčania v rovniciach bude 120o.

Page 17: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

Fraktály hrou chaosu: zvolíme bod (x0,y0), aplikujeme náhodne zvolené pravidlo z axi+byi+e=xi+1, cxi+dyi+f=yi+1, dostáváme bod (x1,y1), iterácie opakujeme. Pre generovanie Sierpinského sita (1000 bodov) platia konštanty a=0.5, b=0, c=0, d=0.5, a konštanty e, f si vyberáme s rovnakou pravdepodobnosťou z dvojíc e=0, f=0; e=1, f=0; e=0.5, f=0.8660254. Pre generovanie Barnsleyho paprade (100000 bodov) sú tieto konštanty rovné

a b c d e f Pravdepodobnosť

0.85 0.04 -0.04 0.85 0 0.3 0.85 -0.15 0.28 0.26 0.24 0 0.0825 0.07 0.2 -0.26 0.23 0.22 0 0.3 0.07 0 0 0 0.16 0 0 0.01

Page 18: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

void main(void) { int i; float x[1000]={1.0}, y[1000]={1.0}, a=0.5, d=0.5, randX; FILE *out; if ((out = fopen("sierpinsky.txt", "wt")) == NULL) { fprintf(stderr,"Cannot open input file.\n");return; } for(i=1;i<1000;i++) { randX=rand()/((double)RAND_MAX + 1); if(randX<0.333333) { x[i]=a*x[i-1]; y[i]=d*y[i-1]; } else if(randX<0.666666) { x[i]=a*x[i-1]+1.0; y[i]=d*y[i-1]; } else { x[i]=a*x[i-1]+0.5; y[i]=d*y[i-1]+.8660254; } fprintf(out,"%f %f\n",x[i],y[i]); } fclose(out); }

Page 19: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a

Zoológ Richard Dawkins: Slepý hodinár – "biomorfy" strom, žaba a samuraj, obrázky vytvorené algoritmom založeným na rekurzii a pravidlách podobných Lindenmayerovým systémom, kde však sú pravidlá zakódované chromozómami, ktoré prechádzajú drobnými zmenami. Užívateľ má napr. na výber z 8 možných obrázkov a ten, ktorý si vyberie, tvorí základ pre ďalších 8 obrázkov vytvorených pomocou náhodne pozmenených pravidiel. Ďalej Mandelbrotova a Juliova množina: iterácie f(x) = x2 - µ komplexných čísel x a µ

Page 20: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a
Page 21: Algoritmizácia a programovanie - FIIT STUpospichal/prednaskaAlgPrFIIT... · 2004-12-09 · Algoritmizácia a programovanie 12. prednáška (2 časť) Chaos, celulárne automaty a