Matematyczne Podstawy Informatyki

Podobne dokumenty
Matematyczne Podstawy Informatyki

Metody Kompilacji Wykład 1 Wstęp

Matematyczne Podstawy Informatyki

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

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

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

KONSTRUKCJA KOMPILATORÓW

Teoretyczne podstawy informatyki

Wyrażenia regularne.

Matematyczne Podstawy Informatyki

Języki formalne i automaty Ćwiczenia 7

Podstawy Kompilatorów

Paradygmaty i języki programowania. Analiza leksykalna Skaner, RE, DAS, NAS, ε- NAS

Zadanie analizy leksykalnej

Wprowadzenie. Teoria automatów i języków formalnych. Literatura (1)

Program We Kompilator Wy Źródłowy

ZADANIA Z AUTOMATU SKOŃCZONEGO SPRAWOZDANIE NR 4

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}

Plan wykładu. Kompilatory. Literatura. Translatory. Literatura Translatory. Paweł J. Matuszyk

Języki formalne i automaty Ćwiczenia 6

Maszyna Turinga języki

Matematyczne Podstawy Informatyki

L E X. Generator analizatorów leksykalnych

Teoretyczne podstawy informatyki

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

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

Jerzy Nawrocki, Wprowadzenie do informatyki

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Bieżący sylabus w semestrze zimowym roku 2016/17

Hierarchia Chomsky ego Maszyna Turinga

AUTOMATY SKOŃCZONE. Automat skończony przedstawiamy formalnie jako uporządkowaną piątkę:

Język C zajęcia nr 7. Uwagi dotyczące stylu programowania

Wykład z Technologii Informacyjnych. Piotr Mika

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Translacja wprowadzenie

Teoria obliczeń i złożoność obliczeniowa

Języki programowania zasady ich tworzenia

Algorytmy przeszukiwania wzorca

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204

Wyrażenie nawiasowe. Wyrażenie puste jest poprawnym wyrażeniem nawiasowym.

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

10. Translacja sterowana składnią i YACC

1 Podstawy c++ w pigułce.

Matematyczne Podstawy Informatyki

Analiza matematyczna i algebra liniowa Macierze

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Metoda Karnaugh. B A BC A

1. Wprowadzanie danych z klawiatury funkcja scanf

Jaki język zrozumie automat?

Maszyna Turinga (Algorytmy Część III)

Laboratorium z użyciem analizatora leksykalnego FLEX

Wstęp do programowania. Wykład 1

3. Opracować program kodowania/dekodowania pliku tekstowego. Algorytm kodowania:

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym

Macierze. Rozdział Działania na macierzach

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Efektywna analiza składniowa GBK

POLITECHNIKA OPOLSKA

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Laboratorium 10: Maszyna stanów

złożony ze słów zerojedynkowych o długości co najmniej 3, w których druga i trzecia litera od końca sa

POLITECHNIKA OPOLSKA

Analiza leksykalna i generator LEX

System operacyjny Linux

TEORETYCZNE PODSTAWY INFORMATYKI

Matematyczne Podstawy Informatyki

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych

Teoretyczne podstawy informatyki

Algorytmy sztucznej inteligencji

Generator analizatorów leksykalnych - Lex. Bartosz Bogacki.

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Obliczenia inspirowane Naturą

4. Funkcje. Przykłady

Wprowadzenie do analizy leksykalnej. Bartosz Bogacki.

5. Rozwiązywanie układów równań liniowych

Optymalizacja oprogramowania - wprowadzenie

Języki regularne, rozpoznawanie wzorców regularnych, automaty skończone, wyrażenia regularne

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Generatory analizatorów

Haszowanie (adresowanie rozpraszające, mieszające)

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Wstęp do informatyki 2011/2012. Wyrażenia regularne (sed)

Wprowadzenie do analizy składniowej. Bartosz Bogacki.

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Metody kompilacji Wykłady 4-5

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Technologie informacyjne - wykład 12 -

Definicja 2. Twierdzenie 1. Definicja 3

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

Temat: Algorytm kompresji plików metodą Huffmana

1 Automaty niedeterministyczne

n, m : int; S, a, b : double. Gdy wartości sumy składowej nie można obliczyć, to przyjąć Sij = 1.03 Dla obliczenia Sij zdefiniować funkcję.

Turing i jego maszyny

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Podstawy programowania w Pythonie

Aproksymacja funkcji a regresja symboliczna

Automat Moore a. Teoria układów logicznych

Transkrypt:

Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014

Stany równoważne Stany p i q są równoważne, jeżeli dla wszystkich łańcuchów wejściowych w, ˆδ(p, w) jest stanem akceptującym wtedy i tylko wtedy, gdy ˆδ(q, w) jest stanem akceptującym. Stany równoważne można zastąpić pojedynczym stanem zachowującym się jak oba stany p i q. Jeżeli dwa stany nie są równoważne to nazywa się je rozróżnialnymi.

Odnajdywanie stanów równoważnych 1. Podstawa: Jeżeli p jest stanem akceptującym, a q nieakceptującym, to para p,q jest rozróżnialna. 2. Krok indukcyjny: Jeżeli p i q są stanami takimi, że dla pewnego symbolu a uzyskuje się stany r = δ(p, a) i s = δ(q, a) o których już wiadomo, że są rozróżnialne, to stany p i q są również parą stanów rozróżnialnych.

Minimalizacja DAS I Minimalizacja DAS - A = (Q, Σ, δ, q 0, F ) 1. Znaleźć wszystkie grupy równoważnych stanów algorytmem opisanym wcześniej. 2. Podzielić zbiór stanów Q na bloki wzajemnie równoważnych stanów podaną wcześniej metodą. 3. Skonstruować równoważny automat B o minimalnej liczbie stanów, używając jako jego stanów uzyskanych w poprzednim kroku bloków. 3.1 Stanem początkowym B jest blok zawierający stan początkowy A. 3.2 Zbiorem stanów akceptujących B jest zbiór bloków zawierających stany akceptujące A.

Przykład minimalizacji I a b A B F B G C C A C D C G E H F F C G G G E H G C

Przykład minimalizacji II A B C D E F G H A B x C x x D x x x E x x x F x x x x G x x x x x x H x x x x x x

Przykład minimalizacji III a b (A,E) (B,H) (D,F) (B,H) G C C (A,E) C (D,F) C G G G (A,E)

Przekształcenie DAS na wyrażenie regularne I Konstrukcja R k ij : 1. Podstawa indukcji to k = 0. W takie sytuacji możliwe są jedynie: 1.1 Łuk prowadzący ze stanu i do wierzchołka j. 1.2 Ścieżka o długości zero, składająca się z jednego wierzchołka. 2. Jest następnie badany DAS i są wyszukiwane symbole wejściowe przy których istnieje przejście ze stanu Dla i do j (i j): 2.1 Jeżeli nie istnieje takie przejście, to Rij 0 =. 2.2 Jeżeli istnieje dokładnie jeden taki symbol a to Rij 0 = a. 2.3 Jeżeli znaleziono więcej symboli - a 1, a 2,..., a n to Rij 0 = a 1 + a 2 +... + a n. Dla i = j: 2.1 Dopuszczalnymi ścieżkami są ścieżki o długości 0 i wszystkie pętle z i do siebie. 2.2 Ścieżka o długości zero jest reprezentowana przez wyrażenie regularne ɛ, dlatego dodaje się do przypadków opisanych wcześniej ɛ.

Przekształcenie DAS na wyrażenie regularne II 3. Krok indukcyjny - założenie istnieje ścieżka ze stanu i do stanu j, która nie przechodzi przez stan wyższy od k. Należy rozważyć tutaj dwa przypadki: 3.1 Ścieżka nie przechodzi wcale przez stan k, wtedy etykieta tej ścieżki należy do stanu R k 1 ij. 3.2 Ścieżka przechodzi przez stan k co najmniej raz. Wtedy można ją rozbić na kilka części: Ścieżka przechodząca ze stanu i do stanu k (bez wcześniejszego przechodzenia przez k). Ścieżki przechodzące ze stanu k do stanu k (bez wielokrotnego przechodzenia przez k). Ścieżka przechodzą ze stanu k do stanu j (bez dalszego przechodzenia przez k). Zbiór etykiet reprezentuje dla tego rodzaju ścieżki wyrażenie regularne R k 1 ik (R k 1 ) R k 1 kk kj

Przekształcenie DAS na wyrażenie regularne III 3.3 Łącząc oba przypadki uzyskuje się ostatecznie: R k ij = R k 1 ij + R k 1 ik (R k 1 kk ) R k 1 kj ) 3.4 Wyrażenie konstruje się w porządku rosnących indeksów górnych. 3.5 Postępując zgodnie z opisanym schematem uzyskuje się w końcu R n ij

Przykład I

Przykład II R 0 ij R11 0 ɛ + 1 R12 0 0 R21 0 R22 0 ɛ + 0 + 1

Przykład III R 1 ij R11 1 (ɛ + 1) + (ɛ + 1)(ɛ + 1) (ɛ + 1) 1 R12 1 0 + (ɛ + 1)(ɛ + 1) 0 1 0 R21 1 + (ɛ + 1) (ɛ + 1) R22 1 (ɛ + 0 + 1) + (ɛ + 1) 0 ɛ + 0 + 1

Przykład IV Rij 2 R11 2 1 + 1 0(ɛ + 0 + 1) 1 R12 2 1 0 + 1 0(ɛ + 0 + 1) (ɛ + 0 + 1) 1 0(0 + 1) R21 2 + (ɛ + 0 + 1)(ɛ + 0 + 1) R22 2 (ɛ + 0 + 1) + (ɛ + 0 + 1)(ɛ + 0 + 1) (ɛ + 0 + 1) (0 + 1)

Przykład V 1. Biorąc pod uwagę sumę teoriomnogościową wszystkich wyrażeń, w których pierwszy stan jest stanem początkowym, a drugi stanem akceptującym uzyskuje się wyrażenie regularne odpowiadające automatowi. 2. W przykładzie stanem początkowym jest stan 1 a akceptującym stan 2, więc wyrażenie regularne przyjmie dla całego automatu przyjmie postać R 2 12 tj. 1 0(0 + 1).

Zastosowania wyrażeń regularnych 1. Wyszukiwanie wzorców tekstowych 2. Analiza leksykalna

Wyrażenia regularne w systemie UNIX I Symbol. (kropki) oznacza dowolny znak (dopasowanie do dowolnego znaku). Ciąg [a1a2...an] oznacza a1 + a2 +... + an. W nawiasach kwadratowym można też podać zakres znaków w postaci x y oznacza to, że będą wyszukiwane znaki w zakresie od x do y w ciągu kodów ASCII. Np.: [A-Z] - dowolna wielka litera, [a-z] - dowolna mała litera, [0-9] - dowolna cyfra.

Wyrażenia regularne w systemie UNIX II Niektóre narzędzia dodają następujące skróty: \d - cyfra, \D - wszystko co nie jest cyfrą, \w - znak będący częścią słowa (zazwyczaj to samo co [a-z,a-z,0-9]), \W - znak niebędący częścią słowa, \s - biały znak (spacja, tabulacja, znak nowego wiersza itp.) \S - wszystko co nie jest białym znakiem.

Wyrażenia regularne w systemie UNIX III Dla wygody zapisującego wyrażenia regularne wprowadzono także: Operator oznacza to samo co +. Operator? oznacza zero lub więcej wystąpień - R? to samo co ɛ + R. Operator + oznacza jedno lub więcej powtórzeń - R+ to samo co RR Operator {n} oznacza dokładnie n wystąpień - R{3} to to samo co RRR.

Analiza leksykalna Analiza leksykalna (analiza liniowa, skanowanie) - proces, w którym strumień znaków, składający się na program wejściowy jest wczytywany i grupowany w symbole leksykalne (tokeny) - ciągi znaków, które wspólnie mają pewne znaczenie. Wyjściowa sekwencja tokenów jest później podstawą do fazy analizy składniowej. W czasie analizy leksykalnej mogą być usuwane znaki nie mające wpływu na dalsze przetwarzanie kodu programu (np. białe znaki, komentarze). Analizator leksykalny często jest odpowiedzialny za zbieranie informacji do tablicy symboli.

Analiza leksykalna

Token, leksem, symbol leksykalny Token - para składająca się z nazwy tokenu i opcjonalnej wartości tego tokenu. Nazwa tokenu jest symbolem reprezentującym z jaki rodzaj jednostki leksykalnej rozpoznano - słowo kluczowe, sekwencja znaków reprezentująca nazwę. Wzorzec opisuje jaką formę może przyjąć strumień znaków, żeby zostały zidentyfikowane jako token (np. słowa kluczowe są opisywane jako ciąg znaków, bardziej skomplikowane elementy mogą być opisywane przez wyrażenia regularne). Lexem - sekwencja znaków w programie źródłowym, jaką można dopasować do wzorca tokenu, która jest identyfikowana przez analizator leksykalny jako instancja tego tokenu.

Analiza leksykalna int f(int x) {return x;} Token Wzorzec Leksem Wartość KWD INT int int IDENT [ a-za-z][ a-za-z0-9]* f f ( ( ( KWD INT int IDENT [ a-za-z][ a-za-z0-9]* x x ) ) ) { { { KWD RETURN return return IDENT [ a-za-z][ a-za-z0-9]* x x ; ; ; } } }

Literatura Do napisania materiałów wykorzystano: 1. M. Sipser Wprowadzenie do teorii obliczeń, WNT 2009 2. J.E. Hopcroft, R. Motwani, J.D. Ullman Wprowadzenie do teorii, automatów, języków i obliczeń, PWN 2005 3. Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman Compilers: Principles, Techniques & Tools Person Addison Wesley, 2007