Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Documente similare
Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

Limbaje Formale, Automate si Compilatoare

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 3 noiembrie 2014

Limbaje de ordinul I LOGICA DE ORDINUL I Un limbaj L de ordinul I este format din: o mulţime numărabilă V = {v n n N} de variabile; conectorii şi ; pa

Logică și structuri discrete Mulțimi Casandra Holotescu

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Subiectul 1

Analiză de flux de date 29 octombrie 2012

Analiză statică Analiza fluxului de date 23 octombrie 2014

E_d_Informatica_sp_SN_2014_bar_10_LRO

Microsoft Word - Curs_08.doc

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

Microsoft Word - Lab1a.doc

1

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Microsoft Word - Curs1.docx

PowerPoint Presentation

Curs7

LOGICA MATEMATICA SI COMPUTATIONALA Sem. I,

E_d_Informatica_sp_MI_2015_bar_02_LRO

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Probleme proiect TP BITPERM Implementați un algoritm care citește de la intrarea standard două numere naturale și scrie la ieșirea standard da

SECURITATE ȘI CRIPTOGRAFIE

Microsoft Word - CarteC.doc

1. Găsiți k numerele cele mai apropiate într-un şir nesortat Dându-se un şir nesortat și două numere x și k, găsiți k cele mai apropiate valori de x.

Microsoft Word - O problema cu bits.doc

Prelegerea 4 În această prelegere vom învăţa despre: Algebre booleene; Funcţii booleene; Mintermi şi cuburi n - dimensionale. 4.1 Definirea algebrelor

CAPITOLUL I

Şiruri de numere reale Facultatea de Hidrotehnică Universitatea Tehnică Gheorghe Asachi Iaşi, 2015 Analiză Matematică Lucian Maticiuc 1 / 29

Curs8

Microsoft Word - TIC5

Programarea calculatoarelor. Note de curs Marius Minea 1 Introducere în programarea în C 1.1 Funcţii în limbajul C Calcule şi funcţii La origine, rolu

Gheorghe IUREA Adrian ZANOSCHI algebră geometrie clasa a VII-a ediţia a V-a, revizuită mate 2000 standard EDITURA PARALELA 45 Matematică. Clasa a VII-

Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

Nr. 932 din Avizat ISJ Vâlcea, Inspector școlar informatică, Ciochină Luisa EXAMEN DE ATESTARE A COMPETENȚELOR PROFESIONALE A ABSOLVENȚILOR

Microsoft Word - 2 Filtre neliniare.doc

Cursul 12 (plan de curs) Integrale prime 1 Sisteme diferenţiale autonome. Spaţiul fazelor. Fie Ω R n o mulţime deschisă şi f : Ω R n R n o funcţie de

Lecții de pregă,re la informa,că Admitere 2019 Tema: Discutarea problemelor date la ul,mele sesiuni de admitere Bogdan Alexe

Microsoft Word - a5+s1-5.doc

Grafuri - Concepte de baza. Tipuri de grafuri. Modalitati de reprezentare

MergedFile

Microsoft Word - cap1p4.doc

Microsoft Word - Tema 06 - Convertoare analog-numerice.doc

Elemente de aritmetica

Teoria Grafurilor şi Combinatorică recapitulare Principii de numărare Reţineţi că: P (n, r) este numărul de şiruri (sau r-permutări) de forma A 1,...,

Retele Petri si Aplicatii

Fâciu N. Maria-Ema CASA CORPULUI DIDACTIC BRĂILA PROGRAM DE FORMARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: Fâciu N. M

Facultatea de Matematică Anul II Master, Geometrie Algebrică Mulţimi algebrice ireductibile. Dimensiune 1 Mulţimi ireductibile Propoziţia 1.1. Fie X u

COMENTARII FAZA JUDEŢEANĂ, 9 MARTIE 2013 Abstract. Personal comments on some of the problems presented at the District Round of the National Mathemati

MergedFile

Probleme date la examenul de logică matematică şi computaţională. Partea a II-a Claudia MUREŞAN Universitatea din Bucureşti Facultatea de Matematică ş

Microsoft Word - Matematika_kozep_irasbeli_javitasi_0911_roman.doc

Electricitate II

Dorel LUCHIAN Gabriel POPA Adrian ZANOSCHI Gheorghe IUREA algebră geometrie clasa a VIII-a ediţia a V-a, revizuită mate 2000 standard EDITURA PARALELA

Noțiuni de bază ale criptografiei

Microsoft Word - Laborator 6 - Expresii Regulate IV.doc

Slide 1

Microsoft Word - Curs_09.doc

Managementul Resurselor Umane

Slide 1

ASDN

Aggregating Data

Limbaje de Programare Curs 8 – Fisiere

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Concurs online de informatică Categoria PROGRAMARE Secţiunea 5-6 avansaţi PROBLEMA puncte DANS De 1 Iunie - Ziua Copilului se organizează un spe

PROIECT DIDACTIC DATE DE IDENTIFICARE Data: Școala : Școala Gimnazială Grigore Moisil Ploiești Clasa: a VI-a Profesor: Ilie Oana Magdalena Disciplina:

Structuri de date pentru partiţii de mulţimi O partiţie finită a unei mulţimi nevide S este o mulţime finită de submulţimi ale lui S: {S 1, S 2,..., S

SSC-Impartire

Prelegerea 3 În această prelegere vom învăţa despre: Clase speciale de latici: complementate. modulare, metrice, distributive şi 3.1 Semi-distributivi

Cursul 6 Cadru topologic pentru R n În continuarea precedentei părţi, din cursul 5, dedicată, în întregime, unor aspecte de ordin algebric (relative l

Probleme rezolvate informatica: Probleme rezolvate grafuri si a

Grafuri neorinetate Aplicatii 1 Care este numărul maxim de componente conexe pe care le poate avea un graf neorientat cu 20 noduri şi 12 muchii? a. 6

Lab6LCD

Capitole Speciale de Informatică Curs 2: Determinarea vocabularului de termeni şi a listelor de postări 4 octombrie 2018 Reamintim că listele de indec

GHERCĂ MAGDA CASA CORPULUI DIDACTIC BRĂILA PORTOFOLIU EVALUARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A Neamț SERIA 1 GRUPA 1 CURSANT: GHERCĂ G

Paradigme de programare

ExamView Pro - Untitled.tst

Programarea şi utilizarea calculatoarelor

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

Secţiunea 7-8 începători Concurs online de informatică Categoria PROGRAMARE PROBLEMA 1 ID 100 puncte Calculatoarele trebuie să se recunoască în rețeau

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

Microsoft Word - Mihailesc Dan_Test logica (1).doc

SUBPROGRAME

Secţiunea 5-6 avansaţi PROBLEMA 1 Concurs online de informatică Categoria PROGRAMARE 100 puncte NR Un număr natural nenul V care se plictisea singur,

CASA CORPULUI DIDACTIC BRAILA PROGRAM DE FORMARE INFORMATICA SI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: TIMOFTI V. AFRODITA COLEGIUL

PowerPoint-Präsentation

Notiuni de algebra booleana

Laborator 3

Preprocesorul C Funcţii cu numǎr variabil de argumente 6 decembrie 2005 Programarea calculatoarelor 2. Curs 10 Marius Minea

carteInvataturaEd_2.0_lectia5.pdf

Modul Modbus ASCII SISTEME DE COMUNICATIE CURS 5 - Constantinescu Catalin Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj

CL2009R0976RO bi_cp 1..1

Distanţa euclidiană (indusă de norma euclidiană) (în R k ). Introducem în continuare o altă aplicaţie, de această dată pe produsul cartezian R k XR k,

Laborator Implementarea algoritmului DES - Data Encryption Standard. Exemplu DES Algoritmul DES foloseşte numere b

Microsoft Word - _arbori.docx

TEORIA MĂSURII Liviu C. Florescu Universitatea Al.I.Cuza, Facultatea de Matematică, Bd. Carol I, 11, R Iaşi, ROMANIA, e mail:

Performanta in matematica de gimnaziu si liceu-program de pregatire al elevilor olimpici MULTIMI. OPERATII CU MULTIMI Partea I+II Cls. a V-a

Capitole Speciale de Informatică Curs 4: Calculul scorurilor în un sistem complet de extragere a informaţiilor 18 octombrie 2018 Reamintim că în cursu

Capitole Speciale de Informatică Curs 1: Extragerea informaţiilor. Modelul boolean şi modelul boolean extins 27 septembrie 2018 Extragerea informaţiil

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Transcriere:

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius@cs.upt.ro http://www.cs.upt.ro/ marius/curs/lsd/ 24 noiembrie 2014

Un exemplu: automatul de cafea acțiuni (utilizator): introdu fisă, apasă buton răspuns (automat): toarnă cafea După o acțiune se întâmplă ceva? buton nu fisă (aparent) nu fisă buton da fisă a avut un efect intern: automatul a trecut în altă stare (se comportă altfel la acțiunea buton) fisă fisă buton buton dă două cafele? dacă da, câte fise poate ține minte? una sau mai multe, dar practic un număr finit stări finite Testăm cu diverse secvențe de intrări: corespunde specificației? Putem învăța structura automatului (din comportament) Testarea de conformanță și învățarea: importante în practică

Eliminarea comentariilor în C Comentariu C: încadrat între /* și */ sau toată linia după // Sursa nu are voie să se termine înăuntrul unui comentariu Cum recunoaștem un comentariu? Cum decidem dacă să acceptăm o sursă corectă? Trebuie să reținem unde ne aflăm în prelucrare (starea) în afara comentariului înăuntrul comentariului așteptând un posibil început de comentariu (după /) așteptând un posibil sfârșit de comentariu (după *) Acceptăm programul dacă în final, suntem în afara comentariului altfel respingem (nu acceptăm) programul Desigur, sintaxa C are multe alte reguli în afară de comentarii.

Ce e un limbaj (formal) Fie un alfabet Σ: o mulțime de simboluri (ex. caractere) Un cuvânt finit peste alfabetul Σ e un șir de simboluri din Σ a 1 a 2... a n a i Σ Notăm cu Σ mulțimea tuturor cuvintelor finite peste alfabetul Σ Σ = {a 1 a 2... a n a i Σ} steaua Kleene: zero sau mai multe apariții (în expresii regulate, vezi ulterior) Important: Σ are cuvinte de lungime nelimitată, dar nu infinite Un limbaj nu conține șiruri arbitrare, ele sunt construite după anumite reguli. Un limbaj formal L e o submulțime L Σ, definită după anumite reguli: gramatici, automate, expresii regulate, etc.

Automat finit determinist (DFA) Într-un automat trebuie să definim stările, trecerile dintr-o stare în alta (tranzițiile), starea inițială, și unde dorim să ajungem. Automat finit determinist: o mulțime de stări (unele acceptoare), o stare inițială, și tranziții în funcție de simbolurile de intrare. Un automat finit e un tuplu cu 5 elemente (cvintuplu) (Σ, S, s 0, δ, F ) Σ e un alfabet finit nevid de simboluri de intrare S e o mulțime finită nevidă de stări s 0 S e starea inițială δ : S Σ S e funcția de tranziție (pentru fiecare stare și intrare, dă starea următoare) F S e mulțimea stărilor acceptoare (unde dorim să ajungem)

Exemple de automate deterministe automat de paritate: acceptă șiruri de 0 și 1 cu număr par de 1 0 0 1 0 1 s 0 s 1 sau ca tabelă de tranziții s 0 s 0 s 1 s 1 1 s 1 s 0 s 0 e stare inițială și acceptoare în același timp automat care acceptă cuvinte cu oricâți de b (incl. 0) între doi a b b s a 0 s a 1 s a 0 s a 1 s 2 b s 2 ca δ să fie definită peste tot err a, b e necesară încă o stare err uneori în practică se omite a, b

Limbajul acceptat de un automat Notăm Σ cuvântul vid (fără niciun simbol). Definim inductiv o funcție de tranziție δ cu intrări cuvinte pentru orice s S: δ (s, ) = s n = 0 simboluri δ (s, a 1... a n ) = δ (δ(s, a 1 ), a 2... a n ) pentru n > 0 Altfel spus, δ (s 0, a 1... a n ) = δ (s 1, a 2... a n ) cu s 1 = δ(s 0, a 1 ) obținem starea după prima intrare, și aplicăm δ pe șirul rămas Automatul acceptă cuvântul w Σ dacă și numai dacă δ (s 0, w) F (cuvântul duce automatul într-o stare acceptoare)

Cum reprezentăm un automat? Matrice S Σ cu elemente din S (pentru fiecare stare și intrare, starea următoare) reprezintă explicit fiecare combinație 0 1 s 0 s 0 s 1 s 1 s 1 s 0 Sau: un dicționar care dă pentru fiecare stare funcția de tranziție reprezentată tot ca un dicționar (intrare, stare) Dacă într-o stare multe simboluri duc în aceeași stare următoare, asociem fiecărei stări: un dicționar (intrare, stare) o stare următoare implicită (pentru celelalte intrări)

Automate cu ieșiri numite și traductoare (engl. transducer) scopul nu mai e de a accepta, dispare mulțimea F în plus: un alfabet de ieșire Ω și o funcție de ieșire g automate de tip Moore ieșirea e funcție de stare: g : S Ω automate de tip Mealy ieșirea e funcție de stare și intrare g : S Σ Ω folosite pentru a modela circuite secvențiale

Intersecția, reuniunea și complementul limbajelor Un limbaj recunoscut de un automat se numește limbaj regulat vom vedea că se poate exprima prin expresii regulate Automatul pentru intersecția a două limbaje L 1 L 2 (numit uzual automatul produs) tranziționează simultan în ambele automate acceptă dacă ambele acceptă: Automatul pentru reuniunea a două limbaje L 1 L 2 tranziționează simultan în ambele automate (ca mai sus) acceptă dacă cel puțin unul acceptă Automatul pentru complement L acceptă dacă automatul original nu acceptă

Automate finite nedeterministe (NFA) Exemplu: toate șirurile de a, b, c care se termină în abc a, b, c s a 0 s b 1 s c 2 s 3 Din s 0, primind a, automatul poate rămâne în s 0 sau trece în s 1 automatul poate urma una din mai multe căi Un NFA acceptă dacă există o alegere ducând în stare acceptoare Funcția de tranziție e acum δ : S Σ P(S) dă o mulțime de stări în care poate trece automatul Avantaje: uneori se scrie mai ușor (permite să ghicim tranziția bună) când specificăm un sistem, permite o alegere la implementare

Conversie NFA-DFA Fie un NFA M = (Σ, S, s 0, δ, F ). Construim un DFA echivalent. Noua mulțime de stări va fi S = P(S) reținem mulțimea de stări în care s-ar putea afla M în cel mai rău caz, poate fi exponențial în dimensiunea inițială Obținem M = (Σ, S, s 0, δ, F ) cu S = P(S) δ (q, a) = s q δ(s, a) (pentru fiecare stare s q cu q P(S), reunim mulțimile stărilor în care se ajunge pe simbolul a) F = {s S s F } (mulțimea stărilor care au o stare acceptoare din F )

Conversie NFA-DFA (exemplu) a, b, c a b c 0 1 2 3 Când obținem o nouă mulțime adăugăm o linie la tabel. Scriem tabelul de tranziție cu mulțimea stărilor în care se trece pe fiecare simbol a b c {0} {0, 1} {0} {0} {0, 1} {0, 1} {0, 2} {0} {0, 2} {0, 1} {0} {0, 3} {0, 3} {0, 1} {0} {0} Fiecare mulțime obținută devine o stare în DFA-ul rezultat b, c a a c a Stările acceptoare a c 0 01 b 02 03 sunt cele care conțin o stare acceptoare b din automatul inițial. b, c

Putem exprima mai concis definiția unui limbaj? Un limbaj = o mulțime de cuvinte peste un alfabet Adesea suntem interesați în cuvinte cu structură simplă: un întreg: o secvență de cifre, eventual cu semn un real: parte întreagă + parte zecimală (una din ele opțională), exponent opțional un identificator: litere, cifre, _ începând cu literă sau _ fișiere cu numele 01-titlu.mp3, 02-alttitlu.mp3,... Unele limbaje pot fi recunoscute eficient de automate finite dar scrierea automatului ia efort se poate face mai simplu?

Operații pe limbaje Reuniunea, intersecția și complementul limbajelor regulate sunt limbaje regulate Mai putem defini: Concatenarea limbajelor L1 L2 = {w 1 w 2 w 1 L 1, w 2 L 2 } Închiderea Kleene (repetiția) L = {w n N.w = w 1 w 2... w n, w i L} nu repetiția aceluiași șir, ci concatenarea oricăror șiruri luând n = 0, rezultă L pentru orice L reprezintă șirul vid (niciun simbol, lungime 0)

Expresii regulate: definiție formală O expresie regulată descrie un limbaj (regulat). O expresie regulată peste un alfabet Σ e fie: 3 cazuri de bază: a limbajul vid denotă limbajul {} (cu șirul vid) denotă limbajul {a} cu a Σ 3 cazuri recursive: date e 1, e 2 expresii regulate, și următoarele sunt: (e 1 + e 2 ) reuniunea limbajelor în practică, notată adesea e 1 e 2 (alternativă, sau ) (e 1 e 2 ) concatenarea limbajelor e 1 închiderea Kleene a limbajului

Reguli de scriere și exemple Omitem paranteze cănd sunt clare din relațiile de precedență cel mai prioritar:, apoi concatenare și apoi reuniune + punctul pentru concatenare se omite În practică se mai folosesc abrevierile e? pentru e + (e, opțional) e + pentru e \ (e, cel puțin o dată) (0 + 1) mulțimea tuturor șirurilor din 0 sau 1 (0 + 1) 0 ca mai sus, încheiat cu 0 (numere pare în binar) 1(0 + 1) + 0 numere binare, fără zerouri inițiale inutile

Orice expresie regulată e recunoscută de un automat Construim prin inducție structurală Pentru cazurile de bază nu are stare acceptoare a a starea inițială e acceptoare acceptă simbolul a în celelalte trei cazuri, combinăm automatele limbajelor date rezultă un automat finit nedeterminist cu tranziții

Conversia expresie regulată automat Construcția pentru reuniune e 1 s i1 s f 1 e 2 s i2 s f 2 s i2 s f 2 e 1 + e 2 si1 s f 1 Construcția pentru închiderea Kleene e s i s f e s i s f

Conversia expresie regulată automat Construcția pentru concatenare e 1 s i1 s f 1 e 2 s i2 s f 2 e 1 e 2 s i1 s f 1 s i2 s f 2 În general, nu putem contopi s f 1 și s i2 : ajunși în s f 1 nu avem voie să revenim în e 1. Însă construcțiile de până acum asigură: o unică stare inițială, în care nu se revine o unică stare acceptoare, din care nu ies tranziții Atunci putem contopi la concatenare capetele lui e 1 și e 2.

Conversie din expresie regulată în automat Fie expresia (0+10)*(1+). Construim (comasând pașii triviali): 0 0 1 2 3 1 0 4 5 6 1 7 8 9 O tranziție se face spontan, fără a consuma un simbol de intrare ajuns într-o stare s, e ca și ajuns în orice stare s legată de s doar prin -tranziții (închiderea tranzitivă a relației definite de ) Deci, aflat în 0, e ca și cum s-ar afla în 1, 2, 4, 8 sau 9 Aflat în 7, e ca și cum s-ar afla în 1, 2, 4, 8, 9

Conversie din NFA cu tranziții în DFA 0 0 1 2 3 1 0 4 5 6 0 1 012489 1234789 59 1234789 1234789 59 59 1246789 1246789 1234789 59 s0 1 7 8 9 Liniile 1, 2 și 4 au destinații identice stările sunt echivalente. automat cu doar două stări (ignorând starea de eroare ) 0 0 1 s1 1

Conversia din automat în expresie regulată Dacă sunt mai multe noduri acceptoare, adaugăm un nod acceptor unic (cu tranziții spre el) Eliminăm pe rând fiecare nod în afară de cel inițial și acceptor: pentru orice nod intermediar i de eliminat pentru orice pereche (s, d) adaugă la muchia s d limbajul L si L ii L id

Conversie din automat în expresie regulată Șiruri de 0 și 1 care nu au doi 1 consecutivi 0 0 pe 1, trece în stare cu tranziție doar pe 0 0 1 1 Ambele stări sunt acceptoare adăugăm o unică stare acceptoare 0 0 0 10 0 1 1 f Eliminăm 1: 0 10 0 0 1 f Obținem astfel limbajul (0+10)*(1+) 0 f +1

Minimizarea automatelor Două stări s 1 și s 2 pot fi deosebite dacă există un cuvânt w care dintr-una din stări conduce la o stare acceptoare, și din cealaltă, nu δ (s 1, w) F δ (s 2, w) F Două stări care nu pot fi deosebite sunt echivalente pot fi înlocuite cu o singură stare Un DFA e minimal dacă nu există un automat cu mai puține stări care acceptă același limbaj. Diverși algoritmi de minimizare (ex. Hopcroft-Ullman, Moore) inițial, partiție cu 2 blocuri: F, S \ F (stări acceptoare sau nu) (o împărțire în potențiale clase de echivalență) desparte un bloc din partiție dacă pe un simbol, stările nu trec toate în același bloc din partiție (pot fi deosebite)

Conversie NFA-DFA și minimizare (exemplu) Cuvinte din a, b cu subșir aba: ghicim când începe subșirul dorit a, b a, b a b 0 01 0 a b a 01 01 02 0 1 2 3 02 013 0 013 013 023 023 013 03 03 013 03 Stările care conțin 3 (stare acceptoare) sunt acceptoare. Aici, ele trec tot timpul în stări acceptoare, deci sunt echivalente (caz simplu), și le putem comasa într-o singură stare (numită 3). b a a, b a b a 0 01 02 3 b

Recapitulare Un automat determinist definește un limbaj acceptat. Un astfel de limbaj se numește limbaj regulat. El poate fi exprimat și printr-o expresie regulată. Intersecția, reuniunea, și complementarea limbajelor regulate produc limbaje regulate (deci pot fi recunoscute de automate finite) Automatele finite nedeterministe se pot transforma în deterministe (deci recunosc tot limbaje regulate) dar numărul de stări poate crește exponențial Automatele finite pot fi minimizate, comasând stările echivalente. Automatele deterministe și nedeterministe și expresiile regulate au aceeași putere expresivă (descriu limbaje regulate).