Sunteți pe pagina 1din 10

Curs 1

In programare, un tip de date e o multime de valori, impreuna cu niste operatii definite pe


astfel de valori.
Lambda-calcul = cel mai simplu limbaj de programare
Daca A si B sunt multimi finite exista |B||A| functii de la A la B ; unde |A| = cardinalul lui A.
Fie f : A B
Daca S A, mutlimea elementelor f(x) cu x S se numeste imaginea lui S prin f, notate f(S).
Daca T B, multimea elementelor x cu f(x) T se numeste preimaginea lui T prin f, notate
f-1(T).
Fie functiile f :A B si g :BC. Compunearea lor este functia g f : AC , (g f) (x) = g(f(x)).
Compunearea a doua functii e asociativa.
Compunearea a doua functii nu e neaparat comutativa.

Curs 2
O notiune e recursive daca e folosita in propria sa definitie.
In ML putem avea definitii globale ( ex : let notiune=expresie) sau definitii locale, folosite
doar intr-o expresie(ex : let notiune = expresie1 in expresie2).
Fractali = figure geometrice in care o parte a figurii e similara intregului.

Curs 3
O lista e o secventa finita, ordonata, de valori de acelasi tip.
-

Ordinea elementelor conteaza


Sunt finite dar pot avea lungime oricat de mare
Elementele listei sunt de acelasi tip
Accesul la elementele listei e secvential

Listele pot fi definite recursive : o lista este o lista vida, sau un element urmat de o lista.
Un tip de date abstract e un tip de date definit prin operatiile care se pot efectua asupra lui (
si constrangerile intre acestea), fara a expune modul in care acestea sunt implementate.
TDA izoleaza definite/interfata de implementare.

List.iter f [e1; e2; ... en] apeleaza f e1; f e2; ... f en


List.iter : (a -> unit) -> a list -> unit
List.map [e1; e2; ... en] e lista [f e1; f e2; ... f en]
List.map : (a -> b) -> a list -> b list
List.fold_left f a [e1; e2; ... en]
= f (... f (f a e1) e2 ...) en
List.fold_left calculeaza succesiv:
a1 = f a e1, a2 = f a1 e2, ..., an = f an1 en (rezultatul)
List.fold_left : (a -> b -> a) -> a -> b list -> a
List.fold_left are nevoie de 3 parametri :
1. O functie f cu 2 parametri
P1: rezultatul calculat pana acum
P2: elementul curent din lista
2. Valoare initiala
3. Lista de prelucrat
fold right f [a1; a2;...; an] b
= f a1 (f a2 (... (f an b) ...))
fold_right calculeaza, de la dreapta la stanga
rezultatul b0 = f a1 b1 b1 = f a2 b2 ... bn1 = f an b
List.fold_right : (a -> b -> b) -> a list -> b -> b
List.filter f [a1; a2; ...; an] :
lista elementelor ak pentru care f ak e adevarat
List.filter : (a -> bool) -> a list -> a list

Curs 4
Multimea e un concept matematica fundamental. Am putea spune ca o multime e o colectie de
obiecte numite elementele multimii.
- Elementele unei multimi nu sunt ordonate
- Un element nu apare de mai multe ori ( Dar exista notiunea de multiset : fiecare element e
caracterizat prin numarul de aparitii ).
Putem defini o multime prin enumrarea elementelor sau printr-o prorietate caracteristica.
A este o submultime a lui B : AB daca fiecare element a lui A e si un element al lui B.
A e o submultime proprie a lui B : A B daca A B si exista cel putin un element x din B care
nu este in A.

Daca A B si B A atunci A=B.


Reuniunea a doua multimi : AB={x| x A sau x B }
Intersectia a doua multimi : AB={x| x A si x B }
Diferenta a doua multimi : A\B = {x| x A si x B }
Complementul unei multimi ( in raport cu universal U ) : AC = {x U | x A} = U\A
Operatiile unei algebra Boolene satisfac legile : comutativitate, asociativitate,
distributivitate, identitate, complement.
Alte proprietati :
Idempotenta : A A = A, A A = A.
Absorbtie : A ( A B)= A, A (A B)=A
Dublu complement : (AC)C=A
Complementele elementelor identitate : C=U, UC=
Limita universala : A U = U, A =
Legile lui de Morgan : (A B ) C = AC BC , (A B ) C = AC BC
O partite a unei multimi A e colectie de multimi P1,P2, astfel incat :
- Multimile P1,P2, sunt nevide si mutual disjuncte, adica PiPj = pentru orice i j.
- A e reuniunea tuturor multimilor Pi.
Daca A e o mutime finite si P1,,Pn o partitie a ei, atunci |A|=|P1|++|Pn|
Legea reuniunii : |A B | = |A| + |B| - |AB|
Legea diferentei : |A\B| = |A| - |AB|
|A B C | = |A| + |B| + |C| -|AB| - |AC|-|BC|+|A B C |
Un n-tuplu e un sir de n elemente (x1,x2,xn) nu neaparat distincte, iar ordinea
elementelor conteaza.
Produsul cartezian a n mult,imi e mult,imea n tuplelor.
Multimea submultimilor ( power set) a unei multimi S, notata P(S) ( uneori 2S) :
P(S)={X|X S+. ( ex : pt S = *a,b,c+ avem P(S) = *,*a+,*b+,{c},{a,b},{a,c},{b,c},{a,b,c}}
Daca S e finita si |S| = n atunci |P(S)|=2n.
O multime e numarabila daca are cardinalul egal cu cardinalul unei submultimi a numerelor
naturale. Formal:O multime S e numarabila daca exista o functie injectiva f : S N .

Curs 5
O relatie intre elementele aceleasi multimi defineste un graf.
O relatie binara R intre doua multimi A si B e o submultime a produsului cartezian A B :
RAB.
O relatie R AB poate fi vazuta ca o functie f : A P(B) de la A la multimea partilor lui B.

O exceptie este o eroare care intrerupe calculul; daca nu e tratata, se incheie executia
programului.
Sintaxa in ML : try expresie
with tipar
Proprietati ale relatiilor:
-reflexiva daca pentru orice x X avem (x,x) R
-ireflexiva daca pentru orice x X avem (x,x) R
-simetrica daca pentru orice x,y X, daca (x,y) R atunci si (y,x) R
-antisimetrica daca pentru orice x,y X, daca (x,y) R si (y,x) R, atunci x=y
-tranzitiva, daca pentru orice x,y,z X, daca (x,y) R si (y,z) R, atunci (x,z) R
O relatie e de echivalenta daca e reflexive, simetrica si tranzitiva(ex : relatia de egalitate).
O relatie de echivalenta pe X defineste o partitie a lui X in clase de echivalenta.
O relatie e o ordine partial ( non-stricta ) , daca e reflexive, antisimetrica si tranzitiva(ex :
relatia <=)
O relatie e o ordine stricta daca e ireflexiva si tranzitiva.
O lattice e o multime partial ordonata, in care orice doua elemente au un minorant si un
majorant.(ex : multimea divizorilor unui numar )
x X e punct fix pentru functia f : X X daca f(x)=x.
O lattice L e completa daca orice multime S L are un cel mai mic majorant si un cel mai
mare minorant.
Teorema ( Knaster-Tarski):Fie f o functie monotona pe o lattice complete. Atunci multimea
punctelor fixe a lui f e tot o lattice completa.
Corolar : O functie monotona pe o lattice complete are un cel mai mic punct fix si un cel mai
mare punct fix.
Inversa unei relatii R A B e relatia R-1BA, cu (y,x) R-1 daca si numai daca (x,y) R.
Compunerea a doua relatii R1 AB si R2 B C :
R2R1 = {(x,z)|exista y B | (x,y) R1 si (y,z)R2}
O relatie e de echivalenta daca si numai daca R = R-1.
Daca R e tranzitiva , R R = R.
Inchiderea tranzitiva a unei relatii R X X e relatia tranzitiva minimala R+ astfel ca
R R+.
Putem calcula R+ ca fiind

= R R2

Curs 6
O propozitie(logica) e o afirmatie care e fie adevarata, fie falsa, dar nu ambele simultan.
Formulele logicii propozitionale :
-orice propozitie atomica este o formula
- daca a este o formula, atunci si not a este o formula

- daca a si b sunt formule atunci ab este o formula.


Sinataxa = o multime de reguli care defineste un limbaj.
Semantica = defineste intelesul unei constructii (limbaj)
O interpretare a unei formule = o evaluare pentru propozitiile ei. O interpretare satisfice o
formula daca o evalueaza la T.
O formula poate fi :
- Tautologie (valida) : adevarata in toate interpretarile
- Realizabila : adevarata in cel putin o interpretare
- Contradictie : falsa in orice interpretare
- Contigenta : adevarata in unele interpretari, falsa in altele ( nici tautologie, nici
contradictie)
Daca o formula are n propozitii avem 2n interpretari.
Doua formule sunt echivalente daca au acelasi table de adevar.
Proprietatiile conectorilor logici :comutativitate, asociativitate,
distributivitate,identitate,complement.
Consistenta : Daca H e o multime de formule si este o formula astfel ca H, atunci H
.(Orice teorema in logica propozitionala este o tautologie).
Completitudine : Daca H e o multime de formule si este o formula astfel ca H , atunci
H .(Orice tautologie este o teorema).
Forma normala conjunctiva = conjuctie de disjunctii.

Curs 7
Reguli de simplificare a unei formule si stabilirea realizabilitatii unei formule:
1.Daca un literal e 1 , pot fi sterse clauzele in care apare
2.Daca un literal e 0 , el poate fi sters in clauzele in care apare.
3.Daca nu se mai pot face reduceri alegem o variabila si incercam un valoare 1 sau 0.
4.Daca nici un caz un are solutie, formula nu e realizabila.

Curs 8
Silogisme = reguli de inferenta compuse din 3 parti :
1.premisa majora ; ex : Toti oamenii sunt muritori
2.premisa minora ; ex : Toti grecii sunt oameni
3.concluzia ; ex : Toti grecii sunt muritori
Fiecare e propozitie categorica, despre doua categorii A si B.

4 tipuri de propozitii categorice :


1.afirmativ universal
2.negativ universal
3.afirmativ particular
4.negativ particular
Un predicat = o afirmatie relative la una sau mai multe variabile, care, dand valori
variabilelor , poate lua valoarea adevarat sau fals.
Cuantificatorul universal e distributiv fata de conjunctie.
Cuantificatorul existential e distributive fata de disjunctie.
O tautologie e o formula adevarata in orice interpretare.
Nu putem substitui variabile legate!
Calculul predicatelor de ordinal I este consistent si complet ( la fel ca si logica
propozitionala) : H daca si numai daca H .
Transformarea in forma clauzala :
1.Eliminam toti conectorii inafara de ,,not
2.Translatam negatiile inauntru pana la predicate
3.Redenumim variabilele cuantificate cu nume unice in formula
4.Eliminarea cuantificatorilor existentiali(skolemizare)
Pentru y in interiorul lui x1xn introducem o functie Skolem y=g(x1,,xn) (valoare lui y
depinde de x1,,xn).
Pentru y in exterior, se allege o noua constanta Skolem
5.Se aduce la forma normala prenex : cuantificatorii in fata
6.Se elimina prefixul cu cuantificatorii universali
7.Se converteste la forma normala conjunctiva
8.Se elimina si se scriu disjunctii ca si clause separate
Fiind dat un literal l si doua clause C1,C2 cu l C1, not l C2, rezolventul lui C1 si C2 in
raport cu literalul l e clauza rez(C1,C2)=(C1\{l})(C2\{l}).
Exemplu : rezp({p,q,r},{not p,s})={q,r,s}
Propozitie : C1,C2 rez l (C1,C2).
Corolar : daca C1C2 e realizabila, atunci rez l (C1,C2) e realizabila.

Curs 9
O substitutie e o functie care asociaza unor variabile niste termeni.
Substitutia a pe termenul T se noteaza usual postfix : Ta

Doi termini t1 si t2 se pot unifica daca exista o substitutie care ii face egali : t1=t2. O
astfel de substituie se numeste unificator.
Clauzele Horn : clauze cu cel mult un literal pozitiv.
Regulile lui Hoare : Atribuire, Secventiere, Decizie, Ciclu cu test.

Curs 10
Se da un alphabet : o multime de simboluri ( ex. Caractere)
Un cuvant finit peste alfabetul e un sir a1a2an de simboluri ai
Multimea tuturor cuvintelor finite peste alfabetul e notata * ;
*={a1a2an|ai }.
steaua Kleene : zero sau mai multe aparitii.
* are cuvinte de lungime nelimitata dar nu infinite
Un limbaj formal e o submultime definite dupa anumite reguli : gramatici, automate,
expresii regulate etc.
Automat finit determinist(DFA) : o multime de stari (unele acceptoare), o stare initiala, si
tranzitii in functie de simbolurile de intrare.
Formal, un automat e un tuplu cu 5 elemente (cvintuplu) (,S,s0,,F):
- e un alphabet finit nevid de simboluri de intrare
-S e o multime finita nevida de stari
-s0 S e starea initiala
-:S S e functia de tranzitie ( pentru fiecare stare si intrare , da starea urmatoare)
-F S e multimea starilor acceptoare

Automate finite nedeterministe(NFA):

Un DFA e minimal daca nu exista un automat cu mai putine stari care accepta acelasi limbaj.

Un automat determinist defineste un limbaj acceptat. Un astfel de limbaj se numeste limbaj


regulat.
Automatele finite nedeterministe se pot transforma in deterministe dar numarul de stari
poate creste exponential
Automatele finite pot fi minimizate, comasand starile echivalente.

Curs 11
Concatenarea limbajelor : L1L2 ={w1w2| w1 L1, w2 L2}
Inchiderea Kleene(repetitia): L*={w| n N, w=w1w2wn, wi L}
nu repetitia aceluiasi sir, ci concatenarea oricaror siruri.
Daca e1 si e2 sunt expresii regulate atunci si urmatoarele sunt :
(e1+e2)
reuniunea limbajelor
(e1e2)
concatenarea limbajelor
(e1)*
inchiderea Kleene a limbajului
Cel mai prioritar este * apoi concatenare si apoi reuniune +; punctual pentru concatenare se
omite.
(0+1)*
(0+1)*0
1(0+1)*+0

multimea tuturor sirurilor din 0 sau 1


multimea tuturor sirurilor din 0 sau 1 incheiat cu 0
numere binare, fara zerouri initiale

Conversie automat expresie regulata


Daca sunt mai multe noduri acceptoare, se adauga un unic nod acceptor( cu tranzitii spre
el)
Se elimina pe rand fiecare nod (in afara de cel initial si cel acceptor).
Pentru orice pereche (s,d) cu nod intermediar I se adauga muchia sd limbajul LsiLii*Lid.
Limbaje simple care nu sunt regulate :
{anbn |n0}
paranteze echilibrate
{ww|w {a,b}*}
cuvant, apoi repetat
R
{ww | w {a,b}*}
cuvant, apoi inversat
Limbajele regulate au proprietatea ca in fiecare cuvant sufficient de lung exista un subsir
care poate fi repetat (pumping lemma).
Curs 12
Un limbaj e descries prin multimea simbolurilor sale, si prin regulile prin care pot fi
combinate acele simboluri : sintaxa.
Sintaxa unei limbi : modul in care pot fi formate fraze cu cuvintele limbii ( cuvintele sunt aici
simbolurile)

O gramatica descrie cum se obtin sirurile dintr-un limbaj prin reguli de productie (reguli de
rescriere) pornind de la un simbol de start.
O gramatica formala G e formata din :
: o multime de simboluri terminale
N: o multime de simboluri neterminale, N =
P : o multime de reguli de productie , de forma ( N)*N( N)* ( N)
un simbol de start S

Curs 13
Un arbore e un graf conex fara cicluri. E compus din noduri si ramuri (muchii).
Obs: un arbore cu n noduri are n-1 ramuri
Orice nod in afara de radacina are un unic parinte. Un nod poate avea mai multi copii.
Nodurile fara copii se numesc noduri frunza.
Un arbore e fie arborele vid sau un nod cu mai multi subarbori.
Formula lui Cayley : Exista nn-2 arbori neordonati cu n noduri.
Codul Prufer : Un arbore cu n noduri poate fi reprezentat unic ca sir de n-2 numere de la 1 la
n.
Intr-un arbore binar, fiecare nod are cel mult doi copii. Un arbore binary e fie arborele vid
fie un nod cu cel mult doi subarbori.
Un arbore binar cu inaltimea n are cel mult 2n+1 -1 noduri.
Arbori binari completi : Fiecare nod care nu e frunza are exact doi copii.
Un arbore binar complet cu n frunze are n-1 noduri ce nu sunt frunze.
Un arbore binar complet de inaltime n are cel mult 2n frunze.
Parcurgerea arborilor : in preordine - intai radacina, apoi subarborii
in inordine arborele stang, apoi radacina, apoi arborele drept
in postordine intai subarborii, apoi radacina

Curs 14
Informal, un graf reprezinta o multime de obiecte (noduri) intre care exista anumite
legaturi (muchii sau arce).
Formal, un graf e o pereche ordinata G=(V,E) unde V e multimea nodurilor si E (multimea
muchiilor) e o multime de perechi (u,v) VV.

Un graf e orientat daca muchiile sale sunt perechi ordonate.


Un graf e neorientat daca muchiile sale sunt perechi neordonate ( nu conteaza sensul
pacurgerii).
Muchiile unui graf formeaza o relatie E V V pe multimea nodurilor.
Un graf neordonat poate fi reprezentat printr-o relatie simetrica u,v V. (u,v) E (v,u)
E.
Intr-un graf ordonat, E e o relatie oarecare. (nu trebuie sa fie simetrica, dar poate fi )
Orice relatie binara poate fi vazuta ca un graf ordonat pentru (u,v) E introducem o muchie
u v.
Un drum intr-un graf e o secventa de muchii care leaga o secventa de noduri x0,,xn cu n0
astfel ca (xi,xi+1) E pentru orice i<n. Un drum are un nod initial si un nod final.
Lungimea unui drum e numarul de muchii.(poate fii zero)
Drumurile de lungime nenula sunt date de inchiderea tranzitiva a relatiei E :
E+ =
= E E2 .
Un ciclu e un drum de lungime nenula in care nodurile de inceput si sfarsit sunt aceleasi.
Adeseori, lucram cu cicluri simple : cicluri in care o muchie nu apare de mai multe ori.
Un graf neorientat e conex daca exista un drum intre oricare doua noduri.
Un graf orientat e tare conex daca pentru orice pereche de noduri (u,v) exista un drum de la
u la v si un drum de la v la u.
O component tare conexa e un subgraf tare conex al unui graf.Componentele tare conexe
sunt disjuncte.
Graf ponderat : fiecare muchie are asociata o valoare numerica numita cost.
Un drum eulerian e un drum care contine toate muchiile unui graf exact o data.
Un ciclu eulerian e un ciclu care contine toate muchiile unui graf exact o data.
Def: Gradul unui nod(intr-un graf neorientat) e numarul de muchii care ating nodul.
Un graf contine un ciclu eulerian daca si numai daca toate nodurile au grad par.
Un graf contine un drum eulerian daca si numai daca exact doua noduri au grad impar.
Traversarea in adancime e o traversare in preordine;nodurile inca nevizitate se pun intr-o
stiva.
Traversarea prin cuprindere viziteaza nodurile in ordinea distantei minime de nodul de
plecare; nodurile inca nevizitate se pun intr-o coada.

S-ar putea să vă placă și