Algorytmy stochastyczne, wykład 05 Systemy Liendenmayera, modelowanie roślin
Jarosław Piersa
Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika
2014-03-20
1 Systemy Liendenmayera Definicja
2 Grafika żółwiowa Definicja
3 L-systemy Przykład
L-systemy ze stosem Stochastyczne LS
Przypomnienie
gramatyka to system (Σ, A, s0, P),
Σ — symbole terminalne (końcowe / alfabet)
A — symbole nieterminalne (pomocnicze), A ∩ Σ = ∅ s0 ∈ 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 (Σ, s0, P), Σ — alfabet / symbole
s0 ∈ Σ — 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
Przykład
Σ = {a, b}
s0 = a P =
a → ab b → a
Przykład
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 Fn 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ż Fn/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
Grafika żółwiowa
Dany: Żółw na płaszczyźnie z przymocowanym do skorupy pisakiem
(x , y ) położenie żółwia α ∈ [0, 2π) orientacja żółwia
Grafika żółwiowa
Żół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
Grafika żółwiowa
Żółw może
f — iść naprzód o s kroków bez rysowania kreski
x := x + s · cos(α) y := y + s · sin(α) α bez zmian
Grafika żółwiowa
Żół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”
Grafika żółwiowa
Żółw może
− — obrót w prawo o kat θ (x , y ) bez zmian
α := (α − θ)( mod 2π)
Przykład
Deterministyczne bezkontekstowe Σ = {F, f , +, −}
s0 = F
P = {F → F+F–F+F}
α = π/3
Przykład
n = 1
0 0.5 1 1.5 2 2.5 3
-1.5 -1 -0.5 0 0.5 1
n = 2
4 5 6 7 8 9
n = 3
0 5 10 15 20 25
-15 -10 -5 0 5
n = 4
40 50 60 70 80
n = 5
0 50 100 150 200
-150 -100 -50 0 50
L-Systemy z nawiasami
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)
Przykład
L-Systemy nawiasowe / ze stosem / z rozgałęzieniami Σ = {F , L, +, −, [, ]}
L — to samo co F , ale inne reguły produkcyjne Produkcje
P = { F → L[+F ][−F ] L → LL } s0 = F
Przykład
n = 1
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8
-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.60.8
n = 2
1 1.5 2 2.5 3 3.5
n = 3
0 1 2 3 4 5 6 7
-3 -2 -1 0 1 2 3
n = 4
4 6 8 10 12 14
n = 5
0 5 10 15 20 25 30
-15 -10 -5 0 5 10 15
n = 6
10 20 30 40 50 60
Stochastyczne LS
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ą
Przykład
0 2 4 6 8 10 12
-6 -4 -2 0 2 4
0 2 4 6 8 10 12 14
-2 0 2 4 6 8
-6 -4 -2 0 2 4
2 4 6 8 10 12 14
-5 0 5 10 15
-10 -5 0 5 10
2 4 6 8 10 12 14 16
Szum
do obrotu i przesunięcia dodajemy małą zmienną losową zamiast przesunięcie o s, przesuwamy o s + N(0, σ2) zamiast obrót o θ, obracamy o θ + N(0, τ2)
Przykład
0 2 4 6 8 10 12 14 16
-10 -8 -6 -4 -2 0 2 4 6 0
5 10 15 20 25
-5 0 5 10 15
Liście i kwiaty
dodajemy dodatkowo symbole i produkcje F → [+GL]F F → [−GP]F
L — liść / leaf, P — kwiat /petel, G — nienadpisywane przesunięcie (G → G )
Przykład
0 5 10 15
-5 0 5 10
0 5 10 15 20
-15 -10 -5 0 5
Źródła
P. Prosiunkiewicz, A. Liendenmayer, The algorithmic beaty of plants