Algorytmy stochastyczne, wykład 5, modelowanie roślin Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 214-3-2
1 2 3 ze stosem
Przypomnienie gramatyka to system (Σ, A, s, P), Σ symbole terminalne (końcowe / alfabet) A symbole nieterminalne (pomocnicze), A Σ = s A symbol początkowy P (Σ A) + (Σ A) produkcje / reguły zastępowania zastępujemy jeden symbol w każdym kroku
System Liendenmayera System Liendenmayera to trójka (Σ, s, P), Σ alfabet / symbole s Σ symbol początkowy P Σ + Σ produkcje / reguły zastępowania symbole terminalne i pomocnicze są utożsamione jeżeli nie ma jawnej reguły dla symbolu x, to przepisujemy x zastępujemy wszystkie symbole jednocześnie
Σ = {a, b} s = a { a ab P = b a }
w kolejnych iteracjach uzyskujemy a ab aba abaab abaababa abaababaabaab abaababaabaababaababa...
Obserwacje powyższy ciąg słów nazywamy słowami Fibonacciego długość n-tego słowa Fibonacciego wynosi F n dla n zachodzi: długość słowa liczba liter a = liczba liter a liczba liter b φ
Ciekawostki słowo Fibonacciego jest nieokresowe (dla okresów krótszych niż F n /2) słowa Fibonacciego mają kwadraty (podciąg powtórzony dwa razy po sobie) każde słowo nad alfabetem binarnym długości 4 lub więcej musi mieć przynajmniej jeden kwadrat! słowa Fibonacciego nie mają sześcianów (podciąg powtórzony trzy razy po sobie)
Ciekawostki słowa Fibonacciego nadają się jako kodowanie wiadomości z odpornością na szumy / autokorektą w słowie Fibonacciego nigdy nie wystąpią obok siebie: aaa ani bb odczytanie takiego podciągu oznacza błąd przesyłu wiadomości
Dany: Żółw na płaszczyźnie z przymocowanym do skorupy pisakiem (x, y) położenie żółwia α [, 2π) orientacja żółwia
Żółw może F iść naprzód o s kroków rysując linię pisakiem lub dowolny symbol pisany wielką literą x := x + s cos(α) y := y + s sin(α) α bez zmian
Żółw może f iść naprzód o s kroków bez rysowania kreski x := x + s cos(α) y := y + s sin(α) α bez zmian
Żółw może + obrót w lewo o kat θ (x, y) bez zmian α := (α + θ)( mod 2π) wzorek dla układu kartezjańskiego z osią OY zorientowaną do góry
Żółw może obrót w prawo o kat θ (x, y) bez zmian α := (α θ)( mod 2π)
ze stosem Deterministyczne bezkontekstowe Σ = {F, f, +, } s = F P = {F F+F F+F} α = π/3
ze stosem n = 1 3 2.5 n = 3 25 2 2 1.5 1 15 n = 5.5 5 2-1.5-1 -.5.5 1 n = 2 9 8 7 6 5 4 3 2 1-15 - -5 5 n = 4 8 7 6 5 4 3 2 15 5-15 - -5 5-5 -4-3 -2-1 1 2 3-5 -4-3 -2-2
L-Systemy z nawiasami ze stosem L-Systemy nawiasowe / ze stosem / z rozgałęzieniami Do alfabetu dołączamy dodatkowo: [ oraz ] Σ = {F, f, +,, [, ]} [ zapisz bieżącą pozycję i orientację żółwia (połóż kopię na stosie) ] odtwórz zapisaną pozycję (zdejmij ze stosu)
ze stosem L-Systemy nawiasowe / ze stosem / z rozgałęzieniami Σ = {F, L, +,, [, ]} L to samo co F, ale inne reguły produkcyjne Produkcje s = F P = { F L[+F ][ F ] L LL }
ze stosem n = 1 1.8 1.6 1.4 1.2 n = 3 7 6 5 n = 5 3 25 2 1.8.6.4.2 4 3 2 1 15 5 -.8 -.6 -.4 -.2.2.4.6.8 n = 2 3.5 3-3 -2-1 1 2 3 n = 4 14 12-15 - -5 5 15 n = 6 6 5 2.5 4 2 8 3 1.5 1.5 6 4 2 2-1.5-1 -.5.5 1 1.5-6 -4-2 2 4 6-3 -2-2 3
ze stosem Stochastyczne / niedeterministyczne W zbiorze produkcji dopuszczamy dwa lub więcej produkcji o tym samym poprzedniku Np. P = { F L[+F ][ F ] F L[F ][ F ] F L[+F ] } wybieramy losową z nich jeżeli jest tylko jedna, to wybieramy zawsze ją jeżeli nie ma żadnych, to stosujemy X X
ze stosem 12 8 15 6 8 6 4 2 5 4 2-2 -6-4 -2 2 4-6 -4-2 2 4-5 - -5 5 14 14 16 12 12 14 12 8 8 8 6 6 6 4 4 4 2 2 2-6 -4-2 2 4 6 8-4 -2 2 4 6 8 - -8-6 -4-2 2 4 6
Szum ze stosem do obrotu i przesunięcia dodajemy małą zmienną losową zamiast przesunięcie o s, przesuwamy o s + N(, σ 2 ) zamiast obrót o θ, obracamy o θ + N(, τ 2 )
ze stosem 16 25 14 12 2 15 8 6 4 2 5 - -8-6 -4-2 2 4 6-5 5 15
Liście i kwiaty ze stosem dodajemy dodatkowo symbole i produkcje F [+GL]F F [ GP]F L liść / leaf, P kwiat /petel, G nienadpisywane przesunięcie (G G)
ze stosem 15 2 15 5 5-5 5-15 - -5 5
Źródła ze stosem P. Prosiunkiewicz, A. Liendenmayer, The algorithmic beaty of plants