Obliczenia inspirowane Naturą

Podobne dokumenty
Obliczenia inspirowane Naturą

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

Algorytmy stochastyczne, wykład 05 Systemy Liendenmayera, modelowanie roślin

Obliczenia inspirowane Naturą

Matematyczne Podstawy Informatyki

JAO - Wprowadzenie do Gramatyk bezkontekstowych

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Obliczenia inspirowane Naturą

Języki formalne i automaty Ćwiczenia 1

Systemy Lindenmayera (L-systemy)

Hierarchia Chomsky ego Maszyna Turinga

INTERAKTYWNA KOMUNIKACJA WIZUALNA. Systemy Lindenmayera (L-systemy)

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

Matematyczne Podstawy Informatyki

Języki, automaty i obliczenia

Hierarchia Chomsky ego

JIP. Analiza składni, gramatyki

Języki formalne i automaty Ćwiczenia 3

Wprowadzenie do analizy składniowej. Bartosz Bogacki.

Języki formalne i automaty Ćwiczenia 9

Języki, automaty i obliczenia

Klasyczne i kwantowe podejście do teorii automatów i języków formalnych p.1/33

Języki formalne i automaty Ćwiczenia 5

Jaki język zrozumie automat?

Języki formalne i automaty Ćwiczenia 4

Lingwistyka Matematyczna Języki formalne i gramatyki Analiza zdań

JAO - lematy o pompowaniu dla jezykow bezkontekstowy

JĘZYKI FORMALNE I METODY KOMPILACJI

Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura

GRAMATYKI BEZKONTEKSTOWE

Maszyna Turinga języki

Automat ze stosem. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

0.1 Lewostronna rekurencja

Wprowadzenie do programowania języki i gramatyki formalne. dr hab. inż. Mikołaj Morzy

Języki, automaty i obliczenia

Języki formalne i automaty Ćwiczenia 2

Zadanie 1. Czy prawdziwa jest następująca implikacja? Jeśli L A jest językiem regularnym, to regularnym językiem jest też. A = (A, Q, q I, F, δ)

Obliczenia inspirowane Naturą

Języki formalne i automaty Ćwiczenia 7

Języki programowania zasady ich tworzenia

JĘZYKIFORMALNE IMETODYKOMPILACJI

Gramatyki rekursywne

1 Automaty niedeterministyczne

Metody Kompilacji Wykład 8 Analiza Syntaktyczna cd. Włodzimierz Bielecki WI ZUT

Języki formalne i automaty Ćwiczenia 6

Gramatyki regularne i automaty skoczone

Podstawy programowania w Pythonie

Efektywna analiza składniowa GBK

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

Elementy Teorii Obliczeń

Dopełnienie to można wyrazić w następujący sposób:

10. Translacja sterowana składnią i YACC

Imię, nazwisko, nr indeksu

Modelowanie roślin przy użyciu języków formalnych

Wykład 1 Wybrane problemy algorytmiki

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Generatory analizatorów

Temat: Zastosowanie wyrażeń regularnych do syntezy i analizy automatów skończonych

Algorytmy zapisywane w pseudojęzyku programowania. Klasa 2 Lekcja 6

Analiza semantyczna. Gramatyka atrybutywna

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Matematyczna wieża Babel. 4. Ograniczone maszyny Turinga o językach kontekstowych materiały do ćwiczeń

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Metody Kompilacji Wykład 3

Obliczenia inspirowane Naturą

Gramatyki grafowe. Dla v V, ϕ(v) etykieta v. Klasa grafów nad Σ - G Σ.

Parsery LL(1) Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Języki i gramatyki formalne

JĘZYKI FORMALNE I METODY KOMPILACJI

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

Turing i jego maszyny

Definiowanie języka przez wyrażenie regularne(wr)

Gramatyki (1-2) Definiowanie języków programowania. Piotr Chrząstowski-Wachjtel

(j, k) jeśli k j w przeciwnym przypadku.

Wykład 5. Jan Pustelnik

Wyrażenia regularne.

3.4. Przekształcenia gramatyk bezkontekstowych

Temat: Algorytm kompresji plików metodą Huffmana

Teoretyczne podstawy informatyki

Gramatyki atrybutywne

Zadania do Rozdziału X

Języki, automaty i obliczenia

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

11 Probabilistic Context Free Grammars

Języki formalne i gramatyki

Aproksymacja funkcji a regresja symboliczna

- Dla danego zbioru S zbiór wszystkich jego podzbiorów oznaczany symbolem 2 S.

RACHUNEK ZDAŃ 7. Dla każdej tautologii w formie implikacji, której poprzednik również jest tautologią, następnik także jest tautologią.

Metoda Tablic Semantycznych

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

1. Maszyna Turinga, gramatyki formalne i ONP

Przykład: Σ = {0, 1} Σ - zbiór wszystkich skończonych ciagów binarnych. L 1 = {0, 00, 000,...,1, 11, 111,... } L 2 = {01, 1010, 001, 11}

Monoidy wolne. alfabetem. słowem długością słowa monoidem wolnym z alfabetem Twierdzenie 1.

Metodologie programowania

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

Algorytmy i struktury danych. wykład 2

Maszyna Turinga (Algorytmy Część III)

Zadanie analizy leksykalnej

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Transkrypt:

Obliczenia inspirowane Naturą Wykład 05 Biologia i gramatyka Jarosław Miszczak IITiS PAN Gliwice 07/04/2016 1 / 40

1 Nieformalne określenie fraktali. 2 Wymiar pudełkowy/fraktalny. 3 Definicja fraktali. 2 / 40

1 2 Systemy półthueowskie Hierarchia Chomskiego Postać Backusa-Naura Wyrażenia regularne 3 / 40

L-systemy L-systemy czyli systemy Lindenmayera. 1968, Aristid Lindenmayer wykorzystanie do opisu rozwoju alg i innych prostych organizmów wielokomórkowych. L-systemy to przykład systemu przepisywania ciągów (ang. string rewriting system). Transformują one zadany ciąg wejściowy za pomocą gramatyki czyli zespołu reguł. Reguły są wywoływane rekurencyjnie co prowadzi do pojawienia się struktur samopodobnych. 4 / 40

L-systemy Co to jest przepisywanie? Przepisywanie Metoda tworzenie nowych obiektów poprzez zastępowanie ich części. Abstrakcyjny systemy przepisywania Zbiór A wraz z binarną relacją, A A, nazywaną redukcją (ang. reduction relation lub rewrite relation). System przepisywania nie określa algorytmu, a jedynie reguły przekształcania obiektów podobnie jak deklaratywne języki programowania. 5 / 40

L-systemy Systemy przepisywanie ciągów Systemy przepisywanie ciągów Bazuje na strukturze wolnego monoidu, czyli możliwości operowania na skończonych ciągach elementów zbioru. Monoid Zbiór A z elementem jednostkowym i z operacją binarną, która jest łączna, ((x y) z = x (y z)). Inaczej: półgrupa z jednością. Wolny monoid Zbiór wszystkich skończonych ciągów elementów z monoidu A o długości zero lub więcej. 6 / 40

L-systemy Systemy przepisywanie ciągów System przepisywania ciągów to para (A, ), gdzie A jest alfabetem to relacja binarna na A, A A W interesującym nas przypadku identyczność do napis pusty oznaczany jako ɛ. 7 / 40

L-systemy Gwiazdka Kleene a Dla zadanego zbioru A definiujemy ciąg zbiorów A 0 = {ɛ} A 1 = A A n = {αa : α A n 1, a A} Gwiazdka Kleene a Plus Kleene a A = A + = A n n N A n n N\{0} 8 / 40

L-systemy Definicja L-system L-system jest zdefiniowany jako trójka (A, α, P), gdzie A jest alfabetem α A to aksjomat czyli symbol startowy P relacja binarna, tzw. wyprowadzenie, P : A A 9 / 40

L-systemy Zasada działania L-systemy polegają na równoległym wykonaniu reguł zgodnie z poniższymi zasadami: reguły są stosowane iteracyjnie; w każdej iteracji są zastosowane wszystkie możliwe reguły; stałe to symbole z alfabetu, które nie pojawiają się po lewej stronie żadnej reguły. 10 / 40

L-systemy Własności Systemy D0L L-system nazywany jest bezkontekstowym gdy każda reguła produkcji stosuje się tylko do pojedynczego symbolu. Jeśli reguła produkcji zależy nie tylko od pojedynczego symbolu, ale także od symboli sąsiednich, to taki L-system nazywany jest kontekstowym. Systemy stochastyczne Jeśli dla danego symbolu reguły produkcji są przypisane z pewnym prawdopodobieństwem, to taki L-system nazywa się stochastycznym. 11 / 40

Oryginalny przykład Lindenmayera Oryginalnie Lindenmayer wykorzystał L-system do opisu wzrostu alg. Proces ten modelował za pomocą następującego systemu: zmienne: a, b aksjomat: a reguły (produkcje): (a ab), (b a) 12 / 40

Oryginalny przykład Lindenmayera Aksjomat a a Produkcje a ab b a a a b b a a b a a b a b a a b a b a 13 / 40

Oryginalny przykład Lindenmayera n = 0 : a n = 1 : ab n = 2 : aba n = 3 : abaab n = 4 : abaababa n = 5 : abaababaabaab n = 6 : abaababaabaababaababa n = 7 : abaababaabaababaababaabaababaabaab 14 / 40

Oryginalny przykład Lindenmayera Otrzymujemy w ten sposób słowa Fibonacciego z pominięciem pierwszego elementu. b dla n = 1; F n := a dla n = 2; F n 1 F n 2 dla n > 2. Gdzie oznacza konkatenację czyli łączenie ze sobą wyrażeń (operator <> w Mathematica, + w Java/C++/Python,. w Perl/PHP) 15 / 40

Ciąg (napis) wygenerowany przez L-system może być łatwo zinterpretowany jako ciąg komend. F rysuj do przodu (o zadaną długość) f przesuń się do przodu (o zadaną długość) +/- wykonaj obrót w prawo/lewo o zadany kąt. W ten sposób ciąg wygenerowany przez L-system jest interpretowany jako program do rysowania. Naśladuje to metodę programowania znaną z języka Logo. 16 / 40

L-systemów Generowanie roślin Program Inkscape udostępnia prosty interfejs do generowania grafiki wektorowej za pomocą L-systemów (Extensions Render L-System). 17 / 40

L-systemów Smok Heighwaya Smok Heighwaya (ang. dragon curve) jest określona poprzez następujący L-system: zmienne: X, Y stałe: F, +, - start: FX reguły: X X+YF+, Y -FX-Y kąt: 90 Tutaj, F oznacza rysuj odcinek, - oznacza obrót w lewo, a + oznacza obrót w prawo. W tym wypadku symbole X i Y są wykorzystywane do kontrolowania ewolucji systemu i nie są interpretowane jako polecenia rysowania. 18 / 40

L-systemów Smok Heighwaya Dwunasta iteracja Smok Heighwaya w programie Inkscape 19 / 40

L-systemów Generowanie roślin zmienne: X, F stałe: +, -, [, ] aksjomat: X reguły: X F-[[X]+X]+F[+FX]-X, F FF Tutaj F oznacza rysuj do przodu, a X nie ma interpretacji graficznej. Symbole - obrót w lewo i + obrót w prawo o kąt 25. Symbole [ oznacza wrzuć na stos, a ] pozycję i kąt. 20 / 40

L-systemów Generowanie roślin 21 / 40

L-systemów Generowanie roślin może dopuszczać elementy losowe. W najprostszym przypadku możemy uwzględnić: losowość kąta losowość długości przesunięcia Ograniczeniem są tu tylko możliwości języka w którym interpretujemy L-system. 22 / 40

L-systemów Generowanie roślin Dodanie losowości do kątów i długości kroku powoduje powstanie bardziej naturalnych roślin. 23 / 40

L-systemów Generowanie roślin Dodanie losowości do kątów i długości kroku powoduje powstanie bardziej naturalnych roślin. Nie jest to L-system probailistyczny losowość występuje tylko w interpretacji graficznej. 24 / 40

L-systemy Klasyfikacja L-systemów D0L-system deterministyczny, bezkontekstowy (0 oznacza długość kontekstu); D1L-system deterministyczny, kontekstowy; 0L-system stochastyczny, bezkontekstowy; 1L-system stochastyczny, kontekstowy, (1,1)L-system (albo 2L) stochastyczne, wrażliwy na kontekst lewo- i prawostronny; 25 / 40

Reguły probabilistyczne W L-systemach deterministycznych każdemu symbolowi odpowiadała dokładnie jedna reguła (produkcja). W systemie probabilistycznym: regułom przypisane są prawdopodobieństwa wykorzystanie ich w trakcie wykonania; przykładowo reguła deterministyczna: 0 1[0]0 reguła probabilistyczna: ((0.5, 0 1[0]0), (0.5, 0 0)) dwie reguły, każda ma przypisane prawdopodobieństwo zastosowania 26 / 40

Reguły kontekstowe W systemach D0L reguły są jednoznaczne określone dla symbolu. Systemy D1L W systemach D1L reguły są zależne od symboli z którymi sąsiaduje przekształcany symbol b a c aa zamień a na aa tylko jeżeli jest w otoczeniu b i c jeden symbol może mieć przypisanych wiele reguł zależnych od jego sąsiedztwa. 27 / 40

Reguły parametryczne Systemy parametryczne pozwalają na przekazywanie informacji wykorzystywanej do interpretacji graficznej lub w regułach. załóżmy, że symbol ma dwa parametry, a(x,y) jest ona wówczas nazywana modułem; reguła może wykorzystywać informacje o parametrach, np. a(x,y) : x == 0 a(1, y+1)b(2,3) zostanie wykonana tylko jeżeli pierwszy parametr jest równy zero. 28 / 40

Reguły parametryczne Systemy parametryczne pozwalają na określenie długości segmentu i kąta za pomocą gramatyki, a nie interpretacji graficznej. Jeżeli moduł przechowuje informacje o wieku, gramatyk może uwzględniać starzenie się segmentów. 29 / 40

Systemy półthueowskie Systemy półthueowskie Hierarchia Chomskiego Postać Backusa-Naura Wyrażenia regularne 1914, Axel Thue systematyczny opis systemu przepisywania ciągów. L-systemy są przykładem ogólnego systemu przepisywania. są określane jako systemy półthueowskie (ang. semi-thue grammar). Jako formalizm, systemu przepisywania ciągów są zupełne w sensie Turinga mogą symulować uniwersalną maszynę Turinga. 30 / 40

Zupełność w sensie Turinga Systemy półthueowskie Hierarchia Chomskiego Postać Backusa-Naura Wyrażenia regularne System zupełny w sensie Turinga (ang. Turing-complete) może wykonać dowolny algorytm. Symulacja nie musi być wydajna. Zupełność jest jedynie stwierdzeniem równoważności, nie daje natomiast opisu symulacji. Większość języków programowania jest zupełna w sensie Turinga. Języki które nie są zupełnie to: SQL, HTML i wyrażenia regularne. 31 / 40

Hierarchia Chomskiego Systemy półthueowskie Hierarchia Chomskiego Postać Backusa-Naura Wyrażenia regularne 1956, Noam Chomsky hierarchia języków i gramatyk formalnych. Typ 0 rekurencyjnie przeliczalny Typ 1 kontekstowe Typ 2 bezkontekstowe Typ 3 regularne N. Chomsky, Three models for the description of language, IRE Trans. Inf. Theory, 2 (3), pp. 113-124 (1956). 32 / 40

Hierarchia Chomskiego Systemy półthueowskie Hierarchia Chomskiego Postać Backusa-Naura Wyrażenia regularne regularne reguły powstają przez doklejanie kolejnych symboli; bezkontekstowe reguły nie zależą od otoczenia symbolu; kontekstowe reguły zależą od otoczenia symbolu; rekurencyjnie przeliczalny brak ograniczeń na zbiór reguł. 33 / 40

formalna Systemy półthueowskie Hierarchia Chomskiego Postać Backusa-Naura Wyrażenia regularne Gramatyka formalna metoda opisu języka formalnego rozumianego jako podzbiór zbioru wszystkich słów skończonej długości nad danym alfabetem. Symbol nieterminalny symbol który jest definiowany przez reguły gramatyki. Symbol terminalny symbole które nie mogą być zmieniona za pomocą reguł gramatyki. Jeden język może być generowany przez wiele gramatyk. 34 / 40

Postać Backusa-Naura Systemy półthueowskie Hierarchia Chomskiego Postać Backusa-Naura Wyrażenia regularne 1963, Peter Naur, raport języka ALGOL 60. BNF (ang. Backus Normal Form lub ang. Backus-Naur Form) to sposób zapisu reguł wyprowadzenia w gramatykach bezkontekstowych. Jest to metajęzyk język opisu języków programowania. 35 / 40

Postać Backusa-Naura Systemy półthueowskie Hierarchia Chomskiego Postać Backusa-Naura Wyrażenia regularne Postać Backusa-Naura jest wykorzystywana do opisu języków bezkontekstowych wszystkie reguły (produkcje) są postaci: A α Kilka przykładów: Liczby całkowite: <integer>::= <digit> <integer><digit> Składnia funkcji w języku Python: <funcdef>::== def NAME <parameters> : <suite> Symbole które nigdy nie pojawiają się po lewej stronie (np. NAME) to symbole terminalne. Są to symbole stałe dla gramatyki w językach kontekstowych mogą pojawić się po lewej stronie. 36 / 40

kontekstowe Systemy półthueowskie Hierarchia Chomskiego Postać Backusa-Naura Wyrażenia regularne Gramatyka to czwórka (X, T, P, s) gdzie X to symbole nieterminalne, T to wyróżnione symbole terminalne, P to zbiór reguł (produkcji), s to symbol początkowy. W przypadku gramatyk kontekstowych reguły są postaci αaβ αγβ gdzie α, γ, β 37 / 40

Wyrażenia regularne Systemy półthueowskie Hierarchia Chomskiego Postać Backusa-Naura Wyrażenia regularne 1950s, Stephen Kleene formalny opis języków regularnych. Wyrażenia regularne są wbudowane w większość języków programowania. Są szczególnie przydatne do analizy/formatowania/edycji plików tekstowych. Są wykorzystywane do analizy leksykalnej w parserach języków programowania. 38 / 40

Wyrażenia regularne Systemy półthueowskie Hierarchia Chomskiego Postać Backusa-Naura Wyrażenia regularne Składnia wyrażeń regularnych: za wyjątkiem znaków specjalnych, każdy znak oznacza sam siebie; alternatywa: ; grupowanie: (, ); wyrażenie e występuje 0 lub 1 raz: e?; 0 lub więcej wystąpień e: e (gwiazdka Kleene); 0 lub więcej wystąpień e: e+ (plus Kleene); 39 / 40

Wyrażenia regularne Systemy półthueowskie Hierarchia Chomskiego Postać Backusa-Naura Wyrażenia regularne wyrażeń regularnych Co najmniej jedno a lub b: (a b)+ Liczby rzeczywiste: [+-]?[0-9]+(.[0-9]+)?. 40 / 40