miercuri, 15 aprilie 2020

LFA - Seminar - Saptamana a 9-a - Automate

Buna ziua si bun venit la seminarul de teoria automatelor

Azi, ca antrenament, incepem sa lucram exercitii despre automate,
vom reveni la capitolul de constructie a compilatorului in saptamana a XII-a.
Ca pregatire teoretica minimala pentru aceasta serie, musai cititi:
Din capitolul de curs despre automate, pg 50-52-54 (ebook pg 52-56).

Deschideti manualele la pagina 69 [pg 71 ebook].

Sa vedem cam cu ce exercitii isi antreneaza autorul cartii studentii lui,
fireste voi incepe cu cele mai simple.

Paragraf 2.9 Ex1:

Sase reprezinte tabelar automatele.... dar nu am mai facut asta pina acum !

Indicatie: Uitati-va la exercitiul nr 2: Acolo aveti un ex de automat reprezentat tabelar.

Ideea e simpla:


____|__________|__
      |                |
      |                |
      |                |

Pe coloana din stanga sunt starile: la noi p si q.

____|__________|__
      |                |
p    |                |
q    |                |

Pe linia de sus sunt simbolurile alfabetului: la noi sunt a si b.

____|__a _b_ __|__
      |                |
p    |                |
q    |                |

In tabel sunt plasate starile in care ajung, atucni cand am o anume stare a automatului, din stanga, si un anumit simbol la intrare, de sus:

____|__a _b_ __| F_
      |                |
p    |  q    p      |  0
q    |  p     p     |  1


Ne uitam pe diagrama: starea p si litera a ma duc in q !
Ne uitam pe diagrama: starea p si litera b ma duc in p !
Ne uitam pe diagrama: starea q si litera a ma duc in p !
Ne uitam pe diagrama: starea q si litera b ma duc in p !

Ultima coloana este coloana starilor finale, si exprima valoarea de adevar
a propozitiei: Aceasta stare este finala.

Starile finale erau acelea la care cercul e dublu, se vad imediat pe graf.

Deci in coloana finala puneti un 1 in dreptul luiu q si un zero in dreptul lui p.

Si asa arata automatul nostru reprezentat ca un tabel.

____|__a _b_ __| F_
      |                |
p    |  q    p      |  0
q    |  p     p     |  1


Exercitiul numarul 1.b: Automatul este cel din poza 1 b).


Transcrieti-l sub forma de tabel:

____|__________|__
      |                |
      |                |
      |                |

Acesta e tabelul gol, nu uitati, in stanga starile, sus literele alfabetului, in mijloc starile noi si in coloana dreapta starile finale.

____|__a___b___|__
      |                |
p    |    q    b    |
q    |                |
r    |                |


Din p cu a ajung in q !
Din p cu b ajung tot in p !

Urmeaza :

Din q cu a ajung in p !
Din q cu b ajung in starea r !

Din r cu a ajung in p !
Din r cu b la intrare ajung in q !

____|__a___b___|_F_
      |                |
p    |    q    b    |  0
q    |    p    r     |  0
r    |     p    q    |  1

Randul vostru: treaba este simpla deocamdata, desenati tabelele pentru automatele de la punctele c si d din imagine.
Completati-le si trimiteti pozele pe e-mail:


Va las timp sa desenati tabelele si sa le completati, cam atat cat imi ia si mie sa le completez.

c) Transcrieti-l sub forma de tabel:

____|__________|__
      |                |
      |                |
      |                |

Intrebari de control:

Ce ati scris pe coloana stanga ?
i) p q r s
ii) p q r t

Ce ati scris pe randul lui q (al transzitiilor ce pleaca din starea q) ,
in pozitia a II-a, cand la intrare este litera b ?
i)  strea p
ii) starea q
iii) nici o stare
iv) multimea vida !

Acum va las timp sa va ocupati de punctul d).


d) Transcrieti-l sub forma de tabel:

Cum se numesc starile, cititi in cele patru cercuri ale lor :
..... si scrieti pe coloana din stanga:
.....

Care este alfabetul de intrare (sigma) ? Uitati-va la etichetele de pe sageti !
Se scriu pe marginea de sus !

____|__________|__
      |                |
      |                |
      |                |
      |                |

Elemente de control:
i) Aveti in tabel o linie cu doua multimi vide ? E clar de ce este acolo ?
ii) Aveti in tabel doi de r r , unul sub altul in coloana a II- ? Ce inseamna asta vi-s a vis de arcele etichetate cu b ?
ii) Aveti in tabel doi de p unul sub altul ?

Daca ati raspuns negativ refaceti, va rog, exercitiul.

                                  In imagine: B,C,D, de la B.D. Te rog pune semnul multimii vide in locurile goale din tabel !

Iar daca adaugam si multimile vide in tabele, arata asa, (multumesc D. pt img.)
                                   In imagine: Automatele reprezentate tabelar.


                                         In img: Sol de la Alex.F.
Gasiti totul pe blog.
video4linux.blogspot.com.

Incepem in doua minute seria a a II-a de exercitii:

Sa luam exercitiul 2 pg 71:

Reprezentati sub forma de graf:


a) Desenul se face imediat....
din coloana stanga luam starile si desenam celetrei cerculete, primul este starea initiala.

---> (p)                           (q)                          (r)


Desenati si voi si trimiteti poza.

Serios, daca nu va faceti aceste mici exercitii si nu trimiteti imagini, nu veti avea din ce obtine o nota la partea practica, mai ales ca unii nu ati lucrat nici la compilator prea mult. Sunteti avertizati !

Acum sa desenam impreuna:

p cu a ma duce in starea q, deci sageata de  la p la q etichetata cu a:

                     a
---> (p) ------------------>  (q)                          (r)


Mai departe: p cu b ma duce in p ( a doua pe rand 1, tabela a)):
Deci desenam o bucla de la p la p, o sageata ce pleaca din p si ajunge tot in p.
                    a
---> (p) ------------------>  (q)                          (r)
      /   \
      |__|

Puneti varf la sageata in ce parte doriti. Si eticheta b pe sageata.

                      a
---> (p) ------------------>  (q)                          (r)
      /   \
      |__|
       b

Acum randul 2 din tabel: q cu a la intrare ma duce in r.

                      a                             a
---> (p) ------------------>  (q)  --------------------> (r)
      /   \
      |__|
       b

Iar q cu b la intrare ne duce in starea p deci sageata inversa de la q la p.
                 __________
               /         b      \
            |/_                   \                  a
---> (p) ------------------>  (q)  --------------------> (r)
      /   \            a
      |__|
       b

starea r si cu simbolul a ma duce in starea p, randul 3 din tabel.

                __________
   \          /         b      \
   _\|     |/_                  \                  a
---> (p) ------------------>  (q)  --------------------> (r)
|     /   \            a                                         / 
|     |__|                                                     /
|       b                                                     /
|                                                            /
\____________________________________  /
                            a
Iar r cu b ma duce tot in r deci pun o sageata in bucla pe starea r.


                __________                                        __ 
   \          /         b      \                                     /    \
   _\|     |/_                  \                  a               |     |
---> (p) ------------------>  (q)  --------------------> (r)    | b
|     /   \            a                                         //|\     |
|     |__|                                                     /    \ __/
|       b                                                     /      
|                                                            /
\____________________________________  /
                            a

Desenati fireste tot automatul cu linii continue nu cu sageti intrerupte.

Ne ajuta cineva dintre voi cu o imagine ?

 In imagine, raspuns primit dar atentie, (dubla incercuire la starea p)
 in tabela 2. a) ....
 ... este un 1 pe randul intai care indica faptul ca acea stare este starea finala a automatului. Esti finala, stare "p" ?  Si 1=True raspunde starea "p". Cam acesta e "dialogul" :)

Vlad P. ne trimite doua imagini din caietul lui de LFA (automate):
                                       Img: de adaugat multimile vide aici ...
Iata si automatele de la ex. 2 ab... vedeti vreo greseala, eu nu vad ! Bravo Vlad!

Primesc o intrebare: "Nu prea stim ce avem de facut ?"
Aveti de rezolvat exercitii de la pg 69 (pg fizica, pe ebook e +2=pg71).
Pentru Ex 1, ati citit probabil capitolul de curs despre automate,
la pg 50-52-54 (ebook pg 52-56) aveti felul cum se reprezinta automatele tabelar.
Ati avut de citit acest set de paragrafe , cu ocazia cursului (pg blog anterioara).
Exemplu de rezolvare ati avut la pg 53(pg 55 ebook):


In imagine: Pg 55 -ebook, exemplu de reprezentare de automat in doua feluri.

In acest moment astept desene de automate de la dvs, inclusiv cel de la 2.b:

Suntem si pe Teams, ati intrat ? Intrucat nu a intrat nimeni pe Teams, sau s-a iesit foarte repede, ramanem pe blog. De altfel Teams a dat erori azi.

Sa trecem la alt fel de exercitii:
Stati putin sa aleg alt fel de ex. Iata un ex de construire a unui automat care accepta un limbaj. Va amintiti de acele site-uri care nu primesc o adresa de email daca nu e corecta sau daca nu are in ea ceva, de exemplu @ ?


Ex 4 pg 70 [pg 72 ebook]


Ex 4. ca in carte, marit sa se vada ...

hai sa gandim oleaca la el impreuna...
Cum credeti ca se rezolva .... ?

Cuvintele din acest limbaj, acceptat de automat, par sa aiba trei parti succesive:

L = { w | w = partea_1  0 0 partea_a_2_a }

S-o luam pe bucatele:

Un automat care recunoaste 0 urmat de zero e usor de facut ? Il vedeti in minte ?
Uitati, nu mai pun paranteze la stari, dar C este finala, cerc dublu, A, B sunt cu cercuri simple:
             0              0
--> A  -------> B  ------>   C

E clar ca trebuie un 0 sa "ne sara broasca" in starea B si inca un zero sa ne sara in starea finala C. Ok ?

Dar ce fac cu partea I si a II-a , formate din orice caractere...
Un automat format dintr-o bucla pe starea (finala) si cu orice simbol din alfabet  pe arc (adica pe sageata) ar rezolva pb. Aici A este o stare finala. (Trimiteti desene, ca sa completam blogul, va rog)

-->  A  _
     /    |\
    |       |
    |__ __|
        0,1  
E clar ca oricati de 0 si 1 ar veni , "broasca din poveste" adica automatul "trece de pe piatra A pe piatra A" - trece din starea A in starea A... si tot asa (tot pe loc pe loc pe loc, dar consumand literele de la intrare) ...
.... imaginati-va broasca sarind pe starea A in timp ce in fundal pe un ecran se deruleaza banda cu literele de la intrare pe masura ce se consuma.

Pt acest automat limbajul este {0,1}*  adica orice secventa de 0 si 1.

La final pentru partea a doua ....... ne mai trebuie un automat de acesta.

-->  C  _
     /    |\
    |       |
    |__ __|
        0,1  

Si cand le combinam pe toate obtinem solutia, mai greu de desenat pt mine in ASCII!   Atentie, A, B au cerc simplu, C este stare finala are cerc dublu.

                 0                 0
-->  A  _  --------> B ---------------->  C  _
     /    |\                                      /    |\
    |       |                                    |       |
    |__ __|                                    |__ __|
        0,1                                        0,1  

                
daca pun paranteze si nu cercuri la stari, cum e tipic, ar arata asa:

                 0                 0
--> (A)  _  -------> (B) ------------> (( C)) _
     /    |\                                      /      |\
    |       |                                    |         |
    |__ __|                                    |__ ___|
        0,1                                        0,1

Cum merge acest automat pt a accepta un cuvant care are sigur doi de zero
 De ex 11110111001110111 ?

Pina aici "bate pasul" in A .... (glumeam) dar e ok:
11110111001110111
La primul zerou din cei 2 sare in starea B
11110111001110111
La al doilea trece in starea C.
11110111001110111
Si de acum tot ce ar veni , tot trece din C in C pina la sfarsit, cand
starea C fiind finala si cuvantul terminat, gata, este acceptat cuvantul de automat (, recunoscut ca bun!).

Cine face exercitiul 5 ?

 Atentie , n>=0, poate fi si zero, m>=1, deci am un 1.


                                 1
--> (A)  _  ----------------------------> (( C)) _
     /    |\                                      /      |\
    |       |                                    |         |
    |__ __|                                    |__ ___|
       0                                             1

Intrebare de control: Este bun asa ?
a) da
b) nu
c) va trimit eu un desen...

Cine face exercitiul 6 ?

Timpul a expirat!

Continuati pregatirea pentru examen rezolvand, pe termen lung, problemele de la finalul capitolului despre automate.

Gluma zilei:
Circula o anecdota in care profu' de matematica avand de predat suma unghiurilor in triunghi face 3 triunghiuri pe tabla si intreaba:
- Ce au in comun ?

Si o voce din clasa raspunde: Sunt toate facute cu creta rosie !
 :)) :))) :))) :)

Niciun comentariu:

Trimiteți un comentariu