Sunteți pe pagina 1din 218

RODIAN SCNTEIE

BAZE DE DATE I ALGORITMI


PENTRU CI DE COMUNICAIE
EDITURA SOCIETII ACADEMICE MATEI-TEIU BOTEZ
IAI - 2003





















S A T B



RODIAN SCNTEIE







BAZE DE DATE I ALGORITMI
PENTRU
CI DE COMUNICAIE













Editura Societii Academice Matei-Teiu Botez
Iai - 2003




Refereni:
prof.univ.dr.ing. Gabriela VIOREL
prof.univ.dr.ing. Cornel JIVA

















Descrierea CIP a Bibliotecii Naionale a Romniei
SCNTEIE, RODIAN
Baze de date i algoritmi pentru ci de comunicaii / Rodian
Scnteie. - Iai : Editura Societii Academice "Matei - Teiu Botez", 2003
Bibliogr.
ISBN 973-86343-3-4

625.7(075.8)














Copyright 2003, Toate drepturile asupra acestei ediii aparin autorului

i


CUPRINS

CAPITOLUL 1 ....................................................................................................................... 1
INTRODUCERE N MANAGEMENTUL ASISTAT DE CALCULATOR..................... 1
1.1. INTRODUCERE........................................................................................................ 1
1.2. OBIECTUL CURSULUI ............................................................................................. 3
1.3. DATE, INFORMAII, CUNOTINE.......................................................................... 3
Datele ........................................................................................................... 4
Informaia..................................................................................................... 5
Cunotinele.................................................................................................. 8
1.4. VALOAREA DATELOR, INFORMAIILOR I CUNOTINELOR................................ 9
1.5. UTILIZAREA DATELOR......................................................................................... 11
1.6. BIBLIOGRAFIE...................................................................................................... 12
CAPITOLUL 2 ..................................................................................................................... 14
STRUCTURI DE DATE...................................................................................................... 14
2.1. ARTICOLUL .......................................................................................................... 14
2.2. TIPURI ABSTRACTE DE DATE ............................................................................... 15
2.3. SETUL................................................................................................................... 17
2.4. TABLOUL.............................................................................................................. 18
2.5. LISTA NLNUIT............................................................................................... 19
2.6. URNE .................................................................................................................... 21
2.7. TABELE DE DISPERSIE (HASH TABLES) ................................................................ 21
2.8. STIVE.................................................................................................................... 22
2.9. COZI ..................................................................................................................... 24
2.10. ARBORI............................................................................................................... 27
Arbori binari............................................................................................... 28
Arbori binari de cutare..................................................................................... 29
Arbori rou-negru.............................................................................................. 30

ii
Arbori b ...................................................................................................... 30
2.11. BIBLIOGRAFIE.................................................................................................... 31
CAPITOLUL 3 ..................................................................................................................... 33
BAZE DE DATE, PREZENTARE GENERAL.............................................................. 33
3.1. ISTORICUL BAZELOR DE DATE............................................................................. 33
3.1. BAZE DE DATE COMPUTERIZATE......................................................................... 35
Sisteme de prelucrare a fiierelor............................................................... 36
Sisteme integrate de procesarea datelor .................................................... 36
3.2 UTILIZAREA BAZELOR DE DATE ........................................................................... 38
3.3 CARACTERISTICILE BAZELOR DE DATE ............................................................... 40
Independena fizic..................................................................................... 40
Independena logic ................................................................................... 41
Utilizarea datelor de ctre neinformaticieni .............................................. 41
Eficacitatea accesului la date..................................................................... 41
Administrarea centralizat a datelor.......................................................... 41
Eliminarea redundanei datelor ................................................................. 42
Coerena datelor......................................................................................... 42
Partajarea datelor ...................................................................................... 42
Securitatea datelor ..................................................................................... 42
3.4 MODELE DE BAZE DE DATE................................................................................... 42
Structura bazei de date............................................................................... 43
3.5. ARHITECTURA BAZELOR DE DATE....................................................................... 44
3.6 CONCEPTE AVANSATE DE BAZE DE DATE............................................................. 46
SGBD cu procesare paralel...................................................................... 46
Baze de date distribuite .............................................................................. 47
Baze de date orientate pe obiect ................................................................. 48
Tendine viitoare......................................................................................... 51
3.7. AVANTAJE I DEZAVANTAJE................................................................................ 51
Avantajele utilizrii bazelor de date.................................................................. 51
Dezavantajele utilizrii bazelor de date............................................................. 52
3.8. BIBLIOGRAFIE ...................................................................................................... 52
CAPITOLUL 4 ..................................................................................................................... 54
MODELE DE DATE UTILIZATE..................................................................................... 54
4.1. DEFINIII.............................................................................................................. 54
4.2. MODELE DE DATE ................................................................................................ 55
Modelul entitate-relaie .............................................................................. 56
Entitatea ............................................................................................................ 56
Atributele .......................................................................................................... 57

iii
Relaiile............................................................................................................. 57
Diagrame entitate relaie ................................................................................... 58
Atribute ale relaiei............................................................................................ 59
Reprezentarea atributelor .................................................................................. 60
4.3. DEZVOLTAREA BAZELOR DE DATE...................................................................... 61
Nivele ale arhitecturii bazelor de date ....................................................... 61
Modele de baze de date .............................................................................. 62
Modelul ierarhic................................................................................................ 62
Modelul reea .................................................................................................... 63
Modelul de date relaional................................................................................. 63
Consideraii practice.......................................................................................... 64
4.4. BIBLIOGRAFIE...................................................................................................... 64
CAPITOLUL 5 ..................................................................................................................... 66
ALGEBRA RELAIONAL I LIMBAJE DE BAZE DE DATE ................................. 66
5.1. ALGEBRA RELAIONAL ..................................................................................... 66
5.2. LIMBAJUL DE BAZE DE DATE SQL....................................................................... 70
5.3. SQL LIMBAJ DE MANIPULARE A DATELOR....................................................... 71
Comanda SELECT...................................................................................... 71
Sintaxa comenzii SELECT................................................................................ 71
Operatori n expresia logic de condiionare..................................................... 73
Ordonarea rezultatelor....................................................................................... 74
Gruparea rezultatelor......................................................................................... 74
Lucrul cu jonciuni ............................................................................................ 75
Jonciuni externe ............................................................................................... 76
Utilizarea interogrilor imbricate ...................................................................... 76
Operaii de asamblare................................................................................ 77
Operatorul UNION............................................................................................ 77
Operatorul INTERSECT................................................................................... 78
Operatorul EXCEPT ......................................................................................... 78
Adugarea de date ntr-o tabel................................................................. 79
Adugarea de linii prin valoare ......................................................................... 79
Adugarea de linii obinute dintr-o interogare................................................... 80
Modificarea datelor dintr-o tabel............................................................. 81
Eliminarea datelor dintr-o tabel............................................................... 81
Funcii utilizate n interogri ..................................................................... 82
5.4. SQL LIMBAJ DE DEFINIRE A DATELOR............................................................. 83
Crearea tabelelor ....................................................................................... 83
Sintaxa comenzii CREATE TABLE................................................................. 83
Crearea de tabele cu copierea datelor ................................................................ 84
Tipuri de date n tabelele bazelor de date.......................................................... 84
Expresii de restricie.......................................................................................... 86
Crearea unei viziuni ................................................................................... 88
Crearea i utilizarea indecilor.................................................................. 89
Modificarea tabelelor i a bazei de date .................................................... 89
tergerea componentelor bazei de date ............................................................. 90

iv
tergerea datelor dintr-o tabel ......................................................................... 90
Redenumirea unei tabele ................................................................................... 90
Eliminarea unor coloane dintr-o tabel ............................................................. 90
Adugarea unei coloane ntr-o tabel................................................................ 91
Modificarea unei coloane.................................................................................. 91
5.5. SQL LIMBAJ DE CONTROL A DATELOR............................................................. 91
Atribuirea privilegiilor ............................................................................... 92
Retragerea privilegiilor.............................................................................. 92
Controlul tranzaciilor................................................................................ 93
5.6. BIBLIOGRAFIE...................................................................................................... 94
CAPITOLUL 6 ..................................................................................................................... 96
BAZE DE DATE DIN MANAGEMENTUL INFRASTRUCTURII................................ 96
6.1. NECESARUL DE DATE........................................................................................... 97
Tipuri de date necesare .............................................................................. 97
Necesarul de date la diferite niveluri de decizie....................................... 100
6.2. LOCUL BAZELOR DE DATE N AGENIA DE ADMINISTRARE.............................. 101
Paii de baz n dezvoltarea unei baze de date pentru ntreinerea
infrastructurii transporturilor........................................................... 103
6.3. IMPLEMENTAREA BAZELOR DE DATE N TRANSPORTURI ................................. 105
AND - Banca central de date tehnice rutiere.......................................... 105
6.4. BIBLIOGRAFIE.................................................................................................... 108
CAPITOLUL 7 ................................................................................................................... 109
ALGORITMI N MANAGEMENTUL INFRASTRUCTURII...................................... 109
7.1. NOIUNI FUNDAMENTALE.................................................................................. 109
7.2. DESCRIEREA ALGORITMILOR............................................................................ 112
Diagramele logice .................................................................................... 112
Limbajul pseudocod.................................................................................. 113
7.3. EFICIENA ALGORITMILOR............................................................................... 113
Complexitatea algoritmilor ...................................................................... 113
Structuri ciclice ........................................................................................ 114
Recursivitatea........................................................................................... 115
7.4. ANALIZA COMPLEXITII ALGORITMILOR....................................................... 118
Metode de analiz..................................................................................... 118
Notaia asimptotic .................................................................................. 119
Notaia (theta mare)..................................................................................... 120
Notaia O (O mare).......................................................................................... 120
Notaia (Omega mare)................................................................................. 121
Notaia o (o mic) ............................................................................................. 121
Notaia (omega mic) .................................................................................... 121

v
Consideraii practice ................................................................................ 121
Exemple de calcul a complexitii ............................................................ 123
Clase de complexitate............................................................................... 124
Clasa P de complexitate .................................................................................. 124
Clasa NP de complexitate ............................................................................... 124
Clasa de probleme NP-complete ..................................................................... 125
7.5. TEHNICI DE PROIECTARE A ALGORITMILOR..................................................... 125
Reducerea la probleme cunoscute............................................................ 125
Abordarea egoist .................................................................................... 126
Divide i cucerete.................................................................................... 126
Programare dinamic............................................................................... 128
7.6. BIBLIOGRAFIE.................................................................................................... 128
CAPITOLUL 8 ................................................................................................................... 130
SORTAREA I CUTAREA............................................................................................ 130
8.1. SORTARE ............................................................................................................ 130
Sortarea cu bule................................................................................... 130
Sortarea cu inserare ................................................................................. 132
Sortarea cu selecie .................................................................................. 133
Sortarea Shell ........................................................................................... 134
Sortarea rapid (QuickSort)..................................................................... 136
Sortarea cu combinare (merge sort)......................................................... 138
Sortarea cu numrare (counting sort) ...................................................... 139
Sortarea radix........................................................................................... 140
Sortarea cu grmezi (bucket sort) ............................................................ 141
8.2. CUTAREA.......................................................................................................... 141
Cutarea datelor neordonate ................................................................... 141
Cautare binar ......................................................................................... 142
8.3. BIBLIOGRAFIE.................................................................................................... 143
CAPITOLUL 9 ................................................................................................................... 144
GRAFURI I PROBLEME PE GRAF............................................................................. 144
9.1. ELEMENTE DE TEORIA GRAFURILOR................................................................. 144
Definiii..................................................................................................... 144
Gradul unui nod ....................................................................................... 146
Definiii suplimentare............................................................................... 147
9.2. REPREZENTAREA GRAFURILOR......................................................................... 147
Reprezentarea grafic .............................................................................. 147
Reprezentarea prin structuri de date........................................................ 151
9.3. ARBORI............................................................................................................... 153
Arborele de acoperire............................................................................... 153
Problema arborelui de acoperire minimal ............................................... 154

vi
Algoritmul lui Prim pentru arborele minimal de acoperire ............................. 154
Algoritmul lui Kruskal .................................................................................... 155
9.4. PARCURGEREA GRAFURILOR ............................................................................ 157
9.5. PROBLEME DE ACOPERIRE PE REELE .............................................................. 157
Podurile din Knigsberg .......................................................................... 157
Fleurys Algorithm.......................................................................................... 158
Problema potaului chinez...................................................................... 159
Ciclu Hamiltonian .................................................................................... 159
Problema vnztorului ambulant ............................................................. 160
9.6. BIBLIOGRAFIE.................................................................................................... 160
CAPITOLUL 10 ................................................................................................................. 161
PROBLEME DE MINIM I MAXIM PE REEA......................................................... 161
10.1. INTRODUCERE.................................................................................................. 161
10.2. DRUMUL CEL MAI SCURT................................................................................. 162
Abordri ale problemei drumului cel mai scurt n ci de comunicaie .... 163
Algoritmul lui Dijkstra............................................................................. 163
Algoritmul Bellman-Ford ......................................................................... 165
10.3. CELE MAI SCURTE K DRUMURI PE GRAF......................................................... 166
Introducere ............................................................................................... 166
Diferite metode de tratare ........................................................................ 168
Metoda Bock, Kantner, Haynes ...................................................................... 168
Metoda drumului cel mai scurt........................................................................ 168
Metoda lui Bellman i Kalaba......................................................................... 169
Algoritmi cu corecia etichetei (label-correcting) .................................... 169
Forma de baz a algoritmului cu corecia etichetei ......................................... 170
Algoritm cu indicator de modificare (alteration flag AF)............................. 170
Algoritmul cu list de secvene (sequence list SL)....................................... 170
Algoritmul cu dubl baleiere (double-sweep DS) ........................................ 171
Algoritmul cu fixarea etichetei (label-setting LS).................................. 171
10.4. BIBLIOGRAFIE.................................................................................................. 172
CAPITOLUL 11 ................................................................................................................. 174
ELEMENTE DE TEORIA COZILOR............................................................................. 174
11.1. INTRODUCERE.................................................................................................. 174
Notaia Kendall ........................................................................................ 175
Procesul Poisson ...................................................................................... 177
Proprieti ale cozilor de ateptare.......................................................... 179
Rata de ocupare............................................................................................... 179
Legea lui Little................................................................................................ 179
Proprietatea PASTA........................................................................................ 180
11.2. ANALIZA COZILOR DE ATEPTARE.................................................................. 181

vii
Modele de cozi de ateptare ..................................................................... 181
Distribuia probabilitilor n stare stabil.............................................. 182
11.3. COADA DE ATEPTARE (M/M/1) ...................................................................... 183
11.4. COADA DE ATEPTARE (M/M/C) ...................................................................... 185
Comparaie: un sistem cu dou cozi (M/M/1) i o coad (M/M/2) .......... 187
11.5. COZI DE ATEPTARE CU CAPACITATE FINIT ................................................. 190
Sisteme cu Cozi de ateptare (M/M/1/1)................................................... 190
Sisteme cu Cozi de ateptare (M/M/1/N) .................................................. 191
Caracteristici generale (M/M/c/N) ........................................................... 193
Cozi de ateptare (M/M/c/c) ..................................................................... 194
11.6. COZILE DE ATEPTARE DE TIPUL (M/G/1) ...................................................... 195
11.7. ANALIZA COZILOR DE TIPUL (M/G/-/-/N)........................................................ 197
11.8. COZI DE ATEPTARE CU PRIORITATE.............................................................. 199
Noiuni generale ....................................................................................... 199
Cozi de ateptare cu proritate i ntrerupere............................................ 200
11.9. REELE CU COZI DE ATEPTARE ..................................................................... 202
11.10. BIBLIOGRAFIE................................................................................................ 203


viii



Scnteie Rodian Baze de date i algoritmi pentru ci de comunicaie
ISBN 973-86343-3-4 Editura Societii Academice Matei-Teiu Botez
Iai 2003
1
INTRODUCERE N MANAGEMENTUL
ASISTAT DE CALCULATOR
1.1. INTRODUCERE
Infrastructura transporturilor reprezint o avuie public de o valoare imens
care trebuie transmis ntr-o stare mulumitoare ctre generaiile viitoare.
Responsabilitatea factorilor de decizie este cu att mai mare cu ct de buna
funcionare a cilor de comunicaie depinde desfurarea normal a ntregii activiti
economice a rii, securitatea colectiv i, bineneles, sigurana participanilor la
trafic.
Meninerea n stare de funcionare a infrastructurii depinde de modul n care
administratorul reelei efectueaz aciuni de intervenie. Pentru ca aceste aciuni s fie
eficiente trebuie cunoscut n amnunt situaia calitativ i funcional a
componentelor. Pentru aceasta sunt necesare programe sistematice de inventariere,
inspecie i evaluare. Scopul unor astfel de programe este de a stabili capacitatea
actual i de perspectiv a infrastructurii de a face fa cerinelor i scopului pentru
care a fost realizat.
Pe baza datelor existente se pot stabili strategii, programe, proiecte, soluii
etc. Pentru realizarea lor sunt necesare fonduri substaniale. Suma valorii tuturor
proiectelor reprezint bugetul necesar pentru administrare. Practica a demonstrat c
fondurile disponibile nu sunt niciodat suficiente nicieri n lume. Deoarece pentru
aceleai fonduri concureaz mai multe proiecte, administratorii trebuie s aleag ntre
acestea. Ei trebuie s aleag ntre proiecte localizate n diverse situri dar i ntre
variante de proiect pentru aceeai locaie.
Capitolul 1 Introducere n managementul asistat de calculator
2
Decizia este dificil deoarece n cele mai multe cazuri este necesar predicia
efectelor diferitelor proiecte. n final trebuie selectate acele proiecte care aduc cele
mai mari beneficii. Prin beneficii trebui s nelegem nu numai valoarea bneasc ci i
de alt natur cum ar fi timp, consum de combustibil i piese de schimb etc. Studiul
sistematic al mecanismelor matematice i logice de descriere a comportrii reelei i
utilizatorilor, combinat cu dezvoltarea i utilizarea de algoritmi de predicie, poate
ajuta la eliminarea sau ntrzierea apariiei unor fenomene negative sau se pot
minimiza efectele lor nc nainte de apariie.
Simultan cu programele de ntreinere a infrastructurii trebuie iniiate i
parcurse permanent programe de culegere de date pentru a putea cunoate starea i
evoluia sistemului. O cunoatere mai profund implic utilizarea unui numr ct mai
mare de variabile de descriere. Numrul combinaiilor posibile devine astfel tot mai
mare i mintea uman poate tot mai greu s le cuprind i s le controleze integral. n
consecin, se impune o gndire sistemic i o abordare algoritmic. Complexitatea
tot mai mare a algoritmilor i dimensiunea crescnd a bazelor de date n care se
stocheaz datele impun utilizarea calculatoarelor ca mijloc de lucru.
A fost conceput un cadrul general care include instrumente eficiente de
evaluare, analiz economic, metode moderne de management. Termenul generic este
management asistat de calculator. Scopul unui astfel de mecanism este de a obine un
beneficiu maxim din utilizarea resurselor disponibile.
Managementul infrastructurii rutiere se confrunt cu o permanent obligaie
de a lua decizii. Aceste decizii se refer la alocarea de resurse, fie ele materiale,
financiare, umane sau de echipament. n contextual actual de desfurare a proceselor
alocarea este irevocabil.
Avem aici cteva noiuni ce necesit o explicaie. Irevocabil i decizie vor fi
reinui cu nelesul exprimat de R.A. Howard (1966) [12]:
... irevocabil n sensul c este imposibil sau extrem de costisitor s revenim
la situaia care exista nainte de luarea deciziei. De aceea pentru scopul
propus decizie nu este hotrrea mintal de a urma o anumit linie de aciune
ci mai degrab ducerea la ndeplinire a aciunii n conformitate cu hotrrea.

Procesul decizional este unul complex afectat frecvent de subiectivism i de
incertitudine. O dat cu ptrunderea calculatorului electronic n majoritatea
domeniilor vieii i managementul infrastructurii transporturilor rutiere trebuie s
beneficieze de avantajele utilizrii noilor tehnologii. Viteza de calcul deosebit,
capacitatea de stocare a datelor i procedurile sofisticate de prelucrare permit
specialistului n inginerie civil s fac analize pertinente, multicriteriale care s
permit luarea de decizii corecte, documentate i argumentate.
Baze de date i algoritmi pentru ci de comunicaie
3
1.2. OBIECTUL CURSULUI
Acest curs va trata modul n care datele, informaiile i cunotinele pot fi
obinute, stocate, regsite i prelucrate pentru a fi utilizate n managementul
infrastructurii transporturilor. Un accent deosebit se va pune pe metodele algoritmice
de procesare cu scopul lurii deciziilor.
n capitolele urmtoare vom face doar o trecere n revist i o introducere n
mijloacele moderne de analiz care transpuse n programe rulate pe calculatoarele
moderne pot oferi sprijin n procesul decizional al managementului infrastructurii
transporturilor. Considerm c este de o importan deosebit cunoaterea unor
noiuni de baz privind:
Definirea, reprezentarea i gruparea datelor;
Achiziionarea, stocarea, regsirea i actualizarea datelor n baze de date;
Prelucrarea datelor pe baza algoritmilor pentru obinerea de informaii;
Aplicaii ale utilizrii bazelor de date i a algoritmilor n managementul
infrastructurii transporturilor;
Modelarea i simularea n vederea prelucrrii datelor .
Studierea i aprofundarea acestor noiuni permite colaborarea facil cu ceilali
specialiti implicai n colective multidisciplinare care trateaz probleme de trafic,
administrarea infrastructurii, sisteme informaionale integrate, dirijarea
transporturilor, cercetri operaionale etc.
Acest curs NU se va ocupa de: limbaje de programare, arhitectur hardware,
arhitectur software sau de problematica proiectrii i implementrii de programe de
calcul. Acestea sunt doar tangenial abordate. Chiar dac nu este absolut necesar,
cunoaterea unui limbaj de programare va facilita buna nelegere a noiunilor cu care
ne vom confrunta.
Acest curs NU se ocup de teoria i practica managementului cu aplicare n
reeaua infrastructurii transportului rutier. Este totui strns interconectat, logica i
metodele de raionament nsuite n cadrul acestui curs putnd fi aplicate n
rezolvarea nevoilor managementului.
1.3. DATE, INFORMAII, CUNOTINE
n managementul infrastructurii rutiere, de altfel ca n multe alte domenii i
ca n viaa nsi, exist o activitate susinut i permanent de culegere, prelucrare,
generare i transmitere a datelor, informaiilor i cunotinelor.
La nivelul elementar putem spune urmtoarele:
Datele reprezint elemente simbolice de baz, crmida n construcia
cunoaterii;
Capitolul 1 Introducere n managementul asistat de calculator
4
Informaia reprezint datele prelucrate pentru a corespunde unui scop i
care rspunde la ntrebrile: Cine? Ce? Unde? Cnd? Ct?
Cunotinele aplicaia datelor i informaiilor i rspunde la ntrebarea:
Cum?
nelegerea apreciaz: De ce?
nelepciunea apreciaz nelegerea?
Pentru a asigura o bun nelegere a conceptelor cuprinse n aceast lucrare i
a desfurrii proceselor decizionale care decurg la diferitele niveluri ale
managementului infrastructurii transporturilor vom insista asupra noiunilor de date,
informaii i cunotine. Celelalte depesc limitele pe care ni le-am impus i pot fi
abordate ntr-o eventual lucrare de filozofia cunoaterii.
Informaiile i cunotinele se obin din prelucrarea datelor dup o schem
principial prezentat n figura urmtoare.

DATE
Prelucrare
INFORMAII
Aplicare Raionamente, experimente
CUNOTINE

Fig. 1 Procesul de transformare a datelor n cunotine [13]
DATELE
Activitatea specialitilor din domeniu este caracterizat prin entiti factice
exprimate fie sub form de valori numerice, fie ca percepii i observaii numerice.
Aceste entiti faptice independente i neevaluate, existente n numr mare, se numesc
date [13].
Datele sunt o reprezentare a observaiilor, faptelor, conceptelor sau
instruciunilor ntr-o manier formal adaptat comunicrii, procesrii i interpretrii
de ctre om sau cu mijloace automatizate.
Date sunt toate acele valori numerice, caracter, sau de alt natur ce pot fi
pstrate separat sau grupate pentru a fi stocate, regsite, transmise, prelucrate etc.
pentru a obine informaii.
Baze de date i algoritmi pentru ci de comunicaie
5
Datele reprezint elementul de baz, materia prim, n procesul decizional.
Pot avea diferite reprezentri i pot fi utilizabile sau nu. Ele pot exista n variate
forme: numere, texte, mulimi, colecii etc., dar nu au semnificaie prin ele nsele.
Datele pot fi de patru tipuri (Floridi-1999 [10]):
Date primare datele brute culese din teren, stocate n bazele de date sau
nscrise n cri, simple niruiri de valori care nu au suferit o prelucrare
prealabil sau procesul de prelucrare a fost sumar. Sistemele de gestiune a
informaiilor sunt proiectate, n fapt, s manipuleze n special astfel de date.
Metadate sunt date secundare care ofer indicaii i descriere privind natura
datelor primare. Ajut sistemele de gestiune a bazelor de date s-i
ndeplineasc sarcina prin descrierea proprietilor eseniale ale datelor
primare: localizare, format, actualizare, disponibilitate, drepturi de autor,
etc.
Date operaionale sistemele de gestiune a bazelor de date monitorizeaz i
colecteaz date privind propria funcionare, despre funcionarea sistemului
de calcul sau a performanelor implementrii. Aceste date pot asigura
feedback-ul, bucla de control, pentru identificarea i corectarea
eventualelor erori de funcionare, a greelilor de proiectare sau a
neconcordanelor cu necesitile utilizatorului;
Date derivate sunt acele date care pot fi deduse sau extrase din tipurile
anterioare cnd acestea sunt utilizate pentru comparaii i analize
cantitative.
Ca toate produsele societii umane datele au o un ciclu de via. Funcie de
durata lor de via datele pot fi:
Volatile: date care se obin, se prelucreaz, se utilizeaz n generarea
informaiilor sau altor tipuri de date i a cror valoare nu se pstreaz, sau
Persistente: date stocate pe un suport de informaie cum ar fi hrtie, benzi
perforate, mijloace magnetice (benzi, dischete, discuri), mijloace optice
(compact discuri) etc.
INFORMAIA
Datele obinute n cadrul activitilor de proiectare, execuie, investigaie,
mentenan etc. constituie un material informaional brut care poate fi ordonat i
prelucrat, avnd n vedere diferite obiective. n urma acestui proces de transformare a
datelor, se obin informaii, care reprezint o interpretare a datelor n conformitate cu
anumite situaii particulare sau cu nelegerea de ctre mintea uman n general.
Informaia este trecerea de la valoare la semnificaia care se ataeaz datei.
nelesul care se ataeaz datelor depinde de locul, modul i scopul obinerii lor.
Aceast semnificaie poate fi util dar acest lucru nu este obligatoriu.
Capitolul 1 Introducere n managementul asistat de calculator
6
Exist numeroase ncercri de a defini informaia. Fiecare este adevrat pe
domenii limitate dar nici una nu este suficient de general. Studii de sintez fcute de-
a lungul timpului nu au gsit la autorii citai o unitate de vedere (Braman 1989 [3],
Losee 1997 [15], Machlup 1983 [17], NATO 1974 [21], 1975 [22], 1983 [23],
Schrader 1984 [25], Wellisch 1972 [32], Wersig i Neveling 1975 [33]). Dei pare o
noiune simpl, conceptul de informaie este greu de cuprins ntr-o singur definiie i
poate fi explicat n moduri diferite funcie de categoria de cerine i deziderate care
orienteaz teoria (Bar-Hillel i Carnap 1953 [1], Szaniawski 1984 [29], Shannon 1993
[27]).
Dintre definiiile date i comentariile fcute putem reine:
Informaia reprezint datele care au fost procesate ntr-o form inteligibil
pentru receptor (Davis i Olson 1985 [6]);
Datele reprezint materia prim care este procesat i rafinat pentru a obine
informaia (Silver i Silver 1989 [28]);
Informaie egal date plus semnificaie (Checkland i Scholes 1990 [5]);
Informaia este setul de date care a fost interpretat i neles de receptorul
mesajului (Lucey 1991 [16]);
Datele trebuie interpretate sau prelucrate pentru a deveni informaie
(Warner 1996 [31]).
Noiunea de informaie este adesea utilizat intuitiv pentru a desemna
coninutul semantic non-mental, independent de utilizator, declarativ inclus n
implementri fizice precum baze de date, enciclopedii, locaii internet, programe tv.
(Buckland 1991 [4]), care pot fi colectate, accesate sau prelucrate (Floridi 2002 [9]).
Se pune problema coninutului de adevr a informaiei. Care este situaia
entitilor care sunt privite drept informaie dar care n fapt nu conin valoare de
adevr. Unii autori consider c informaia fals este pseudo-informaie
(Floridi 2002 [9]). Ali autori sunt i mai categorici: informaia fals nu este un tip
inferior de informaie; ea pur i simplu nu este informaie (Grice 1989 [11]);
informaia fals sau informaia greit nu sunt tipuri de informaie
(Dretske 1981 [8]).
Pornind de la cele subliniate mai sus i pe baza abordrii metodologice
dezvoltate n logica situaional de Barwise i Perry 1983 [2]; Israel i Perry 1990
[14]; Devlin 1991 [7], Luciano Floridi 2002 [9] d urmtoarea definiie semantic
pentru elementul individual de informaie:
este informaie obiectiv, semantic dac i numai dac:
const ntr-un set D nevid de date ( d );
datele din D sunt bine formatate;
datele din D au semnificaie;
datele d din D sunt veridice.
Baze de date i algoritmi pentru ci de comunicaie
7
S-a utilizat termenul veridic n loc de adevrat cu sensul de
reprezentnd sau transmind un coninut cu grad de adevr despre o situaie dat.
Toate discuiile ulterioare i referirile la noiunea de informaie din aceast lucrare in
cont de aceast definiie.
Informaia reprezint un element fundamental al activitii n orice
ntreprindere (Punescu et al. 1985 [24]). Ea prezint caracteristici similare celor pe
care le au bunurile materiale: se produce, se stocheaz i se prelucreaz, este
perisabil n timp i are un pre de cost exprimat prin suma cheltuielilor ocazionate
de obinerea, prelucrarea, memorarea sau difuzarea ei.
Indicii de calitate ai informaiei sunt: precizia, oportunitatea, completitudinea.
Precizia este definit prin cantitatea de informaie corect n raport cu
ntregul volum de informaii produs ntr-o anumit perioad de timp. Exist un raport
direct ntre acest indice de calitate i datele pe care se fundamenteaz informaiile
respective; pentru a crete valoarea acestui indice este necesar un volum mai mare de
date. n acelai timp ns obinerea informaiilor dintr-o cantitate mare de date impune
un volum mai mare de prelucrri care, n anumite situaii, poate veni n contradicie
cu alt indice de calitate i anume cu oportunitatea.
Relevana sau actualitatea exprim faptul c o informaie este util ntr-un
anumit moment, legat de desfurarea n timp a unor fenomene. Obinerea
informaiilor, care privesc aceste fenomene, dup depirea unor etape ale evoluiei
lor reduc sau anuleaz valoarea acestor informaii. Corelat cu precizia apare o
anumit contradicie, a crei soluionare depinde de natura i specificul activitii n
cauz. Fenomenul de perisabilitate n timp a informaiilor se face simit prin
diminuarea valorii informaiei n raport cu preul de obinere al acestora.
Completitudinea exprim necesitatea de a dispune de ct mai multe sau chiar
de totalitatea informaiilor referitoare la un domeniu al activitii umane.
Obinerea informaiilor cu calitile menionate anterior este condiionat att
de datele care le genereaz, ct i de mijloacele de prelucrare disponibile. Dac datele
folosite n procesul de obinere a informaiilor sunt inexacte, incomplete sau perimate,
informaiile care rezult sunt de valoare redus. Orice informaie trebuie s reduc din
incertitudine i s conduc la o mai bun nelegere a anumitor situaii sau fenomene.
Potrivit lui Zadeh (1997 [34]) informaiile disponibile se pot grupa n trei
categorii:
Informaii factice care sunt numerice i bazate pe msurtori (ex. nlimea
grinzii este de 82,5 cm);
Informaii pseudo-numerice i bazate pe pseudo-msurtori (ex. ne ntlnim
la trei);
Informaii bazate pe percepii care sunt n special aprecieri lingvistice (ex.
cineva este cinstit i artos).
Capitolul 1 Introducere n managementul asistat de calculator
8
Aceste grupe difer ntre ele prin gradul de incertitudine.
Cnd exist incertitudine n aprecierea unui fenomen se poate defini
cantitatea de informaie care nltur aceast incertitudine. Informaia este n acest caz
numit i entropie i este reprezentat de numrul minim de ntrebri ce trebuie pus n
medie pentru a elimina incertitudinea.
Numeric, informaia poate fi estimat cantitativ funcie de probabilitatea
strilor. Astfel, considernd un numr de stri:
n
x x x ,..., ,
2 1
a cror probabilitate de
apariie este dat de ( )
i
x P , cantitatea de informaie se calculeaz cu formula:
( ) ( )

=
i
i i
x P x P I
2
log
(1)
Logaritmul n baza doi implic msurarea informaiei n bii. Trebuie fcut
convenia ( ) 0 0 log 0
2
= , adic o stare cu probabilitatea 0 nu aduce informaie n
sistem. Se poate observa c i existena unei stri cu probabilitate 1 conduce la
informaie 0.
CUNOTINELE
Informaiile constituie baza raionamentelor, experimentrilor imaginate de
mintea uman, n scopul obinerii de noi cunotine.
Cunotinele reprezint esena ce rezid n spatele datelor i informailor ntr-
un domeniu de activitate. Cunotinele se obin prin cercetare tiinific i sunt un
rezultat al sintezei procesrii datelor, informaiilor i experienei.
Cunotinele acumulate faciliteaz aprecierea relaiilor dintre atributele unui
element, obiect, sistem, proces. Relaiile pot fi: procedurale, temporale, structurale,
spaiale, logice, semantice, etc. Pe baza nelegerii relaiilor se poate lua o decizie ntr-
un context dat.
Capacitatea de a lua decizii corecte este influenat de disponibilitatea datelor
i de aptitudinea de a anticipa consecinele aciunii. Capacitatea de a prezice ntr-un
mod raional consecinele lucrrilor de intervenie constituie cunotina n domeniul
managementului patrimoniului: cu ct este mai bogat corpul cunotinelor cu att este
mai puternic instrumentul de administrare; cu ct mai mare numrul de opiuni cu att
decizia va avea o acuratee mai ridicat.
Analiza mai multor variante i managementul bazat pe cunotine este
alegerea logic i totui prea puine persoane sau compartimente de planificare
efectueaz analize explicite i complete. Chiar i atunci cnd se consider mai multe
opiuni, judecata este superficial i se oprete dup civa pai. Procesul decizional
este prezentat n figura urmtoare.
Baze de date i algoritmi pentru ci de comunicaie
9


M
e
d
i
u
l

f
i
z
i
c
,

s
o
c
i
a
l
,

p
o
l
i
t
i
c
,

t
i
i
n

i
f
i
c

Colectarea datelor
Performane
Soluii alternative
- Selecie -
Luarea deciziilor
Realizare
Analiz
Modele
Politici
Buget
Cunotine

Fig. 2 Procesul decizional (dup [26])
Exist dou cauze pentru care oamenii nu iau decizii bazate pe cunotine: (1)
deficien n cunoatere i (2) comportament inadecvat.
1. pentru a utiliza cunotinele este necesar ca acestea s existe, s fie
disponibile i s fie incluse n instrucia personalului;
2. interese personale sau de grup, ineria sau indiferena pot perturba procesul de
decizie.
Pornind de la cele prezentate mai sus este necesar cercetare tiinific pentru
a furniza administratorului metode extinse de colectare i interpretare a datelor,
modele corespunztoare i algoritmi decizionali eficieni. Opiunile trebuie
organizate, clasificate i corect evaluate.
1.4. VALOAREA DATELOR, INFORMAIILOR I CUNOTINELOR
ntr-o lume cu magistrale informaionale datele, informaiile i cunotinele
au devenit mrfuri a cror comercializare cere sau se bazeaz pe metode de evaluare
(Mowshowitz 1994 [20]).
Capitolul 1 Introducere n managementul asistat de calculator
10
n acest sens unii autori sunt extrem de categorici:
Pentru a fi informaie, informaia trebuie s aib o valoare, trebuie s poat
fi utilizat n procesul decizional i s fie proiectat s conduc la o aciune... Ea
trebuie s reduc incertitudinea celor care o obin (Machlup i Mansfield 1983 [18],
citat de Meadow i Yuan, 1997 [19]).
Exist mai multe raiuni privind studierea valorii datelor, informaiilor i
cunotinelor:
Motivaia educativ-instructiv studierea valorii poate conduce la
identificarea acelor entiti care trebuie luate n consideraie n procesul de
administraie fie prin utilizarea de ctre persoanele fizice implicate, fie
prin includerea lor n sisteme automate, informatizate de luare a deciziei.
Motivaia metodologic metodele de evaluare a valorii informaiei i
cunotinelor ajut la evaluarea sistemelor decizionale stabilite n urma
cercetrii sau experienei practice. Selecia ntre diferite tipuri de sisteme
de inteligen artificial utilizate n rezolvarea problemelor se poate face
prin msurarea valorii cunotinelor utilizate, generate i manipulate.
Motivaia organizatoric se leag de funcionarea sistemelor complexe n
medii integrate, fie ele instituionale sau artificiale. Cnd mai multe
module/compartimente sunt n competiie pentru rezolvarea unei sarcini,
evaluarea cunotinelor poate face identificare celui mai potrivit.
La nivelul actual, n administrarea infrastructurii transporturilor, dei nu se
recunoate, s-a fcut prea puin pentru a stabili n mod tiinific detaliile legate de
colectarea datelor anume: cantitatea, precizia, frecvena i chiar scopul. Cele mai
importante rmn ns timpul i costul i aici probabil s-a fcut cel mai puin. Pe de
alt parte, industria transporturilor are o dinamic deosebit. Elementele de detaliu
care trebuie msurate i prelucrate se schimb destul de des. Colectarea datelor devine
astfel o int n continu micare.
Probabil c singurul domeniu care este reglementat din punctul de vedere al
informaiei i unde datele se culeg n continuu, dup proceduri bine stabilite, este
industria transporturilor aeriene, dar i aici erorile, omisiunile, imprecizia afecteaz
procesul, rezultatele fiind uneori catastrofale.
n domeniul administrrii infrastructurii terestre s-au fcut pai prea puini i
prea mici ca importan n vederea stabilirii raportului cost-beneficiu n ceea ce
privete colectarea datelor. Fiind un proces pe termen lung, factorii de decizie care
investesc n programe de colectare a datelor investesc probabil n ceva din care ei nu
obin nici un beneficiu. Majoritatea datelor rmn motenire succesorilor. De aceea,
de multe ori, factorii politici nici nu iau n calcul proiecte care presupun culegerea de
date, urmrirea comportamentului n timp etc.
Baze de date i algoritmi pentru ci de comunicaie
11
Pentru prelucrarea datelor i extragerea de informaii semnificative sunt
necesare programe statistice performante. Acestea au n general preuri mari, dar
programele statistice de scar larg, care se preteaz la prelucrarea datelor din
infrastructura transporturilor, au costuri exorbitante. Fiind finanate de la buget,
majoritatea ageniilor de administrare nu dispun de fondurile necesare pentru
achiziionarea i meninerea unor asemenea programe. n plus, justificarea necesitii
cheltuielilor pentru colectarea datelor ori nsi colectarea datelor este deficitar. De
multe ori nu se argumenteaz relevana datelor colectate i implicaiile cunoaterii.
Conceptul de relevan i msurarea acesteia sunt deosebit de delicate.
Tate-Glass .a. (2000 [30]) compar msurarea relevanei cu statul la focul de tabr:
prea departe de flacra politic riti s fii tratat cu rceal, o poziie prea apropiat
prezint riscul de a te arde din cauza cheltuielilor inutile.
Fundamental n rezolvarea problemei este anticiparea necesarului de date.
Proiectele de statistic n infrastructura transporturilor, ca i n alte domenii, sunt 5%
statistic i 95% logistic, ele fiind exerciii complexe de organizare i planificare.
Elementul esenial este n mai mic msur competena n analize statistice ct
abilitatea de a anticipa politicile i nevoile de planificare n viitor.
Cnd problemele de planificare sau de strategie ajung la Ministerul
Transporturilor spre studiu este deja prea trziu s ncepem colectarea de date. n
planificri strategice trebuie s se lucreze cu acele date care sunt imediat disponibile.
Atunci cnd datele sunt cerute, conform Tate-Glass (2000 [30]), profesionitii
informaiei pot rspunde n:
trei minute, cnd datele sunt pe raft;
trei ore, dac trebuie cutat prin baza de date sau dosare;
trei zile, cnd datele trebuie prelucrate;
trei sptmni, dac trebuie fcut ceva programare sau modificat programul;
trei luni, cnd este necesar prelucrarea complet a datelor;
trei ani, dac este necesar colectarea de noi date.
De aceea sunt necesare programe proactive de colectare a datelor care s vin
n ntmpinarea viitoarelor analize de politici n transporturi.
1.5. UTILIZAREA DATELOR
Domeniul managementului infrastructurii rutiere este un domeniu intensiv n
utilizarea datelor, informaiilor i cunotinelor. Date de teren, de structur, de
materiale, de reea, informaii de evoluie, despre origine destinaie, cunotine despre
comportamentul agenilor umani implicai n trafic, al vehiculelor i echipamentelor.
Iat doar cteva elemente care trebuie tratate de administratorii infrastructurii
transporturilor.
Capitolul 1 Introducere n managementul asistat de calculator
12
Pentru a avea la dispoziie date, informaii i cunotine corecte i complete n
timp util administratorii infrastructurii transporturilor trebuie s aib n vedere
urmtoarele aciuni:
Identificarea necesitilor de date;
Crearea unui sistem de reprezentare a datelor;
Implementarea i evaluarea unui sistem de colectare a datelor;
Crearea i administrarea unui sistem de stocare i regsire a datelor
Implementarea sistemului de transmitere a datelor;
Identificarea algoritmilor utili n mecanismul decizional;
Identificarea, implementarea i evaluarea unor proceduri de prelucrare a
datelor;
Analiza rezultatelor n conformitate cu scopul urmrit
Evaluarea sistemului de management a datelor.
Lucrarea de fa urmrete i trateaz aceti pai, sau cel puin ncearc s o
fac. Totodat se ncearc s se prezinte laolalt noiunile i metodele de procesare
necesare pentru dezvoltarea unui sistem integrat de management a infrastructurii.
1.6. BIBLIOGRAFIE
[1] Bar-Hillel Y., Carnap R.: An Outline of a Theory of Semantic Information, 1953, rep. in
Bar-Hillel 1964.
[2] Barwise J., Perry J.: Situations and Attitudes; MIT Press, Cambridge Mass. 1983.
[3] Braman S.: Defining Information; Telecommunications Policy 13, pp.233-242., 1989.
[4] Buckland M.: Information as Thing; Journal of the American Society of Information
Science (42.5), pp.351-360, 1991.
[5] Checkland P. B., Scholes J.: Soft Systems Methodology in Action; John Wiley & Sons,
New York 1990.
[6] Davis G. B., Olson M. H.: Management Information Systems: Conceptual Foundations,
Structure, and Development; 2nd ed., McGraw-Hill, New York 1985.
[7] Devlin K.: Logic and Information; Cambridge University Press, Cambridge 1991.
[8] Dretske F.: Knowledge and the Flow of Information; MIT Press, Cambridge Mass. 1981,
rep. Stanford: CSLI, 1999.
[9] Floridi Luciano: Is Information Meaningful Data ?; Electronic Conference on
Foundations of Information Science (FIS 2002)
[10] Floridi Luciano: Philosophy and Computing An Introduction; London New York:
Routledge, 1999.
[11] Grice P.: Studies in the Way of Words; Harvard University Press, Cambridge Mass. 1989.
[12] Howard R.A.: Decision Analysis: Applied Decision Theory; in Proceedings of the Fourth
International Conference on Operational Research, D. B. Hertz and J. Melese, eds.,
Wiley, New York, 1966, pp. 55-71.
[13] Ionescu Constantin, Scnteie Rodian: Informational Flows in Bridge Engineering; in
Ioani A., Chira C., Manea D. (editors) Proceedings of the International Conference,
Constructions 2003, Volume 4 Road, Bridges and Railways, pp. 209-216,
Argonaut&Napoca Star, Cluj-Napoca, Romania, May 2003.
Baze de date i algoritmi pentru ci de comunicaie
13
[14] Israel D., Perry J.: What is Information?; in P. Hanson (ed.), Information, Language and
Cognition, pp.1-19, University of British Columbia Press, Vancouver 1990.
[15] Losee R. M: A Discipline Independent Definition of Information; Journal of the
American Society for Information Science, 48.3, 254-269, 1997.
[16] Lucey T.: Management Information Systems; 6th ed. DP Publications Ltd, London 1991.
[17] Machlup F.: Semantic Quirks in Studies of Information; in Machlup, F. And Mansfield,
U. eds.. The Study of Information: Interdisciplinary Messages, pp. 641-671 John
Wiley, New York, 1983.
[18] Machlup Fritz, Mansfield Una: The Study of Information: Interdisciplinary Messages;
John Wiley, New York, 1983.
[19] Meadow C. T., Yuan, W.: Measuring the impact of information: defining the concepts;
Information processing and management. Vol. 33, no. 6, pp. 697-714, 1997.
[20] Mowshowitz A.: Information as a commodity: assessment of market value; In Yovits, M.
C., editor, Advances in Computers, Vol. 38, pages 247316, London. Academic Press.,
1994.
[21] NATO 1974, Advanced Study Institute in Information Science, Champion, 1972.
Information Science: Search for Identity; ed. by A. Debons (New York: Marcel
Dekker).
[22] NATO 1975, Advanced Study Institute in Information Science, Aberystwyth, 1974.
Perspectives in Information Science, ed. by A. Debons and W. J. Cameron. (Leiden:
Noordhoff).
[23] NATO 1983, Advanced Study Institute in Information Science, Crete, 1978. Information
Science in Action: Systems Design, ed. by A. Debons and A. G. Larson. (Boston:
Martinus Nijhoff).
[24] Punescu, F., Badea-Dinc, N., Stcu., E., Informatizarea societii: un fenomen
inevitabil?, Ed. iinific i Enciclopedic, Bucureti, 1985.
[25] Schrader, A.: In Search of a Name: Information Science and its Conceptual Antecedents;
Library and Information Science Research 6, pp.227-271, 1984.
[26] Scnteie Rodian: Decision Making Process in Highways Structures Management; in
Ioani A., Chira C., Manea D. (editors) Proceedings of the International Conference,
Constructions 2003, Volume 4 Road, Bridges and Railways, pp. 287-294,
Argonaut&Napoca Star, Cluj-Napoca, Romania, May 2003.
[27] Shannon, C. E.: Collected Papers; ed. N. J. A. Sloane & A. D. Wyner, Los Alamos, CA,
IEEE Computer Society Press, 1993.
[28] Silver G. A., Silver M. L.: Systems Analysis and Design; Addison Wesley, Reading MA,
1989.
[29] Szaniawski, K.: On Defining Information; 1984, rep. in Szaniawski 1998.
[30] Tate-Glass Martha J., Bostum Rob, Witt Greg: Data, Data, DataWheres the Data?;
TRB Millennium Papers, National Research Council, Transportation Research
Board, Washington, D.C., USA, January 2000.
[31] Warner T.: Communication Skills for Information Systems; Pitman, London 1996.
[32] Wellisch, H., From Information Science to Informatics; Journal of Librarianship 4,
pp.157-187, 1972.
[33] Wersig G., Neveling U.: The Phenomena of Interest to Information Science; Information
Scientist 9, 127-140, 1975.
[34] Zadeh LA: Toward a Theory of Fuzzy Information Granulation and its Centrality in
Human Reasoning and Fuzzy Logic; Fuzzy Sets and Systems, vol. 90, No.2, pp.111-
127, 1997.
Scnteie Rodian Baze de date i algoritmi pentru ci de comunicaie
ISBN 973-86343-3-4 Editura Societii Academice Matei-Teiu Botez
Iai 2003
14
STRUCTURI DE DATE
Rezolvarea problemelor cu ajutorul calculatorului presupune analiza,
gruparea i structurarea datelor pentru a obine eficien maxim. Utilizarea
structurilor de date este impus pe de o parte de nelegerea facil a problemei i pe de
alt parte de necesitatea implementrii practice a procedurilor de rezolvare a
problemei pe mainile fizice.
Structurile de date reprezint o cale sistematic de organizare i accesare a
datelor [36].
Reprezentarea datelor i a structurilor de date depind n mare msur de
construcia calculatoarelor fizice i de implementrile limbajelor de programare.
Totui pe majoritatea calculatoarelor i n majoritatea limbajelor apar urmtoarele
structuri de date: setul, articole (nregistrarea), tablouri, liste, urne (buckets), stive,
cozi, arbori i reele.
n prezenta lucrare suntem preocupai mai puin de reprezentarea efectiv a
datelor n memorie sau de tipurile implicite oferite de limbajul de programare. De
aceea prima structur tratat este articolul sau nregistrarea. Aceasta este baza pentru
toate celelalte reprezentri de tipuri de date abstracte.
2.1. ARTICOLUL
Articolul sau nregistrarea este o structur neomogen reprezentnd reuniunea
unui numr fix de componente numite cmpuri care constituie logic o unitate.
Cmpurile din structur sunt caracterizate prin tipul lor care poate fi unul primar,
oferit de limbajul de programare, sau unul complex, definit de ctre proiectant (deci la
rndul su un articol). Gruparea cmpurilor se face din considerente de procesare dar
Baze de date i algoritmi pentru ci de comunicaie
15
n cele mai multe cazuri sunt grupate atribute comune ale unei entiti care trebuie
tratat. Lungimea total a articolului este dat de suma lungimilor cmpurilor
(

=
i
i
L A L ) ( ) (vezi Fig. 3).
Articol A
Cmp_1 Tip_cmp_1 L1
Cmp_2 Tip_cmp_2 L2
Cmp_3 Tip_cmp_3 L3

Cmp_i Tip_cmp_i Li

Cmp_n Tip_cmp_n Ln

Fig. 3 Structura unui articol
Regsirea cmpului se face cu ajutorul unui identificator asociat la definire.
Pentru regsirea unui cmp cnd exist mai multe articole se utilizeaz numele
articolului i al cmpului mpreun.
Implementrile moderne ale obiectelor pot genera articole cu structur
variabil. Chiar dac unele dintre variante au lungimi diferite, articolul n ansamblu
va avea lungimea celei mai lungi dintre variante i aceasta este cantitatea de memorie
care va fi rezervat de fiecare dat cnd se creeaz un nou articol.
2.2. TIPURI ABSTRACTE DE DATE
O categorie special de structur de date derivat din articol este obiectul. Un
obiect, denumit n unele implementri recente clas, ncapsuleaz ntr-o structur
unic att datele ct i un set de proceduri i funcii care efectueaz prelucrarea de
baz a datelor respective. Astfel de proceduri, ataate n momentul definirii, elimin
ambiguitatea i ofer sigurana c prelucrarea i rezultatele obinute se refer strict la
setul de date coninut de obiect.
Procedurile definite n interiorul obiectului ajut proiectantul s nu se mai
gndeasc la procesul complicat de referire a cmpurilor i regsire a datelor care
apare cnd acestea sunt cutate din exterior. Modalitile efective de definire a
obiectelor i a procedurilor i funciilor ataate depind de limbajul de programare ales.
Definirea unor noi obiecte se poate face pe baza unora deja existente. Noile obiecte
motenesc structura de date i proprietile de la cele anterioare. Ele pot defini noi
elemente sau le pot modifica pe cele anterioare.
ncapsularea componentelor i motenirea permit un anumit grad de
abstractizare a datelor (a abstractiza cu sensul de a distila un sistem complicat pn
Capitolul 2 Structuri de date
16
la conceptele sale fundamentale). Aceasta implic identificarea componentelor i
descrierea funcionalitii lor. Datele sunt organizate modular i exist posibilitatea ca
detaliile interne de implementare s fie ascunse utilizatorilor, iar comunicarea s se
fac numai prin acea parte a datelor i funciilor care sunt declarate publice. Se obine
astfel un grad ridicat de libertate pentru analiti i programatori.
Aplicnd paradigma abstractizrii la proiectarea structurilor de date obinem
tipuri abstracte de date - TAD.
Tipul abstract de date este un model matematic prin care se definesc tipurile
de date ce pot fi stocate ntr-o structur i metodele disponibile s proceseze datele.
Se definete deci o interfa. Interfaa este un contract prin care ni se garanteaz
disponibilitatea unor elemente, fr s ni se ofere detalii privind implementarea
intern [36].
Tip Abstract de Date = Interfa + Implementare (2)
Interfaa definete proprietile logice ale TAD i n special profilul sau
semntura operaiilor sale.
Implementarea definete reprezentarea structurii de date i algoritmii de
implementare a operaiilor.
Un TAD este realizat printr-un pachet, cel mai adesea un pachet generic.
Particularizrile se fac prin definirea de descendeni care preiau (motenesc)
caracteristicile tipului iniial.
Specificaiile pachetului sunt reprezentate de interfa. Structura de date este
declarat ca o zon privat. Operaiile sunt declarate sub forma unor subprograme ce
au cel puin un parametru.
Partea privat a specificaiilor i a corpului pachetului reprezint
implementarea TAD. Tot aici este inclus i reprezentarea structurii de date.
Exemple de tipuri de operatori [48]:
Constructori crearea i iniializarea unui obiect.
Selectori furnizeaz informaii despre starea obiectului.
Modificatori altereaz starea unui obiect.
Destructor distruge obiectul.
Iteratori (engl. iterators; franc. parcoureurs, itrateurs) acceseaz toate
prile unui obiect compus i aplic o anumit aciune fiecruia dintre ele.
Studiu de caz
Un exemplu de limbaj de programare ce permite declararea i lucrul cu tipuri
abstracte de date este i dialectul de Pascal al mediului de programare Delphi
dezvoltat de Borland.
Baze de date i algoritmi pentru ci de comunicaie
17
type
TNewObject = class(TOldObject)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
end;

Fig. 4 Declararea claselor n Delphi Pascal
Un membru (element) privat (engl. private) este invizibil n afara unitii de
programare sau modulului n care clasa a fost declarat. Prin plasarea declaraiilor
claselor legate ntre ele n acelai modul putei s oferii claselor acces una la
resursele alteia fr ca elementele respective s fie vzute din afar de alte clase sau
proceduri.
Un membru protejat (engl. protected) este vizibil n modulul n care clasa a
fost declarat i n oricare clas descendent, indiferent de modulul n care aceasta
apare. Se intenioneaz ca aceste elemente s fie caracteristici generale pentru toi
descendenii.
Un membru public este vizibil oriunde clasa este vizibil i poate fi referit.
Un membru publicat (engl. published) are aceeai vizibilitate ca orice
membru public. Diferena const n faptul c pentru aceste elemente se genereaz
informaii suplimentare pe timpul rulrii (RTTI runtime type information). Prin
aceasta se pot asocia metode specifice cu proprieti specifice (de ex. proceduri de
tratarea evenimentelor cu evenimente particulare).
2.3. SETUL
Setul sau mulimea reprezint o colecie finit de elemente
{ }
n
m m m M , , ,
2 1
K = . Deoarece, prin definiie, este finit, setul poate fi imaginat ca un
vector. Deoarece componena sa este aprioric definit i cunoscut, reprezentarea ca
vector de tipul ( )
n
m m m , , ,
2 1
K nu ar aduce informaii relevante. Este mult mai
important s reprezentm un sub-set S ce poate fi definit pe mulimea iniial.
Pentru aceasta vom defini o funcie de apartenen } 1 , 0 { : M A , astfel:
( )

= =
S m
S m
m A a
i
i
i i
cnd
cnd
, 0
, 1

(3)
Acum sub-setul poate fi reprezentat prin vectorul valorilor funciei de
apartenen ( )
n S
a a a v , , ,
2 1
K = .
Capitolul 2 Structuri de date
18
Operaiile ce trebuie s fie create pe un sub-set sunt:
Inserare, pentru a introduce un element n sub-set [Insert(e,S) eS];
Eliminare, care scoate elementul din sub-set [Suppress(e,S) eS];
Aparine, funcie care face cunoscut apartenena unui element la sub-set;
Vid, indic faptul c sub-setul nu conine nici-un element;
Alte operaii ce se pot defini sunt:
complementul,
reuniunea,
intersecia,
diferena,
diferena simetric.
2.4. TABLOUL
Tabloul reprezint, n esen, o mulime de date de acelai tip care se
grupeaz n poziii succesive n aa fel nct s poat fi regsite prin utilizarea unor
indici de poziie.
Astfel aplicaia:
{ } { } { } M n n n f
k
, , 2 , 1 , , 2 , 1 , , 2 , 1 :
2 1
L L L L (4)
care ataeaz fiecrui k-uplu de indici ( )
k
i i i , , ,
2 1
L un element
M m
k
i i i

, , ,
2 1
L
definete un tablou k-dimensional. Pentru cazul particular 1 = k se
obine un vector. Reprezentarea fizic a tablourilor se face prin rezervarea de locaii
succesive ntr-o zon contigu de memorie.
Identificarea unui anumit element din tablou se face prin numele tabloului i
setul de indici corespunztori elementului. Aa cum spuneam la nceput tabloul se
regsete ca o structur omogen i oricare dintre operaiile definite se aplic oricrui
element din tablou. Pe astfel de structuri se pot lesne aplica proceduri repetitive.
Implementrile moderne ale tablourilor permit definirea unor seturi de indici care nu
pornesc obligatoriu de la 1 sau 0, lucru ce d mai mult flexibilitate n programare.
Elementele din tablou pot fi de tip simplu oferite de ctre limbajul de
programare (ntregi, reali, iruri de caractere etc.) dar i tipuri complexe definite de
ctre utilizator (ex. articole, obiecte etc.).
n principiu, lungimea unui tablou este fix i deci numrul de elemente este
constant. n general, pentru a simula un numr variabil de elemente se contorizeaz
ntr-o variabil extern numrul de elemente ocupate sau se utilizeaz tablouri de
pointeri pentru care se aloc ulterior articole sau obiecte.
Baze de date i algoritmi pentru ci de comunicaie
19
2.5. LISTA NLNUIT
Lista este o structur de date care are lungime variabil. n multe cazuri, nu se
poate cunoate din momentul proiectrii programului care va fi numrul exact al
elementelor utilizate n calcul.
Alocarea unui anumit spaiu fixat n faza de programare poate conduce la
dou situaii neplcute: fie se aloc spaiu insuficient i problema rmne nerezolvat,
fie se aloc prea mult spaiu care rmne neutilizat i se consum inutil din resursele
calculatorului blocnd celelalte programe. Soluia propus a fost de a aloca dinamic
memorie pe msur ce nevoia o impune. n structura articolelor, pe lng informaia
util, se pstreaz referine ctre alte articole similare care pot fi create pe msur ce
programul este rulat. Se creeaz astfel o nlnuire care are o lungime variabil,
programul utiliznd atta memorie ct este necesar.


Date de calcul
Referine
(date de legtur)

Fig. 5 Structura unui obiect dintr-o list
nlnuirea de articole similare care conin referine unul despre altul pstrnd
un singur nivel de legturi se numete list (Fig. 6).


DAT_1 REF_1 DAT_2 REF_2 DAT_N-1 REF_N-1 DAT_N NIL
BAZA

Fig. 6 nlnuirea n list
Lista este accesat din interiorul programului prin intermediul unei adrese de
baz (o referin, un pointer etc.), elementul din list care este referit fiind capul de
list. Se observ c datele referin din ultimul element din list sunt vide (NIL),
acesta fiind unul dintre indicatorii de terminare a nlnuirii.
Din punct de vedere matematic, lista reprezint o secven de zero sau mai
multe elemente de un anumit tip dat. Numrul n de elemente ce se regsesc n list
reprezint lungimea listei. Cnd lungimea este 0 adresa de baz este vid (NIL).
Elementele pot fi identificate prin poziia lor n list. Din considerente ce in
de reprezentarea numerelor ntregi n formatul binar este uzual a se spune c primul
element ocup poziia 0.
Dac ultimul element conine o referin ctre capul de list avem o list
circular. nlnuirea poate fi simpl, dar se poate ca fiecare element s conin
referine att ctre succesor ct i ctre predecesor. n acest caz nlnuirea este dubl.
Capitolul 2 Structuri de date
20

BAZA
DAT_1 NIL refU_1 DAT_1 refA_1 refU_1 DAT_N refA_N NIL

Fig. 7 List cu nlnuire dubl
Posibilitatea crerii de liste i, n general, proprietile pe care au fost
identificate pentru articole se pstreaz i pentru obiecte.
Pe liste se pot defini unele operaiuni:
Adaug(x,L) / Add(x,L). Adaug elementul x la lista L. Poziia va fi la coada
listei. Lungimea listei se incrementeaz.
Introduce(x,p,L) / Insert(x,p,L). Include elementul x n cadrul listei L n
poziia p.
Caut(x,L) / Find(x,L). Returneaz poziia elementului x n lista L. Dac x nu
este inclus n list atunci rezultatul este sfritul listei. Dac x este inclus
mai mult dect o singur dat atunci prima apariie ntlnit este ntoars ca
rezultat.
Element(p,L) / Retrive(p,L). Returneaz elementul aflat pe poziia p n lista
L. Rezultatul este nedefinit (Nul) dac p este mai mare sau egal cu
lungimea listei. Tipul rezultatului este tipul elementului este acelai cu tipul
definit pentru elementele listei.
Elimin(p,L) / Delete(p,L). terge elementul din poziia p din lista L.
Operaia afecteaz doar lista, elementul rmne n memorie i poate fi
accesat dac este referit prin alte metode (de ex. mai este inclus ntr-o alt
list). Operaia trebuie utilizat cu atenie pentru a nu lsa obiecte fr cale
de acces.
Prim(L) / First(L). ntoarce poziia primului element din lista L. Permite
utilizarea operaiei Urmtor (engl. Next).
Ultim(L) / Last(L). ntoarce poziia ultimului element din list.
Urmator(L) / Next(L). ntoarce poziia elementului din lista L care urmeaz
dup elementul selectat. Dac n list exist mai puin de dou elemente
sau elementul selectat este ultimul din list atunci rezultatul este nedefinit.
Anterior(L) / Preview(L). ntoarce poziia elementului din lista L care se
situeaz naintea elementului selectat. Dac n list exist mai puin de
dou elemente sau elementul selectat este primul din list atunci rezultatul
este nedefinit.
Sterge(L) / Clear(L). Asemntor cu eliminarea dar pe lng tergerea
referirii din list se ncheie i existena obiectului. Dup aceast operaie
obiectul nu mai poate fi accesat. Atenie: dac obiectul mai era referit prin
alte mecanisme (de ex. era inclus n alt list) apelarea va genera erori
fatale.
Baze de date i algoritmi pentru ci de comunicaie
21
Mai jos prezentm cteva exemple de implementri de operaii pe liste.
Proc Inser( x : DataType, L: ListType )
x.Next <- head
If head<>Nil then Head.Prev <- x
Head <- x
x.preview <- Nil
EndProc

Fig. 8 Implementarea funciei de inserarea
n Fig. 6 s-a prezentat o operaie de inserare. S-a presupus implicit c
inserarea se face n capul listei (prima poziie).
Corespunztor operaiei de adugare, s-a creat i operaia de eliminare. n
figura urmtoare prezentm un exemplu de implementare.
Proc Delete( x : DataType, L: ListType )

If x.preview Nil
Then x.preview.next x.next
Else L.Head x.next
EndIf
If x.Next Nil
Then x.Next.Preview x.Preview
EndIf

EndProc

Fig. 9 tergerea unui element dintr-o list nlnuit
2.6. URNE
Urnele sau grmezile (literatura de limb englez utilizeaz termenul de
bucket) reprezint o grupare de date a cror ordine de utilizare nu prezint importan.
2.7. TABELE DE DISPERSIE (HASH TABLES)
Tabelele de dispersie (hash tables) reprezint o metod eficient de
implementare a dicionarelor. Pentru cutare ele asigur o complexitate ( ) 1 O n medie
i ( ) n O n cazul cel mai defavorabil [37], [43].
n practic, tabelele de dispersie sunt simpli vectori adresai de o funcie de
repartiie. Fiecare celul a vectorului conine o referin (pointer) ctre o list
nlnuit n care se plaseaz elementele dicionarului.
Capitolul 2 Structuri de date
22
Prezentm n continuare un exemplu de tabel de dispersie cu dimensiunea 5.


20
0
25 10 -
21
1
1 61
2 -
2
26 -
3 -
9
4
54 -

Fig. 10 Tabel de dispersie
Cazul cel mai defavorabil este dat de situarea tuturor elementelor ntr-o
singur list nlnuit.
Un asemenea caz este dat sau evitat de forma funciei de repartiie. Dac
funcia de repartiie este uniform atunci lista iniial se subdivide n pri
aproximativ egale. Pentru aceasta se utilizeaz diverse tipuri de funcii:
Restul mpririi la M (operaia modulo M). Cheia considerat pentru fiecare
element se mparte la dimensiunea tabelei. Restul rezultat se utilizeaz ca
index pentru poziionarea n tabel.
Se alege M s fie numr prim. Se asigur o uniformitate mai bun.
O tabel de dispersie, ca structur de stocare a datelor are un constructor i
trei metode:
Creare / Init creeaz tabela i iniializeaz cmpurile la valoarea implicit;
Insereaz(M) / Insert(M) calculeaz indexul ) (M index i = cu ajutorul
funciei de dispersie i introduce elementul n lista adresat de poziia i din
tabel;
Caut(M) / Find(M) calculeaz indexul ) (M index i = cu ajutorul funciei
de dispersie i caut elementul n lista adresat de poziia i din tabel; dac
nu este gsit se returneaz Nil sau se genereaz o eroare;
Elimin(M) / Remove(M) calculeaz indexul ) (M index i = cu ajutorul
funciei de dispersie, caut elementul n lista adresat de poziia i din
tabel i elimin obiectul; dac nu este gsit se returneaz Nil sau se
genereaz o eroare;
2.8. STIVE
Stivele reprezint structuri de date care au o singur cale de acces att pentru
introducere ct i pentru extragere de date: vrful stivei. Pentru ele se aloc iniial o
Baze de date i algoritmi pentru ci de comunicaie
23
zon static, fix a crei coninut este vid (numrul de elemente este 0). Pe msur ce
noi date trebuie pstrate ele se depun n stiv numrul elementelor fiind incrementat
(Fig. 11). Cnd se dorete utilizarea datelor salvate singura modalitate de acces
permis este scoaterea elementului din stiv (cu decrementarea numrului de
elemente) (Fig. 12).












Element nou
a) b)
L

L
+
1


Fig. 11 Stiva nainte i dup introducerea unui element












Element ce se elimin
a) b)
L

L
-
1


Fig. 12 Stiva nainte i dup extragerea unui element
Modul de lucru al acestor structuri este ultimul intrat primul ieit LIFO (last
in - first out). Pentru o corect funcionare, n general, se aloc un tablou cu elemente
de tipul cerut i o variabil n care se pstreaz un indicator de stiv. Valoarea 0 a
indicatorului semnalizeaz stiva goal. Valoarea indicatorului egal cu lungimea
stivei semnalizeaz stiva plin. Verificarea acestor dou stri cade n sarcina
programatorului nainte de a efectua extragerea i respectiv depunerea.
La adugarea unui nou element valoarea indicatorului crete cu unu
( 1 + L L ) n timp ce la scoaterea unui element valoarea indicatorului de stiv
descrete cu unu ( 1 L L ).
Pe o asemenea structur se pot defini urmtoarele operaii minimale:
Sterge(S) / Clear(S): elimin toate datele din stiv i aduce indicatorul n
poziia iniial.
Adauga(x,S) / Push(S): introduce elementul x n vrful stivei. Indicatorul este
incrementat. Dac stiva este deja plin genereaz o eroare.
Capitolul 2 Structuri de date
24
Extrage(S) / Pop(S): extrage elementul din vrful stivei i l ntoarce ca
rezultat. Indicatorul este decrementat corespunztor. Dac stiva este goal
genereaz un mesaj i se returneaz elementul vid.
Varful(S) / Top(S): verific elementul din vrful stivei fr a-l ndeprta.
EsteVida(S) / IsEmpty(S): verific dac stiva este goal i ntoarce valoarea
logic (boolean) corespunztoare.
O implementare facil a stivei pentru tipuri complexe de articole se poate
realiza prin utilizarea unei liste nlnuite. Descrierea n limbaj pseudocod se face n
figura urmtoare (Fig. 13).
DecType DataType As Record
......
EndRecord
DecType LinkedRecord As Record
Data : DataType
Next : ^LinkedRecord
EndRecord
Declare Heap As LinkedRecord
Proc Push( x : DataType )
tmp <- new LinkedRecord
tmp.data <- x
tmp.next <- Heap
Heap <- tmp
EndProc
Function Pop():
If IsEmpty() then Error
tmp <- top
top <- top.next
tmpX <- tmp.data
Delete tmp
Return tmpX
EndFunct
Funct IsEmpty() :
if Heap = Nil
then Return TRUE
else Return FALSE
EndFunct

Fig. 13 Operaiile pentru stiva implementat prin list nlnuit
2.9. COZI
Coada reprezint o structur de date n care accesul se realizeaz pe dou ci:
una de intrare i una de ieire. Atunci cnd coada nu este vid, elementele sunt
disponibile la ieire n ordinea n care au fost depuse. Modul de lucru al cozilor este
Baze de date i algoritmi pentru ci de comunicaie
25
primul intrat primul ieit FIFO (first in - first out). Reprezentarea intuitiv a
modului de lucru este prezentat n Fig. 14 i Fig. 15.












Element nou
a) b)
L

L
+
1


Fig. 14 Coada nainte i dup introducerea unui element









Element ce se elimin



a) b)
L

L
-
1


Fig. 15 Coada nainte i dup extragerea unui element
n fapt, pentru implementarea unei cozi se poate utiliza tot un tablou care se
aloc cu o lungime fix de n elemente i dou variabile care pstreaz doi indicatori:
unul privind sfritul cozii (Ia) i unul pentru vrful cozii (Ie) (vezi Fig. 16).




Element ce se elimin


Element ce se adaug
I
e

I
a

n


Fig. 16 Implementarea practic a cozilor
Presupunnd Ia i Ie indici n tablou, utilizm Ia pentru adugare i Ie pentru
extragere. Dup adugarea unui nou element se incrementeaz Ia ( 1 + Ia Ia ).
Capitolul 2 Structuri de date
26
Dac Ia depete dimensiunea tabloului Ia ia valoarea bazei tabloului (pentru
simplitate s presupunem 0). Cnd se extrage un element se incrementeaz Ie
( 1 + Ie Ie ) i, n mod similar, dac Ie depete dimensiunea tabloului atunci ia
valoare bazei tabloului. Dac Ie Ia = atunci coada este vid, dac
( )( ) n Ia Ie mod 1 + atunci coada este plin. Este datoria programatorului s fac
verificarea nainte de fiecare extragere i adugare respectiv.
Pentru cozi se pot defini urmtoarele operaii minimale:
Sterge(Q) / Clear(Q): elimin toate datele din coad i aduce indicatorii Ia i
Ie n poziia iniial.
Adauga(x,Q) / Enqueue(x,Q): Introduce elementul x la sfritul cozii.
Indicatorul Ia este incrementat. Cnd coada este deja plin genereaz o
eroare fr s mai adauge elementul.
Extrage(Q) / Dequeue(Q): extrage elementul din vrful cozii i l ntoarce ca
rezultat. Indicatorul Ie este incrementat corespunztor. Dac coada este
goal genereaz un mesaj i se returneaz elementul vid.
Varful(Q) / Top(Q): verific urmtorul element din coad fr a-l ndeprta.
EsteVida(Q) / IsEmpty(Q): verific dac coada este goal i ntoarce valoarea
logic (boolean) corespunztoare.
EstePlina(Q) / IsFull(Q): verific dac coada este goal i ntoarce valoarea
logic (boolean) corespunztoare.
Operaiile de mai sus pot fi simplu descrise utiliznd limbajul pseudocod.
Prezentm mai jos cteva dintre funcii pentru implementarea cu ajutorul tabloului.
Declare Q As array of OType
Declare Ia, Ie As Integer
Proc Enqueue(x)
Ia <-(Ia+1) mod N
Q[Ia] <- x
EndProc
Funct Dequeue () :
Ie <-(Ie+1) mod N
Return Q[Ie]
EndFunct
Funct IsEmpty() :
If Ie = Ia
then Return TRUE
else Return FALSE
EndFunct
Funct IsFull() :
If (Ia+1) mod N = Ie
then Return TRUE
else Return FALSE
EndFunct

Fig. 17 Operaiile pentru o coad implementat printr-un tablou
Baze de date i algoritmi pentru ci de comunicaie
27
Reprezentarea cozii prin liste nlnuite:
DecType DataType As Record
......
EndRecord
DecType LinkedRecord As Record
Data : DataType
Next : ^LinkedRecord
EndRecord
DecType Queue As Record
Head, Tail: ^LinkedRecord
EndRecord
Declare Q As ^Queue
Funct IsEmpty( Q ) :
If Q = Nil
Then return True
Else Return False
EndFunct
Proc enqueue(Q, x)
tmp new LinkedRecord
tmp.data x
tmp.next Nil
If Q.Head = Nil
Then Q.Head tmp
Else (Q.Tail).Next p
Q.Tail p
EndProc
Funct dequeue( Q )
If IsEmpty(Q) then Error

Tmp Q.Head
TmpX Tmp.Data
Q.Head Tmp.Next
If Q.Head = Nil Then Q.Tail Nil
Free Tmp
Return TmpX
EndFunct

Fig. 18 Reprezentarea cozilor prin liste nlnuite
2.10. ARBORI
Considerm o mulime finit de elemente (fie ele articole sau obiecte) pe care
le vom denumi noduri. Aceast mulime se va numi arbore dac :
exist un nod special denumit rdcin;
celelalte noduri sunt grupate n submulimi care la rndul lor sunt arbori.
Elementele arborelui sunt nodurile i legturile care se stabilesc ntre acestea.
Capitolul 2 Structuri de date
28

R=N
0

N
1

N
1,1
N
1,j1
... N
1,n1
...
N
i

N
i,1
N
i,ji
... N
i,ni
...
N
n

N
n,1
N
n,in
... N
n,nn
...
N
i,ji,1
N
i,ji,kji
... N
i,ji,nji
...
... ...

Fig. 19 Arbore
Rdcina constituie nivelul 0 i are referiri ctre un numr de noduri care
constituie nivelul 1, fiecare dintre nodurile acestui nivel au referiri ctre nodurile unui
al doilea i aa mai departe. Fiecare nod este direct subordonat doar unui singur alt
nod. Orice nod este printe pentru subordonaii si care, la rndul lor sunt
descendeni pentru acesta. Orice nod fr descendeni este nod terminal sau frunz.
nlimea (sau adncimea) unui arbore este dat de numrul de niveluri
ierarhice prezente.
Structura de date trebuie deci s conin pe lng datele utile i referine ctre
toi descendenii i eventual ctre printe.


Date de calcul REF 1 REF 2 ... REF n Printe

Fig. 20 Structura unui nod dintr-un arbore
Mai sus prezentm schematic structura unui nod al unui arbore. Referinele
ctre printe nu sunt obligatorii. Nu se fac referiri ctre noduri cuprinse n ali sub-
arbori ai aceluiai arbore. Dac exist descendeni sau nu exist suficieni care s
completeze spaiul lsat pentru referine, locaiile excedentare se completeaz cu NIL
(entitatea care identific lista vid). Dac referina PRINTE exist i este egal cu
NIL avem de-a face cu rdcina.
ARBORI BINARI
Reprezint o categorie special de arbori. Fiecare dintre noduri are doar
maxim doi descendeni: un sub-arbore stnga i un sub-arbore dreapta. Poziia celor
doi este foarte important spre deosebire de arborii normali la care ordinea fiilor nu
conteaz i era suficient s se cunoasc cine este descendentul cui.
Pentru arborii binari trebuie cunoscut att descendena ct i poziia corect.
Cei doi sub-arbori nu sunt interschimbabili.
Baze de date i algoritmi pentru ci de comunicaie
29
Structura de date a unui arbore binar este prezent n figura urmtoare:


Date de calcul Stnga Dreapta Printe

Fig. 21 Structura unui nod dintr-un arbore binar
Dac unul sau ambii descendeni lipsesc locaia se completeaz cu NIL.
Arborii binari sunt foarte populari n implementarea mecanismelor de cutare
a datelor ordonate.
Cteva definiii se impun n acest context:
Arbore strict binar un arbore binar n care fiecare nod care nu este frunz
are ambii descendeni;
Arbore binar complet arbore n care toate frunzele sunt la acelai nivel;
Arbore binar de cutare arbore binar care nodurile sunt ordonate pentru a
facilita operaia de cutare.
Arbori binari de cutare
Este un tip special de arbore binar n care datele sunt aranjate cu respectarea
unor reguli. Presupunnd c valoarea unui nod oarecare dintr-un arbore binar de
cutare este m, urmtoarele proprieti sunt ntlnite [37]:
Toate valorile mai mici dect m sunt n stnga,
Toate valorile mai mari dect m sunt n dreapta.
Spre exemplu, dac avem 7 numere ele vor fi aranjate ntr-un arbore binar de
cutare astfel:

4
2 6
1 3 5 7

Fig. 22 Reprezentarea datelor ntr-un arbore binar de cutare
nlimea arborelui din exemplul precedent este 3. se poate observa faptul c
dac vom cuta o valoare n arbore vom gsi dup maxim 3 pai.
Se poate observa c valorile sunt aezate n mod regulat n aa fel nct s se
obin un echilibru. Aceste echilibru menine o eficien maxim n utilizarea
Capitolul 2 Structuri de date
30
arborelui de cutare. Spre deosebire de exemplul de mai sus n figura urmtoare avem
reprezentat un arbore dezechilibrat.

1
2
3
4
5

Fig. 23 Reprezentarea datelor ntr-un arbore dezechilibrat
Acest arbore este binar de cutare, el respectnd toate regulile impuse. Din
nefericire toate valorile au fost depuse n descendenii de pe un singur sens. Pentru
doar cinci valori s-a obinut o nlime a arborelui de cinci ceea ce face cutarea
ineficient.
Din aceste considerente s-a impus utilizarea altor tipuri de arbori.
Arbori rou-negru
Sunt arbori binari de cutare n care se dorete o balansare ct mai bun a
datelor. Numele vine de la faptul c nodurile se coloreaz cu dou culori: rou i
negru. Aceste culori sunt atribuite dup reguli care determin echilibrarea arborelui.
Arborii rou-negru au urmtoarele proprieti [37]:
Fiecare nod este colorat sau n negru sau n rou;
Orice frunz este un nod NIL i se coloreaz n negru;
Dac un nod este rou atunci ambii descendeni sunt negri;
Orice cale simpl de la un nod la o frunz descendent conine acelai numr
de noduri negre.
Numrul de noduri colorate n negru de pe o cale poart numele de
adncime neagr sau nlime neagr.
ARBORI B
Arborii B (Knuth 1998 [43], Cormen 1998 [37], Aho 1983 [35]) reprezint o
alt cale de implementare a unui mecanism de meninere echilibrat a arborilor de
cutare. El reprezint o garanie a faptului c arborele va rmne din construcie cu o
nlime mic. Acest tip de arbore se preteaz la implementarea dicionarelor.
Baze de date i algoritmi pentru ci de comunicaie
31
Un arbore B de ordin m este un arbore poziional care are urmtoarele
proprieti:
Toate nodurile au cel mult m descendeni;
Toate nodurile cu excepia rdcinii au cel puin m/2 descendeni;
Un nod care are m descendeni notai cu D
0
, D
1
, ... , D
m-1
are i m-1 chei
notate cu K
1
, K
2
, ... , K
m-1
cu proprietatea c K
1
<K
2
< ... <K
m-1
.
Pentru oricare nod cheia K
i
este mai mare dect toate cheile descendentului
notat D
i-1
dar este mai mic dect toate cheile descendentului D
i
. (cheile
sunt situate ntre descendeni)
Toi descendenii NIL sunt situai la acelai nivel al arborelui.

10
3 6
11 12
13 20
1 2 4 5 7 8 14 16

Fig. 24 Reprezentarea unui arbore B

2.11. BIBLIOGRAFIE
[35] Aho Alfred V., Jeffrey D. Ullman: Data Structures and Algorithms; Addison-Wesley,
Reading, Massachusetts 1983.
[36] Brown Lawrence M.: Introduction to Data Structures; Nov. 2001.
[37] Cormen Thomas H., Leiserson Charles E., Rivest Ronald L.: Introduction to Algorithms,
McGraw-Hill, New York 1990.
[38] Eddon, Guy, and Henry Eddon, Inside Distributed COM, Microsoft Press 1998.
[39] Fox BL: Data structures and computer science techniques in operations research;
Operations Research, Vol.26, Nr.5, Operations Research Society of America,
September-October 1978.
[40] Goodrich Michael T., Roberto Tamassia: Data Structures and Algorithms in Java, John
Wiley & Sons (1998).
[41] Ionescu Texe Clara, Zsako Ioan: Structuri arborescente cu aplicaiile lor; Editura
Tehnic, Bucureti 1990.
[42] Joldos Marius: Data Structures and Algorithms Lecture Notes; Technical University of
Cluj-Napoca, Faculty of Automation and Computers, Computer Science Department,
Cluj-Napoca 2002.
[43] Knuth, Donald. E.: The Art of Computer Programming, Volume 3, Sorting and
Searching; Addison-Wesley, Reading, Massachusetts, 1998.
Capitolul 2 Structuri de date
32
[44] Knuth, Donald. E.: Tratat de programarea calculatoarelor. Algoritmi fundamentali;
Editura Tehnic, Bucureti, 1974.
[45] Knuth, Donald. E.: Tratat de programarea calculatoarelor. Sortare i cutare; Editura
Tehnic, Bucureti, 1976.
[46] Microsoft: Microsoft Windows Architecture for Developers; Course Number 794A,
Microsoft Press 1997.
[47] Shaffer Clifford A.: A Practical Introduction to Data Structures and Algorithm Analysis,
Java Edition, Prentice Hall 1998.
[48] Strohmeier Alfred: Algorithms and Data Structures; http://lglwww.epfl.ch, Swiss Federal
Institute of Technology in Lausanne, Department of Computer Science, Software
Engineering Laboratory, March 2000.
[49] Vogel Andreas, Keith Duddy: Java Programming with CORBA; Second Edition, John
Wiley & Sons, New York 1998.
[50] Williams Peter M.: Data Structures; University of Sussex, UK, 2002.
Scnteie Rodian Baze de date i algoritmi pentru ci de comunicaie
ISBN 973-86343-3-4 Editura Societii Academice Matei-Teiu Botez
Iai 2003
33
BAZE DE DATE,
PREZENTARE GENERAL
3.1. ISTORICUL BAZELOR DE DATE
Stocarea i procesarea datelor nu este o invenie i o caracteristic a erei
moderne. Din totdeauna omenirea a cutat s pstreze informaiile pentru aducere
aminte sau pentru posteritate. Iniial pe scoara copacilor i pe pereii peterilor apoi
pe tblie de lut, suluri de papirus, pergament, hrtie i acum pe computere. Stocarea
i pstrarea sistematic a datelor, catalogarea, ordonarea i regsirea lor cu scopul
prelucrrii i are originea n vechile biblioteci i arhive. Multe dintre principiile
fundamentale ale bazelor de date au fost descoperite i nvate la acea vreme,
ignorarea lor ducnd la repetarea inutil a unor greeli de proiectare i implementare.
Cnd calculatoarele electronice au devenit accesibile publicului s-a pus
problema utilizrii lor pentru stocarea de date. n anii 1960 s-au depus eforturi pentru
a standardiza acest proces i au rezultat dou modele: modelul reea (CODASYL) i
modelul ierarhic (IMS). Accesul la date se fcea nc ntr-un mod greoi prin operaii
de nivel sczut. Adugarea unui nou cmp impunea modificarea schemei de acces
deoarece predominant era preocuparea pentru definirea nregistrrilor i nu structura
sistemului. Erau necesare cunotine de structur intern pentru scrierea programelor.
Cu toate aceste minusuri nceputul era fcut i procesul nu mai putea fi oprit.
Astfel propunerea lui E.F. Codd din 1970 privind modelul relaional al bazelor de
date a venit firesc. El desprea n dou probleme distincte descrierea bazelor de date:
organizarea logic i metodele de stocare fizic.
Capitolul 3 Baze de date, prezentare general
34
Imediat (anii 1974-1977) propunerea teoretic a lui Codd a fost implementat
practic n principal n dou sisteme: Ingres dezvoltat de UCB cu limbajul de
interogare QUEL i System R dezvoltat de IBM la San Jose cu limbajul SEQUEL.
Urmtorul pas logic a fost dezvoltarea modelului Entitate-Relaie pentru
proiectarea bazelor de date. Aceast nou abordare permitea concentrarea asupra
utilizrii datelor. Aceast propunere a fost fcut de P.Chen n 1976.
Combinnd realizrile anterioare Sequel 2 devine SQL i n 1982 se ncepe
standardizarea sa, proces ncheiat n 1986. SQL devine un limbaj universal utilizat de
foarte multe sisteme practice IBM DB2, RIM, RBASE 5000, PARADOX, OS/2
Database Manager, Dbase III i IV, Watcom SQL i numrul este mult mai larg.
Dup 1990 se merge pe dezvoltarea standardelor existente i se pune un
deosebit accent pe dezvoltarea de instrumente de acces la bazele de date. Direciile
principale sunt: (1) posibilitatea de a crea programe utiliznd limbajul de interogare i
(2) de a permite n limbaje de uz general includerea de comenzi de interogare.
Totodat se ncepe definirea conceptului de sistemel de baze de date orientate pe
obiect.
Tot n aceeai perioad se distinge preocuparea crerii de baze de date
distribuite i de utilizare a nou aprutei (la acea vreme) reele globale Internet.
Implementrile viitoare tind ctre utilizarea obiectelor ca element de baz i
de includerea conceptului de baze de date mobile n practica normal.
La mijlocul anilor 1990 are loc dezvoltarea exploziv Internet-ului. Se trece
la introducerea aplicaiilor client-server chiar pentru calculatoarele personale. Oferta
de instrumente de gestionare a bazelor de date prin conectare la Internet crete
exponenial. Active Server Pages, Front Page, Java Servlets, JDBC, Enterprise Java
Beans, ColdFusion, Dream Weaver, Oracle Developer 2000, Apache, MySQL sunt
doar cte exemple.
Un SGBD trebuie:
1. s permit utilizatorilor s creeze noi baze de date i s le specifice schema
(structura logic a datelor utiliznd un limbaj specializat denumit limbaj de
definire a datelor).
2. s ofere utilizatorilor capacitatea de a interoga datele (o interogare este
argoticul pentru aciunea de chestionare a datelor) i de a le modifica,
utiliznd un limbaj adecvat, adesea denumit limbaj de interogare sau limbaj
de manipulare a datelor.
3. s suporte stocarea unor cantiti foarte mari de date pe perioade lungi de timp,
ferindu-le de accidente sau de utilizare neautorizat i permind acces
eficient la date pentru interogare sau modificare.
Baze de date i algoritmi pentru ci de comunicaie
35
4. s permit accesul simultan a mai multor utilizatori fr s permit ca aciunile
unuia s afecteze pe ceilali i fr ca accesul simultan s duc la coruperea
accidental a datelor.
Primele sisteme comerciale de baze de date au prut la sfritul anilor 1960.
Aceste sisteme au evoluat din sisteme de fiiere i furnizau parial primele trei cerine.
Ele erau mai degrab grupuri de nregistrri. Primele modaliti practice de a stoca i
regsi date pe calculatoare erau aplicaii pe fiiere care utilizau un limbaj de
programare de nivel nalt (ex. COBOL). Principala deficien a acestei abordri era
aceea c structura fiierului era descris n aplicaie. Dac cineva ar fi dorit s
utilizeze datele ntr-o alt aplicaie trebuia s scrie din nou descrierea fiierului n
propriu su program. Mai mult, dac din greeal se pierdea sursa aplicaiei nelesul
datelor s-ar fi pierdut. De aceea este necesar s se realizeze fiiere de date cu
descrierea structurii ataat sau inclus. Pornind de aici s-au dezvoltat bazele de date.
Sistemele propriuzise de gestiune a bazelor de date au folosit la nceput
diferite modele de descriere a structurilor cele mai populare fiind cea ierarhic sau
arborescent i cea de tip graf sau reea. ultima fiind standardizat la sfritul anilor
1960 prin raportul CODASYL (Committee on Data Systems and Languages).
Problema esenial a acestor modele i sisteme era c nu incorporau i nici nu se
bazau pe un limbaj de nivel nalt pentru interogare.
Urmtorul pas la constituit a fost constituit de publicarea de ctre E.F. Codd a
celebrelor sale lucrri din 1970 i 1972 ([57], [58]). Aceste lucrri puneau bazele unei
noi abordri a bazelor de date care erau organizate n tabele denumite relaii. Pentru
realizarea lor se puteau utiliza diferite implementri, structuri de date complexe i
mecanisme de stocare sofisticate, dar utilizatorul nu era preocupat de acest lucru. El
gndea totul n termeni de relaii. Interogarea se baza pe un aparat de lucru matematic
asemntor celui din teoria mulimilor ceea ce permitea exprimarea printr-un limbaj
de nivel nalt. Lucrul acesta cretea eficiena fa de celelalte tipuri de date.
3.1. BAZE DE DATE COMPUTERIZATE
Pe computere iniial omul a creat fiiere pe care le-a structurat pentru a uura
manevrarea. Prelucrarea datelor din fiiere, simpl i eficient, are ns numeroase
limitri de aceea a aprut necesitatea realizrii bazelor de date. Acestea nu sunt numai
nite structuri de fiiere mai exotice ci aduc cu ele o nou modalitate de gndire
despre date i nevoile de exploatare.
Apar noi activiti precum analiza datelor i modelarea datelor care n timp au
devenit dominante n proiectarea aplicaiilor. Felurite faciliti de verificare a
integritii i securitii datelor au fost adugate i incluse ntr-un sistem de gestiune a
bazelor de date care face posibil accesul utilizatorilor la resurse i informaii.
Capitolul 3 Baze de date, prezentare general
36
SISTEME DE PRELUCRARE A FIIERELOR
Aplicaiile bazate pe prelucrarea fiierelor, pstreaz tot setul de date ntr-un
fiier unic sau ntr-un set de fiiere. Datele care descriu sistemul sau componentele
sale pot fi pstrate n fiiere separate i este datoria softului pe care utilizatorul sau
programatorul l folosete s stabileasc relaiile i corespondena dintre fiiere.
Pentru fiecare fiier folosit programul trebuie s aib inclus permanent o
interfa care s permit accesul la date. Mai multe fiiere nseamn mai multe
interfee care s realizeze transferul. n cazul n care exist mai multe aplicaii care
acceseaz aceleai fiiere interfeele trebuie incluse n fiecare aplicaie n parte. Toate
acestea duc la o "explozie a interfeelor" [54], programatorii trebuind s se ocupe mai
mult de realizarea prelurii datelor dect de problema de rezolvat.
Este de asemenea la latitudinea utilizatorului s selecteze numai date
semnificative din fiier i s ascund nregistrrile ce nu sunt necesare. Este, de
aceea, foarte laborios s proiectezi i s creezi un program (aplicaie utilizator) i este
i mai greu s o modifici n caz de necesitate. n multe cazuri, dac din anumite
motive, o anumit aplicaie cerea modificarea formatului unui fiier toate celelalte
aplicaii trebuie s adopte un nou format de preluare a datelor deoarece interfaa lor se
realiza cu structura fizic a fiierului i aceasta se modifica.
Din punct de vedere istoric, este primul sistem identificabil de baze de date i
nc se mai utilizeaz pe scar larg din cauza simplitii, nevoii de compatibilitate cu
versiunile anterioare de program i din cauz c, n timp, sistemele de management al
fiierelor a evoluat, putnd rspunde la cerine complexe.
Un avantaj este dat de faptul c diferite fiiere pot fi pstrate pe diferite
calculatoare i pot fi actualizate de persoane diferite. Dezavantajul major este dat de
imposibilitatea de a pstra confidenial coninutul unui fiier. Securitatea informaiilor
este serios afectat de posibilitatea de a citi direct fiierul i a-l transporta pe un alt
sistem.
Toate acestea au condus la necesitatea apariiei unui nou mod de abordare a
prelucrrii datelor prin utilizarea bazelor de date.
SISTEME INTEGRATE DE PROCESAREA DATELOR
n acest tip de sisteme datele se stocau ntr-un singur loc i structura intern a
fiierului / fiierelor nu se mai documenteaz. Principalul pas nainte a fost
introducerea unui Sistem de Gestiune a Datelor. Acest sistem permite doar
comunicarea cu nucleul cruia i se transmite interogarea privind datele. Pentru
aceasta au fost dezvoltate n timp limbaje i proceduri complete pentru accesare.
Iniial sistemele de baze de date erau livrate ca atare numai cu mecanismele
de acces i de interogare. Era datoria utilizatorilor s-i dezvolte aplicaiile. Ulterior,
mai ales dup apariia sistemelor de operare grafice de tip Windows, au fost furnizate
Baze de date i algoritmi pentru ci de comunicaie
37
i instrumente de construcie a aplicaiilor. Este acum extrem de uor de dezvoltat, n
manier interactiv, forme de introducere sau de vizualizare a datelor.
Baza de date este o colecie depozitat de date operaionale utilizat de
sistemul de aplicaii al unei organizaii.
Trebuie s facem unele precizri:
Organizaie este un termen convenional pentru a descrie la modul generic
orice entitate comercial, tiinific, tehnic sau operaional.
Cteva exemple:
Administraia Naional a Drumurilor,
Compania Naional a Cilor Ferate,
Direcie regional,
Secie,
District,
Universitate,
Facultate,
Institut de cercetri, etc.
Pentru buna funcionare orice organizaie trebuie s ntrein un set mare de
baze de date. Acestea sunt baze date operaionale. Datele operaionale ale unei
organizaii de administrare a infrastructurii transporturilor pot fi: date de
management; date de planificare; date de proiectare; date de climat; etc.
Se poate reduce redundana datelor stocate: n cele mai multe dintre sistemele
actuale fiecare aplicaie are fiiere proprii. Aceasta poate produce o utilizare
ineficient a spaiului de stocare prin redundan. Utilizarea bazelor de date poate
identifica i elimina redundana.
Se pot evita problemele de inconsisten a datelor stocate: Din cauza
existenei surselor de eroare i a transmiterii lor este posibil ca n fiiere diferite
aceleai date s aib valori diferite pentru a descrie acelai fapt. n bazele de date se
va furniza aceeai valoare pentru orice interogare, indiferent de utilizator.
Datele pot fi partajate: Sistemele de baze de date ofer mecanisme prin care
utilizatorii pot folosi n comun aceleai date simultan i de a utiliza n comun
aplicaiile definite. n aceast manier datele pot fi actualizate de oricare utilizator i
valorile prezentate celorlali pot fi n permanen cele reale.
Se pot aplica restricii de securitate:
Administratorul bazei de date poate:
Asigura c singurele ci de acces sunt cele autorizate prin
canale , i
Capitolul 3 Baze de date, prezentare general
38
Defini verificri de autorizare pentru fiecare ncercare de
acces la date importante. Se pot defini proceduri diferite
pentru fiecare tip de acces (citire, actualizare, tergere
etc.) pentru fiecare tip de date.
Poate fi meninut integritatea datelor: Bazele de date pot trata mai eficient
problema integritii. Chiar dac redundana este eliminat se pot ntlni cazuri de
date incorecte din cauza multor factori (eroare uman, defecte hardware, erori de
programare etc.).
Cererile conflictuale pot fi rezolvate: Administratorul bazei de date poate
stabili o importan pentru fiecare utilizator i prin aceasta o prioritate cererilor de
obinere a datelor pe care le face.
Independena datelor: Fiecare utilizator sau aplicaie poate avea propria
viziune (VIEW) asupra datelor fr ca prin asta s afecteze .
Pentru a evita obligaia utilizatorului de a calcula permanent i repetat unele
valori au fost concepute funcii de tip TRIGGER care se declaneaz la apariia
anumitor evenimente.
3.2 UTILIZAREA BAZELOR DE DATE
O baz de date reprezint un ansamblu de date integrat, anume structurat i
dotat cu o descriere a acestei structuri.
Descrierea poart numele de dicionar de date sau metadate (informaii
despre date) i creeaz o independen ntre datele propriu zise i programe. O baz
de date este mai mult dect o colecie de fiiere: ea include, pe lng acestea,
dicionarul de date i o descriere a relaiilor ntre nregistrri, descriere chemat i
utilizat pe ntreaga durat a prelucrrii informaiilor.
De asemenea, vom numi o baz de date un ansamblu unitar organizat i
structurat de date, a cror gestionare se face printr-un sistem specializat, denumit
sistem pentru gestionarea datelor (SGBD).
Des uzitat este i noiunea de banc de date care reprezint ansamblul
format din:
- baz de date;
- sistemul/sistemele care o gestioneaz (SGBD);
- echipamentele de calcul utilizate pentru nregistrarea i memorarea datelor
din baza de date i pentru prelucrrile efectuate asupra acestor date;
- procedurile (automate i neautomate) suplimentare pentru gestionarea datelor,
n afara celor din cadrul SGBD, n primul rnd pentru a face legtura /
interfaa cu acestea.
Baze de date i algoritmi pentru ci de comunicaie
39

SISTEM INFORMAIONAL
SISTEM INFORMATIC
(SUB)SISTEM BANC DE DATE
BAZE DE DATE
SGBD
SISTEM DE CALCUL
PROCEDURI, APLICAII
PERSONAL CALIFICAT

Fig. 25 Sistemul bncii de date
Spre deosebire de bazele de date care au mai mult un caracter personal,
nchis, banca de date este o entitate creat i meninut de o persoan (fizic sau
juridic) ori de un compartiment specializat pentru a fi pus la dispoziia unui numr
mare de ali utilizatori, de exemplu publicul. Posed n general o anvergur net
superioar bazei de date, dar ceea ce o caracterizeaz cel mai bine este rigoarea
necesar exploatrii sale [53].
Se poate constata c banca de date are aceleai componente cu ale oricrui
sistem informatic i prin urmare ele vor trebui proiectate i realizate dup aceeai
metodologie ca toate celelalte componente ale sistemelor informatice, folosind ns
unele metode i tehnici specifice.
n Fig. 25 se prezint locul (sub)sistemului informatic banca de date n
cadrul sistemului informaional i informatic al unei organizaii.
Banca de date, n concepia modern de realizare a sistemelor informatice,
devine subsistemul central al acestora, prin el realizndu-se principalele legturi
dintre majoritatea celorlalte subsisteme i aplicaii, n primul rnd a celor care
lucreaz cu datele din baza de date.
Dac ne propunem s elaborm un sistem informatic n care s utilizm
pentru gestionarea datelor conceptul de baz de date, atunci, este recomandabil s se
fac acest lucru la toate sistemele unde se lucreaz cu volume mari sau foarte mari de
date.
Atunci cnd rezult necesitatea utilizrii unui SGBD, este recomandabil ca el
s fie acelai pentru ntregul sistem informatic al unitii.
Facilitatea fundamental oferit de abordarea prin prisma bazelor de date este
c permite datelor s fie partajate ntre diferitele aplicaii. Arhitectura general a
sistemului de baze de date are caracteristica de a aduna toate datele necesare ntr-un
Capitolul 3 Baze de date, prezentare general
40
fiier unic sau un set de fiiere. Seturile de date sunt separate numai logic n cadrul
sistemului. Accesul la date se realizeaz prin Sistemul de Gestiune a Bazei de Date
(SGBD) care este o nsumare de proceduri software ce neleg i manipuleaz
structurile logice din fiier. SGBD pune la dispoziia utilizatorilor faciliti de stocare
a datelor ntr-o structur adecvat, faciliti de regsire a lor, de protecie, toate n
condiiile obinerii unei bune performane. Ceea ce distinge cu adevrat un SGBD
este posibilitatea de a descrie independent de reprezentarea lor fizic. n mod ideal,
structura logic a unei baze de date este independent de mediul de memorare.
Structura, pe straturi, a unui SGBD se compune din:
nivel extern, vzut de utilizator, caracterizat de o anumit descriere a
datelor, convenabil acestuia;
nivelul intern, transparent pentru utilizator, cu o alt descriere a datelor,
conform cu metodele de organizare i acces puse la dispoziie de ultimul
nivel;
sistemul de gestiune a fiierelor;
Deoarece aplicaiile interacioneaz numai cu sistemul de gestiune a bazei de
date nu mai este necesar dect o singur interfa. Mai mult, aceast interfa se face
la nivel logic i nu fizic. De aceea aplicaiile nu mai trebuie s cunoasc structura
intim a fiierelor i nici s-i modifice modul de lucru de fiecare dat cnd se
modific structura datelor.
3.3 CARACTERISTICILE BAZELOR DE DATE
Un sistem de gestiune a bazelor de date i propune atingerea unor obiective
care s defineasc astfel calitatea lui. Unele dintre aceste obiective sunt greu de atins,
altele chiar contradictorii. Dar, se admite n general, c un sistem de gestiune a
bazelor de date trebuie s asigure:
independena fizic;
independena logic;
utilizarea datelor i de ctre nespecialiti;
eficacitatea accesului la date;
administrarea centralizat a datelor;
eliminarea redundanei datelor;
coerena datelor;
partajarea datelor;
securitatea datelor.
INDEPENDENA FIZIC
Unul dintre obiectivele importante ale unui SGBD l constituie independena
structurilor de memorare a datelor fa de structura lor real. Structurile de memorare
trebuie s se supun regulilor de eficien a memorrii i regsirii i nu trebuie s fie
Baze de date i algoritmi pentru ci de comunicaie
41
afectate de relaiile existente ntre datele din lumea real. Ele nu trebuie s fie
imaginea organizrii datelor din sistemul modelat. Altfel, o schimbare n structura
extern a datelor ar necesita o reorganizare n structura intern, memorat a datelor.
INDEPENDENA LOGIC
Structura datelor din lumea real, avnd o semantic proprie, reprezint
punctul de vedere al unui grup de utilizatori. Un alt grup poate avea o alt imagine
asupra datelor, organizndu-le altfel, sau considernd doar o parte a lor. Dac un
SGBD reuete s ofere o asemenea structurare a datelor care s permit fiecrui grup
de utilizatori s vad datele aa cum dorete i n acelai timp s permit grupurilor
s-i modifice punctul de vedere fr ca aceasta s afecteze alte viziuni particulare,
atunci se poate spune c exist o independen logic a datelor.
mpreun, independena fizic i logic a datelor asigur stabilitatea
aplicaiilor fa de modificrile structurilor externe.
UTILIZAREA DATELOR DE CTRE NEINFORMATICIENI
Utilizarea de ctre nespecialiti a datelor stocate ntr-o baz de date nseamn
transformarea sistemului ntr-un instrument disponibil i necesar cu o ptrundere ntr-
o mas larg de utilizatori. Existena independenei logice i fizice creeaz
posibilitatea ca un utilizator s vad ceea ce dorete din structurile bazei. Un limbaj
neprocedural ofer utilizatorului neinformatician posibilitatea de a actualiza i regsi
date fr a se preocupa de modul n care se realizeaz efectiv aceste operaii.
EFICACITATEA ACCESULUI LA DATE
La baza de date au acces nu numai utilizatorii neinformaticieni ci i
specialitii care asigur crearea i ntreinerea acesteia. Primii folosesc un limbaj
simplu, neprocedural, n spatele cruia se gsesc ns metode de acces evoluate i o
serie de primitive care s asigure construirea unor proceduri inteligibile. Toate acestea
trebuie s satisfac un standard de eficien pentru a face exploatarea posibil, att din
punct de vedere al timpului de rspuns ct i al calitii i varietii serviciilor oferite
utilizatorului nespecialist. Astfel, dac efortul de nvare i utilizare a limbajului de
exploatare a bazei de date este excesiv, se pierde interesul pentru acesta.
Pe de alt parte utilizatorul specialist, administratorul bazei de date, trebuie s
dispun de un limbaj de manipulare a datelor suficient de puternic i flexibil pentru a
avea acces uor i rapid la structurile cele mai intime, la structurile de memorare.
ADMINISTRAREA CENTRALIZAT A DATELOR
Administrarea datelor ntr-o baz de date const n dou operaii principale:
definirea structurii datelor i modalitilor de memorare i urmrirea evoluiei lor
incluznd modificarea unor structuri. Avnd n vedere importana esenial a acestei
Capitolul 3 Baze de date, prezentare general
42
funcii (care n fond asigur integritatea i acurateea datelor) este preferabil ca ea s
fie centralizat ntr-un singur punct, la dispoziia unui grup de utilizatori privilegiai,
i s respecte un singur standard unitar.
ELIMINAREA REDUNDANEI DATELOR
n sistemele clasice aplicaiile independente aveau nevoie de date aflate n
fiiere proprii. Uneori aceleai date utile mai multor aplicaii erau duplicate n tot
attea fiiere rezultnd de aici o utilizare ineficient a spaiului de memorare, dar i
dificulti n actualizarea corect a tuturor datelor comune mai multor aplicaii.
Bazele de date permit ns accesul partajat al mai multor aplicaii la acelai
fiier, eliminnd astfel redundana. Gradul n care redundana este eliminat depinde
de proiectarea corespunztoare a structurilor de date. Totodat, administratorul bazei
de date trebuie s vegheze ca actualizarea ulterioar s nu produc duplicare de date.
COERENA DATELOR
O condiie esenial a unui sistem de prelucrare utilizabil i eficient este
corectitudinea datelor manipulate. Proiectanii, precum i cei care exploateaz un
asemenea sistem trebuie s ia toate precauiile pentru a sigura acurateea datelor. Un
sistem de gestiune a bazelor de date pune la dispoziia utilizatorilor faciliti de
control a datelor introduse n baz.
Sunt verificate att respectarea unor condiii de validare la nivelul datelor
elementare, ct i al interdependenelor ntre date n aa fel nct coerena datelor s
fie asigurat.
PARTAJAREA DATELOR
Aceasta presupune c ele sunt disponibile mai multor utilizatori. Probleme
dificile apar n cazul simultaneitii cererilor de acces la aceeai dat. Pentru
rezolvarea unei asemenea concurene, exist mecanisme la nivelul sistemelor de
gestiune a fiierelor, care sunt preluate de sistemele de gestiune a bazelor de date.
SECURITATEA DATELOR
Datele trebuie protejate mpotriva accesului neintenionat sau ruvoitor.
Mecanismele sistemului de gestiune a bazei de date verific drepturile de acces ale
utilizatorilor la toate datele, sau la o parte a acestora i stabilete modul de acces
(scriere, citire, tergere, actualizare).
3.4 MODELE DE BAZE DE DATE
n dezvoltarea sistemelor de gestiune a bazelor de date se disting mai multe
generaii.
Baze de date i algoritmi pentru ci de comunicaie
43
Prima generaie marcheaz epoca despririi SGBD de sistemele de gestiune
a fiierelor. Este perioada primelor recomandri CODASYL cnd se realizeaz
independena fizic i logic. Eforturile principale se fceau n direcia reducerii
timpului de acces, arhitectura SGBD trecnd pe planul secund.
A doua generaie a fost fundamentat teoretic n anii '70 i implementat n
versiuni notabile n anii '80 i este reprezentat de modelele relaionale, care i
propun uurarea accesului la bazele de date prin crearea unei structuri externe ct
mai simple i mai naturale. Aceasta permite implementarea unor limbaje de
manipulare foarte flexibile.
Modelele relaionale cuprind un set de concepte i reguli capabile s descrie
datele i acestea sunt vzute ca un set de relaii asupra crora se pot efectua anumite
operaii, definite de algebra relaional, care au ca rezultat obinerea unui nou set de
relaii.
Modelul relaional manipuleaz structuri simple, liniare, neredundante.
Complexitatea este dat de modul n care se combin flexibil aceste structuri.
Conceptele de baz sunt: domeniu, tuplu, relaie, normalizare.
Domeniul este o mulime de valori legate semantic, apelabile sub acelai
nume.
Considernd produsul a dou sau mai multe domenii
n
D D D L
2 1
se
obin nupluri sau tupluri. O seam de tupluri astfel obinute sunt contradictorii ntre
ele. Eliminnd convenabil aceste situaii se obine un numr de tupluri care reflect o
realitate. Submulimea rezultat a produsului cartezian se numete relaie.
Principiul de constituire a unei relaii este cel al respectrii unui fapt din
realitate. Nu oricare dou domenii pot constitui o relaie. Asocierea lor trebui s
constituie un tuplu semnificativ. O relaie incorect conine redundane, contradicii
ori inconsistene. ntr-o relaie se poate defini o cheie primar care identific n mod
unic tuplul i mai multe chei secundare. Cheia primar poate fi constituit dintr-un
singur atribut fie prin concatenarea mai multor atribute.
Normalizarea se definete ca fiind operaia de obinere a unei relaii corecte
pe domeniul propus. Aceasta se face n mai multe etape (forme).
STRUCTURA BAZEI DE DATE
Pentru atingerea obiectivelor propuse anterior sunt propuse trei nivele de
descriere a datelor:
nivelul conceptual;
nivelul intern;
nivelul extern.
Capitolul 3 Baze de date, prezentare general
44
Nivelul conceptual corespunde structurii datelor din realitate, cu semantica
lor, comun pentru toate grupurile de utilizatori. n lumea real exist date de tip
elementar (atribute), care descriu un obiect i care nu pot fi detaliate n continuare. La
nivelul ierarhic imediat superior se afl entitatea, obiectul real descris de atribute.
ntre aceste entiti pot fi gsite relaii, asocieri logice care reprezint nivelul al
treilea.
Proiectantul unui sistem trebuie s deceleze exact aceste elemente constituind
modelul datelor i interdependena lor. Acest model (schema conceptual) cuprinde
de asemenea i informaii referitoare la condiiile pe care datele trebuie s le respecte.
Nivelul intern corespunde structurii de memorare a datelor (schema intern).
La acest nivel se utilizeaz urmtoarele concepte:
fiier/fiiere de date caracterizate prin nume, tip de organizare, localizare,
dimensiuni;
nregistrarea fiierului, definit de lungime, cmpuri, componente;
ci de acces la nregistrare - prin indeci, pointeri etc.
Nivelul extern este propriu fiecrui grup de utilizatori, care vd datele
conform specificului aplicaiei lor (schema extern).
O schem extern vede doar o parte a bazei de date i ntr-o structur proprie.
Aceast particularitate are i avantajul c ofer un mecanism n plus pentru asigurarea
integritii i securitii datelor.
3.5. ARHITECTURA BAZELOR DE DATE
Grupul ANSI/X3/SPARC propune o arhitectur constnd din dou pri
principale:
o parte care permite descrierea datelor;
o parte care asigur manipularea datelor.
Structura
Procesorul schemei conceptuale, care permite descrierea schemei conceptuale
a datelor, compilarea ei i depunerea n metabaz;
Procesorul schemei interne utilizat pentru descrierea schemei interne, a
legturilor ei cu nivelul conceptual, compilarea i depunerea n metabaz;
Transformatorul conceptual-intern utilizat pentru conversia ntre cele dou
nivele de descriere a datelor;
Transformatorul extern-conceptual care realizeaz manipularea datelor
conform punctului de vedere al schemei externe;
Baze de date i algoritmi pentru ci de comunicaie
45
Limbajul de manipulare a datelor externe care permite programatorului de
aplicaie s aib acces la date conform cu punctul de vedere al schemei externe;
Interfaa de acces la dicionarul de date, prin intermediul creia procesoarele
i celelalte elemente de arhitectur descrise deja, pot s aib acces la scheme i reguli
de conversie compilate i aflate n metabaz.
Un exemplu de arhitectur este prezentat n figura urmtoare:


Sc hema
intern


Sc hema
ext er n
Proc es or ul
s chemei
c onc eptuale
Pr ocesor ul
sc hem ei i nt er n e


Pr ocesor ul
s chemei e xtern e


S chema
c onc eptual
D ic ionaru l de date
( meta-baz a)

T r ans formator ul
c onc eptual /inter n


T r ans formator ul
exter n/conc ept ual


Baz a
de dat e

Limb aj de
mani pular ea a
datel or e xt er ne
Pr ogram e de aplic aie

Fig. 26 Structura funcional a unei baze de date
Tendinele actuale de dezvoltare sunt de realizare a sistemelor de gestiune a
bazelor de date distribuite i cu procesare paralel i SGBD orientate pe obiecte. n
general aceasta a aprut ca necesitate a decalajului semnificativ ntre evoluia rapid a
tehnologiilor hardware i de comunicaie ce permit realizarea de medii eterogene
complexe utiliznd maini tot mai performante i realizrile caselor de soft care susin
SGBD relaionale.
Capitolul 3 Baze de date, prezentare general
46
3.6 CONCEPTE AVANSATE DE BAZE DE DATE
Denumirea de baze de date avansate este doar un apelativ generic. Ceea ce
astzi este avansat va fi perimat peste un deceniu sau dou. Totui, sub acest nume se
regsesc ultimele tendine din domeniu i cea mai mare parte din munca
universitilor i a diviziilor de cercetare. Dei nu sunt clar definite i separate
tendinele interfereaz i utilizeaz filosofii comune. Caracteristicile cele mai frecvent
ntlnite sunt:
Sisteme de gestiune cu procesare paralel;
Sisteme distribuite geografic;
Baze de date orientate pe obiect;
Capaciti grafice.
Unele dintre aceste sisteme au influene din domeniul inteligenei artificiale,
la rndul ei aceasta fiind una dintre principalele aplicaii.
SGBD CU PROCESARE PARALEL
Se bazeaz pe capacitatea procesoarelor de a oferi servere n multiprocesare
simetric(SMP), multiprocesare asimetric sau procesare pe mai multe ci de control
a execuiei (multithreaded). Toate acestea implic rularea de task-uri multiple pe
diferite procesoare. Diferena rezid n faptul c dac procesarea paralel simetric
sau asimetric implic mai multe procese ce se execut pe mai multe uniti de
prelucrare, multitheading are un singur proces ce se poate rula pe mai multe uniti de
prelucrare utiliznd acelai context de mediu.
Tipuri de arhitecturi paralele
Cele mai utilizate arhitecturi hardware paralele ce exploateaz multiple
procesoare, memorii mari i mai multe uniti de disc sunt:
arhitectura "shared nothing" n care fiecare procesor deine
propriile sale uniti de memorie i de disc;
arhitectura "shared discs" utilizeaz multiple procesoare, fiecare
cu unitatea sa de memorie dar sus sistem de disc partajat.
arhitectura "symmetric multiprocessing" utilizeaz procesoare
multiple care dein n comun unitile de memorie i de disc.
Sistemele dezvoltate pentru acest tip de calculatoare sunt n general extensii
ale SGBD relaionale mbuntite pentru a beneficia de procesarea paralel n
sisteme eterogene i de a permite rularea de aplicaii complexe cu misiune critic. Ele
utilizeaz o serie de noiuni abstracte i strategii asociate pentru a ndeplini cerinele
actuale. De exemplu au fost create monitoare de procesare a tranzaciilor ce reprezint
utilitare evoluate care gestioneaz tranzaciile distribuite n reele eterogene.
Baze de date i algoritmi pentru ci de comunicaie
47
Din punctul de vedere al asigurrii integritii datelor n sistemele
client/server distribuite, productorii de software de gestiune a bazelor de date au
abordat urmtoarele strategii:
tehnica "two-phase commit" prin care toate modificrile impuse de o
tranzacie asupra unei baze de date sunt fie comise (execuia tranzaciei
este finalizat) fie sunt anulate, cu revenirea bazei de date n stare
anterioar efecturii tranzaciei. Aceast strategie asigur faptul c toate
serverele dein copii identice n orice moment
strategia de replicare a datelor este n prezent soluia adoptat de marii
productori. Replicarea const n realizarea mai multor copii identice ale
bazei de date. Garania identitii este asigurat numai n anumite momente
sau sub anumite condiii.
BAZE DE DATE DISTRIBUITE
Un sistem distribuit implic existena unui numr de noduri de prelucrare n
care exist nite colecii locale de date ataate fiecrui procesor.
Conceptual acestea pot fi privite, n context distribuit, ca pri ale unei
aceleiai colecii de date, unic din punct de vedere logic, dar distribuit topologic.
ntr-o baz de date distribuit spaial fragmentele unei baze de date logice
(baza de date aa cum este vzut de utilizator) sunt n fapt cteva baze de date fizice
fiecare fiind stocate pe diferite sisteme de calcul din diferite locaii. n bazele de date
distribuite de importan critic devine costul transmiterii datelor pe canalele de
comunicaie. Proiectanii sistemului trebuie s minimizeze timpul de ateptare a
informaiilor precum i cantitatea de date care este transmis efectiv de la o locaie la
alta n reea.
Dispersia geografic i autonomia coleciilor de date sunt caracteristicile
acestui tip de sisteme de gestiune a bazelor de date. Este necesar un software
generalizat de gestiune care s permit faciliti de organizare, acces i control a
datelor rezidente n diferite noduri de prelucrare interconectate fizic i logic. Prelund
funciile unui SGBD local, un sistem n context distribuit trebuie s asigure o bun
funcionalitate mai ales pentru urmtoarele activiti:
definirea unei arhitecturi n acord cu topologia sistemului;
controlul prelucrrii distribuite a informaiilor din baza de date;
controlul accesului concurent la datele distribuite;
meninerea integritii datelor n prezena defectelor hardware sau software;
optimizarea timpului de rspuns al sistemului;
meninerea copiilor multiple ale bazei de date.
Capitolul 3 Baze de date, prezentare general
48
BAZE DE DATE ORIENTATE PE OBIECT
Modelele relaionale sunt legate de abordarea bazat pe separarea datelor i a
prelucrrilor. Aceste modelele sunt n general inadecvate pentru construirea
obiectelor din domenii cum ar fi CAD, administrarea documentelor, birotic,
inginerie software, sisteme de informare, sisteme multimedia. n modelele relaionale
nu exist noiunile de clas i nici de obiect. Orice obiect ar trebui descompus n mai
multe relaii i se stabilesc o sum de legturi pentru reconstituirea obiectului din
pri. O alt scdere este n diferena dintre limbajele de interogare i manipulare i
limbajele de programare. Limbajele de programare i limbajele de manipulare a
bazelor de date sunt destul de dificil de integrat.
Pentru a rezolva aceste exigene au aprut dou tendine.
Prima abordare const n extinderea modelului relaional. Extensiile
integreaz concepte precum agregare i generalizare, noiunea de clas, seturi de
atribute valorice, tipuri abstracte de date. De asemenea apare integrarea noiunii de
operatori ataai unei proceduri. Operatorii sunt considerai ca atribute ale unei tabele
i conduc la definirea de noi tipuri de atribute.
n a doua abordare, ce se sprijin pe modele obiectuale, un obiect este
considerat ca un tot unitar i nu ca o mulime de n-uple. Atributele unui obiect pot fi
la rndul lor considerate obiecte. n linie general, SGBDO integreaz majoritatea
funciunilor unui SGBD tradiional i n plus ofer un limbaj de programare orientat
pe obiecte pentru a defini schema bazei, pentru manipularea obiectelor i codificarea
aplicaiilor. Aceasta permite combinarea avantajelor programrii orientate pe obiect
cu conceptele de coeren, partajare, integritate proprii bazelor de date. Se reduce
astfel la minim diferena dintre reprezentarea obiectelor la nivel conceptual i nivel
intern. Un obiect orict de complex ar fi pstreaz aceeai reprezentare n memorie ca
i pe disc ceea ce face ca s se elimine problemele de conversie de tip i de structur.
Legturile dintre obiecte se pstreaz la nivelul bazei de date.
Limbajele de programare orientate pe obiect s-au rspndit n mediile
inteligenei artificiale. Ele propun o nou abordare a programrii care i datoreaz
originalitatea fuziunii naturale dintre prelucrare i date.
Conceptul de baz este obiectul, pe care l putem defini ca fiind reprezentarea
unei entiti a lumii reale. n baza de date obiectul este identificat ntr-o manier unic
printr-un identificator, numit OID (Object IDentifier), atribuit de sistem. Dou obiecte
avnd OID diferite sunt considerate ca diferite, spre deosebire de SGBD-urile
relaionale unde obiectele (tuplurile de valori corespunznd atributelor tabelei) nu
sunt identificate dect prin valorile lor.
Principii de baz n orientarea pe obiect: Abstracia, ncapsularea,
modularizarea, ierarhizarea.
Baze de date i algoritmi pentru ci de comunicaie
49
Abstracia
Orice model care include aspectele cele mai importante, eseniale i
definitorii ale unor entiti, suprimnd sau ignornd detaliile mai puin importante,
imateriale, diversificatorii. Rezultatul eliminrii distinciilor este evidenierea
caracteristicilor comune.
n final caracteristicile abstraciilor sunt capturate drept clase i obiecte ale
modelului.
ncapsularea
Localizarea fizic a facilitilor ntr-o abstracie de tip cutie neagr care le
ascunde implementarea n spatele interfeei publice.
Elimin dependena direct de implementare. Clienii nu sunt afectai de
modificarea implementrii. Clienii pot interaciona numai prin interfa.
Modularizarea
Descompunerea logic i fizic a lucrurilor n grupri simple care ajut la
atingerea scopurilor de analiz.
Sparge sistemele n piese mai mici cu comportament mai simplu. Interfeele
dintre piese trebuie bine definite.
Ierarhizare
Orice ordonare sau aranjare ntr-o structur de tip arborescent. Aceasta
corespunde organizrii modelului dintr-un anumit punct de vedere.
Un obiect este descris prin ansamblul de proprieti constituit din atribute i
metode. Posibilitatea de a face private aceste proprieti vis-a-vis de obiect se
numete ncapsulare. Altfel spus, nici un alt obiect nu cunoate metodele unui obiect
dat dect prin semnturile lor (numele metodei, lista parametrilor i tipul rezultatului
returnat) i nu are, n principiu, nici un mijloc de a accede la atributele acestuia, care
sunt manipulate prin metode proprii.
Obiectele de aceeai natur sau prezentnd similitudini sunt grupate n cadrul
unei clase n care sunt declarate toate atributele i metodele care le manipuleaz. O
clas este astfel un tipar pentru o mulime de obiecte de acelai fel. Crearea unui nou
obiect implic utilizarea instanelor i metodelor clasei din care aparine.
Pentru a nu redefini aceleai atribute i metode au fost create mecanisme de
motenire prin factorizarea proprietilor comune. Clasa nou fiind nevoit s
defineasc numai atributele i metodele suplimentare.


Capitolul 3 Baze de date, prezentare general
50
Implementarea bazelor de date orientate pe obiect (BDOO)
BDOO combin conceptele orientrii pe obiect, construciile programrii i
posibilitile gestionrii bazelor de date. BDOO suport partajarea concurent i
referenial i netezete diferenele dintre limbajele de programare i bazele de date.
Orientare-pe-obiect = tipuri abstracte de date + motenire + identitatea obiectelor
Proprietile bazelor de date preluate i dezvoltate de BDOO sunt: persisten,
tranzacii, controlul concurenei, recuperarea, tratarea cozilor de ateptare, versiune,
integritate, securitate i performan.
1. Persistena: Capacitatea de a furniza aceleai date i datele corecte n
dou tranzacii diferite. Aceste date trebuie stocate pe un suport
permanent.
2. Tranzacia: este o secven de program care fie este executat n
ntregime fie nu este executat de loc. (aceasta se numete atomicitate);
3. Controlul concurenei: Sistemul furnizeaz o ordine n timp a
tranzaciilor utile (o ordine serial de execuie);
4. Recuperarea: Trebuie s garanteze c rezultatele pariale obinute n
urma unor actualizri incomplete desfurate n tranzacii eronate nu se
propag n bazele de date persistente. Exemple de tipuri de eroare pot fi:
Eecul tranzaciei (cauzat de conflicte ntre tranzacii concurente);
Defecte de sistem (eroare software n sistemul de operare, n SGBD
sau cdere de tensiune);
Defectarea dispozitivelor de stocare (uzual produse de cderea
discurilor sau alte cauze).
5. Interogare: Se presupune existena unui limbaj de interogare i a
mecanismelor de acces. Utilizatorii pot specifica ce doresc fr s fie
preocupai de cum sunt stocate fizic datele.
6. Versiune: Capacitatea de a oferi acces la stri anterioare ale obiectelor
dup ce au fost executate unele tranzacii. Aceasta poate arta evoluia
obiectelor.
7. Restricii de integritate: Bazele de date trebuie s permit accesul numai
n stri stabile. Toate accesele ctre o zon afectat de procese de
tranzacie trebuie blocate pn cnd tranzacia a fost corespunztor
ncheiat.
8. Securitate: trebuie definite o parol i drepturi de acces pentru fiecare
utilizator.
9. Probleme de performan: La momentul actual BDOO au reputaia de a
fi bogate n funcionalitate dar slabe n performane ceea ce nseamn c
mai trebuie lucrat pentru a obine o vitez ridicat.
Baze de date i algoritmi pentru ci de comunicaie
51
TENDINE VIITOARE
Baze de date uriae vor necesita noi mijloace de manipulare i analiz. Baze
de date tiinifice foarte largi (de ordinul teraocteilor) pentru explorarea spaiului,
securitate naional, proiectul genomului uman, date de analiz geologic depesc
bariere i ridic noi probleme. Depozitele de date (data warehousing), cariere de date
(data mining) i trguri de date (data marts) sunt tehnici comune astzi. Succesoare
ale SQL, i probabil ale SGBDR, vor fi dezvoltate pentru astfel de realizri. Cele mai
multe dintre succesoare actuale ale SQL nu sunt nc utilizate la capacitate potenial.
Bazele de date mobile sunt un nou produs care apare pe pia.
Viitorul aparine bazelor de date inteligente. Bazele de date tind s
ncapsuleze cele mai noi concepte din domeniul tehnologiei informaiei. Accesul la
distan, sisteme de inteligen artificial, posibiliti grafice i hipermedia pentru
prezentarea atractiv a informaiilor.
3.7. AVANTAJE I DEZAVANTAJE
Avantajele utilizrii bazelor de date
Se asigur controlul i chiar eliminarea redundanei;
Consistena datelor;
Mai multe informaii din acelai set de date;
Partajarea datelor;
mbuntete integritatea datelor;
mbuntete securitatea;
Impune respectarea standardelor;
Economie de scal;
Echilibreaz conflictele dintre interogri;
mbuntete accesibilitatea i disponibilitatea datelor;
Productivitate crescut;
mbuntete posibilitatea de ntreinere prin asigurarea independenei
datelor
mbuntete concurena aplicaiilor;
mbuntete posibilitile de salvare i recuperare a datelor.
Datele pot fi uor partajate ntre aplicaii, eliminnd prin aceasta duplicarea i
probleme de ntreinere ce deriv din duplicare;
Apeluri noi sau cereri de un anumit tip pot fi mult mai uor implementate,
datorit faptului c interfaa logic cu SGBD este mai simpl dect un set
de interfee fizice;
Programele de aplicaie sunt independente de datele stocate. Dac formatul de
stocare se modific, nu este necesar s se modifice programele de aplicaie,
de vreme ce ele comunic logic cu SGBD;
Capitolul 3 Baze de date, prezentare general
52
Se poate considera c un SDBD unic pentru o baz de date integrat permite
o mai bun gestionare a datelor, de vreme ce ea este ntr-un singur loc sub
supravegherea unui colectiv omogen;
Integrarea i partajarea datelor ntre aplicaii dau posibilitatea unei programri
sofisticate cu transmiterea de informaii ntre utilizatorii bazei de date.
Dezavantajele utilizrii bazelor de date
Ar fi necinstit s pretindem c bazele de date nu au dezavantaje:
Sistemul de gestiune a bazelor de date i echipamentul necesar pot fi scumpe
i pot avea preuri de operare ridicate. Totui ele pot fi, n general,
contrabalansate de o productivitatea nalt.
Se impun costuri ridicate pentru echipamentul hardware;
Un SGBD este mult mai complex dect o prelucrare de fiiere i are
dimensiuni mari.
n particular, recuperarea dup o defeciune poate fi dificil. Un sistem de
baze de date poate fi mai vulnerabil la defeciuni dect un sistem de
procesare a fiierelor. Impactul unei defeciuni este mult mai mare datorit
interaciunii mai multor aplicaii.
Este evident c trebuie fcut o analiz amnunit i o balansare ntre
avantaje i dezavantaje n contextul particular al mediului i aplicaiei considerate.
3.8. BIBLIOGRAFIE
[51] Astrahan M. M. et al.: System R: a relational approach to database management; ACM
Trans. on Database Systems 1:2 (1976), pp. 97-137.
[52] Bernstein P. A. et al., "The Asilomar report on database research," http://s2k-
ftp.cs.berkeley.edu:8000/postgres/papers/Asilomar_Final.htm .
[53] Blanc Pierre: Initiation a l'nformatique; Publi en libre service, Grenoble, 1995.
[54] Bowers DS: From Data to Database; Chapman and Hall, London, 1990.
[55] Carey M.J., D.J.DeWitt, G. Graefe, D.M. Haight, J.E. Richardson, D.H. Schuh, E.J.
Shekita, S.L. Vandenberg: The EXODUS Extensible DBMS Project: An Overview; In
Stan Zdonik and David Maier, editors, Readings In Object-Oriented Database Systems.
Morgan-Kaufmann Publishers, Inc., 1990.
[56] Carey Michael J., DeWitt David J., Franklin Michael J., Hall Nancy E., McAuliffe Mark
L., Naughton Jeffrey F., Schuh Daniel T., Solomon Marvin H., Tan C.K., Tsatalos
Odysseas G., White Seth J., Zwilling Michael J.: Shoring Up Persistent Applications.
In Proc. ACMSIGMOD International Conference on Management of Data,
Minneapolis, pp.383394, May 1994.
[57] Codd E. F.: A Relational Model of Data for Large Shared Data Banks; Communications
of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387.
[58] Codd, E. F.: Relational Completeness of Data Base Sublanguages; in Data Base
Systems. Vol. 6 of Courant Computer Symposia Series. Englewood Cliffs, N.J.:
Prentice Hall, 1972. pp. 65--98.
Baze de date i algoritmi pentru ci de comunicaie
53
[59] Comer Douglas: The Ubiquitous B-Tree; Computing Surveys, 11(2):121137, June 1979
[60] Date, C. J., H. Darwen: A Guide to the SQL Standard; Fourth Edition, Addison-Wesley,
Reading, MA, 1997.
[61] Guttman Antonin: R-Trees: A Dynamic Index Structure For Spatial Searching; In
Proceedings of ACMSIGMOD International Conference on Management of Data, pp.
4757, Boston, June 1984.
[62] Hellerstein Joseph M., Naughton Jeffrey F., Pfeffer Avi: Generalized Search Trees for
Database Systems; Proceedings of the 21st VLDB Conference, Zurich, Switzerland,
1995.
[63] Kim Won, Kim Kyung-Chang, Dale Alfred: Indexing Techniques for Object-Oriented
Databases; In Won Kim and Fred Lochovsky, editors, Object-Oriented Concepts,
Databases, and Applications, pages 371394. ACM Press and Addison-Wesley
Publishing Co., 1989.
[64] Lin King-Ip, Jagadish H. V., Faloutsos Christos: The TV-Tree: An Index Structure for
High-Dimensional Data; VLDB Journal, 3:517542, October 1994.
[65] Lomet David B., Salzberg Betty. The hBTree: A Multiattribute Indexing Method; ACM
Transactions on Database Systems, 15(4), December 1990.
[66] Mediano Maurcio R., Casanova Marco A., Dreux Marcelo: V-Trees A Storage
Method For Long Vector Data; In Proc. 20th International Conference on Very Large
Data Bases, pages 321330, Santiago, September 1994.
[67] Parsaye Komran e.a.: Intelligent Databases; Wiley Press & Sons; 1989.
[68] Robinson J. T.: The k-D-B-Tree: A Search Structure for Large Multidimensional
Dynamic Indexes; In Proc. ACM-SIGMOD International Conference on Management
of Data, pp.1018, Ann Arbor, April/May 1981.
[69] Stonebraker M., E. Wong, P. Kreps, G. Held: The design and implementation of
INGRES; ACM Trans. on Database Systems 1:3 (1976), pp. 189-222.
[70] Stonebraker Michael: Inclusion of New Types in Relational Database Systems; In
Proceedings of the IEEE Fourth International Conference on Data Engineering, pp.
262269, Washington, D.C., February 1986.
[71] The POSTGRES Group: POSTGRES Reference Manual, Version 4.2. Technical Report
M92/85, Electronics Research Laboratory, University of California, Berkeley, April
1994.
[72] Ullman Jeff D., Widom Jennifer: A First Course in Database Systems: Prentice-Hall,
Englewood Cliffs NJ, 1997, 2nd edt. 2001.
[73] Wong C. K. , Easton M. C.: An Efficient Method for Weighted Sampling Without
Replacement; SIAM Journal on Computing, 9(1):111113, February 1980.
Scnteie Rodian Baze de date i algoritmi pentru ci de comunicaie
ISBN 973-86343-3-4 Editura Societii Academice Matei-Teiu Botez
Iai 2003
54
MODELE DE DATE UTILIZATE
4.1. DEFINIII
nainte de a trece efectiv n revist coninutul acestui capitol trebuie s
prezentm cteva definiii.
(N)-tuple reprezint un set de (n) valori-atribut reprezentnd o singur realizare a
combinrii domeniilor.
Atribut extern: este un atribut al unei entiti care este importat, prin relaiile
stabilite, de la o alt entitate.
Atribut local: un atribut al unei entiti ce este definit din proprietile intrinseci ale
acelei entiti.
Atribut: o funcie pe un domeniu pentru fiecare realizare a tuplelor. Atribuie o
singur valoare (dintr-o mulime bine definit) fiecrui individ din mulimea
entitilor. Este o caracteristic a entitii care se selecteaz pentru a fi inclus n
modelul E-R.
Atribute surogat: un atribut al unui tip de entitate care este conceput de proiectantul
bazei de date fr legtur cu regulile semantice care definesc entitatea.
Baz de date: un set de relaii.
Cardinalitate: numrul de tuple pe care le are o relaie. Este o restricie asupra
relaiei care descrie numrul maxim de indivizi dintr-o set activ ce poate fi corelat
cu un singur individ dintr-un alt set activ. Cardinalitatea poate fi unul-la-mai-
muli, mai-muli-la-unul, unul-la-unul.
Cheie (candidat): o (super)cheie care este minimal (care nu mai are un subset
corespunztor care s identifice unic fiecare tuplu din relaie). Pot exista mai
multe pentru fiecare relaie.
Baze de date i algoritmi pentru ci de comunicaie
55
Cheie (supercheie): un set de atribute a crui valori grupate identific unic fiecare
tuplu din relaie.
Cheie extern: este o cheie candidat a unei relaii situat ntr-o alt relaie.
Cheie primar: o cheie candidat aleas a fi cheia principal a unei relaii. Pentru o
relaie exist o singur cheie primar.
Colecie: este un set de nregistrri, fiecare cu acelai numr i tip de elemente de
date.
Domeniul: mulimea tuturor valorilor posibile ce corespund unui atribut i care pot fi
stocate. Un domeniu are un format i un tip.
Element al entitii: un obiect specific (obiect fizic sau conceptual, eveniment, fapt)
asociat cu activitatea.
Elemente de date: fiecare dintre valorile elementare care sunt stocate n bazele de
date. Fiecare dintre elementele de date are tip de dat (pe scut tip) i pot fi grupate
ntr-o nregistrare.
Entitate: este oricare ceva care este parte a problemei i care trebuie reprezentat n
baza de date.
Gradul: este numrul de atribute pe care le are o relaie;
nregistrare: un set de unul sau mai multe elemente de date cu nume propriu.
Legtur: mperecherea unui individ dintr-un set activ cu un individ dintr-un alt set
activ.
Mapare: setul tuturor legturilor dintre membrii individuali ai seturilor active.
NULL: o valoare constant special, compatibil cu domeniul oricrui atribut care
denot faptul c atributul este nedefinit pentru un element al entitii.
Produs cartezian: Produsul cartezian () ntre mulimi este mulimea tuturor
combinaiilor posibile ntre elementele seturilor.
Relaie: un subset al produsului cartezian al domeniilor sale.
Rolul: mai multe atribute pot avea acelai domeniu, dar atributele indic rolul diferit
n relaie.
Schema relaional: o descriere a conexiunii dintre dou tipuri de entiti conform
cu maparea membrilor unui set activ la membrii altui set activ.
Setul activ (al unui tip de entitate): toate acele entiti individuale de un anumit tip
care particip la momentul respectiv la o activitate.
Tipul entitii: o clas de individualiti asociat cu aciunea, care poate fi descris
de un set finit de reguli sintactice i semantice determinate de aciune pe baza
proprietilor lor reale, intrinseci i a rolului lor n aciune.
Valoare-atribut: rezultatul funciei atribut. Fiecare realizare este reprezentat de o
valoare-atribut extras din fiecare domeniu i o valoare special NULL.
4.2. MODELE DE DATE
Un model de date este o colecie de concepte care descriu datele astfel nct
ele s poat fi asociate i incluse ntr-o baz de date.

Capitolul 4 Modele de date utilizate
56
ntr-un mod mai formal, un model de date este o combinaie a cel puin trei
componente:
O colecie de tipuri de structuri de date;
O colecie de operatori sau reguli de raionament care pot fi aplicate oricrei
instane valide a tipurilor de date;
O colecie de reguli generale de integritate care definesc implicit sau explicit
mulimea strilor bazei de date, posibilitile de modificare sau amndou.
Este importat de observat c modelul de date este o construcie logic care se
realizeaz ulterior pe diferite platforme hardware i software. De aceea, acelai model
de date poate avea diferite aparene, performane, eficien, limite, costuri etc. funcie
de implementare.
MODELUL ENTITATE-RELAIE
Cel mai rspndit model de reprezentare abstract a structurii bazelor de date
este modelul entitaterelaie (model E/R). n acest model structura datelor este
reprezentat grafic printr-o diagram entitate-relaie.[79]
Modelul E/R implic utilizarea a trei elemente: entitatea, atributul i relaia.
Entitatea
Entitatea este ceva care este parte a problemei i care trebuie reprezentat n
baza de date. Poate fi un obiect fizic (o persoan, o cldire, un tunel etc.), conceptual
(o instituie, un proiect etc.) sau faptic (o revizie periodic a fost efectuat i au fost
efectuate msurtori care trebuie stocate). n sens larg, o entitate este un obiect
abstract de orice natur. O colecie de entiti similare formeaz un set de entiti.
Exist asemnri ntre entitate, aa cum a fost prezentat mai sus, i termenul
de obiect din programarea orientat pe obiect. Totui, modelul E/R este un concept
static implicnd doar structuri de date nu i operaiile asupra datelor (Ullman i
Widom 2001 [84]).
Pentru termenul entitate putem s gsim mai multe semnificaii care rezult
din context. Dac exist posibilitatea de confuzie nelesul trebuie specificat n clar.
O entitate individual este un lucru specific (obiect fizic sau conceptual,
aciune sau eveniment) asociat cu un fapt. Referirea la o entitate individual se face
cu articol (hotrt sau nehotrt).
Un tip de entitate este o clas de entiti individuale care pot fi descrise
colectiv printr-un set finit de reguli sintactice i semantice determinate de necesitile
specifice ale administratorilor i utilizatorilor. Acestea sunt prototipuri care definesc
indivizii. n diagramele E-R sunt reprezentate tipurile de entitate.
Referirea se face nearticulat sau la plural.
Baze de date i algoritmi pentru ci de comunicaie
57
Setul activ al tipului de entitate reprezint seciunea din mulimea total a
indivizilor care particip la un realizare. n modelul E-R nu suntem interesai de setul
activ dect n execuie, acesta fiind rezultatul aplicrii unei interogri.
Referirea se face utiliznd pluralul.
De notat c entitile individuale, tipurile de entitate i seturile active exist
efectiv n realitate dar nu pot fi stocate direct n baza de date. Trebuie s identificm
caracteristicile care definesc fiecare entitate.
Atributele
n cadrul modelului, entitile trebuie caracterizate pentru a se diferenia din
setul de entiti. Aceasta se face prin proprieti care se ataeaz entitilor i poart
denumirea de atribute. Atributele au, n general, valori atomice: ntregi, reali, iruri
de caractere. Exist i variante ale modelului E/R n care atributele au form
structurat.
n proiectarea unei baze de date trebuie identificate caracteristicile eseniale
ale unei entiti i mulimea valorilor care pot fi acordate acestor caracteristici.
Noiunea de esenial se refer la contextul specific n care bazele de date i
aplicaiile aferente vor fi utilizate.
De exemplu, cnd se realizeaz o list a personalului care lucreaz n
administraia drumurilor este total irelevant s stocm date privind culoarea prului,
nlime, culoarea ochilor etc. pe cnd un sistem de baze de date al poliiei consider
tocmai aceste date de importan deosebit.
Spre deosebire de entiti, atributele pot fi stocate n computer. Ele sunt
definite ca valori stocabile, cuprinse ntr-un anumit domeniu.
Exemple
Persoanele angajate au nume, prenume, funcie, studii, adres, telefon,
competene etc.

Sectoarele rutiere au poziie, lime, material de construcie, pant
longitudinal, pant transversal, acostament etc.

Podurile au poziie, lungime, lime, numr de benzi, numr de deschideri
etc.
Relaiile
Relaiile sunt conexiuni care se stabilesc ntre entiti. Relaia poate apare
ntre dou entiti (relaie binar) dar este posibil relaia ntre oricte entiti.
Relaiile reprezint o hart a legturilor dintre membrii fiecrui set de entiti.
Capitolul 4 Modele de date utilizate
58
n fapt exist mai multe niveluri de noiuni legate de conceptul de relaie.
Tabelul 1. Noiunea de entitate
Conceptul de entitate Concepte relaionale
Tip de entitate Relaie
Set activ Harta conexiunilor
Entiti individuale Legturi

Restriciile numerice ale relaiilor
Relaia dintre dou tipuri de entiti se caracterizeaz prin restricii legate de
dimensiunea maxim a seturilor active care pot participa (restricii de cardinalitate).
Pot exista relaii:
Unul la unul cnd exist o legtur strict biunivoc ntre un sigur individ
din fiecare tip de entitate;
Unul la mai muli unui individ din primul tip de entitate i corespund mai
muli membri din al doilea tip de entitate;
Mai muli la unul mai muli membri ai primului tip de entitate sunt legai
de un membru al celui de al doilea tip de entitate.
Reprezentarea restriciei de cardinalitate se face convenional dup cum se
prezint n figura urmtoare:



muli
unul

Fig. 27 Reprezentare restriciilor de cardinalitate
Diagrame entitate relaie
O diagram entitate-relaie (diagram E/R) este un graf care reprezint seturi
de entiti, atribute i relaii. Elementele din fiecare sunt reprezentate de nodurile
Baze de date i algoritmi pentru ci de comunicaie
59
grafului. Pentru fiecare tip de element se utilizeaz reprezentarea prin forme speciale
predefinite, stabilite prin convenie.

Cele mai utilizate reprezentri convenionale sunt:
Setul de entiti este reprezentat prin dreptunghiuri;
Atributele sunt reprezentate prin elipse;
Relaiile se reprezint prin romburi
Laturile grafului conecteaz o entitate de atributele sate i seturile de entiti
de relaiile desemnate.

POD
COD
Tip infrastructur
Tip suprastrur
An construcie
Traverseaz
Aparine
ADMINISTRATOR
Nume
Adres
Telefon
Nivel_decizional
OBSTACOL
NUME
Lime
Adncime

Fig. 28 Reprezentare Entitate Relaie
n figura de mai sus am prezentat un exemplu de diagram entitate-relaie
simpl pentru trei seturi de entiti, fiecare cu atributele sale. Seturile de entiti sunt
conectate de relaiile specifice. Astfel podurile traverseaz obstacole i tot podurile
aparin unor administratori.
Atribute ale relaiei
Uneori este imposibil sau extrem de dificil a ataa anumite atribute cu un set
de entiti. n astfel de situaii este convenabil a ataa atribute la relaie.
S consider, de exemplu, c se stabilete un contract pentru realizarea
lucrrilor de reabilitare ale unei lucrri de art. La contract particip executantul
lucrrilor desemnat drept constructor i gestionarul lucrrii de art
administratorul.
Deoarece la realizarea reabilitrii pot participa mai muli executani
contractuali nu putem ataa preul contractului la entitatea numit reabilitare.
Capitolul 4 Modele de date utilizate
60
Constructorul poate participa la executarea mai multor contracte simultan, iar
administratorul, la rndul su, gestioneaz mai multe activiti. Nu este convenabil s
atam atributul valoare negociat de nici-unul dintre seturile de entiti. Locul su
este lng relaia numit contract.

Reabilitare
POD
Tip lucrri
Durat
An execuie
Contract
Constructor
Nume
Adres
Telefon
Cod Fiscal
Administrator
Cod Fiscal
Nume
Adresa
Valoare negociat

Fig. 29 Reprezentare Entitate Relaie pentru atribute ataate relaiei
Chiar dac uor de manipulat, acest concept nu este absolut necesar. Se poate
crea o nou entitate creia i se ataeaz atributul necesar i se adaug entitatea n
relaie.
Reprezentarea atributelor
naintea definitivrii modelului, trebuie s identificm atributele care
reprezint relaia. Totodat trebuie s stabilim motivaia i consecinele alegerii unui
atribut.
Exemplu: Presupunem c un constructor ncheie contracte pentru lucrri. Pe
perioada construciei, atributele ataate constructorului devin atribute ataate lucrrii.
Deosebim trei tipuri de atribute:
locale,
surogat i
strine.
Atributele locale: sunt atributele intrinsec definite tipului de entitate. Aceasta
nseamn c indiferent de relaiile n care este implicat entitatea atributul este
prezent i are o valoare bine definit. Numele este un atribut local al constructorului.
Atributul surogat: reprezint un atribut al tipului de entitate care a fost
inventat pentru o mai bun manipulare a datelor. Codul numeric personal pentru
angajai, codul fiscal pentru societi sau un numr unic de identificare acordat
automat de sistem pot fi considerate atribute surogat. Ele reprezint doar convenii
fr corespondent n realitate dar asigur o mai bun distincie ntre indivizi.
Baze de date i algoritmi pentru ci de comunicaie
61
Atribut strin: reprezint un atribut al unei entiti care este ataat unei alte
entiti aflate n relaie cu prima pe durata relaiei. Dac avem contracte de lucrri
efectuate de un constructor, pe perioada relaiei atributele care l identific pe
constructor devin atribute ale contractului.
4.3. DEZVOLTAREA BAZELOR DE DATE
NIVELE ALE ARHITECTURII BAZELOR DE DATE
Exist trei nivele ale arhitecturii bazelor de date:
Nivelul conceptual;
Nivelul logic;
Nivelul fizic.
1. Nivelul conceptual: definete principiile structurii (fiiere, reele, pointeri,
tabele relaionale etc.). Aceasta este doar o abstractizare a lumii reale care
se concentreaz asupra elementelor de informaie care sunt relevante
pentru utilizatorii bazei de date.
2. Nivelul logic: Structurile bazei de date sunt definite la nivelul schemelor.
Schemele includ o descriere a tipurilor de nregistrri i a modurilor n
care sunt corelate.
a) Dezvoltarea de scheme i dicionare de date: Trebuie identificate
relaiile i atributele i se catalogheaz n dicionare de date.
Dicionarul de date este, el nsui, o baz de date constnd din
conceptele eseniale pe care ar trebui s le cunoasc utilizatorii care
lucreaz cu baza de date. Funciile furnizate de dicionar sunt:
(i) Definirea cmpurilor i fiierelor;
(ii) Definirea relaiilor;
(iii) Definirea schemelor i sub-schemelor externe (cum
pot fi accesate datele, lista cmpurilor, lista relaiilor
etc.)
(iv) Definirea elementelor fizice importante: localizarea
datelor, volum etc.
(v) Definirea viziunilor.
b) Scheme de ierarhie i reea: stabilete legturi ntre nregistrrile din
baza de date. Aceasta se ilustreaz ntr-un mod specific. Sistemul
trebuie s includ:
(i) Declaraia numelor de scheme;
(ii) Una sau mai multe declaraii ale tipurilor de
nregistrare;
(iii) Una sau mai multe declaraii de seturi care definesc
relaiile dintre tipurile de nregistrri;
(iv) Una sau mai multe declaraii ce definesc zonele
fizice n care se stocheaz nregistrrile.
Capitolul 4 Modele de date utilizate
62
c) Scheme relaionale: furnizeaz un model de a privi datele. Utiliznd
algebra relaional datele pot fi reunite, proiectate, selectate etc.
3. Nivel fizic: abordeaz probleme specifice implementrii. Include
accesarea i metodele de management a datelor (secvenial, indexat etc.).
MODELE DE BAZE DE DATE
n dezvoltarea bazelor de date s-au utilizat mai multe modele:
Modelul ierarhic,
Modelul reea,
Modelul relaional.
Modelul ierarhic
Modelul a fost dezvoltat n anii '60 la North American Rockwell.
Acest model se refer la aranjarea ordonat datelor ntr-o structur de forma
unui arbore cu rdcina n sus. Un exemplu este cel prezentat n figura urmtoare:

DIRECIA DE STUDII Direcia Regional 1 Direcia Regional n
Secia 1,1 Secia 1,m
Sectoare de drum Poduri
AGENIE

Fig. 30 Modelul ierarhic pentru bazele de date
Aa cum se poate vedea mai sus, nregistrrile din acest model respect o
ierarhie strict. Legturile dintre diferitele structuri se fac prin pointeri. Un pointer
este o referin care indic localizarea unor date specifice n mediul de stocare.
Intuitiv, pointerii sunt precum referinele de pagin n zona de index dintr-o carte.
Modelul ierarhic a fost prima implementare comercial major a conceptelor
teoretice despre bazele de date. Caracteristica de baz a structurii datelor n acest
model este prezena n percepia utilizatorilor a diferitelor niveluri. Cel mai de sus
nivel este rdcina sau printele.
Baze de date i algoritmi pentru ci de comunicaie
63
Parcurgerea bazei de date se face respectnd calea ierarhic. Pentru a ajunge
la un anumit segment de date trebuie parcurs ntreaga cale de la rdcin la
segmentul specific.
Modelul reea
Modelul reea a fost creat n 1971 de Conferina asupra Limbajelor
Sistemelor de Date (Conference on Data Systems Languages - CODASYL).
Simplificat, modelul de baze de date reea este prezentat ntr-o manier intuitiv n
figura urmtoare:

ADMINISTRAIE
SECIE n
Sector Rutier q
Angajat m
SECIE 2
SECIE 1
Angajat 3
Angajat 2
Angajat 1
Sector Rutier 3
Sector Rutier 2
Sector Rutier 1

Fig. 31 Modelul de baze de date reea
Structura de baz n acest model este setul i se compune din cel puin dou
tipuri de nregistrri: o nregistrare posesor echivalent cu printele din modelul
ierarhic i o nregistrare membru. Un membru poate avea mai muli posesori.
Modelul de date relaional
Modelul relaional a fost dezvoltat n 1970 la IBM de E.F. Codd. La acea
vreme modelul a fost considerat ingenios dar nepractic. Dezvoltarea ulterioar a
calculatoarelor ca i scderea preurilor a permis ca acest model s fie utilizat de
sisteme de baze de date sofisticate: ORACLE, Informix, Ingress etc.
Structura de baz este tabela. Fiecare tabel este o matrice format din linii i
coloane. Tabelele sunt referite prin relaii. Aceasta nseamn c tabelele conin n
comun unele caracteristici pe baza crora se pot stabili legturi.
Capitolul 4 Modele de date utilizate
64

SECTOR
COD_SR
COD_DRUM
POS_KMI
POD_KMS
DR_STRUCT
INTRETINERE
AN
COD_SR
INT_COD
INT_CANTIT

Fig. 32 Modelul relaional de baze de date
Probabil cea mai simpl form de abordare a modelului relaional rmne cel
propus iniial de Codd, chiar dup rafinri i dezvoltri succesive. Modelul relaional
specific o structur de date numit relaie i cteva expresii de manipulare a
relaiilor. Termenul de relaie reprezint o tabel, structurat pe linii i coloane, n
care se aranjeaz datele. Nu este obligatoriu ca datele s fie omogene. Pentru relaii a
fost definit i un set de operaii denumit algebr relaional care va fi prezentat n
capitolul urmtor.
Consideraii practice
Modelele de baze de date au fost utilizate ca fundamente teoretice pentru
dezvoltarea a bazelor de date i a sistemelor de gestiune a bazelor de date. n ultima
perioad cea mai mare extindere au avut-o bazele de date relaionale care au fost
susinute puternic de industria informaticii dar i de utilizatori care au gsit n acest
model un rspuns simplu la necesitile lor.
Este motivul pentru care, n continuare vom dezbate doar problemele legate
de modele de date relaionale, problemele teoretice i dezvoltarea limbajelor aferente
insistnd pe dezvoltarea limbajului SQL ca standard n domeniul bazelor de date
relaionale.
4.4. BIBLIOGRAFIE
[74] Chen, 1976: Chen Peter P.: The Entity-Relationship Model - Toward a Unified View of
Data. ACM TODS 1(1): 9-36(1976)
[75] Codd, 1970: Codd E. F.: A Relational Model of Data for Large Shared Data Banks;
Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387.
[76] Codd, 1972: Codd, E. F.: Relational Completeness of Data Base Sublanguages; in Data
Base Systems. Vol. 6 of Courant Computer Symposia Series. Englewood Cliffs, N.J.:
Prentice Hall, 1972. pp. 65--98.
Baze de date i algoritmi pentru ci de comunicaie
65
[77] Codd, 1979: Codd E. F. (1979): Extending the Data Base Relational Model to
Capture More Meaning; ACM Trans. on Database Systems, 4, 4, 397-434. 48
[78] Codd, 1981: E. F.: The 1981 ACM Turing Award Lecture: Relational Databases A
practical foundation for Productivity; CACM, Vol. 25 No 2, February 1982
[79] Dick Wayne, Jewett Tom: Practical Relational Database Design, 1999 ????
[80] Garcia-Molina Hector, Ullman Jeffrey D., Widom Jennifer D.: Database Systems: The
Complete Book; Prentice Hall, Copyright: 2002.
[81] Muller Robert J.: Database Design for Smarties: Using UML for Data Modelling;
Morgan Kaufmann, 1999.
[82] Muller Robert J.: Database Design for Smarties: Using UML for Data Modelling;
Morgan Kaufmann, 1999.
[83] Tsichritzis, 1982: Tsichritzis, F.H. Lochovsky: Data Models; Prentice-Hall, Englewood
Cliffs, New Jersey, 1982.
[84] Ullman Jeffrey D., Widom Jennifer D: A First Course in Database systems, (First edition
1997, second edition published in October, 2001.) Prentice Hall, 2002.
Scnteie Rodian Baze de date i algoritmi pentru ci de comunicaie
ISBN 973-86343-3-4 Editura Societii Academice Matei-Teiu Botez
Iai 2003
66
ALGEBRA RELAIONAL I
LIMBAJE DE BAZE DE DATE
5.1. ALGEBRA RELAIONAL
n cadrul SGBD procesarea datelor se poate face prin limbaje de manipulare a
datelor (DML). DML pot fi diferite funcie de sintaxa lor dar mai ale funcie de
operaiile puse la dispoziie. Aceste operaii, materializate prin definirea unui
operator, fundamenteaz complexitatea i puterea de prelucrare a limbajului.
Mulimea operatorilor definii formeaz algebra.
Algebra relaional este un set de operatori definit pe mulimea relaiilor i
care dau ca rezultat o relaie. Prin utilizarea lor se pot defini interogri complicate.
Se definesc 6 operatori de baz:
Proiecia (),
Selecia (),
Produsul cartezian (),
Uniunea ( U),
Diferena () i
Redenumirea.
Proiecia
Proiecia se noteaz cu ( ) r
m
a a a , , ,
2 1
L
unde r este relaia asupra creia se aplic
operatorul iar
m
a a a , , ,
2 1
L reprezint atribute. Relaia rezultat prin aplicarea
Baze de date i algoritmi pentru ci de comunicaie
67
operatorului de proiecie are m coloane extrase din relaia r. Atributele (coloanele) din
r care nu sunt enumerate nu se pstreaz. Duplicatele nu se rein.
Exemplu: Se consider o relaie r de forma:
A1 A2 A3 A4
DN 1 100 345
DN 12 6 200
DN 1 78 555
DJ 105 1 000
DJ 105 1 780
DN 1 13 762
DJ 1 45 300
Definim proiecia ( ) r
A A 2 , 1
. Rezultatul operaiei este:
A1 A2
DN 1
DN 12
DJ 105
DJ 1
Selecia
Operaia de selecie notat cu ( ) r
P
este definit prin
( ) ( ) ( ) { } s P r s s r
P
, : = . Aplicarea acestui operator va returna o submulime a relaiei
r care verific expresia condiional P. Expresia P se supune regulilor calculului
propoziional. Mai multe condiii pot fi conectate prin operatori logici ( i, sau,
nu)
Exemplu: Pentru relaia r din exemplul anterior definim ( ) r
A DN A 1 2 1 = =

A1 A2 A3 A4
DN 1 100 345
DN 1 78 555
DN 1 13 762
Capitolul 5 Algebra relaional i limbaje de baze de date
68
Produsul cartezian
Considernd dou relaii
1
r i
2
r se definete produsul cartezian
2 1
r r ca
fiind { }
2 1 2 1
, : r q r p pq r r = . Aceast operaie presupune c cele dou relaii sunt
disjuncte ( =
2 1
r r ). Dac nu sunt disjuncte se aplic operaia de redenumire.

Exemplu
Considerm relaia
1
r de forma:

A1 A2 A3 A4
DN 1 100 500
DN 3 7 333
DN 50 113 700
i
2
r de forma:
B1 B2 B3
DN 1 E
DN 3 P
DN 50 S
produsul lor cartezian este:
A1 A2 A3 A4 B1 B2 B3
DN 1 100 500 DN 1 E
DN 1 100 500 DN 3 P
DN 1 100 500 DN 50 S
DN 3 7 500 DN 1 E
DN 3 7 333 DN 3 P
DN 3 7 700 DN 50 S
DN 50 113 500 DN 1 E
DN 50 113 333 DN 3 P
DN 50 113 700 DN 50 S
Baze de date i algoritmi pentru ci de comunicaie
69
Uniunea
Operaia de uniune (
2 1
r r U ) se definete ca ( ) ( ) { }
2 1 2 1
: r r r r r r r = U .
Relaiile trebuie s aib acelai numr de atribute i atributele s fie compatibile.
Exemplu: Se consider o relaie
1
r de forma:
A1 A2 A3 A4
DN 1 100 345
DN 12 6 200
DN 1 78 555
DN 1 13 762
i relaia
2
r de forma:
A1 A2 A3 A4
DJ 105 1 000
DJ 105 1 780
DJ 1 45 300
uniunea lor
2 1
r r U are forma:
A1 A2 A3 A4
DN 1 100 345
DN 12 6 200
DN 1 78 555
DN 1 13 762
DJ 105 1 000
DJ 105 1 780
DJ 1 45 300

Diferena
Operaia de diferen (
2 1
r r ) se definete ca ( ) ( ) { }
2 1 2 1
: r r r r r r r = U .
Relaiile
1
r i
2
r trebuie s aib acelai numr de atribute i atributele trebuie s fie
compatibile.
Capitolul 5 Algebra relaional i limbaje de baze de date
70
Exemplu: Se consider o relaie
1
r de forma:
A1 A2 A3 A4
DN 1 100 345
DN 12 6 200
DN 1 78 555
DN 1 13 762
i relaia
2
r de forma:
A1 A2 A3 A4
DN 12 6 200
DN 1 13 762
diferena lor
2 1
r r are forma:
A1 A2 A3 A4
DN 1 100 345
DN 1 78 555

Pe lng aceste operaii se mai pot defini intersecia i mbinarea (join) care
ns sunt redundante. De exemplu, intersecia poate fi definit ca:
( ) Q P P Q P = I . Chiar dac nu sunt strict necesari pentru a face setul de
operatori s fie complet, aceti noi operatori, i alii asemenea, pot face interogrile
mai simple.
5.2. LIMBAJUL DE BAZE DE DATE SQL
SQL (Structured Query Language = Limbaj de Interogare Structurat) este un
limbaj ataat unor sisteme de gestiune a bazelor datelor relaionale ce se constituie n
momentul de fa ntr-o majoritate a preferinelor.
Modelul relaional a aprut n 1970 i este rodul activitii lui E.F. Codd ca
director de cercetri la Centrul IBM din San Jose. Pornind de la acest model au fost
create mai multe limbaje ntre care IBM Sequel (evoluat ulterior n Sequel/2),
System/R, IBM DB2.
Pe baza experienei acumulate s-a ajuns la SQL standardizat de ANSI n
1986. n 1989 apare o nou versiune care este mbuntit n 1992 sub numele de
SQL/92 sau SQL 2. n 1999 se ncearc reglementarea utilizrii de obiecte n limbaj i
apare SQL/99 sau SQL3.
Baze de date i algoritmi pentru ci de comunicaie
71
SQL este simultan:
un limbaj de definire a datelor,
un limbaj de manipulare a datelor i
un limbaj de control a datelor.
Ca limbaj de definire a datelor (n englez DDL Data Definition Language,
n francez Langage de Dfinition de Donnes) SQL poate stabili structura unei baze
de date i a tabelelor, o poate modifica sau terge.
SQL permite interogarea datelor dintr-o tabel sau mai multe tabele ale
bazelor de date relaionale. Totodat permite adugarea, modificarea sau tergerea
datelor din tabele. Se poate deci spune c SQL este un limbaj de manipulare a datelor
(n englez DML Data Manipulation Language, n francez Langage de
Manipulation de Donnes).
SQL este i un limbaj de control a datelor (n englez DCL Data Control
Language, n francez Langage de Protection dAccs). El face posibil definirea
diferitelor nivele de acces, gruparea utilizatorilor i stabilirea permisiunii de a crea,
interoga i actualiza datele, tabelele i baza de date.
n descrierea limbajului SQL exist cteva convenii pe care este bine s le
cunoatem. Astfel, elementele indicate cu majuscule sunt cuvinte cheie. Semnul |
indic posibilitatea de alege unul dintre elementele listate. ntre paranteze ptrate sunt
elementele opionale. Parantezele nu apar efectiv n comand.
Sintaxa comenzilor SQL nu este sensibil la tipul caracterelor i deci putem
scrie cu majuscule sau minuscule fr ca aceasta s genereze o eroare.
Se pot introduce comentarii prin caracterul % (ce urmeaz dup acest
caracter pn la sfritul rndului) sau prin delimitatorii /* i */
5.3. SQL LIMBAJ DE MANIPULARE A DATELOR
Aceast caracteristic a SQL este cea mai cutat i utilizat. Dac definirea
accesului i privilegiilor n sistem este problema administratorului, dac n definirea
de noi tabele sunt implicate persoane specializate, n interogare i vizualizare sunt
interesai toi cei care vin n contact cu datele.
Comanda de baz care caracterizeaz SQL este SELECT. Cunoaterea i
utilizarea sa pune la dispoziie un instrument simplu dar puternic de manipulare a
datelor.
COMANDA SELECT
Sintaxa comenzii SELECT
SELECT este comanda de baz n manipularea datelor.
Capitolul 5 Algebra relaional i limbaje de baze de date
72
Aceast comand se bazeaz pe algebra relaional i are urmtoarea sintax
fundamental:
SELECT [ALL | DISTINCT] <lista numelor de coloane>|*
FROM <lista tabelelor>
[WHERE <expresie logic de condiionare>]
[ORDER BY < lista numelor de coloane>]
[GROUP BY < lista numelor de coloane>]
[HAVING < expresie logic de condiionare >]

Opiunea ALL permite vizualizarea tuturor liniilor din interogare i este
implicit spre deosebire de DISTINCT care elimin dublurile. Lista numelor de
coloane este o niruire de coloane separate prin virgul. Dac se dorete afiarea
tuturor coloanelor i nu exist posibilitatea confuziei se poate utiliza semnul * care
permite acest lucru.
Lista tabelelor este o niruire de nume de tabele din baza de date separate
prin virgul. Expresia logic de condiionare este o expresie constituit cu ajutorul
operatorilor logici i a comparatorilor matematici i permite filtrarea acelor linii care
ndeplinesc condiia.
Execuia comenzii are urmtorii pai: se efectueaz produsul cartezian al
liniilor din tabele, se evalueaz expresia logic de condiionare, se elimin toate
elementele care nu ndeplinesc condiia i din liniile rmase se returneaz coloanele
indicate n lista numelor de coloane.
Exemple simple de utilizare a comenzii SELECT
Presupunnd c n baza de date a fost definit o tabel numit PODURI,
putem vizualiza toate liniile cu comanda:
SELECT * FROM Poduri

n cazul n care suntem interesai s urmrim doar numele drumului i poziia
kilometric a podurilor, considernd c acestea sunt pstrate n coloanele NumeDrum
i PozKm, comanda va avea forma:
SELECT NumeDrum, PozKm FROM Poduri

De notat c aceast comand returneaz implicit toate nregistrrile din
tabel, chiar i dac unele dintre ele au fost introduse eronat de mai multe ori.
Pentru a avea numai o singura dat valorile i a elimina dublurile adugm
clauza DISTINCT i comanda ia forma:
SELECT DISTINCT NumeDrum, PozK FROM Poduri
Baze de date i algoritmi pentru ci de comunicaie
73
Trebuie ca operaia s fie privit atent i precaut pentru c DISTINC
returneaz numai prima linie ntlnit dintre cele similare i exist posibilitatea ca
tocmai aceast linie s fie inutilizabil.
Operatori n expresia logic de condiionare
Pentru obinerea numai acelor linii care ndeplinesc o anumit condiie, n
clauza WHERE vom utiliza o expresie ce ntoarce o valoare logic. Dac valoarea
este FALS atunci linia este respins de la selecie.
Expresia are forma general a expresiilor logice i conine: operatori logici
(AND, OR, NOT), comparatori pe iruri ??? (IN, BETWEEN, LIKE), comparaii
aritmetice i pe iruri de caractere (=, !=, >, <, >=, <=, <>, !>, !<) i operaii
aritmetice i pe iruri (+, -, *, /, &, |, ^, ~, %). Ordinea de preceden este cea
obinuit n expresiile logice i aritmetice dar poate fi modificat prin utilizarea
parantezelor.
Exemple de utilizare a comenzii SELECT cu clauza WHERE
n ultimul exemplu de mai sus presupunem c suntem interesai s aflm
drumul i poziia kilometric a podurilor care aparin de un district numit NEGRILA.
SELECT DISTINCT NumeDrum, PozKm
FROM Poduri
WHERE District = "NEGRILA"

Dac suntem interesai s listm toate podurile care au lungimea mai mare
dect o lungime minim atunci comanda va avea forma:
SELECT *
FROM Poduri
WHERE Lungime > 40.0

Analog, dac dorim s combinm condiiile i s evideniem toate podurile
care aparin de o list de districte i au limea cuprins ntr-un anumit interval:
SELECT *
FROM Poduri
WHERE (District IN("NEGRILA","ALBILA,"CERNILA"))
AND (Latime BETWEEN 6.0 AND 9.0)

Operatorul LIKE asigur compararea coninutului unui ir de caractere prin
utilizarea unor caractere generice (n englez wildcard character, n francez
caractres jokers). Aceste caractere in locul unei secvene de caractere (%), unui
Capitolul 5 Algebra relaional i limbaje de baze de date
74
singur caracter ( _ ) sau pot indica un interval n care un anumit caracter poate lua
valori ([-]).
Exemple de utilizare a caracterelor generice
%grinzi% indic orice ir de caractere care conine n interior cuvntul
grinzi. Eventuala secven de caractere nlocuit de % poate i nul deci irul poate s
i nceap cu literele indicate n clar.
_ _ _ escu indic un cuvnt de 7 litere care se ncheie cu escu. Un astfel
de cuvnt poate lua valoarea Ionescu, Popescu, Tomescu etc.
[A-C]% indic orice cuvnt care ncepe cu A, B sau C, inclusiv literele
nsele.
Ordonarea rezultatelor
Rezultatele interogrii se afieaz n conformitate cu poziia lor n tabele.
Este totui necesar adesea s se stabileasc o anumit ordine. Acest lucru se poate
face utiliznd clauza ORDER BY urmat de o list de coloane separate prin virgul,
fiecare dintre ele putnd fi urmate de cuvntul cheie ASC (ascendent) sau DESC
(descendent). Implicit ordonarea se face n ordine ascendent.
Exemplu
SELECT Prenume, Nume, Salariu
FROM Personal
ORDER BY Salariu DESC, Nume, Prenume

Din tabela cu personalul se selecteaz angajaii n ordinea descresctoare a
salariului. n caz de egalitate nregistrrile sunt aranjate n ordinea alfabetic a
numelor i prenumelor. ORDER BY ordoneaz dup valori numerice, alfanumerice
sau combinaii.
Gruparea rezultatelor
Uneori este important ca operaiile i afiarea rezultatelor s se fac pe grup
de nregistrri. Aceste operaii sunt permise de includerea n comand a clauzei
GROUP BY. Funciile utilizabile n astfel de situaii dau o imagine statistic a
grupurilor. Funciile agregate ce pot fi utilizate sunt: AVG() pentru calculul mediei,
COUNT() care numr liniile din grup, MAX() i MIN() care aleg maximul respectiv
minimul seleciei, SUM() care calculeaz suma i STD() sau STDDEV() pentru
calculul deviaiei standard (ultima funcie este o extensie a limbajului i depinde de
implementare).
Baze de date i algoritmi pentru ci de comunicaie
75
Exemplu
SELECT Sectie, COUNT(*), AVG(Salariu),
Max(Salariu), SUM(Realizri)
FROM Personal
ORDER BY Sectie
GROUP BY Sectie

Se grupeaz nregistrrile angajailor din fiecare secie i se afieaz numele
seciei, numrul angajailor, media i maximul salarial precum i suma realizrilor.
Lucrul cu jonciuni
Exemplele de interogare de mai sus au fost date pentru lucrul cu o singur
tabel. Totui sintaxa clauzei FROM este:
FROM <lista tabelelor>
permind includerea numelui mai multor tabele simultan.
Pentru a simplifica structura tabelelor i a minimiza spaiul utilizat, datele
trebuie stocate convenabil n mai multe tabele. n momentul utilizrii datele din tabele
trebuie combinate. Acest lucru este posibil prin utilizarea jonciunilor.
Jonciunea se realizeaz prin efectuarea produsului cartezian al tabelelor
implicate n ordinea precizat de clauza ORDER BY. Clauza WHERE elimin toate
elementele produsului cartezian care nu ndeplinesc expresia logic de condiionare.
Deoarece n dou tabele diferite pot apare coloane cu acelai nume se identific unic
fiecare coloan prin indicarea numelui tabelei urmat de caracterul . urmat de
numele coloanei.
Acest tip de jonciune este opiunea natural i se numete jonciune intern
(inner join).
Dac alegerea prin clauza WHERE se face prin verificarea egalitii a dou
coloane atunci jonciunea poart numele de echi-jonciune (jonciune echivalent).
Exemplu
SELECT NumeDrum, PozKm, NumeDistr
FROM Poduri, District
WHERE Poduri.CodDistr = District.CodDistr

Dac ns alegerea prin clauza WHERE se face prin verificarea unei
inegalitii ntre coloane sau combinaii de coloane atunci jonciunea poart numele
de non-echi-jonciune (jonciune neechivalent).
Capitolul 5 Algebra relaional i limbaje de baze de date
76
Jonciuni externe
O jonciune extern este o jonciune n care fiecare nregistrare
corespunztoare din cele dou tabele este inclus ntr-o nregistrare rezultat chiar dac
nu ndeplinete condiiile. Asemenea nregistrare va furniza coloane cu coninut
NULL.
Jonciunea extern stnga
Jonciunea extern stnga sau simplu jonciunea stnga include liniile din
prima tabel a unei jonciuni (cea din stnga) chiar dac nu satisfac condiia impus.
Exemplu:
SELECT INSPECT.*, DEFECT.*
FROM INSPECT LEFT JOIN DEFECT
ON INSPECT.ID = DEFECT.ID_INSPECT;

Jonciunea extern dreapta
Jonciunea extern dreapta sau jonciunea dreapta include liniile din a doua
tabel a unei jonciuni (cea din dreapta) chiar dac nu satisfac condiia impus.
Exemplu:
SELECT INSPECT.*, DEFECT.*
FROM INSPECT RIGHT JOIN DEFECT
ON INSPECT.ID = DEFECT.ID_INSPECT;

Utilizarea interogrilor imbricate
n cadrul unei clauze se poate utiliza o singur valoare. Uneori este nevoie a
se utiliza mai multe valori care s fie preluate din tabel. Pentru generarea acestor
valori se poate utiliza o nou interogare. Interogrile imbricate se numesc sub-
interogri. Acest mod de lucru se mai numete interogare n cascad deoarece se
ateapt ncheierea unei interogri pentru a ncepe o alta.
Sub-interogrile trebuie plasate ntr-o clauz WHERE sau HAVING unde
nlocuiete o constant sau un grup de constante care intr ntr-o relaie.
Cnd nlocuiete o constant sub-interogarea trebuie s ntoarc o singur
valoare (o tabel cu o singur linie i o singur coloan):
SELECT ---
FROM ---
WHERE --- < (
SELECT --- FROM ---
)
Baze de date i algoritmi pentru ci de comunicaie
77
Cnd nlocuiete un grup de constante incluse ntr-o expresie care conine
operatorii IN, EXISTS, ALL, ANY sub-interogarea trebuie s ntoarc un set de
valori cu o singur dimensiune:
SELECT ---
FROM ---
WHERE --- IN (
SELECT --- FROM ---
)

Interogrile imbricate respect toate regulile de sintax i de logic ale
comenzii SELECT i pot avea la rndul lor sub-interogri..
Exemplu
Presupunnd c n tabela Poduri avem coloana IndStare de tip numeric n
care se stocheaz un indicator de stare tehnic. Cu urmtoarea comand vom afia
toate podurile la care indicele de stare este sub medie.
SELECT *
FROM Poduri
WHERE IndStare <
(
SELECT AVG(IndStare) FROM Poduri
)

OPERAII DE ASAMBLARE
Rezultatul comenzilor de interogare poate fi combinat utiliznd operaiile
definite de algebra relaional. Aceste operaii se efectueaz ntre dou comenzi
SELECT. Operatorii sunt UNION, INTERSECT i EXCEPT.
Operatorul UNION
Operatorul UNION realizeaz reuniunea setului de tuple generate ca rezultat
a dou comenzi SELECT. Sintaxa are forma:
SELECT ---
UNION [ALL]
SELECT ---

Comenzile SELECT respect sintaxa i regulile generale prezentate anterior.
Implicit dublurile se elimin. Pentru a afia toate liniile se va utiliza clauza UNION
ALL.
Capitolul 5 Algebra relaional i limbaje de baze de date
78
Exemplu
Pentru a prezenta o list complet a adreselor complete a tuturor unitilor din
administraie. Datele sunt pstrate n dou tabele Directii i Sectii. Pe fiecare dintre
cele dou tabele se execut o interogare care are ca rezultat coloanele Denumire,
Adresa, Telefon. Rezultatele sunt reunite prin operatorul UNION. Comanda complet
este:
SELECT Denumire, Adresa, Telefon
FROM Sectii
UNION
SELECT Denumire, Adresa, Telefon
FROM Districte

Operatorul INTERSECT
Operatorul INTERSECT realizeaz operaia de intersectare a seturilor de
tuple generate ca rezultat a dou comenzi SELECT. Sintaxa are forma:
SELECT ---
INTERSECT
SELECT ---

Comenzile SELECT respect sintaxa i regulile generale prezentate anterior.
Ambele trebuie s aib aceeai schem. Nu este o comand standard i nu este
implementat de toate SGBDR. Nu este un operator necesar. Poate fi nlocuit prin
comenzi SELECT imbricate, de exemplu operaia:
SELECT a1,b1 FROM Tabela1
INTERSECT
SELECT a2,b2 FROM Tabela2

poate fi nlocuit prin:
SELECT a1,b1 FROM Tabela1
WHERE EXISTS ( SELECT a2,b2 FROM Tabela2
WHERE a1=a2 AND b1=b2 )

Operatorul EXCEPT
Operatorul EXCEPT realizeaz operaia de diferen a seturilor de tuple
generate ca rezultat a dou comenzi SELECT, adic se pstreaz numai acele linii
care fac parte din primul set dar nu fac parte din cel de-al doilea.
Baze de date i algoritmi pentru ci de comunicaie
79
Sintaxa are forma:
SELECT ---
INTERSECT
SELECT ---

Comenzile SELECT respect sintaxa i regulile generale prezentate anterior.
Ambele trebuie s aib aceeai schem. Nu este o comand standard i nu este
implementat de toate SGBDR. Nu este un operator absolut necesar. Poate fi nlocuit
prin comenzi SELECT imbricate, de exemplu operaia:
SELECT a1,b1 FROM Tabela1
EXCEPT
SELECT a2,b2 FROM Tabela2

poate fi nlocuit prin:
SELECT a1,b1 FROM Tabela1
WHERE NOT EXISTS (SELECT a2,b2 FROM Tabela2
WHERE a1=a2 AND b1=b2 )

ADUGAREA DE DATE NTR-O TABEL
SQL permite utilizarea comenzii INSERT pentru adugarea de noi linii ntr-o
tabel fie direct prin impunerea valorilor de ctre utilizator (clauza VALUES), fie
prin preluarea lor dintr-o interogare (clauza SELECT).
Adugarea de linii prin valoare
Introducerea de noi linii se face prin comanda INSERT i specificarea tabelei
destinaie prin clauza INTO la care se specific valorile efective prin clauza VALUES
astfel:
INSERT INTO NumeTabela
(coloana1,coloana2,coloana3,...)
VALUES (valoare1,valoare2,valoare3,... )

Se adaug o singur linie. Valorile trecute n clauza VALUES sunt atribuite
fiecrei coloane n ordinea enumerrii. Coloanele care nu sunt cuprinse n list
primesc valoarea NULL.
Dac o coloan nu poate rmne nul atunci se genereaz o eroare. Valorile
trebuie s fie compatibile cu tipul declarat al coloanei.
Capitolul 5 Algebra relaional i limbaje de baze de date
80
Dac ntr-o coloan se accept doar valoare unic (clauza UNIQUE la creare)
i se adaug o valoare deja existent se genereaz o eroare.
Adugarea de linii obinute dintr-o interogare
Introducerea de noi linii se face prin comanda INSERT i specificarea tabelei
destinaie prin clauza INTO la care se adaug o clauza SELECT:
INSERT INTO NumeTabela
(coloana1,coloana2,coloana3,...)
SELECT Col1, Col2, Col3, ...
FROM NumeTabel2
WHERE <expresie logic de condiionare>

Se adaug numai una, mai multe sau nici o linie funcie de ndeplinirea
condiiei ataate clauzei WHERE.
Dac ntr-o coloan se accept doar valoare unic (clauza UNIQUE la creare)
i se adaug o valoare deja existent se genereaz o eroare.
Se respect aceleai reguli ca la adugarea de linii prin valoare. Atribuirea
valorilor se face n ordinea n care au fost incluse n list. Nu este obligatoriu ca o
coloan din lista clauzei SELECT s aib acelai nume cu coloana corespunztoare
din lista clauzei INTO. n lista de coloane inclus n clauza SELECT nu trebuie s
apar coloane din tabela NumeTabela.
Exemple
1. Adugarea unei linii prin declararea explicit a valoarilor:
INSERT
INTO Poduri( NumeDrum, PozKm, Obstacol,
Lungime, Latime, District)
VALUES ( "DN87Q", 89.779, "Rul Repedea",
167.78, 12.40, "NEGRILA" )

2. Adugarea unei linii cu valori obinute dintr-o interogare
INSERT
INTO ManvP( Drum, Km, Obstacol,
LungPOD, LatPod, District)
SELECT NumeDrum, PozKm, Obstacol,
Lungime, Latime, District
FROM Poduri
WHERE District IN("NEGRILA","ALBILA,"CERNILA")
AND (Lungime > 10.0)

Baze de date i algoritmi pentru ci de comunicaie
81
MODIFICAREA DATELOR DINTR-O TABEL
Datele deja introduse ntr-o tabel pot fi modificate atunci cnd condiiile o
cer. Pentru aceasta standardul SQL a definit comanda UPDATE. Aceasta are sintaxa:
UPDATE NumeTabela
SET Coloana1 = valoare1
[, Coloana2 = valoare2 ]
[, Coloana3 = valoare3 ]
[ ... ]
WHERE <expresie logic de condiionare>

Operaia de modificare se efectueaz n tabela NumeTabela, fiecreia dintre
coloanele specificate n clauza SET i se atribuie valoarea de dup semnul "=".
Valoarea ce se atribuie poate s provin i din evaluarea unei expresii deci fiecare
linie poate primi un set deosebit de valori pentru coloanele specificate. Atribuirea se
aplic numai acelor linii care ndeplinesc expresia logic de condiionare din clauza
WHERE.
Exemplu
UPDATE Poduri
SET District = "FRUMUSENI"
WHERE (District ="NEGRILA") and
(NumeDrum = "DN87Q") and
(PokKm<= 109.543)

Cnd un anumit sector de drum a fost transferat ntre dou districte i
simultan lucrrile de art aferente trec din administrarea unui district n a celuilalt se
poate actualiza coninutul coloanei District n tabela Poduri.
ELIMINAREA DATELOR DINTR-O TABEL
Cnd anumite date nregistrate n liniile tabelelor devin inutile ele pot fi terse
pentru a nu ncrca inutil spaiul rezervat bazei de date i pentru a nu complica
comenzile de interogare.
Pentru aceasta SQL ofer comanda DELETE cu urmtoarea sintax:
DELETE FROM NumeTabela
WHERE <expresie logic de condiionare>

Comanda DELETE are clauzele FROM pentru a indica numele tabelei n care
se execut operaia i WHERE pentru a face selecia liniilor care se elimin.
Capitolul 5 Algebra relaional i limbaje de baze de date
82
Exemplu
Dup ce un sector de drum a fost trecut dintr-o categorie n alta, lucrrile de
art aferente nu se mai afl n administrarea instituiei care posed baza de date. Din
considerente istorice se pot pstra datele n arhive, ceea ce presupune un transfer
utiliznd comanda INSERT, dar datele despre fiecare n parte se terg din tabela de
gestiune curent. Pentru aceasta utilizm o comand DELETE de forma:
DELETE FROM Poduri
WHERE (NumeDrum="DN87Q")and(PokKm<=109.855)

FUNCII UTILIZATE N INTEROGRI
n realizarea interogrilor se utilizeaz, pe lng funciile agregate, i a
operatorilor aritmetici un numr de funcii matematice care asigur prelucrarea
corect a datelor. Aceste funcii nu sunt standard i difer de la implementare la
implementare. Totui cteva se regsesc n majoritatea variantelor SQL. Prezentm
mai jos aceste funcii cu precizarea c nainte de a le folosi trebuie s verificm n
documentaia aflat la dispoziie prezena i sintaxa lor exact.
Tabelul 2 Funcii matematice utilizate n SQL
Funcia Descriere
ABS(X) Valoarea absolut a numrului real X
CEIL(X) X is a decimal value that will be rounded up.
FLOOR(X) X is a decimal value that will be rounded down.
GREATEST(X,Y) Valoarea ce mai mare dintre X i Y
LEAST(X,Y) Valoarea cea mai mic dintre X i Y
MOD(X,Y) Restul mpririi ntregi a valorilor X i Y (X modulo Y)
POWER(X,Y) Returneaz X la puterea Y
ROUND(X,Y)
Rotunjete X cu Y zecimale. Dac Y este omis, X este
rotunjit la cel mai apropiat ntreg
SIGN(X) Semnul valorii X
SQRT(X) Rdcina ptrat a valorii X

Pe lng acestea se utilizeaz i funcii de procesare a irurilor de caractere.
Similar celor matematice aceste funcii nu sunt standard i trebuie verificat sintaxa
lor exact.
Baze de date i algoritmi pentru ci de comunicaie
83
Tabelul 3 Funcii de manipularea irurilor de caractere
LEFT(<ir>,X) Returneaz X caractere din stnga irului de caractere
RIGHT(<ir>,X) Returneaz X caractere din dreapta irului de caractere
UPPER(<ir>) Convertete caracterele irului n majuscule
LOWER(<ir>) Convertete caracterele irului n minuscule
INITCAP(<ir>) Convertete nceputul propoziiilor n majuscule
LENGTH(<ir>) Returneaz lungimea irului de caractere
<ir1>||<ir2>
Concateneaz coninutul celor dou iruri n ordinea
aleas
LPAD(<ir>,X,'*')
Adaug la stnga irului numrul necesar de caractere
cuprinse ntre apostrof pentru a ajunge la lungimea X
RPAD(<ir>,X,'*')
Adaug la dreapta irului numrul necesar de caractere
cuprinse ntre apostrof pentru a ajunge la lungimea X
SUBSTR(<ir>,X,Y) Extrage din ir Y litere ncepnd cu poziia Y
NVL(<col>,<val>)
Pentru valorile NULL ale coloanei col returneaz
valoarea val, altfel returneaz valoarea coloanei

n afara acestor funcii exist i altele specifice fiecrei implementri. Pentru
lista complet i sintaxa corect trebuie studiat documentaia care se livreaz la
cumprarea pachetelor software.
5.4. SQL LIMBAJ DE DEFINIRE A DATELOR
CREAREA TABELELOR
SQL permite definirea de tabele noi. Acest lucru asigur flexibilitate n
procesare i posibilitatea de dezvoltare a aplicaiilor prin lrgirea tipului i cantitii
de date stocate.
Comanda specific pentru adugarea de tabele n baza de date este
CREATE TABLE. Prin aceast comand se specific numele tabelei care se
creeaz, numele, tipul i caracteristicile coloanelor care i se ataeaz.
Sintaxa comenzii CREATE TABLE
CREATE TABLE NumeTab
(NumeCol1 TipDeDate [NOT NULL][UNIQUE | INDEX],
NumeCol2 TipDeDate [NOT NULL][UNIQUE | INDEX],
NumeCol3 TipDeDate [NOT NULL][UNIQUE | INDEX],
... )

Trebuie s existe cel puin un nume de coloan n list. Numele de coloan
trebuie s respecte regulile generale din SQL care seamn cu regulile din alte
Capitolul 5 Algebra relaional i limbaje de baze de date
84
limbaje. Un nume ncepe obligatoriu cu o liter. ntr-o tabel pot exista maximum 254
de coloane. Fiecare coloan specificat are un anumit tip de date. Opiunea NOT
NULL, situat dup fiecare declarare de tip, precizeaz obligativitatea atribuirii unei
valori la inserare, editare, modificare pentru coloana corespunztoare.
n zona de opiuni a descrierii coloanei poate apare i clauza DEFAULT care
este prezentat mai jos.
Crearea de tabele cu copierea datelor
Este posibil ca la crearea unui tabele s se adauge date ce pot fi preluate din
alte tabele. Sintaxa comenzii de creare este:
CREATE TABLE
NumeTabel (Coloana1 TipColoana1,
Coloana2 TipColoana2,
Coloana3 TipColoana3,
...
)
AS SELECT NumeCmp1,NumeCmp2,NumeCmp3,...
FROM NumeTabel2
[WHERE <expresie logic de condiionare>]

n comand trebuie s fie inclus cel puin o definiie de coloan i,
corespunztor, o definiie de cmp n clauza AS SELECT.
Tipuri de date n tabelele bazelor de date
Tipul de date declarat pentru fiecare coloan trebuie s fie din lista de tipuri
acceptate de fiecare implementare n parte. Conform ANSI/ISO tipurile de date
pentru coloane sunt prezentate n tabelul urmtor.
Tabelul 4. Tipuri de date definite de ANSI / ISO
Tip Descriere
CHAR[(n)] ir de caractere cu lungime fix
VARCHAR[(n)] ir de caractere cu lungime variabil
NUMBER[(n,[d])] Numr pe de n cifre [opional d cifre dup virgul]
SMALLINT ntreg pe 16 bii (-32768 la 32757)
INTEGER ntreg pe 32 de bii (-2E31 la 2E31-1)
FLOAT[(n)] Numr n virgul mobil
DOUBLE PRECISION Numr real dubl precizie
DATE Date de tipul dat

Baze de date i algoritmi pentru ci de comunicaie
85
Pe lng acestea exist multe alte tipuri care au fost definite numai n cteva
implementri. Unele dintre cele mai ntlnite sunt TIME care stocheaz ora n
formatul 12:59:59.99 i TIMESTAMP care stocheaz data i ora.
Respectnd n linii mari prescripiile ANSI/ISO fiecare implementare a
ncercat s satisfac nevoilor specifice crora trebuie s le rspund.
Ca un exemplu Oracle7 suport urmtoare tipuri:
Tabelul 5. Tipuri de date suportate de Personal Oracle7
Tip Descriere
CHAR
iruri de caractere cu lungimea ntre 1 i 255. La irurile mai
scurte se adaug spaii la dreapta.
DATE Include anul, luna, ziua, ora minutul i secunda.
LONG ir de caractere cu lungime variabil de pn la 2Gigaoctei.
LONG RAW Date binare de pn la 2 Gigaoctei.
NUMBER Date numerice.
RAW Date binare de pn la 255 de octei.
ROWID Valoare hexazecimal reprezentnd o adres unic a liniei.
VARCHAR2 ir de lungime variabil pn la 2000 de caractere.
Note:
1. Tipul LONG mai este numit i MEMO n alte sisteme de gestiune. Se
folosete pentru stocarea de texte foarte lungi.
2. Tipul LONG RAW mai este numit i BLOB (Binary Large OBject).
Poate servi pentru stocarea de date reprezentate binar precum
fotografii, grafice, sunet, imagini n micare etc. Acest tip de
date este cel mai des utilizat n sistemele multimedia.
Tipurile de date i structura lor evolueaz. Ele devin tot mai complexe pe
msur ce noi concepte apar n informatic. n setul standard se includ tipuri de date
mulime, tablouri de date, date de tip obiecte grafice, posibilitatea ca utilizatorul s-i
defineasc propriile structuri i tipuri de date care s poat fi utilizate ulterior pentru
stocare.
Un exemplu este dat de evoluia tipurilor standard de date definite pentru
SQL99 comparativ cu tipurile de date definite n standardele anterioare.
Capitolul 5 Algebra relaional i limbaje de baze de date
86

Structuri de date
ROW
Tipuri predefinite Tipuri referin Tablouri de date
Tipuri de definite
de utilizator
Interval Numeric iruri de caractere DataTimp Boolean
Exacte
Aproximative
Date
Time
TimeStamp
Caracter Bit Blob
Fix
Variabil
CLOB
Variabil Fix
SQL99
Tipuri de date

Fig. 33 Tipuri de date n SQL 1999
Exemple de tipuri de date implementate n diferite versiuni de SQL sunt
numeroase dar ne-am limitat la cele mai cunoscute. Pentru implementarea exact se
vor studia manualele de referin sau documentaia furnizat de productor ce
nsoete pachetele de instalare la cumprare.
Expresii de restricie
Expresiile de restricie sunt clauze ce foreaz valorile introduse de utilizator
ntr-o coloan s respecte anumite reguli.
Baze de date i algoritmi pentru ci de comunicaie
87
Aceste reguli se definesc la crearea tabelei cu ajutorul unor cuvinte cheie
listate n continuare:
DEFAULT
NOT NULL
UNIQUE
CHECK
Regulile introduse prin aceste clauze au efect pe toat durata existenei tabelei
sau pn cnd tabela este alterat.
Definirea valorii implicite
Dac pentru unul dintre cmpurile dintr-o nregistrare nu se introduce nici o
valoare, SQL permite asocierea unei valori implicite. Aceasta se realizeaz cu clauza
DEFAULT. Cuvntul cheie DEFAULT trebuie s fie urmat de:
O constant numeric;
O valoare ir de caractere;
Cuvntul cheie USER (numele utilizatorului);
Cuvntul cheie NULL;
Cuvntul cheie CURRENT_DATE (data introducerii);
Cuvntul cheie CURRENT_TIME (ora introducerii);
Cuvntul cheie CURRENT_TIMESTAMP (data i ora introducerii);
La crearea unei noi nregistrri se asigneaz automat valoare ataat clauzei
DEFAULT. Prin aceasta ne putem asigura c un cmp nu este niciodat gol.
Impunerea introducerii unei valori
Clauza NOT NULL impune ca la editarea unui cmp s se introduc
obligatoriu o valoare pentru un cmp. Dac acest cmp este gol atunci sistemul nu
permite salvarea nregistrrii.
Verificarea unicitii
Clauza UNIQUE permite verificarea faptului c valoarea unui cmp nu exist
deja n tabel. Aceasta garanteaz c toate valorile din cmp sunt diferite.
Verificarea unei condiii
SQL permite ca la introducerea unei valori ntr-un cmp s se fac o
verificare a unei condiii logice. Aceasta se va face cu clauza
CHECK(<expresie logic>). Sistemul evalueaz expresia logic i dac aceasta nu se
verific atunci valoarea nu se accept.
Expresia logic are acelai format ca expresia ataat clauzei WHERE din
comanda SELECT.
Capitolul 5 Algebra relaional i limbaje de baze de date
88
Exemplu de utilizarea a restriciilor
Prezentm n continuare un exemplu de creare a unei tabele prin comanda
CREATE TABLE n care se utilizeaz clauzele de restricie.
CREATE TABLE Pod(
ID char(9) NOT NULL UNIQUE
TipDrum char(2) NOT NULL DEFAULT "DN",
Drum char(4) NOT NULL,
Km integer(3) CHECK(Km>0),
M integer(3) CHECK(M>0)
AnContr integer check (AnConstr > 1850)
)

CREAREA UNEI VIZIUNI
n viaa real, fiecare poate avea propria imagine despre elementele lumii
nconjurtoare. Aceast imagine poate fi descris n conformitate cu propriile
concepte, din perspectiv proprie. Aceast reprezentare proprie poart numele de
viziune (view n englez, vue n francez; n limba romn s-a mai utilizat
termenul de vedere i de relaie virtual)
n SQL o viziune este o tabel virtual. Datele pot proveni din mai multe
tabele i sunt grupate n conformitate cu reprezentarea dorit de utilizator. Fiecare
utilizator al sistemului SQL i poate crea o viziune proprie asupra datelor din baza de
date. Datele din diferite tabele pot fi combinate dup dorin ntr-o unitate logic
astfel nct n continuare ele s apar ca un tot unitar, virtual ntr-o singur tabel.
Aceast operaie se realizeaz utiliznd comanda CREATE VIEW a crei
sintax este urmtoarea:
CREATE VIEW NumeViziune(Coloana1,Coloana2,Coloana3,...)
AS SELECT ...

Clauza AS SELECT este urmat de toate opiunile normale ale comenzii
SELECT (vezi). Este, n fapt, declararea formal a unei comenzi SELECT i ataarea
unui nume, astfel nct ori de cte ori dorim s repetm acea comand s nu mai fie
nevoie s scriem toate liniile, clauzele i opiunile.

O form uzual, dar nu singura, poate fi:
CREATE VIEW Viziune1 (Coloana1,Coloana2,Coloana3)
AS SELECT Alias1.Col1,Alias1.Col2,Alias2.Col3
FROM Tabela1 Alias1, Tabela2 Alias2
WHERE (Alias1.Col2=Alias2.ColX)
Baze de date i algoritmi pentru ci de comunicaie
89

n continuare rezultatul interogrii va fi privit ca o tabel care poate fi, la
rndul ei, utilizat n comenzi de interogare.
Utilitatea viziunilor rezid n faptul c acestea se constituie ntr-un fel de
interfa ntre baza de date i utilizator.
Utilizarea viziunilor are avantaje multiple, ntre care:
Afieaz o selecie convenabil din baza de date,
Restricionez accesul altor utilizatori, asigurnd o securitate sporit,
Grupeaz informaiile care sunt privite ca o singur entitate, chiar dac ele
provin din tabele diferite.
CREAREA I UTILIZAREA INDECILOR
Un index este un auxiliar care faciliteaz accesul la baza de date n condiiile
sortrii elementelor. Un index nu este absolut necesar, exist mecanisme de sortare i
acces independente, dar ajut la economisirea timpului de execuie a comenzilor de
cutare, selecie i ordonare. Totui, reversul este prelungirea unora dintre comenzile
de adugare i modificare de date. De aceea este necesar ca utilizarea unui index s
fie bine gndit i justificat prin balana avantajelor i dezavantajelor. Este necesar a
se evita n baza de date dublurile care sunt, n SQL, destul de complicat de tratat.
Unele sisteme rezolv aceast problem prin crearea automat a unui cmp
suplimentar cu valoare unic asupra cruia se definete o cheie primar.
Crearea unui index se face n SQL prin comanda CREATE INDEX. Aceasta
are sintaxa urmtoare:
CREATE [UNIQUE] INDEX NumeIndex
ON NumeTabela
(Camp1 [ASC/DESC], ... )

Opiunea UNIQUE permite eliminarea dublurilor. Absena acestei clauze
permite prezena tuturor liniilor. Opiunea ASC/DESC definete ordinea ascendent
sau descendent a valorilor n coloane. Implicit ordinea este ascendent.
MODIFICAREA TABELELOR I A BAZEI DE DATE
ntr-o baz de date este posibil s se elimine sau s se modifice tabelele,
indecii i viziunile. Pentru tabelele deja create se poate modifica structura sau se
poate schimba numele. Se pot aduga coloane, terge coloane sau se poate modifica
tipul datelor stocate ntr-o coloan.
Capitolul 5 Algebra relaional i limbaje de baze de date
90
tergerea componentelor bazei de date
Se poate renuna la prezena unor tabele, indeci i viziuni atunci cnd acestea
devin inutile. Pentru aceasta se utilizeaz comanda DROP. Aceast comand trebuie
bine gndit nainte de a fi utilizat pentru c efectele sale sunt definitive i
ireversibile.

Sintaxa pentru tergerea unui tabele este:
DROP TABLE NumeTabela

Sintaxa pentru tergerea unui index este:
DROP INDEX NumeIndex

Sintaxa pentru tergerea unei viziuni este:
DROP VIEW NumeViziune

tergerea datelor dintr-o tabel
Comanda DROP TABLE presupune tergerea datelor i eliminarea tabelei n
totalitate. Dac, ns, dorim s pstrm tabela cu structura anterioar i s eliminm
numai datele care nu ne mai sunt necesare atunci putem s utilizm comanda
TRUNCATE. Sintaxa comenzii este:
TRUNCATE TABLE NumeTabela

Redenumirea unei tabele
Dac se dorete pstrarea datelor i a tabelei dar schimbarea numelui tabelei
se poate utiliza comanda RENAME. Sintaxa comenzii este:
RENAME NumeVechi TO NumeNou

Unele sisteme de gestiune a datelor nu implementeaz aceast comand. Este
necesar a se face o documentare adecvat nainte de utilizarea comenzii.
Eliminarea unor coloane dintr-o tabel
Dac se dorete modificarea structurii unei tabele n sensul tergerii unei
coloane se va utiliza comanda ALTER cu clauza DROP COLUMN. Sintaxa comenzii
este:
Baze de date i algoritmi pentru ci de comunicaie
91
ALTER TABLE NumeTabela
DROP COLUMN NumeColoana

nainte ca s executm aceast comand trebuie s verificm dac respectiva
coloan face parte dintr-o viziune, dintr-un index, sau dac este obiectul unei
verificri de integritate. Cnd una dintre aceste stri este ndeplinit comanda de
tergere nu se execut i se genereaz o eroare.
Adugarea unei coloane ntr-o tabel
Se poate aduga o coloan nou ntr-o tabel utiliznd comanda ALTER
TABEL cu clauza ADD. Sintaxa comenzii este:
ALTER TABLE NumeTabela
ADD NumeColoana TipDate

Modificarea unei coloane
Modificarea declaraiei unei coloane dintr-o tabel se face utiliznd comanda
ALTER TABEL cu clauza MODIFY.
Sintaxa comenzii ALTER TABLE este:
ALTER TABLE NumeTabela
MODIFY NumeColoana TipDate

Unele implementri au nlocuit clauza MODIFY cu clauza ALTER
COLUMN restul comenzii rmnnd identic.
5.5. SQL LIMBAJ DE CONTROL A DATELOR
Mai muli utilizatori pot accesa simultan o baz de date. Fiecare dintre acetia
pot avea necesiti diferite. Unii pot i trebuie s modifice datele, alii trebuie numai
s le citeasc. Pe baza necesitilor se pot defini drepturile acordate fiecrei persoane
care acceseaz baza de date.
Standardul SQL permite definirea drepturilor de acces cu ajutorul clauzelor:
GRANT pentru acordarea de drepturi, i
REVOKE pentru retragerea drepturilor.
Aceste drepturi denumite i privilegii sunt:
DELETE pentru tergerea de date;
INSERT pentru adugarea de noi nregistrri;
UPDATE pentru actualizarea datelor.
Capitolul 5 Algebra relaional i limbaje de baze de date
92
SELECT pentru citirea datelor;
Utilizatorul care a creat un tabel, viziune sau index poate acorda sau retrage
privilegiile asupra entitii n cauz. Aceste drepturi pot fi retransmise dac se
specific astfel.
ATRIBUIREA PRIVILEGIILOR
Prin comanda GRANT se pot acorda privilegii unuia sau mai multor
utilizatori asupra unui sau mai multor elemente din baza de date.
Comanda GRANT are formatul:
GRANT <list de drepturi>
ON <list de componente>
TO <list de utilizatori>
[WITH GRANT OPTION]

Lista de drepturi poate fi nlocuit cu cuvntul cheie ALL i se acord toate
privilegiile. Privilegiile acordate pentru o tabel pot fi limitate la un numr de coloane
prin asocierea listei de coloane la lista de drepturi. n locul listei de utilizatori se poate
utiliza cuvntul cheie PUBLIC i privilegiile acordate se transmit tuturor
utilizatorilor.
Clauza WITH GRANT OPTION autorizeaz utilizatorii s transmit mai
departe privilegiile primite prin comanda n curs.
Exemplu:
GRANT UPDATE(Defecte, Comentarii)
ON Inspect
TO InsPod03
WITH GRANT OPTION
RETRAGEREA PRIVILEGIILOR
Dac drepturile acordate nu mai sunt necesare, ele pot fi retrase. Comanda
REVOKE asigur retragere drepturilor unui utilizator.
REVOKE
[GRANT OPTION FOR] <list de drepturi>
ON <list de componente>
FROM <list de utilizatori>
Clauza WITH GRANT OPTION retrage utilizatorilor dreptul de a transmite
mai departe privilegiile primite prin comanda GRANT.
Lista de drepturi poate fi nlocuit cu cuvntul cheie ALL i se retrag toate
privilegiile. Privilegiile retrase pentru o tabel pot fi limitate la un numr de coloane
Baze de date i algoritmi pentru ci de comunicaie
93
prin asocierea listei de coloane la lista de drepturi. n locul listei de utilizatori se poate
utiliza cuvntul cheie PUBLIC i privilegiile se retrag tuturor utilizatorilor.
CONTROLUL TRANZACIILOR
Sistemele de gestiune a bazelor de date trebuie s ofere mecanisme de
asigurarea a consistenei datelor.
De exemplu, dac se terge o nregistrare dintr-o tabel de inspecii trebuie s
se tearg i nregistrrile corespunztoare dintr-o tabel cu defectele constatate n
timpul inspeciei. Totodat, dac se introduce o valoare de apreciere pentru un defect
atunci trebuie s se reevalueze starea tehnic. Toate acestea i multe altele se fac
automat prin controlul tranzaciilor.
Un astfel de mecanism de control al tranzaciilor se numete n SQL trigger
(declanator).
Trigerii sunt funcii a cror aciune este iniiat de evenimente care apar n
sistem. Se pot urmri patru categorii de evenimente:
Crearea unei noi nregistrri;
tergerea unei nregistrri existente;
Actualizarea unei nregistrri existente;
Citirea unei nregistrri existente.
Ultimul dintre evenimente este mai rar utilizat i de aceea uneori nici nu este
implementat.
Un trigger se poate crea cu comanda CREATE TRIGGER care are sintaxa
urmtoare:
CREATE TRIGGER <nume>
{BEFORE | AFTER} {<eveniment>[OR ...]}
ON <tabela> FOR EACH { ROW | STATEMENT }
EXECUTE PROCEDURE <funcie ( argumente )>

unde elementele opionale din sintax semnific:
nume reprezint numele sub care trigger-ul va fi recunoscut. Numele
trebuie s fie distinct.
eveniment poate fi una dintre opiuni: INSERT, DELETE, UPDATE.
tabela numele tabelei pentru care se aplic trigger-ul.
funcia numele funciei care va execuatat.
Capitolul 5 Algebra relaional i limbaje de baze de date
94
argumente lista de argumente care se furnizeaz funciei.
Aciunea unui trigger declaneaz nainte (BEFORE) sau dup (AFTER) o
ncercare de modificare unei nregistrri (ROW) sau a ntregii tabele (STATEMENT).
Dac operaia se declaneaz nainte atunci prin funcia apelat se poate renuna la
desfurarea evenimentului, dac trigger-ul este iniiat dup eveniment atunci toate
modificrile sunt vizibile.
Mai multe triggere ataate aceluiai eveniment al unei tabele tratarea lor se
iniializeaz n ordine alfabetic.
Se poate renuna la utilizarea serviciului unui trigger prin eliminarea acestuia
din sistem. Un trigger este eliminat prin comanda DROP TRIGGER a crei sintax
este:
DROP TRIGGER <nume> ON <tabela>[CASCADE|RESTRICT]

unde:
nume reprezint numele unui trigger deja definit.
tabela numele tabelei pentru care se aplic trigger-ul.

Triggerul identificat prin nume care este ataat tabelei specificate este
eliminat. Dac numele su nu se regsete n baza de date se genereaz o eroare. Dac
se specific opiunea RESTRICT se respinge executarea comenzii dac triggerul are
ataate obiecte dependente. Dac se specific opiunea CASCADE toate obiectele
dependente se elimin automat.

5.6. BIBLIOGRAFIE
[85] *** Mimer SQL - Reference Manual, Version 8.2; Mimer Information Technology AB,
Uppsala, Sweden 2000.
[86] Browne Allen, Balter Alison: Bazele Access 95; Editura Teora, Bucureti 1998.
[87] CAE specification, Structured Query Language (SQL), Version 2. X/Open document
number: C449. ISBN: 1-85912-151-9.
[88] Din Akeel I.: Structured Query Language (SQL) A practical introduction; Blackwell,
[89] ISO/IEC 9075:1992(E) Information technologyDatabase languagesSQL: International
Standard for the Database Language SQL; ISO 9075:1992.
[90] ISO/IEC 9075-1:1999(E) Information technology - Database languages SQL; Part 1:
Framework (SQL / Framework); ISO 9075-1:1999.
[91] ISO/IEC 9075-2:1999(E) Information technology - Database languages SQL; Part 2:
Foundation (SQL / Foundation); ISO 9075-2:1999.
Baze de date i algoritmi pentru ci de comunicaie
95
[92] ISO/IEC 9075-3:1999(E) Information technology - Database languages SQL; Part 3:
Call-Level Interface (SQL / CLI); ISO 9075-3:1999.
[93] ISO/IEC 9075-4:1996(E) Database Language SQL - Part 4: Persistent Stored Modules
(SQL/PSM); ISO 9075-4:1996.
[94] ISO/IEC 9075-4:1999(E) Information technology - Database languages SQL; Part 4:
Persistent Stored Modules (SQL / PSM); ISO 9075-4:1999.
[95] ISO/IEC 9075-5:1999(E) Information technology - Database languages SQL; Part 5:
Host Language Bindings (SQL / Bindings); ISO 9075-5:1999.
[96] Luers Tom: Bazele Oracle7; Editura Teora, Bucureti 1998.
[97] Perkins Jeff, Morgan Bryan: SQL fr profesor, n 14 zile; Editura Teora, Bucureti
1998.
[98] Popa Gheorghe, et al.: Sisteme de gestiune a bazelor de date; Editura ALL, Bucureti
1994.
Scnteie Rodian Baze de date i algoritmi pentru ci de comunicaie
ISBN 973-86343-3-4 Editura Societii Academice Matei-Teiu Botez
Iai 2003
96
BAZE DE DATE DIN
MANAGEMENTUL INFRASTRUCTURII
Fiecare instituie implicat n administrarea patrimoniului infrastructurii
transportului se confrunt permanent cu starea sistemului n funciune, cu
performanele sale, cu modificrile n curs i cu facilitile viitoare ce urmeaz a se
construi. Facilitile viitoare depind de nevoile viitoare de transport ale utilizatorilor
i de capacitatea i dorina acestor utilizatori de a plti preul pentru aceste faciliti.
Gestionarea eficient a infrastructurii transporturilor presupune existena unei
infrastructuri informaionale corespunztoare la nivelul administratorului. Acesta
trebuie s posede aparatura necesar pentru a putea colecta, transmite, stoca, regsi,
prelucra i raporta datele legate de inventar dar i instrumentele logice i
metodologice de procesare a acestora i obinerea de informaii utile.
O administrare prompt i corect se poate baza numai pe date corecte i
disponibile atunci cnd sunt cerute. Aceste date trebuie colectate i pstrate n baze de
date. Prelucrarea lor trebuie s genereze strategii utile i utilizabile care s conduc la
pstrarea sau mbuntirea strii globale a sistemului de transport. Permanenta
evoluie a tehnologiei transporturilor, modificrile din mediul economic i social
impun modificri n necesarul de date utile.
Modalitile de colectare, transmitere, stocare, regsire i diseminare a datelor
sunt permanent afectare de evoluia tehnologiei informaiei. n consecin, procedurile
de evaluare a necesarului de date, metodele de colectare, structura bazelor de date,
programele de prelucrare i metodologia de diseminare trebuie s fie flexibile,
adaptabile cu costuri minime la noile condiii.
Baze de date i algoritmi pentru ci de comunicaie
97
6.1. NECESARUL DE DATE
TIPURI DE DATE NECESARE
Deoarece datele de detaliu se pot schimba, tratarea ansamblului trebuie s se
fac la nivel de categorie. Pentru cunoaterea complet a sistemului trebui s
dispunem de patru categorii de date:
Ofert;
Cerere;
Performane;
Impact.
Oferta descrie datele care se refer la reeaua fizic i la serviciile furnizate n
manier comercial precum i costurile acestora. Cererea include date asupra nevoii
de mobilitate a bunurilor i persoanelor, distanele parcurse, frecvena utilizri i
costurile asociate. Datele privind performana se constituie ntr-o msur a capacitii
ofertei de a acoperi cererea cu costuri care s asigure eficiena economic. Datele de
impact descriu efectele pe care sistemul de transport le produce asupra mediului
nconjurtor fizic i social.
Stocarea datelor trebuie s in cont de categoria de transport la care se refer.
Datele adreseaz specific cile rutiere, calea ferat, transportul aerian sau naval.
Unele organisme legislative i guvernamentale din diferite ri trateaz sistemul de
transport n comun ca un element separat i se impune evidenierea individualizat a
acestuia.
n cadrul categoriilor de date enumerate mai sus sunt incluse urmtoarele
tipuri de date:
Oferta
Reeaua rutier:
Date de sistem: intersecii i sectoare; lungime i numr de benzi;
capacitatea; mprirea pe clase funcionale i categorii de administrare;
suprafaa de teren ocupat; variante ocolitoare; etc.
Date privind serviciile: acces din diferite locaii i conexiunea dintre
diferite categorii de drumuri; acces intermodal la punctele de transfer
(CF, aeroport, port cu distane corespunztoare); furnizori de servicii
de depanare i informare; taxe (de trecere, de parcare etc.);
Date privind utilitile: inventarul utilitilor (staii de autobuz, zone de
parcare, terminale de camioane; zone de transfer a containerelor, etc.);
date de utilizarea terenului de ctre utiliti; zone urbane permise
pentru accesul camioanelor; etc.
Date de stare: starea mbrcminilor rutiere, pe categorii de drum (IRI,
degradare, etc.); date privind starea structurilor rutiere (poduri,
Capitolul 6 Baze de date din managementul infrastructurii
98
tuneluri, rampe de acces, ziduri de sprijin, drenuri etc.); vrsta
sectoarelor i structurilor rutiere; etc.
Proiecte: proiecte propuse i aprobate a fi executate cu specificarea
surselor de finanare; planuri de dezvoltare i modificare a reelei; date
de istoric privind lucrrile efectuate i evoluia proiectelor (ntreinere,
reparaii, reabilitare, inspecie etc.); proiecte de ntreinere; proiecte tip
(de construcie, ntreinere, reparare, reabilitare, nlocuire).
Calea ferat:
Date de sistem: lungimea liniei (cu destinaie de transport pasageri i
mrfuri); noduri i sectoare; capacitate; mprirea pe categorii i tipul
de tractare permis; teren utilizat; etc.
Date privind serviciile: localiti deservite; frecvena i orarul curselor
de pasageri; disponibiliti pentru transport mrfuri; furnizorii de
servicii; taxe i costuri de cltorie; etc.
Date privind utilitile: numr de vagoane disponibile; inventarul
echipamentelor pentru trecerile la nivel cu drumurile; terminale pentru
transfer intermodal de mrfuri i cltori; depozite disponibile;
inventarul infrastructurii; etc.
Date de stare: vrsta liniei, vagoanelor, podurilor, tunelurilor i a
echipamentului; nregistrri privind ntreinerea; etc.
Proiecte: lista proiectelor realizate, lista proiectelor noi propuse pentru
realizare, extinderi i modificri, proiecte de ntreinere etc.
Transport aerian:
Date de sistem: aeroporturi i piste oferite, terenul utilizat pentru
extinderea aeroporturilor, capacitatea i utilizarea principalelor linii;
Date privind serviciile: numr de furnizori i localizarea lor, locaii
deservite, frecvena transporturilor, acces la faciliti de transfer i
transfer intermodal, tarife i componena lor etc.;
Date privind utilitile: faciliti de transfer a pasagerilor, echipamente
de transfer marf, spaii de depozitare a mrfurilor etc.;
Date de stare: starea pistelor de aterizare (vrst, ntreinere, istoricul
interveniilor), starea terminalelor (vrst, ntreinere, istoricul
interveniilor), starea avioanelor (vrst, ntreinere, istoricul
reparaiilor), starea echipamentelor de transfer etc.;
Proiecte: lista proiectelor realizate, lista proiectelor noi propuse, date
de evaluare a proiectelor, extinderi i modificri, proiecte de ntreinere
etc.
Transport naval:
Date de sistem: porturi existente, poriunea de teren ocupat pe uscat,
docuri i capacitatea lor, capacitatea principalelor linii, teren disponibil
pentru extinderea porturilor;
Baze de date i algoritmi pentru ci de comunicaie
99
Date privind serviciile: acces spre alte moduri de transport, linii navale
i linii de feribot, linii de barje, conexiuni multimodale, perioada din an
ct portul este practicabil, valoarea i compoziia tarifelor;
Date privind utilitile: numr de furnizori, numr de spaii de acostare
pentru nave particulare, spaii de depozitare a mrfurilor, faciliti de
transfer, locuri de acostare, etc.
Date de stare: programul de dragare, docuri i acostamente (vrst,
ntreinere, istoricul interveniilor), mijloace de dirijare a navigaiei
(vrst, ntreinere, istoricul interveniilor), nave i feriboturi (vrst,
ntreinere, istoricul interveniilor), adncimea i limea canalelor, etc.
Proiecte: lista proiectelor realizate, lista proiectelor noi propuse, date
de evaluarea proiectelor, extinderi i modificri planificate, proiecte de
ntreinere etc.
Cererea
Date economice: date de venit pe gospodrii i regiuni (istoric, prezent,
prevzut), date privind angajarea forei de munc (istoric, prezent,
prevzut), posesia de vehicule, costul pe cltorie, depozite i distribuitori,
puncte de import/export, proiecte de dezvoltare economic;
Date demografice: date privind populaia i fora de munc, caracteristicile
gospodriilor, etc.
Utilizarea terenului: parcelare (destinaie i suprafee istoric, prezent,
perspectiv), date privind gospodriile (localizarea, distribuie, densitatea
ocuprii), date privind accesul, zonarea etc.;
Date privind circulaia: date privind necesarul de transport origine-destinaie,
factori multimodali, factori speciali de generare a transportului (turism,
excursii profesionale, pelerinaje, evenimente speciale), date privind
volumul de trafic, factori decizionali privind alegerea modului expediie i
deplasare (timp de parcurs prin diferite moduri, costurile relative);
Comportamentul utilizatorilor: date privind opiunile n transport (auto, naval,
aerian, cale ferat, costuri de transport, costuri de parcare, costuri de
nchiriere, procent de zone industriale i comerciale accesibile prin mers pe
jos), date psihologic privind comportamentul n alegerea, date privind
preferinele (disponibilitatea de a plti, nivel de performan cerut,
disponibilitatea de a coopera n realizarea deplasrilor), comportamentul
transportatorilor (respectarea orarului, preuri discriminatorii, contracte
multimodale).
Performana
Sigurana transporturilor: date privind incidentele (numr, tip, localizare i
durat), date privind accidentele (numr, tip, localizare i durat), date
privind interveniile medicale (timp de rspuns, numr de furnizori etc.)
Msura performanei: date privind performanele oselele (congestii,
deplasri tonkilometru, ntrzieri, viteza medie de deplasare, localizarea
Capitolul 6 Baze de date din managementul infrastructurii
100
accidentelor i timpul mediu de degajare istoric, prezent, perspectiv),
costul transportului, timp de livrare, procent de degradare a mrfurilor,
timp de ateptare la terminale, etc.;
Impactul
Calitatea aerului: date privind vehiculele nregistrate (tip, numr, tipul de
combustibil consumat), date privind viteza pe clase de vehicule, date
privind numrul de cltorii, emisii de poluani pe clase de vehicule
(istoric, prezent, perspectiv);
Alte date privind mediul: impact vizual i estetic, zgomot i vibraii emise,
date privind ecosistemele traversate (animale i plante rare sau ocrotite,
suprafaa zonelor afectate de infrastructura transporturilor ), situri
arheologice afectate sau blocate, rezervaii;
Utilizarea terenului: impact socio-economic, impact regional;
Energia: cantitatea de energie consumat prin fiecare mod de transport,
eficiena energiei consumate, preul energiei consumate;
Cretere economic: impactul asupra forei de munc, impactul asupra
dezvoltrii economice regionale, acces la resursele naturale, acces la pieele
interne i externe etc.
NECESARUL DE DATE LA DIFERITE NIVELURI DE DECIZIE
Pentru a asigura un management competitiv este necesar a se procesa date
att la nivel de reea ct i pentru locaii punctuale pentru proiecte individuale. La
fiecare se iau anumite tipuri de decizii. Este deci natural ca pentru fiecare nivel de
decizie s existe nevoi diferite de date. n practic se ntlnesc trei niveluri de
management: nivelul managementului reelei, nivelul programelor de reea, nivelul
managementului proiectelor. Fiecare utilizeaz seturi proprii de date i genereaz
propriile seturi de date i informaii de ieire.
Nivelul managementului reelei se refer la decizii strategice. La acest nivel
se utilizeaz pentru:
Proiecia cerinelor viitoare ale ncrcrii de trafic pe reea;
Evaluarea strii prezente a reelei;
Predicia strii viitoare la nivelul global al reelei n diverse variate strategice:
ntreinere, reabilitare i reconstrucie;
Evaluarea impactului diverselor strategii asupra siguranei traficului,
eficienei economice i mediului nconjurtor;
Calculul bugetelor asociate diverselor strategii pentru viitoarele intervale
financiare;
Identificarea strategiilor optimale dezvoltare a reelei;
Baze de date i algoritmi pentru ci de comunicaie
101
Realizarea de analize de alocare a costurilor i studii de tendin privind
generarea de venituri bugetare.
Nivelul programelor de reea este zona operaional managementului. Aici se
acumuleaz i se prelucreaz date pentru:
Determinarea istoricului i tendinelor seciuni din reea;
Estimarea efectelor factorilor climatici i de mediu asupra materialelor;
Monitorizarea performanelor: viabilitate, siguran, capacitate structural;
Evaluarea strii componentelor reelei i stabilirea nevoii de lucrri de
intervenie (ntreinere, reparaii, reabilitare, reconstrucie);
Predicia performanelor viitoare ale elementelor componente ale reelei;
Prioritizarea lucrrilor de intervenie pe zone i categorii de intervenie;
Stabilirea standardelor de performan i productivitate pentru echipele i
echipamentele de ntreinere;
Programarea activitilor de ntreinere;
Determinarea costurilor unitare ale activitilor de ntreinere, reabilitare i
construcie;
Estimarea duratei de serviciu pentru lucrrile de ntreinere i reabilitare.
Nivelul managementului de proiect utilizeaz date specifice locaiei i
proiectului n cauz pentru:
Determinarea caracteristicilor geometrice i de material ale diferitelor
componente;
Determinarea elementelor de proiectare pentru diferite componente;
Determinarea duratei de via rmase;
Selecia ntreinerii i metodelor de consolidare;
Analiza alternativelor de proiect i selecia celei mai convenabile.
6.2. LOCUL BAZELOR DE DATE N AGENIA DE ADMINISTRARE
Simplul fapt al existenei unei baze de date nu ne rezolv automat
problemele. Este necesar dezvoltarea unui ntreg sistem pentru a evidenia valoarea
bazei de date. Este necesar s dezvoltm sistemul informatic integrat ca parte a
sistemului informaional. Aceasta nseamn stabilirea de canale de comunicaie, pai
de urmat i calendare pentru furnizarea de date pentru baza de date.

Capitolul 6 Baze de date din managementul infrastructurii
102
De notat faptul c baza de date este foarte important dar este doar o parte a
bncii de date. Banca de date fiind acea parte a sistemului informatic n care se
primesc, se stocheaz, se extrag i se proceseaz datele genernd informaii
semnificative (a se revedea capitolul 3). n acest context este util s avem nu doar o
baz de date foarte bun ci un sistem complet capabil s primeasc, s pstreze, s
furnizeze, s prelucreze i s utilizeze ntr-o manier corect informaiile rezultate.
O atenie deosebit trebuie acordat persoanei sau organizaiei care
administreaz baza de date n totalitate sau n parte. Este recomandat ca acel
compartiment care este cel mai afectat de date s administreze i s supervizeze baza
de date i s-i asigure eficiena.
Un exemplu de colectare a datelor este prezentat n figura urmtoare.


LABORATOR
REGIONAL DE
TESTE I ANALIZE
(compoziia
straturilor)
DIVIZIA DE MANAGEMENT
Editare
Coordonare
Procesare
BANCA DE DATE DE
MANAGEMENT A
DRUMURILOR
REZULTATE
Analize
Informaii
Feedback
BIROU
GEOTEHNIC

(date de proiectare i
criterii de selecie)
ASIGURAREA
CALITII

(date de construcie
i materiale)
SECIA DE
CERCETARE

(date de evaluare n
exploatare)

Fig. 34 Colectarea datelor i banca de date pentru o agenie de drumuri [102]
Baze de date i algoritmi pentru ci de comunicaie
103



































Studiu iniial de realizare
Proiectare
Implementare
i ncrcare
Testare
i evaluare
Exploatare
ntreinere
i mbuntire

Fig. 35 Ciclul de via al bazelor de date
Un sistem de baze de date, ca orice produs ingineresc, trebuie gndit ca avnd
un ciclu de via [105], descris n Fig. 35.
Aciunile ce trebuie ntreprinse n fiecare din fazele unei baze de date pentru
infrastructura transporturilor sunt urmtoarele:
Studiul iniial de realizare a bazei de date: analiza inventarului ageniei; definirea
problemelor i restriciilor; definirea obiectivelor; delimitarea ntinderii.
Proiectarea bazei de date: crearea proiectului conceptual; selectarea sistemului soft
de gestionare; crearea proiectului logic; crearea proiectului fizic.
Implementarea i ncrcarea: instalarea SGBD i crearea bazei de date; ncrcarea
i conversia datelor.
Testarea i evaluarea: testarea bazei de date; calibrarea bazei de date; evaluarea
bazei de date i a aplicaiilor.
Exploatarea bazei de date: producerea fluxului de informaii cerut.
ntreinerea i mbuntirea: identificarea defectelor; observarea erorilor ascunse;
modificare i mbuntire.
PAII DE BAZ N DEZVOLTAREA UNEI BAZE DE DATE PENTRU
NTREINEREA INFRASTRUCTURII TRANSPORTURILOR
Paii de baz ce trebuie parcuri n dezvoltarea unui sistem de baze de date
pentru ntreinere a infrastructurii rutiere sunt descrii n Fig. 36. Acest sistem este
unul de baz verificat n timp. Urmrirea pailor trebuie s se fac ns cu pruden i
dup o analiz atent a situaiei specifice a cazului concret.
Capitolul 6 Baze de date din managementul infrastructurii
104


PROPUNERE DE IPLEMENTARE A
SISTEMULUI DE BAZE DE DATE
Ce baze de date?
Ce vor face?
Cum vor fi folosite?
Cine le va folosi?
Estimarea costurilor anuale de
ntreinere
Etc.
APROBAREA
MANAGEMENTULUI
PLANIFICAREA I PROIECTAREA
SISTEMULUI
Revizuirea altor sisteme n funciune
Definirea obiectivelor specifice
Definirea restriciilor
Planificarea activitilor
Programarea
Estimarea costurilor
Etc.
INTRRILE SISTEMULUI
Definirea intrrilor
Clasificarea intrrilor
Definirea tehnicilor de msur
Definirea responsabilitilor de
implementare (cine face ce i cui
furnizeaz)
DEZVOLTAREA PLANULUI DE
EANTIONARE
Fixarea criterii de selecie
Definire proceduri de implementare
RAPORTAREA
Trasarea sistemului, intrrilor i
ieirilor
Manuale i giduri preliminare
SELECTAREA SISTEMULUI DE
CALCUL (sau a altui system de stocare
i analiz a datelor) I
DEZVOLTAREA PROGRAMELOR
Stocarea, actualizarea, editarea, regsirea
datelor
DEZVOLTAREA SISTEMULUI DE
CODIFICARE I FORMATUL
FORMULARELOR DE
COLECTAREA A DATELOR
SELECIA SAU DEZVOLTAREA
NIVELUL DE REFERIN
IMPLEMENTARE TEST
Plan de eantionare i procesarea
datelor
Dialog cu i feedback de la toi
furnizorii de date
REVIZUIREA SISTEMULUI
Pentru posibile mbuntiri rezultate n
urma testelor
DEZVOLTAREA MANUALELOR I
GHIDURILOR DE UTILIZARE
DEZVOLTAREA DE PACHETE DE
ANALIZ A DATELOR
Proiectare, Management,
Exploatare, ntreinere,
REVIZUIREA PERIODIC A
SITEMULUI
Examinarea modului cum sunt
indeplinite funciile proiectate
Modificarea intrrilor, proceselor i
ieirilor sistemului

Fig. 36 Paii n dezvoltarea unui sistem de baze de date pentru drumuri [102]
Baze de date i algoritmi pentru ci de comunicaie
105
6.3. IMPLEMENTAREA BAZELOR DE DATE N TRANSPORTURI
AND - BANCA CENTRAL DE DATE TEHNICE RUTIERE
Un exemplu n ara noastr este baza de date privind infrastructura
transporturilor a fost dezvoltat n cadrul Administraiei Naionale a Drumurilor.
Denumit Banca Central de Date Tehnice Rutiere BCDTR, conine date utilizate n
administrarea reelei de drumuri naionale din Romnia.
Administraia Naional a Drumurilor a trecut nc dinainte de 1990 la
crearea unei baze de date care s cuprind date despre ntregul inventar rutier. Banca
Central de Date Tehnice Rutiere BCDTR a fost conceput ca o structur dinamic.
Conceput printr-un efort naional, BCDTR a fost iniial implementat la
INCERTRANS, la vremea respectiv singurul institut de profil din ar. Ea a fost
preluat i continuat odat cu nfiinarea Centrului de Studii Tehnice i Informatic
CESTRIN (ca organism tehnic al AND) care administreaz i date stocate.
Elaborat iniial n anii optzeci pe mini-calculatoare din seria CORAL, banca
de date a fost translatat pe micro-calculatoare compatibile IBM-PC care ruleaz sub
Windows. Sistemul de gestiune al bazelor de date ales este ORACLE. Conceput de
la nceput ca un sistem mare, ea a fost creat utiliznd sistemul de gestiune ORACLE
2.0, o implementare pentru mini-calculatoare i a preluat abilitile i limitrile
programului. Pe msur ce trecerea timpului aducea noi versiuni ale softului de baz,
ea a fost trecut pe aceste versiuni i actualmente este rulat pe reele de
microcalculatoare sub ORACLE8. BCDTR permite adugarea de tabele noi i
completarea celor existente cu noi coloane.
Datele i informaiile au fost astfel structurate nct s descrie ct mai bine
reeaua. Analiznd capacitatea de colectare a administraiei i colaboratorilor s-a
stabilit un nucleu de date de baz urmnd ca pe msur ce se nainteaz n gradul de
cunoatere numrul i tipul de date s se extind.
Prezentm mai jos schematic o parte dintre tabelele coninute de BCDTR aa
cum au fost concepute de specialitii CESTRIN care au lucrat la dezvoltarea sa.
Date generale i organizatorice
CODUNIT Codificarea unitilor i subunitilor administrativ teritoriale
DRDP Uniti administrative din cadrul A.N.D.
LOCALIT Localiti traversate date generale
ANEXEAND Construcii anexe aparinnd A.N.D.
DEPMAT Depozite materiale
DEPSCULE Depozite scule
DUTILAJE Depozit utilaje
DJDP Direcii judeene de drumuri i poduri
POSTCINT Posturi fixe de cntrire
Capitolul 6 Baze de date din managementul infrastructurii
106
Date generale privind reeaua de drumuri
DRUMURI Drumuri publice
DRUMURIE Drumuri europene
DRUMNAT Lungime drumuri naionale
DNJUD Reea drumuri naionale pe judee
LREALA Lungimea real a drumurilor
SUPRAP Suprapunere sectoare de drum
Date privind sectoarele rutiere
RETDRDP Reeaua de drumuri naionale aparinnd direciilor
RETSECT Reeaua de drumuri naionale aparinnd fiecrei SDN
RETDISTR Reeaua de drumuri naionale aparinnd fiecrui district
RETJUD Reeaua judeean de drumuri
Date privind
NRBENZI Numr benzi de circulaie pe drumuri
NRBENZIA Numr benzi de circulaie pe autostrzi
BENZIINC Benzi de ncadrare
BENZIS Benzi suplimentare la drumuri i autostrzi
INTERSECII Intersecii cu alte drumuri
INTERSCF Intersecii cu calea ferat
Date privind geometria
CURBE Curbe n plan de situaie
DECLIV Decliviti drumuri
PROFTRS Tip profil transversal
RACVERT Curbe de racordare vertical
Date privind structura drumurilor
PLATFORM Platforma drumului
SISTEMR Alctuirea sistemului rutier iniial i a straturilor de ranforsare
Date de sigurana circulaiei
INDRUT Indicatoare rutiere
MARCAJE Marcaje rutiere
SPERIC Sectoare periculoase cu concentrare de accidente
Date privind elemente adiacente drumurilor
ACOSTAMENTE Date privind caracteristicile acostamentelor
PCICL Piste pentru cicliti
SANTURI anuri laterale
TALUZURI Taluzuri mpdurite sau protejate
PARAPETE Stlpi de dirijare i parapete
PLANTRUT Plantaii rutiere existente
Baze de date i algoritmi pentru ci de comunicaie
107
Date despre poduri
COD POD Codificare elemente poduri
PODURI Date generale poduri
PODINAM Rezultatele ncercrilor dinamice la poduri
PODINFR Caracteristici ale infrastructurii
PODREP Lucrri de reparaii efectuate la poduri
PODSTARE Stare tehnic poduri
PODSTAT Rezultatele ncercrii statice efectuate la poduri
PODSUPR Elemente geometrice i constructive suprastructur
PODETE Podee
Date despre alte lucrri de art
TUNELURI Tuneluri rutiere
ZSPRIJIN Ziduri de sprijin
DRENURI Drenuri
Date de relief i mediu
PAMINT Natura pmntului de fundaie
RELIEF Condiii de relief
TIPCLIM Tipul climatic
TORENTI Amenajare toreni
STABILIT Stabilitate teren
S_INUD Sectoare inundabile
Date de stare
ST_TRONSON Stare tehnic tronsoane omogene
TRONSOANE Tronsoane omogene
VIABDR Starea de viabilitate a drumurilor
Date de lucrri de ntreinere
ACTIARNA Viabilitatea drumului pe timpul iernii
TRATAMENTE Tratamente bituminoase
RANFORS Ranforsri necesare
Date de autorizare
LUCRARI Autorizaii de lucrri

Dup cum se observ, n prezent, tabelele implementate nu acoper n
totalitate tipurile de date identificate mai nainte i nici necesarul de date la fiecare
nivel managerial.
Totui, aceste date acoper n bun msur necesarul de date utilizate n mod
curent de Administraia Naionale a Drumurilor i constituie un punct de plecare n
eventuale dezvoltri ulterioare, mai performante.
Capitolul 6 Baze de date din managementul infrastructurii
108
6.4. BIBLIOGRAFIE
[99] *** NCHRP Report 401 Guidance for Managing Transportation Planning Data;
National Research Council, Transport Research Board, National Academy Press,
Washington DC, USA, 1997.
[100] *** Pavement Design and Management Guide; Transportation Association of
Canada, Ottawa1997.
[101] Haas Ralph, Hudson Ronald, Zaniewski John: Modern Pavement Management;
Krieger, Malabar-Florida, 1994.
[102] Haas Ralph, Hudson W. Ronald, Pavement Management Systems; McGraw-Hill Book
Company; 1978.
[103] Huang, Yang H.: Pavement Analysis and Design; Prentice-Hall, Inc. Englewood Cliffs,
New Jersey 1993.
[104] Hudson, W. Ronald, Waheed Uddin, Ralph C. Haas: Infrastructure Management:
Integrating Design, Construction, Maintenance, Rehabilitation, and Renovation;
McGraw Hill, 1997.
[105] Rob Peter, Coronel Carlos, Database Systems Design, Implementation, and
Management, Course Technology Inc., Cambidge MA, 1997.
[106] Scnteie Rodian: Aspecte privind prelucrarea datelor n analiza infrastructurii rutiere;
Chiinu, 2002.
[107] Shahin, M.Y.: Pavement Management for Airports, Roads and Parking Lots; Chapman
& Hall, New York 1994.
Scnteie Rodian Baze de date i algoritmi pentru ci de comunicaie
ISBN 973-86343-3-4 Editura Societii Academice Matei-Teiu Botez
Iai 2003
109
ALGORITMI N
MANAGEMENTUL INFRASTRUCTURII
7.1. NOIUNI FUNDAMENTALE
Noiunea de algoritm este fundamental n domeniul programrii, cercetrii
operaionale, a analizei de sistem precum i a modelrii i simulrii, a ingineriei n
general. Algoritmul este o metodologie sau o procedur ce cuprinde o secven de
instruciuni nlnuite logic ce trebuie s rezolve o problem dat. Algoritmul
primete un set de date de intrare, le prelucreaz i le transform un set de date de
ieire bine definite (Fig. 37). Gndirea uman a lucrat n permanen pe baze
algoritmice chiar dac nu le-a teoretizat din totdeauna.

algoritm
ieiri
intrri

Fig. 37 Algoritm
Capitolul 7 Algoritmi n managementul infrastructurii
110
Matematic, un algoritm este o reprezentare a funciei ( ) p i f e , = , unde I i
este setul de date de intrare, iar E e este setul de date de ieire. Variabila ntreag
p se refer la faptul c algoritmul se ncheie n p pai. Valoarea real a lui p este
n general legat de dimensiunea setului de date de intrare. Un algoritm trebuie
construit n jurul a patru concepte fundamentale: s fie corect, s fie finit, s fie
definit i s fie eficient.
Corectitudinea: algoritmul trebuie s rezolve corect funcia pentru care a
fost proiectat.
Finititudine: secvena de instruciuni trebuie s genereze un rezultat dup un
numr finit de pai pentru seturile de date care respect restriciile impuse.
Definire: paii trebuie precis definii i s efectueze operaii precise.
Eficien: secvena de instruciuni (paii) algoritmului trebuie s poat fi
executai pe o main fizic realizabil.
Algoritmul este o reet care s ne conduc de la punctul de pornire la
rezultat. Altfel spus un algoritm este o procedur bine definit de calcul matematic,
logic i simbolic care transform datele de intrare n date de ieire sau informaii. n
utilizarea lor algoritmii trebuie s rspund la cteva ntrebri practice:
Finalitatea: dup parcurgerea unui numr de pai se oprete i genereaz un
rezultat. Care sunt restriciile care se impun i n ce condiii nu are
finalitate?
Precizia: corectitudinea rezultatului este evaluat cu o anumit toleran.
Acolo unde nu exist metode de calcul exacte trebuie stabilite aprioric
abaterile tolerate. Ce precizie trebuie adoptat i care sunt cele mai
eficiente metode pe care proiectantul algoritmului trebuie s le aib n
vedere pentru limitarea efectelor propagrii erorilor de calcul?
Viteza: datele de intrare sunt reprezentate de seturi variabile. Durata de
parcurgere a tuturor pailor depinde de dimensiunea seturilor de date de
intrare. Structura i dimensiunea seturilor de date, succesiunea pailor de
calcul i precizia sunt mpreun valori critice. Parcurgerea algoritmului
trebuie s se realizeze ntr-un interval de timp suficient de scurt pentru ca
rezultatul generat s mai fie util.
Spaiul: datele de intrare, structurile ce pstreaz valorile intermediare,
variabilele de stare, datele de ieire se regsesc fizic prin memoria ocupat
n calculator. Reprezentarea numerelor reale, de exemplu, poate fi fcut n
diferite moduri, fiecare modalitate ocupnd un spaiu diferit care uneori
depinde i de construcia fizic a calculatorului. Memoria disponibil este
limitat. n consecin implementarea algoritmului poate depinde de
maina fizic disponibil.
Paii care apar pe durata execuiei unui algoritm pot fi grupai n:
Baze de date i algoritmi pentru ci de comunicaie
111
Pai de atribuire (valorile iniiale sunt ataate unor variabile);
Pai aritmetici (care conin operaii simple de adunare, scdere, nmulire,
mprire sau funcii complexe ori operaii simbolice);
Pai logici (cum ar fi comparare a dou numere etc.).
Din punct de vedere istoric, algoritmii sunt, ca denumire i ca utilizare, o
invenie recent chiar dac actualmente pare o noiune fireasc, fr de care nu putem
concepe activitatea curent. Un element cheie n dezvoltarea gndirii algoritmice a
fost sistemul poziional de notare a numerelor. Sistemul de notare numeric roman era
deosebit de greoi i nu permitea dezvoltarea unei gndiri logice, algoritmice. Primul
sistem de notare numeric poziional despre care se pstreaz mrturii se pare c a
fost utilizat de mayai acum 2000 de ani, pe baza unui sistem de numeraie n baza
20, dar nu exist dovezi c s-au dezvoltat i algoritmi matematici. Chiar dac au
existat lucrri pe aceast tem ele au fost distruse, mpreun cu ntreaga literatur
tiinific, odat cu cucerirea spaniol cretin. Fenomene asemntoare se cunosc i
n Extremul Orient, de exemplu China. De altfel este foarte posibil ca i n Europa i
Orientul Mijlociu s se fi produs astfel de distrugeri sistematice atunci cnd noi
curente politice i/sau religioase s-au impus. Eliminarea crilor este, n istorie, la fel
de rspndit ca i eliminarea oamenilor.
Sistemul poziional de notare a aprut n India n jurul anului 600 d.C. i
ncepe s se rspndeasc pe la 750 d.C. cnd dup cucerirea musulman mai multe
lucrri indiene ce cuprind descrierea unor algoritmi aritmetici sunt preluate n Persia
i traduse n arab.
Prima persoan cunoscut c a tratat acest subiect este al-Khwarizmi i se
pare c de aici provine i denumirea de algoritm. Pe la 1200 lucrarea a fost tradus
n latin i s-a fcut cunoscut n Europa.
Sistemul zecimal a fost inventat n secolul 10 de matematicianul sirian
al-Uqlidisi din Damasc. Munca sa a fost reluat i dezvoltat cinci secole mai trziu
de matematicianul persan al-Kashi.
De atunci, proiectare, implementare i utilizarea algoritmilor a devenit o parte
implicit a cercetrii tiinifice. Chestiunea a fost reluat la nivelul teoretic mai ales
dup apariia calculatoarelor cnd realizarea de programe informatice se bazeaz larg
pe dezvoltarea de algoritmi, iar rezolvarea de probleme complexe implic un consum
ridicat de memorie i de timp, reducerea consumului de resurse fiind un element cheie
n acceptarea uneia sau alteia dintre soluii.
Utilizarea algoritmilor este uzual n cele mai diverse ramuri tiinifice i
tehnice. Studiile pentru rezolvarea de probleme de interes deosebit au generat o serie
de algoritmi celebri:
Construciile lui Euclid,
Calculul lui Newton pentru gsirea rdcinii,
Transformata Fourier rapid,
Capitolul 7 Algoritmi n managementul infrastructurii
112
Algoritmi de compresie (Huffman, Lempel-Ziv, GIF, MPEG),
Algoritmi de criptare,
Algoritmul simplex pentru programare liniar,
Algoritmi de gsire a cii minime (Dijkstra, Bellman-Ford etc.),
Controlul congestiei i redirectarea traficului,
Recunoaterea formelor (genetic, evaluarea strii de degradare a
betonului),
Algoritmul de triangulaie (proiectare asistat de calculator, simulare).
7.2. DESCRIEREA ALGORITMILOR
Pentru a se proiecta eficient algoritmii n aa fel nct s nu existe probleme
de nelegere pentru cei care fac efectiv programarea s-au inventat metode de
reprezentare. Cele mai cunoscute sunt descrierea prin diagrame logice i limbajul
pseudocod. Acestea sunt instrumente utile i foarte uor de manevrat.
DIAGRAMELE LOGICE
Diagramele logice constau n reprezentarea grafic prin blocuri a operaiilor
care trebuie efectuate. Blocurile mpreun cu conectorii i cu sgeile de legtur, care
stabilesc fluxul datelor, determin modalitile de prelucrare a datelor de la intrare
pn la ieire.
Tabelul 6. Elemente utilizate n schemele logice


Bloc de intrare/ieire



Bloc de proces


Bloc decizional


Bloc al proceselor predefinite


Bloc de pregtirea


Conectori
Baze de date i algoritmi pentru ci de comunicaie
113
LIMBAJUL PSEUDOCOD
Pseudocod este un crochiu al unui algoritm, scris ntr-o form care poate cu
uurin s fie transformat n program.
Pseudocod-ul nu poate fi compilat sau executat i nu are reguli reale de
sintax sau de formulare. Este doar o niruire de pai logici de urmat n rezolvarea
problemei. Permite analistului i programatorului s se concentreze asupra problemei
i fr s insiste asupra considerentelor legate de limbajul de programare.
Descrierea algoritmului cu ajutorul pseudocod se poate face fr a cunoate
de la nceput n ce limbaj de pragramare va fi scris codul, ba chiar se poate face fr a
cunoate obligatoriu un limbaj de programare. De asemenea, nu exist restricii
asupra limbii utilizate, dar cei mai muli analiti prefer direct limba englez. Sunt
acceptate semne grafice sugestive mprumutate sau nu din formulele matematice.
Astfel pentru atribuire se utilizeaz frecvent semnul (sgeat spre stnga).
7.3. EFICIENA ALGORITMILOR
Eficiena unui program rezultat din implementarea unui algoritm depinde de
tehnicile utilizate. Putem distinge aici dou noiuni: (1) algoritm conceptual i
(2) algoritm complet.
Algoritmul conceptual se limiteaz la a privi lucrurile la modul general fr a
intra n detalii. Cel de al doilea, pornind de la primul, intr n amnunte i trateaz
inclusiv reprezentarea i accesul la date, impunnd alegerea unor anumite structuri
specifice i a tehnicilor particulare de tratare a problemei.
COMPLEXITATEA ALGORITMILOR
Aa cum s-a precizat mai sus un algoritm este o procedur de rezolvare
secvenial a problemelor care apar n inginerie i nu numai. Timpul de calcul
consumat difer de la un caz particular la altul. Pentru anumite situaii favorabile
timpul de calcul poate fi extrem de scurt. Pentru alte situaii nefavorabile trebuie s
ateptm foarte mult pentru ca algoritmul s se ncheie. Deoarece, pentru rezolvarea
unei anumite probleme, pot fi concepui mai muli algoritmi de calcul este bine s
gsim o msur a performanei fiecruia.
Utiliznd o astfel de msur i comparnd costurilor i beneficiilor generate
putem alege cel mai bun dintre algoritmii disponibili pentru rezolvarea problemei.
Cea mai des folosit msur este timpul de calcul. Uneori se poate utiliza
drept indicator i cantitatea de memorie utilizat. Aceasta din urm este tot mai rar
folosit, mai ales ca termen ajuttor, deoarece calculatoarele disponibile ofer
memorie suficient pentru rezolvarea problemelor practice. Totui, acesta este un
factor de care trebuie inut seama n probleme de conducere on-line a proceselor,
Capitolul 7 Algoritmi n managementul infrastructurii
114
acolo unde costul permis pentru echipamentul achiziionat este restricionat de
beneficiile predictibile.
De remarcat c simpla comparare a timpului de calcul prin implementarea i
rularea algoritmilor, dei furnizeaz unele indicaii, nu este neaprat eficient. Timpul
efectiv de rulare este diferit pe diferite calculatoare. De asemenea este dependent de
setul particular de date, de limbajul de programare i de compilatorul specific folosit.
Este necesar o altfel de metod care s ne ofere o msur mai precis i s
nu fie influenat de situaii particulare (calculator, compilator, valori etc.). Cea mai
sigur metod este calcularea numrului total de pai pe care un algoritm i parcurge
pe durata rezolvrii problemei i care determin timpul total de calcul. Acesta depinde
de dimensiunea setului de date de intrare. Funcia care stabilete o relaie ntre
dimensiunea setului de date de intrare i numrul de pai se numete complexitatea
algoritmului. Din nefericire nu se poate totdeauna stabili i demonstra o relaie exact
ntre cele dou mrimi.
STRUCTURI CICLICE
n cazul pailor aritmetici i de atribuire problemele sunt clare: fiecare pas
conteaz o singur dat. Probleme apar n cazul pailor logici. Acetia pot conduce la
executarea de secvene de instruciuni de lungimi diferite funcie de valoarea rezultat
n operaia logic. De asemenea prin ataarea unei instruciuni de salt napoi pot
rezulta structuri ciclice n desfurarea algoritmului.
Structuri ciclice tipice sunt while , repeat...until.


DA
?
Pasul i
Pasul i+1
..........
Pasul i+k
NU
a)


DA
?
Pasul i
Pasul i+1
..........
Pasul i+k
NU
b)

Fig. 38 Structuri ciclice tipice: while (a) i repeat...until (b)
Se poate observa c paii cuprini ntr-o bucl de tip repeat...until se execut
cel puin o dat i acest lucru trebuie considerat cnd se studiaz algoritmul.
Un exemplu tipic de algoritm care utilizeaz o structur ciclic de program
este calculare factorialului unui numr (Fig. 39).
Baze de date i algoritmi pentru ci de comunicaie
115
Funct Factorial( n: Integer ) : Integer

If n=0 Then Return 1
Rez 1
i 1
Repeat // nceput bucl
Rez Rez * i
i i + 1
Until i=n // sfit bucl
Return Rez

EndFunct

Fig. 39 Calculul funciei factorial prin utilizarea structurilor ciclice
Un alt exemplu tipic este calculul irului Fibonacci. Acest ir este caracterizat
prin urmtoarele: primul numr este 0
0
= F , urmtorul este 1
1
= F iar celelalte
numere reprezint suma precedentelor dou din ir.

Funct Fibonacci( n: Integer ) : Integer

If n<0 then Error
If n=0 Then Return 0
If n=1 Then Return 1

F0 0
F1 1

I 2
Repeat // nceput bucl
Temp F0 + F1
Fo F1
F1 Temp
i i + 1
Until i = n // sfit bucl

Return F1

EndFunct

Fig. 40 Rezolvarea irului Fibonacci prin structur ciclic
RECURSIVITATEA
Recursivitatea este o metod de rezolvare problemelor prin descrierea unei
funcii prin apelarea aceleiai funcii cu valori inferioare.
Capitolul 7 Algoritmi n managementul infrastructurii
116
Exemple pot fi cele date la structuri ciclice. n continuare prezentm
rezolvarea algoritmului pentru calculul factorialului unui numr prin apel recursiv.

Funct Factorial( n: ) :

If n=0 Then Return 1
Return n * Factorial(N-1)

EndFunct

Fig. 41 Rezolvarea funciei factorial prin apel recursiv
Similar irul lui Fibonnaci poate fi rezolvat prin apel recursiv. Algoritmul
este prezentat n figura urmtoare.

Funct Fibonacci( n: ) :

If n<0 then Error
If n=0 Then Return 0
If n=1 Then Return 1

Return Fibonacci(n-1) + Fibonacci(n-2)

EndFunct

Fig. 42 Rezolvarea irului Fibonacci prin apel recursiv
O remarc imediat este faptul c recursivitatea simplific mult munca
programatorilor. Programele scrise sunt mult mai scurte. Complexitatea algoritmului,
n sensul resurselor consumate, nu respect totdeauna aceeai regul.
Un exemplu tipic pentru algoritmii rezolvai prin recursivitate este problema
turnurilor din Hanoi.
Hanoi este capitala Vietnamului, un ora cu o istorie milenar. ntr-una din
mnstirile sale un grup de clugri sunt pstrtorii unui misterios exerciiu care a
preocupat att pe curioi ct i pe oamenii de tiin. Ei dein trei turnuri (tije
verticale) i 64 de discuri din aur de diferite dimensiuni. Discurile sunt aranjate pe
primul turn de jos n sus n ordine descresctoare. Mutnd cte un disc odat, ele
trebuie s ajung n aceeai ordine pe cel de-al treilea turn. Se poate utiliza al doilea
turn ca ajutor dar un disc mai mare nu trebuie aezat niciodat peste unul mai mic.
Clugrii trebuie s mute continuu discurile pentru a rezolva problema. Se
spune c atunci cnd toate cele 64 de discuri vor ajunge la locul lor va veni sfritul
lumii.
Baze de date i algoritmi pentru ci de comunicaie
117

6
4

d
i
s
c
u
r
i


Fig. 43 Turnurile din Hanoi
Problema a fost studiat i formalizat de matematicianul francez Lucas n
1883.
Pornind de la rezultatele sale s-a putut trasa algoritmul care n formatul
recursiv are form prezentat n urmtoarea figur:
Proc Hanoi ( n: integer; A,B,C )

If (n=1)
Then
Mut_un_discul_de_pe_A _pe_B
Else
Hanoi(n-1,A,C,B)
Hanoi( 1,A,B,C)
Hanoi(n-1,C,B,A)
Endif

EndProc

Fig. 44 Rezolvarea recursiv a problemei turnurilor din Hanoi
Numrul de mutri necesare pentru rezolvarea acestei probleme este dat de
urmtorul raionament:
( ) [ ]
( ) [ ] ( ) [ ] ( ) [ ] A B C n Hanoi N C B A Hanoi N B C A n Hanoi N
C B A n Hanoi N
M M M
M
, , , 1 , , , 1 , , , 1
, , ,
+ +
=

Considernd durat unei mutri, timpul de rezolvare este dat de:
Capitolul 7 Algoritmi n managementul infrastructurii
118
( ) ( )
( )
( )
( )
( )
( )



1 2
1 2 2 2 2
2 2 2 1 2
2 2 2 2
2 2 2
1 2
2 2 1
2 2 1
2 3
2
=
+ + + + + =
+ + + + + =
+ + + =
+ + =
+ =


n
n n
n n
T
n T
n T
n T n T
L
L
L L L L L L L L L L L
(5)

Dac 64 = n atunci numrul de pai de urmat este
615 . 551 . 709 . 073 . 744 . 446 . 18 1 2
64
= = N
(6)
Presupunnd c o mutare dureaz o secund, procesul va dinui n total
584.942.417.355 ani. Se pare c lumea nu este n pericol.
7.4. ANALIZA COMPLEXITII ALGORITMILOR
O trecere n revist a literaturii de specialitate relev existena utilizrii pe
scar larg a trei modaliti de msurare a performanelor unui algoritm: analiza
empiric, analiza cazului mediu i analiza cazului cel mai defavorabil. Fiecare dintre
msuri are meritele dar i dezavantajele sale.
METODE DE ANALIZ
Analizei empiric are ca obiectiv estimarea comportamentului algoritmului
n situaii practice. Pe baza algoritmului se scrie un program i se testeaz modul de
lucru pe clase de situaii particulare ale problemei. Abordarea aceasta este util n
validarea analizei matematice care a condus la realizarea algoritmului. Se pot
compara performanele a doi algoritmi realizai pentru a rezolva aceeai problem
prin rularea pe aceeai main, n aceleai condiii de lucru i cu acelai set de date de
intrare. De menionat aici c selecia datelor de intrare este extrem de important.
Pentru seturi particulare diferite se pot obine timpi de rulare diferii chiar cu acelai
algoritm n dou rulri succesive. Depirea impasului se face prin generarea de seturi
aleatoare de date care se utilizeaz pentru ambele programe fcnd comparaia la
nivel global.
Totui analiza empiric se poate efectua numai dup ce s-a realizat complet
i corect scrierea programului. Invalidarea testului duce la irosirea manoperei pentru
programare fr ca aceasta s aib o finalitate.
Dezavantajele majore ale analizei empirice sunt:
Baze de date i algoritmi pentru ci de comunicaie
119
performanele algoritmilor depind de cele mai multe ori de limbajul de
programare, compilatorul i computerul utilizate pentru experiment precum
i de capacitatea programatorului;
analiza nsi este uneori prea costisitoare i foarte mare consumatoare de
timp;
compararea poate s nu fie concludent deoarece anumii algoritmi se
comport mai bine pentru o clas de cazuri particular i teste diferite
efectuate cu scopuri diferite pot conduce la rezultate opuse.
Analiza cazului mediu se bazeaz pe o analiz probabilistic a apariiei unor
clase de realizri (instane) ale problemei i const n calcularea unui estimator al
numrului mediu de pai ai algoritmului. Pe baza acestuia se deduce timpul mediu de
rulare al algoritmului.
Ca dezavantaje majore putem enumera:
analiza depinde crucial de funcia de distribuie a probabilitii alese s
descrie apariia realizrilor problemei, modificri ale funciei pot conduce
la modificri ale evalurii algoritmului;
aprecierea distribuiei probabilitii este dificil de realizat pentru probleme
practice, analistul trebuie s parcurg un numr mare de situaii unele
imposibil de conceput aprioric;
analiza este cel mai adesea deosebit de complicat i necesit cunotine
matematice deosebite chiar pentru analiza unor tipuri simple de algoritmi.
Acest tip de analiz se bazeaz pe situaia medie, cazul tipic al intrrilor,
dar nu furnizeaz informaii despre distribuia ieirilor. Unele dintre
cazurile atipice pot conduce la durate excepional de mari de calcul chiar
dac pentru cazul mediu algoritmul se comport mulumitor.
Analiza cazului cel mai defavorabil furnizeaz limita superioar a
numrului de pai pe care i parcurge algoritmul oricare ar fi realizarea problemei. n
aceast analiz contorizm numrul maxim posibil de pai prin care ni se garanteaz
c se ajunge la rezultat n oricare situaie realizabil n practic.
Aceast analiz evit problemele care apar n celelalte tipuri de analiz. Este
independent de sistemul i mediul de calcul i este relativ uor de realizat furniznd
o garanie a plafonului maximal.
Dezavantajul major este c evaluarea performanelor unor algoritmi depinde
de existena unor situaii patologice a cror probabilitate de apariie este neglijabil,
practic nul.
NOTAIA ASIMPTOTIC
Pentru msurarea complexitii prin timpul de rulare s-au dezvoltat diferite
instrumente, fiecare fiind caracterizat prin notaii specifice. Deoarece contabilizarea
Capitolul 7 Algoritmi n managementul infrastructurii
120
detaliat a numrului de pai ai algoritmului este complicat, dificil i neproductiv,
principalul instrument de lucru este notaia asimptotic.
Trebuie notate cteva elemente:
suntem preocupai de setul numerelor naturale { 0, 1, 2, };
n este dimensiunea setului de date de intrare;
T(n) este timpul de rulare pentru cazul cel mai defavorabil;

Notaia asimptotic se bazeaz pe metoda induciei matematice. Inducia este
utilizat pentru demonstrarea unei anumit formule generale care este cunoscut sau
uor de dedus. Sunt urmate trei etape:
(1) dovedirea condiiei iniiale;
(2) presupunerea c formula este valabil pentru n i
(3) dovedirea valorii de adevr pentru n+1.
Formularea standard este:
Dac propoziia ( ) n P (n cazul nostru afirmaia c timpul cel mai defavorabil
este ( ) n T ) este adevrat pentru
0
n n = i dac pentru orice
0
n n ( ) n P
implic ( ) 1 + n P atunci propoziia ( ) n P este adevrat pentru oricare n .
Prezentm n continuare cteva modaliti de descriere a complexitii
algoritmilor prin notaii asimptotice.
Notaia (theta mare)
Notnd ( ) n g numrul total de pai, unde n este dimensiunea datelor de
intrare trebuie s gsim o funcie ( ) ( ) ( ) n f n g = pentru care exist constantele
pozitive
1
c ,
2
c ,
0
n astfel nct ( ) ( ) ( ) n g c n f n g c
2 1
0 pentru
0
n n .
Dac ( ) ( ) ( ) n g n f = i ( ) ( ) ( ) n h n g = a atunci ( ) ( ) ( ) n h n f = ;
( ) ( ) ( ) n f n f = ;
( ) ( ) ( ) n g n f = dac i numai dac ( ) ( ) ( ) n f n g = .
Notaia O (O mare)
Trebuie s gsim o funcie ( ) ( ) ( ) n f n g O = pentru care exist constantele
pozitive c ,
0
n astfel nct ( ) ( ) n g c n f 0 pentru
0
n n .
Dac ( ) ( ) ( ) n g O n f = i ( ) ( ) ( ) n h O n g = atunci ( ) ( ) ( ) n h O n f = ;
Baze de date i algoritmi pentru ci de comunicaie
121
( ) ( ) ( ) n f O n f = ;
( ) ( ) ( ) n g O n f = dac i numai dac ( ) ( ) ( ) n f n g = ;
Dac ( ) ( ) ( ) n g n f = atunci ( ) ( ) ( ) n g O n f = .
Notaia O mrginete superior creterea timpului de rezolvare a algoritmului
Notaia (Omega mare)
Trebuie s gsim o funcie ( ) ( ) ( ) n f n g = pentru care exist constantele
pozitive c ,
0
n astfel nct ( ) ( ) n f n g c 0 pentru
0
n n .
Dac ( ) ( ) ( ) n g n f = i ( ) ( ) ( ) n h n g = atunci ( ) ( ) ( ) n h n f = ;
( ) ( ) ( ) n f n f = ;
( ) ( ) ( ) n g n f = dac i numai dac ( ) ( ) ( ) n f O n g = ;
Dac ( ) ( ) ( ) n g n f = atunci ( ) ( ) ( ) n g n f = .
Notaia mrginete inferior creterea timpului de rezolvare a algoritmului
Notaia o (o mic)
Trebuie s gsim o funcie ( ) ( ) ( ) n f n g o = pentru oricare 0 > c exist o
constant pozitiv
0
n astfel nct ( ) ( ) n g c n f < 0 pentru
0
n n .
( ) ( ) 0 lim =

n g n f
n
.
Dac ( ) ( ) ( ) n g o n f = i ( ) ( ) ( ) n h o n g = atunci ( ) ( ) ( ) n h o n f = ;
( ) ( ) ( ) n g o n f = dac i numai dac ( ) ( ) ( ) n f n g = ;
Notaia (omega mic)
Trebuie s gsim o funcie ( ) ( ) ( ) n f n g = pentru oricare 0 > c exist o
constant pozitiv
0
n astfel nct ( ) ( ) n f n g c < 0 pentru
0
n n .
( ) ( ) =

n g n f
n
lim .
Dac ( ) ( ) ( ) n g n f = i ( ) ( ) ( ) n h n g = atunci ( ) ( ) ( ) n h n f = ;
( ) ( ) ( ) n g n f = dac i numai dac ( ) ( ) ( ) n f o n g = ;
CONSIDERAII PRACTICE
n practic s-a impus tot mai mult utilizarea notaiei O (O mare Big O).
Funcie de notaia O algoritmii pot primi o caracterizare lingvistic de tipul celor
prezentate n tabelul urmtor.
Capitolul 7 Algoritmi n managementul infrastructurii
122
Tabelul 7. Tipuri de complexitate
Caracterizare Notaia O
Constant O(1)
Logaritmic O(log n)
Linear O(n)
N log n O(n logn)
Cuadratic O(n
2
)
Cubic O(n
3
)
Polinomial O(n
k
)
Exponenial O(2
n
) sau O(10
n
)
Factorial O(n!)
O(n
n
)

Pentru avea o imagine mai clar a semnificaiei complexitii unui algoritm s
considerm urmtorul exemplu ipotetic. Presupunem c avem la dispoziie un
calculator care execut fiecare pas al unui algoritm ntr-o micro-secund (adic are
viteza de 1 milion de instruciuni pe secund). Algoritmul va fi executat i se va opri
dup ( ) n f instruciuni atunci timpul de rulare, funcie de dimensiunea datelor de
intrare va fi n conformitate cu tabelul urmtor.
Tabelul 8. Exemplu de timp de calcul
( ) n f
n=2 n=16 n=256 n=1024 n=1048576
1
1 s 1 s 1 s 1 s 1 s
log
2
n
1 s 4 s 8 s 10 s 20 s
N
2 s 16 s 256 s
1 ms 1 s
n log
2
n
2 s 64 s
2 ms 10 ms 21 s
n
2

4 s 26 s
66 ms 1 s 12 zile
n
3

8 s
4,1 ms 17 s 18 min 366000 ani
2
n

2 s
66 ms 10
63
ani 10
295
ani 10
315639
ani

Pentru comparaie, amintim c din datele cunoscute astzi soarele va disprea
peste doar 510
9
ani. Algoritmii cu complexitate exponenial nu sunt utilizabili n
practic. Timpii de calcul i fac utili doar pentru seturi foarte mici de date. Asupra
algoritmilor cu complexitate factorial sau n la n nu insistm, funcia lor de cretere
fiind mult superioar celei exponeniale.
Baze de date i algoritmi pentru ci de comunicaie
123
Chiar dac prezint dezavantaje evidente, complexitatea exponenial,
factorial sau n la n este inevitabil la nivelul actual de cunotine. De exemplu,
problema comisului voiajor (pe o reea n care nodurile reprezint oraele un vnztor
trebuie s viziteze toate oraele exact o singur dat cu costuri minime, cunoscut fiind
costul cltoriei pe fiecare latur a reelei) are cea mai bun soluie de complexitate
exponenial.
Notaia O, i n general notaiile de complexitate se aplic problemelor cu
seturi de date de intrare suficient de mari. Concluziile ce se pot trage pentru
problemele mari nu se aplic obligatoriu i problemelor cu dimensiune mic a
vectorului de intrare. Fiind vor de o notaie asimptotic rezultatul este valabil numai
pentru valori mai mari dect o anumit valoare de prag.
Pentru probleme mici nu ne vom baza niciodat pe notaia O. Vom testa
cteva implementri i vom msura timpul de lucru dup care vom selecta unul
rezonabil pentru clasa de probleme pe care trebui s o rezolvm n mod practic.
Trebuie avut n vedere efectele particulare ale mrimii reduse a setului de
date. De exemplu, un algoritm cu complexitate 1000n este mai scump dect unul n
2

pentru n<1000. alte consideraii importante la selecia algoritmilor sunt frecvena de
utilizare a programului, uurina de scriere a codului, uurina de ntreinere, necesarul
de memorie etc.
EXEMPLE DE CALCUL A COMPLEXITII
Operaii matriciale
O form simpl de algoritm, dar esenial n nelegerea ideii de complexitate,
este calculul produsului a dou matrice. Presupunnd c avem dou matrice ptratice
cu dimensiunea n n calculul produsului se va face respectnd urmtorii pai:


Tipul
Operaiei
Numr de
operaii
Funct MultMatrix ( A[n,n], B[n,n] )

For i=1 To n Do
For j=1 To n Do
C[i,j]=0
For k=1 To n Do
C[i,j]=C[i,j]+A[i,k]*B[k,j]
EndFor
EndFor
EndFor
Return C[n,n]
EndFunct


Atribuire
Atribuire
Atribuire
Atribuire
Atribuire


n
n
2

n
2

n
3

2n
3




Fig. 45 Exemplu de calcul al complexitii
Capitolul 7 Algoritmi n managementul infrastructurii
124
CLASE DE COMPLEXITATE
Aa cum am vzut mai sus, o problem poate fi rezolvat ntr-un anumit timp
a crui durat depinde de echipamentul de lucru dar i de dimensiunea setului de date
de intrare. Dependena de datele de intrare definete complexitatea algoritmului care
rezolv problema.
Cunoaterea complexiti ne poate da indicaii privind posibilitatea noastr de
a rezolva problema ntr-un interval de timp rezonabil pe mainile de care dispunem.
tiind timpul de rezolvare putem deduce dac o problem este tratabil sau intratabil
la nivelul actual al tehnologiei.
Clasa P de complexitate
Un algoritm este mrginit polinomial cnd complexitatea n cazul cel mai
defavorabil este mrginit de o funcie polinomial p care depinde dimensiunea
setului de intrare n . Funcia polinomial are forma ( )

=
=
m
i
i
i
n a n p
0
, unde m poate fi
orict de mare dar este finit.
O problem este mrginit polinomial dac poate fi rezolvat printr-un
algoritm mrginit polinomial.
P este o clas de probleme decizionale care sunt mrginite polinomial
Se spune despre probleme de clas P c sunt rezolvabile polinomial.
Trebuie remarcat c nu este obligatoriu ca o problem de clas P s poat
avea un algoritm de complexitate acceptabil. Totui, dac o problem nu este de
clas P este inerent intratabil.
Clasa NP de complexitate
NP este o clas de probleme decizionale a cror algoritm aparine clasei Pdar
pentru care o soluie propus dat pentru un set particular de date de intrare poate fi
verificat ntr-un timp mrginit polinomial.
O problem este non-deterministic polinomial de clas NP dac:
Se determin n mod nedeterministic o soluie;
Corectitudinea soluiei candidat se poate verifica ntr-un timp mrginit
polinomial.
Rezolvarea acestei clase de probleme are deci dou faze. Prima este euristic,
de ghicire a unei soluii. Soluia nu este obligatoriu unic. De aceea dou rezolvri
succesive sau paralele pot s fie diferite. A doua faz este deterministic, rezultatul
su fiind totdeauna acelai, rezolvnd problema prin soluia propus.
Baze de date i algoritmi pentru ci de comunicaie
125
Se spune despre probleme de clas NP c sunt verificabile polinomial. De
asemenea se consider c problemele de clas NP sunt probleme ce pot fi rezolvate
intr-un timp mrginit polinomial pe o main de calcul nedeterminist.
Este foarte dificil uneori de gsit o soluie pentru problemele de clas NP.
Pentru multe tipuri de astfel de probleme din aceast clas se presupune c nu exist
un algoritm mrginit polinomial care s le rezolve. Totui datorit complexitii lor nu
s-a putut dovedi.
Clasa de probleme NP-complete
O problem decizional este de clas NP-complet dac aparine clasei NP i
fiecare problem din NP poate fi rapid redus la aceasta.
Putem spune c problemele NP-complete reprezint cele mai grele probleme
din clasa NP. Dac reuim s gsim un algoritm mrginit polinomial pentru a rezolva
o problem NP-complet atunci putem s rezolvm toate problemele NP ntr-un timp
mrginit polinomial.
7.5. TEHNICI DE PROIECTARE A ALGORITMILOR
n rezolvarea de probleme utiliznd algoritmi de calcul se pot utiliza mai
multe metode de abordare. ntre acestea amintim:
Reducerea la probleme cunoscute;
Abordarea egoist sau lacom (greedy approach)
Divide i cucerete;
Programare dinamic;
Utilizarea de structuri de date mai bune;
Soluii probabilistice;
Soluii aproximative;
REDUCEREA LA PROBLEME CUNOSCUTE
Aceast tehnic de abordare presupune cunoaterea i aplicarea de soluii
simple rezolvarea problemelor. Problemele mai complexe se pot descompune n sub-
probleme sau se pot transforma n aa fel nct s corespund unei probleme simple.
Exemplul 1.
S se determine ntr-un tablou toate numerele care se repet.
Rezolvarea 1.
Se compar secvenial fiecare numr cu toate celelalte. Complexitatea n
acest caz este O(n
2
).

Capitolul 7 Algoritmi n managementul infrastructurii
126
Rezolvarea 2.
Se sorteaz tabloul i apoi se determin dac numerele vecine au aceeai
valoare. Complexitatea este O(n log n) cnd se utilizeaz un algoritm de sortare
corespunztor.
Exemplul 2.
S se determine dac oricare trei puncte dintr-un plan sunt situate pe aceeai
dreapt.
Rezolvarea 1.
Se vor ncerca grupurile distincte de cte 3 puncte. Complexitatea n acest caz
este O(n
3
).
Rezolvarea 2.
Se utilizeaz exemplul 1 de mai sus. Complexitatea este O(n
2
log n). Se
calculeaz panta dreptelor generate de fiecare dou puncte din mulime, se ordoneaz
tripletele (punct, pant, punct) dup pant i pentru fiecare dou triplete consecutive
cu pant egal se verific dac au un punct comun.
ABORDAREA EGOIST
Abordarea egoist sau lacom (greedy approach) presupune utilizarea unei
anumite metode pn la epuizare i apoi, pentru restul problemei, utilizarea pn la
epuizare a unei noi metode.

Principiile care stau la baza metodei sunt:
se alege totdeauna soluia care pare cea mai bun la un moment dat, i
alegerea optimului local poate conduce la o soluie global optim.
Exemplul clasic se refer la eliberarea unei sume de bani (la bancomat) n
bancnote de diferite valori. Se elibereaz bancnote de valoarea cea mai mare pn
cnd acest lucru nu mai este posibil, apoi se trece la valoarea imediat urmtoare pn
cnd suma se completeaz.
DIVIDE I CUCERETE
Metoda divide i cucerete este o metod eficient care se bazeaz pe cteva
principii foarte simple. Cnd o problem este prea complex, ea va fi mprit n sub-
probleme de ntindere mai mic, se rezolv recursiv fiecare sub-problem i se
combin rezultatele. Este o abordare utilizat adesea n problemele care implic
operaii cu matrice.
Baze de date i algoritmi pentru ci de comunicaie
127
Proc Resolve ( P: Problem; R:Result )
Declare P1, P2: Problem
Declare R1, R2: Result
If Dimension(P)<=1
Then
R:= Direct_result // rezultat direct
Endif
Divide P in P1 and P2
Resolve ( P1, R1 )
Resolve ( P2, R2 )
Combine ( R1, R2, R )
EndProc

Fig. 46 Rezolvarea recursiv a problemelor de tip divide i cucerete
Aceast abordare este eficient mai ales dac mprirea se face de fiecare
dat n dou pri egale. Dificultatea n tipul acesta de algoritmi este de a afla cea mai
bun cale de a DIVIDE n sub-probleme i de a face rezultatele s se COMBINE. Nu
ntotdeauna cea mai uoar metod de divizare permite adoptarea unei proceduri
acceptabile de combinare a soluiilor pariale ntr-o soluie global.
Exemplu
Problema Max-Min. S se gseasc simultan maximul i minimul unei liste
de n numere.
Soluia banal: se gsete maximul apoi se gsete minimul i se ntoarce ca
rezultat cuplul astfel obinut.
Divide i cucerete: Pn cnd rmn doar dou elemente, se mparte lista n
dou sub-liste, i se obine minimul i maximul din sub-liste prin apel recursiv.
Func MaxMin( A, p, r)
// gsete max i min n A[p,r]
If p = r Then Return (A[p], A[p])
If p = r-1
Then
If A[p] A[r]
Then Return (A[r], A[p])
Else Return (A[p], A[r])
EndIf
EndIf
q (p+r)/2 // mprire n numere ntregi
(M1,m1) MaxMin( A, p, q)
(M2,m2) MaxMin( A, q+1, r)
Return(max( M1, M2), min( m1, m2))
EndFunc

Fig. 47 Algoritmul Max-Min rezolvat prin metoda divide i cucerete
Capitolul 7 Algoritmi n managementul infrastructurii
128
PROGRAMARE DINAMIC
Programarea dinamic este o metod de rezolvare ce se aplic n cazurile n
care se caut soluii optimale ale problemelor pornind de la soluiile optimale ale sub-
problemelor n care acestea au fost mprite. De asemenea se aplic pentru cazurile
de suprapunere a sub-problemelor: sub-problemele i mpart sub-sub-probleme.
Ca principii de baz, acest tip de rezolvare mparte problema general n
probleme punctuale ce pot fi mai uor tratate, combin soluiile sub-problemelor i
evit rezolvarea sub-problemelor mai mult de o dat prin pstrarea soluiilor anterior
obinute.
Se aseamn cu metoda divizrii i cuceririi prin mprirea problemei i
rezolvarea recursiv dar soluia se obine pornind de la rezolvarea unei sub-probleme
mici i creterea ariei de aplicare (bottom-up) i nu pornind de la problema n
ansamblu i apoi particulariznd (top-down). Metoda divide i cucerete nu este
bun pentru probleme n care soluia general de dimensiunea n se bazeaz pe n sub-
soluii de dimensiunea n-1 i nici pentru probleme cu sub-probleme care se suprapun.
Exemple de domenii n care programarea dinamic se preteaz sunt
nmulirea unui lan de matrice, aflarea celei mai lungi secvene comune a dou ci
ntr-o reea etc.
Exemplu
nmulirea eficient unui lan de matrice considerm:
1 1 0
=
n
A A A A L .
Fiecare matrice
i
A are dimensiunile
1 +

i i
l l unde n i < 0 . Costul calculrii
produsului
1 +

i i
A A este
2 1 + +

i i i
l l l operaii. Ordinea n care se efectueaz
nmulierea matricelor ntr-un lan va duce la valori diferite de operaii. Astfel,
considernd
0
A ,
1
A ,
2
A de dimensiuni 5 50 , 100 5 , 10 100 numrul de operaii
este:
( )
2 1 0
A A A : 75000 10 100 50 100 5 50 = + ;
( )
2 1 0
A A A : 7500 10 5 50 10 100 5 = + .
Se observ c prin simpla rearanjare a ordinii de efectuare a operaiilor se pot
realiza economii importante la timpul de calcul.
7.6. BIBLIOGRAFIE
[108] Ahuja RK, Magnanti TL, Orlin JB: Network flows: Theory, algorithms, and
applications; Prentice Hall, Englewood Cliffs, NJ, 1993.
[109] Brassard Bratley: Algorithmique, conception et analyse; Masson 1987.
Baze de date i algoritmi pentru ci de comunicaie
129
[110] Brookshear J. Glenn: Computer Science - An Overview (sixth edition); (11.5
Complexity of Problems); Addison-Wesley, 2000.
[111] Cormen Thomas H., Leiserson Charles E., Rivest Ronald L.: Introduction
l'algorithmique; Dunod, Paris 1996.
[112] Cormen Thomas H., Leiserson Charles E., Rivest Ronald L.: Introduction to
Algorithms, McGraw-Hill, New York 1990.
[113] Cormen T. H.; C. E. Leiserson; R.L. Rivest: Introduction to Algorithms; The MIT
Press, Cambridge, Massachusetts, 1990. 5.
[114] Dewdney A.D.: The New Turing Omnibus; (Cap. 15: Time and Space Complexity);
Computer Science Press, 1997.
[115] Edelsbrunner Herbert: Algorithms in combinatorial geometry; Springer 1985.
[116] Fox BL: Data structures and computer science techniques in operations research;
Operations Research, Vol.26, Nr.5, Operations Research Society of America,
September-October 1978.
[117] Gibbons Alan: Algorithmic graph theory; Cambridge University Press 1985.
[118] Aho Alfred V., Hopcroft John E., Ullman Jeffrey D.: Data structures and algorithms;
Addison-Wesley 1983.
[119] Horowitz Ellis, Sahni Sartaj, Anderson Freed S.: L'essentiel des structures de donnes
en C; Dunod, Paris 1993.
[120] Knuth Donald. E.: The art of computer programming; 3 volumes, Addison-Wesley
1969.
[121] Mehlhorn Kurt: Data structures and algorithms, Volume I: Sorting and Searching;
Springer 1984.
[122] Mehlhorn Kurt: Data structures and algorithms, Volume II: Graph Algorithms and
NP-Completness; Springer 1984.
[123] Mehlhorn Kurt: Data structures and algorithms, Volume III: Multidimensional
Searching and Computational Geometry; Springer 1984.
[124] Preparata F. P., Shamos M. I.: Computational Geometry; Springer 1985.
[125] Reingold E.M., Nievergelt J., Deo N.: Combinatorial algorithms, theory and practice;
Prentice Hall 1977.
[126] Standish Thomas A.: Data Structures, Algorithms & Software Principles in C;(Cap. 6:
Introduction to Analysis of Algorithms) Addison-Wesley, 1995.
[127] Weiss Mark Allen: Data Structures and Algorithm Analysis in C++; The Benjamin
Cummings Publishing Company 1994.
[128] Wilf Herbert S.: Algorithms and Complexity; Internet Edition, Summer, 1994.
Scnteie Rodian Baze de date i algoritmi pentru ci de comunicaie
ISBN 973-86343-3-4 Editura Societii Academice Matei-Teiu Botez
Iai 2003
130
SORTAREA I CUTAREA
8.1. SORTARE
Necesitatea sortrii apare n rezolvarea multor probleme, fie ca cerin de sine
stttoare fie ca o facilitate auxiliar. n orice problem care manipuleaz un volum
mare de date, sunt necesare mecanisme pentru regsire a structurilor de date dorite.
Funcionarea unor astfel de mecanisme poate fi mai rapid dac datele sunt stocate
ntr-o ordine prestabilit bazat pe criterii de ordonare.
Principial, sortarea este un proces n care se introduce ca intrare o secven
n
a a a A , , ,
2 1
K = i ca ieire se obine o secven
n
b b b B , , ,
2 1
K = care este o
permutare a lui A cu proprietatea c
n
b b b K
2 1
sau
n
b b b K
2 1
. Exist
nenumrate modele de sortare fiecare cu diverse variante, toate dezvoltate pe msur
ce teoria general a algoritmilor a evoluat.
Pentru aranjarea datelor se poate utiliza un criteriu sau mai multe, procesele
multicriteriale fiind bazate pe procedee dezvoltate din mecanismele de sortare dup o
singur regul.
n cele ce urmeaz vom considera, pentru simplitate, c se utilizeaz un
singur criteriu de sortare, lucru ce este mai uor de neles i urmrit.
SORTAREA CU BULE
Este o metod recunoscut ca nceat, dar este deosebit de simpl. Sortarea cu
bule este una dintre metodele naturale, uor de neles. Un exemplu este prezentat n
figura urmtoare.
Baze de date i algoritmi pentru ci de comunicaie
131

4
3
2
1
3
4
2
1
3
2
4
1
3
2
1
4
3
2
1
4
2
3
1
4
2
1
3
4
2
1
3
4
1
2
3
4
a)
b)
c)

Fig. 48 Exemplu de sortare cu bule
Acest tip de sortare const n parcurgerea vectorului n care sunt stocate
datele i compararea valorilor adiacente.
n cazul n care se constat c valorile sunt aranjate greit se face schimbarea
elementelor ntre ele. Operaiile se reiau din vrful vectorul pn cnd ordonarea este
complet.
Considernd tabloul [ ] N A L 1 care conine valorile numerice ce trebuie
ordonate ascendent se efectueaz urmtoarele operaii:
1. Repet
2. Parcurge A comparnd valorile adiacente A[i], A[i+1]
3. Dac A[i] > A[i+1] atunci permut A[i] and A[i+1]
4. Pn cnd nu mai exist ce permuta

Fig. 49 Algoritmul conceptual pentru sortarea cu bule
La fiecare ciclu valorile cele mai mari apar la suprafa precum bulele de
aer din ap, astfel nct sfritul tabloului este sortat (la fiecare ciclu o poziie), iar
valorile mai mici sunt deplasate n jos la fiecare ciclu o poziie. Costul unui astfel de
algoritm este O(n
2
).
Exist mai multe versiuni de implementare, una dintre ele este prezentat n
figura urmtoare:
Capitolul 8 Sortare i cutare
132
For i Dim(A) to 2
For j 1 to i-1
If A[i] > A[i+1]
A[i] A[i+1]
EndIf
EndFor

Fig. 50 Algoritmul complet pentru sortarea cu bule
SORTAREA CU INSERARE
Sortarea cu inserare este una dintre cele mai simple metode. A fost imaginat
din observarea comportamentului juctorilor de cri care o aplic instinctiv. Pentru
acest tip de sortare se scoate un element i se deplaseaz cele rmase. Se insereaz
elementul extras n poziia corect. Aceste operaii continu pn cnd procesul este
complet. Att cazul mediu ct i cazul cel mai defavorabil O(n
2
) (Knuth 1998 [131]).
Evident pentru vrful vectorului nu avem ce verificare s facem de aceea se
pornete poziia a doua. Elementele de deasupra sunt deplasate n jos pn cnd se
gsete poziia corect pentru elementul extras. Se continu cu elementul urmtor
(poziia a treia). Procesul continu prin inserarea fiecrui element la poziia corect.

4
3
1
2
4

1
2

4
1
2
3
4
1
2
3
4
1
2
3
4

2

3
4
2
1
3
4
2
1
3
4
2
1
3
4

1

3
4
1
2
3
4
a)
b)
c)

Fig. 51 Exemplu de sortare cu inserare
Dac avem un vectorul cu dimensiunea n, utiliznd sortarea cu inserare
trebuie s parcurgem un numr de n-1 elemente. Pentru fiecare, trebuie s examinm
i s deplasm pn la n-1 alte elemente. Rezult o complexitate a algoritmului de
O(n
2
).
Baze de date i algoritmi pentru ci de comunicaie
133
Avantajul acestui tip de sortare este c este un algoritm stabil i nu necesit
memorie suplimentar.
Parcurge vectorul element cu element
Pentru fiecare element
Insereaz elemental n poziia corect
n vectorul cu elemente deja sortate
Pn cnd ultimul element este introdus n poziia corect

Fig. 52 Algoritmul conceptual al sortrii cu inserare
Proc Insert-Sort( A)
For i 2 to Dim(A)
Tmp A[i]
j i-1
While j > 0 and A[j] > tmp
A[j+1] A[j]
j j-1
EndWhile
A[j+1] tmp
EndFor

Fig. 53 Algoritmul complet al sortri cu inserare
SORTAREA CU SELECIE
Este un algoritm elementar de sortare. Mecanismul su de lucru const n
gsirea celui mai mic element din vector i aducerea sa pe prima poziie.

4
3
1
2
4
3
1
2
4
3
1
2
1
3
4
2
1
3
4
2
1
3
4
2
1
3
4
2
1
2
4
3
1
2
4
3
1
2
4
3
1
2
4
3
1
2
3
4
a)
b)
c)

Fig. 54 Exemplu de sortare cu selecie
Capitolul 8 Sortare i cutare
134
Algoritmul conceptual al sortrii cu selecie este prezentat n figura
urmtoare:
Parcurge vectorul element cu element
Pentru vectorul neordonat
Gsete minimul
Aduce minimul pe prima poziie
Pn cnd vectorul este complet ordonat

Fig. 55 Algoritmul conceptual al sortrii cu selecie
Pornind de algoritmul conceptual se poate scrie algoritmul complet pentru
sortarea cu selecie.
Proc Select-Sort( A )

For i 1 To Dim(A)-1
Min i
For j i+1 to N
If A[Min] > A[j]
Then
min j
EndIf
EndFor
A[Min] A[i]
EndFor

EndProc

Fig. 56 Algoritmul complet al sortrii cu selecie
Presupunnd c vectorul de intrare are dimensiunea n, complexitatea
algoritmului este O(n
2
).
SORTAREA SHELL
Acest tip de sortare a fost dezvoltat de Donald L. Shell. Acest algoritm
ncearc mbuntirea eficienei sortrii cu inserare prin deplasarea rapid a valorilor
ctre destinaia lor. Acest algoritm are complexitate O(n
7/6
) n medie i O(n
4/3
) n
cazul cel mai defavorabil (Knuth 1998 [131]).
Aceasta este prima ncercare de algoritm de sortare care a reuit s coboare
sub complexitatea O(n
2
). Scopul este de compara i dac este necesar s schimbe
poziia pentru elementele care sunt mai deprtate n tablou.
Considerm exemplul din figura urmtoare:
Baze de date i algoritmi pentru ci de comunicaie
135

a)
b)
3
5
1
2
4
1
3
5
2
4
1
2
3
5
4
2d 2d
1
2
3
4
5
1d
3
5
1
2
4
1
5
3
2
4
1
2
3
5
4
1d 1d
1
2
3
4
5
1d

Fig. 57 Comparaie ntre sortarea cu inserie i sortarea Shell
De fiecare dat cnd se schimb ntre ele dou elemente aflate la distana k se
elimin un numr de k inversiuni. Aceasta permite nlocuirea a mai mult de o
inversiune pe fiecare pas. Ideea este de a efectua sortarea cu inserare numai peste
anumite elemente din tablou. Aceste elemente trebuie s fie alese ct mai deprtate
unul de altul. n acest moment se vorbete de valoarea de incrementare. Pentru o
valoare particular a incrementului, de exemplu h, toate elementele situate la distana
h se sorteaz utiliznd algoritmul cu inserare. Aceasta conduce la cteva sub-tablouri.
Dup fiecare sortare [ ] [ ] h i A i A + pentru toate valorile i.
Sortarea utilizeaz o serie de valori de incrementare care continu att timp
ct incrementul este mai mare sau egal cu 1. Dac secvena de incrementare este
aleas corespunztor viteza este deosebit de mare.
n cadrul metodei sortrii cu inserie (a) mai nti extragem 1 i deplasm
valorile 3 i 5 cu o poziie (n total dou deplasri). n urmtoarea trecere sunt cerute
tot dou deplasri pentru a insera 2. n ultima evaluare se efectueaz o singur
deplasare. n total se fac 5 deplasri.
Simultan se prezint i sortarea Shell (b). ncepem cu o distan de 2.
Comparm numerele 3 i 1. Se extrage 1 i se deplaseaz n sub-ir cu o poziie n jos.
Urmtoarea comparare este ntre 5 i 2. Se extrage 2 i se deplaseaz 5 cu o poziie
mai jos, insernd 2. dup ncheierea sortrii cu intervalul 2 se trece la incrementul 1.
n total vor fi 3 deplasri. Deci mai puin dect sortarea cu inserare clasic.
Capitolul 8 Sortare i cutare
136
Proc Shell_Sort( A, n)

Declare incr, I, j integer
Declare t

Incr n/2
While incr n
I incr+1
While i n
t A[i]
j i
While j > incr
If t<A[j-incr]
Then A[j] A[j-incr]
Else ExitWhile
EndIf
j j - incr
EndWhile
A[j] t
i i + 1
EndWhile
incr incr/2
EndWhile
EndProc

Fig. 58 Algoritmul de sortare Shell
Secvena aceasta de 1 , ,
4
,
2
K
n n
nu este cea mai rapid soluie. Funcie de
dimensiunea vectorului de intrare, se pot gsi secvene de valori de incrementare care
aduc viteza maxim.
SORTAREA RAPID (QUICKSORT)
Dei sortarea Shell este semnificativ mai bun dect sortarea cu inserare se
mai pot face mbuntiri. Una dintre metodele populare este sortarea rapid.
Sortarea rapid este un exemplu clasic de algoritm de tipul divide i
cucerete.
Algoritmul de sortare funcioneaz prin partiionarea tabelului ce urmeaz a fi
sortat i apoi prin apelarea recursiv a sortrii rapide. n procedura de partiionare se
alege drept pivot unul dintre elementele tabelului. Toate valorile mai mici sunt
deplasate n stnga i toate elementele mai mari n dreapta.
n medie, complexitatea este ( ) n n O ln .
Acest are forma:
Baze de date i algoritmi pentru ci de comunicaie
137
Proc QuickSort (A:List; Lb, Ub: Integer)
if Lb < Ub
then
M = Partition ( A, Lb, Ub )
QuickSort ( A, Lb, M 1 )
QuickSort ( A, M, Ub )
EndIf
EndProc

Fig. 59 Algoritmul de sortare rapid
Important este modul n care se realizeaz mprirea listei n dou sub liste.
Pentru funcia care realizeaz acest lucru Partition exist mai multe formate. Unul
dintre modurile de realizare este prezentat conceptual n figura mai jos.
Funcia Partajare

Selecteaz un pivot din A[Lb]... A[Ub]
Reodoneaz A[Lb]A[Ub] aa fel nct
toate valorile din stnga pivotului sunt pivot
toate valorile din dreapta pivotului sunt pivot
Returneaz poziia pivotului;

Fig. 60 Algoritmul conceptual pentru funcia de partajare
Pornind de la conceptul prezentat mai sus se poate concepe un exemplu de
algoritm complet pe care n prezentm n figura urmtoare.
Funct Partition (A:List;
Lb, Ub: integer):integer
x A[Ub]
i Lb 1
For j Lb To Ub-1
If A[j]x Then
i i+1
A[i] A[j]
EndIf
EndFor
A[i+1] A[Ub]
EndFunct

Fig. 61 Algoritm complet pentru funcia Partition
n algoritmul de mai sus semnul are semnificaia de permutare, de
schimbare ntre ele a valorilor celor dou variabile.
Un exemplu de sortare rapid este prezentat schematic n figura de mai jos:
Capitolul 8 Sortare i cutare
138

4 2 3 5 1
pivot
Lb Ub
1 2 3 5 4
M
1 2 3 4 5

Fig. 62 Exemplu de sortare rapid
Dezavantajele acestei metode sunt date de utilizarea de memorie suplimentar
i complexitatea n cazul cel mai defavorabil ( ( )
2
n O ). Totui cazul cel mai
defavorabil este puin probabil s se manifeste (Cormen 1990 [129]).
SORTAREA CU COMBINARE (MERGE SORT)
Acest tip de sortare se bazeaz pe mprirea vectorului de intrare n dou
pri egale. Cele dou pri se trateaz recursiv prin sortare cu combinare dup care se
combin rezultatul sortrii.
Proc MergeSort( E: List; first, last: integer )
Declare m Integer
If (first < last)
Then
m (first+last)/2
MergeSort( E, first, m )
MergeSort( E, m+1, last )
Merge( E, first, m, last )
EndIf
EndProc

Fig. 63 Algoritmul de sortare cu combinare
Important este partea combinare efectuat de procedura merge() care este
apelat de procedura prezentat mai sus. Combinarea a dou liste sortate de cte n/2
elemente necesit n-1 comparri n cel mai defavorabil caz. Acest lucru se face
pornind de la nceputul fiecrei liste i eliminnd n fiecare iteraie cel mic element
care se adaug la lista final.
Considernd L1 i L2 liste de intrare i L lista de ieire, algoritmul conceptual
este prezentat n figura urmtoare.
Baze de date i algoritmi pentru ci de comunicaie
139
Procedura Combinare (L1, L2, L:Lista)
// L1, L2 sunt liste de intrare
// L Lista de ieire

Ct timp L1 nu este vid i L2 nu este vid
Dac primul element din L1 Dac primul element din L2
Atunci
extrage primul element din L1 i l introduce n L
Altfel
extrage primul element din L2 i l introduce n L

Ct timp L1 nu este vid
Extrage primul element din L1 i l introduce n L
Ct timp L2 nu este vid
Extrage primul element din L2 i l introduce n L

Fig. 64 Algoritmul de combinare pentru sortarea cu combinare

24 32 36 29 15 10 23
24 32 36 29 15 10 23
24 32 36 29 15 10 23
24 32 29 36 10 15 23
24 29 32 36 10 15 23
10 15 23 24 29 32 36

Fig. 65 Exemplu de sortare cu combinare
SORTAREA CU NUMRARE (COUNTING SORT)
Se presupune c toate cele n element sunt ntregi i cuprinse n intervalul de
la 0 la k.
Pentru fiecare element de intrare se numr elementele mai mici. n final se
plaseaz elementul chiar n poziia corect.
Capitolul 8 Sortare i cutare
140
Dac vom considera lista de intrare ca fiind X i lista de ieire Y (nu se face
sortarea direct n lista de intrare i este nevoie de spaiu suplimentar), atunci
algoritmul are urmtoarea form:
Proc counting_sort( x,y:List,n,k:Integer)
Declare z:List // zon de lucru temporar

For i0 to k-1 z[i] 0
For j0 to n-1 z[x[j]] z[x[j]]+1
// z[i] conine numrul de elemente egale cu i
For i1 to k-1 z[i] z[i] + z[i-1]
// z[i] conine numrul de elemente i
For jn-1 to 0
y[z[x[j]]] x[j]; z[x[j]] z[x[j]]-1;
EndFor
EndProc

Fig. 66 Algoritmul pentru sortarea cu numrare
Complexitatea algoritmului de sortare cu numrare este ( ) n O .
SORTAREA RADIX
Acest tip de sortare lucreaz cel mai bine cu valori ntregi i presupune
ordonarea valorilor funcie de cifra cea mai puin semnificativ, apoi funcie de
urmtoarea i tot aa pn cnd se ajunge la cifra cea mai semnificativ.

967
952
369
352
167
159
952
352
967
167
369
159
952
352
159
967
167
369
159
167
352
369
952
967

Fig. 67 Exemplu de sortare radix
Sortarea radix se bazeaz pe baza de numeraie (sau rdcina radix) a
reprezentrii numerelor. Problema este dat de faptul c utilizeaz memorie
suplimentar dar acest supliment este sczut dac se lucreaz cu structuri dinamice.
Cheia este utilizarea unei tabele de dispersie cu dimensiunea 10 (pentru baza
de numeraie 10).
Complexitatea este de tipul ( ) n O numrul exact de iteraii depinznd de
numrul maxim de cifre pe care l au valorile ce se sorteaz.
Baze de date i algoritmi pentru ci de comunicaie
141
SORTAREA CU GRMEZI (BUCKET SORT)
Se presupune c cele n valori de sortat sunt situate ntr-un interval oarecare.
Se mparte intervalul n M sub-intervale egale. Se creeaz M grmezi fiecare
corespunznd respectiv cte unui sub-interval. Se consider pe rnd valorile de sortat
i se introduc n grmada corespunztoare. Se ordoneaz fiecare grmad prin
sortarea cu inserare.
n final se concateneaz n ordine grmezile pentru a obine rezultatul dorit.
Considernd un ir de m valori [ ] i A cu proprietatea c [ ] 1 0 < i A i c s-au
creat n grmezi [ ] j G unde 1 ,..., 0 = n j un model algoritm de sortare cu grmezi
poate fi cel din exemplul urmtor:
Funct BucketSort (A:List)
Pentru I 1 la m
Insereaza A[i] in G[j] unde
este parte ntreag din n*A[i]
Pentru j 0 la n-1 Sortare G[j]
Concatenare G[0]...G[n-1]
EndFunct

Fig. 68 Algoritm pentru sortarea cu grmezi
n medie complexitatea este ( ) n O .
8.2. CUTAREA
CUTAREA DATELOR NEORDONATE
Pentru date neordonate nu prezint un interes special. Ea se rezum, pur i
simplu, la parcurgerea secvenial a listei pn cnd se ntlnete valoarea cutat.

3
10
20
25
29
40
41
55
Lb






Ub
1
2
3
4
5
6
7
8

Fig. 69 Exemplu de list
Presupunnd c datele se afl stocate ntr-un vector nesortat de dimensiune 8
numrul maxim de comparaii pe care le poate face cutarea secvenial este 8, deci
Capitolul 8 Sortare i cutare
142
complexitatea este ( ) n O n cel mai defavorabil caz. Fcnd prezumia unei distribuii
perfect aleatoare n medie numrul de pai va fi n deci complexitatea este tot ( ) n O .
n continuare prezentm algoritmul pentru cutare secvenial.
Funct SequentialSearch ( A: array;
Lb, Ub: integer;
key: Integer): integer;
For I Lu to Ub do
If A[i] = Key then
Return i
EndIf
EndFor
Return -1
EndFunct

Fig. 70 Algoritmul pentru cutarea secvenial
Evident cutarea secvenial este ineficient i este dovada faptului c datele
nu trebuie pstrate niciodat fr s fie ordonate.
CAUTARE BINAR
Dac exist certitudinea c valorile au fost ordonate se poate utiliza cutarea
binar. Acest tip de cutare implic alegerea elementului median i mprirea restului
de elemente n dou: submulimea celor mai mici i submulimea celor mai mari.
Dac valoarea cutat este egal cu elementul median considerat ca pivot cutarea s-a
ncheiat. Dac valoarea este mai mic respectiv mai mare atunci limitele mulimii de
cutare se ajusteaz la limitele submulimii corespunztoare. Operaia se reia pn
cnd se gsete valoarea sau mulimea elementelor rmase este vid.
Funct BinarySearch ( A: array;
Lb, Ub: integer;
key: Integer): integer
Repeat
M (Lb*Ub)/2
If key<A[M] then Ub M-1
Else If key>A[M] then Lb M+1
Else
Return M
EndIf
Until Lb > Ub
Return -1
EndFunct

Fig. 71 Algoritmul pentru cutarea binar (varianta iterativ)
Baze de date i algoritmi pentru ci de comunicaie
143
Algoritmul poate fi prezentat n forma iterativ ca n figura de mai sus sau n
forma recursiv prezentat n figura urmtoare.
Funct BinarySearchR ( A: array; Lb, Ub: integer;
key: Integer): integer
If Lb > Ub Then
Return -1
EndIf
M (Lb*Ub)/2
If key<A[M] then Return BinarySearchR (A,Lb,M-1,Key)
Else If key>A[M] then Return BinarySearchR (A,M+1,Ub,Key)
Else Return M
EndIf
EndFunct

Fig. 72 Algoritmul pentru cutarea binar (varianta recursiv)
8.3. BIBLIOGRAFIE
[129] Cormen Thomas H., Leiserson Charles E., Rivest Ronald L.: Introduction to
Algorithms, McGraw-Hill, New York 1990.
[130] Knuth Donald. E.: The Art of Computer Programming, Volume 1, Fundamental
Algorithms. Addison-Wesley, Reading, Massachusetts 1968
[131] Knuth Donald. E.: The Art of Computer Programming, Volume 3, Sorting and
Searching. Addison-Wesley, Reading, Massachusetts 1973, 1998.
[132] Niemann Thomas: A Compact Guide to Sorting and Searching; ePaper Press. 2003.
[133] Sedgewick R.: Algorithms; Addison-Wesley, Reading, Massachusetts, 1983, 2nd ed.
1988.
[134] Sedgewick, R.: Communications of the ACM, vol. 21, pp.847857, 1978.
Scnteie Rodian Baze de date i algoritmi pentru ci de comunicaie
ISBN 973-86343-3-4 Editura Societii Academice Matei-Teiu Botez
Iai 2003
144
GRAFURI I PROBLEME PE GRAF
9.1. ELEMENTE DE TEORIA GRAFURILOR
Istoric vorbind, teoria grafurilor ncepe n 1736 cnd Euler prezint o teorie
general n care include i rezolvarea problemei podurilor din Knigsberg. Ulterior
aceast teorie s-a dezvoltat din considerente practice. Nevoia de a stabili metode de
minimizare a costurilor mijloacelor de transport, de comunicaie, de aflare a drumului
critic (acestea fiind doar cteva exemple) au impus implicarea teoreticienilor.
DEFINIII
Graful este un obiect matematic care este format din tripletul ( ) f A N , , unde
N este un set de puncte (vrfuri sau noduri) i A este un set de muchii (laturi sau arce),
iar f este o funcie de conexiune N N A f a : . Funcia f stabilete corespondena
dintre fiecare arc punctele sale terminale din care cauz mai este numit funcia arc
terminaii (edge-endpoint function). A este un sub-multiset din N N , aceasta
deoarece pot exista mai multe arce care s conecteze o pereche dat de noduri. n
general, funcia f se consider implicit i graful se noteaz ( ) A N G , = .
Numrul de noduri ale unui graf, notat G , reprezint ordinul grafului.
Numrul de muchii se noteaz G . Funcie de ordinul su, un graf poate fi finit sau
infinit. Dac ntr-o problem nu se specific altfel atunci se consider c graful este
finit. Graful de ordinul 0 se numete graf vid. Graful de ordinul 0 sau 1 se numete
graf trivial.
Baze de date i algoritmi pentru ci de comunicaie
145
Conexiunile descrise prin setul de arce A pot fi orientate sau neorientate.
Un graf (sau graf neorientat sau graf nedirecionat sau graf ordinar) G
const ntr-un set N de noduri i un set A de arce dispuse n aa fel nct fiecrui arc
A a i se asociaz o pereche neordonat de noduri p i q unde N p i N q .
Dac exist un arc unic a asociat cu nodurile p i q vom scrie ( ) q p a , = sau
( ) p q a , = . n practic se ntlnesc adesea grafurile neorientate cum ar fi reeaua de
drumuri judeene.
Un graf direcionat (sau graf orientat sau digraf) G const ntr-un set de set
N de noduri i un set A de arce dispuse n aa fel nct fiecrui arc A a i se asociaz
o pereche ordonat de noduri p i q unde N p i N q . Dac pentru un arc a
asociat cu nodurile p i q vom scrie ( ) q p a , = rezult c arcul are direcia de la p la q.
Pentru ( ) p q a , = arcul a are direcia de la q la p.
Un exemplu de graf orientat este alimentarea cu ap ntr-un ora, unde apa
poate circula numai de la furnizor spre consumatori niciodat invers. De la
consumatori se adun reziduurile prin reeaua de canalizare, un alt exemplu de graf
direcionat (cel puin n teorie).
Deoarece setul A al arcelor este descris prin perechile corespunztoare de
noduri terminale, n practic, notaia general pentru un graf G (direcionat sau
nedirecionat) care este alctuit din setul de arce A pe setul de noduri N este
( ) A N G , = . De cele mai multe ori funcia f este omis n reprezentare i este tratat
implicit, ea fiind o simpl relaie. De asemenea, se consider implicit c A este o
mulime finit, iar N este diferit de mulimea vid.
Dou noduri p i q unite de un arc a sunt noduri adiacente sau vecine. Dac
toate nodurile sunt adiacente ntre ele atunci graful este complet.
Un arc a, care unete o pereche de noduri p i q este incident pe p i q.
Despre p i q se spune c sunt incidente la arcul a. Nodurile p i q sunt capetele
muchiei a.
Din definiiile anterioare nu rezult necesitatea ca p i q care descriu arcul
( ) q p a , = s fie distincte. Avem deci posibilitatea ca un nod s fie conectat la el
nsui printr-un arc. O astfel de construcie ( ) p p a , = se numete bucl.
De asemenea, nu este obligatoriu ca arcul, orientat sau neorientat, care
conecteaz dou noduri s fie unic. Dac exist mai multe arce similare care
conecteaz aceleai noduri se spune c sunt arce paralele.
Dac un graf nu are bucle i nici arce paralele se numete simplu. Aici trebuie
notat c arcele orientate ce conecteaz aceleai dou noduri dar n sens invers nu sunt
considerate paralele.
Capitolul 9 Grafuri i probleme pe graf
146
Prin definiie:
( ) A A N N G G = , : i
( ) A A N N G G = , : .
Dac = G G atunci G i G sunt disjuncte.
Dac N N i A A atunci G este un sub-graf al lui G (sau G este un
super-graf al lui G ).
Dac G G i G conine toate muchiile A pq cu N q p , atunci G
este un sub-graf indus al lui G . Se spune c N induce sau acoper G pe G
( [ ] N G G = : ). Astfel, dac N M este un set de noduri, atunci [ ] M G reprezint
graful pe M ale crui muchii sunt acele muchii din G cu ambele capete n M .
Graful G G este un sub-graf acoperitor al lui G dac N acoper tot G
( N N = ).
Graful ponderat este acel graf pentru a cror elemente se ataeaz valori de
pondere. Aceste valori pot fi ataate fie la muchii fie la noduri. Pentru muchii se pot
ataa viteze, timpi de ntrziere, fluxuri etc. Pentru noduri se pot ataa de exemplu
datele despre populaia pentru orae.
GRADUL UNUI NOD
Considerm ( ) A N G , = un graf nevid. Mulimea vecinilor unui nod N p
este notat cu ( ) p V
G
sau pe scurt ( ) p V . Dac n locul unui singur nod considerm o
submulime N M , vecinii din M N \ ai nodurilor din M se numesc vecinii lui
M i mulimea lor se noteaz ( ) M V .
Considernd un nod p , numrul de arce care sunt incidente pe nod ( ) p A d
gradul sau valena acelui nod. Dac un nod nu este conectat de nici un arc atunci
gradul su este 0. Spunem c acest nod este izolat.
Dac toate nodurile din graf au acelai grad se spune c graful este regulat.
Gradul total al unui graf este dat de suma gradelor tuturor nodurilor.
ntr-un graf neorientat gradul grafului este de dou ori numrul arcelor.
Pentru un graf orientat gradul su este dat de suma arcelor care intr pe fiecare nod,
asta nsemn n total numrul arcelor.
Un graf n care toate perechile de noduri sunt adiacente se numete graf
complet.
Baze de date i algoritmi pentru ci de comunicaie
147
Un graf ( ) A N G , = n care mulimea nodurilor sale poate fi mprit n dou
submulimi disjuncte n aa fel nct nici un arc nu are ambele terminaii n aceeai
submulime. Dac numrul de noduri este k atunci numrul de arce este
K
C
2
.
Un graf bipartit care are numrul maxim posibil de arce se numete graf
bipartit complet. Numrul total de arce este n acest caz , m n unde n i m
reprezint numrul de noduri din fiecare dintre submulimi.
DEFINIII SUPLIMENTARE
Un traseu (walk) ntr-un graf ( ) A N G , = este o secven finit de noduri i
arce adiacente ntre un nod de pornire
0
n i un nod de final
k
n :
( ) { } 1 ,..., 0 : , ,
1 , 0
= =
+
k i A n n A
i i n
. Traseul trivial const dintr-un singur nod.
Lungimea traseului ntr-un graf este dat de numrul de arce k L
T
= .
O cale sau un drum (path) este un traseu care pornete dintr-un nod de start
0
n i se ncheie n nodul final
k
n i nu conine arce care se repet. O cale simpl ntre
0
n i
k
n nu conine noduri care se repet. Deoarece o cale este un traseu, lungimea
unei ci este dat de definiia din paragraful anterior.
Un graf G se numete conectat dac pentru oricare pereche de noduri
p
n i
q
n exist un traseu care pornete din
p
n i se ncheie n
q
n . n caz contrar graful este
neconectat. ntr-un graf conectat exist o cale ntre oricare dou perechi de noduri.
Dac ntr-un graf conectat, o punte (engl. bridge) este un arc a crui eliminare
transform graful ntr-un graf neconectat.
Un traseu se numete nchis dac primul i ultimul nod din secven sunt
identici. Un traseu nchis care conine cel puin trei arce i nodurile sunt distincte, cu
excepia primului i ultimului, se numete ciclu.
Dou noduri sunt puternic conectate sunt noduri pentru care exist o cale pe
graf de la fiecare ctre cellalt. Graful puternic conectat este acel graf n care oricare
dou noduri sunt puternic conectate.
9.2. REPREZENTAREA GRAFURILOR
REPREZENTAREA GRAFIC
Este o reprezentare util pentru raionamentul mintal al oamenilor. Pe
asemenea reprezentri se pot uor observa legturi reale sau poteniale. Este un suport
pentru euristic i intuiie. Faptul c este att de uor de neles face ca acest tip de
reprezentare s fie cel mai popular.
Capitolul 9 Grafuri i probleme pe graf
148
Nodurile i arcele sunt reprezentate n plan prin puncte i linii. Dac un arc
este orientat se adaug o sgeat n captul care arat direcie
n total putem distinge patru tipuri de grafuri:
Grafuri: nu exist restricii legate de bucle i arce paralele;
Grafuri simple: nu sunt permise bucle i arce paralele;
Grafuri orientate: toate arcele sunt orientate i nu exist restricii legate de
bucle i arce paralele;
Grafuri orientate simple: toate arcele sunt orientate i nu sunt permise bucle i
arce paralele.


Fig. 73 Graf


Fig. 74 Graf simplu


Fig. 75 Graf orientat
Baze de date i algoritmi pentru ci de comunicaie
149



Fig. 76 Graf orientat simplu
Exemple
n viaa cotidian avem foarte multe cazuri concrete ce pot fi reprezentate
prin grafuri.
Un astfel de exemplu de reprezentare prin grafuri poate fi conectarea
calculatoarelor dintr-o instituie. n noduri sunt figurate calculatoarele, fie ele servere
sau staii de lucru iar arcele reprezint conexiunile cablate.

LEGEND
Staie de lucru
Server

Fig. 77 Graf reprezentnd conectarea calculatoarelor

Alt exemplu poate fi constituit de reeaua de cale ferat ce unete localitile
dintr-o regiune. n noduri se situeaz localitile iar arcele sunt liniile de cale ferat.
ntre unele noduri pot fi figurate arce paralele dac linia este dubl sau tripl.
Capitolul 9 Grafuri i probleme pe graf
150

ORA 1
ORA 2
ORA 3
ORA 4
ORA 5
ORA 6
Cale ferat 1
Cale ferat 2
Cale ferat 3
Cale ferat 4
Cale ferat 5
Cale ferat 6
Cale ferat 7
Cale ferat 8

Fig. 78 Exemplu de graf reprezentnd reeaua de cale ferat dintr-o regiune
Reprezentarea utiliznd grafurile nu este obligatoriu s se fac numai pentru
situaia cnd att nodurile ct i laturile sunt entiti fizice. Se poate imagina un graf a
persoanelor care se cunosc ntre ele.

1
2
3
4
5
6
9
7
8
10
11

Fig. 79 Graful relaiilor dintre persoane
Graful prezentat n figura anterioar poate fi chiar orientat cci exist cazuri
frecvente cnd n relaia dintre dou persoane numai una cunoate pe cealalt.
Pentru o reea de drumuri n care fiecare segment are o anumit lungime
exist un anumit numr de maini de intervenie situate n cteva localiti importante.
O astfel de situaie este reprezentat n figura urmtoare.
Baze de date i algoritmi pentru ci de comunicaie
151
35 km
40 km
50 km
25 km
48 km
30 km
60 km
20 km
2
3
6
2
1
6

Fig. 80 Exemplu de graf ponderat
Numerele ataate nodurilor reprezint numrul de maini care sunt
disponibile n fiecare localitate. Muchiilor li se ataeaz distana ntre localiti.
REPREZENTAREA PRIN STRUCTURI DE DATE
Dac reprezentarea grafic nu prezint probleme deosebite, reprezentarea n
memoria calculatorului nu mai este att de simpl. Aceasta deoarece trebuie inut cont
de spaiul efectiv de stocare dar i de timpul de prelucrare a datelor.
Exist dou ci principale de reprezentare a grafurilor: prin matricea
adiacenelor i prin liste de adiacene.
Considernd un graf neorientat a crui noduri sunt notate de la 1 la 6,
reprezentarea sa poate fi vzut n figura urmtoare: a) forma matriceal i b) lista de
adiacen.
a)

0 1 0 0 0 1
1 0 1 1 0 0
0 1 0 1 0 1
0 1 1 0 1 0
0 0 0 1 0 1
1 0 1 0 1 0
6
5
4
3
2
1
6 5 4 3 2 1
b)
2 4 6
1 3
2 4 5
1 3 5
3 4 6
1 5

3
2
5
6
1
4
1
2
3
4
5
6

Fig. 81 Reprezentarea unui graf neorientat
Pentru reprezentarea prin matricea adiacenelor n poziia (i,j) s-a notat cu 1
faptul c nodurile i i j sunt adiacente. Valoarea 0 indic inexistena unei muchii care
s uneasc nodurile i i j.
Capitolul 9 Grafuri i probleme pe graf
152
Similar putem reprezenta un graf orientat.
a)

0 0 0 0 0 0
1 0 0 0 0 0
0 1 0 1 0 0
0 1 0 0 0 0
0 0 0 1 0 1
1 0 1 0 0 0
6
5
4
3
2
1
6 5 4 3 2 1
b)
4 6
1 3
5
3 5
6
1
2
3
4
5
6

3
2
5
6
1
4

Fig. 82 Reprezentarea unui graf orientat
Din figura de mai sus, se observ imediat c spre deosebire de graful
neorientat, reprezentarea matriceal a grafului orientat nu mai este obligatoriu
simetric.
Dac graful este ponderat, atunci pe lng indicaia existenei unei legturi
ntre dou noduri se indic i ponderea (sau distana, costul etc.) acelei legturi. Acest
lucru se poate face tot prin utilizarea matricei adiacenelor i a listei de adiacen.
Lista de adiacen trebuie s conin pe lng numrul nodului i valoarea care indic
ponderea.
a)







0 20 60
20 0 30 48
30 0 50 25
48 50 0 40
40 0 35
60 25 35 0
6
5
4
3
2
1
6 5 4 3 2 1
b)
35 km
40 km
50 km
25 km
48 km
30 km
60 km
20 km
3
2
5
6
1
4
1
2
3
4
5
6
35 2 25 4 60 6
35 1 40 3
40 2 50 4 48 5
25 1 50 3 30 5
48 3 30 4 20 6
60 1 20 5

Fig. 83 Reprezentarea unui graf ponderat
Similar se poate reprezenta un graf ponderat orientat:
a)







0 60
20 0 48
30 0 50
0 40
0 35
25 0
6
5
4
3
2
1
6 5 4 3 2 1
b)

35 km
40 km
50 km
25 km
48 km
30 km
60 km
20 km
3
2
5
6
1
4
1
2
3
4
5
6
25 4
35 1
40 2
50 3 30 5
48 3 20 6
60 1

Fig. 84 Reprezentarea unui graf ponderat orientat
Baze de date i algoritmi pentru ci de comunicaie
153
i n acest caz matricea adiacenelor nu este obligatoriu simetric.
n cazul reprezentrii grafurilor trebuie s stabilim cantitatea de memorie
necesar. Presupunnd un numr de n noduri i m arce rezult:
n cazul matricei adiacenelor costul (n termeni de memorie) este
2
n ;
Pentru liste de adiacen costul este m n 2 + pentru grafuri neorientate i
m n + pentru grafuri orientate
Deci reprezentarea cu ajutorul listelor de adiacen este mai eficient dect
utilizarea matricelor. De aceea este preferabil folosirea listelor n reprezentarea,
modelare i rezolvarea problemelor n grafuri.
9.3. ARBORI
Un graf aciclic se numete pdure. O pdure conectat se numete arbore. Un
nod al unui arbore a crui grad este 1 se numete frunz. Un arbore netrivial are cel
puin 2 frunze.
Proprieti ale arborilor
Dac un graf ( ) A N G , = este arbore atunci:
G nu are cicluri dar adugarea unui arc ntre dou noduri neadiacente va crea
unul; G este aciclic maximal.
Exist o singur cale ntre oricare pereche de noduri;
G este conectat dar eliminarea oricrui arc l va transforma n graf
neconectat; G conectat minimal.
Dac G are k noduri atunci el are exact 1 k arce.

ARBORELE DE ACOPERIRE
Arborele de acoperire pe un graf nedirecionat ( ) A N G , = este un subset de
arce A T care nu conine bucle, este aciclic i conecteaz toate nodurile din N .
Din condiia de mai sus rezult c dac exist n noduri arborele de acoperire va
conine exact 1 n arce.
Presupunem c exist o funcie a costurilor Z A c : , unde Z este mulimea
valorilor costurilor i noiunea de cost trebuie privit n sens larg, nu strict monetar.
Costul total pentru arborele T este suma costurilor arcelor:
( ) ( )

=
T a
a c T c
Capitolul 9 Grafuri i probleme pe graf
154
PROBLEMA ARBORELUI DE ACOPERIRE MINIMAL
Considernd o reea ( ) A N, , cu costurile
ij
c asociate arcelor ( ) A j i , s se
gseasc arborele de acoperire cu costul cel mai mic.
Exemplu: pe o reea existent (de drumuri sau de cale ferat) se pune
problema de a se proiecta un nou sistem de comunicaie (cu fibr optic etc.) care s
conecteze un set de locaii importante (cum ar fi districtele) la un cost minimal.
Teorem: Fie U un subset corespunztor al setului de noduri N. Dac ( ) v u,
este arcul cu costul cel mai mic astfel nct U u i U N v \ atunci exist
un arbore de acoperire minimal care include arcul ( ) v u, .
Demonstraie: S presupunem c nu exist nici un arbore de acoperire
minimal care s includ arcul ( ) v u, . Fie T un arbore de acoperire minimal oarecare.
Adugnd ( ) v u, la T vom introduce un ciclu (T este arbore de acoperire). n
consecin, exist un alt arc ( ) v u , n T astfel nct U u i U N v \ . Dac nu, ar
fi imposibil s realizm un ciclu ntre u i v fr s parcurgem de dou ori arcul
( ) v u, .
tergnd arcul ( ) v u , ntrerupem ciclul i obinem un arbore de acoperire T
a crui cost nu este mai mare dect T de vreme ce am presupus din start c
v u uv
c c

.
Deci, T contrazice presupunerea c nici un arbore de acoperire minimal nu include
arcul ( ) v u, .
Algoritmul generic de aflare a arborelui de acoperire minimal este dat de:
Proc AMA_Generic( G, cost )

T
Ct timp T nu este arbore de acoperire
Caut arc (u,v)G-T astfel nct
uT i cost(u,v) minimal
TT(u,v)

Fig. 85 Algoritmul generic pentru gsirea arborelui minimal de acoperire
Algoritmul lui Prim pentru arborele minimal de acoperire
n cadrul algoritmului lui Prim, X reprezint un arbore unic i S setul de
noduri ale acestui arbore. n fiecare iteraie se adaug arborelui cte un nou nod pn
cnd toate nodurile sunt cuprinse.
Algoritmul conceptual este prezentat mai jos.
Baze de date i algoritmi pentru ci de comunicaie
155
Proc AMA_Prim ( G, cost )

Alege un nod de start s
T ({s}, )

Ct timp V[T] V
Caut cel mai ieftin arc (u,v)
care conecteaz T de G-T
//la egalitate alege aleator
T T({v},{(u,v)})
Returneaz T

Fig. 86 Forma conceptuala a algoritmului lui Prim
Algoritmul lui Prim este de tipul ( )
2
n O .
Algoritmul lui Kruskal
Pentru rezolvarea problemei arborelui minim de acoperire algoritmul Kruskal
utilizeaz o abordare diferit de algoritmul Prim. n loc s dezvolte un arbore unic,
algoritmul Kruskal selecioneaz cele mai arcele cu costul cel mai mic dezvoltnd ci
arbori sunt necesari, arbori ce n final se vor uni n procesul de adugare de noi arce.
Iniial fiecare nod din graf este considerat ca un arbore trivial.
Proc AMA_Kruskal ( G, cost )

T (N, )
Ordoneaz arcele n ordine ne-descresctoare

Pentru fiecare (u,v)A[G] (ordonate)
Dac u,v sunt n diferite
componente conectate ale lui T
T T {(u,v)})

Returneaz T

Fig. 87 Forma conceptuala a algoritmului lui Kruskal
Algoritmul lui Kruskal are complexitatea ) log ( m m O , unde m este numrul
de arce.
Exemple de utilizare a algoritmilor de gsire a arborelui de acoperire minimal
sunt prezentate mai jos. Se poate observa modul de aciune i deosebirile dintre cele
dou abordri. Considerm un caz particular dat de un graf cu 9 noduri i 12 arce cu
costurile prezentate n figura urmtoare. n continuare prezentm dezvoltarea
arborelui de acoperire minimal prin algoritmul Prim i prin algoritmul Kruskal .
Capitolul 9 Grafuri i probleme pe graf
156

1
2
5
1
4
6
3
7
5 5
3 2

Fig. 88 Graful considerat pentru dezvoltarea arborelui de acoperire minimal

1
2
5
1
4
6
3
7
5 5
3 2


1
2
5
1
4
6
3
7
5 5
3 2


1
2
5
1
4
6
3
7
5 5
3 2


1
2
5
1
4
6
3
7
5 5
3 2

1
2
5
1
4
6
3
7
5 5
3 2


1
2
5
1
4
6
3
7
5 5
3 2


1
2
5
1
4
6
3
7
5 5
3 2


1
2
5
1
4
6
3
7
5 5
3 2

Fig. 89 Rezolvare cu algoritmul Prim

1
2
5
1
4
6
3
7
5 5
3 2


1
2
5
1
4
6
3
7
5 5
3 2


1
2
5
1
4
6
3
7
5 5
3 2


1
2
5
1
4
6
3
7
5 5
3 2

1
2
5
1
4
6
3
7
5 5
3 2


1
2
5
1
4
6
3
7
5 5
3 2


1
2
5
1
4
6
3
7
5 5
3 2


1
2
5
1
4
6
3
7
5 5
3 2

Fig. 90 Rezolvare cu algoritmul Kruskal
Baze de date i algoritmi pentru ci de comunicaie
157
9.4. PARCURGEREA GRAFURILOR
Parcurgerea grafurilor trebuie fcut ntr-o manier organizat, sistematic
pentru a nu scpa noduri sau arce. Exist dou tehnici importante:
Cutare pe orizontal (breadth-first search): se caut s se obin maximum
de lrgime din examinarea unui nod i apoi vizitarea imediat a nodurilor
adiacente.
Cutare pe adncime (depth-first search): se caut s se obin maximum de
adncime prin vizitarea unui nod i apoi efectuare de cutare recursiv pe
adncime pentru fiecare nod adiacent.
9.5. PROBLEME DE ACOPERIRE PE REELE
PODURILE DIN KNIGSBERG
Knigsberg, ora din Prusia oriental (astzi cunoscut sub numele de
Kaliningrad n Rusia), este aezat pe rul Pregel care nconjoar insula Kneiphof,
dup care se desparte n dou brae. Apa delimiteaz terenul n patru zone distincte.
Malurile rului i insula sunt legate prin apte poduri.

A
B
C
D

Fig. 91 Harta podurilor din Knigsberg
La nceputul secolului 18, orenii i-au pus ntrebarea: Este posibil s
facem o plimbare prin ora trecnd pe fiecare din cele apte poduri o singur dat i
s ne n toarcem de unde am plecat? Matematicianul elveian Leonhard Euler
rezolv problema n 1731, fapt care constituie actul de natere al teoriei grafurilor.
Logica ne spune c oricare punct din fiecare din cele patru zone este
echivalent i deci le putem trata unitar prin reducerea la unul singur (nodul). Podul
Capitolul 9 Grafuri i probleme pe graf
158
reprezint calea de legtur (arcul). Problema poate fi deci reprezentat n mod
abstract printr-un graf.

A
B
C
D

Fig. 92 Reprezentarea sub form de graf
n conformitate cu teoria grafurilor problema se definete: S se gseasc un
traseu acoperitor pe reea care pornete i se ncheie n acelai nod parcurgnd toate
arcele exact o singur dat.
Acea cale care acoper graful, pornind dintr-un nod i ncheindu-se n acelai
nod i traverseaz fiecare arc exact o singur dat se numete parcurs eulerian. Graful
care conine un parcurs Eulerian poart numele de graf Eulerian.
Teorema lui Euler un graf G este Eulerian dac i numai dac toate
nodurile au grad par.
Fleurys Algorithm
Fie ( ) A N G , = un graf conectat. Dac G este Eulerian atunci urmtorul
algoritm va produce un traseu Eulerian pe G .
Pas 1. Al ege ori care nod v di n G i f i xeaz- l drept nod
curent i i ni i al i zeaz t raseul cu o secven a de arce
vi d.
Pas 2. Sel ect eaz ori care arc a i nci dent di n nodul
curent , dar nu se al ege o punt e dect dac nu exi st
al t ernat i ve.
Pas 3. Adaug a l a secven a de arce care const i t ui e
cal ea i st abi l et e cel l al t capt al arcul ui a ca nod
curent .
Pas 4. El i mi n a di n graf . El i mi n t oat e noduri l e
i zol at e.
Baze de date i algoritmi pentru ci de comunicaie
159
Pas 5. Dac G est e vi d at unci STOP. Al t f el t rece l a
Pas 2.
PROBLEMA POTAULUI CHINEZ
Problema potaului chinez este legat de eficiena deplasrii unui pota
pentru livrarea corespondenei ntr-un mediu urban. El trebuie s strbat cel puin o
dat toate strzile pornind dintr-un nod, unde se presupune c se afl oficiul potal, i
s se ntoarc n punctul de pornire. Distana total parcurs trebuie s fie minim.
Problema a fost prima dat studiat de matematicianul chinez Meigo Guan n
anul 1962, de unde provine i numele.
Din punctul de vedere al teoriei grafurilor problema are formularea:
S se gseasc un circuit care traverseaz fiecare arc a unui graf ( ) A N G , =
cel puin o dat i pentru care suma costurilor este minim.
Gsirea soluiei optimale ntr-un graf orientat sau neorientat este
NP-complet.
Chiar dac a intrat n istoria teoriei grafurilor sub denumirea de problema
potaului o aplicaie esenial este i aceea a inspeciei drumurilor dintr-o reea
(presupunem c pentru determinarea strii tehnice). De aceea problema mai poate fi
ntlnit n literatur i sub denumirea de problema inspeciei drumului (engl. route
inspection problem).
CICLU HAMILTONIAN
Considernd un graf neorientat ( ) A N G , = s se gseasc un traseu care
viziteaz fiecare nod exact o singur dat i se ntoarce n nodul de pornire.
Dac un asemenea traseu exist un asemenea traseu atunci graful se numete
graf Hamiltonian iar traseul ciclu Hamiltonian.
Dei par s existe similariti cu graful Eulerian exist mari diferene.
Intuitiv s-ar spune c este cu att mai probabil ca un graf s fie Hamiltonian
cu ct exist mai multe arce. Dirac, n 1952, a demonstrat teorema care i poart
numele:
Oricare graf nu un numr de noduri 3 n i gradul minim al nodurilor cel
puin egal cu 2 n are un ciclu hamiltonian.
Utiliznd aceast teorem putem afla dac avem sau nu un graf Hamiltonian.
Aflarea efectiv a circuitului este ns ceva mai dificil pentru c nu exist algoritmi
care s rezolve problema ntr-un timp rezonabil.
Capitolul 9 Grafuri i probleme pe graf
160
Problema este NP-complet.
PROBLEMA VNZTORULUI AMBULANT
Exist multe aplicaii care au legtur cu ciclul Hamiltonian. ntre acestea
este problema vnztorului ambulant.
Aceast problem are forma: pe o reea n care nodurile reprezint oraele, un
vnztor trebuie s viziteze toate oraele cel puin o dat cu costuri minime, cunoscut
fiind costul cltoriei pe fiecare latur a reelei.
Problema se simplific dac graful considerat este Hamiltonian. Vnztorul
va trece prin fiecare nod exact o singur dat. n acest caz algoritmul poate fi
constituit din urmtorii pai:
Pas 1. Li st eaz t oat e ci cl uri l e Hami l t oni ene.
Pas 2. Cal cul eaz cost uri l e pent ru f i ecare ci cl u
Pas 3. Al ege ci cl ul cu cost ul cel mai mi c.
Trebuie notat c pot exista mai multe cicluri cu acelai cost.
Aceast form a problemei are cea mai bun soluie de complexitate
exponenial.
Este o problem de optimizare discret sau combinatoric i un exemplu
arhicunoscut de ilustrare a clasei de probleme din teoria complexitii computaionale
greu de rezolvat. Dac nu exist un ciclu Hamiltonian problema este de complexitate
factorial (n!).
9.6. BIBLIOGRAFIE
[135] *** Duden: Informatik; Dudenverlag, Mannheim a.o., 1993.
[136] Aho A., J. E. Hopcroft, J. D. Ullman: Data Structures and Algorithms; Addison-
Wesley Publishing Company, Reading Massachusetts, 1983 .
[137] Brandstdt: Graphen und Algorithmen; Teubner, Stuttgart, 1994.
[138] Chartand G., O. R. Oellermann: Applied and algorithmic graph theory; McGraw-Hill,
New York, 1993.
[139] Cormen T. H., C. E. Leiserson, R.L. Rivest: Introduction to Algorithms; The MIT
Press, Cambridge, Massachusetts, 1990.
[140] Diestel Reinhelt: Graph Theory; Electronic Edition 2000, Springer-Verlag, New York
2000.
[141] Fields J. E.: Introduction to Graph Theory; Southern Connecticut State University,
Department of Mathematics, 2001.
[142] Preparata F. P.; M. I. Shamos, Computational Geometry, Springer, New York, 1988.
[143] Sedgewick R.: Algorithms; Addison-Wesley, Reading, Massachusetts, 1983, 2nd ed.
1988.
Scnteie Rodian Baze de date i algoritmi pentru ci de comunicaie
ISBN 973-86343-3-4 Editura Societii Academice Matei-Teiu Botez
Iai 2003
161
PROBLEME DE MINIM
I MAXIM PE REEA
10.1. INTRODUCERE
S considerm un graf orientat simplu ( ) A N G , = n care N este mulimea
nodurilor i A este mulimea arcelor unde N are dimensiunea n i A are dimensiunea
m. Fie R A c : o funcie care ataeaz un cost
ij
c fiecrui arc ( ) A j i , . Date fiind
dou noduri speciale o i d numite origine i destinaie s se gseasc o cale ntre o i
d n aa fel nct costul total (suma costurilor arcelor incluse) s fie minim.
Corolarul acestei probleme este s se gseasc drumul cel mai lung ntre
origine i destinaie. Se mai numete i problema drumului critic.
Pe lng calea cea mai scurt i cea mai lung este de multe ori necesar s se
listeze n ordine cele mai scurte sau cele mai lungi k drumuri ntre origine i
destinaie.
Toate aceste probleme au numeroase aplicaii n industria transporturilor i n
administrarea infrastructurii transporturilor. Majoritatea programelor de optimizare
din acest domeniu utilizeaz algoritmi de aflare a drumului (drumurilor) minim
(minime).
n continuare vom prezenta metode de gsire a cii minime ntre origine i
destinaie i problema primelor k drumuri minime ntre origine i destinaie insistnd
asupra celei de-a doua deoarece este mai general i cu aplicaii multiple n
transporturi, managementul infrastructurii, logostic etc.
Capitolul 10 Probleme de minim i maxim pe reea
162
10.2. DRUMUL CEL MAI SCURT
Aflarea drumului cel mai scurt este o problem studiat extensiv n anii 1950.
Este o problem relativ uoar pentru o reea cu n noduri i m arce rezolvarea poate fi
aflat cu un algoritm de complexitate ) (
2
n O . Chiar dac aceast complexitate a fost
demonstrat i implementat n numeroase programe practice, totui se mai lucreaz
la mbuntirea i simplificare algoritmului.
Diferite mbuntiri au fost aduse i complexitatea este prezentat n tabelul
urmtor.
Tabelul 9. Evoluia complexitii algoritmilor de aflare a drumului minim
Algoritm Complexitate
Dijkstra 1959 ) (
2
n O
Williams 1964 ) log (
2
n m O
Johnson 1977 ) , 2 max( ), log (
n
m
d n m O
d
=
Boas et al. 1977 ) log log log (
2 2 2
c c m c O +
Johnson 1982 ) log log (
2 2
c m O
Fredman&Tarjan 1981 ) log (
2
n n m O +
Gabow 1985 ) , 2 max( ), log (
n
m
d c m O
d
=
Tarjan et al. 1989 ) log (
2
c n m O +

Aceast problem are cteva abordri standard:
Surs unic destinaie unic: considernd o origine trebuie s se gseasc
drumul cel mai scurt pn la un nod numit destinaie;
Surs unic toate destinaiile: considernd un nod de origine trebuie gsite
drumurile cele mai scurte ctre toate celelalte noduri din reea.
Toate perechile: trebuie gsite drumurile minimale ntre toate perechile de
noduri. Aceast problem poate fi vzut i ca n probleme de surs unic i rezolvat
ca atare.
Problema cii minime este una dintre cele mai studiate probleme n
cercetrile operaionale privind optimizarea traficului n reele. n domeniul
transporturilor i al administrrii infrastructurii transporturilor se utilizeaz att
problema simplificat a determinrii drumului minim (din punctul de vedere al
distanei, timpului, costului etc.) ntre o origine i o destinaie dar i alte variante de
aciune sub anumite restricii suplimentare sau structuri de graf particulare.
Baze de date i algoritmi pentru ci de comunicaie
163
Datorit naturii aplicaiilor, n alegerea algoritmilor specifici specialistul n
ingineria transporturilor trebuie s aib o abordare flexibil att din punctul de vedere
al timpului de rulare ct i din punctul de vedere al memoriei utilizate. Deoarece nu
exist un algoritm pe care putem s-l considerm cel mai bun, alegerea se va baza pe
rezolvarea condiiilor considerate. Datorit dimensiunii deosebite a problemei, o
atenie deosebit trebuie alocat alegerii i implementrii unor structuri de date
eficiente (Tarjan et al. 1983 [175]).
ABORDRI ALE PROBLEMEI DRUMULUI CEL MAI SCURT N CI DE
COMUNICAIE
Analiza i planificarea transporturilor au utilizat n permanen proceduri de
calcul al drumului cel mai scurt. Modelnd reele de mari dimensiuni, cu multe
condiii i avnd permanent nevoie de a compara variante multiple, specialitii n
cercetri operaionale au avut nevoie de algoritmii cu permanene mereu mbuntite.
Performanele mai bune au condus la modele mai bune care la rndul lor au necesitat
inventarea de algoritmi mai performani.
Studiind problema, Pallottino i Scutell de Universitatea din Pisa au gsit c
dup 1950 pe plan mondial s-au publicat peste dou mii de lucrri tiinifice n reviste
de prestigiu i convolute de congrese internaionale (Pallottino i Scutell 1997
[165]). Numrul real al articolelor este cu siguran mult mai mare. Ei au gsit aceste
lucrri att n publicaii din domeniul teoriei grafurilor ct i n reviste de alte
specializri: transporturi, calculatoare, telecomunicaii, management, cercetrilor
operaionale etc. Aceasta denot interesul deosebit acordat problemei i importana ca
soluia s fie una eficient din punctul de vedere al costurilor. De aceea exist
numeroase variante de algoritmi, unele fiind mbuntiri ale variantelor anterioare,
numeroi fiind autorii care i-au adus contribuie. Pentru treceri n revist asupra
subiectului a se vedea: (Johnson 1973(a) [163], Denardo i Fox 1979 [152], [153],
Shier i Witzgall 1981 [171], Deo i Pang 1984 [154], Gallo i Pallottino 1986 [161],
Bertsekas 1991b [149], Ahuja, Magnanti i Orlin 1993 [144], Cherkassky, Goldberg
i Radzik 1996 [151].
Majoritatea sistemelor software utilizate n planificarea transporturilor posed
module de calcul a cii minime. Un interes deosebit se manifest i n domeniul
planificrii lucrrilor de construcie unde distanele pn la sursele de aprovizionare i
costurile asociate sunt elemente critice. Pentru treceri n revist asupra algoritmilor
cii minime n transporturi a se vedea: Steenbrink 1974 [174], Van Vliet 1978 [176],
Gallo i Pallottino 1984 [159], Pallottino i Scutell 1997 [165].
ALGORITMUL LUI DIJKSTRA
Acest algoritm a primit numele inventatorului su, olandezul Edsger Dijkstra.
Rezolv problema drumului minim pentru un graf ) , ( A N G conectat i orientat a
crui costuri pe arce sunt ne-negative. Primete ca date de intrare un graf G cu costuri
Capitolul 10 Probleme de minim i maxim pe reea
164
ne-negative i un nod de pornire originea. Algoritmul are o abordare egoist. La
fiecare iteraie se caut nodul cel mai apropiat de origine.
Ideea care st la baza algoritmului este faptul c orice drum minimal este
alctuit din segmente care la rndul lor sunt minimale.
Presupunem c funcia ] , 0 [ : N N c descrie costurile ) , ( v u c de
deplasare de la nodul u la nodul v pe arcul corespunztor pentru nodurile neconetate
presupunem c distana este infinit. Costul drumului dintre dou noduri este suma
arcelor ce constituie drumul.
Algoritmul Dijkstra funcioneaz prin construirea unui sub-graf S al lui G n
aa fel nct distana de la origine la orice alt nod este minim. Iniial S conine doar
originea cu distana 0.
La fiecare iteraie se identific nodul a crui distan pn la origine este
minim i se adaug la arbore. Algoritmul se ncheie cnd S devine un arbore de
acoperire pe G sau cnd toate nodurile de interes au fost atinse.
Algoritmul Dijkstra

Iniializeaz: S {s}; d[s] 0;
Iniializeaz: d(v) c(s,v) pnrtu vN(G)-S

Ct timp |S||N|
Alege u din N-S nct d(u) este minim
S S {u}
Pentru fiecare nod v N-S caculeaz
d(v) min( d(v), d(u)+c(u,v) )

Fig. 93 Algoritmul conceptual Dijkstra



A
E
B
C
D
1
7
1
5
5
1
2
2

Fig. 94 Graful pentru tratare cu algoritmul lui Dijkstra
Baze de date i algoritmi pentru ci de comunicaie
165

S u d[B] d[C] d[D] d[E]
0 {A} - 7

1
1 {A,E} E 6 6 3 1
2 {A,E,D} D 6 4 3 1
3 {A,E,D,C} C 5 4 3 1
4 {A,B,C,D,E} B 5 4 3 1


Fig. 95 Exemplu de rezolvare cu algoritmul lui Dijkstra
Algoritmul lui Dijkstra este de tipul stabilirea etichetei deoarece, de fiecare
dat cnd un nou nod este ales s fac parte din S, distana din origine i traseul fixat
sunt definitive.
Acest algoritm are complexitatea de rulare ) (
2
n O .
ALGORITMUL BELLMAN-FORD
Fie ) (t C
i
lungimea celei mai scurte ci nodul i i destinaie (nodul n) care
este alctuit din cel mult t arce. Considerm 0 ) ( = t C
n
pentru oricare t i = ) 0 (
i
C
pentru toate n i . Atunci
1 ,..., 1 }, ( { min ) 1 (
) , ( :
= + = +

n i t C C t C
k ik
A k t k
i

(7)
Aceast formulare definete algoritmul Bellman-Ford.
Se ataeaz fiecrui nod indicatorii i d. De tip pointer, este o locaie n
care se stocheaz referina ctre nodul anterior din calea cea mai scurt, iar d
pstreaz distana pe calea selectat. n fiecare iteraie pentru fiecare nod se testeaz
toate arcele i n cazul n care noua cale obinut are o lungime mai mic dect cea
reinut deja atunci noua cale se reine, corectnd rezultatul. Algoritmul este deci de
tipul corecia etichetei: i d pot fi considerate mpreun ca fiind o etichet.
Algoritmul Bellman-Ford

Iniializeaz: d , d(s) 0, nil

Pentru m 1 la |N|-1 Repet
Pentru (u,v)A ( adiacente din u )
Dac d[v]>d[u]+c(u,v) Atunci
u, d[v] d[u]+c(u,v)

Fig. 96 Algoritmul conceptual Bellman-Ford
Capitolul 10 Probleme de minim i maxim pe reea
166
Acest algoritm se preteaz la programare dinamic.
Considernd c cea mai scurt cale dintre origine i nodul v are m arce i
const dintr-o cale ntre origine i un nod u care are m-1 arce, atunci:
( ) { }
) , ( ) ( min ) (
1
,
v u c u v
m
v u
m
+ =


(8)
Din structura sa foarte simpl se poate observa c algoritmul Bellman-Ford
are complexitate ) (mn O .



A
E
B
C
D
1
7
1
5
5
1
2
2

Fig. 97 Exemplu de graf pentru rezolvare cu algoritmul Bellman-Ford

A B C D E
0 0

1 0 7(A)

1(A)
2 0 6(E) 6(E) 3(E) 1(A)
3 0 6(E) 4(D) 3(E) 1(A)
4 0 5(E) 4(D) 3(E) 1(A)


Fig. 98 Exemplu de rezolvare cu algoritmul Bellman-Ford
10.3. CELE MAI SCURTE K DRUMURI PE GRAF
INTRODUCERE
Dup cum am vzut n partea anterioar problema cii minime se reduce la a
gsi acel drum ntre o origine i o destinaie care are cel mai sczut cost. Cost are un
neles larg putnd fi: distan, greutate, valoare monetar, consum de combustibil,
sau chiar o variabil agregat ce nglobeaz diferite dezavantaje ale unei anumite ci.
Baze de date i algoritmi pentru ci de comunicaie
167
n multe situaii calea minim singur nu descrie complet situaia. Este
necesar s se determine i urmtoarele ci care unesc originea i destinaia
(urmtoarele n sensul ordonrii costurilor aa cum au fost ele considerate).
Problema se poate defini deci astfel: din mulimea cilor care leag originea
i destinaia s se determine primele k n ordinea cresctoare a costurilor.
Necesitatea includerii n cercetrile operaionale rezid n faptul c, de
exemplu, oferii nu aleg obligatoriu calea cea mai scurt din reea. Fiind o decizie
psihologic, criteriile fiind adesea subiective, alegerea se conformeaz legilor
psihologiei i are mai degrab o distribuie statistic. Combinarea cunotinelor despre
distribuia opiunilor cu calculul unui numr de ci, n ordinea lor fireasc, poate
conduce la nelegerea comportrii microscopice i macroscopice a traficului.
Rezultatul cel mai spectaculos putnd fi alocarea dinamic a traficului, un subiect de
mare actualitate n zonele cu trafic aglomerat.
Modificrile ce apar n trafic prin dirijarea intenionat sau prin informaii n
timp real ce parvin participanilor conduc subsecvent la modificarea costurilor ataate
anumitor sectoare din reea. Prin aceasta toate cile dintre dou noduri oarecare din
reea vor avea condiii diferite i implicit ordinea n care ele sunt cotate se va
modifica. Prin aceasta se modific dinamic i preferinele.
Este imperios necesar s se dezvolte algoritmi de calcul a primelor k drumuri
scurte ntre origine i destinaie. Aplicaiile lor sunt numeroase n domeniul
infrastructurii transporturilor, comunicaii, logistic etc.
n esen, problema celor mai scurte k drumuri este o generalizare a
problemei cii minime. Dac pentru drumul cel mai scurt gsete doar o cale ntre
origine i destinaie, problema aceasta gsete primele k drumuri ordonate cresctor
dup un criteriu numit generic distan. Nu este aa de simplu de rezolvat ca problema
drumului minim dar are o arie mai larg de aplicaii.
n managementul transporturilor calculul cilor cele mai scurte este o
prezen constant. Dac din motive diverse (lucrri, congestii de trafic, activiti
sportive etc.) cea mai scurt cale nu este disponibil, este de dorit s dispunem de
variante suplimentare. De asemenea, planificarea urban trebuie s modeleze mult
mai aproape de realitate fluxul vehiculelor pe variante alternative dect pe cale unic.
Este cunoscut c participanii la trafic aleg ntre variante cu o anumit probabilitate.
Pollack [167] a formulat problema general dup cum urmeaz:
Se d un set de noduri fiecare pereche fiind conectat printr-o conexiune. Se
dau distanele dintre noduri fr s fie obligatoriu simetrice (distana de la nodul i la
nodul j nu este obligatoriu aceeai ca distana de la j la i). Toate distanele se
consider nenegative, dac nu exist conexiune direct distana este infinit. Distana
dintre oricare pereche de noduri nu este obligatoriu o distan fizic (poate fi cost,
timp, ntrziere etc.). Calea k dintre nodurile i i j este definit ca fiind al k-ulea
Capitolul 10 Probleme de minim i maxim pe reea
168
drumul fr bucle din lista drumurilor care unesc i i j. Aceast problem se mai
numete i problema ordonrii cilor (paths ranking problem).
Modalitatea clasic este de a gsi toate cile dintre origine i destinaie, de a
le sorta i de a alege primele k. Metoda gsete ntotdeauna rezultatul corect dar este
foarte laborioas. Poate fi utilizat doar pentru reele foarte mici. Toate celelalte
metode gsesc cea mai bun soluie doar cu o anumit probabilitate. Eficiena fiecrei
metode depinde de topologia reelei.
DIFERITE METODE DE TRATARE
Polack [167] i Shier [172], [173] trec n revist metodele de algoritmi
dezvoltai pentru rezolvarea problemei primelor k drumuri. n continuare vom
enumera cteva exemple.
Metoda Bock, Kantner, Haynes
Bock, Kantner, and Haynes [150] descriu o metod de determinare a primelor
k drumuri utiliznd tulpini i arbori. Metoda listeaz sistematic toate cile dintre
origine i destinaie. Dup ce toate cile au fost gsite, ele se ordoneaz. Metoda nu
poate fi folosit dect pentru reele reduse ca dimensiune dar n acest caz este cea mai
bun metod.
Metoda drumului cel mai scurt
O metod simpl pentru valori mici ale lui k pornete de la aflarea celei mai
scurte ci. Ideea este c orice drum scurt din list este o deviere de la o cale mai
scurt [168]. Pentru fiecare nivel al lui k trebuie complet rezolvat nivelul anterior. De
fiecare dat se consider pe rnd cile deja incluse n list i se elimin cte un arc
dup care se calculeaz calea minimal n graful rezultat. Se preteaz doar la reele
restrnse i valori mici ale lui k.



Fig. 99 Exemplificare a metodei drumului cel mai scurt
Baze de date i algoritmi pentru ci de comunicaie
169
Metoda lui Bellman i Kalaba
Bellman i Kalaba [147] prezint o metod care ncearc s determine
primele k drumuri de la toate nodurile ctre un nod dat. Algoritmul a fost evideniat i
perfecionat de Pollack [167].
Prin aceast metod se evalueaz consecutiv calea cea mai scurt, a doua
cale, a treia i aa mai departe. Pentru fiecare valoare k nivelul anterior trebuie s fie
rezolvat. n principiu, trebuie s se rezolve ecuaiile:
( )
i ij
i j
i
u t u + =

min , unde i=1,2,,n-1,
0 =
n
u .
ALGORITMI CU CORECIA ETICHETEI (LABEL-CORRECTING)
Petru fiecare nod se poate ataa o etichet constnd ntr-un vector n care se
pstreaz fiecare din primele j ci i lungimea lor. Filozofia algoritmilor cu corecia
etichetei (exist o ntreag familie) const n modificarea continu a etichetei ataate
nodurilor pn cnd, n final, se poate spune c valoarea ataat este corect [173].
Valorile de lucru ataate sunt temporare.
Aceti algoritmi dau primele k drumuri ntre un nod de origine i toate
celelalte noduri din reea. algoritmul tipic este format din 3 pai.
LC1. Se pornete cu o aproximaie iniial a lungimii cii k de la nodul 1 la
fiecare nod j. Aceasta nseamn atribuirea unui vector x(j)=(x
j1
, x
j2
,,x
jk
) de fiecrui
nod j. Exist mai multe posibiliti pentru valorile iniiale ale vectorilor x(j) dar se
recomand ca fiind convenabile:
x(1)=(0,,,)
x(j)=(,,,) pentru j=2..n
LC2. Se alege un nou arc i i se proceseaz arcul. Prin procesarea arcului
(i,j) se nelege faptul c se ncearc s se mbunteasc vectorul x(j) prin
verificarea cilor de la pn la nodul i cuprinse n vectorul i la care se adaug arcul
(i,j). Dac oricare dintre valorile {x
im
+a
ij
:m=1k} conduc la un drum mai scurt
dect oricare dintre cele cuprinse n x(j), atunci vectorul x(j) este actualizat prin
includerea cii mai scurte. Se subnelege c se realizeaz toate actualizrile posibile
ale vectorului x(j) utiliznd x(i) cnd se proceseaz arcul (i,j).
LC3. STOP dac se face verificarea criteriilor de ncheiere. Altfel ntoarcere
la pasul LC2.
Avantajele unei astfel de metode sunt: ofer soluii exacte i rmn valide
chiar i n cazul costurilor negative. Sigura cerin este s nu existe circuite negative.
Mai jos sunt prezentate patru tipuri de algoritmi cu corecia etichetei:
Capitolul 10 Probleme de minim i maxim pe reea
170
Forma de baz a algoritmului cu corecia etichetei
n aceast metod arcele sunt prelucrate ntr-o ordine fix. Arcele adiacente
nodului notat cu 1 sunt prelucrate mai nti, apoi cele adiacente nodului 2 etc.
Dac se ntlnete un nod cu etichet (,,,) arcele corespunztoare nu
vor fi procesate.
Dac ntr-o iteraie nu se face nici o actualizare atunci algoritmul se oprete.
Pas1: Pune x(1)(0,,,), x(j)(,,,) pentru j1. Atribuie
NOD=1.
Pas2: Dac x(nod)(,,,) atunci mergi la pas3, altfel examineaz
NOD: pentru fiecare j adiacent fa de NOD proceseaz arcul (NOD,j).
Pas3: Dac NOD<N atunci NODNOD+1 i treci la Pas2.
Pas4: Dac s-au fcut modificri asupra unei etichete x(j) atunci NOD1 i
treci la Pas2. Altfel STOP.
Algoritm cu indicator de modificare (alteration flag AF)
Este o variant a algoritmului de baz. Ideea este ca ntr-o iteraie s nu se
examineze un nod dac vectorul celor k-drumuri asociat nu s-a modificat de la
examinarea anterioar. Acest algoritm asociaz pentru fiecare nod un indicator ( ) j T
cu proprietatea c ( ) 0 = j T dac nu au avut loc schimbri, ( ) 1 = j T a aprut o
schimbare.
Pas1: x(1)=(0,,,), x(j)=(,,,) pentru j1; T(1)=1, T(j)=0 pentru
j1. Stabilete NOD=1
Pas2: Dac T(NOD)=0 atunci treci la PAS3. Altfel, ncepe examinarea lui
NOD: pentru toate nodurile j adiacente lui NOD, proceseaz arcul (NOD,j). Dac
exist o modificare la eticheta nodului j atunci T(j)=1. T(NOD)=0.
Pas3: Dac NOD<N atunci NODNOD+1 i trece la PAS2. Altfel,
verific dac n PAS2 a fost modificat un vector x(j). Dac au fost fcute modificri
NOD=1 trece la PAS2. Altfel STOP
Algoritmul cu list de secvene (sequence list SL)
Nodurile nu mai sunt examinate ntr-o ordine fix. Se genereaz o list de
noduri i de fiecare dat se examineaz urmtorul din list.
Cnd este examinat un nod, toate arcele adiacente din acel nod sunt procesate
i acel nod este eliminat din list. Lista este de tipul FIFO. Cnd un arc (i,j) este
procesat i rezult o modificare a etichetei nodului j acesta este adugat n list, dac
nu este deja.
Baze de date i algoritmi pentru ci de comunicaie
171
n principiu algoritmul are urmtoarea form:
PAS1: x(1)=(0,,,), x(j)=(,,,) pentru j1, adaug nodul 1 n
list.
PAS2: Extrage nodul i din capul listei. Examineaz nodul i: pentru toate
nodurile j adiacente dinspre i proceseaz nodul (i,j). Dac nu este deja n list adaug
j n coada listei.
PAS3: Dac mai exist noduri n list trece la PAS2. altfel STOP.
Algoritmul cu dubl baleiere (double-sweep DS)
Metoda reprezint o alt versiune a algoritmului de baz. n loc s se
examineze nodurile n aceeai ordine 1,2,...,n n fiecare iteraie, aceast metod face
dou treceri alternante nainte i napoi. ntr-o prim faz se consider nodurile j n
ordinea 1,2,...,n i se examineaz arcele (j,i) pentru i<j. n faza a doua se consider
nodurile j n ordinea n,...,2,1 i se examineaz nodurile (j,i) pentru j>i. Procesul
continu pn cnd nu mai exist alte iteraii posibile.
PAS1: x(1)=(0,,,), x(j)=(,,,) pentru j1.
PAS2: Consider NOD=2,,N. Pentru nodurile i, i<NOD, care sunt
adiacente cu NOD, proceseaz arcul (NOD,i)
PAS3: Dac nici o eticheta x(j) nu s-a modificat n timpul PAS2 atunci
STOP.
PAS4: Consider NOD=N-1,,1. Pentru nodurile i, i>NOD, care sunt
adiacente cu NOD, proceseaz arcul (NOD,i).
PAS5: Dac nici o eticheta x(j) nu s-a modificat n timpul PAS4 atunci
STOP. Altfel trece la PAS2.
ALGORITMUL CU FIXAREA ETICHETEI (LABEL-SETTING LS)
Acest tip de algoritm este adecvat calculrii primelor k drumuri pentru reele
cu arce cu lungimi ne-negative. Prin contrast cu algoritmii cu corecia etichetei,
algoritmul cu fixarea etichetei identific n fiecare pas o valoare corect i
permanent pentru un nod.
PAS1: x(1)=(0,,,), x(j)=(,,,) pentru j1. adaug toate nodurile
n list (toate componentele sunt fcute temporare) i atribuie i=1
PAS2: Gsete cel mai mic component temporar TEMP pentru nodul i.
Pentru fiecare nod j adiacent dinspre i adaug, dac este posibil, valoarea
TEMP+A(i,j), n vectorul x(j).
PAS3: Definete ca permanent componenta TEMP a nodului i. nltur
nodul i din list dac nu mai sunt componente temporare pentru acest nod.
Capitolul 10 Probleme de minim i maxim pe reea
172
PAS4: Dac lista este goal atunci STOP. Altfel, gsete un nod i a crui
cea mai mic component este minim pentru toate nodurile din list i trece la PAS2.
10.4. BIBLIOGRAFIE
[144] Ahuja R.K., Magnanti T.L., Orlin J.B.: Network flows: Theory, Algorithms, and
Applications; Prentice Hall, Englewood Cliffs, NJ, 1993.
[145] Ahuja R.K., Mehlhorn K., J. B. Orlin, R. E. Tarjan (1990): Faster algorithms for the
shortest path problem; Journal of ACM 37, 213-223.
[146] Ahuja R.K., Orlin J.B., S. Pallottino, M. G. Scutell: Minimum time and minimum cost
path problems in street networks with periodic traffic lights. Transportation Science
2000.
[147] Bellman, R., Kalaba R.: On kth best policies; J. Soc. Indust. Appl. Math. 8 no. 8,
pp.582-588 1960.
[148] Bertsekas D.P. (a): An Auction algorithm for shortest paths; SIAM Journal on
Optimization 1, pp.425-447, 1991.
[149] Bertsekas D.P. (b), Linear network optimization: Algorithms and codes. M.I.T. Press,
Cambridge, MA, 1991.
[150] Bock F., Kantner H., Haynes J.: An algorithm (The r-th best path algorithm) for
finding and ranking paths through a network.; Research Report, Amour research
Foundation, Chicago, IL, November 15, 1957.
[151] Cherkassky B. V., A. V. Goldberg, T. Radzik: Shortest paths algorithms: Theory and
experimental evaluation; Research project, Department of Computer Science, Cornell
and Stanford Universities and Krasikova Institute for Economics and Mathematics.
1993, Mathematical Programming 73, pp.129-174, 1996.
[152] Denardo E. V., B. L. Fox: Shortest-route methods: 1. Reaching, pruning, and buckets;
Operations Research 27 (1), pp.161-186, 1979.
[153] Denardo E. V., B. L. Fox; Shortest-route methods: 2. Group knapsacks, expanded
networks, and branch-and-bound; Operations Research 27 (3), pp.548-566, 1979.
[154] Deo N., C. Pang: Shortest path algorithms: Taxonomy and annotation; Networks 14 ,
pp.275-323, 1984.
[155] Diestel Reinhelt: Graph Theory; Electronic Edition 2000, Springer-Verlag, New York
2000.
[156] Ertl G.(1996) Optimierung und Kontrolle, Shortest Path Calculations in Large Road
Networks. Project in Discrete Optimisation, Karl-Franzens-Universitat Graz.
[157] Gallo G. (1980), Reoptimization procedures in shortest path problems, Rivista di
Matematica per le Scienze Economiche e Sociali 3, 3-13.
[158] Gallo G., S. Pallottino: A new algorithm to find the shortest paths between all pairs of
nodes; Discrete Applied Mathematics 4, pp.23-35, 1982.
[159] Gallo G., S. Pallottino: Shortest path methods in transportation models; in (M. Florian,
ed.) Transportation planning models, North-Holland, pp.227-256, 1984.
[160] Gallo G., S. Pallottino; Shortest path algorithms; Annals of Operations Research 13,
pp.3-79, 1988.
[161] Gallo G., S. Pallottino; Shortest path methods: A unifying approach; Mathematical
Programming Study 26, pp.38-64, 1986.
[162] Hart P E, Nilson N J.: A formal basis of the heuristic determination of minimum cost
paths; IEEE Transactions of Systems Science and Cybernetics 4(2), 100-107, 1968.
Baze de date i algoritmi pentru ci de comunicaie
173
[163] Johnson D. B. (a): Algorithms for shortest paths, Ph.D. Thesis, Cornell Univ., tr-73-
169. 1973.
[164] Johnson D. B. (b), A note on Dijkstra's shortest path algorithm; Journal of the ACM
20(3), pp.385-388, 1973.
[165] Pallottino Stefano, Scutell Maria Grazia: Shortest Path Algorithms in Transportation
models: classicals and inovative aspects; Technical Report TR-97-06, Universit di
Pisa, Dipartamento di Informatica, Pisa Italia, 1997.
[166] Pearsons J.: Heuristic Search in Route Finding; Masters Thesis, University of
Auckland, 1998.
[167] Pollack Maurice: Solutions of the kth bets through a network Review; Journal of
mathematical analysis and applications 3, pp.547-559, 1961.
[168] Pollack Maurice: The k-th best route trough a network; Operations Research,9, no.4,
578-580 (1961);
[169] Scnteie Rodian: Development of an algorithm for k-shortest path; Simpozion cu
participare internaional, Iai, Octombrie 2003.
[170] Sedgewick R and Vitter J S.: Shortest Paths in Euclidean Graphs. Algorithmica 1,
pp.31-48, 1986.
[171] Shier D. R., C. Witzgall: Properties of labeling methods for determining shortest path
trees; Journal of Research of the National Bureau of Standards 86, pp.317-330, 1981.
[172] Shier D.R.: Iterative Methods for determining the k shortest paths in a network;
Networks, 6: pp.205-229, 1976.
[173] Shier D.R.: On algorithms for finding the k shortest paths in a network; Networks, 9:
pp.195-214, 1979.
[174] Steenbrink P. A.: Optimization of transport networks, J. Wiley, London 1974.
[175] Tarjan R. E.: Data structures and network algorithms; SIAM, Philadelphia PA 1983.
[176] Van Vliet D.: Improved shortest path algorithms for transport networks;
Transportation Research 12, pp.7-20, 1978.
Scnteie Rodian Baze de date i algoritmi pentru ci de comunicaie
ISBN 973-86343-3-4 Editura Societii Academice Matei-Teiu Botez
Iai 2003
174
ELEMENTE DE TEORIA COZILOR
11.1. INTRODUCERE
Cozile de ateptare, numite i fire de ateptare de unii autori de limb
romn (Turbu-1988 [215]), sunt un aspect uzual n viaa cotidian. ntr-o form sau
alta fiecare dintre noi suntem afectai de existena lor. Fie c ateptm la rnd la
magazin fie c suntem n main la un semafor, ne supunem acelorai legi ale cozilor.
Scopul studierii cozilor de ateptare este de a stabili structura sistemului, a
determina parametrii funcionali (timpul mediu de ateptare n sistem, media lungimii
cozii, utilizarea punctelor de deservire) i de a identifica msurile adecvate de
optimizare.
Teoria matematic utilizat n studiul cozilor este o aplicaie a teoriei
probabilitilor i se ntlnete sub diferite denumiri: teoria traficului, teoria cozilor,
teoria congestiei, teoria servirii de mas, teoria sistemelor stocastice de deservire etc.
(Cooper-1981 [187]). Termenul de teoria traficului se aplic att traficului de
informaii n telefonie i telecomunicaii ct i traficului de vehicule.
Uneori studiul teoriei cozilor se aplic n sisteme n care formarea acestora nu
este permis, ceea ce pare impropriu, dar tocmai acest tip de analiz specific poate
conduce la luarea deciziilor adecvate care s menin sistemul funcional.
Structura general a unei cozi de ateptare este reprezentat n figura
urmtoare:
Baze de date i algoritmi pentru ci de comunicaie
175


Servire
Disciplina de
servire
Linia de ateptare
(coada)
Sosire
- rata sosirilor
T
s
- timpul de servire
- rata de servire
L
C
elemente n ateptare
T
C
timp n ateptare
L elemente reinute n sistem
T timp de reinere
Ieire

Fig. 100 Structura unei sistem cu coad de ateptare
Istoric vorbind, subiectul a fost analizat i dezvoltat din punct de vedere
matematic n contextul ingineriei traficului telefonic. n prezent este aplicat pe larg n
reele de calculatoare, cercetri operaionale, inginerie civil etc. De remarcat c
tehnicile matematice de analiz sunt similare cu cele utilizate n domenii ce nu par a fi
nrudite precum inventarul stocurilor de producie, studiul amenajrilor hidrotehnice,
asigurri etc.
NOTAIA KENDALL
Aa-numita notaie Kendall este o schem de caracterizare a cozii de
ateptare. Prin aceasta se descrie att componena sistemului ct i comportarea
acestuia.
Notaia Kendall presupune existena a ase parametri:
1. distribuia sosirilor;
2. distribuia servirii;
3. numrul de puncte de deservire;
4. capacitatea maxim;
5. populaia total;
6. disciplina servirii.
Aceti parametri sunt cuprini n formula:
S P N m B A / / / / (9)
Primii trei parametri au fost tratai de Kendall n 1953 [198], urmtorii au fost
introdui ulterior.
Distribuia sosirilor - A reprezint legea statistic a intervalului de timp dup
care clienii sosesc la coad
Distribuia servirii B reprezint legea statistic a timpului de tratare a
fiecruia n cadrul punctului de deservire sau procesare.
Capitolul 11 Elemente de teoria cozilor
176
m este numrul de puncte de deservire sau procesare care sunt caracterizate
de distribuia B .
N numrul total de locuri n coad inclusiv n punctele de deservire. Dac nu
se specific altfel se consider infinit.
P este populaia total sau maximul de entiti care poate s se aeze la
coad (ex. nu putem s ne ateptm s gsim la un semafor mai multe maini dect s-
au produs). Dac nu se specific explicit altfel acest parametru se consider infinit.
S - disciplina de deservire reprezint ordinea n care entitile din coad sunt
selectate din linia de ateptare i tratate. Acestea pot fi: FCFS primul venit primul
servit; LCFS ultimul venit primul tratat; SPT prioritate de servire funcie de timp,
unde selecia se face pe baza timpului de tratare estimat (de exemplu la bcnie cnd
cei care cumpr doar un singur articol sunt servii peste rnd indiferent de momentul
sosirii); SIRO servire n ordine aleatoare; prioritate static fiecrui tip de solicitare i
se asociaz o prioritate care nu se modific n timp. n cadrul diferitelor nivele de
prioritate disciplina poate fi FCFS, LCFS, SPT etc.; prioritate dinamic prioritatea
asociat poate s se modifice.
Se pot utiliza i alte tipuri de prioriti considerate convenabil funcie de
scopul urmrit. Dac nu se indic altfel se implic o disciplin de tipul FCFS / FIFO.
Pentru parametrii A i B este comun utilizarea urmtoarelor notaii:
M (Markov) presupune o distribuie a intervalelor de sosire de tip
exponenial de forma ( )
t
e t A

=1 sau ( )
t
e t a


= unde 0 > este
parametrul de form. Avantajul unei astfel de distribuii n descrierea
comportamentului cozii const n faptul c este singura distribuie continu
care este fr memorie (proprietatea Markov) adic intervalul i
probabilitatea sosirilor nu depinde de timpul scurs i de istoricul sosirilor
anterioare (proces Poisson).
D (Deterministic) toate valorile sunt constante. Se presupune c sosirile au
loc la intervale exacte de timp sau c servirea dureaz un timp fix.

r
E (Erlang-r) Distribuia Erlang cu r faze. Constanta r este mai mare ca
zero. Forma general a distribuiei Erlang-r este:
( )
( )

=
1
0
!
1
r
i
i
t r
i
t r
e t F

, 0 > (10)

k
H (Hiper-k): Distribuia hiper-exponenial cu k faze. Forma general este
( ) ( )

=
k
i
t
i
i
e q t F
1
1

; 0 >
i
; 0 >
i
q ; 1
1
=

=
k
i
i
q (11)
Baze de date i algoritmi pentru ci de comunicaie
177
G (General) distribuia nu este specificat. Poate avea oricare form. Se
cunoate doar media i variana.
GI (General cu timp independent ntre sosiri) distribuia nu este specificat.
Poate avea oricare form. Se cunoate doar media i variana.
PROCESUL POISSON
Procesul Poisson este unul dintre cele mai importante modele
comportamentale utilizate n teoria cozilor de ateptare.
Un proces Poisson este un proces care satisface urmtoarele condiii:
Numrul de modificri ale strii n intervale nesuprapuse sunt independente
pentru toate intervalele.
Probabilitatea s existe exact o singur schimbare de stare ntr-un interval
suficient de mic
n
1
= este

= , unde este probabilitatea unei


schimbri i n este numrul de ncercri.
Probabilitatea ca ntr-un interval suficient de mic s aib loc dou sau mai
multe schimbri este 0.
Dac se consider un timp suficient de ndelungat, pe intervale discrete,
distribuia care ndeplinete aceste condiii se numete distribuia Poisson cu
probabilitatea ( ) ( )
( )
t
n
e
n
t
n t N P


= =
!
. Considernd distribuiile pe un domeniu
continuu, singura care ndeplinete condiiile de mai sus este distribuia exponenial
cu funcia distribuie a probabilitii timpului dintre dou sosiri
( ) ( ) ( )
t
e t N P t f

= = = 1 . n plus acestea sunt i distribuii fr memorie (proprietatea
Markov).
Proprietile unui proces Poisson sunt:
Superpoziia;
Selecia aleatoare;
Desprirea aleatoare.
Aceste proprieti ale proceselor Poisson sunt importante n raionamentele
utilizate n demonstraiile legate de proprietile cozilor de ateptare.
Superpoziia Dac se consider dou procese Poisson complet
independente de parametru
1
respectiv
2
atunci suprapunerea celor dou procese
va fi tot un proces Poisson cu parametru
2 1
+ = .
Superpoziia este prezentat n principiu n figura urmtoare:
Capitolul 11 Elemente de teoria cozilor
178

1
2


Fig. 101 Superpoziia a dou procese Poisson
Selecia aleatoare dac dintr-un proces Poisson de parametru se face o
selecie aleatoare n aa fel nct pentru fiecare sosire probabilitatea de selecie este
, independent de celelalte, atunci procesul rezultat este tot un proces Poisson de
parametru .
Principiul seleciei aleatoare este prezentat n figura urmtoare:





Fig. 102 Exemplu de selecie aleatoare
Desprirea aleatoare (random split) dac se consider un proces Poisson de
parametru i se desparte n dou subprocese cu probabilitile
1
i
2
astfel nct
1
2 1
= + cele dou procese rezultate sunt procese Poisson independente de
parametru
1
i
2
.

2


Fig. 103 Desprire aleatoare
Baze de date i algoritmi pentru ci de comunicaie
179
PROPRIETI ALE COZILOR DE ATEPTARE
Rata de ocupare
O caracteristic uzual a cozii este utilizarea sau rata de ocupare.
Rata de ocupare reprezint proporia de timp ct exist cereri sau clieni n
sistemul cu coad de ateptare.
Pentru sisteme cu un singur operator de servire n care distribuia sosirilor i a
servirii sunt indiferente, dar pentru care rata sosirilor este i media timpului de
servire este [ ] B E , proporia de timp n care se proceseaz cererea (se efectueaz
servirea) este dat de [ ] B E . Deoarece proporia nu poate s depeasc valoarea 1
cerina de stabilitate este [ ] 1 < B E .
n general aceast valoare calculat se numete utilizare sau rat de ocupare i
se noteaz cu . Pentru sistemele cu mai multe uniti de servire (G/G/c) rata de
ocupare este:
[ ]
1 < =
c
B E
(12)
Legea lui Little
Aceast proprietate a fost intuit anterior dar a fost sistematizat i
demonstrat de Little n 1961 [202].
Considerm un sistem n echilibru n care sosesc clieni, ateapt un interval
de timp n sistem i pleac. Dac notm rata sosirilor cu , timpul mediu de ateptare
n sistem cu T i numrul mediu de clieni cu L atunci relaia dintre cele trei este:
T L = (13)
Demonstraia lui Little, era neintuitiv, destul de complicat i necesita un
aparat matematic dificil. Ulterior Stidham 1974 a reuit s fac o demonstraie simpl
i riguroas care impune doar ca i T s existe i s fie finite.
S considerm:
( ) t L numrul de clieni din sistem la momentul t;
( ) t a numrul de clieni care au sosit n intervalul [ ] t , 0 ;
( ) t b numrul de clieni care au plecat n intervalul [ ] t , 0 ;
i
T timpul pe care clientul cu numrul i l petrece n sistem.

Capitolul 11 Elemente de teoria cozilor
180
Media ( ) L pn la momentul t este:
( )

=
t
t
d L
t
L
0
1

(14)
Rata medie a sosirilor din intervalul [ ] t , 0 este:
( )
t
t a
t
= (15)
Timpul mediu pe care un client l petrece n sistem este:
( )
( )

=
=
t a
i
i t
T
t a
T
0
1
(16)
Relund prima ecuaie i innd seama de egalitatea ( )
( )

=
=
t a
i
i
t
T d L
0
0

obinem:
( )
( )
( )
( )
t t
t
t
t
T
t a
d L
t
t a
d L
t
L

= = =

0
0
1

(17)
Dac acest calcul se face dup un timp suficient de lung ( t ) atunci
L L
t
,
t
i T T
t
.
Deci pe termen lung:
T L = (18)
Ceea ce era de demonstrat.
Teorema lui Little este indispensabil n analiza sistemelor cu coad de
ateptare.
Relaia este valabil i ntre timpul mediu de ateptare pentru a fi servit
C
T i
numrul mediu de elemente care ateapt s fie servite
C
L .
Proprietatea PASTA
Cozile de ateptare cu sosire de tip Poisson ( ) / / M posed o proprietate
special: proporia celor care sosesc i gsesc sistemul ntr-o stare S este exact aceeai
cu proporia timpului ct sistemul este n starea S considerat. Proprietatea nu este
Baze de date i algoritmi pentru ci de comunicaie
181
adevrat n general. Aceast proprietate se numete PASTA - Poisson Arrivals See
Time Averages (sosirile Poisson sesizeaz timpul mediu) ([223], [224]).
Proprietatea PASTA este un instrument puternic n analiza i calculul
caracteristicilor sistemelor cu coad de ateptare.
11.2. ANALIZA COZILOR DE ATEPTARE
Cozile pot fi stabile sau instabile. Sunt stabile acele sisteme n care procesul
evolueaz ntr-o manier predictibil. Dac solicitarea este mai mic dect capacitatea
de servire sistemul poate atinge echilibrul i putem gsi prin calcul modele
comportamentale. Dac solicitarea este mai mare dect capacitatea atunci apar
congestii, blocaje i sistemul se comport haotic.
Analiza cozii de ateptare presupune evaluarea caracteristicilor de sosire i de
ieire i stabilirea comportamentului sistemului n fiecare dintre stri sau cel puin
calcularea timpului mediu de ateptare n sistem, numrului mediu de elemente din
sistem, timpului mediu de ateptare pentru a fi servit i numrul mediu de elemente
care ateapt s fie servite.
Avem deci patru variabile L, T ,
C
L ,
C
T i trei ecuaii pe care le putem
utiliza:
T L = ,
C C
T L = , [ ]

1
+ = + =
C C
T B E T T
(19)
Unde [ ] B E este timpul mediu de servire i este rata de servire.
Pentru a afla cele patru valori mai este necesar o ecuaie. Cel mai adesea se
utilizeaz:
( )

=
=
0 i
i
i L (20)
Unde
i
este probabilitatea ca n sistem s existe exact i clieni.
MODELE DE COZI DE ATEPTARE
O coad de ateptare poate fi privit ca un proces de generare i dispariie
(birth-and-death process). Un model adecvat pentru o astfel de situaie este lanul
Markov.
Acest model const n reprezentarea strilor pe care le poate lua sistemul i
ataarea probabilitilor de tranziie ntre stri. O reprezentare general printr-o
diagram a tranziiilor este schiat n figura urmtoare.
Capitolul 11 Elemente de teoria cozilor
182

0

1

1

2

2

n-1

n

n

n+1


Fig. 104 Diagrama strilor pentru un sistem cu coad de ateptare
n diagram numrul strii reprezint numrul total de elemente aflate n
sistemul cu coad de ateptare. Verificarea stabilitii presupune existena unor ecuaii
de echilibru care s nu fie dependente de timp. Echilibrul este dinamic n sensul c
( ) t
n
- probabilitatea ca sistemul s se afle n starea n este constant.
Dup cum s-a considerat n diagram, pentru starea n sistemul are doar trei
posibiliti de tranziie n intervalul t :
1. s treac n starea 1 + n cu o probabilitate t
n
;
2. s treac n starea 1 n cu o probabilitate t
n
;
3. s rmn n starea n cu o probabilitate ( ) t
n n
+ 1 .
Ecuaia cu diferene care determin probabilitatea devine:
( ) ( ) ( ) ( ) ( ) [ ] t t t t t t t t
n n n n n n n n
+ + + = +
+ +
1
1 1 1 1
(21)
Schimbnd ce trebuie schimbat se obine:
( )
( ) ( ) ( )( )
n n n n n n n
n
t t t
dt
t d

+ + =
+ + 1 1 1 1
(22)
Dac 0 = n se aplic formula:
( )
( ) ( ) t t
dt
t d
0 0 1 1
0

= (23)
Sistemul de ecuaii de mai sus se numete ecuaiile Chapman-Kolmogorov.
DISTRIBUIA PROBABILITILOR N STARE STABIL
Pentru ca sistemul s fie n echilibru (stare stabil) este necesar ca ( )
n n
t =
constant, adic
( )
0 =
dt
t d
n

. Ecuaiile Chapman-Kolmogorov devin:


( )
1 1 1 1 + +
+ = +
n n n n n n n
(24)
pentru ,... 4 , 3 , 2 , 1 = n i
Baze de date i algoritmi pentru ci de comunicaie
183
1 1 0 0
= (25)
pentru 0 = n .
Pornind de la ecuaia (25) i rearanjnd convenabil ecuaiile (24)
,... 4 , 3 , 2 , 1 = n se obine:
1 1 + +
=
n n n n
(26)
Din ecuaiile (25) i (26) se pot calcula probabilitile
n
. Astfel:
0
1
0
1

= ,
0
2 1
1 0
2



= ,
0
3 2 1
2 1 0
3



= , ... ,
0
2 1
1 1 0

n
n
n
L
L

=
(27)
Evident
1
0
=

= n
n
(28)
Notnd
n
n


L
L
2 1
1 1 0
cu
n
Q rezult:
1 1
1
0
=

= n
n
Q (29)
Deci probabilitatea ca n sistem s nu fie nici un client este dat de:

+ =

=1
0
1 1
n
n
Q (30)
Verificarea stabilitii este dat de <

=1 n
n
Q .
11.3. COADA DE ATEPTARE (M/M/1)
Sistemul de ( ) 1 / / M M este caracterizat de o rat egal a sosirii i a servirii
indiferent de starea n care se afl.

0


1


2




n



Fig. 105 Diagrama tranziiilor pentru (M/M/1)
Capitolul 11 Elemente de teoria cozilor
184
Aplicnd ecuaiile (24) i (25) rezult:
1 0
= (31)
i
( )
1 1 +
+ = +
n n n
(32)
nlocuind corespunztor obinem:
0 1

= ,
0
2
2
2

= ,
0
3
3
3

= , ... ,
0

n
n
n
= , ... (33)
Din ecuaia (29) i innd cont de faptul c

= (ocuparea) rezult:

+ =

=

1
1
lim 1 1
0
0
0
1
0
n
n
n
n
n
n
n
(34)
Evident sistemul este stabil doar dac 1 < caz n care

=
1
1
1
0
,
(35)
i deci
=1
0
, ( ) = 1
n
n
(36)
Pentru calculul numrului mediu de elemente aflate n sistem (aflate n
ateptare i n servire) vom face suma numrului de elemente din fiecare stare
ponderate cu probabilitatea strii:
( ) ( ) ( )
( ) ( )
( )
2
0 0
1
0 0
1
1
1
1
1
1
1 1 1

=
= = = =


=

=
d
d
d
d
n n n L
n
n
n
n
n
n
n
n

(37)
ceea ce conduce la formula:
( )

= L
(38)
Baze de date i algoritmi pentru ci de comunicaie
185
0
2
4
6
8
10
12
14
16
18
20
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
L

Fig. 106 Distribuia numrului mediu de cereri n sistem funcie de ocupare
Aplicnd formula lui Little timpul mediu de ateptare n sistem este:
( ) ( )


=

= =
1 L
T
(39)
Timpul mediu petrecut n ateptarea servirii este timpul mediu de ateptare n
sistem din care se scade timpul mediu de servire:
( ) ( )


=

= =
1 1 1
T T
C

(40)
De unde lungimea medie a cozii n ateptarea servirii este:
( ) ( )



= =
2
C C
T L (41)
11.4. COADA DE ATEPTARE (M/M/c)
Sistemul de ( ) c M M / / este caracterizat prin prezena unui numr de posturi
de servire identice. Rata sosirii este constant indiferent de starea n care se afl
sistemul dar rata de servire variaz. Principiul este prezentat n diagrama tranziiilor
din figura urmtoare.

0


1

2
2

3

c
c

c

c
n

c

Fig. 107 Diagrama tranziiilor pentru (M/M/c)
Capitolul 11 Elemente de teoria cozilor
186
Rata servirii este diferit deoarece pe msur ce exist mai multe cereri exist
i posibilitatea de a le trata paralel pn cnd toate posturile de servire sunt ocupate.

Disciplina de
servire

Servire 1
Ts - timpul de servire
- rata de servire
Linia de ateptare
(coada)
Sosire
- rata sosirilor
LC elemente n ateptare
T
C
timp n ateptare
Ieire 1

Servire 2
Ts - timpul de servire
- rata de servire

Servire c
T
s
- timpul de servire
- rata de servire
Ieire 2
Ieire c

Fig. 108 Structura unei sistem cu coad de ateptare (M/M/c)
Conform (25) i (26) relaiile ntre probabiliti sunt:

1 0
= ,
2 1
2 = ,
3 2
3 = ,...,
c c
c =
1
,
1 +
=
c c
c ,...,
n n
c =
1

(42)
nlocuind iterativ corespunztor obinem:


0 1
= ,
2
0 0 1 2
2
1
2 2

= = =

,
3
0
2
0 2 3
! 3
1
3 2
1
3

= =

,...,
c
c
c


!
1
0
,
1
0 0 1
!
1
!
1
+
+

= =
c c
c c
c c c c c

,...,
n
c n
n
c c


!
1
0
,...
(43)
sau altfel spus:
( )
n
n
n

!
1
0
= pentru c n ,..., 0 = (44)
i
( )
n
c n
n
c c


=
!
1
0
pentru c n > (45)
Baze de date i algoritmi pentru ci de comunicaie
187
Ecuaia (28) devine:

= =


c
c
c n
c c n
c
c
n
n
c n
c n c
c
n
n
n
n
!
1
!
1
! !
1
1
1
0
0
0
1
0
0
0
(46)
Probabilitatea ca n sistem s nu fie nici un client este:
1
1
0
0
!
1
!
1

c
c
c n
c
c
n
n
(47)
Prezint importan n cazul ( ) c M M / / situaia cnd toate posturile de
servire sunt ocupate i un nou sosit trebuie s atepte.

= =


=

=
c
c
c c c
c
c n
c n c
c n
n w
! !
0 0
(48)
Numrul de clieni care ateapt s fie servii este

= =


=

=
+
c c
n
c
n L
w
n
n c
n
n c C
0
0
0
!
(49)
COMPARAIE: UN SISTEM CU DOU COZI (M/M/1) I O COAD (M/M/2)
Considerm c avem dou posturi de servire i putem direciona sosirile n
aa fel nct s existe dou sisteme identice i separate cu cozi de ateptare sau s
existe un singur sistem cu o singur coad dar cu dou posturi de servire.

Disciplina de
servire

Servire 1
T
s
- timpul de servire
- rata de servire
Linia de ateptare
L
C
elemente n ateptare
T
C
timp n ateptare
Ieire 1

Servire 2
T
s
- timpul de servire
- rata de servire
Disciplina de
servire
Sosire
- rata sosirilor

Linia de ateptare
L
C
elemente n ateptare
T
C
timp n ateptare
Ieire 2
/2
/2

Fig. 109 Structura sistemului cu dou cozi (M/M/1)
Capitolul 11 Elemente de teoria cozilor
188

Disciplina de
servire

Servire 1
T
s
- timpul de servire
- rata de servire
Linia de ateptare
(coada)
Sosire
- rata sosirilor
L
C
elemente n ateptare
T
C
timp n ateptare

Servire 2
T
s
- timpul de servire
- rata de servire
Ieire 1
Ieire 2

Fig. 110 Sistemul cu o coad (M/M/2)
Pentru primul caz numrul mediu de clieni care ateapt s fie servii n cele
dou cozi:
( )
( )

= =

2
1
2
2
2 2
2
2
) 1 / / ( 2 , C M M C
L L
(50)
Pentru cazul cu ir de ateptare unic i dou posturi de servire, conform (25)
i (26) relaiile ntre probabiliti sunt:

1 0
= ,
2 1
2 = ,
3 2
2 = ,
4 3
2 = ...,
n n
2
1
=

(51)
nlocuind iterativ corespunztor obinem:


0 1
= ,
2
0 0 1 2
2
1
2 2

= = =

,
3
0
2
0 2 3
2
1
2
1
2 2
1
2

= =

,
4
2
0
3
0 3 4
2
1
2
1
2 2
1
2
1
2

= =

...
n
n
n


2
1
2
1
2
0

(52)
Probabilitatea ca n sistem s nu fie nici un client este:


+ =

2
2
2
1
1
2
0
(53)
Probabilitatea ca un nou client s nu fie servit este :
Baze de date i algoritmi pentru ci de comunicaie
189

=
2 2
2
2
1
2
2
2 2
w
(54)
Numrul mediu de entiti n ateptare este:
( )

=
2 2 2
2
2 / / , w M M C
L (55)
Transformnd corespunztor obinem:
( )
( )
( ) ( )
( )
( )





+
=
+
=
2 2 2
1
1 / / 2 ,
2
2 / / , M M C M M C
L L
(56)
Dar i sunt pozitivi i pentru oricare valori ,
( )
1
2
<
+


(57)
Deci pentru oricare , este adevrat formula:
( ) ( ) 1 / / 2 , 2 / / , M M C M M C
L L <
(58)
Pentru verificare prezentm comparativ n tabelul urmtor numrul mediu de
clieni n ateptare pentru diferite valori ale raportului .
Tabelul 10. Comparare lungimilor cozilor


( ) 1 / / 2 , M M C
L
( ) 2 / / , M M C
L
1.99999 399996.00 199997.50
1.999 3996.00 1997.50
1.9 36.10 17.59
1.0 1.00 0.33
0.9 0.74 0.23
0.8 0.53 0.15
0.7 0.38 0.10
0.6 0.26 0.06
0.5 0.17 0.03
0.4 0.10 0.02
0.3 0.05 0.01
0.2 0.02 0.00
0.1 0.01 0.00
Capitolul 11 Elemente de teoria cozilor
190
Concluzia ce se impune este c sistemele care au dou posturi de servire ce
lucreaz simultan sunt mai eficiente dac sunt configurate cu un fir unic de ateptare
dect dac lucreaz cu dou cozi independente. Acelai lucru este valabil i pentru
cazul general al existenei mai multor posturi de servire ( 1 > c ).
11.5. COZI DE ATEPTARE CU CAPACITATE FINIT
Pn acum am studiat sisteme de servire n care capacitatea irului de
ateptare era infinit. Evident asemenea situaie este greu de susinut n practic. n
domeniul transporturilor, ca i n majoritatea domeniilor, capacitatea constructiv a
irurilor de ateptare este limitat. Solicitrile de servire (clienii) sosesc i rmn n
coada de ateptare dac exist spaiu, altfel solicitrile se pierd. Numrul total de
locuri din sistem include numrul de posturi de servire. n continuare vom prezenta
cteva tipuri de cozi de ateptare cu capacitate finit ncepnd cu cea mai simpl:
( ) 1 / 1 / / M M .
SISTEME CU COZI DE ATEPTARE (M/M/1/1)
Acest tip de serviciu cu coad de ateptare const dintr-un singur post de
servire cu timpul de servire ce urmeaz o distribuie exponenial de rat n care
sosesc cereri de servire ce urmeaz o distribuie o distribuie exponenial cu rata .
Sistemul nu are locuri suplimentare de ateptare. Cererile care sosesc n perioada ct
o servire este n curs se pierd.
Sistemul este foarte simplu de reprezentat: are doar dou stri posibile,
reprezentate n diagrama urmtoare:

0


1

Fig. 111 Diagrama tranziiilor pentru (M/M/1/1)
n stare staionar
1 0
= (59)
i
1
1 0
= + (60)

nlocuind obinem:
Baze de date i algoritmi pentru ci de comunicaie
191
1
0 0
= +

1 1
0
=

+
=
0
(61)
i


+
=
+
= =
0 1

(62)
Deoarece i sunt valori pozitive, indiferent de valoarea lor exist o stare
de echilibru.
Not: Interesant este aici de observat c dac i sunt egale
probabilitatea ca s existe un client n servire este 2 1 . Deci un asemenea serviciu
pornete din proiect cu 50% timp mort.
SISTEME CU COZI DE ATEPTARE (M/M/1/N)
Serviciul prezentat n seciunea anterioar trebuie mbuntit prin adugarea
de spaiu de ateptare. Se creeaz un numr suplimentar de 1 n locuri. Capacitatea
total a sistemului va fi n . Cererile de servire sosite rmn n coad dac este spaiu
sau se pierd. Comportamentul sistemului este figurat n diagrama urmtoare:

0


1


2




n-1


n

Fig. 112 Diagrama tranziiilor pentru (M/M/1/N)
Aplicnd ecuaiile (25) i (26) rezult:
1 0
= (63)
i
0 1

i
i i

= =

(64)
pentru N i ,..., 4 , 3 , 2 , 1 =
1
0
0
=

=
N
i
i

1
0
0
=

=
N
i
i


( )
( )
1
1
1
1
0
=

N

(65)
Capitolul 11 Elemente de teoria cozilor
192
Notnd cu

= : a , dac 1 a , probabilitatea ca n sistem s nu fie nici o


cerere de servire este:
1
0
1
1
+

=
N
a
a
(66)
i pentru N i ,..., 4 , 3 , 2 , 1 =
( )
1
1
1
+

=
N
i
i
a
a a
(67)
n cazul n care 1 = a , probabilitatea ca n sistem s nu fie nici o cerere este:
1
1
0
+
=
N
(68)
iar pentru N i ,..., 4 , 3 , 2 , 1 =
1
1
+
=
N
i
(69)
Probabilitatea ca un client s fie respins este
N
.
Numrul mediu de clieni n sistem este dat de relaia:
( ) ( )
1
1
0
1
0
1
1
1 1
1
+
+
=
+
=

+

= =

N
N N
i
N
i N
i
i
a
a N
a
a
a
a a
i i L , 1 a (70)
i
2 1
0 0
N
N
i
i L
N
i
N
i
i
=
+
= =

= =
, 1 = a (71)
Dac toate cele N locuri din sistem sunt ocupate atunci solicitrile
suplimentare sunt respinse. Deci rata intrrilor care sunt reinute n sistem este:
( ) ( )
0
1 1 = =
N r
(72)
n consecin, timpul mediu petrecut n sistem este:
r
L T = (73)
Baze de date i algoritmi pentru ci de comunicaie
193
CARACTERISTICI GENERALE (M/M/c/N)
Acest tip de sistem este caracterizat prin sosiri care respect o distribuie
exponenial de rat , un numr de c puncte de servire cu timp servire cu distribuie
exponenial de rat i o capacitate de N locuri n sistem inclusiv n punctele de
servire. Comportamentul lor este figurat n diagrama urmtoare:

0


1

2
2

3

c
c

c

c
n

Fig. 113 Diagrama tranziiilor pentru cozile de ateptare (M/M/c/N)
Cnd se atinge echilibrul, probabilitile pentru fiecare stare sunt:
i
i
i


!
1
0
pentru c i ,..., 0 = (74)
i
i
c i
i
c c


!
1
0
pentru N i c (75)
Notnd ) ( : c a = , ecuaia (28) devine:
( ) ( ) ( )
( )

+ = + = =


=

= =
c N
i
i
c c
i
i
c N
i
i c
c
i
i
N
i
i
a
c
ca
ca
i
a ca
c
ca
i
0
1
0
0
0
0
1
0
0
0
! !
1
! !
1
1


(76)
Probabilitatea ca n sistem s nu fie nici un client este:
( )
( )
1
0
1
0
0
! !
1

+ =

c N
i
i
c c
i
i
a
c
ca
ca
i
(77)
Numrul mediu de solicitri care ateapt s fie servite este dat de:
( )
( )
( ) ( ) ( )
( )
2
1
0
0
0
1
1
1 1
!
!
a
a c N a c N
c
a ca
ia
c
ca
c i L
c N c N
c
c N
i
i
c N
c i
i c

+ +
=
= =
+

= + =

(78)
Capitolul 11 Elemente de teoria cozilor
194
COZI DE ATEPTARE (M/M/c/c)
Cozilor de tipul ( ) c c M M / / / se caracterizeaz prin existena unui numr de
locuri n sistem egal cu numrul de posturi de servire (nu exist locuri suplimentare).
Niciodat un client acceptat nu va atepta pn s fie servit. O cerere intr direct n
procesare sau nu este admis de loc. Comportamentul acestui tip de sistem este
figurat n diagrama urmtoare:

0


1

2
2

3

c
c

Fig. 114 Diagrama tranziiilor pentru cozile de ateptare (M/M/c/c)
Cnd se atinge echilibrul, probabilitile pentru fiecare stare sunt:
i
i
i


!
1
0
pentru c i ,..., 0 = (79)
Notnd

= : a , ecuaia (28) devine:



= =
= =
c
i
i c
i
i
i
a
0
0
0
!
1 (80)
Probabilitatea ca n sistem s nu fie nici-un client este:
1
0
0
!

=

=

c
i
i
i a (81)
De interes este n acest caz probabilitatea ca cererile de servire s fie pierdute.
Aceasta se ntmpl cnd toate cele c locaiile sunt ocupate:

=
c
i
i
c
c
i a
c a
0
!
!

(82)
Aceasta este formula de pierdere a lui Erlang, dedus de A.K. Erlang n 1917.
Aceasta nseamn c
c
din solicitri vor i pierdute. Este interesant de remarcat
faptul c formula de pierdere este adevrat indiferent de distribuia servirilor.
Baze de date i algoritmi pentru ci de comunicaie
195
Pentru a ca sistemul s fie eficient este necesar ca
c
s aib o valoare sub un
prag considerat.
11.6. COZILE DE ATEPTARE DE TIPUL (M/G/1)
Acestea sunt cozi n care sosirile sunt procese Poisson cu rata 0 > i n care
timpii de servire a cererilor sunt independente cu aceeai funcie cumulat a
distribuiei ( ) t G . n termeni probabilistici spunem c dac
i
s i
j
s sunt timpii de
servire a cererii i i j unde j i atunci:
i
s i
j
s variabile aleatoare independente; i
( ) ( ) ( ) 0 , = = t t s P t s P t G
j i
.
Media timpului de servire este [ ] [ ] [ ] 1 = = = B E S E S E
j i
unde este rata
servirii. Abaterea standard a timpilor de servire este [ ] ( ) [ ]
B i
B E s E =
2
. Ordinea de
tratare a cererilor se presupune a fi primul venit primul servit. Raportul se
noteaz cu .
Numrul de cereri din sistem nu se mai supune regulilor procesului Markov.
Chiar dac nu mai putem beneficia de avantajele acestui tip proces, totui
caracteristicile acestui tip de coad (lungime, timp de ateptare, timp n sistem) pot fi
deduse. Mai nti ca calculm
c
T timpul mediu de ateptare pentru a fi servit. Acesta
este timpul pe care un client l petrece n sala de ateptare. Acesta este timpul
mediu de ateptare pentru ncheierea sarcinii n curs la care se adun suma timpilor de
servire a cererilor care atept.
[ ] B E N T T
c R c
+ = (83)
Unde :

R
T timpul mediu de ateptare pentru terminarea pentru ncheierea
procesrii n curs.

c
N numrul mediu de cereri care ateapt;
[ ] B E timpul mediu de servire;
R
T este timpul pe care l are de ateptat cel care intr n coada de ateptare
pentru a se ncheia de procesat cererea n curs. Dac n sistem nu este nimeni atunci
0 =
R
T .
Conform legii lui Little media lungimii cozii este:
c c
T N = (84)

Capitolul 11 Elemente de teoria cozilor
196
nlocuind obinem:
[ ] B E T T T
c R c
+ =
R c c
T T T =



=
1
R
c
T
T (85)
Acum trebuie s calculm valoare
R
T . Pentru o mai bun nelegere s
reprezentm timpul rmas pentru fiecare dintre cererile de servire.

t
R
T

R
T

S
1
S
2
S
3
S
i
S
i+1
S
i+2
S
n


Fig. 115 Timpul rmas pn la sfritul servirii
Fiecare dintre triunghiurile din figur este drept i isoscel. Numrul de
triunghiuri este dat de rata sosirilor
R
T n = .
( )

= =
=

= =
n
i
i
n
i
i
t
R R
s
n t
n
s
t
d T
t
T
1
2
1
2
0
1
2
1
2
1 1 1

(86)
La limit, pentru starea staionar,
R
T ia forma:
[ ]
2
2
1
S E T
R
= (87)
Revenind la timpul de ateptare n coad pentru a fi servit obinem:
[ ]
( )

=
1 2
2
S E
T
c
(88)
Aceasta este formula Pollaczek-Hincin pentru medie. Calculnd [ ]
2
S E
rezult:
[ ] [ ]
( )
[ ]
( )

+
=

+
=
1 2
) 1 (
1 2
) (
2 2 2 2
B B
c
B E
T (89)

Baze de date i algoritmi pentru ci de comunicaie
197
Timpul total de ateptare este:
[ ]
[ ]
( )
1
1 2
) 1 (
2 2
+

+
= + =
B
c
B E T T (90)
Corespunztor se calculeaz numrul de cereri din coad:
[ ]
( )

+
= =
1 2
) 1 (
2 2 2
B
c c
T N (91)
i respectiv:
[ ]
( )

+
= =
1 2
) 1 (
2 2 2
B
T N (92)
Aceste formule sunt suficient de generale prin condiiile impuse.
Pentru verificare s considerm cazul ( ) 1 / / M M unde [ ]
B
B E = :
[ ] [ ]
( )
[ ]
( ) ( )

+
=

+
=
1 2
) 1 ( ) 1 (
1 2
) (
2 2 2 2
B
c
B E
T (93)
i
( ) ( ) ( ) ( )

+
=

+
= +

=
1
1
1
1
1 1
1
T
(94)
Valorile obinute sunt identice cu cele calculate la subcapitolul anterior
corespunztor.
11.7. ANALIZA COZILOR DE TIPUL (M/G/-/-/N)
O clas de cozi care poate fi remarcat este ( ) N G M / / / / care este
caracterizat prin faptul c populaia care genereaz intrrile este limitat. Aceasta
nseamn c pe msur ce n coada de ateptare se acumuleaz cereri sau clieni, n
exterior rmn mai puine entiti care s genereze cereri de servire. Rata intrrilor va
scdea proporional cu scderea populaiei externe. Deci rata intrrilor nu mai este
fix, ca la situaiile precedente, ci variabil dup o anumit lege.
Pentru exemplificare vom considera cazul sistemelor cu coad de ateptare
( ) N M M // 1 / / .
Acest tip de coad de ateptare este caracterizat de prezena unui singur post
de servire cu distribuia timpului de servire de tip exponenial cu parametrul ,
Capitolul 11 Elemente de teoria cozilor
198
numrul de locuri n coad este infinit, sosirea se face aleator cu distribuia timpilor
de sosire de tip exponenial. Populaia extern este N , de aceea sunt n fapt necesare
doar N locuri n coada de ateptare. Elementele populaiei considerate sunt identice i
pot genera cereri de servire cu o rat
e
. Avnd o populaie p , rata intrrilor va fi
e
p . Comportamentul sistemului este figurat schematic n diagrama urmtoare:

0
N
e


1

2

N-1

N
(N-1)
e
(N-2)
e
2
e

e


Fig. 116 Diagrama tranziiilor pentru (M/M/1/N)
Aplicnd ecuaiile (25) i (26) rezult:
1 0
=
e
N

e
N
0
1
=
(95)
i
( )
0 1
!
! 1

i
i
e
i
e
i
i
N i N
=
+
=

(96)
pentru N i ,..., 4 , 3 , 2 , 1 = . Relaia se verific de fapt i pentru 0 = i . De aceea
putem scrie:
1
!
!
0
0
0
=

=

= =
N
i
i
e
N
i
i
i
N


(97)
Notnd cu

e
a = : , obinem:
1
!
!
0
0
=

=
N
i
i
i
a
N (98)
Adic probabilitatea ca n sistem s nu fie nici o cerere este
1
0
0 0
!
!

=

=

N
i
i
i
a
N (99)
Celelalte probabiliti se calculeaz aplicnd corespunztor ecuaiile (96).
Baze de date i algoritmi pentru ci de comunicaie
199
11.8. COZI DE ATEPTARE CU PRIORITATE
NOIUNI GENERALE
Nu totdeauna cererile care ateapt servirea ntr-o coad sunt egale din
punctul de vedere al celui care face servirea. Unii clieni au prioritate n faa altora.
Prioritatea poate fi continu sau discret (se mpart cererile n cteva clase de
prioritate i se face departajarea ntre ei). Aceast prioritate poate fi stabilit la intrare
n coad i rmne fix pe durata ateptrii sau se poate modifica pe parcurs.
Exemple de cereri de servire cu prioritate fix sunt vehiculele poliiei,
salvrii, pompierilor care pot trece pe culoarea roie a semaforului n timp ce celelalte
stau n coada de ateptare format.
Un exemplu de prioritate ce se modific pe parcurs este dat de coada de
ateptare la ANL
1
pentru construirea de case pentru tineri. Prioritatea este dat de o
serie de factori legai de situaia familial, de venituri dar i de timpul petrecut n
coada de ateptare. Deoarece servirea n acest caz se face pe loturi, de fiecare dat
cnd se face o servire se reevalueaz prioritatea.
Pentru cazul n care se asociaz o prioritate fix, cererile care au aceeai
prioritate sunt servite ntr-o ordine dintre cele descrise n sub-capitolul introductiv (de
obicei ordinea este primul sosit primul servit). n general se asociaz un indice de
prioritate. Se face convenia c un indice de valoare mai mic reprezint o prioritate
mai mare.
Sistemele cu cozi de ateptare cu prioriti pot reaciona diferit la o cerere
prioritar cnd n curs de servire se afl o cerere cu o prioritate mai sczut. Aceste
cereri pot s atepte sau pot bloca servirea n curs lundu-i locul.
Funcie de modul de tratare a cererilor sistemele cu cozi de ateptare cu
prioriti pot fi:
fr ntrerupere (eng. non-preemptive) cererile cu o prioritate mai sczut
aflate n procesul de servire nu sunt ntrerupte de sosirea unei cereri mai
prioritare;
cu ntrerupere (eng. preemptive) cererile aflate n servire sunt ntrerupte
pentru a face loc servirii unei cereri de prioritate mai mare.
cu ntrerupere reluat (eng. preemptive resume) cererile
ntrerupte sunt reluate exact de unde au fost lsate i operaia se
continu pn la nchiere sau la sosirea unei alte cereri prioritare.
cu ntrerupere repetat (eng. preemptive repeat) cererile
ntrerupte sunt reluate de la nceput, operaiile deja efectuate se
pierd.

1
Agenia Naional a Locuinei
Capitolul 11 Elemente de teoria cozilor
200
COZI DE ATEPTARE CU PRORITATE I NTRERUPERE
Acest tip de coad de ateptare va procesa ntotdeauna o cerere cu cea mai
nalt prioritate. Pentru rezolvarea cozilor de tip ( ) / / / M M cu prioritate vom trasa
diagrama tranziiilor (este vorba de procese Poisson) i se vor trata sistemele de
ecuaie rezultate obinnd probabilitile strilor.
Vom ncepe analiza prin prezentarea cozilor de tip ( ) 1 / / M M cu prioritate.
0,0

1

1,1
1,0
0,1

1

2,1
2,0

2

1,2
0,2

2

2,2

2

2,3
1,3

1

1

1

2

3,2
3,1

1


Fig. 117 Diagrama tranziiilor pentru cozile de ateptare (M/M/1) cu dou
niveluri de prioritate
Pentru rezolvarea acestui tip de sistem trebuie s scriem ecuaiile de echilibru
n fiecare nod.
Ca un exemplu vom considera sistemul de tip ( ) 3 / 1 / / M M care are dou
niveluri de prioritate. Acest tip de coad de ateptare ar putea fi un model pentru un
atelier de reparaii care are doar trei locuri inclusiv cel de pe ramp. Sarcina sa este de
a repara prioritar mainile proprii ale organizaiei care patroneaz atelierul (ex. o
antrepriz de lucrri drumuri i poduri), dar din motive de autofinanare accept cereri
de la populaie. Regulamentul spune c dac o main a organizaiei solicit o
reparaie i exist locuri libere, reparaia unei maini externe este ntrerupt i maina
proprie este reparat. Mainile de aceeai prioritate se trateaz dup disciplina primul
sosit primul servit. Cererile deja acceptate (mainile externe au pltit deja avans) nu
pot fi eliminate. Dac toate locurile sunt ocupate atunci cererea este directat spre alt
atelier.
Pentru cazul ( ) 3 / 1 / / M M cu dou niveluri de prioritate diagrama tranziiilor
are urmtoarea form:
Baze de date i algoritmi pentru ci de comunicaie
201

0,0

1

1,1
1,0
0,1

1

2,1
2,0

2

1,2
0,2

1

0,3
3,0

Fig. 118 Diagrama tranziiilor pentru cozile de ateptare (M/M/1/3) cu dou
niveluri de prioritate
Analiznd mulimea strilor posibile i considernd echilibrul n noduri,
pentru starea staionar putem scrie:
( )
2 1 , 0 1 0 , 1 2 1 0 , 0
+ = + ,
( )
1 0 , 2 1 0 , 0 1 2 1 0 , 1
+ = + + ,
( )
2 2 , 0 1 1 , 1 2 0 , 0 2 2 1 1 , 0
+ + = + + ,
( )
1 1 , 2 2 0 , 1 1 1 , 0 1 2 1 1 , 1
+ + = + + ,
( )
1 0 , 3 1 0 , 1 1 2 1 0 , 2
+ = + + ,
( )
2 3 , 0 1 2 , 1 2 1 , 0 2 2 1 2 , 0
+ + = + + ,
2 0 , 2 1 1 , 1 1 1 , 2
+ = ,
1 2 , 0 2 1 , 1 1 2 , 1
+ = ,
1 0 , 2 1 0 , 3
= ,
2 2 , 0 2 3 , 0
=
(100)
La ecuaiile anterioare se adaug:
1
3 , 0 0 , 3 2 , 1 1 , 2 2 , 0 0 , 2 1 , 1 1 , 0 0 , 1 0 , 0
= + + + + + + + + +
(101)
Din rezolvarea ecuaiilor se obine distribuia probabilitilor.
Capitolul 11 Elemente de teoria cozilor
202
11.9. REELE CU COZI DE ATEPTARE
Cazurile studiate anterior sunt doar situaii n care avem sisteme cu singur
coad de ateptare izolat. n practic ns, aceste sisteme sunt conectate ntre ele i
formeaz reele de cozi de ateptare care trebuie considerate i studiate n
complexitatea lor. O cerere de servire ateapt ntr-o coad, este rezolvat dup care
trece n alta i aa mai departe. n final un client poate s ias din sistem sau poate s
reia procesul de la nceput.
O reea cu cozi de ateptare poate fi deschis sau nchis.
ntr-o reea deschis, cererea / clientul vine din exteriorul sistemului,
parcurge cozile n totalitate sau n parte i prsete sistemul. De obicei, n acest caz,
se consider c populaia de cereri / clieni este infinit. Sistemul poate conine
conexiuni inverse i puncte de desprire. Cozile de ateptare pot avea stabilite
prioriti.

3
L
C3
, T
C3

4
L
C4
, T
C4

2
L
C2
, T
C2

5
L
C5
, T
C5

6
L
C6
, T
C6

8
L
C8
, T
C8

7
L
C7
, T
C7

9
L
C9
, T
C9

A B

Fig. 119 Exemplu schematic de reea deschis cu cozi de ateptate
n figura de mai sus se poate vedea modelul unui sens de circulaie pe un
bulevard. Autovehiculele intr n sistem, parcurg primul segment intr n intersecia
A, ateapt la semafor, trec i intr in intersecia B unde, din nou, trebuie s atepte la
semafor. Din anumite considerente n a doua intersecie este interzis ntoarcerea la
stnga. De aceea, n intersecia anterioar (A) trebuie s ocolim pe o strad lateral i
s venim n intersecia B perpendicular pe bulevard.
Fiecare dintre fluxurile de vehicule este modelat prin cozi de ateptare
separate i puncte n care traficul se mparte pe direcii diferite.
Reeaua nchis presupune c ntreaga populaie care poate genera cereri de
servire este cuprins n interiorul sistemului.
Baze de date i algoritmi pentru ci de comunicaie
203

2
L
C2
, T
C2

3
L
C3
, T
C3

4
L
C4
, T
C4

5
L
C5
, T
C5

8
L
C8
, T
C8

6
L
C6
, T
C6
7
L
C7
, T
C7

1
L
C1
, T
C1


Fig. 120 Exemplu schematic de reea nchis cu cozi de ateptate
n practic, traficul trece prin mai mult de un nod. Ca o consecin, vehiculele
trebuie s atepte n cteva cozi individuale. Un set de cozi conectate se studiaz ca
reea de cozi de ateptare. Reelele pot fi studiate sub diferite presupuneri privind
distribuia sosirilor, distribuia servirii, disciplina servirii, dimensiunea zonei de
ateptare etc. (Balsamo et al. 2001 [181]).
Recensmintele de trafic anterioare ne pot indica numrul de vehicule pe
intervale de timp pentru fiecare zi a sptmnii. Acestea ar fi sosirile. Pe de alt parte
fiecare sector rutier are o anumit capacitate maxim. O analiz preliminar poate
porni de presupunerea c fluxul de vehicule i procesul de trecere sunt deterministice.
Nu este o realitate ci doar o aproximare convenabil utilizat n procesul de modelare.
Pentru a avea rezultate ct mai corecte ar trebui s presupunem o reea
deschis cu cozi de ateptare ( ) 1 / / G G (Vandaele et al. 1999 [218]). Modelul
( ) 1 / / M M a fost intens utilizat din cauza simplitii, dar nu este util fiind departe de
realitate. Pentru benzi multiple Jain i Smith au dezvoltat un model ( ) k G G / / [195].
n condiii de trafic necongestionat, Van Woense i Vandaele au demonstrat c cel
mai bun model ce se poate obine este ( ) 1 / / G M [216].
11.10. BIBLIOGRAFIE
[177] ***: Analysis of Some Queuing Models in Real-Time Systems (2nd Ed) - IBM
Technical Publications Dept. 1971.
[178] Abramowitz M., I.A. Stegun: Handbook of mathematical functions, Dover, 1965.
[179] Adan I., Y.Zhao: Analyzing GI/Er/1 queues; Opns. Res. Lett., 19 (1996), pp. 183-190.
[180] Adan I.J.B.F., W.A. van de Waarsenburg, J. Wessels: Analyzing Ek/Er/c queues;
EJOR, 92, pp.112-124, 1996.
[181] Balsamo, S. de Nitto Person, V., R. Onvural: Analysis of Queueing Networks with
Blocking; Kluwer Academic Publishers, 2001.
Capitolul 11 Elemente de teoria cozilor
204
[182] Bruijn N.G. de: Asymptotic methods; Dover, 1981.
[183] Bunday B.D.: An introduction to queueing theory; Arnold, London, 1996.
[184] Buzacott J.A., J.G. Shanthikumar: Stochastic models of manufacturing systems;
Prentice Hall, Englewood Cliffs, 1993.
[185] Cohen J.W.: On regenerative processes in queueing theory; Springer, Berlin, 1976.
[186] Cohen J.W.: The single server queue; North-Holland, Amsterdam, 1982.
[187] Cooper Robert B.: Introduction to Queueing Theory; Second edition, Elsevier North
Holland Inc., New York, 1981. Fourth Edition, Ceep Press Books, 1990
[188] Daganzo, C.F.: Fundamentals of Transportation and Traffic Operations; Elsevier
Science Ltd., Oxford, 1997.
[189] Dshalalow J.H. (editor): Advances in Queueing: Theory, Methods and Open Problems;
CRC Press, Boca Raton, 1995.
[190] Gross Donald, Harris Carl M.: Fundamentals of queueing theory; Wiley, Chichester,
1985. 1998
[191] Heidemann, D.: A queueing theory approach to speed-flow-density relationships,
Transportation and Traffic Theory; Proceedings of the 13th International Symposium
on Transportation and Traffic Theory, Lyon, France, 14-26 July 1996.
[192] Heijden M.C. van der: Performance analysis for reliability and inventory models;
Thesis, Vrije Universiteit, Amsterdam, 1993.
[193] Heyman D.P., M.J. Sobel: Stochastic models in operations research; McGraw-Hill,
London, 1982.
[194] Hillier F. S., Lieberman G. J.: Introduction to Operations Research; (6th Ed) 1995.
[195] Jain, R., Smith J.M.: Modelling vehicular traffic flow using M/G/C/C state dependent
queueing models; Transportation Science, 31, pp.324-336, 1997.
[196] Johnson M.A.: An emperical study of queueing approximations based on phase-type
approximations; Stochastic Models, 9 (1993), pp.531-561.
[197] Kendall DG: Some Problems in the Theory of Queues; Jurnal of the Royal Statistical
Society, B13, pp.151-185, 1951.
[198] Kendall DG: Stochastic Processes Occurring in the Theory of Queues and Their
Analysis by Means of the Imbadded Markov Chaine; The Annals of Mathematical
Statistics 24, pp.338-354, 1953.
[199] Kleinrock Leonard.: Queueing Systems, Volume I: Theory; Wiley, New York, 1975.
[200] Kleinrock Leonard: Queueing Systems - Volume II: Computer Applications; Wiley-
InterScience, 1976
[201] Lee A.M.: Applied queuing theory; MacMillan, London, 1968.
[202] Little J.D.C.: A Proof of the Queuing Formula: N = T; Operations Research 9, No.3,
pp.383-387, 1961.
[203] Marie R.A.: Calculating equilibrium probabilities for N C n
k
/ 1 / / ) ( queue; in:
Proceedings Performance' 80, Toronto, (May 28-30, 1980), pp.117-125.
[204] Newell G.F.: Applications Of Queueing Theory; Chapman and Hall, London 1971.
Second Edition, 1982.
[205] Page E.: Queueing Theory; in Operation Research, 1972
[206] Ross S.M.: Introduction to probability models; 6th ed., Academic Press, London, 1997.
[207] Rubinovitch M.: The slow server problem: a queue with stalling; J. Appl. Prob., 22, pp.
879-892, 1985.
[208] Rubinovitch M.: The slow server problem; J. Appl. Prob., 22, pp. 205-213, 1985.
Baze de date i algoritmi pentru ci de comunicaie
205
[209] Schassberger R.S.: On the waiting time in the queueing system GI/G/1; Ann. Math.
Statist., 41, pp. 182-187, 1970.
[210] Schassberger R.S.: Warteschlangen; Springer-Verlag, Berlin, 1973.
[211] Stidham S.: A last word on L = W; Opns. Res., 22, pp. 417-421, 1974.
[212] Takacs L.: Introduction to the theory of queues; Oxford, 1962.
[213] Tijms H.C.: Stochastic modelling and analysis: a computational approach; John Wiley
& Sons, Chichester, 1990.
[214] Tijms H.C.: Stochastic models: an algorithmic approach; John Wiley & Sons,
Chichester, 1994.
[215] Turbu Gh. et al.: Inginerie de sistem, automatizri i informatic n transporturi;
Editura Tehnic, Bucureti 1988.
[216] Van Woensel, T. and N. Vandaele: Empirical validiation of a queueing approach to
uninterrupted traffic flows; UFSIA research paper , 2002.
[217] Van Woensel, T., R. Creten and N. Vandaele: Managing the environmental
externalities of traffic logistics: the issue of emissions; POM journal special issue, vol.
10, nr.2, pp.207-223, 2001.
[218] Vandaele N. L. De Boeck and D. Callewier: An Open Queueing Network for Lead
Time Analysis; UFSIA research paper, 99-017, 1999.
[219] Vandaele, N., Van Woensel T. and A. Verbruggen: A queueing based traffic flow
model; Transportation Research-D: Transport and environment, vol. 5 nr. 2, pp. 121-
135, 2000.
[220] Walrand J.: An Introduction to Queueing Networks; 1988.
[221] Whitt W.: Approximating a point process by a renewal process I: two basic methods;
Opns. Res., 30, pp. 125-147, 1986.
[222] Whittaker E.T., G.N. Watson: Modern analysis; Cambridge, 1946.
[223] Wolff R.W.: Poisson arrivals see time averages; Opns. Res., 30, pp. 223-231, 1982.
[224] Wolff R.W.: Stochastic modeling and the theory of queues; Prentice-Hall, London,
1989.
Capitolul 11 Elemente de teoria cozilor
206





ISBN 973-86343-3-4
COLECIA INGINERIA PODURILOR