Sunteți pe pagina 1din 46

ANFXA 1 -Codiil ASCII ...

A^J A 2 "Sin ' axa limb J"lii Pascal BNF ANhXA 3 - Diagrame sintaclice AM^J A 4 "F"nc!ii ?i l>roc iuri standard.. A1NLXA 5 - Mic dictionar de lermeni inforniatici

CAPITOLUL1
343 349 359

II II

Bibliografie

389

ALGORITMI
Notiunea de algoritm, utilizata din cele mai vechi timpuri, este una din notiunile fundamentale ale matematicii. Termenul de algoritm se pare ca a derivat din numele matematicianului persan Abu Abd-Allah ibn Musa al'Khwarizmi sau Abu Ja'far Muhamad Ibn Musa alTChwarizmi (790-840), care a scris o carte de matematica cunoscuta in traducerea latina ca "Algorithmi de numero indorum", apoi ca "Liber algorithmi". Matematicienii din Evul Mediu, intelegeau prin algoritm o regula pe baza careia se efectuau calcule aritmetice. Astfel, in timpul lui Adam Riese (sec. XVI), algoritmii erau utilizati pentru dublari, injumatatiri, inmultiri de numere. In lucrarile lui Stifer ("Arithmetica integra", Niirnberg, 1544) si Cardano ("Ars magna sive de reguli algebraicis", Niirnberg, 1545), apare de asemenea termenul de algoritm. Mai tarziu, Leibniz foloseste termenul "algoritm de inmultire". Kronecker (1886) si Dedekind (1888) semneaza actul de nastere al teoriei functiilor recursive. Conceptul de recursivitate devine indisolubil legat de eel de algoritm. Dar abia in deceniile al treilea si al patrulea ale secolului XX, teoria recursivitatii si a algoritmilor incepe sa se constituie ca atare, prin lucrarile lui Skolem. Ackermann. Sudan, Godel, Church, Kleene, Turing si altii. Prin aparitia calculatorului, notiunea de algoritm capata noi valente si se contureaza rolul central pe care il acesta joaca in rezolvarea problemelor, de o mare diversitate, cu ineditul instrument de lucru. Se pune problema definirii riguroase a notiunii de algoritm, se poate vorbi de abordarea algoritmica a unei probleme, si chiar a unei clase de probleme. Prin algoritm astazi se intelege o metoda generala de rezolvare a unui anumit tip de problema, metoda care se poate implementa pe calculator, programul fund exprimarea unui algoritm intr-un limbaj de programare. Cei mai simpli algoritmi cunoscuti sunt reguli pe baza carora se efectueaza una sau alta din cele patru operatii aritmetice in sistemul zecimal,

II

14

RA7.KLE INFORMA TIC 11

numiti si algoritnii numeric!. Exista, de asemenea, algoritmi algebrici. algoritmi logici. Vom prezenta cateva exemple de algoritmi, pcntru a pune in evidenta proprietatile lor generale. Exemplul I. Operatia de adunare a doua numere cu mai multe cifre se descompune intr-un lant de operatii elementare de doua tipuri: a) calculul cifrei corespunzatoare sumei a doua cifre; b) retinerea acesteia atunci cand se trece la pozitia imediat la stanga celei precedente; ordinea indicata prin aceasta regula, de efectuare a operatiilor, este de la dreapta la stanga. Aceste operatii elementare au un caracter formal, deoarece ele pot fi efectuate in mod automat, cu ajutorul unui label de adunare a cifrelor dat de la inceput, facand complet abstractie de semnificatia lor. Observatie. La fel se intampla si in cazul celorlalte trei operatii aritmetice, pentru extragerea radacinii patrate etc. Exemplul 2. Algoritmul lui Euclid permite aflarea celui mai mare divizor comun a doua numere naturale date a si b. Exista atatea probleme distincte de acest tip, cate perechi diferite de numere (a,b) exista. Oricare dintre aceste probleme se poate rezolva prin constructia unui sir descrescator de numere, primul fund eel mai mare dintre numerele date, al doilea eel mai mic dintre ele, al treilea restul impartirii primului la al doilea, al patrulea restul impartirii celui de al doilea la al treilea etc., pana cand se ajunge la o impartire al carei rest este nul. In acest ultim caz, impartitorul va fi rezultatul cautat. Putem prezenta algoritmul in mai multe variante; prin a si b vom intelege doua marimi variabile ale caror valori initiale sunt cele doua numere date: I) PI. Citeste a si b\ P2. Calculeaza r, restul impartirii lui a prin b (r - a- [a//>]-/?) P3. Daca restul este nul, scrie b si opreste procesul de calcul; altfel, a ia valoarea lui b. b ia valoarea lui r ( a - b: b - r) si treci la pasul P2. Observatie. In aceasta prezentare a algoritmului nu este neaparata nevoie ca a si b sa fie in ordine descrescatoare. Cum operatia de impartire se reduce la un sir de scaderi, algoritmul se poate prezenta si astfel: II) PI. Citeste a si b; P2. Compara a cu b. Daca sunt egale, oricare dintre ele furnizeaza rezultatul cautat, se scrie valoarea comuna si se opreste procesul de

calcul; altfel, daca primul dintre ele este mai mic, se permuta ele ( c = o; a = b;b = c ) si se trece la pasul urmator. P3. Se scade b din a, se considera a scazatorul, iar h restul obi ( r a - b; a = b ; h - r) si se trece la pasul P2. Ill) PI . Citeste a si ft; P2. Compara a cu h. Daca sunt egale, atunci scrie a (sau b) opreste procesul de calcul; altfel, daca a este mai mare, a1 a - a - b, in caz contrar b = b - a si se revine la pasul P2 cu valori pentru a si b. In matematica, nu intotdeauna algoritmii sunt formula}! detaliat. se prefera acest gen de fonnulare pentru algoritmii cunoscuti. Opei elementare necesare procesului de rezolvare al problemei de mai si varianta III, de exemplu, sunt cele de scadere a doua numere, de comp; de citire i respectiv, de scriere. Dar descompunerca poate con scaderea se poate reduce, la randul ei, la un sir de operatii mai s

(Exemplul 1), etc. Algoritmii numeric!, cei care corespund problemelor a rezolvare se reduce la cele patru operatii aritmetice, joaca un rol imp in domeniile cele mai diverse ale matematicii, atat elementare < superioare si se enunta adesea sub forma de operatii, formule sau scherr Exemplul 3. Algoritmul de rezolvare a unui sistem de doua
' L .. ..

de gradui intdi cu doua necunoscute este dat de formulele


\x = (c,l

= (a\c2 ~ a2c\}/(a\h2 ~ a2h\) prin care se indica atat operatiile cat si ordinea executiei lor. Bin algoritmul trebuie sa precizeze conditiile care trebuie indeplinite pe aceste operatii sa poata fi executate, pentru a putea conduce la re cautat. In general, numarul de operatii indicate printr-un algoritir cunoaste dinainte; el depinde de alegerea concrela a conditiilor prob poate fi descoperit in cadrul procesului de rezolvare (ca, dc exer cazul algoritmului lui Euclid). i alte operatii se pot efectua cu ajutorul algoritmilor num acest caz, folosirea acestora se bazeaza pe o precizie data dinai exemplu, cxlragerea radacinii pdlrale dintr-un numdr real pozi/iv obtine printr-un algoritm ce furnizeaza radacina cu o aproximatie urma unui sir de impartiri, ininultiri, adunari si scaderi:

16

_ MWLE JNI' ORMA 77CY/

( \ipilitlul I - Algoritmi
a

17

calculeaza k - 0,1,2

, > * ] , prin formula

Procesul de calcul se opreste cand \xkn

xk\ < K , unde E este

d;il, ultimul element calculat al sirului (^) tr=N furnizeaza rezultatul cautat si reprezinta radacina patrata a lui a cuprecizia . Prin metode analoage analiza numerica reduce operatii mai complexe cum ar fi integrarea si derivarea la operatii aritmetice. Spunem ca o clasa de probleme de un anumit tip dat este rezolubila daca este pus in evidenta un algoritm pentru rezolvarea sa. Daca nu dispunem de un algoritm prin care sa se rezolve toate problemele de acest tip, atunci trebuie sa se descopere cate un procedeu special pentru fiecare caz in parte, care poate nu este convenabil de aplicat majoritatii celorlalte cazuri. De exemplu, sa consideram toate ecuatiile diofantice imaginabile, adica ecuatiile de tipul P = 0, unde P este un polinom cu coeficienti intregi. Ecuatia poate avea sau nu o solutie intreaga. Printre cele 20 de probleme pe care marele matematician german David HUbert (1862-1943) le-a prezentat in 1901 la Congresul International de Matematica figura si problema urmatoare, cunoscuta sub numele de a zecea problema a lui Hilbert: Gasirea unui algoritm care sa determine daca o eciiatie diofantica are sau nu o solutie intreaga Daca ecuatia cu coeficienti intregi,
anx" + aa_}x"~] +...+ atx + a0 =0, (1)

admite o radacina intreaga, atunci radacina este un divizor al termenului liber. Se poate descrie algoritmul astfel: PI. Citeste n. au,a},..,an. P2. Afla divizorii Iuio 0 (verificand succesiv daca aa se divide cu 2,3 v .,k/2]).

P3. Calculeaza valoarea numerica a expresiei din primul membru al ecuatiei (1) pentru fiecare divizor gasit. P4. Daca valoarea calculata este 0, atunci divizorul respectiv este o radacina a ecuatiei. Scrie acest divizor. Daca primul membru al ecuatiei (1) nu se anuleaza pentru nici un divizor, atunci ecuatia nu are radacini intregi. Nu se cunoaste un algoritm pentru cazul general, in care ecuatia are mai multe nedeterminate.

In general, un algoritm poate fi conceput ca un sir finit de etape ce pennit obtinerea unui rezultat prin efectuarea unui numar finit de operatii intr-o ordine determinate asupra unor valori initiate date. Din exemplele examinate se evidentiaza deja caracteristicile algoritmilor numerici, care sunt proprii oricarui algoritm si anume determinarea, universal!tatea si eficienta. 1) Fiecare operatic este bine determinata. Calculele efectuate conform instructiunilor precizate de algoritm nu depind de calculator si reprezinta un proces determinat care poate fi reluat oricand de altcineva, cu aceasi finalitate. 2) Un algoritm conduce la un program unic ce determina un anumit proces de calcul in care datele initiale pot fi diferite, dar in toate aceste cazuri obtinandu-se rezultate corespunzatoare. Cu alte cuvinte, un algoritm rezolva nu doar o problema, ci o clasa de probleme de acelasi tip. 3) Un algoritm permite ca dupa efectuarea unui numar finit de operatii asupra unor date initiale, sa se obtina efectiv anumite rezultate. Fiecare proces ale carui etape izolate sunt realizate succesiv prin intermediul unui calculator poate fi descris printr-un algoritm. Pe de alta parte, orice algoritm cunoscut astazi sau care poate fi prevazut in stadiul actual al stiintei, poate fi, in principiu, realizabil prin intermediul unui calculator. Un algoritm poate contine un ir finit, dar destul de lung de operatii si din acest motiv poate deveni practic irealizabil de catre un calculator, daca volumul de memorie necesara este mai mare decat eel de care dispune masina, sau timpul necesar efectuarii operatiilor algoritmului, desi finit, este prea mare. In astfel de cazuri, procesul de prelucrare a unui algoritm poate fi considerat un proces potential realizabil, ce conduce la rezultatul cautat dupa un numar finit, chiar foarte mare, de etape. Cand vorbim despre posibilitatea realizarii unui algoritm intr-o masina, avem in vedere posibilitatea de a dispune de o memorie infinita. Definitia matematica riguroasa a notiunii de algoritm. ca si notiunea de masina automata de calcul, nu s-a pus la punct decat dupa anul 1930. Pana atunci, in matematica, termenul de algoritm se intalnea cand se punea problema construirii lui efective; afirmatia existentei unui algoritm pentru rezolvarea problemelor de un tip anume era, de regula. probata de descrierea sa. Nu se punea problema de a defini in mod riguros notiunea de algoritm. la vremea respectiva fiind satisfacatoare o reprezentare relativ vaga a sa. Aceasta stare de lucruri a fost depasita prin insasi evolutia matematicii care acumulase noi fapte. Dorinta naturala a matematicienilor de a crea algoritmi din ce in ce mai puternici, capabili sa rezolve clase din ce in ce mai largi de probleme, a schimbat complet situatia.

I - Al_x<>ritmi_
IX

BA^ELEJNFVRMATJCfl

Pomind de la un algoritrn dat se poate formula intotdeauna un algoritm rnai general. Astfel, de exemplu, plecand de la algoritmul de extragere a radacinii patrate se poate formula problema construirii unui algoritm general de extragere a radacinii de un ordin oarecare dintr-un numar dat. Mai mult, a extrage radacina de ordinul n dintr-un numar a dat revine la a rezolva ecuatia x" - a = 0. Putem formula, mai general, problema construiri* unui algoritm care sa gaseasca pentru o ecualic de tipul anx" + an^x" ' + ...+ a}x + a0 - 0, ( / ? e N ) tuate radacinile sale (a gasi pentru orice intreg k aproximarile zecimale ale radacinilor cu eroarea de 1/10*, prin lipsa sau prin adaos). Algebra polinoamelor isi propune construirea si justificarea unui astfel de algoritm. Problema rezolvarii unei ecuatii de tipul mentionat nu este ultima posibilitate de generalizare. O formulare foarte generala ar fi urmatoarea: Sa se construiasca un algoritm prin care sa se rezolve orice problema matematica. O astfel de formulare, desigur, nu este suficient de clara, dar ea exercita o atractie deosebita pentru matematicieni. Marele matematician si filozof german Leibniz (1646-1716) isi propusese deja sa gaseasca o metoda universala prin care sa rezolve orice problema matematica. Un astfel de algoritm universal nu s-a creat, dar aceasta problema a fost reformulata mai tarziu ca problema fundamentala a logicii matematice, numita problema discernerii deductibilitatii. Metoda axiomatica in matematica consta in aceea ca orice teorema a unei teorii date se obtine prin deductie formala logica, poniind de la un anumit numar de afinnatii (axiome) admise fara demonstratie. In cadrul logicii matematice este descris un limbaj special de formule ce permite descrierea oricarei propozitii (enunt) at unei teorii matematice sub forma unei formule bine determinate. Problema discernerii deductibili(a{ii poate atunci fi tbrmulata astfel: Pentru orice doua formule R si S ale calculului logic exista. sau nu, un font dcductiv de la R la S? Constructia unui astfel de algoritm ar fi o metoda universala pentru rezolvarea automata a problemelor oricarei teorii matematice axiomatizate. Dar. in ciuda eforturilor perseverente ale specialistilor, o astfel de constructie nu s-a realizat. In rezolvarea unor probleme matematice particulare s-au intampinat dificultati considerabile, ceea ce a condus la concluzia potrivit careia nu poate fi construit un algoritm de rezolvare pentru orice clasa de probleme.

O astfel de afirmatie ar trebui insa justificata printr-o demonsti matematica, demonstratie care ar necesita o definitie riguroasa a notiun algoritm pentru a proba non-existenta acestuiaT. Exista probleme care nu pot fi rezolvate prin anumite metode exemplu problema trisectiunii unghiului cu rigla fi compasul si c< rezolvarii unei ecuatii polinomiale prin radicali. Jmpartirea in doua cgale a unui unghi prin metoda mentionata, ca si stabilirea formulelor radicali pentru rezolvarea ecualiilor de grad dot, trei sau patru sun! probleme solutionate. Pentru grade mai mare sau egal cu 5 nu < formule pentru exprimarea prin radicali a radacinilor cu aji

coeficientilor. Problema definirii notiunii de algoritm a devenit una problemele fundamentale ale matematicii modcrne, definitia c; trebuind sa reflecte cu exactitate esenta insasi a notiunii definite, ik prin numeroase exemple, printre care i cele amintite mai sus. Pei obtine o astfel de definitie, riguroasa din punct de vedere matematic, t reprezentat mecanismul de funcUonare al unei masini sub form; scheme standard, a unei structuri logice cat mai simple posibil, dar sv. de precisa pentru a face obiectul unui studiu matematic. Matematicianul englez Alan Mathison Turing (1912-1956) a un concept foarte simplu si in acelasi timp foarte general de ma calcul. Ea a fost descrisa inainte de aparitia calculatoarelor moderne. 1 fundamentala a teoriei algoritmilor poate fi enuntata astfel: Orice algoritm ce poate fi dat cu ajutorul unci scheme fum este recilizabil intr-o masina Turing corespunzatoare. Se poate construi o masina Turing universala capabila sa r intr-un anumit sens orice algoritm, deci sa se comporte in fiecare parte ca masina Turing corespunzatoare acelui algoritm. Masinile electronice de calcul moderne se construiesc ase masinilor universale, in memoria lor introducandu-se atat datele in problemei cat si programul de rezolvare. Memoria externa a une Turing este nelimitata. de vreme ce ea reprezinta o masina de calci. Practic insa, o masina de calcul poate avea o memorie externa sul mare, dar ea este oricuin limitata. Se pune insa si o alta problema si anume: exista o masin capabila sci rezolve o clasa data de prohleme? In multe cazuri,

este negativ. In 1936 matematicianul american Alonzo Church (1903 obtinut unui din primele rezultate de acest tip: Teorema lui Church. Problema deduclibilitatii este nen pe cale algoritmica.

20

( 'iif>i/i>liil I - A

Existenta problemelor nerezolvabile pe cale algoritmica a demonstrat ca procesul de cautare a unui algoritm se desfasoara in paralel cu efortul depus in incercarea de a demonstra inexistenta unui asemenea algoritm. De exemplu, in cazul problemei a zecea a lui Hilbert, ea este nerezolvabila pe cale algoritmica (Matijasevici, 1970). Procesul cunoasterii matematice nu poate fi in intregime automatizat $i deci posibilitatea inlocuirii activitatii creatoare a omului este in consecinta absurda. TotusJ, domeniul de aplicatii al proceselor algoritinice este suficient de larg de$i unii dintre algoritmii construiti pana acum ajung sa fie extrem de dificili, foarte lungi, necesitand un numar mare de operatii, acestia se executa relativ rapid. Prin extinderea memoriei si prin marirea vitezei de calcul, perfonnantele masiniJor de calcul sunt imbunatatite continuu; calculatoarele de maine, instrumente mult mai perfectionate, vor imbunatafi performantele viitorilor specialist!, fara insa a avea posibilitatea de a li se substitui vreodata.

Reprezentarea unui algoritm se poate realiza prin intermediul unui limbaj, care poate li limbajul natural, liniba vorbita de o persoana, limbajul imaginilor etc. Se pot utiliza de asemenea un anumit numar de blocuri elementare sau primitive, bine definite i legate intre ele pe baza unor reguli precizate, acestea constituind un limbaj de programare. Fiecare primitiva are o sintaxa sau o reprezentare simboiica a sa i o semantica prin care se identified semnificatia primitivei respective. Un algoritm descris astfel poate necesita eforturi mari de a detalia fiecare operatie ce poate fi executata de calculator. In general se utilizeaza primitive de nivel inalt ce constituie instrumente abstracte construite pe baza primitivelor de nivel scazut corespunzatoare instructiunilor limbajului masinii.

2. Scheme logice 1. Reprezentarea algoritmilor


Studiul algoritmilor ocupa un rol central in informatica, tinand seama de faptul ca unui calculator trebuie sa-i fie programat un algoritm pentru fiecare sarcina ce trebuie indeplinita. Notiunea de algoritm este de natura abstracts, in sensul ca acesta poate fi reprezentat printr-o secventa finita de operatii" de diferite tipuri, poate fi descris grafic, poate fi reprezentat printr-o secventa de ,,instructiuni", care se mai numeste si program. Programul este astfel o reprezentare formala a unui algoritm proiectat in vederea unei aplicatii infonnatice, executia unui program sau procesul de calcul insemnand de fapt executia algoritmului reprezentat prin programul respectiv. Algoritmul trebuie sa aiba o structure bine precizata, si anumc sa existe o ordine bine dcterminata de executie a pasilor sai. In cazul algoritmilor paraleli, se executa aparent simultan mai multe secvente de pasi, fiecare secventa fiind executata de un alt procesor, in cadrul unui calculator mttltiprocesor, In aceasta situatie, executia se realizeaza pe mai multe ramuri care se intalnesc sau se despart in functie de prioritatea secventelor care se executa in acel moment. Algoritmul este un proces finit. de?i termenul de algoritm intr-o acceptiune mai putin riguroasa este uneori folosit pentru a descrie procese care nu sunt neaparat finite; ca exemplu, putem mentiona algoritmul de imparlirc a dona numere intregi, care poate conduce la un numar infinit de zecimale. Schema logica este o descriere grafica a unui algoritm. Fiecarei etape sau pas al algoritmului i se asociaza un bloc. Parcurgerea se face in sensul sagetilor iar in fiecare bloc se specifics o operatie ce unneaza sa fie efectuata la acel pas, sau o conditie, i in functie de indeplinirea sau neindeplinirea acesteia se continua pe o ramura sau alta (cele doua posibilitati de continuare), in sensul precizat de sageti. Inceputul algoritmului este desemnat printr-un bloc START (figura l(a)); orice schema logica are un unic START. Sfarsjtul algoritmului este indicat printr-un bloc STOP (figura l(b)); este posibil sa Fig. 1 apara de mai multe ori acest bloc, desemnand (b) oprirea executiei in anumite situatii posibile. Citirea, respectiv scrierea, sunt reprezentate in schema logica prin scrierea explicita a cuvantului ,,Cites.te" respectiv ,,Scrie". urmat de numele variabilelor pentru care se introduc valori, respectiv se scriu rezultatele obtinute, in interiorul unui paralelogram. Sagetile reprezinta intrarile, respectiv iefirile in raport cu blocul respectiv. Exemplul 1. Blocurile din figura 2 au semnificatiile urmatoare: ,,citeste o valoare pentm a\ .,scrie valoarea curenta a variabilei x", respectiv ,,cite?te n si valorile pentru a(l), ..., a(n)".

1 - Algorilmi
99

-.LI: INl'ORMA7'!('11

Citc^tc n,

Citeste a

Scric x

Exemplul 3. Atribuirile sunt descrise printr-o formula explicita in interiorul unui dreptunghi: Exemplul 2.

Fig. 7

x:=b^ \- c

(a)

(b)

T
Fig. 3

Interpretarea blocurilor din figura 3 este urmatoarea: variabilei a i se atribuie valoarea pe care o avea inaintea acestui pas marita cu o unitate, variabilei / i se atribuie valoarea intreaga 2 iar in al treilea caz, variabilei x i se atribuie valoarea obtinuta prin insumarea valorilor variabilelor b si c (care trebuie sa fie cunoscute in momentul in care se ajunge la acest pas). In functie de indeplinirea sau neindeplinirea unei conditii, exista , da / VJiu doua posibilitati de continuare, ^'X- 4 J/ \l situatie descrisa in schema logica a algoritmului cu ajutorul unui bloc de forma celui din figura 4. unde c reprezinta o conditie. Daca c este satisfacuta, algoritmul continua pe ramura unde este specificat cuvantul ,,da", iar in caz contrar pe cealalta ramura. Conditia corespunde unei expresii logice care, in functie de valorile variabilelor care o complin, poate sa aiba la un moment dat valoarea logica ailevarat sau fats. De exemplu, blocul din figura 5 poate fi interpretat astfel: daca valoarea variabilei / este egala cu valoarea variabilei n. atunci sc continua pe ramura din stanga; altfel, pe ramura din dreapta. Pot fi utilizate in schemele logice si blocurile de forma celui din figura 6 in cadrul unor comparari care presupun trei posibilitati de continuare; de asemenea cand sunt doar doua continuari si unui din cele trei varfuri disponibile pentru continuare nu este utilizat.

In figura 7(a) simbolul : " este utilizat pentru z compararea (a doua elemente comparabile intr-o multime pe definita o relatie de ordine). Prin compararea lui a cu b (pre exemplu, ca avand valori numere reale) sunt posibile trei situatii: mai mic, egal, sau mai mare decat b\ in fiecare dintre acestea continua pe o ramura diferita. Pentru blocul din figura 7(b) interp asemanatoare cu cea a blocului descris anterior. Mai exista si j de a continua schema logica utilizand un conector de forma: C J figura 8). Vom da in continuare cateva exemple de algoritmi d scheme logice, pentru a ilustra modul de parcurgere al schemi ajutorul sagetilor.

Exemplul 4. Pcrmutarea a doua elements mire elc. Pre acestea sunt doua valori citite pentru variabilele reale a si b. Sc este descrisa in figura 8.

Fig. 8

24

('<//>i/d/iil I

My.nnlim

Se citesc valorile variabilelor a si ft, o variabila c retine valoarea uiiL'ia din ele, in cazul de fata a lui a; lui a i se atribuie valoarea lui initiala a lui h. lui h i se atribuie valoarea initiala a lui a, pastrata in c. Se scriu valorile pe care le au variabilele a si b, dupa care algoritmul se opreste. Obscrvatie: Daca schema ar confine doar blocurile de calcul din ligura 9, fara a utiliza variabila auxiliara c, efectul ar fi urmatorul: lui a i sar atribui valoarea lui ft, apoi b ar lua valoarea pe care o are a (fosta valoare a lui b) si deci b nu si-ar modifica valoarea initiala.
Fig. 9

Exemplul 5. Gasirea celui mai mare element dintr-un fir de n numere date. O schema logica pentru a descrie grafic un algoritm de rezolvare a acestei probleme este prezentat in figura 10.

Se utilizeaza patru variabile n. /, , si max. 1'rima reprezinta numaru) elementelor din sir. A doua este utilizata pentru a parcurge cu ajutorul sau toate etapele algoritmului, ea luand valori de la / la n. Prin intermediul variabilei a se citesc pe rand valorile cc repre/inta elementele sirului. A patra variabila este utilizata pentru a retine valoarea unui element atunci cand el este mai mare decat eel mai mare dintre elementele citite anterior. Astfel, dupa ce sunt citite valorile pentru n i pentru primul element din sjr, mux are ca valoare initiala chiar acel element. Daca mai sunt elemente, se citete o noua valoare si daca aceasta depaseste valoarea pe care o are max, lui max i se va atribui aceasta valoare, dupa care se continua. Daca nu, max nu Ii modifica valoarea s.i se continua, la fel ca mai inainte, daca mai sunt elemente de citit. Daca toate elementele au fost citite, mai precis daca valoarea lui / este egala cu valoarea lui n, atunci se scrie valoarea lui max si algoritmul se incheie. Exemplul 6. Suma a n numere reale date.

s := S + nr\i\

Fig. 10

O solutie este data in figura 11. Se reprezent&nd numarul de numere dat. Numerele elementele unui sir astfel incat n r [ \ ] , .... nr[n] intermediul variabilei reale nr[i], unde / ia valori

citeste valoarea lui n, se pot concepe ca fiind sunt citite pe rand prin de la 1 la n. Suma este

Capitolul 1 - Algorilmi

26

KU''. INI-'OKMAT1CII__

3. Programare structurata
Trecerea de la algoritmul de rezolvare a unei probleme la r sa efectiva se realizeaza in mai multe etape, descrierea algoritrr

calculata prin intermediul variabilei S care initial ia valoarea zero; dupa citirea primului element, valoarea ei se modifica prin adaugarea valorii acestui element la valoarea sa initiala; dupa citirea celui de al doilea element (daca exista), valoarea sumei devine fosta sa valoare la care se adauga valoarea nou citita, s.a.m.d. Daca /' = n, ceea ce inseamna ca valoarea lui / este egala cu valoarea citita a lui n, sau altfel, ca au fost citite toate valorile si inglobate in suma, valoarea lui S se scrie, ea fiind rezultatul cautat, si algoritmul se incheie. Exercitii. 1. a)

Specificati care din urmatoarele secvente reprezintS un algoritm.

una dintre acestea. Concept important in procesul de reprezentare a unui utilizat dupa 1970, programarea structurata a contribuit la stan schemelor in vederea simplificarii scrierii programului con algoritmului descris intr-un limbaj de programare. Putem pune in evidenta, in reprezentarea operatiilor de cit, de calcul, de decizie ce apar in procesul descrierii algoritmului, xi structuri: Structura secventiala, Structura alternativa i Structura Structura secventiala este o secventa de operatii executat(

Pasul 1. Citeyte a, b; Pasul 2. S = a + ft; Pasul 3. Scrie S', Revino la Pasul 1. b) Pasul 1. A = 1; ft = 1; Pasul 2. B = ft + 1; Pasul 3. C = a/ft; Pasul 4. Scrie c; Pasul 5. Daca b<4 mergi la Pasul 2; Altfel, Stop. c) Pasul 1. Citete A, B, C; Pasul 2. D= b2 - 4ac.Daca d < 0 stop. Altfel, mergi la Pasul 3.

scrierii acestora (figura 12). Structura alternativa de forma ;/ then else se refera la ] de a continua pe o ramura sau pe alta, in functie de inde] neindeplinirea unei conditii (in functie de valoarea adevarat sau o are o expresie logica). Ramura corespunzatoare neindeplini poate lipsi (parcurgerea se continua pe linia punctata vezi figura 1
da
nu

Pasul 3. Xi,2 = (- ft Vc/j / 2a; Pasul 4. .Scn'e A"/. 2; Stop. d) Pasul 1. Cite$te a, ft; Pasul 2. U = a; v = b: u = u + v; v = u - v; u - u - v; Pasul 3. Scrie u, v. Stop. e) Pasul 1. Citefte a, ft: Pasul 2. .SVn't' a, ft; Daca a = ft Stop. Altfel, mcrgi la Pasul 1. 2. Elaborati schemele logice pentru algoritmii din Exercitiul 1. 3. Descrieti un algoritm de generare a termenilor din sirul lui Fibonacci, mai mid decat un numar natural n dat. 4. Descrieti un algoritm dc generare a primelor m numere prime, unde m este un numar natural dat. 5. Descrieti algoritmul de descompunere in factor! primi ai unui numar natural m dat. 6. Descrieti algoritmul lui Euclid de gasire a celui mai mare divizor comun a doua numere naturale date (vezi Exemplul 2 din introducere). 7. Descrieti un algoritm care sa ordoneze un sir finit de numere reale date.

Fig. 12

\ Actiunc I ' N/

Sinn lura repelilivu while - do sau repeat until consta in executarea unei operatii sau secvente de operatii aiutu limp cat o conditie (.' este indeplinita, respectiv pana cand o conditie este indeplinita. (iratic, aceste structuri se pot reprczenta ca in figura

Fig. 14
(a)

28

- JMZKLE1NFORMA TIC 11

29

4. Limbajul Pseudocod
Trecerea la limbajele pseudocod a fost determinate de unele inconveniente in descrierea algoritmilor cu ajutonil schemelor logice, printre care spatiul mare necesar, difkultatea de inserare a comentariilor, a reprezentarii graflce. Pe de alta pane, trecerea la etapa urmatoare, a scrierii programului corespunzator algoritmului descris intr-un limbaj pseudocod, este mult mai usoara, indiferent de limbajul de programare utilizat. Exista o mare diversitate de limbaje pseudocod, insa unele elemente comune ale acestora sunt necesare intelegerii structurii algoritmului reprezentat ca o secventa de instructiuni. Reprezentarea unui algoritm poate fi facuta in limbajul uzual, ca o succesiune finita de pasi, atunci cand interpretarea acestei reprezentari nu conduce la confuzii, operative fiind descrise suficient de precis. Exista insa si alte modalitati de reprezentare, una dintre acestea utilizand limbajul numit pseudocod, sistem utilizat in procesul de dezvoltare al unui algoritm. Atunci cand se cunoaste limbajul formal in care va fi exprimata versiunea finala a algoritmului, pseudocodul relanseaza regulile limbajului respectiv, in sensul ca interpreteaza structuri sintactice si semantice asemanatoare limbajului dar mai putin formale. In afara operatiilor propriu-zise, o structura des intalnita in cadrul algoritmului este aceea de selectare intre doua activitati, in functie de indeplinirea sau neindeplinirea unei conditii. Aceasta structura poate fi scrisa astfel in pseudocod: if [conditie] then factivitatel] else [activitate2] imde if. then, else sunt cuvinte cheie insemnand daca, atunci, altfel, iar parantezele fiind delimitari pentru subslructuri. Prin structura sintactica de mai sus este exprimata structura sintactica des intalnita in limbajul natural: Daca o conditie este sat isfacuta, at unci se executa activilatel, altfel se executa activitate2. Daca activitute2 lipseste, atunci sintaxa structurii de mai sus este urmatoarea: if [conditie] (hen factivitate] 0 astfel de structura algoritmica consta doar in exccutarea repetata a unci instructiuni sau secvente de instructiuni, at at limp cat o conditie este indeplinita. In pseudocod, aceasta va avea sintaxa: while [conditie] do factivitate] insemnand ca a/at limp cat este fndeplinitu com/ilia data se executa aclivitatea precizata.

Structura while - do inglobeaza urmatoarele operatii: 1) Se verifica daca este indeplinita sau nu conditia. 2) Daca raspunsul este da, atunci se executa instructiunea, sau secventa de instructiuni desemnate in sintaxa prin activitate si revine verificarea indeplinirii conditiei. In momentul in care conditia nu este indeplinita se trece la executia ,,instructiunii" ce urmeaza imediat structurii while - do. Exemplul 1. Sa consideram unnatoarea secventa: Pasul 1. citete a; Pasul 2. if [a > 0] then [scrie a; b: =Va ; scrieft]; if [a = 0] then [scrie 'zero'] else [scrie 'eroare']; Ea poate fi interpretata astfel: se citeste o valoare pentru variabila reald a. Daca valoarea este strict mai mare ca 0, se scrie aceasta valoare, apoi se atribuie variabilei b radacina patrata din acea valoare (cu o anumita precizie data), conform unui algoritm explicitat sau predefinit. Daca valoarea citita este egala cu 0, se scrie un text explicativ 'zero'. Textul este scris intre apostrofuri pentru a se face distinctia de cazul in care dupa cuvantul scrie ar urma un mime de variabila (de exemplu scrie a;) sau o secventa finita de nume de variabile. Altfel, scrie textul 'eroare (corespunzator acestei situatii). Exemplul 2. Fie secventa urmatoare: Pasul 1. citeste n; Pasul 2. / : = 1; Pasul 3. while / < n do [citeste a; scrie a ; i : = i + 1 ]; Secventa de mai sus poate fi interpretata astfel: se citeste o valoare (intreaga) pentru variabila n. Lui / i se atribuie valoarea 1. Cat timp i este mai mic decat n, se citeste o valoare pentru a, se scrie acea valoare si se mareste valoarea lui / cu o unitate fata de valoarea curenta. In momentul in care / devine egal cu n (valorile lor coincid) secventa ce urmeaza dupa cuvantul do (scrisa intre paranteze drepte) nu se va mai executa. Este posibil ca secventa respectiva sa nu se execute nici macar o data (cazul n ~ 1). O operatic prin care unci variabile / se atribuie o valoare poate fi reprczentata in pseudocod prin: assign nume the value expresie nwnelui variabilei atribuindu-i-se valoarea unei exprcsii. Se poate ca variabilei sa i se atribuie o valoare numerica sau logica. Aceste aspecte sunt clarificate in cadrul limbajului de programare utilizat, prin regulile de

30

l.E 1NI-ORMA'/'!('II

concordanta intre tipurile variabilelor si cele ale expresiilor ce apar in astfel de instructiuni. In exemplele de mai sus, o astfel de operatic s-a reprezentat printr-o sintaxa mai simpla. Daca nu exista pericol de confuzie, putem scrie in reprezentarea unui algoritm: " / : = ! " in loc de "assign / the value 1 " si " b : = V " in loc de "assign b the value Vo " In pseudocod, operative de citire si scriere pot fi descrise prin instructiunea: read [lista de nume de variabile], respectiv write [lista de nume de variabile], unde lista de nume de variabile poate contine si un singur nume. In limbajul de programare utilizat se specifica tipurile de variabile pentru care se citesc sau se scriu valori si sunt specificate si alte forme particulare ale acestor instructiuni. Pentru a facilita descrierea algoritmului, limbajul algoritmic poate utiliza si alte structuri. Astfel, structura: repeat [activitate] until [conditie] repeta o anumita activitate pana cand o anumita conditie este indeplinita. Astftl, in urma executiei activitatii, se verifica daca aceasta conditie este indeplinita si. in cazul cand nu este indeplinita, activitatea se reia. In momentul in care conditia este indeplinita, se transfera controlul la unnatoarea instructiune (ce urmeaza instructiunii descrise prin aceasta structura). Sunt situatii in care o anumita activitate, descrisa in pseudocod printr-o secventa de instmctiuni, este nevoie sa fie efectuata intr-o alta aplicatie. Utilizand cuvantul procedure putem atribui acelui modul de pseudocod un nume, pentru a-1 identifica si a-1 putea utiliza in acea aplicatie. Prin instructiunea: procedure nume (lista} urmata de secventa de instructiuni ce descriu actiunea modulului respectiv, se specifica faptul ca aceste instructiuni vor fi executate atunci cand activitatea ce urmeaza sa fie executata intr-o aplicatie consta in apelarea procedurii cu numele precizat. Lista dintre paranteze cuprinde un numar finit de parametri (care pot lipsi). Atunci cand este apelata o anumita proceclura, daca ea are parametri, atunci trebuie precizati in lista asa-numitii parametri efectivi, in aceeasi ordine si de acelasi tip cu parametrii formal] din instructiunea de definitie a procedurii. O serie de detalii asupra acestor activitati ce trebuie sa fie indeplinite tin de reprezentarea efectiva a unei probleme intr-un limbaj de programare si nu este necesar sa fie precizate in descrierea algoritmului.

Unnatoarea instructiune if = y then [executa procedura/?/] else [executa procedura p2] poate constitui, tinand seama de semnificatia structurii i f - then - else un cxemplu de instructiune ce apclcaza o procedura.

Exercitii 1. Descrieti in limbaj pseudocod algoritmul de gasire a celui mic element dintr-un sir de numere dat. 2. Descrieti un algoritm de gasire a cclui mai mic si respectiv mai mare numar dintr-o secventa de n numere naturale date^ printr-o sin; parcurgere a acesteia (schema logica sau pseudocod). 3. Scrieti in pseudocod algoritmul de calcul al sumei a c matrici A si B date (sunt citite valorile m, n, ce reprezinta numarul de respectiv de coloane ale matricilor A si B, si de asemenea compone

celor doua matrici). 4. Descrieti algoritmul de inmultire a doua matrici date (veri conditiile care trebuie sa fie indeplinite pentru ca matricile sa se j

inmulti). 5. Gasiti un algoritm prin care, fund dat un numar n, sc afi: numarul obtinut prin inversarea cifrelor acestuia. 6. Fie date urmatoarele secvente de pseudocod : /; : = 0; i: - 0; repeat p : =p +b ; / : = / i- 1 until / = a; d : = a - b; if d "-" 0 then scrie ' a > b else scrie ' a < b' , prcci/.ati ce opcratii descriu fiecare din ele si daca programul in pseu

esle corect. 7. Repre/entati in pseudocod algoritmul de rezolvare a urm; probleme: fiind dat un numar reprezentat in baza 2, sa se afiseze n cxprimat in baza 10. 8. Sa se scrie un algoritm pentru calculul sumei a doua i mari (care nu pot fi memorate), cunoscandu-se numarul de cifre al 1 numar, cifrele si baza in care sunt reprezentate. Reprezentati acest a in pseudocod (vezi algoritmul schitat in Excmplul 1 din introducere).

II

32

( \i/>iiuliil I - Algoritmi

33

9. Utilizandu-se o procedura de adunare (vezi Exercitiul 1), scrieti un algoritm (in pseudocod) pentru inmultirea a doua numere mari prin adunari repetate. 10. Descrieti detaliat algoritmul de adunare a doua numere cu mai multe cifre. Descrieti un algoritm de ridicare la o putere intreaga m a unui numar real n dat (tinand seama de paritatea nuinarului n) astfel incat numarul de operatii sa fie cat mai mic. 11. Se citesc a, b, c, trei numere reale. Daca valorile citite pot constitui coeficientii unei ecuatii de gradul 2, reprezentati in pseudocod algoritmul de rezolvare, prin care se listeaza solutiile reale sau complexe ale ecuatiei. 12. Scrieti un algoritm prin care, citindu-se n numere intregi (inregistrate eventual sub forma unui tablou), se testeaza daca primul numar coincide cu unui dintre celelalte si se afiseaza un text corespunzator. Algoritmul va preciza, in caz afirmativ, numarul numerelor din sir care sunt egale cu primul $i, pentru fiecare dintre acestea, pozitia lor in secventa data. 13. Scrieti un algoritm prin care sa gaseasca, intr-o secventa de n numere date, primele m numere (cele mai mici) si ultimele m (cele mai mari), fara a ordona intreaga secventa. Toate operatiile se efectueaza in aceeasi secventa (sunt date m, n si numerele apartinand listei). 14. Descrieti in pseudocod un algoritm pentru a rezolva urmatoarea problema: fiind date doua siruri (finite) de elemente, sa se testeze daca unui dintre ele este subir al celuilalt. 15. Scrieti in pseudocod un algoritm care sa gaseasca eel mai lung mime dintr-o lista data. Este posibil ca in lista sa fie mai multe nume cu proprietatea ca sunt cele mai lungi. In acest caz sa se listeze toate.

5. Dezvoltarea unui algoritm


Pentru a rezolva o problema cu calculatorul, descoperirea algoritmului ce descrie o metoda de rezolvare a problemei constituie o prima etapa, a doua constand in reprezentarea algoritmului sub forma de program. In general, nu poate fi dat un algoritm care sa descrie procesul in sine de rezolvare a unei probleme oarecare, existand probleme care nu admit solutii algoritmice. Matematicianul George Polya (1887-1985) a evidential principalele etape care se parcurg in procesul de rezolvare a unei probleme, si anume: intelegerea problemei, conceperea unui plan de rezolvare, punerea acestuia in practica si evaluarea solutiei atat din punct de vedere al corectitudinii cat

i ca instrument potential in rezolvarea alter probleme. Metoda de rezolvare a unei probleme ca procedura algoritmica conduce la formularea algoritmului si la reprezentarea acestuia ca program, evaluat apoi din punct de vedere al corectitudinii $i utilizat in dezvoltarea altor programe. In practica insa, ordinea etapelor nu este neaparat aceasta sj de asemenea pot interveni factor! subiectivi, cu rol important in rezolvarea unor probleme, ce tin de momentul de inspiratie sau de talentul cu care este inzestrata o anumita persoana in a ,,vedea" o solutie, fara a urma cai recomandate de experientele matematice anterioare. In general, se pot pune in evidenta cateva metode generale de abordare a problemelor. O astfel de metoda este sa procedam invers: daca dorim sa punem in evidenta o metoda de obtine un anumit rezultat pornind de la anumite date, putem porni de la reziiltatul dorit, parcurgand procesul in sens invers pana ajungem la datele corespunzatoare de intrare. O alta metoda este aceea de a cauta o problema inrudita cu aceea care trebuie rezolvata, mai ximpla, sau pentru care se cunoaste deja o solutie; se va incerca apoi rezolvarea problemei initiate in functie de aceasta, exploatandu-se analogiile. O alta metoda este aceea a rafmarii pas cu pas; ea consta in impartirea problemei in subprobleme, rezolvarea fiecareia fiind o etapa in rezolvarea problemei initiale. Subproblemele se descompun la randul lor in subprobleme mai simple de reprezentat, sj asa mai departe, pana ce se ajunge la etapele ce constau din subprobleme simplu de rezolvat. Aceasta metodologie descendenta (top-down), de la general la particular, se deosebeste de cea ascendenta (bottom-up), de la particular la general; in practica ele sunt ambele folosite de eel ce rezolva o problema oarecare. Un avantaj al metodei rafinarii pas cu pas este structura modulara a solutiilor, simplificand gestionarea procesului de dezvoltare a programului i fiind adecvate activitatii in etapa. Reprezinta rnodul de lucru eel mai utilizat in dezvoltarea unui produs software, aceasta metoda devenind una din cele mai importante metode deprocesare in prelucrarea datelor. Intuitia si inspiratia, talentul celui care cauta o solutie pentru o problema data au un rol important in alegerea unei metode de rezolvare pentru acea problema. utili/.and in mod creativ metodele evidentiate in dezvoltarea algoritmilor.

34

BA7.l-.LK INI-ORMA T1CI1

('opilohil 1 - Algoritmi

6. Complexitatea problemelor i a algoritmilor


Un algoritm este o procedura de calcul bine definita care primete o anumitS valoare sau o multime de valori ca date de intrare i produce o anumita valoare sau multime de valori ca date de iesire sau, altfel spus, un sir de pasi care transforms datele de intrare in date de iesire. Un algoritm poate fi privit ca un instrument de rezolvare a problemelor prin descrierea etapelor ce fac trecerea intre intrare i ie?ire. In practicS, .existenta unui algoritm reprezintS doar punctul de plecare, deoarece o anumita problema poate necesita un timp de rulare foarte mare pe cele mai performante calculatoare cunoscute. Se pune astfel problema scrierii unui algoritm eficient pentru rezolvarea unei probleme si deci de a analiza un algoritm din acest punct de vedere. Pentru compararea algoritmilor de rezolvare a unei probleme date se pot folosi criterii axate tie pe caracteristicile structural ale algoritmilor fie pe resursele consumate in timpul executiei. In primul caz ne bazam pe informatii cu caracter static, independente de datele de intrare (lungimea algoritmului, numarul maxim de secvente repetitive sau de apelari recursive). In al doilea caz, analiza complexitatii are un caracter dinamic, deoarece exprima costul executiei algoritmilor in functie de dimensiunea datelor prelucrate. Analiza unui algoritm inseamnS prevederea resurselor pe care algoritmul le solicits, intelegand prin resurse memoria, latimea benzii de comunicatie. portile logice, timpul de executie necesar algoritmului fund de regula cea mai importanta dintre ele. Inainte de a analiza un algoritm, trebuie sa dispunem de un model al tehnologiei de impleinentare care urmeaza sa fie folosita, al resurselor acesteia si sa putem estima costurile corespunzatoare. Analiza, chiar si a unui singur algoritm. poate 11 o incercare dificila. fiind necesare cuno$tinte de combinatorica, teoria probabilitatilor. experienta in calculul algebric si abilitate in a identifica cei mai important! termeni dintr-o expresie. Putem presupune ca tehnologia de impleinentare este un model de sistem de calcul generic cu un-procesor, cu memorie cu acces aleator (RAM) si ca algoritmii vor fi implementati ca programe pentru calculator. In acest model, instructiunile sunt executate una dupa alta, fara operatii concurente. Comportarea unui algoritm poate depinde de datele de intrare, iar in procesul de analiza a unui algoritm trebuie sa putem exprima aceasta comportare in formule simple, usor de inteles, simplu de scris si de utilizat, care sa puna in evidenta principalele resurse necesare unui algoritm si sa suprime detaliile superflue.

Importanta studiului eficientei algoritmilor a fost pusa in evid prin lucrarile lui A. Cobhain si J. Edwards (1964). In general, timpul de executie necesar unui algoritm create o dat dimensiunea datelor de intrare. De aceea trebuie sa definim cu mai IT precizie notiunile de timp de executie si de dimcnshine a datelor de intrar Pentru multe probleme, cea mai naturals masura este numaru obiecte de compun datele de intrare, pentru altc probleme, ca de exer inmultirea a doi Tntregi, masura poate fi numarul de bid necesari pe reprezentarea datelor de intrare in notatie binara. Pentru fiecare prob studiata, trebuie precizeaza masura utilizata pentru dimensionarea datek intrare. Timpul de executie al unui algoritm pentru un anumit set de dat intrare este determinat de numarul de operatii elementare sau de executati. Este util sa definim notiunea de pas astfel incat acesta sa dep cat mai putin de calculator. Pentru executia unei linii de pseudocod este necesara o di constants de timp. Vom presupune ca fiecare executie a liniei / con: timpul d. unde c\ este o constants (punct de vedere in conformitat modelul RAM). Exemplul 1. Algoritmul de sortare prin insertie Vom da un exe de analiza a acestui algoritm reprezentat in pseudocod. Pentru fif instructiune se considers costul de timp si un numar care reprezintS de ori aceasta este efectiv executata. Pentru fiecare / = 2, 3,..., n, unde lungime[S], vom nota cu / / numarul de executii ale testului atdt timp pentru valoarea fixatS /. Sortare-prin-insertie (S): timp 1: pentru/ < - 2, lungime[.Sr] executa n 2: cheie S(j] n-\ 3: {Insereaza S\j] in sirul sortat S[ 1../-1 ]] n-1 4 :/<-_/-1 , 7 -i 5: atat timp cat, />0 si S[/]>cheie executa

z; ,',

7 : / < - /-I
Timpul de executie al algoritmului este suma tuturor timpik executie corespunzatori fiecarei instructiuni executate. O instructiune consuma timpul c, pentru executie, daca este executata de n ori va con cu c, n la timpul total de executie. Nu acelasi lucru se intampla atunci

!6

HA/.l-.l.l:

IN1-ORMATK'II

I - Algoritrni

.57

instructiunea se refera la alte resurse (daca se refera, de exemplu la m euvinte din memorie si este executata de n ori, nu consuma in general mn cuvinte de memorie). Calculam Tn . timpul de executie pentru sortare-prin-insertie, astfel:

Timpul de executie necesar procedurii Sortatre-prin-insertie depinde de datele de intrare, atat de marimea datelor cat si de ordinea in care sunt date. Cazul eel mai favorabil este atunci cand vectorul de intrare este deja sortat. Sa presupunem ca procedura ordoneaza datele in ordine crescatoare. Pentru fiecare j = 2,3,..., n gasim S\i]<cheiem linia 5, cand / are valoarea initiala _/-!. Rezulta t. = 1 pentru y = 2,3,..., si timpul de executie in cazul eel mai favorabil este: Tn = c,n + c2 (n - l)+ c 4 (n -\)+cs (n - 1)+ cs(n ~ l)
+c

datele respective. Pentru anumiti algoritmi, cazul eel mai defavorabil apare destul de free vent (de exemplu, cand se cauta intr-o baza de date o infonnatie absenta de fapt din acea baza de date). Chiar si ceea ce se numeste caz mediu este, de multe ori, aproape la fel de defavorabil ca si cazul eel mai defavorabil. Calculand timpul necesar pentru a determina pozitia din subsir S[] . . j - \ ] in care inseram pe S[f\, pentru a sorta prin insertie un sir dat, constatam ca trebuie verificate, in medic, jumatate din elementele subsirului S[\..j-i], deci t] - //2. Timpul de executie mediu va fi tot o funclie patratica de n, la fel ca in cazul eel mai defavorabil. In cazul analizat am ignorat costul real al fiecarei instructiuni, folosind constantele c, pentru a reprezenta aceste costuri, iar in final am renuntat si la explicitarea costurilor abstracte c,-. Mai mult decat atat, putem considera doar tcrmenul dominant an al expresiei an +bn+c, deoarece ceilalti termeni sunt relativ nesemnificativi pentru valori mari ale lui n. In analiza unui algoritm este important de stabilit rata sau ordimil de crestere a timpului de executie. Vom spune, de exemplu, ca sortarea prin insertie are un timp de executie in cazul eel mai defavorabil de (') (teta de n patrat). In general vom considera un algoritm ca fiind mai eficient decat altul in functie si de acest criteriu. O astfel de evaluare ar putea fi incorecta pentru date de intrare de dimensiune mica, dar in cazul unor date de dimensiuni foarte mari, un algoritm de tipul &(n ), de exemplu, va fi executat in cazul eel mai defavorabil mult mai repede decat unul de tipul &(n3). Cand datele de intrare sunt suficient de mari, astfel incat ordinul de crestere a timpului de executie este relevant, se studiaza eficienta asimptotica a algoritmilor. Altfel spus, se studiaza modul de crestere a timpului de executie al algoritmului in functie de cresterea dimensiunilor datelor de intrare, in cazul limita cand dimensiunea datelor de intrare creste nemarginit. De regula, un algoritm asimptotic mai eficient va fi cea mai buna alegere. cu exceptia cazului cand datele de intrare sunt de dimensiune mica. Notatiile pe care le utilizam pentru a descrie timpul asimptotic de executie al unui algoritm se definesc cu ajutorul unor functii al caror domeniu dc definilie este multimea numerelor naturale. Astfel de notatii sunt convenabile pentru a descrie functia timp de executie Tn in cazul eel mai defavorabil, functie definita uzual pentru dimensiuni intregi ale datelor de inlrare. Cu toate acestea, se utilizeaza notatia asimptotica atat extinsa la domeniul numerelor reale, cat si restransa la o submultime a multirnii numerelor naturale.

Acest timp de executie poate fi exprimat sub forma an + b pentru anumite constante a si b care depind doar de timpii de executie c,, fiind astfel o functie liniara de n. Daca datele sunt date in ordinea inversa celei cerute, sa presupunem in ordine descrescatoare, obtincm cazul eel mai defavorabil. In aceasta situatie trebuie sa comparam toate elementele S\J] cu toate elementele din subvectorul deci pentru Cum ~ 1 ?i 2 - ( ( y ~ 0 = ~~ procedurii, in acest caz, este: T = c W+ c
+

j rezulta ca timpul de executie al

ci.-l

-l c., H- c\ +

n - (c2

I impul Tn se poate exprima sub forma an2 + bn l c- (functie patratica de n) uiide constantele a, b, c depind de costurile c, ale instructiunilor procedurii. Pentru un anuinit algoritm, timpul de executie al unui algoritm este acelasi pentru aceleasi date de intrare. In general, in analiza unui algoritm se estimeaza timpul de executie in cazul eel mai defavorabil, relativ la date de intrare de o dimensiune constanta /?, acesta fiind o margine superioara a timpului de executie pentru

Capitol ul 1 -Algoritmi

38

RAZE1.E1NFORMAT1CU

Definitii. 1. Pentru o functie data g(n), <d(g(n)) este multimea de functii (g(n)) = {/(n), cu proprietatea ca exista constanlele pozitive c,, r > si no. astfel meat 0< ctg(n) < f(n) < c2g(n) pent \?n > n0}. 2. Spunem ca o functie f(n) apartine multimii Q(g(n)), daca exista constantele pozitive c, si c? astfel Tncat, pentru n suficient de mare, sa fie indeplinita conditia din definitia lui (g(n)). Desi (g(n)) este o multime, putem nota prin ,f(n) = @(g(n))" faptul caf(n) apartine acesteia.
A

acces direct coincide cu clasa problemelor rezolvabile in timp polinomi ajutorul masinilor virtuale Turing). Clasa problemelor rezolvabile in timp poiinomial are c proprietati de inchidere interesante, deoarece polinoamele sunt in pentru operatiile de adunare, inmultire si compunere (daca iesirea algoritm poiinomial este considerata intrare pentru un alt alg poiinomial, algoritmul rezultat va fi unul poiinomial). De asemenea, da algoritm poiinomial apeleaza de un numar constant de ori sub, polinomiale, atunci, algoritmul rezultat este poiinomial. Spunem ca un algoritm ruleaza in timp exponential daca ace; ruleaza in timp poiinomial. Pot fi necesari 2", 3", n", sau n! pasi pe prelucra date de intrare de lungime n. Pot aparea functii ca n "K ", c; sunt in mod obisnuit privite ca functii exponentiate; algoritmii expor au ordinul de crestere de tipul (2"), G(3"), &(n") &(n!) etc. Algoritmii care ruleaza in timp poiinomial sunt mai eficienti ordinul de crestere mai mic decat cei care ruleaza in timp exponent!; ilustrat prin tabelul din figura 16.
1 inuli.i de complcxitatc Uimcnsiunca datclor: n
10 20 30 40 50

n,,

fig. 15

e<)
Figura 15 ofera o imagine intuitiva a functiilor f(n) si g(n), in cazul in care f(n) = @(g(n)). Pentru toate valorile lui n aflate la dreapta lui n0, valoarea \uif(n) este mai mare sau egala cu csg(n) si mai mica sau egala cu C2g(n). Spunem cag(n) este o margine asimptotic tare pentru f(n). Spunem ca un algoritm ruleaza in limp poiinomial daca exista doi intregi fixati a si k. astfel incat atunci cand datelc de intrare au lungimea n, calculul sa fie efectuat in eel mult an* pasi. pentru orice valoare a lui n. Cu alte cuvinte, ordinul de creslere pentru un astfel de algoritm este de tipul (-)( ). Aceste probleme sunt in general privite ca accesihile. Putem lua in considerare urmatoarele fapte ce sprijina aceasta afirmatie: 1) O problema cu ordinul de complcxitatc Q(nk), pentru k foarte mare, poate fi considerata ca fund inaccesihila. desi in practica rareori apar probleme cu algoritmi ce depind de o functie polinomiala de un grad atat de mare. 2) Daca o problema poate fi rezolvata in timp poiinomial utilizand un anumit model de calcul, dc regula, aceasta va putea fi rezolvata in timp poiinomial folosind orice alt model de calcul (de exemplu, clasa problemelor rezolvabile in timp poiinomial cu ajutorul masinilor seriale cu
0(A72)

0,00001 s 0,0001 s
0,001 s 0,001 s

0,00002 s 0,0004s 0,008 s


1,0s

0,00003 s 0,0009 s 0,027 s


17,9 nun
6,5 ani

0,(XXXMs 0,0016s 0,064s 12,7/ilc 3X55 sccolc

0,00005 s 0,0025 s 0,125s


3 5.7 ani 2 108 sccolc x

(),000i 0,003
0,216

(-)( n" )
B(2")

366s

0(3")

0.059 s

58 minute

1,3

103sc

16

Examinand acest tabel in care apar timpi de rulare polinc exponential!, se constata diferenta dintre problemele rezoh-abile poiinomial si cele in timp exponential. Se presupune ca procesorul c efectucaza o operatic fundamentals in 0,000001 secunde. Pentru o data a datelor si o anumit a functie dc complexitate (care descrie de] timpului de calcul de lungimea datelor), tabelul indica timpul efectuarii calculului. Se remarca cresterea spectaculoasa a timpil doua functii exponentiale. Pentru n = 50 si functia de complex! timpul necesar calcului depaseste actualele estimari ale varstei Un iar pentru n = 60 este aproximativ de 100 000 de ori mai lung.

10

Algorilmi

11

In ca/,ul problemelor in timp polinomial, cresterea dimensiunilor problemei nu diminueaza drastic posibilitatea rezolvarii intr-un timp acceptabil, ca in cazul problemelor rezolvabiJe in timp exponential. Nu toate problemele pot fi rezolvatc in timp polinomial. Exista probleme care nu pot fi re/.olvate de nici un calculator, indifcrent de timpul acordat pentru gasirea unci solutii Numim o problema accesibila, daca ea este rezolvabila in timp polinomial si inaccesibila daca ordinul sau de complexitate depinde de o functie care nu este polinomiala. Problemele de acest tip formeaza o clasa interesanta de probleme, asa-numitele probleme NP-complcte. Pana in prezent, nu s-a descoperit un algoritm polinomial pentru rezolvarea unei astfel de probleme, dar nu s-a demonstrat ca exista o limita inferioara pentru timpul (necesar rezolvarii acesteia) ce nu poate fi exprimat polinomial. Problema P ^ N P reprezinta, inca de la formularea in 1971, unul dintre cele mai interesante subiecte deschise in algoritmica teoretica. Se afirma ca problemele NP-complete sunt inaccesibilc. Daca s-ar gasi o rezolvare polinomiala pentru o problema NP-completa, atunci poate fi gasit un algoritm polinomial pentru rezolvarea oricarei alte probleme din aceasta clasa. Pentru a demonstra ca o problema este NP-completa, trebuie dovedita inaccesibilitatea sa. Un mare numar de probleme interesante, care la prima vedere nu par mai dificile decat o sortare, sunt de fapt NP-complete. Ca o ilustrare a modului in care notiunile de mai sus sunt folosite in clasificarea problemelor si algoritmilor reali, vom analiza o problema importanta din domeniul comercial si economic. Exemplul 2. Problema comis-voiajorului. Sa presupunem ca un comis-voiajor trebuie sa viziteze mai multe adrcse diferite. Cum trebuie sa procedeze astfel incut sa ajunga la toate adresele, parcurgdnd un drum cat mai scurt? Fiind cunoscute distantele dintre orice doua adrese care trebuie vizitate, si implicit costurile distantelor respective, care este drumuJ economic pentru vizitarea tuturor adreselor? O abordare simpla a acestei probleme consta in determinarea tuturor drumurilor posibile, calcularea distantei totale pentru fiecare si alegerea drumului core.spunx.ator celui mai mic cost. Se obtine cu siguranta solutia, ceea ce arata ca problema poate fi rezolvata printr-un algoritm, deoarece procedura indicata poate fi, in principiu. usor programata pe un calculator. Insa chiar pentru un numar redus de adrese, numarul drumurilor posibile devine prea mare. Pentru n adrese, exista n! itinerarii posibile. Cum functia n! creste mai repede dccat 2"sau3", pentru a detennina toate drumurile

posibile este necesar un algoritm in timp exponential. Pentru dear 10 adrese exista 10! 3 628 800 drumuri posibile. Ce altceva am putcm incerca? Putcm imagina diferite strategii, care pot functiona bine in anumitc situatii particulare, dar care nu ofera o solutie generala a algoritmului. Mai mult de 300 de lucrari publicate de la enuntarea ei, in 1930, de catre matematicianul vienez Karl Menger, problema comisvoiajorului a rezistat tuturor incercarilor de a se gasi o solutie generala. Faptele matematice de pana acum sugereaza mai degraba inexistenta unui algoritm eficient pentru a o rezolva. In practica, problemele care implica drumuri intre orage, pot fi rezolvate, in timp ce situatiile artificiale imaginate pot fi de o mare dificultate. Fara sa intram in detain, putem preciza ca pentru anumite cazuri particulare s-au construit solutii ale problemei comis-voiajorului, utilizand in implementare o serie de strategii pentru cresterea perfbrmantei algoritmului (micsorarea a timpului de executie), si rezultate matematice care simplifies algoritmul. Utilizand metode de programare clasice (metoda backtraking i metoda greedy) se construiesc algoritmi de rezolvare (de complexitate &(n!)), comparabili intre ei. Principiul de rezolvare ramane in mare acela^i, pentru cazul eel mai defavorabil, si in cazul unui numar foarte mare de adrese, ele functioneaza asemanator, complexitatea fiind aceeai. Utilizand metoda progrumarii dinamice se obtine o complexitate &(2"), de asemenea exponentiala. numai ca, pentru un numar mai mare de date de intrare, acest algoritm furnizeaza rezultatele incomparabil mai rapid dccat algoritmii precedent!, cresterea complexitatii fiind mai lenta. Se poate intampla ca in teorie un algoritm sa ruleze in timp exponential si sa fie considerat inelicient, dar in practica, aplicat unor date reale, sa fie chiar performant. 1 impul exponential apare in cazul acesta numai pentru anumite tipuri de date cu care, de regula, nu ne intalnim. Problema comis-voiajorului se incadreaza in aceasta categoric, metodele existente de rezolvare comportandu-se bine pentru datele reale. Pentru a analiza eficienta unui algoritm relativ la costul de executie nu existi niste formule generale, intuitia si experienta jucand un rol la fel de important ca si rationamentul. De exemplu. in algoritmul de calcul al valorii numerice unui polinom intr-un punct se obtin timpi diferiti pentru doua polinoame de acelasi grad, daca primul are aproape toti coeficientii egali cu 0 iar al doilea polinom nu are nici un coeficient nul. Aceasta abordare a problemei poate fi utila in evidentierea complexitatii intrinsece a unei probleme. In alte cazuri este util sa studiem comportamentul algoritmului in cazul mediu. Acest lucru poate fi realizat calculand costul algoritmului pentru diferite configuratii ale valorilor de intrare, si determinand succesiv

42

KA7.El.T-. 1N1-ORMA1!('//

costul executiei diferitelor instructiuni ale programului, corespunzator configuratiilor de intrare. in analiza unui algoritm este important studiul comportamentul functiei care descrie costul de executie al algoritmului respectiv, odata cu cresterea dimensiunii intrarilor. Este evident ca in cazuri particulare este posibila o analiza mai fina in care sa apara si constantele care determina cu precizie dimensiunea maxima a problemei astfel incat aceasta sa fie acceptabila pe o masina data, fiind limitata de memoria acestei masjni 5! de timp. Pentru a descrie comportamentul asimptotic al functiilor, vom defini i alte notiuni importante in studiul analizei unui algoritm.
i

problema are o delimitare .superioara a complexitatii deO(.*s'v7)) daca exis un algoritm de aceeasi complexitate care re/.olva problema. In general, pentru caracterizarea complexitatii unei probleme, cauta cea mai mica functie g astfel incat problema data sa iie

complexitate f(g()). Notatia Q(g(n)) este utilizata pentru a exprima o delimit inferioara a complexitatii unei probleme. Astfel, pentru a caracK-riza in n precis complexitatea unei probleme, se incearca gasirea celei mai n functii g, pentru care sa se poata afirrna ca problema are complexitj

marginita inferior de Q(g()). Un algoritm are un cost de executie Q(g(n)) atunci cand cantit; maxima de resurse 7 n , necesare pentru executarea algoritmului (c

Definitii 1. f(n)-O(g(n'))

daca exista doua constante pozitive c si no, astfel incat

|/()( < c|g(n)| pcntru Vn > 0 (/creste eel mult atat cat creste g ); 2. /() - Q(g(tt)) daca exista doua constante pozitive c si no astfel incat |/(/i)| ^ cjg()| pcntru Vn > ng (/'creste eel putin atat cat creste g); 3. /() = o(g(n)) daca lim 1-^ = 0 (/'creste mai incet decat g);
n M g ( W )

dimensiune a intrarilor egala cu ri), verifica Tn = fl(g(tt)). Notatia (g(/i)) exprima o egalitate intre comportamei asimptotice a doua functii. Observam

Notatiile o 51 = - constituie rafinari ale notatiei O i O , cai permite deteniiinarea cu o precizie mai mare a randamentului asimpto unei functii (in cazul notatiei o) sau a rolului constantelor (in cazul ). Exercitii 1. Care dintre utmatoarele afinnatii sunt adevarate?
I) n2 e O("3) ;/; r? G O(n") in) 2"" e <7(2") iv) (n-* \)\ c O(n\) 1. Demonstrati ca daca

4. /() g(n) daca lim " * g(n) ordin inferior).

1 (/'si g sunt egale, mai putin termenii de

Notatiile O(g(n}\ Q(g()), 0(g()) desemneaza clase de functii. Observatie. In aceste notatii, /()= 0(g()) daca exista trei constante pozitivc c/, o. o, astfel incat n 5 /(") - <-' ? tt(n)) pentru pentru Vn >n n gcresc cresc a la fel ). )5 n> s g . nn (/'si g(n)\ In cazul notatiei ()(g(n)), o scriere corecta ar fi /()e. O(g()) ), deoarece
estc

polinomul

P{x)-a0+a}x + ...

clasa functiilor /; care cresc eel mult atat cat g(n). De exemplu, o(n) a o(n ). Un algoritm are un cost (k- cxccutie sau compk'xitutea O(g(n)j corespunzatoare unei resurse date, daca cantitatea Tn de resurse suficienta pentru executia algoritmului (cu o dimensiune a intrarilor egala cu // ), verifica egalitatea Tn - O(g(n)). In mod analog, aceea?i notatie poate fi utilizata pentru a exprima o delimitare superioara a costului de executie al unei probleme. Astfel, o

verifica relatia P(x)=o(x"), verifica de asemenea i relatia P(x)~o(x"' ) 3. Determinati complexitatea algoritmului de ordonare vector cu n componente, folosind ca unitate de masura numz comparatii dintre elementele vectorului. 4. FiePy/i) un polinom de gradul m. Precizati care afirmatiile urmatoare este adevarata:
2) r(x)=0(x").

I
44

BAZELE1WORMA '11C 11

( 'ti/iilolii! I - Algorilmi

IS

3) Problema complexitatea Q(n log n). 5.

de

ordonare

unui

vector

are

Demonstrati ca f(n) = 0fe ()) O

6. Fie dat un polinom J'(x) de gradul n. Demonstrati ca P(x) = &(x"). 7. Aratati ca problema de ordonare a unui vector are complexitatca Q(n log n). 8. Pentru un polinom P(x) de gradul n aratati ca P(x) = o(xntl) si P(x)*anx". 9. Estimati complexitatea algoritmului de inmultire a doua matrici de dimensiune n x n . 10. Demonstrati ca relatia "eO" este Iranzitiva: daca/e 6>(g) si g e <9(/7), atunci /e 6>(/;). Deduced de aici ca daca g e. O(h), atunci 0(g) c 0(/0. 11. Fie/, g : N - R* . Demonstrati ca: a. /) 0(/) = 0(g) 0/6 000 si g e 0(/) /O 0(/) c <9(g) <o/e 0(g) si g e 0(f) b. Relatia binara "<" definita prin /< g daca si numai daca O(f) c O(g) este o relatie de ordine partiala in multimea functiilor definite pe N cu valori in R* . c- 0(f+ g) = C;(max(/, g)). d. / e 0 ( g ) o g e n ( / ) e. C;(/) = (;(g) <=> Q (/) = (g) 0/ e 0 (g) 12. Gasiti doua functii /, g : N ~> R" astfel incat / ' <i ()(g) si g ^ O(/). Indicatie:/() = , g(w) - 1<!>in ".

7. Structuri iterative. Structuri recursive


In aceasta sectiune vom ilustra atat .slruclurile iterative cat si structurilf recursive prin cateva exemple de algoritmi pentru a pune in evidenta in fiecare caz cateva caracteristici ale acestor Structuri. Strvcturile iterative sunt Structuri in care anumite secvente de instructiuni se repeta ciclic. Toti algoritmii prezentati pana acum in acest capitol sunt exemple de algoritmi iterativi.

Exciiiphil 1. Algoritmul ile cautare secvenfiala. Fste un algoritm prin care se delermina daca o valoare data apartine sau nu unei lisle date initial. Presupunem ca elementele unei lisle numerice sunt ordonate crescator. Elementele pot fi secvente dc caractere ordonate lexicografic, nume ordonate alfabetic sau valori numerice ordonate cu relatia de ordine naturala. Daca ,,valoarea'' data initial va ti gasita in lista, cautarea este cu succes, altfel conduce la esec. Algoritmul poate ti reprczentat astfel: I) Pasul l:citeste, /[1J,../|//] ; Pasul 2: / := /; Pasul 3: element := /[/'] ; Pasul 4: cat timp [(valoare > element) fi (i < n )] executa [/ := ; + /; mergi la Pasul 3 ]; Pasul 5: daca [valoare = element] atunci [scrie ('succes'' )] altfel [scrie ('eyef')] ; unde s-a pornit de la premisa ca exista eel putin un element in lista, iar lista este structurata ca vector. Algoritmul prezentat in continuare, in pseudocod, prevede si situatia cand lista este vida, iar elementele sunt considerate articole ale unei liste, algoritmul fund mai general. II) procedure cautare_s (lista, valoare) if [lista e vida] then [scrie(' esec')] else [selecteaza un articol din lista si anume element] while [ valoare Oelement si mai sunt articole in lista neluate in considerare] do [selecteaza urmatorul articol al listei, si anume element, ce urmeaza a fi testat] if [valoare = element] then [scrie'succes'] else [ scrie 'esec' ] Utilizarea unei Structuri ciclice while- do sau repeat - until otera un grad mai mare de flexibilitate. Corpul ciclului (secventa de instructiuni) ce urmeaza a li executat cat limp o conditie este satisfacuta, respectiv pdna cand o conditie va fi indeplinita, este introdus in program o singura data. Testarea conditiei este necesara pentru a incheia structure ciclica. Datele ce intervin in corpul ciclului an anumite valori, date inaintea instructiunii de ciclare; acestea se modifica in corpul ciclului si astfel, la un moment dat, in urma verificarii conditiei, proccsul de ciclare ia sfarit. Structurile recursive realizeaza procesele repetitive fara utilizarea ciclurilor, ca in ca/.iil structurilor iterative. Pentm multe probleme solutia rccursiva este mai naturala decat alternativa ei iterativa. Chiar si pentru cei nefamiliarizati cu recursivitatea, unele exemple pot parea mai usor de inteles

I - Algorilini
46

ISA//:/,/.

INI''ORMATJCJJ

else (Sclecteaza mijlocul listei si atribuie ac articol lui element ]; if [valoare < elem] then [apeleaza procedura cautare b]; if [cautarea are succes] then [scrie" succes'] else [scrie'esec'] else if [valoare > elem] then [apeleaza procedura cautare b in a doua juma

si se remarca legatura dintre ele. Sc pot pune in evidenta o serie de avantaje ale utilizarii recursivitatii. Procedurile recursive sunt relativ usor de analizat si pentru a le determina performanta. Analiza acestora conduce la relatii de recurenta, dintre care multe pot fi usor re/.olvate, demonstratia prin inductie fund des utilizata. Procedurile recursive sunt ilexibile, in sensul ca este relativ usor sa se transforme o procedura generala intr-una specifica. Aceasta este de multe ori o tehnica de proiectare utila: tnai intai se scrie un program pentru o problema care reprezinta o generalizare a problemei reale date si apoi se adapteaza acestei probleme concrete. Exista totusi si unele dezavantaje ale recursivitatii. Procedurile recursive pot sa ruleze mai incet decat echivalentele lor nerecursive. Un compilalor poate implennenta deficitar apelarile recursive (aproape toate compilatoarele Pascal gestioneaza recursivitatea bine iar costul este in general mic, eel mult 5% - 10%). Procedurile recursive necesita mai mult spatiu decat echivalentele nerecursive. (Fiecare apelare recursiva implica crearea unei inregistrari de activare iar, daca adancimea recursiei este mare, acest spatiu poate sa se mareasca considerabil. La procedurile mai complexe, insa adancimea este mai mica). Neajunsurile legate de timp si spatiu pot fi eliminate uneori destul de simplu de catre un compilator performant. Recursivitatea poate fi liniara, cand procedura contine o singura apelare recursiva, recursie binara, cand se fac doua apeluri recursive, si recursie n-ara. cand in procedura exista un numar nedefinit de apeluri recursive . Exemplul 2. Algoritmul de caviare binara. Acest algoritm recursiv consta in fixarea unei pozitii curcnte, a primului articol din cea de a doua jumatate a listei (punandu-se in evidenta asttel doua parti ale listei), si in a determina daca articolul specificat este in prima pane sau in cea de a doua a listei, apoi a continua cautarea, in acelasi mod, in xnhlisia elementelor ailate inainte de (sau dupa) elemcntul situat la mijlocul sublistei in care se atla articolul. Aplicand asupra unei zone din ce in ce mai restranse de cautare aceeasi tehnica, in cele din urma procesul se sfarseste tie gasind articolul in lista, cautarea fiind incheiata cu succes. fie negasindu-1, cautarea tiind soldata in acest caz cu csec. Impartirea listei de tiecare data in doua lisle mai mici este motivul pentru care acest algoritm se numeste de cautare binara. Algoritmul, in pseudocod se poate scrie astfel: procedure caulare h | lista, valoare] if [lista c vicla | (lu-n |scrie 'e^ec']

a listei]; if [cautarea are succes] then [scrie'succes'] else [scrie 'eecv] Spre deosebire de algoritmul de cautare secventiala, in algoritmi cautare binara, fiecare pas al repetarii reprezinta o activitate subordc pasului anterior. Aceasta tehnica, recursivitatea, da si dcnui algoritmului ce o utilizeaza. Este ca i cum in executia unui astf algoritm ar exista mai multe copii ale algoritmului, ce se mai num< activari, ce apar si dispar in timpul procesului de executie, de fiecare fiind acliva doar una, celelalte aflandu-se intr-o stare latenta pa

momentul in care sunt, pe rand, activate. Controlul asupra structurilor recursive se realizeaza prin interr acelorasi tipuri de operatii ca si in cazul structurilor iterative. Astfe necesar sa se atribuie valori variabilelor ce intervin in procesul re inaintea executiei acestuia, valori care se moditica in timpul procesi de asemenea, sa existe o conditie care sa permita, prin testarea ci, (

procesului recursiv. Daca nu este indeplinita o anumita conditie de incheiere, procedura atribuie unei activari sarcina de a rezolva o problema al date sunt mai aproape de a indeplini acea conditie decat problema ]

trebuie sa o rezolve activarea curenta. Daca este indeplinita conditia de incheiere, atunci procesul e continua pe o anumita ramura fara a continua procesul recursiv, astl activitatea curenta nu va crea alte copii. O activare latenta isi poate c executia, indeplinindu-si sarcina si permitand unei alte activari sa pana cand in final, procesul executiei tuturor activarilor se incheie problema initiala este rezolvata.

Exemplul 3. Turnurile Jin Hanoi. In 1883 matematicianul francez Eduard Lucas a propus o ] devenita celebra: Se spune ca Brahma a fixat pe pamant trei tije de d pe una din ele a aezat 64 de discuri de aur de diametre diferite inc discul eel mai mare, deasupra tuturor fiind aezat eel mai mic. Brahn

48

49

o manastire, cerandu-le calugarilor sa mute toate discurile pe o alta tija. mutand pe rand cate un singur disc de pe o tija pe alta. cu conditia ca niciodata sa nu aseze un disc mai mare dcasupra unuia mai mic. Lcgcnda spune ca sfarsitul lumii va fi atunci cand calugarii vor termina lucrarea. Presupunand ca in fiecare secunda s-ar muta un disc; lucrand neintrerupt, celc 64 de discuri nu pot fi mutate nici in 500 de miliarde de ani. Problema este cunoscuta in literature de specialitate sub numele de Turnurile din Hanoi. In esenta sunt date trei tije verticale, pe una din ele fiind plasat initial un turn format din n discuri (inele) de diferite diametre, fiecare asezat deasupra unuia de diametru mai mare. Figura 17 ofera un exemplu simplu cu un turn de trei inele aflat pe prima tija.

Solutia problemei cc consta in mutarea unui turn din trei inele consta in efectuarea opcraliilor urmatoare: (a) - muta 1 pe 2; muta 1 pe J; muta 2 pe 3 (b) - muta 1 pe 2 (c) - muta 3 pe 7; muta 3 pe 2; muta 1 pe 2 unde prin 1, 2, 3, am notat primul, al doilea si respectiv al treilea disc, si prin 7, 2, 3, prima tija, a doua si respectiv a treia. O procedura care genereaza o asemenea solutie este urmatoarea: a) varianta iteraliva a rezolvarii problemei: procedure hanoil (n : natural); [p\,p2, p3 pot lua valorile 1, 2 sau 3] procedure h (k : natural; pl,p2,p3 ); i f k = 1 then [scrie 'muta', p\, 'pe', p2] else [apeleaza procedura / / ( k - I , pi, p2,/?3)]; [scrie('muta ',/->!, 'pe',/>2); [apeleaza procedura h(k-\,pi,p2,pi)]', [apeleaza procedura h(n, 1, 2, 3)]; Am notat cu pi, p2 si respectiv p3 atat discurile cat si tijele (De exemplu, ,,muta pi pe p2" inseamna ,,muta discul pi pe tija/^2"). Analiza algoritmului de rezolvare a acestei probleme din punct de vedere al complexitatii sc poate face astfel: Fie Tk este numarul operatiilor necesare pentru rezolvarea unei probleme de marime k. Cazul definit in mod explicit apare atunci cand \b + 2Tk , k + \ k-l . Astfel are loc relatia: 1\ - \ unde a reprezinta un test [a k -- 1 (k-l) si operatiile implicate in scriere, iar b reprezinta un test ( & = 1), operatiile implicate in scriere si doua proceduri de apelare. fiecare din ele implicand, la fel ca apelarea in sine, o scadere (k-l) si alocarea a patru parametri. Rezolvam relatia de recurenta prin substitute: Tn = b -i 27;, , - b + 2(b \ Tr .2) ^ b + 2h -i 2 2 Tn 7 --- b f 2b + 2! (b + Tn_,) = (l i 2 f 2 2 ) > - i 2 3 f Tn v... = (l + 2 t - 2 2 +... I 2" 2)-> + 2" ' 7j ^ ( l + 2 i - 2 2 -i ...+ 2" ']b ^ 2" }a -2" '(a-\-h}-b Vom folosi aceasta formula pentru a numara operatiile elementare. Pentru a avem 1 f M operatii, unde M este numarul de operatii implicate in scriere; pentru b avem o operatic (pentru test) + M (pentru scriere) + 10 (pentru doua apelari) -f 2 (pentru doua scaderi) + 8 (pentru parametri), rezultand un total de 21 + M operatii. Astfel:

Fig. 17
Problema cere sa se mute turnul pe a doua tija, folosind a treia ca tija intermediara, cu respectarea conditiilor : 1) la fiecare pas se muta numai cate un singur disc; 2) un disc nu poate fi asezat niciodatii deasupra unui disc de diametru mai mic. Solutia problemei este exprimata intr-o forma recursiva astfel: i) Daca putem muta un turn de k inele de pe o tija pe alta, putem cu siguranta sa mutam un turn de k + 1 inele, a) mutand cele k inele de deasupra pe a treia tija, b) mutand ine/ul de baza direct pe cea de a doua tija. c) mutand turnul de k inele de pe a treia tija inapoi pe a doua. ii) Putem sa mutam usor un turn de un inel. Astfel, putem muta un turn dc /; inele pentru oricare valoare pozitiva n. In figura 18 este ilustrala solutia pentru cazul n =; 3.

(a)

(b)
Fig. 18

(c)

50 /; :-- 2 " ' ( l

HA7J-:U' INl-'ORMATK 7J

( 'apitohil I - Algorilmi

4. Desenati schemele logice pentru urmatoarele secventc de pseudocod : if a = 3 then if ft < 2 then c : = 7;
s: = 0 ; n : = 10;

Sunt exact 2"-/ mutari astfel Incat costurilc suplimentare ale procedurii de inai sus sunt de aproximativ 1 1 operatii elementare per miscare. b) varianta recursivd a rezolvarii problemei: procedure hanoi2 (n : natural); [p\ , p2, p3 pot lua valorile 1 , 2 sau 3] procedure h (k : natural; p\ , p2, p3 ); if k = 0 then {nimic} else [apeleaza procedura h(k-],pl,p3,p2)]', [scrie ('muta ',/>!, 'pe',^2); [apeleaza procedura h(k-\,p3,p2,p\J\', [apeleaza procedura h(n, 1, 2, 3)]; Utilizand notatii analoage (T^,a',b')ce\or introduse in analiza algoritrnului procedure hanoll, se obtine urmatoarea relatia de recurenta:
T'k= \

while .v < n do s : = K i- 2; x : = a; y : = b\ repeat x : = x + 1; y : = y - 1 until x > y. 5. Ce diferente sunt intre rezultatele obtinute in urma apelarii urmatoarelor doua proceduri, pentru / = 1: a) procedure alfa (/) if i <> 5 then scrie (/) ; alfa ( / + ! ) ; b) procedure beta (i) lfi<>5 then beta (i + 1); scrie (/). 6. Scrieti procedurile corespunzatoare schemelor din figura 15(a respectiv 15(b), utilizand structurile repetitive while - do si repeat - until.

\b' + 2T! . k*Q


k =0

[a

carei

solutie

este:

T' ^2"(a' + b')-b'

in
(b)

comparatie cu cea originate: 7"n -2'"l(a + b)-b. In termenii operatiilor elementare, a' este pur si simplu 1 iar A' este la fel ca b, adica 21 + M Facand substitutia obtinem: T'n = 2"(22 + A/)- 21 - M in comparatie cu: Tn = 2"(l 1 + A/)-21 - M . Pe masura ce costul lui M tinde catre 0, raportul T'n/Tn tinde catre 2 si pe masura ce M tinde spre oo, raportul tinde catre 1 . Observam ca alegerea punctului in care se opreste recursia poate afecta semnificativ performanta, sprc deosebire de recursia liniara, unde diferentele sunt in general neglijabile. Exercitii 1. Cate comparatii, in medic, sunt necesare pentru cautarea sccventiala si respectiv, pentru cautarea binara a unui element intr-o lista de lO.OOOdearticole? 2. Scrieti o versiune recursiva a algoritrnului lui Euclid. 3. Scrieti in pseudocod un algoritm recursiv care sa ordoneze o lista de n numere folosind un algoritm de ordonare a unei liste de n-\ numere.

(a)

7. Urmatoarea procedura descrie un algoritm recursiv. Specific; ce realizeaza aceasta procedura. procedure l\(n, i, j) i f / ; > 0 then [apeleaza procedura \\(n~\, i, 6 - / ' / ) ] : [scrie (/ "->"; ); [apeleaza procedura H(-1, 6-1-7,7)];

52

.I-; INFORM A IK'//

1 - Algoritmi

53

8. Eficienta i corectitudinea algoritmilor


Exigenta definirii algoritmilor pentru calculul functiilor sau, in genera), pentru rezolvarea problemelor din domenii matematice ce s-au dezvoltat in timp, a pus in evidenta proprietatile structurilor geomctrice, algcbrice, topologice, proprietati ce formuleazn cu precizie problemele date si pot conduce spre solutionarea acestora, A trecut mult timp fara sa poata fi definit exact conceptul de constructie a solutiei unei probleme. Incepand cu secolul XX, prin opera unor matematicieni ca David Hilbert, Kurt Godel, Kleene, Alan Turing etc., algoritmii sj regulile formale pentru definirea acestora au inceput sa fie privite ca obiecte importante de studiu prin utilizarea teoriei logice si a sistemclor formale. Asa s-a ajuns la definirea conceptului de recursivitate in anii '30, la caracterizarea claselor de runctii calculable si la evidentierea unor probleme care nu sunt rezolvabile in mod algoritmic. Aparitia calculatoarelor electronice a contribuit la relansarea teoriei calculabilitatii, furnizand noi motivatii si modele de calcul legate de calculatoare reale si de limbajele de programare, detenninand pe de alta parte o serie de cercetari asupra timpului i spatiului necesare unei masini pentru a efectua un anumit calcul. Dupa 1960, conceptul de complexitate a calculului a inceput sa fie inteles mai pro fund. Pe de-o parte, teoria complexitati relative a furnizat o dcfinitie ceva mai precisa a conceptelor: pasi de calcul, resurse necesare pentru executia unui program, clase dc functii calculabile intre anumite limite ale resurselor. Multe dintre rezultatele anterioare se refereau la modele particulare de masini si de limbaje de programare. Teoria complexitatii concrete s-a bazat pe caracterizarea complexitatii problemelor particulare, de interes practic, probleme de structuri algebrice, de multimi ordonate, de grafuri etc., si a dat nastere unor tehnici algoritmice pentru gasirea unor solup'i mai eficiente pentru problemele respective. In cadrnl acestor studii a aparut necesitatea de a identifica in mod clar clasele de probleme rezolvabile eficient prin intermediul calculatoarelor (adica probleme cu un cost ce creste in mod ,,rezonabil" odata cu creterea dimensiuniJor problemei respective). Aceste probleme au tost definite ca probleme acceptabile, iar conceptul de acccplabilitate a inceput sa reprezinte un al doilea nivel al construirii solutiei unei probleme. Din punct de vedere practic, daca o problema este algoritmic rezolvabila, are mare importanta ca solutia sa poate fi obtinuta in mod eficient.

Se poate constata, din analiza comparativa a doua metode de rezolvare a unei probleme. ca numurul dc operatii necesare rezolvarii problemei difera. De exemplu, considcrand algoritmii de cautare secventiala i de cautare binara prezentati anterior, al doilea este mai avantajos, iar modul de organizare al datelor avand de asemenea un rol important. In cadrul teoriei complexitatii sunt studiate tehnici de masurare a cficientei programelor. Verificarea programelor si cautarea unor tehnici eficiente de verificare constituie un domeniu important de cercetare, utilizarea metodelor logicii formale pentru demonstrarea corectitudinii programelor fiind una dintre directiile de abordare a acestei probleme. Pentru demonstrarea corectitudinii unui program, prcsupunem ca la inceputul executiei sunt indeplinite un anumit numar de preconditii. Se evalueaza apoi efectul propagarii in program a consecintelor acestor preconditii in urma executiei unor instructiuni. Astfel, in anumite puncte ale programului se identifica unele asertiuni obtinute pornind de la preconditiile programului si in urmand secvente de instructiuni pana in punctul respectiv. Daca asertiunea rezultata in acest fel in punctul final al programului corespunde cu rezultatul de iesire din spccificutie, spunem ca programul este corect. Tehnicile formale de verificare a programelor nu pot fi aplicate asupra sistemelor generale de prelucrare a datelor. Verificarea programelor numai pe anumite date de testare demonstreaza doar faptul ca programul functioneaza corect pentru aceste date si erorile programului pot sa nu fie descoperite.

CAPITOLUL 2

BAZELE ALGEBRICE ALE INFORMATION

1. Morfisme
l.l. ; Definitie. Fie b: X x X >X o operatic binara pe b': X'xX' >X' o operatie binara pe X\ wide X i X' sunt doua n oarecare. Consideram structurile (X,b} si (X',ti\ Numim morfisrr, (X,b) la (X',b'), o f\mctie/:(A',5) >(X',h') cu urm; proprietate: f(xby) = f(x}b'f(y), Vx, v c X . Am notat prin xfty co elementelor x i y din A' prin operatia binara /). Alttel spus,/este un r daca i numai daca diagrama urmatoare este comutativa:

A"xA"

b'

ceea ce inseamna ca f ob = 6'o( f x /): A' x A' ilej

undc (/x /)(.r,y) - (/(x), /(v))e A"'x.Y' pentru orice x , y e X . Pentru orice operatie binara b pe o multime A', aplicatia 1 x definita pe X este un morfism in sensul de

\x:(X,b)--+(Xtb).

56

HA '/.ELI: INI- <>RMA y icn


Putem deiini analog f :(X,u)

r'u'c <ilc informaticii

57

un

morfism

de

operatii

/v-are

Daca f : ( X , b )-------->(A',/V) si :(A",/V)------->(X",b") sunt doua morfisme, atunci compunerea g of este de asemenea un morfisrn. 1.2. Excmple de morfisme. Logaritmul : (R ' , j------->(.R,+ ) , pentru o baza oarecare. Fie M o multime finita si A o familie de submultimi ale lui M. disjuncte doua cate doua. Functia cardinal (#), care atribuie fiecarei submultimi X a lui A numarul elementelor submultimii X, satisface proprietatile care probeaza ca este morfism fata de trei perechi diferite de operatii binare corespunzatoare: reuniunea a doua submultimi din A si aciunarea numerelor reale, produsul cartezian a doua submultimi din A si vnmultirea numerelor naturale, si respectiv fata de operatia de exponentiere pentru multimi: Xr = { f \ f : Y ---- >X\.
(Y); H(XxY)=#(x)-#(Y);

~>(A''.M') ca liind o functie f : X -

> A" cu proprietalea ca

diagrama urmatoare este comutativa:

Fig. 3
A"'

sau altfel, (/ov)(x1,...,xn)= (\!'of"\x,,...,xn), pentru orice (*,,.,.,*) X". Prin definitie, un morfism f : ( X , z ) >(X',z'} de operatii zero-

are, unde z:\ >X, z':l >A" este o flmctie f: X- >A", cu proprietatea / oz = z' sau altfel spus, /(z(l)) = z'(l), 1.4. Definitie. Un morfisrn /:(A',a) >(A",a') este numit monomorfism daca el ca functie este injectie; este epimorfism daca el ca functie este surjectie; este izomorfism daca el ca functie este bijectie. Un moriism / :(X,a) - >(A',a) se numeste endomorjism; daca functia/este bijectie, atunci morfismul f:(X,a) >(A',a) se numeste autornorfistn.

Cand ambele operatii sunt de aciunare (inmultire), morfismul se numeste aditiv (multiplicativ). 1.3. Definitie. Fie X si X' doua multimi pe care sunt definite operatiile unare u, respectiv ;/'. Morfismul operatii unare este o functie / : X ---- > X' urmatoarca diagrama comutativa f:(X,u) >(X',n') de cu proprietatea ca face

Un morfism se mai numeste si homomorftsn. 1.5. Propozitie, Inversnl unui izomorfism este un izomorfism. &~ Demonstrate. Vom face demonstratia considerand ca morfismul este de operatii binare. Daca bijectia / : X -> A" este un morfism. atunci vom demonstra ca si / :X' - >X este un morfism. Pentru aceasta. \a

ceea ce inseamna ca ( / o;/X T )' ("'./X-x) pen^ni orice x & X . Daca i:X" ~ X ~ x . X x . X - > X este o operatic tcrnura pe X si 1': X'} - > A" este o operatic ternara pe X\ un moriism de operatii ternare este o functie f:X->A'' ce satisface (fot^(xty,z)=^of^\x,y,z)

trebui sa aratam ca / '(.vet'/)--/ '(.vh/' '(?) pentru orice s j f A", unde a,a' sum operatii binare pe A', respectiv pe A". Aplicandu-1 pe /' egalitatii de mai sus (/ fund bijectie), este suficient sa araiain ca sa't = f\f '(.v)a/ '(')j. Cum /'este inortism, rnembrul drept din \iltima relatie este egal cu
./(./ '(^/-'(/^ (/o/

V.T, y, z e X sau / ot ~-1 'of' : X'

> X .

A.

-~"

Ccipilolul 2 - Hazel? algbrice ale information

58

HA'/.El.E

INI'ORMAIK"//

ii) relatia < este antisimetrica, daca V.v,j.' e A' . din x < y si y 1.6. Definitie. Doua multimi X si A" pe care sunt date operatiile binare a, respectiv a1 sunt numite izomorjc, daca exista un izomorfism / : ( X , a ) -> (A",a'). In acest caz, notam X - X'. Functia identica 1^ este intotdeauna un astfel de izomorfism. Nu este intotdeauna suficient sa stim ca doua obiecte sunt izomorfe, ci trebuie specificat si care este izomorfismul. Exercitii 1. Enumerati endomorfismele aditive ale lui /.(, . 2. Enumerati izomorfismele (Z. 4 ,+) >(Q,o), unde multimea rotatiilor patratului, iar o este operatia de compunere.
3. Fie f : ( X , a . ) >(A",a') si g:(A",a')

rezulta x - y ; iii) relatia < este fmnzitiva, daca \/x,y,z F X , din x < v si y rezulta x < z . 2.2. Defmitii. i) Spunem ca x e.ste mai mic decdt y sau ca x este strict continu i notam aceasta x < y daca x<,y$\x*y.x<y se mai citeste si x mai mic strict decdt y, prin analogic cu relatia de ordine naturala. ii) Spunem ca x > y si vom citi x mai mare sau ego/ cu y include pe y, daca y < x , unde <" este o relatie de ordine partiala d<

este

>(A"',a") doua

morfisme. Aratati ca: i) daca g si /

sunt monomorfisme,

atunci

g of

este

peA'(definitia2.1). iii) Relatia >" este de asemenea o relatie de ordine parti; multimea X. Ea se mai numes.te si relatia de ordine inversa relat ordine partiala <" pe X. iv) Spunem ca x este mai mare decdt y sau ca x confine propri si notam aceasta x > y daca x > y si x ^ y . 2.3. Definitie. O multime X pe care este definita o relatie de partiala <" se numeste multime partial ordonata. Daca pe o mul este definita o relatie de ordine partiala -,< ? \ structura de ord multimea X este pusa in evidenta prin notatia (X, <). Multimea A' numeste si multimea suport, sau multimea subiacentS structurii de r partial ordonata, cu care se identiflca pentru simplificare atunci c exista pericol de confuzie. 2.4. Exemplc. 1) N si 7. cu relatia de ordine uzuala. rel 2) (P(M), multimea partilor unei multimi M, cu

monomorfism; daca g si/sunt epimorfisme, atunci g of este epimorfism; ii) iii) daca ^si g sunt izomorfisme, atunci g o / este izomorfism; iv) daca go/ este monomorfism, atunci/este monomorfism; daca g of este epimorfism, atunci g este epimorfism. v) 4. Aratati ca relatia de izomorfism defmita Tntre doua multimi oarecare X si X\ inzestrate cu operatiile binare a respectiv a', este o relatie de echivalenta.

2. Relatii de ordine partiala


Pornind de la multimi si relatii de incluziune intre acestea. se pot defini relatia de ordine />cirtiala si notiunea de iat/ce in care intervin operatii analoage intersectiei si reuniunii. Vom descrie aceste concepte si vom observa ca notiunea de morfism apare in mod natural si pentru ele. 2.1. Definitie. O relatie binara pe o multime X, pe care o vom nota ,,<" si vom citi nxii mic sau cgal sau Indus in, se numeste de ordine partiala atunci cand ea este rejlexiva. antisimetrica si tranzitiva. adica satisface proprietatile din definitiile de mai jos: i) relatia binara < pe multimea X , este rejlexiva daca V,v e X => x < A- ;

incluziune. 3) Multimea divizorilor poziti\i ai unui intreg dat n, cu re divizibilitate (m\n <=> 3<y e '17 cu proprietatea ca n = <] in ). 4) Multimea subgrupurilor unui grup C, unde M < A' insean este subgrup al lui A', pentru M si A' subgrupuri ale lui G.

60

( 'u[>itolul 2 - Huzi'ii' tilyju'ici1 (//c infornialicii

"i

2.5. Definitii. i) O multime partial ordonata X se numeste lanl sau multime siniplu sau total ordonata, daca oricc doua cleincnte x s.i y ale sale sunt comparabile. ii) Doua elemente x si y din X sunt numite comparabile, daca x < y sau >' < x . 2.6. Definitie. O multime partial ordonata cu un numar mic do elemente se poate reprezenta cu ajutorul diagramelor de incluziune, in care clementele comparabile sunt unite printr-o succesiune de segmente de dreapta ce leaga pe rand cate doua elemente dintre care eel mai mare Jl ,,acopera" pe eel mai mic, de fiecare data eel mai mare dintre ele fund plasat deasupra, Pentru a descrie o multime partial ordonata cu ajutorul diagramelor de incluziune, se utilizeaza astfcl o relutie dc acoperirc sau de imediat superior, in sensul relatiei de ordine, definita in continuare: Spunem ca a acopera pe b, Tntr-o multime partial ordonata finita P, daca b < a si mi exista z e P cu proprietatea ca b < z < a. Putem reprezenta elementele din P prin puncte sau cerculete si piasarn deasupra unui element x e P un element yi. /', unindu-lc printr-un segment dc dreapta, atunci cand y il acopcrii pe x. "_v acopera pe ,v" se mai noteaza prin " y $ x". Astfel orice doua elemente comparabile vor fi legate printr-o linie franta. Orice multime partial ordonata finita /' este definita, in afara unui izomorfism, printr-o astfel de diagrama corespunzatoare lui P. Diagrama dualei unei multimi partial ordonate finite P se obtine. evident, prin rastumarea diagramei lui P. ]0 25 2.7. Kxemple. ^. 1) In figura 4 este data diagrama multimii partial ordonate {2,5,8,10,25) prin ') 5 \:b.c\ relatia de divizibilitate. l''K-4

relatiile

2.8. Definitie,, Fie date doua multimi partial ordonate X si A" cu de ordine partiala < . respectiv < ' . Un morfism t

f : (A',<) ->(A",<') de ordine ]>artialu este o functie / : X > X' cu proprietatea ca: .v < y -> f(x)<' f ( y ) . \/x,y <? X . Se mai spune ca functia* este izotona. Functia 1^ este un morfism pentru multimea partial ordonata (X ,<), iar compunerea a doua morfisme de multimi partial ordonate este de^ asemenea un morfism de multimi partial ordonate. 2.9. Definitii. 1) Duala unei multimi partial ordonate X este multimea partial ordonata definita pe X prin relatia de ordine partiala inversa relatiei initiate date pe X. Duala unei multimi partial ordonate X se mai noteaza cu X , Fie P si Q doua multimi partial ordonate. Numim morfism dual de ordine o functie / : P Q , cu proprietatea ca x < y in P implica f(y)<f(x}mQ. 2.10. Observatii. 'l) Relatia de dualitate este simetrica. 2) Compunerea a doua morfisme duale de ordine este un morfism de ordine si orice multime partial ordonata este izomorfa cu duala dualei sale.
!

2.11. Definitii.j Un element a G X cu proprietatea ca A- < a se numeste majorant pentru elementul x. Spunem ca a e X este un majorant pentru o submultime B a lui X. daca x < a pentru orice .v G B. 2.12. Definitie. Inlr-o submultime A' a unei multimi partial ordonate P spunem ca un element m e X este eel mai mic. daca m < x . \fx , x e X . Dual, se defineste eel mai mare element din A". Daca astfel de elemente exista pentru o multime partial ordonata P, atunci ele se mai nuinesc prim. respectiv ultim element ale lui P si se noteaza cu 0, respectiv 1. O multime partial ordonata P are dec! prim si ultim element daca si numai daca. pentru orice element x e P, 0 < x < ] .

V G

2) In figura 5 este data diagrama multimii <P({a,h,c}), partial ordonate prin relatia de incluziune.

63

^ T
2.18. Propozitie. Orice lant fmil X de n elemente este izomorj CIA multimea ordonata n --- \ 1.2,..., n\. A life I spus. exista o bijectie > n cu proprietatea ca x, < x 2 o / ( x , ) < /(x 2 ). ^Demonstrate!* este evidenta. Orice lant finit are prim s,i ultim element./ va fi aplicatia ce duce primul element din A, pe care il notam cu X) in 1, pe primul element din X \ {x, } , pe care il notam cu x 2 in 2, s.a.m.d. 2.19. Definitic, Lungimea l\P] a unei multimi partial ordonate este eel mai mic majorant al lungimii lanturilor din P. Cand l[P\ este finita, f'. X

2 13. Dcfinitic. Fie (X,<)

o multime partial ordonala si A c: X .

Spunem ca / c A este' un t'/c'mtvtf m/V//mfl/, daca nu exista a ^ ast a < m . Un element maximal se dcfineste in mod dual. 2.14. Observatie. Un eel mai mic element este minimal^intr-o sub,nuhime X a unei mu.timi partial ordonate P, dar an ^ noate sa nu fie eel mai mic element. De asemenea, o submult n Smi partial ordonate poate sa aiba mai multe elemen.e minimale, dar un singur eel mai mic element. / 2.15. Exemple. \ Fie multimea M - {2,3,4,6,12} c N , partial ordonata prin relatia de divizibilitate pe N. Multimea M nu are un eel mai mic element, 2 si 3 sunt elemente minimale, iar 12 este ultim element in M (figura 6).
S 12

</

spunem ca multimea partial ordonata P este de lungime finita. Orice multime partial ordonata finita P de lungime finita se defineste, in afara unui izomorfism, prin relatia de acoperire, astfel: a > b in P o exista o secventa finita x 0 ,x,,...,x n astfel incat a = x 0 , b~xn x, , (|i x, pentru / = l,...,n . Izomorfismul sau neizomorfismul a doua multimi partial ordonate s poate deseori studia prin compararea diagramelor lor. 2.20. Exemplu. ^'.' ,ft}),<){D/vM,l}, unde e , > n- p.- p, este produs de doua / '~~^~. . A T V W numere prime. Acest fapt se poate <" 0 I''K' ilustra prin compararea diagramelor din desenele din figura 8 i figura 9.
/ , ..

Fig. 6

\ A\6 iV In multimea Q = {1,2,3,4,6,8,12} c N, partial V v ordonata prin relatia de divizibilitate, 1 este eel mai mic 2 \ / ' element, 8 si 12 sunt elemente maximale si multimea nu are l ' *t ultim element in M (figura 7).
2.16. Propozitie. In or ice suhmultime X finita nevida a unei multimi partial ordonate exista elemente minimale f/ maximale. gDemonstralie. Fie A = {x,,...,x n |. Definim /, - x, si fx,, dacax, < mk, '"( - "(>n ,, altiel k are un element maximal. 2.17. Propozilie. Pentru un lant L dinlr-o multime partial ordonata X , notiunile de element minimal $i eel mai mic coineid. Analog pentru elemenlul maximal .>/ eel mai mare element. ^ Demonstrate. Vom utiliza definitiile notiunilor de prim element, respectiv clement minimal si lant, intr-o multime partial ordonata. Fie m an element minimal in /,. Daca nu exista nici un element x e L eu proprictatea ca x < m. atunci, prin definitia lantului, rezulta ca m<x si deci m este eel mai mic element al lui L. Atunci mn va ii element minimal. Similar A

^-^ ^--. prP2 --*' "^~-^ Pl P'l


o

lS

2.21. Defmitie. Intr-o multime partial ordonata P de lungime iii cu prim element notat prin 0, inaltimea h\x\ a unui element x e P este mai mic majorant al lungimilor lanturilor de forma 0 = x u < x, < ... < x n intre 0 si x. 2.22. Observatii/ 1) Daca P are un ultim element notat prin 1, atunci h\\\ - l\P\. pentm care /i[x] = l se numesc atomii sau punctele multimii partial ord

2) De asemenea. /?[x]-. 1 ci> x acopcra pe 0. l-,lementele x

P.

f
f>4

HA7.E1J-: 1NFORMA TK '11

( \ipitolul 2 - /iazclc <i/x/>ricc ale informaticii

Exercitii 1. Sa se reprezinte diagrama urmatoarelor multimi partial ordonate: a) multimea divi/.orilor numarului 40. cu relatia de ordine indusa de relatia de divizibilitate de pe N. b) multimea partilor unei multimi cu 3 elemente. 2. Pe multimea N x N definim relatia a astfel: (m,n)a(m',n') daca si numai daca m< m' si n < n' in N. a) Sa se arate ca relatia a este o relatie de ordine partiala pe NxN. b) Sa se arate ca in multimea partial ordonata ( N x N , a) orice submultime nevida are un element minimal. 3. Sa se demonstreze unnatoarea proprietate extinsa de antisimetrie: daca < xg , atunci x} = ... = x 4. Sa se enumere toate relatiile de ordine definite pe o multime cu 5 elemente. 5. Fie A o multime nevida, iar /' multimea tuturor relatiilor de ordine partiala de pe A. Pentru p,a e P definim p < a daca pentru a,b e A , apb => aab . Sa se arate ca (/*,<) este o multime partial ordonata. 6. Demonstrati ca inversa unei relajii de ordine partiala pe multimea partial ordonata (/*,<) este de asemenea o relatie de ordine partiala. 7. Trasati diagrama pentru fiecare din urmatoarele multimi partial ordonate: a) multimea subgrupurilor grupului quaternionilor; b) divizorii intregi pozitivi ai lui 1 80; c) subgrupurile grupului ciclic de ordinul 54; d) idealele inelului Z40 . 8. Fie P multime partial ordonata de lungime finita. Aratati echivalenta afirmatiilor: a) orice dona elemente din P au un inajorant; b) P are un ultirn element /. 9. Exista exact doua multimi partial ordonate cu doua elemente. 10. Fie P, P' doua multimi partial ordonate, iar <p o aplicatie izotona de la P la P'. Fie A c P . Daca exista a - sup A , si a'- sup <p(A) atunci (f)(o)>o'. Daca exista b si b', ce! mai mare minorant al elementelor din /', respectiv din f. aratati ca (p(/>)#b'.

3. Latici. Proprietati.
Intr-o multime partial ordonata X putcin defini operatiile de jnlersectie si de ruuniunc alunci cand sunt indeplinite anumite conditii. 3.1. Definitie. Fie X o multime partial ordonata. Numim supremum sau reuniting a doua elemente x i y e X un element a c X cu proprietatile: 1) x < a i y < a ; 2) V6 G X cu proprietatea ,,x <b si y < b" verifica a < b. Altfel spus, a majoreaza pe x s.i pe y ?i este eel mai mic rreyorant pentru x sj y, in sensul ca orice alt majorant al elementelor x si y \\ majoreaza pe a. Reuniunea a doua elemente x i y, intr-o multime partial ordonata X, se noteaza cu x v y. 3.2. Observatii. Daca reuniunea a doua elemente exista, intr-o multime partial ordonata X, atunci ea este unica. Presupunand ca doua elemente din X indeplinesc conditiile din dcfinitia de mai sus a reuniunii, se demonstreaza ca ele trebuie sa coincida (Fie a, a' doua elemente cu proprietatea ca x v y = a si x\/y-a'. Din definitie rezulta ca a < ' i a'< a si, prin antisimetrie, a = a'}. 3.3. Definitie. Numim infimum sau inlersectie sau a doua elemente x i y e X un element b e X cu proprietatile: i) b < x si b < y; ii) Vc e X cu proprietatea ,,c < x sj c < y" verifica c < b . 3.4. Observatii. 1) Proprietatile din definitia intersectiei se obtin prin inlocuirea relatiei <" cu inversa ei >", definita anterior, in definitia reuniunii. Spunem ca interscctia este duala reuniunii. 2) Daca intersectia a doua elemente exista, intr-o multime partial ordonata X. atunci ea este unica. Vom nota intersectia a doua elemente x si v c X prin x A y . 3.5. Definitie. O la/ice este o multime partial ordonata in care pentru orice doua elemente exista reuniunea si intersectia lor.

Capilolul 2 - Razi.de til^hr/cc ulc infonnalicii

66

HA/J-JJ: INI-'ORMA ncn


3.6. Observatie. Daca L este o latice. operatiile binare iji ele sunt

v. A : L x L - >L

sunt definite pentru orice x s i y e L

Pentru a demonstra proprietatea A4), de absorbtie. sa observam c; din x < x si x < x v y rezulta X < A A ( A V > - ) . Cum in mod eviden x" A(X v y)< x , rezulta prin antisimetrie x A (x v y) = x . Analog se arata c
x v (x A y) = x .

reuniunea si intersectia laticiale. 3.7. Exemple. 1) in N i Z, cu relatiile de ordine partiala data de ordinea naturala, reuniunea a doua elemente este eel mai mare dintre ele, iar intersectia a doua elemente este eel mai mic dintre ele. 2) In <P(M), cu relatia de incluziune, intersectia si reuniunea laticiale sunt interscctia si reuniunea obisnuite, definite pentru multimi (acest exemplu sugereaza alegerea denumirilor operatiilor laticiale). 3.8. ' Definitie. Numim morfism de latici o functie f: L
)-

Pentru a demonstra proprietatea C), sa presupunem ca x < y . Cut x < x, prin definitia intersectiei rezulta x < x A y . Pe de alta par

x f \ y < x . Prin antisimetrie rez.ulta x A y = x . Presupunem acum ca x A y = x . Din definitia intersectiei rezul x < y . Am demonstrat astfel ca x < y ci> x A y = x . Analog rezulta
X <y O xv y y.

,'t

3.10. Propozitie. Intr-o multime partial ordonata P ce arc un pr

>Z,'

ce

este

morfism

fata

de

operatiile

binare

laticiale

( /(* v .v) = f ( X ) v /(y) si f(X A y) = f(x) A /(y), Vx, y e L

Functia identica 1 x este un morfism de latici, iar compunerea a doua morfisme de latici este de asemenea un morfism de latici. Exista multe tipuri de sisteme algebrice in care subsistemele acestora formeaza o latice in care operatiile laticiale sunt induse de incluziune (structura de ordine este data de incluziune) ca de exemplu: subcorpurile unui corp, subgrupurile unui grup, submodulele unui modul etc. Vom studia in continuare o serie de proprietati algebrice ale operatiilor binare de reuniune si de intersectie intr-o latice. 3.9. Propozitie. In oricc multime partial ordonata P, operatiile de reuniune $i de intersectie satisfac proprietatile de mai jos, atunci cdnd exprcsiilc la care faccm refer ire exisid: Al) x A x - x . x v .x = x (idempotenta): A2) x A y - y A x , x v y ~ y v ,v (comutativitatea); A3) \ (asociativitatea); [x v (y v z ) = (x v v) v z A4) x A (x v y) = -v v (.v A v) = x (absorblia); C) .x < y c;> x A y - x o .v v y - y ( proprietate de consistenta). ^Demonstrate. Proprietatile Al) si A2) rezulta din defmitiile reuniunii si intcrscctiei. Prima egalitate a proprietatii A3) rezulta din faptul ca atat primul membru cat si membrul al doilea al acesteia sunt fiecare egali cu eel mai mare ininorani al lui x, y si z, in conditiile ipotezei. Analog pentru a doua egalitate.
\x A ( V A z) = (.v A v) A z,
1

element 0 e P, au loe proprietatile: AS) O A X = O si O v x = - x , V x e P. Dual, daca P are un ultim element 1 e P, atunci au loc proprietatile: x A 1 = x si x v 1 = 1, Vx e P . I ty-Demonstratia este imediata utilizand consistenta. 3.11. Propozitie. In orice latice L, operatiile de reuniune s,i

intersectie sunt izotone: [x A y < x A z, r/aca y < z , atunci < . oricare ar ft x e L [x v y < x v z ^Demonstratie. Daca y < z , utilizand proprietatile Al) - A4 consistenta C), obtinem x A y = (x A ,x) A (y A z) - (x A y) A (x A z) , rezAilta si a doua relatie. 3.12. Propozitie. In orice latice L sunt satis/acute inegalit i distributive:
\

deci

x Ay <x A z.

a) x A (y v z ) > (x A y) v (x A z) ;b) x v (y A z) < (x v y) A (x v z

i ^Demonstrate-. Deoarece x A \ ; < x si x A y < y < y v z . re x A y < A- A (y v z) prin definilia intersectiei laticiale. A x A z < x A ( V v z) . Apoi, conform definitiei reuniunii re
(x A y) v (.x A z) < x A (y v z ) . Prin dualitate rezulta si a doua inegalitate.

3.13. Propozitie. intr-o latice L are loc inegalitatea modulara: Vx, y, z e L , x < z => x v (y A z) < (A- v y) A z .

68

KA7.E1J-. 1N1-'OKMA TK'll

("apilolul 2 - /itizele alghrice tile informal icii

69

} f Demonstraliei x < x v y si x < z implica JT < z A (xvy). De asemenea y/\z<y<xv y si y A z < z implica Conform definitiei reuniunii rezulta ca: x v (y A z) < z A (,v v v). c.c.t.d. Vom demonstra ca proprietatile A1)-A4) caracterizeaza complet laticile. Pentru aceasta vom defini unele notiuni si vom proba anumite rezultate intermediare. 3.14. Definitic. O multime cu o singura operatic idempotenta, comutativa si asociativa se numeste semilatice. 3.15. Propozitie. Fie P o multime partial ordonata in care orice dona clemente an o intersectie. Atunci P este o semilatice in raport cu operatia de intersectie. \Demonstratia rezulta imediat din Propo/.ijia 3.9. O astfel de latice se numeric laticc inferioara. < 3.16. Propozitie. Daca S este o scmilnlice lulu de o operatic hinara V, atunci relatia < ", defmita pentrti orice dona elemente x $i y din S. def' prin: x < y <^> xVy = x inzestreaza nnillimea S cu o ordine partiala in care ,vVy = x A v, Vx, v e S. y.Demonstrate. Idempotenta xVx ~ x implica reflexivitatea: x<x,
\/x e S .

ipotezei, atunci zV(xVy)- (zV.v)Vy - zVv = z adica z < jrVy, deci are loc ii). Astfel, xVy este x /\ y .
? , 3.17. Teorema. Orice multime L inzestrata cu doua operatii binarc ce satisfacproprietatile Al) - A4) este o latice $i reciproc. i ,^Demonstratie. Conform Propozitiei 3.16 orice latice in care se verifica proprietatile A1)-A3) este o multime partial ordonata in care x A y inf {jf,^}, astfel incat x<y inseamna x A y -- x . Apoi, conform proprietatii A4) din Propozitia 3.9, x/\ y = x implica x v y = (x AJ)V y = y si prin dualitate, x\ry = y implica x^y = x. Deci x < y este de asemenea echivalent cu x v y = y. Rezulta ca x\>y = sup{x, y}. Astfel, multimea L pe care sunt definite doua operatii binare ce satisfac proprietatile din ipoteza este o latice. Inversa acestei afirmatii rezulta din Propozitia 3.9 si completeaza demonstratia.

Din xVy = yVx , cum x < y <=> (xVy = x) si x > y <=> (yVx~y), rezulta ca x - A-VV- yVx-y, deci antisimetria este verificata, proprietatea avand loc pentru \/x,y e S . Presupunem acum ca x.y.zeS verifka proprietatile x<y $i y < z , dcci conform definitiei relatiei ,, < " rezulta xVy = x ?i yVz - y . Atunci x - xV(yVz) -- (xVy)Vz = xVz i dcci x < z . Aadar are loc ^i proprietatea de tranzitivitate \/x,y, z e S . Sa demonstram acum ca xVy este chiar inter&ctia laticiala x A - y , \fx.yeS. Pentru aceasta. confonn definitiei intersectiei, trebuie probat ca au loc urmatoarele proprietati: i) .vVv < x si xVy < y , ii) Vz e S . daca z < x si z < y , atunci z < jrVv .

Cum xVy < x <=> (xVy)Vx = xVy si (xVy)Vx = (yVx)Vx = yV(xVx) = yVx = xVy , relatia JtVy < x are loc. Analog se verifica si relatia xVy < y, deci este verificata i). Daca zV.r = : si zVy - z conform

Excrcitii 1. Gasiti un izomorfism de multimi partial ordonate de la laticea (P({l,2,3},c), la laticea divizorilor pozitivi ai lui 42, cu relatia de divizibilitate. 2. Daca X si X' sunt latici, aratati ca orice izomorfism de ordine de !a X la X' este izomorfism de latici. 3. Aratati ca intr-o latice cu lungime finita exista prim si ultim element. 4. Aratati ca orice semilatice superioara finita L este un semigrup comutativ. Cand este monoid? 5.) Verificati daca (x A y)v (z A / ) < (x v Z ) A ( V v / ) , Vx.y,z,l . 6. Desenati diagramele a cinci latici neizomorfe de cate cinci elemente si aratati ca orice latice de 5 elemente este izomoria cu una din ele. Puneti in evidenta dualele lor. 7. Aratati ca exista 15 latici neizomorfe cu 6 elemente dintre care 7 sunt autoduale. 8. Desenati diagrama laticii tuturor partitiilor multimii 4 = {1.2.3.4}, unde relatia de ordine este defmita prin: fief 7i < n' <=> V,V e 7i , 17'e^', SciT). unde n,n' sunt doua partitii ale multimii 4 . 9. Aratati ca intr-o latice L au loc urmatoarele relatii: a) x A y -] <=> x = y = 1, xyy = Q<^>x = y = Qm, x, y e L b) x < y si z < I => x A z < y A t si x v z < y v / ; x, y, z, / e L

Ciifiilolul 2 - Kaxle al$brice ale infonnalicn


70

tf/f///./:

INFORMAT1C1I

i 1)

4.7. Defmitii.

Numim ideal principal generat de un element a e; L. multim

4. Sublatici. Produse de latici


4.1. Definitie, O latice S se numeste suhlatice a unei latici L daca S este o submultime a lui L 51 incluziunea S >L este un inorfism de latici. 4.2. Exemple.1 . Multimea vida este sublatice. 2. Submultimea formata dintr-un element oarecare x&L este sublatice. 4.3. Propozitie. Submultimea S, posibil vida, a unei latici L este sublatice daca si numai daca S este latice fata de restrictive la S ale operatiilor laticiale pe L. Imaginea printr-un morfism de latici / : L -- > M a unei sublatici S a lui L este o sublatice a lui M. De asemenea, imaginea inversa a oricarei sublatici T a lui M este o sublatice in L. Este posibil ca ea sa fie vida, chiar daca sublaticea Jnu este vida. 4.4. Observatie. O submultime ea sa fie sublatice. In laticea L a Submultimea S a tuturor subgrupurilor lui L: reuniunea de multimi a doua subgrup. 4.5. Definitie. Pentru doua elemente a,beL multimea \x e L a < x < bj se numeste interval cu capetele a si b si se noteaza prin
M].

l(a) = a A L = (x e L\ x < a] 2) Un ideal propriu se numete \ prim da x A_H e / --^ x e / sau y e / , Vx, v G L . Dual se defineste notiunea
" filtru v prim. 3) Un ideal propriu se numete .maximal flaca nu exista un id propriu care sa-1 includa strict. Dual se defineste notiunea de fi maximal (ultrafiltru).

4.8. Dcfinitie., Numim i/a^'ce completa o latice in care pentru o submultime X exista un eel mai mare minorant, notat prin inf X i un mai mic majorant notat prin sup X . Pentru X = L, se observa ca c latice completa nevida are atat prim cat si ultim element. 4.9. Observatii. 1) Duala oricarei latici complete este o latice completa. 2) Orice latice finita, ca si orice latice de lungime finita, completa. 3) Laticea tuturor subgrupurilor unui grup, chiar infinit, este o completa. ,' o proprietate de inchidere, daca: i) Multimea X are proprietatea p; ii) Orice intersectie de submultimi ale lui X proprietatea p. arc ea insasj proprietatea p.
Ii

a unei latici L poate fi latice, fara ca submultimilor unui grup finit G, lui G este latice fara a fi sublatice a subgrupuri nu este, in general, un

4.10. Definitie. O proprietate p a submultimilor unei multimi,

Un interval \a,b] este o sublatice in L, pentru orice a,b c L . 4.6. Dcfinitiv. Numim ideal al unei latici L o submultime nevida / a

4.12. Exemple.\ 1. Proprietatea de a fi submultime a unei multimi. 1. Proprietatea de a fi subgrup a unui grup este o proprh inchidere.

lui L cu proprietatile: i) <i ( / si x < a -$ x e / ;


/. ii) IK / s i h f / :-.> a . Imaginea inversa a lui 0 printr-un morfism de latici este un ideal. Un ideal dual se numeste filtru.

4.13. Teorema Fie L o latice completa si S o submultime a

proprietatile: (i) 1 6 S , unde 1 este ultimul element al lui L. (ii) 0 * T c S r:> inf T G S . A tune i S este o latice completa. (}>fDemonstratie* Pentru orice submultime nevida T a lui S, inf este eel mai mare minorant al lui T in S. Fie acum U submultir

72

KA7.ELE INI'ORMATK '//

('apilolul 2 - liazi'lc albrice ale information

73

format a din majorantii tuturor elementelor din T; ea este nevida. prin (i). Atunci inf U e S prin (ii) i este un majorant al lui 7", dar $i eel mai mic cu aceasta proprietate, pentru ca inf U < u , Vw e L/ . Deci 5 este o latice completa, conform definitiei . 4.14. Corolar. Multimea T a suhmultimilor unci multimi X care an <> proprietate data de inchidcre formeaza o latice completa, In care intersectia laticiala a lui (F este intersectia de multimi, iar reuniunca laticiala este inlersectia tuturor submultimilor ce contin submultimilc date'. Daca 'Y este o submultime a lui fF , atunci: inf 'Y --- \ S i
- \T,

Exercitii

1. Fie L o latice. Atunci /, este un lant c> orice submultime S a lui L este o sublatice. 2. Aratati ca sublaticile unei latici /. formeaza o latice completa fata de incluziunea multimilor. . 3.! Aratati ca daca L i M sunt latici complete, atunci produsul L x M este latice completa. 4. Aratati ca multimea idealelor unei latici L formeaza o latice completa L fata de incluziunea multimilor. Aratati ca daca laticea L este finita, atunci L i L sunt izomorfe. 5. In orice latice L, aratati ca functia a a a A L este un morfism de ordine care duce intersectiile laticiale (respectiv reuniunile) in intersectii de multimi (respectiv reuniuni). 6. ((aA*)Al) = (aAZ,)o(&Al), ((a v h) A L) = (a A L)^j(b A L) . 7. Aratati ca laticea submultimilor multimii [a,b,c] nu contine o sublatice cu 7 elemente. 8. Aratati ca orice latice L este izomorfa cu o sublatice a unei latici complete.

In

particular,

daca

= {8,8'},

atunci:

4.15. Definitie. Produsul P *Q = {(.v,y)| x e P,y e Q] a doua multimi partial ordonate P si Q, este o multime partial ordonata prin relatia de ordine partiala definita prin
def (x],yl ) < (x2 ,y2 ) Ci> ( x} < x2 in P si y, < >-, in Q )

(am notat la fel relatiile de ordine partiala in P. respectiv Q, neexistand pericol de confuzie). 4.15. Propozitie. Fie L si M doua lot id. Atund L x M este o latice. ^-Demon.stratie. Vom nota la fel operative laticialc in L, M, respectiv in L x A/ , neexistand pericol de confuzie. Vom proba ca elementele a - (x} v x^.y} v _ v n ) !?i h - (A, A A%. y, A v2 ) sunt reuniunea $i respectiv interseclia elementelor (-v, . v, ) si (x-, , v 2 ) din Lx. M . Elementul a e LxM majoreaza pe (.*,.>',) si pe (x^.y-,) deoarccc x} v .v, > A-, si -v, v A% > ,v2 si analog ,v, v >-, > v, , y, v v 2 > _y 3 . Daca un element c = ( s , f ) e Z , x M majoreaza pe (x, , v,) ?i pe ( x , . y 2 J , aceasta inseamna ca s > A, ^i .v > A% i / > v, ;?' ' - >;2 Rezulta ca ,v > A, v A 2 ;ji / > _y, v v 2 i deci c > a . Aceasta demonstreaza ca a este reuniunea elementelor (jf ,,>',) ?i (A - .,,>'J). Dual, A este intersectia elementelor (x,,^,) si (x-,,y2) din Lx M .

5. Latici Modulare
5.1. Definitie. O latice se numeste modulara daca pentru orice x,y,z e L cu proprietatca x < z , are loc urmatoarea identitate modulara: A6) x v (y A z) = (x v y] A :. 5.2. Propoxitic. Subgrupurile normals ale iinui grup G formeaza o latice modulara. ^Demonstralie^ Subgrupurile nomiale ale unui grup G fonneaza o latice in care intersectia laticiala a doua subgrupuri normale ale lui G este intersectia de multimi, iar reuniunea laticiala este multimea tuturor produselor dc doua elemente din primul. respectiv eel de-al doilea subgrup. Deci, daca M i N sunt doua subgrupuri normale ale lui G, atunci: M A A' -- M r\ N , M v N = {xy\x e M,y e A'}, unde A,V sunt operatiile laticiale in multimea subgrupurilor normale ale grupului G. Pentru a demonstra ca aceasta latice este modulara, este suficient, conform propozitiei 3.13, sa probam ca: Lc.N ^> (L v M) A N a L v (M A TV).

Capilolul 2 - Razclc a/ghricc tilt' iirfonnuticii


74
BA'/J-'.U-: INl-'ORMATKV/

Fie A- e L c N . Atunci x e L v M si x = yz , unde y c- /, si z c M . Dar din x = yz rezulta z = y lx, cu y l&LcN s.i x e N . Deci z e A-'. Dar, prin alegerea sa, z e M , astfel ca z 6 M o A/ . Prin urmarc x = yz, cu _>> e L ?i z e M o A/', c.c.t.d. 5.3. Teorema. Orice latice nemodulara L confine o latice izomorfa cu laticea din diagrama reprezenlatcl in figura 10. xls a\ Demonstrate. Prin defmitie si inegalitatea modulara, \ laticea L contine elementele a, y s.i c, cu a<c, a v (j A c) < (a v y] A c . Atunci x = a v (y A c}, y si z = (a v _y) A c au proprietatea ca xv y = z\> y = \ i x A y = z A j y = 0 ?i genereaza laticea

Exercitii /. Aratati ca orice latice de lungime 2 este modulara. 2. Aratati ca orice sublatice a unei latici modulare este modulai 3. Aratati ca produsul a doua latici modulare este o modulara. 4. Intr-o latice modulara, fie M A / ) - 0 , a\fb-\ ^i fie 0 < 0 < d < h . Aratati ca {a,b,ctd} genereaza o sublatice izomorfa cu pr

direct a doua lanturi de lungime 2. 5. Aratati ca laticea subgrupurilor grupului abelian cu 4 ei Z 2 x Z2 este modulara. 6. Aratati ca urmatoarele afirmatii sunt echivalente:
a) x < z , x v {y A z) = (x v y) A z ; b) x < z , X = XA ((y A (x v z)) v z) .

din figura 10. Avem x v y = (a v (y A c)) v _y = a v ((y A c) v y) = a v y . Vom arata ca z v _y - ((a v y) A c) v y = a v ^. Cum x < z , x v _y < 2 v y. Trebuie aratat ca x v y > z v y. Dar
a v y > y i deci y v (c A (a v j')) < (_)> v c) A (a v y) = a v _y pcntru ca a < t1 din ipoteza i deci a v y < c v y . Aadar are loc i z v _y < .vv y . Deci x v y = z v y . Vom arata ca x A _y = z A y. Pentru aceasta explicitam pe fiecare din

Intr-o latice L, urmatoarele afirmatii sunt echivalente: i) Va,6,c &L, a < c => a v (h AC) - ( v b) A c) ii) a A ((a A b) v c) = (a A 6) v (a A c) , Va, /), c' e L iii) Daca a > 6 i c e L , atunci u v c: -= / a /\c b /\c => a b. 8. Daca intr-o latice modulara L cu prim i ultim element, 0, respectiv 1, x i _y an proprietatile: a) x A v - 0 i x v y = 1, b) 51 x v z = 1 c) x, y e [a, b], atunci x = y . 9. Aratati ca o latice este modulara daca i numai da idealelor sale este modulara.

7.

ele.

y A z = _y A ((o v y) A c) = {y A (a v v)) A c = y A c . A- A y (o v ( y A c)) A v > ( v A c) v (a A v) = c A y . Cum x < 2 , rezulta x A y < z A v . Deci x A y = Z A _ y = C A _ y .

6. Latici Distributive. Proprietati


6.1. Defmitie. O latice se numete <//.v/n??Mfh'<? daca. pentr elemente x , y . z e L , sunt satisfacute urmatoarele proy distributivitate:
A7)

Astfel elementele

x.v. z,

avy,

cr\y
not

formeaza
not

o sublatice

izomorfa cu cea din figura de mai sus, unde 0 = c A y i 1 = a v y . 5.4. Teorema. I'aitru oricc inel R. R-submodulelc oricarui R-modul A formeaza o lalicc modulara.

AZ ' VOxv(yAz)^(xvy)A(xvz)

f tr o latice distributive, urmatoarele a 6.2. Propozitie. Intr-o lana echivalente: . . / z ) Vx, y, z e L. (l)xACvvz)=(-xAy v ;

*~~'
76

M/J-:i.E INl-ORMATK 'II

2 - Hazelc alf>bri<:c <ik' informalicii

77

T Demonstratief Oricare ar fi x, y, z e L , (A' v y) A (A~ v z) = ((A v y) A AT) v ((A v y) A z) = =- x v (z A (A" v y)) -- x v ((z A A) v (z A y)) = (x v (z A A')) v (z A y) - - - A- v (z A >-') = A v (y A z). Implicatia inversa rezulta prin dualitate. 6.3. Propozitie. Orice lant este o latice distributiva\ - ^Demonstrate. Se stie ca intr-un lant orice doua elemente sunt comparabile. Se constata ca elementele x A (y v z) si (A- A y) v (x A z) coincid in toate cazurile posibile in care se afla cele trei elemente din puncj de vedere al structurii de ordine.
;

6.8. Exemplc. , 1) Fie Z laticea intregilor po/itivi partial ordonata prin rclatia de divizibilitate. Pentru orice doua elemente w, n c /, 4 , inlersectia este data de eel mai mare divizor comun al numerelor m si /', iar renniunea de eel mai mic multiplu comun al lor. Cum orice element m f Z"* se poate scrie in mod unic sub forma m = 2 c(1) -Y'^ p ' t { ^ unde p^ este al A-lea nuinar prim, iar e ( k ) exponentul cu care apare pk in descompunerea canonica a lui /, putem pune in evidenta o functie / ? : Z ' - >N 7 ' care atribuie fiecarui intreg pozitiv m o functie e : Z' - >N definita ca mai sus. Astfel, daca w,eZ^ si h(m) = e, /;()=/, atunci h((m,n)) = e A / , iar h([m,n]) = e v f , unde cu (m,n) am notat eel mai mare divizor comun al numerelor m si n, iar cu [w,w] am notat eel mai mic multiplu comun al lor. In acest fel, multimea Z 4 , partial ordonata prin divizibilitate, poate fi privita ca o sublatice a lui N7' , partial ordonata prin relatia <" definita in 6.5. , 2) Un inel de multimi (o familie de submuitimi ale unei multimi /, ce contine o data cu doua multimi atat intersectia cat si rcurinmea lor) este o latice distributiva fata de relatia ,,c ". Laticile distributive an o proprietate distinctiva, data prin urmatoarea propozitie: 6.9. Propozitie.; Intr-o latice distributiva, daca doua elemente x si y au proprietatea ca prin reuniune, respectiv prin intersectie cu un al treilea element z se obtin elemente egale, atunci e/e sunt egale. f i AjL Demonstrate. D i n ipoteza. J r v z = _ y v z , X A Z = > ' A Z . Atunci:
A" = X A (z V A') = A" A (z V v) = (A' A r) V (x A )') = (z A )') V (A" A y) =

; 6.4. Propo/Jtie. Orice latice distributiva este modulara] ^Demonstratia \ este imediata. Daca x,y,z sunt trei elemente din laticea L si x < z, atunci din proprietatea de distributivitate si folosind ipoteza, rezulta: x v (y A z) = (A- v y) A (x v z) = (A- v y) A z .

6.5. Definitii. Fie D* -{f\f:S-

->D\, unde S este o multime definim relatia <"

oarecare, iar D o latice distributiva. Pentru f,ge. D' pe D' f<K

(notata la fel ca relatia de ordine partiala definita pe D} prin: (1) def f(x)<g(x), V r e - S - . prin: (2) M(x) = f(x) v g(x) si

si functiile M,m:S -> D, m(x) = f(X)*g(x), VxeS.

6.6. Observatie.i Relatia ,,<" introdusa mai sus inzestreaza multimea D;' cu o structura dc ordine partiala. In multimea (Ds, <), M = j v g i m = / A g definite anterior sunt operatii laticiale. 6.7. PropO'riticJA-fu/timea D' s , a fnnctiilor de la o multime oarecare S la o latice distributive/ D, este o latice distributiva. \)emonstratm,--revine la a arata ca: / A (g v h}- (f A /?)v (# A / ? ) , Vf,S.h&Ds.

(z v _V)A y- y

utilizand proprietatea de absorbtie si de distributivitate. Exercitii. 1. Aratati ca orice produs de lanturi este o latice distributiva. 2. Aratati cfi orice produs de latici distributive este o latice distributiva. 3. Aratati ca daca adaugam la o latice distributiva doua elemente 0 si 1 ce satisfac 0 < x < 1, V.r e L, atunci rezulta o noua latice distributiva.

( 'npilolul 2 - liazt'lt' alghrice oli' informaticii HA7.E1.E 1NFORMATH '11

7.4. Definitie. O latice book-ana este o latice complemer 4. Aratati ca daca n = p*1 -pj 2 -p'kk , (p, <p 2 <...< /?,) este reprezentarea lui ca produs de numere prime, atunci multimea divizorilor lui n, partial ordonata prin divizibilitate fbrmeaza laticea distributiva , x , x...x Ek, unde ,, i - \,k este un lant de lungime c,. 5. Specificati elementele x ^ 0 din laticea A (unde prin 0 am notat primul element al laticii), cu proprietatea ca daca x = y v z , pentru y, z e L, atunci x = y sau x = z , unde L este : a) o latice distributiva de lungime 3; b) multimea intregilor pozitivi, partial ordonata cu divizibilitatea. ; 6. Identificati laticile nedistributive cu 5 elemente. 7. Intr-o multime, inzestrata cu doua operatii v^ si o, verificand f fiecare din ele proprietatile de idempotenta, comutativitate ?i asociativitate si in plus fiind distributive una fata de cealalta, aratati ca: x ^j (x r^ y)= x o (x ^j y). 8. Intr-o latice L, urmatoarele afirmatii sunt echivalente: (1) \fa,b,c e L , (a v ) A C = (a AC)V (a A&); (2) V a . f r . c e L , (a A > ) V C = (a vc) A (6 vc); (3) Daca a, 6, c e L i a v c = 6 v c $ i a A C = ftAC, atunci a~b. 9. Demonstrati ca o latice este distributiva daca si nuinai daca laticea idealeior sale este distributiva. distributiva. 7.5. Exemple. 1) Laticea tuturor submultimilor unei multimi, partial ordonata 2) Multimea divizorilor unui numar natural de f n = p^ pe^ p'kk unde toti exponentii au eel mult valoar

incluziune.

partial ordonata prin divizibilitate. 3) Orice interval [a,b\ al unei latici booleene este de aseme latice booleana.

7.6. Observatii. 1) Duala oricarei latici booleene este o latice booleana. 2) Produsul a doua latici booleene este o latice booleana. 7.7. Teorema. Intr-o latice booleana L orice element x arc i complement x'. De asemenea, trecerea la complementara \ urmatoarele proprictati:
A8) X A X ' = O , j c v x ' = l ;

7. Latici Booleene. Algebre Booleene


7.1. Definitie. Intr-o latice L cu prim si ultim element, notate cu 0, respectiv 1. numim complement al unui element x, un element y (-: I. cu proprietatile x A y = 0 si x v y = 1 . 7.2. Definitie. O latice se numete complementata, daca toate elementele sale sunt complcmentate. 7.3. Exemple. 1) Multimea <P(A/) a partilor unei multimi M este complementata. Pentru orice S c M , complementara sa in raport cu A/, notata prin M \S . este complementul lui ^ in laticea <P(A/)definit ca mai sus. 2) Laticea modulara a tuturor subspatiilor unui spatiu vectorial finit dimensional Keste complementata.

A9)(x')'=x; ^ A 10) (x A y)'= x'v y' , (x v y)'= x'/\y' (Formulele lui De Mor 'UDemonstratie . Intr-o latice distributiva, complemcntele, daci sunt unice. confonn Propozitiei 6.9. Atunci complement^ unic proprietatea A8) pentru orice x e L si detmeste o operatic unara x L. Relatia A9) rezulta imediat, deoarece din defmitia complement element rezulta ca x este complementul lui x '. Vom demonstra mai intai ca
x A a ~ 0 co x < a' .

Daca x < ' , atunci x A a < O'AO = 0 , deci x A a -- 0 . Daca x A a ~ 0 . atunci

x - x A 1 --- x A (a v a') = (x A ) v (x A a'} = x A a' ,

deci x < cf . Daca in laticea L x < v . atunci x A y'< y A y'--O i rezultatul de mai sus, rezulta y'< x' . Bijectia X ~> x' defmita pe i in L inverseaza deci ordinea si d\ice intersectiile in reuniuni si inca are loc proprietatea A10). 7.8. Definitie. O algebra booleana A este o multime in trei operatii dintre care doua binare. ,,v", ,,A" si una unara ,.' "',

80

RA7.ELK INFORMATICll

( 'npilohil 2 - liazelc alghricv ale informaticii

proprietatile Al) - A10). Daca A si 6 sunt algebre booleene. o functie / :A > B este un morfism de algehre booleene daca el este morfism fata de operatiile v ",,, A " si.' ". Algebra booleana se mai nume$te s.i algebra Boole, ca un omagiu adus matematicianului englez George Boole (1815-1864) creatorul acestei discipline. 7.9. Observatie. Teorema anterioara spune ca orice latice booleana cu operatia unara ,,' ", care duce un element x in imaginea sa prin operatia ,,' " poate fi privita ca o algebra booleana. 7.10. Exemple. 1) Multimea (P(M), a partilor unei multimi M, este o algebra booleana. 2) Orice corp de multimi (un inel de multimi / ce confine odata cu submultimea S s, i submultimea S', uncle prin S' am notat complementara lui S in raport cu /) este o algebra booleana. 7.11. Observatie. Conform proprietatii A8), orice morfism / de algebre booleene are proprietatile /(())=() $.i /'(!)-! si deci el este un morfism fata de operative zero-are ,,selectarea lui 0" s.i ,,selcctarea lui 1". Kxista o inversa partiala a acestei aiirmatii. 7.12. Propozitie. Daca A fi B sunt algebre booleene, atunci orice

7.14. Observatii. 1 ) Un interval [a,b], intr-o algebra booleana A. este o sublatice booleana, dar nu i subalgebra booleana. 2) Intersectia unei familii de subalgebre booleene dintr-o algebra booleana A este o subalgebra booleana a lui A. In particular, intersectia tuturor subalgebrelor booleene ale lui A continand n elemente date, a] . a2. ..., an, constituie o subalgebra booleana a lui /I, numita subalgebra generatd de element ele a,, <3 2 , ..., an din ,4. / 7.15. Teorema. Elementele complementate ale unei latici distributive cu 0 fi 1 formeaza o sublatice. y!>, Demonstrate. Daca x $iy sunt sunt complementate, atunci: (x A y)/\ (x'vy') = (x A y A x')v (x A y A y')= 0 si dual. Deci xs\y are un complement si anume x'vy. Analog pentru x v y. Exercitii. 1. Aratati ca un i n t e r v a l [ a , b ] ~ { x e B \ a < x < b } intr-o algebra booleana B nu este subalgebra booleana. 2. Demonstrati ca orice interval [a,b] al unei latici booleene este o latice booleana. 3. Gasiti o latice modulara cu 7 elemente in care cornplementele elementelor nu formeaza o sublatice. 4. Aratati ca: x = 0 <r> t - (x A /') v (X'A/), x,t e B, unde B este o algebra booleana. 5. Demonstrati ca, intr-o algebra booleana B, unnatoarele afirmatii sunt echivalente: i) x = y; ii) (x A v') v (X'A_>) = 0 . 6. Sa se generalizeze Exercitiul 2 pentru laticile inodulare complementaie. 7. Aratati ca: a = (a A /;) v (x A (a v b}) co /; - ( A b) v (,V'A( v />)) . 8. Demonstrati ca: x A y < (x A z) v ( v A z'), Vx, y.z e B . 9. Intr-o algebra booleana B, aratati ca urmatoarele afimiatii sunt echivalente: /') a A x = b A x ; //') [(a A b') v (o'Afr)] A x = 0 ; ///) 'AX =

functie f : A >B cu f(0)-Q si /"(l) = 1 $i care este morfism fafa de opesatiile v, A este un morfism de algebre booleene. . ^Demonstrate. Pentru orice x e A, aplicand functia / proprietatii A8), si utilizand ipotezele, rezulta / (x) A J'(x') = 0, / (A) v f ( x ' ) = 1. In algebra booleana B, aceasta inseamna ca f ( x ' ) este unicul
complement (f(x)) al lui /(,v) sau altfel ca /(*') = (/(*)) i in consecinta /este un morfism de algebre booleene. 7.13. Definitie.' O algebra booleana S este subalgebra booleana a unei algebre booleene A, daca S este o submultime a lui A i incluziunea -^~ A este un morfism de algebre booleene. Aceasta implica faptul ca, in S, operatiile ,,v" i .,A" si ' '" sunt restrictii la S ale operatiilor corespunzatoare din A. Orice subalgebra a unei algebre booleene este o algebra booleana.

KA7.ELE INFORMAT1CU

! 2 - Hnzcle atghrice ah: in

10. /' e filtru intr-o algebra booleana co /) leF; //) x & F,x'vy e F => \> e F . 11. Demonstrate ca: ft = c <=> (/J'AC) v (a A ft' ) v (a A c) = (a A c') v (ft A c') v ( A ft). 12. Aratati ca: a A ft < (a A x) v (ft A x') < a v ft, Va,ft,x e 6 . 13. Demonstrati ca multimea elementelor complementate dintr-o latice distributiva L data, formeaza o sublatice a lui L care este algebra booleana. 14. Demonstrati ca multimea elementelor care au complement unic dintr-o latice modulara L data, formeaza o sublatice a lui L care este algebra booleana. 15. Daca o latice modulara complementata verifica condi^ia de minimalitate (orice submultime de elemente ale sale are eel putin un element minimal), atunci ea verifica si conditia de maximalitate (orice submultime de elemente ale sale are eel putin un element maximal). 16. Intr-o latice distributiva care verifica conditia de maximalitate, orice element x admite o unica reprezentare ca o intersectie de elemente care nu pot fi scrise ca intersectii de alte elemente diferite de acestea. 17. Aratati ca orice latice distributiva este o sublatice o unei algebre booleene. 18. Demonstrati ca o algebra booleana in care orice ideal este principal, este finita, si reciproc.

Daca in relatia ( 1 ) adunam xy in ambii membri. rezult xy = xy 4 xy 4 yx - yx , si deci inelul R este comutativ.
/

* 8.3. Teorema. * * 1. Putem defini pe multimea elementelor unei algebre booleene I adunare fi o inmultire prin: x \-y~- (x A y')v (x'Ay)
(2)
xy = x A y
(3)

pentru orice x,y e 6 fi astfel fata de aceste operatii multimea data dev un inel boolean cu unitate ^(B), elemcntul Q fiind eel mai mic elemen lui B, iar 1 fiind eel mai mare. II. Invers, putem defini pe un inel bolean R cu unitate o reuniun o intersectie prin formulele: xvy = x + y-xy
(4) (5)

pentru orice x,y&R, obtindnd o algebra booleana B\R], eel mai element fiind 0 al lui R, iar eel mai mare 1 (imitatea) fiind lui R si x'= ] (6) fiind complementul lui x. Ul.Avem: ^(^ R)}~ R pentru orice inel boolean R si (B(^(/?)) ~ B pentru orice algebra booleana B. I ft- Dcmonatratie: Adunarea definita prin (2) este comut ' multiplicarea definita prin (3) este asociativa si comutativa, iar fi element este idempotent fata de multiplicare. Cum: x -t- 0 = (x A 0') v (X'AO) - (x A 1) v 0 - x, xl = x A 1 = x. rezuha ca 0 si 1 ale algebrei booleene sunt 0 si 1 ale inelului R. Din (2) observam ca: x 4 x --- (x A x')v (X'AX) - 0 si deci inversul aditiv al fiecarui element x exista si este chiar x. Vom arata ca adunarea definita prin (2) este asociativa multiplicarea definita prin (3) este distributiva fata de adunare. Prin formulele lui De Morgan, in orice latice distributiva are loc
((x A y) v (x'Ay))' = (x A y)v (x'Ay'). (7)

8. Algebre Booleene i Inele Booleene


8.1. Definitie. Un inel R in care toate elementele sunt idempotente fata de multiplicare (V.v e R => x 2 = x), se numeste inel boolean. 8.2. Propozitie. Orice inel boolean R este comulativ .fi de caracteristica 2. ^Demonstrate'. Daca x si v sunt elemente arbitrare din inelul boolean R, atunci utilizand defmitia: x I y - (x I- yXx + y) - x" 4 xy + yx + y - x + xy 4 yx i y , Vx, y e R si deci xy -f yx = 0, Vx,y c R (\) Pentru x = y, relatia (1) devine: 0 = x 2 + x 2 = x 4 x = 2x . ceca ce probeaza ca inelul R este de caracteristica 2.

Din (7). utilizand distributivitatea in 5, rezulta in (S\B]\


(x 4 y) 4 z -= (x A y')v (x'Ay)+ z --_ (((x A y')v (x'Ay)) A z')v (((x A y) - (x A y'AZ') v (x'Ay A r') v (x A y A z) v (x'Ay'Az).

Dar prin comutativitatea adunarii, definite prin (2): x + (y + z) = (z + )

84

: INFORMATK'//

('apilolul 2 - /tec/c ulghricv ale infonnalicli

85

Si x + (y + z) = (z + y)+x =
(z A v A x) v (Z'A V'AX) v (Z'A v A x') v (z A V'AX') - x ^ (y -f z) .

Din (10) si (5), x ^ = jc A >' = xy . Mai departe. din (9), (6). (5) si (4) x@y = (^ A >'') v (jf'A_y) = x(\ - y) v (l -- x)y = = x' + _v - 2xv - xy = xy 4 xy - xy = x -i- y , deci

In final, pentru orice triplet de elemente x, y, z din B, xy -t xz = (.v A y) + (x A z) = ((x A >')A(X'VZ'))V ((x'vy 1 ) A (X'AZ'))= (x A y A z') v (.v A y A z') v (X'AX A z)v ( V'AX A z) = = (x A (y A z')) v (A A (y A z')) = x A ((y A z') v (/AZ)) = x(y I z), completand demonstratia priinei afirmatii a teoremei. Fie acum un inel boolean R cu unitatea 1. Prin comutativitatea si asociativitatea operatiilor din R, reuniunea defmita prin (4) este comutativa si intersectia definita prin (5) este comutativa si asociativa. Mai mult, reuniunea este si asociativa

R.

Exercitii 1. Aratati ca intr-o algebra booleana R au loc urmatoarele relatii.

Vx,yeB:
a) x A (x'vy) = x A y , x v (x>y) = x v y ;

b) x < y o

x'vy ] <^> x A y' = 0 ;

(xv y)v z = \x + y xy)v z = x + y- xy+ z (x + y- xy)z = = x + (y + z - yz) - x(y + z - yz) = x v (y + z - yz) - x v (y v z).
Identitatile de absorbtie se verifica de asemenea. Din (4) si (5) avem: x A (x v y) = x(x + y - xy) - x1 -f xy - x 2 y = x si 7 x v (A: A y) = x + xy - x ~ y - x . Rezulta ca 'B(^) este o latice. Sa aratam ca este distributiva: (x A y)v (x A z) - xy + xz - xyxz - xy f xz - xyz = x(y -t- z - yz) - x A (y v z). Laticea (B(/?) are prim si ultini element pe 0 si 1 ale lui R: 0 A x = Ox - 0 si I A x = Ix - x . Mai mult, x(] - x) ~ x- - x2 - 0 si A- I (1 - .r) - .r(l ~x)--1, deci 1 - x este complementul lui JT in (B(R). Fie /J o algebra boolean;!. Prin (2) si (3) construim un inel boolean^,(tf). Pornind de la ^,(). prin: x(f) y = x + y- xy (7)

c) x = y <=> (x A y' ) v (X'A>>) = 0 o (x'vy) A (x v y' ) = 1 .

2. Stabiliti o corespondenta biunivoca intre idealele unei algebre booleene si idealele inelului boolean asocial ei. 3. Idealul / al unei algebre booleene este interval daca si numai daca a e 7 si a' f I sunt afirmatii echivalente. 4. Fie K un ideal intr-un inel boolean S. Atunci urmatoarele conditii sunt echivalente: 5. K maximal; b) K prim; c) V.v a S este indeplinita una din conditiile s e K sau s'c. K , dar nu am^ele. 6. Fie S o algebra booleana; atunci urmatoarele afirmatii sunt echivalente: a)Secorp; b) S e domeniu de integritate; c) 5 are exact doua elemente. 7. Fie B o algebra booleana, a,b e B si / : B -> B o functie definita prin /(x) = (x A a) v (b A x'). Aratati ca /(/(/(x))) = /(x) , Vx e B .

xy = xy

(8)

9. Algebre Booleene Libere


Intr-o algebra Boole A, consideram doua elemente x,y e A . Vrem sa construim algebra booleana generata de elementelex si y. Vom proba ca orice algebra booleana generata de un numar finit dc elemente, este finita. Sa consideram algebra booleana A generata de elementele x si y. Ea va contine pe x', y' si de asemenea elementele
x A y , x A y'. x'Ay , x'Ay'. (1)

construim o algebra booleana (8(^(5)). Din ultima relatie si din (3), rezulta x y - xy - x A y . Cum A si v stint duale. rezulta ca si este A si deci (B(^(S)) este izomorfa cu 5. Similar, fie .A" un inel boolean cu unitatea 1. Formand algebra booleana (/?). apoi ^((B(R)) prin: x(&y= (x A y') v (.V'A_V) x>y-x/\y (10) corespunzand lui (2) si (3), respectiv. (9)

Sa consideram acum reuniunile de unul sau mai multe astfel de elemente. Exista 2" astfe! de expresii corespunzand tuturor submultimilor

( 'apitohil 2 - Bazi'le algbrice tile informaticii


86

HA7J-LEINl-'ORMATICll

multimii formate din elementele din (1). O astfel de expresie o vom numi expresie canonica disjunctive! (expresie polinomiala booleana disjunctive!). Fie .S1 multimea tuturor elementelor lui A ce pot fi scrise ca expresii canonice disjunctive in x si y. S e o subalgebra a lui A, fund inchisa fata de reuniune si fata de intersectie.(Se observa ca intersectia a oricaror doua elemente este egala cu 0). Cum
x - x A(_V v /) = (x A jy)v(x A /) si x'= X'A(_V v / ) - (X'A>>)V (X'AV')>

Membrul drept, dezvohat folosind distributivitatea, conduce la 2" termer ^O ,' j este H////JI ! element al lui B. Fiecare element x, se scrie x, = A (XM v x, , )A x, A(X, +] v x H l JA

(2)

rezulta ca S contine elementele x, y, x' i y'. Un argument similar pentru o algebra booleana A cu trei generator! arata ca fiecare element al ei poate fi scris ca o reuniune de urmatoarele opt elemente de forma x" A yb A zc, unde x" e (x,x'}, si analog pentru yb i zc,. Pentru o algebra booleana cu n generator!,x,,x 2 ,...,x n , vor exista 2" intersectii de elemente de forma x'1 AX^ 2 A . . . A X / , unde pentru fiecare /,
-\ x.', e I [x^Xjf. Fie { , ' } o multime de doua elemente, unde x, = x,, iar x, este
' " '- ,\n
e

care este imaginea prin h a unei submultimi S din \ , ' j , prin dezvolta cu ajutorul distributivitatii. Deci imaginea lui h contine orice element x, algebra booleana A s.i astfel h(S) este subalgebra generata de ekmer
XpX 2 ,...,X n .

9.2. Corolar.', Orice algebra booleana generata de n elen


-,n

x,,x 2 ,...,x B contine eel mult 2

elemente.

9.3. Teorema. Exista o algebra booleana B $i o list a S},S2,...,i n elemente ale lui B cu proprietatea ca pentru orice lista x,,x 2 ,...,x n

elemente ale algebrei booleene A exista exact un morfism h : B -- 5 algebre booleene cu h(S,) = x, , Vr , / e n . Demonstrate.'- \n algebra booleana S = (Pn , ' j Iconsideram, orice f e n submuhimea S, c; [ , ' j , cu S, = B e e \ ,' j ,e, = j. e 6 Sj <^> et forma:
s^ oS n,...
n

complementara. Multimea \e\e: n -- >| , ' j j este multimea Multimea tuturor acestor 2" liste de expresii e\ determina 2" intersectii x,1 AX 2 2 A... AX]," e A . Daca S este o submultime oarecare de functii din
d

{ . ' } , fie h(S] =1 V^x," A x* A ...AX/ ), si /i(0) = 0 .

'f

. Formula (2) pentru h(S) arata ca orice S din B

9.1 Teorema. Daca x,,x 2 .....x n .VMH? elemente ale algebrei Boole A $i 8 - (Pl| . ' j I este algebra Boole a xubmultimilor S ale multimii c/c f'niH'tii | . ' | . alunci h Jcfinc^le wi morftstn h : B ----- > A tie algebre

Prin (3), reiese ca orice morfism h : B ----- >A de algebre I iS, a x, poate fi dat prin fomiula (2) pentru h. Astfel h este unic, c.c

Boole, avclnJ ca imagine subalgebra lui A general a tie x,,x 2 ....,x,. . Demonstrate J f-'ie .S1, T doua submultimi ale lui i , ' | Avem:

/)(0) = 0 (prin convcntie).


Cum x, v x,

9.4. Definitie. O algebra booleana B cu o lista S, avand prc din Teorema 9.3 este numita algebra booleana libcra pc \S,,S2,...,Sn) de generator! libcri^ in exacta analogic cu modulele I Conform teoremei 9.3 rezulta ca orice algebra booleana izc aceasta este de asemenea o algebra booleana libera cu n gener; mult, doua expresii booleene cu n litere Xi,x 2 ,...,x n sunt egal

1 , rezulta ca 1 = (x, v x, )A ... A \xn v xn ).

algebra booleana daca i numai daca ele sunt egale cand x,,x 2 .

HA7JH.I-:

IN]-'ORMAT1CII

(.'apitotul 2 - liazi'le

nlc informaticii

generatorii liberi ai algebrei booleene B, adica daca si numai daca cele doua exprcsii se reduc la aceeasj expresie canonica disjunctive. De exemplu, expresiile X V ( J A X ' ) si (x/\y')\/y sunt egale, fiecare din ele avand aceeasi expresie canonica disjunctive. Exercitii 1. Aratati ca sublaticea generata de o submultime finita cu n elemente a unei latici distributive, confine eel mult 2 2 elemente. 2. Aratati ca daca o algebra booleana A este generata de n elemente, atunci A este libera daca si numai daca are exact 2 2 elemente. 3. Fie A o lagebra booleana libera, generata de n elemente. Aratati ca pentru orice m < n A contine eel putin C" subalgebre libere cu m generatori.

[S,C] ( F - (fa ) t / i ; , G = (g,, ),.,), pentru care exista o bijectie b de la / la./, cu proprietatea ca fa = gh(,,), Va e / . / 10.2.\Exemple. > ( 1) Un grup este o algebra [.S\F], cu F = { / ' , g } , unde operatia f:S*.S-*S este definita prin f ( x , y ) ~ x y si operatia g : S - > S este
vii)
VV^/

//

definita prin g(x) = x ~ ] , satisfac conditiile:


/(x,/(^z))=y(/(x,y),z)

^
J \J VOX I ,:*

[x(^z) = r_..

.-

Observatie: e este elementul neutru al lui S. V2) O latice este o algebra [S,F], cu F = { f , g ] , unde operatia / : S x 5 > S este definita prin /(x, _y) = x A _y si operatia g : S x S -> S este definita prin g(x, y) = x\/ y, satisfac conditiile:
f ^ v _ vl

10. Algebre Dniversale


10.1. Definitii. i) O algebra A este o pereche [S, F], unde S este o multime nevida de elemente, iar F = ( f a ) a t l o multime specificata de operatii f t l , fiecare aplicand o multime S1*"' in 5", pentru un intrcg nenegativ corespunzator n(a). Fiecare operatic / atribuie fiecarui /?(a)-tuplet (*i ,.>*()) de elemente din S o valoare fa\x,,...,x,^) din S. Daca n(a) - 1, operatia se numeste unara; daca n(a) = 2 , operatia se numeste binara, etc. Daca /?(a)- 0, operatia sc numeric zero-ara; ea selecteaza un element fixat din S (exemplu: elementul neutru intr-un grup. 0 sau 1 intr-o latice). ii) Notam cu T aplicatia detinita pe multimea 7 de indici, cu valori in multimea N a numerelor naturale. care asociaza fiecarei operatii aritalca sa n(a}. numita si iipul algebrei. Daca nu se specifica tipul, se intelege ca se lucreaza cu algebre de acelasi tip. Multimea S se mai numeste si multime suporl a algebrei si cand nu este pericol de confuzie. putem nota algebra cu S. identificand-o cu multimea sa suport. Observatie. In definitia algebrei, se considera ca operatiile / Jbrmeaza o iamilie F, nu o multime de operatii. astfel ca putem considera distincte anumite operatii care lucreaza la fel. Putem identifies doua algebre t^-^1 ?' :(2) f(x,y)=J

g(x,y) = g(y,x]
'(3.)

[x A y = y A x] [x v y = y v x]

f(x,f(y,z))=f(f(x,y\z)

[x A (v A z) = (x A y) A z] [x v (y v z) = (x v >') v z]
[x A (x v y) := x v (x A >') - x]

(4)

f(x,g(x,y)) = K(x, f(x, y)) -x

3) O algebra Boole este o algebra [S,F], cu F = [f,g,h\, unde operatia zero-ara j : 1 - .S' definita prin / (l) -- 0 pentru 1 e 1. operatia unara g : ,S --> ,S" definita prin g(x) - x' si operatia binara /?: .S1 x S > ,S' definita prin /?(,v,_y)~ x A _y, satisfac conditiile: \.}(S,h) este semilatice.
, 2. ' A / ? ' - - 0 C-> A /? c; .

Grupurile, laticile, inelele sunt familii de algebre. Se prcsupune ca toate algebrele fiecarei familii au aceeasi multime de operatii si satisfac o multime specificata de postulate. 4) Un spatiu vectorial peste un inel cu diviziune D este o multime S cu o operatie binara f(x,y)=x + y si pentru orice X , e D , o operatie

90

HA//;/,/; INl-'ORMATK'll

('.apitolul 2 - Bazele cilgbrice ale informaticii

& .\xf = fa > numita multiplicarea prin X, fiind satistacute proprietatile de comutativitate, asociativitate si legile de distributivitate. Numarul de operatii distincte este de regula infinit, o posibilitate permisa prin definitia noastra. Observam ca multimea de operatii depinde de D, deci clasa tuturor spatiilor vectoriale cu D nespecificat nu este o familie de algebre. 5) Un corp, definit ca o multime (5,0,1,+,-) cu dona operatii binare, operatia unara x a. -x si pentru x -+ 0, x a x ', nu este o algebra in sensul definitiei, deoarece 0 ' nu este definit. Daca am defini, de exemplu, 0"' = 0, ar deveni algebra, dar relatia \xx ])y ~ y pentru orice x i y, nu ar mai avea loc. 6) O o -latice, definita ca o multime S inchisa fata de operatiile Y xk
*-i

// 10.5. \Definitie. \() familie Moore)-fe submultimi ale lui 7 este c familie ce contine multimea I si pe It Xa, daca, pentru orice a, ea contim pe Xa (este inchisa fata de intersectie). - 10.6.\JPropozitie.\Subalgebrele unei algebre abstracte formeaza familie Moore de submultimi ale lui A. 1 lO.T.'Definitie. Numim operatic de mchidere pe o multime /[ i operator A" a A" pe submultimiie lui /, care indeplineste urmatoare conditii: i'i. X c X (operatorul este 'extensiv); ii. X = X (operatorul este idempotent); m.X c 7 => X cr Y (operatorul este izotori). ^ 10.8. Definitie. O submultime X a lui / este inchisa printr-o ope re de inchidere, daca X X . 10.9. Teorema. Submultimiie lui I inchise printr-o operatic mchidere formeaza o familie Moore i reciproc. Astfel, operatia ,,aft ini in" este o operatic de mchidere " $i reciproc. Demonstrate: Fie (F = {xu Xn c / si Xa = X} Vom demonstr D - Y, X:, este inchisa, daca fiecare submultime Xtl a lui / este inchisa.
a

sj I xk, nu este o algebra abstracta, deoarece operatiile nu sunt finite (nu se *^i aplica unor multimi finite de elemente). 10.3. Observatii. 1) Multe rezultate ale algebre lor universale se pot extinde la multimi cu operatii infinite (algebre infinite) si la operatii care nu sunt universal definite (algebre partiale). 2) Algebrele universale se situeaza intre matematica 51 logica matematica. Anumite rezultate ale ei sunt teoreme despre teoreme s.i astfel met amatemat ice. 3) Definitia subalgebrei, a morfismului si produsului direct se extind la concepte topologice de subspatii inchise, aplicatii continue 51 respectiv produs cartezian. 10.4. Definitie. Numim subalgebda] a unei algebre abstracts /1=[S,FJ, o submultime T (posibil vida) a lui S inchisa fata de operatiile lui F. Daca /u e F si *, xii(a) c T , atunci /,(*, xn(ii])eT . [T,F\ este o algebra abstracta. Daca [T,F] este o subalgebra a lui [S.F], iar [ U . F ] este o subalgebra a lui [7', F ] , atunci [(7, F] este o subalgebra a lui [S. F ] . Pentru exemplele de mai sus, obtinem sugbrupurile, sublaticile, subalgebrele boolecne si respectiv subspatiile vectoriale. Relativ la subspatiile vectoriale, operatiile definite de multiplicare prin scalar! sunt aceleasj, ca functii. De asemenea, ,,aceeai" operatic definete functii diferite (cu domeniu si codomeniu definite prin restrictie la subalgebre).

Conform proprietatii (3) din definitia operatic! de inchic D c Xa => D c Xa; dar Xa = Xa oricare ar fi a. Deci D c 1' Xa si cum D c D , rezulta D - D . deci D este inchisa. Invers, daca (F este o familie Moore de submultimi ale lui detinim X
i-ti i,v

1 F,,, F a e r F . Cum / e <F, exista eel putin o astfl Fn =X^X, deci are loc (1). I F(I D X, astf

multime F,,. C\im Fu ^ X , rezulta I

Pentru orice a, avem F(1 z> X , deci FH =3 I


Fa ,X

Fn=X, astfel rezulta relatia (2). f], c I F p , deci are loc relatia (3).

Daca X c Y, atunci I

r
HA/.l-./.i; 1N1-'ORMATI('!! ('i:/>il<ilul ? - ItiiZt'/i' nlf>hriff ti/c in/iirnuiticii

_
10.11.' Teorema. \6>r/ct' familie Moore 't de submulfimi ale unei multimi formeaza o hit ice completa fata de incluziune. Demonstrate, Fie data o familie Moore (l de submultirni ale unei multimi 7. Atunci pentru oricc submultime S = {(A",, ) u } a lui (F. definim
inf S - n , a , sup .S1 ~ ^ A'u .
a a ;

universale A - [ L . F \ , F - { . A ( I / / ( ) c l / j unde operatiile sun! operalia hinarci de reuniune f/ operatiile unare de proieclie definite astfel : a ->a A c . Deci orice latice finita completa este izomorfa cu laticea luturor subalgebrelor unei algebre. Exercitii 1. Puneti in evidenta faptul ca o algebra booleana A este o algebra universala, in doua moduri diferite, precizand in ficcare caz operatiile si axiomele. 2. Aratati ca grupul este o algebra [S,F], unde F este formata dintr-o singura operatic binara pe 5,/definita prin f(x,y) = xy '. 3. Fie A = [S,F] o algebra, unde F contine doar operatii unare si zero-are. Aratati ca pentru orice doua subalgebre X, Y ale lui A este indeplinita conditia X ^J Y = X u Y . 4. Fie A = [S,F] o algebra, unde F contine doar operatii zero-are. Aratati ca subalgebrele lui A formeaza o latice booleana care formeaza un ideal principal dual in laticea 2 a .

10.11. jCorolar. Submultimile inchise relaliv la o operatic dc inchidere formeaza o lalice completa in care intersectia laticiala este intersectia de multimi . 10.12. Tcorema.\ Daca P este o multime partial ordonata $i once submultime a lui /' (InctltztSnd fi multimea vida) are un inftmum in P, atunci P este o lalice completa. Demonstrate. Fie X c P si U = {a | a > x, Vx e A'}. Fie a = inf U . Se demonstreaza ca a = sup X . 10.13. Defmitie. Daca S c L confine inf A' si sup A' pentru orice X c 5, spunem ca S este sub/atice inchisci. O operatic dc inchidere pe o latice L este o operatic x a x pe elemcntele lui L care satisface cele trei proprietati din Definitia 10.7. Elementele x cu proprietatea ca x-x se numesc inchise. 10.14. Teorema. Fie x a. x o operatic de inchidere pe o latice completa. Fie S - \x e L \ x - x } submultimea clementelor inchise ale lui L. Atunci xn . * ? = > AJT Q <= S . 10.15. C'orolar. Elementele 'inchise ale lui L formeaza o latice complete. 10.16. Teorema.' Orice intersectie r^Tr de subalgebre Tr ale lui A i'.v/c o siibalgehra $i A esle o subalgebra a sa. Demonstratia este evidenta. 10.17. Corolar. Subalgcbrele unei ulgebre abstracte A oarecare formeaza o latice completa. /rivers, oricc latice L este izomorja cu laticea L a idealelor sale principale. Daca L este finita, atunci acestea sunt subalgebrele algebrei

11. Functii booleene. Ecuatii booleene


Functiile booleene joaca un rol important in aplicatii din diverse domenii ale informaticii. Voin prezenta functiile booleene definite pe B" cu valori in B, unde B este algebra booleana oarecare. Notiunea de functie booleana se poate defini intr-un cadru mai larg, i anume atunci cand B este o algebra abstracta. 1 1 . 1 . Dcfmitic. Fie B o algebra booleana. Functiile re, : B" > B definite prin: n i ( x ] ,...,*) = x, funcfii proicctic. 1 1 . 2 . Dcfinitie. Fie (5,0,l,v,A,') o algebra booleana. Defmirr functiile constante 0 si 1 pe B" cu valori in B prin: 0(x,, V(.v, tcn) 0 xJfF B" si l(x,,...,x n )=l, V(x,,...,xJejB". Aceste functii se po V(x,,...,x n )e B",

i = \,n, se numesc

interpreta ca operatii 0-are in BB .

BAZK1.E IN FORMA TK'll

( 'apilohil 2 - Hazele ulghricp ale

PC multimea BK (multimea functiilor definite pe B" cu valori in 6) definim operative reuniune(v), intersectie\f\) i complementare^) astiel:
i v . . . x = x . . . x v x . . . x V x . . . x e B" \

Not am cuF;,(") multimea tuturor tunctiilor booleene de n variaV. de ordin p (de exemplu. F, (2) = {n\,n,\).
v

11.6. Propozitie. Multimea FB(n) este cea mai mica submullim


e 6";

iii) (/lX*,,-.*.) = (Ax,v..,*.)); V(x lv ..,xJe B" V/:B" -> B Observatie. Am utilizat pentru operative definite mai sus (pe multimea BR ) aceleai notatii ca m cazul operatiilor din algebra booleana B. 11.3. Definitie. Functiile booleene de n variabile / : B" - B se definesc recurent astfel: i) Functiile proiectii TT,, V/ = l , n , sunt functii booleene de n variabile. ii) Daca f,g:B" -> B sunt/wc/' booleene de n variabile, atunci: / v ^ > / A S i ./' sunt functii booleene de variabile. Qricefunctie booleana de variabile se obtine aplicand regulile (i) si (ii) de un numar finit de ori. Notam multimea functiilor booleene de n variabile. astfel definite, cu FB(n) . Elementele sale se mai numesc si polinoame booleene de n variabile sau functii booleene simple de n variabile.
11.4. Observatii.

(a lui B"") de functii booleene J : B" -> B de n variabile, cu proprietat 1. n, e F, V/ e {\,...,n} 2. Daca /, g e F, atunci / v g, /g, /'e F Demonstratie. Conform defmitiei 11.3, FB(n) are proprietatile i(2). Fie F c BB" o submultime oarecare a multimii functiilor definil B" cu valori in B, cu proprietatile (1) si (2). Demonstram prin ind asupra ordinului p F,,()c F pentruorice p e 1,2,... . Pentru p-\ ipoteza rezulta F,(n)= {jr,,rc2,...,n:n}c F. Presupunem ca Ft(n)' Mk<p. Conform defmitiei 11.5, rezulta F p (n)cF. FB(n) = {j Fp(/i), avem FB(n) c F. p=i daca a - 1 Vom nota ,v" = < pentru once x e B 1 a e |0,ls. x' daca a = 0 algebra booleana (B,0,l,v,A,'), se v 11.7. Propo/Jtie. iirma/oarele proprietati: j n,> ..Nacaa = 0 pentru a,)3 e {O.l}. lodacaa - f- /3

1) Cand operatia binara este intersectia, simbolul ,,A" poate fi omis (de exemplu, X A _ V poate Ii scris xy unde x,_y e B: j A g poate fi scris/g unde /,ge B""). 2) Pentru simplificarea scrierii vom nota proiectia nt cu x, (pentru
/ = n , ' n 2 , /(x, ,*2 ) = 7t , ' (-v, ^2 V 2 (-f. . -x'5 ) = (" . (*i ^ ; ))'n i (x. - A'.- ) = x. ' X2 pentruorice (x,,x 2 )c BJ ).

v
(,. ,M<)i!"

x"' ...x"" ~ 1
X\\^'"^..^'^

pentru

a,,P, e |0,l},

11.5. Definitie. Fie / ' : R" > B o functie booleana de variabile. Numim ordinal funcfiei f eel mai mic numar;; cu proprietatea ca/se obtine aplicand regulile (i) si (ii) p ori.

5.

KA/J-.I.I-:

INh'OKMATICI!

('apitolul 2 - /icizc/c alghrice ale informaticii

97

x"' ...x"' v (M v
x

f(xt,...,%}=

na

ax"'..jc",

V(x,,...,jr n )r R", coeficientii

un

}v"'..jc""
v

(a,, ,,O>.ir "' "" "' ""' '

i. ."-)-('!"
wncfe

u
(l

"'*"" '=

fiind unic determinati prin u (J -- f(ar.ar). V(a,,...,an)e {0,l}" c B". Urmatoarea reprezentarea se mai numeste forma disjimctiva de interpolaref(x},...,xn)v f(a a }x"'...x"", \/(x ...x ) < ^ B " .
(,. .a,X{0,l}"

J (a,, .".Ho.

, vfj

( B pentru a, e{0,l}, / = !,..,.

Demonstrate. Daca (a,,...,a n ) # ( / ? , , . . . , / ? ) , atunci exista / astfel incat a, # /?,, deci x, a 'x/' = 0, ceea ce demonstreaza (4). Proprietatea (3) se demonstreaza prin inductie: qj pentru = 1 proprietatea este evidenta, (jc, v x, '= 1); ft)
(n,
v a,>-{0.l|"

Demonstrate. Pentru a pune in evidenta existenta reprezentarii unei functii booleene / : B" ~* B in forma canonica disjunctiva, vom demonstra prin inductie asupra ordinului p al functiei. Pentru functiile proiectie ( / ? - - ! ) obtinem: n, (x,,..., x J = x, = x
(a,,.... a, .,.,, a, >-(O,]}"' 1

v
'

xf .. JC(H', ' x,";;',. jr "-

x"'-*"" '

V
v x',

x,jf2a!...xna" v
(a,
:

x v a,>{0,l)"'

'i VC
(a,,..,a,)s{0,l}"

(,i,. ..7,V(l).l)" '

*i

...x"" - x v de asociativitate,

Presupunem ca orice functie booleana de n variabile de ordin k < p are o reprezentare in forma canonica disjunctiva. Fie / : B" > B o functie booleana de ordin p. Atunci f g' sau / = h v / sau / = h A / , unde g, h, I sunt functii booleene de n variabile de ordin < p . Utilizand propozitia 1 1 .7. si ipoteza inductiei, /are o reprezentare in fonna canonica disjunctiva. Demonstram ca reprezentarea unei functii booleene / : B" > B in forma canonica disjunctiva este unica. Fie /3, e {o,l}, / = !,..,. Putern scrie: f(x, ,...,x,, ) = P| ^ .
v
(

Proprietatea (5) rezulta din proprictatile comutativitate si distributivitate. Pentni a demonstra relatia (6) in relatia:

V
i, , , - .

(u,.....a,> (0.11"

folosim

*l '-^ " X l

v
n H ^ , , ./!)

(A, .../i n )t(0,])"

proprietatea (4) sj proprietatea de idempotenta. Relatia

, i = l,..,n folosind proprietatea (2) din propozitia 11.7., Pentru x, = j3,, obtinem: p ^ A l ) v O = w/i| (, . Vj3, e {0,l} / = !, ceea ce incheie demonstratia.

v
V V ("a

11.9. Propozitie. Daca / : B" -> S'este o funclie booleana. atunci ..../3,,)f {O.l], V(/j,,...,/O e {0,]}". !)emoii\lr(ii/n rezulta prin inductie asupra ordinului/; al functiei/ 1 1 . 1 0 . I'ropo/.ilie. Or ice functie booleana de n variabile diferita de functia constant^ 0 se reprezintti astfel: f ( x . , . . . , x )= v x' ..j:"" . ((,,, .> (0,1)" /(,..- J 1 ncinonsii'diii'. Utilizand reprezentarea functiei booleene din teorema 1 1.8., demonstratia este imediata.

si relatia

(,,

,un>{01|"

V
('",, .o,>(0.1)"

0 *"'...

demonstreaza proprietatea 7). 11.8. Teorema. Orice functie boolean^ f: B" -> B se reprezinta in forma canonica disjunctiva:

99 98
KA7.KLK INI-'ORMA TK '11

1 1 . 1 1 . Dcfinitie. Definim reprezentarea unei functii boolcene / : B" -- B in forma canonica conjunctiva ca notiune duala a reprezentarii functiei booleene in forma canonica disjunctiva.

I
11.12. Teorema. Oricc functie booleana f : B" -> R sc reprezinta hi forma canonica conjunctiva: /(x,,...,xj = A (v n^x'}" V...VX?") V(x,,...,xje fl",
("].

3. O functie booleana f : B" -> B reprezinta de fapt o clasa de functii booleene de n variabile, indiferent de algebra booleana B data. Reprezentarea functiei este o expresie formula, idenlica pentru toau functiile apartinand aceleiasi clase, care se definesc dupa aceleasi regul (regulile (i) si (ii) din definitia 11.3.), in fiecare caz functiile proiectv referindu-se la algebre booleene diferite. 11.17. Propozitie. Intr-o algebra booleana A urmatoarele condit sunt echivalenle: (i) V e N - {0}: orice functie f : A" ~ A este functie booleana:

.", A I".')

coeficientii

va

fiind

unic determinati prin:

v .^ =/(a,',... ,'), Reprezentarea

V(a,,...,aje |o,l}" c B" .

(ii)A = {0.l). Demonstrate. (i)=>(ii). Sa presupunem ca exista ore ,4-{0,1 Definim f : A" -* A prin /(a,...,a) = 1, /(x,,...,xJ = 0,V(x,,...,xJe/T,(x l v ..,x,,)*(a v ..,a). Atunci / nu e functie booleana. (ii)=:i>(i): Evident.

wo; numefte forma conjunctiva de interpolarc. Demonstratia rezulta din demonstratia dualitate).

teoremei

11.8.

(prin

11.13. Propozitie. Or ice functie booleana de n var labile diferita de fimcfia constanta 1 se reprezinta astfel: f(x......x}= A (x."1 v...vx"" ). "' (a,...,a,X{0,,r ' /(",. .O i Demonstratia rezulta din demonstratia propozitiei 11.9 (prin dualitate).
V

Fiind data o algebra abstracta [A, F\ si o multime Z, putem defn notiunea de po/inom in Z peste o algebra A , observand ca polinoamelt comporta, intr-un anumit sens, asemenea operatiilor de baza /, ale alge A. Definindu-se notiunea de functie algcbrica a algebrei /I, se pot sti polinoamele acestei algebre in cazul in care A este o algebra book oarecare, i astfel punandu-se in evidenta rezviltate prin care caracterizeaza functiile booleene. 11.18 A Definitic.
/

11.14. Observatii. 1. Orice fimctie f : B" ~> B care poate 11 reprezentata ca in propozitiile 11.9. sau 11.13., sau, respectiv ca in teoremele 11.8. ?i 1 1 . 1 2.,este o functie booleana. 2. Orice functie booleana / : B" ~> B este unic determinata de valorile /(a, ,...,), (a,,...,a n )e {O.l}". 11.15. Propozitie. Oricare ar li algebra booleana fi, exista 2' functii booleene / : B" ^> B . 11.16. Observatii. 1 . In cazul in care algebra booleana R are exact doua elemente, nu exista functii / : B" > B care sa nu fie booleene. 2. In reprezentarea unei functii booleene, operatiile booleene utiiizate ( v,A,',0.1 ) sunt notate la fel, indill-ivnt tk- alj'.i-bra book-ana B.

Fie o

o algebra.

multime Definim

si pe

[A, mult

undef = I/,),,/ /i ' A

>- lj,

-- {u | u : M -> A] o slruclura algebrica [ A" , F' ], cu A, ,,...,,,, e AM w, ,...,w n ( / ) t asemenea cu f], astfel ca putem

/l/;),,,/;:^)'' 0 ->AM;fi'(u],...un(i)}:M^ pentru orice

/,'(/,,.,. ,u n ( l ) )(m) -- /,(", ('M),....!v M ( j ) (m)). V/w e M . Pentru simplitate nota functia /,' de

r
100

BAZELE INI-'ORMAHCn 1 1 . 1 9 . Definitii. i) Fie A o algebra si / o rmiltime. Definim proiectia canonica (V/ c / ) 7 ) ( V z c Z ) , i a r ji(z).zt:.Z

( 'apilolul 2 - /iaze/e algbrice ale informaticii

101

j i : Z - - > A A / prin: n ( z ) ( f ) /(z), . vor fi numile funcliilc proicciie. I

11.25. Observatii. 1. Fie o algebra booleana oarecare M = ( ^ , v , ' ) , algebra de tipul (2,1) si M'=(/l,A,v, 1 ,0,l), o algebra de tipul (2,2.1.0,0). Operatiile algebrei M' sunt polinoame ale algebrei M . deoarece x/\y -(x'vj' 1 )', O = X A X ' ,
1 = xv x'. 2. O fanctie booleana a algebrei booleene A este o lunctie algebrica

ii) Notam cu I ' ( A , Z ) subalgebra algebrei AA , gencrata de multimea ) / r ( z ) | z r Z} a functiilor proiectie. Elementele algebrei /'(/),/)se mimcsc/unctii-/ermen sau polinoame in Z peste algebra A. 11.20. Observatie. Orice polinom in Z peste A verifica urmatoarea _ definitie recurenta: I 1. Functiile proiectie sunt polinoame; 2. Pentru orice /1. / , daca w,,...,w n ( / ) sunt polinoame, atunci I f,'(" "(,,) este polinom. I Orice polinom se obtine aplicand rcgulile (l)-(2) de un numar finit de ori. Conform rcgulii (1), proiectia canonica se poate interpreta ca o I limctie n : Z - > P(A,Z). 11.21. Observatie. Pentru orice algebra M , ( / ) , ) operatiile de _ ba//i sunt polinoame. Din definitia 1 1 . 1 7. se deduce f \ ' ( n , ,...,71 n(l) ) /,.

peste A . 11.26. Definitie. Fie A o algebra booleana oarecare. O ecuatic booleana are forma f(x) =axv bx' - 0, unde / : A - > A si a, b e A . 11.27. Propozitie. Ecuatia o x v 6 x ' = 0 are solutii daca ?i numai ab - 0, iar in acest caz multimea solutiilor este

daca

[b,a'] = { x A\b<x<a'}. 11.28. Propozitie. Daca ab = Q, atunci solutia generala a ecuatiei axv6x'=0 este de forma x-a't\/bt', V/ e A . Reciproc, orice solutie a ecuatiei ax. v bx'= 0 este de forma x = a't v bt' pentru t x. Demonstrate. x~a'tvbt' => ax vbx'= a(a't v bt') v b(at v b't') = aa't v ab/'vbat -vbb't'- 0, deci x = a'tvbt' este solutie a ecuatiei ox v bx' =-- 0. Reciproc, din ax v Ax' = 0 <=> ox = bx' = 0 rezulta

11.22. Propo/atie. O xubmultime X a unci algebre A este subalgebra daca si numai daca este inchisa la polinoame, adica pentru orice polinom I n : A" > A . .v, ,...,* e X -O u(x, ,...,xn ) e: X . 11.23. Definitie. Dona algebre, j4"-[/l,/ r ] de tip T : 1 - N ( / ' ' ( . / , ) , ) -si A ' ~ - [ A , G ] de tip 0 : . / - > N (G ^-(g^ J ( J ) . definite pe acocasi m u l l i m c suport A, se numesc cchivalente daca polinoamele definite prste A ooincid cu polinoamele definite pesle _/?'. Observatie. Cu notatia din definitia I 1.23. algebrele M si M' sunt echivalcnte daca si numai daca operatiile /] sunt polinoame ale algebrei M ' . iar operatiile #, sunt polinoame ale algebrei M .

a' x v bx' x v 0 = x.
Aceste rezultate se pot aplica si la rezolvarea ecuatiilor booleene cu mai multe necunoscute. De asemenea, un sistem de ecuatii si/sau inecuatii booleene in n necunoscute se poate reduce la o singura ecuatie de forma /(*, ,...,x n ) = 0 , in'care / este o functie booleana (folosind urmatoarele proprietatile x A y = 1 o x = y = \,xvy = Q'OX y = Q, x<y<^>x/\y'=Q<^> x'vy = 1 si

x = y co (x A y') v (x'/\y) = 0 o (x v y') A (x'vy) = 1).


Exercitii 1. Specilicati elementele multimilor /%(3). F,(n), f\{2). A r a l a t i c a /'/?(/))

11.24. Definitie. Functiile ulgebrice ale unei algebre [A, F] sunt nolinoamele algebrei [A, F^jA] obtinute prin adaugarea la operatiile din F a eiementelor a e A ca operatii zero-are.

\}l'],(n). i> i 3. Aratati ca l''B(n] este intersectia tuturor submultimilor F c B cu proprietatile ( 1 ) si (2) din propozitia 1 1.6.

2.

i o:

RAZFJ.F. WFORMA T/('11

4. Demonstrati propozitia 1 1.7. 5. Demonstrati pasul 2 al inductiei din teorema 11.8. 6. Demonstrati propozitia 11.15. 7. Reprezentati in forma canonica disjunctiva functia booleana / : B7 - > R, determinata prin: /(o,l) = /((),o) = 1 si /(l.l) - / (l,0) - 0 . 8. Fie /: B 2 -> B , /(x,, x,) = x, ' x2 v x,'x,' Calculati /(a, ,a 2 ), V(a,,a 2 )e-{0,l} 2 . 9. Reprezentati in forma canonica conjunctiva functia booleana / : B ? - B, determinata prin: ./ (0,0,0) = /(0,0,l)= /(0,1,0) = /(0,l,l) = l 5i / (1,0,0) = /(l,0,l) = /(1,1,0) = /(l,l,l) = 0 10. Determinati toate functiile booleene de doua variabile, precizand in fiecare caz ordinul fiinctiei. 11. Aratati ca orice functie /: B" -> B, 5 = {o,l) este functie booleana. 12. Fie B multimea divizorilor pozitivi ai lui 42. Exista functii / : B" -> B care nu sunt booleene? 13. Demonstrati ca ecuatia booleana (a A x) v (b A x') = 0 are solutie unica <^> a' = b . 14. Aratati ca: a<x<b<=>Q = (h'Ax) v (a A x') <=> jc = (a A x') v (h A x ) . 15. Sa se arate ca orice functie booleana / : B" --> B, B = {0,1}, /(.v) = (a A x) v (h A x') indeplineste urmatoarele conditii: x A v A / (x) < f(y) < x v y v /(x). Vx,y e B .

GAPITOLUL 3

ARHITECTURA UNUI SISTEM DE CALCUL


1. Evolutia mainilor algoritmice
Ma^inile abstracte propuse de matematicieni la inceputul secolu XX, in contextul cautarii unor maini care sa rezolve operatii algoritmii sunt o consecinta indepartata a construirii primelor dispozitive de calcul, mult timp in urma. Din cele mai vechi timpuri, crestaturile pe lemn sau rabojul au f utilizate pentru memorarea unor date. Abacul a fost unul dintre primele instrumente de calcul, aparut necesitatea unui calcul rapid si fara greseala, atestat inca din antichitate Babilon, utilizat ulterior de greci i romani i a carui simplitate in constru< facand sa fie utili/at si in zilele noastre. ! multe bile ce glisea/li pe fire de sar montate intr-un cadru dreptunghiular, se *i?N&SBBBltNnnMP' li deplasa spre un capat sau altul al sar respective, pozitia bilei avand o am semnificatie. O persoana aeaza bi valoarea initiald data de interpret; pozitiilor bile lor poate fi modificata calculul cerut, iar interprctarea po/it finale conduce la valoarea de iesire rczitltatul cautat. Un model dc abac DC ascmenea, impotriva minimali importantei abacului, trebuie aminlit concursul reali^it in 12 noien 1946 in Tokyo, cu sponsorizarea ziarului Stars and Stripes al U. S. A ciind partea americana a fost reprezentata de catre Thomas Nathan Woo la 20th Finance Disbursing Section of General MacArthur's headquarter eel mai bun specialist operator pe un calculator electric, iar partea japo