Sunteți pe pagina 1din 35

ACADEMIA DE STUDII ECONOMICE BUCUREȘTI

FACULTATEA DE CIBERNETICĂ, STATIISTICĂ ȘI INFORMATICĂ


ECONOMICĂ

BAZELE CERCETĂRILOR
OPERAȚIONALE

Suport de curs pentru autoinstruire

Titular disciplină:
Lect. Univ. dr. Ramona-Mihaela PĂUN
CUPRINS:
Precizări privind alcătuirea manualului de studiu individual

Principalele elementele constitutive, care apar în alcătuirea acestui manualul de studiu individual, corespunzătoare
unei unități de studiu proiectată/dezvoltată sunt următoarele:

Titlul unității – corespunde titlului unuia sau mai multor capitole/subcapitole


din programa de studiu (conform fișei disciplinei)

Cuprinsul unității - specifică secțiunile principale, subsecțiunile şi numărul


paginii unde acestea pot fi localizate

Introducere - secțiune (capitol) care va furniza informații în legătură cu: locul


unității de studiu (US) în cadrul disciplinei, obiectivele US formulate în termeni
de competențe generale şi specifice US

Durata medie de studiu individual - 4-6 ore

Obiectivele unităților de studiu – enunţă competenţele ce urmează a fi


dobândite pe parcursul unităţii de studiu. Dacă, la nivelul programei,
competenţele sunt prea general formulate (în consecinţă neevaluabile), se
redefinesc competenţele programei prin raportare la conţinuturile unităţii de
învăţare. Aceasta se face astfel: fiind dată competenţa Q din programă şi
conţinuturile C ale unităţii de învăţare, se formulează competenţe specifice
pentru unitatea de învăţare astfel încât acestea să fie evaluabile (pe parcurs şi la
sfârşitul unităţii de învăţare).
Întrebarea la care trebuie răspuns este: La ce foloseşte cursantului conţinutul
unităţii de învăţare?
Răspunsul se dă în termeni operaţionali/procedurali/contextuali, după caz şi în
funcţie de disciplină.
Conţinutul unităţii de învăţare –(sinteze teoretice, exemple) redactarea textului
propriu-zis va ţine cont de interacţiunea competenţe-conţinuturi. Textul va fi
structurat astfel încât cantitatea de informaţie nouă pe unitatea de învăţare să fie
raţională, echilibrat distribuită şi asimilabilă.
Sinteza unității de studiu – Rezumatul sau Sinteza ideilor, noţiunilor şi
conceptelor dezbătute în cadrul unităţii de învăţare.

Concepte și termeni de reținut – Definiţii şi terminologie

Întrebări de control și teme de dezbatere


Îndrumar pentru autoevaluare sau Testele de autoevaluare reprezintă
exercițiile sau rezolvarea unor probleme. Acestea solicită studentul să efectueze
o activitate mai complexă decât simpla rezolvare a unui test de autoevaluare. De
exemplu, studentului i se poate solicita să scrie un paragraf prin care descrie
opinia personală asupra unui subiect studiat şi analizat. De asemenea, exercițiile
pot solicita practicarea unor deprinderi necesare formării studentului ca viitor
specialist
Bibliografie obligatorie – va enunța o listă minimală pe care cursantul trebuie
să o parcurgă pentru studiul unității de învățare.
Bibliografia va fi prezentată la sfârșitul fiecărei unități de studiu şi va constitui
un decupaj din bibliografia generală de la sfârșitul manualului.

NOTĂ: Suportul de curs are la bază următoarele lucrări:

1. Ciobanu, Gh, Nica, V, Mustață Fl., Mărăcine, V., Mitruț, D., Cercetări Operaționale. Optimizări în
rețele. Teorie și aplicații economice, Editura MATRIX ROM, București, 2002
2. Ciobanu, Gh, Nica, V, Mustață Fl., Mărăcine, V., Cercetări Operaționale cu aplicații în economie.
Teoria grafurilor și Analiza drumului critic, Editura MATRIX ROM, București, 1996
3. Nica, V., Cercetări operaționale I, Note de curs pentru învățământul la distanță, Editura ASE,
București, 2012;
4. Nica, V., Ciobanu, Gh., Mustaţă Floare, Mărăcine Virginia, “Cercetări operaţionale I - Programare
liniară, Probleme de optimizare în reţele de transport şi distribuţie, Teoria jocurilor strategice”,
Editura MATRIX ROM, Bucureşti 1998
5. http://www.asecib.ase.ro/cursurionline.htm, cursurile numărul: 1- Bazele Cercetării Operaționale; ID
Cercetări Operaționale I și ID Cercetări Operaționale II; 9- Cercetări Operaționale I; 13- Culegere de
probleme de Bazele Cercetării Operaționale- an II zi și distanță, București, Romania.
0 INTRODUCERE

Ce este Cercetarea Operațională?

Cercetarea Operaţională (abreviat CO) denumită și Știința Deciziilor,


Știința Managementului sau Analiza Operațiunilor desemnează un domeniu activ de
cercetare ştiinţifică – atât teoretică cât şi aplicativă – dar şi o disciplină universitară
importantă, ale cărei rădăcini se regăsesc în eforturile strategilor militari din timpul
primului război mondial.
Pentru necesităţile acestui curs, putem spune că CO are ca obiect de studiu problemele de
optimizare rezultate din modelarea matematică a unor fenomene şi procese din domeniul economic,
ştiinţific, tehnic sau militar.
În esenţă, o problemă de optimizare este o problemă de alegere care admite o mulțime de soluţii
admisibile (sau variante, scenarii) ce pot fi comparate între ele pe baza unui criteriu de performanţă.
Criteriul de performanță se poate referi la maximizarea profitului, a performanței sau randamentului sau la
minimizarea costurilor, pierderii, riscului, etc. Cea mai bună soluție obținută în urma aplicării acestui
criteriu reprezintă soluţia optimă a problemei.
Modelarea matematică a unor fenomene și procese economice presupune scrierea unor modele
constând din relații matematice care descriu cele mai importante caracteristici ale proceselor considerate.
Aceste modele sunt apoi rezolvate cu ajutorul unor metode și tehnici de rezolvare iar soluțiile optime
rezultate sunt interpretate și comparate cu realitatea modelată. Din această comparație poate rezulta
necesitatea ajustării modelului astfel încât acesta să reflecte mai îndeaproape realitatea considerată.
În rezumat, metoda generală de studiu a CO poate fi schematizată astfel:

Problema Identificarea Analiza soluţiei


Proces de metodei de obţinute Implementarea
economic optimizare rezolvare şi Compararea cu rezultatelor
real Model determinarea realitatea
matematic soluţiei optime modelată

Eventuale modificări
(corecţii) în model

Figura 1.1

Cercetarea Operațională face parte din științele matematice dar datorită accentului pus pe
interacțiunea om-tehnologie și caracterului său aplicativ, se suprapune și cu alte discipline, în special
ingineria industrială și managementul operațiunilor. CO este strâns legată de știința calculatoarelor
deoarece modelarea unor procese economice reale conduce în general la obținerea unor modele matematice
de dimensiuni mari și complexitate ridicată ce necesită utilizarea unor sisteme de calcul performante și a
unor programe specializate (vezi SAS/OR, NCSS, Gurobi, Lindo, COIN-OR, etc.)

Din multitudinea de tematici ce intră în sfera disciplinei Cercetări Operaționale, în acest curs vom
aborda următoarele:
1. Introducere în analiza și optimizarea rețelelor, în cadrul căreia vom prezenta conceptele
generale utilizate în teoria grafurilor dar și modalități de a identifica arbori de valoare optimă
(cu aplicații în trasarea reţelelor de comunicaţii şi, în general, a reţelelor de distribuţie- de exemplu
pentru identificarea celei mai ieftine posibilități de a conecta toate gospodăriile dintr-o comună la
viitoarea rețea de gaze) și drumuri de valoare minimă în rețele de transport (utilizate de exemplu
pentru identificarea drumului cel mai scurt de la o anumită locație la alta într-o aplicație de
navigație);
2. Managementul proiectelor complexe unde vom arăta cum putem reprezenta proiectele cu ajutorul
grafurilor iar în urma efectuării analizei drumului critic vom determina durata minimă de
finalizare a unui proiect, drumul critic și activitățile critice, vom desena graficul Gantt (un
instrument foarte util atât în etapa de planificare cât și în cea de monitorizare a unui proiect) și vom
evalua impactul unor modificări ale momentelor de începere ale activităților, respectiv ale duratei
activităților asupra duratei minime de realizare a proiectului. Un alt aspect considerat aici se referă
la soluționarea cu ajutorul unei euristici a situațiilor în care este necesară reprogramarea
activităților datorită faptului că, în anumite momente de timp, resursele disponibile sunt în cantități
insuficiente în raport cu necesarul.
3. Flux maxim în rețele de transport și distribuție se referă la identificarea unui flux maxim (ce
poate fi cantitatea maximă de materie primă, produse finite, energie, informație) care poate fi
deplasat de la anumite surse către anumite destinații printr-o rețea ale cărei rute sunt capacitate și
în ce măsură reţeaua de transport este capabilă să permită acoperirea integrală a cererilor în punctele
de destinaţie, notată cu Q (ex. rețeaua publică de aprovizionare cu apă caldă dintr-o anumită zonă
a unui oraș). Pentru aceasta, se va rezolva problema determinării volumului maxim Q* de unităţi
de flux ce pot fi deplasate de la surse la destinaţii. Dacă Q* < Q vor exista destinaţii a căror cerere
este acoperită doar în parte şi atunci se ridică problema măririi capacităţii de transfer a reţelei.
4. Optimizarea proceselor economice utilizând programarea liniară. Programarea liniară
reprezintă o clasă specială de probleme de optimizare a căror modele sunt alcătuite dintr-o serie de
restricții liniare și o funcție obiectiv, de asemenea liniară. Un exemplu clasic de problemă de
programare liniară este problema firmei. Problema constă în determinarea cantităților optime ce
trebuie produse din fiecare bun astfel încât să se maximizeze profitul firmei, ținând cont de
cantitățile disponibile din fiecare tip de resursă.
5. Probleme de optimizare în rețele de transport și distribuție. În acest caz se pune problema
deplasării unor cantități de bun omogen de la anumite surse la anumite destinații astfel încât
costul de transport să fie minim. Vom considera și situația în care anumite rute folosite inițial
pentru transportul mărfurilor sunt acum blocate și vom identifica noi rute de transport astfel încât
costul deplasării să rămână cât mai mic cu putință.

În abordarea tematicilor de mai sus ne vom concentra asupra următoarelor aspecte:


- modelarea unor procese economice reprezentative;
- descrierea unor metode de rezolvare pentru problemele de optimizare considerate;
- interpretarea economică a soluţiilor optime obţinute.

1.1.2. Scurt istoric al apariției și dezvoltării cercetărilor operaționale

Termenul Cercetare Operaţională este traducerea originalului englez Operational Research.


Multe ţări europene au preluat acelaşi original: Recherche Operationelle în Franţa, Ricerca Operativa în
Italia. America a optat pentru varianta Operations Research (º Cercetarea Operaţiilor) preluată în Rusia
(Иследование Операций) şi – fără traducere! - în Germania.
Studiul unor probleme de optimizare şi încercări de modelare matematică pot fi identificate din
cele mai vechi timpuri. Totuşi, începutul activităţii denumite astăzi CO, a fost atribuit serviciilor militare
engleze în preajma declanşării celui de al doilea război mondial. Efortul de război a necesitat alocarea
urgentă a unor resurse limitate în diferite operaţii militare într-un mod cât mai profitabil. De aceea
conducerea militară engleză şi apoi cea americană au mobilizat un mare număr de oameni de ştiinţă
(matematicieni şi fizicieni în special) care să se ocupe de rezolvarea acestor probleme. În esenţă acestora li
s-a cerut să facă cercetare asupra operaţiilor militare (termenul Operational Research apare pentru prima
dată în 1938 şi este datorat unui înalt oficial englez). Aceste grupuri mixte de militari şi civili au fost primele
echipe de CO, eforturile lor fiind decisive în câştigarea bătăliei aerului în Anglia (este vorba de amplasarea
eficientă a staţiilor radar pentru descoperirea din timp a atacurilor avioanelor inamice), în bătălia
Atlanticului de Nord (organizarea şi apărarea convoaielor de aprovizionare care traversau oceanul, contra
submarinelor germane) sau în campania americană din Pacific contra Japoniei.
Dezvoltarea economică explozivă de după război a făcut ca problemele de conducere cauzate de
creşterea complexităţii activităţii economice să nu mai poată fi rezolvate cu mijloacele tradiţionale bazate
pe experienţă şi fler. Pentru mulţi specialişti care lucraseră în echipele CO din timpul războiului a devenit
foarte repede evident faptul că noile probleme „din viaţa civilă” semănau până la identitate cu cele cu care
se confruntaseră în război.
Acesta a fost momentul în care CO şi-a făcut intrarea în industrie, comerţ, administraţie, afaceri
etc. Deja în anii ’50, CO avea statut şi dezvoltare de sine stătătoare în Anglia şi America.
Încheiem această secţiune prin a aminti că facultatea noastră CSIE a fost prima facultate din ţară
care a introdus în programa de învăţământ disciplina CO în 1969. Unele elemente erau predate chiar
mai înainte de această dată în cadrul unui curs intitulat calcul economic.

Obiectivele manualului de studiu


Obiectivele principale ale manualului de studiu individual constau în:
Asimilarea cunoștințelor necesare fundamentării deciziilor de conducere optimală a
sistemelor economice și sociale utilizând tehnici cantitative;
Inițierea în modelarea economico-matematică;
Familiarizarea cu tehnicile și algoritmii de rezolvare a modelelor economico-matematice
necesare adoptării deciziilor în cadrul sistemelor economice;
Orientarea studenților către un limbaj și un raționament corect și bine justificat, bazat pe
metodele cantitative de analiză, modelare și conducere a activității organizațiilor
economice;
Inițierea în utilizarea pachetelor software care implementează algoritmii de optimizare
prezentați în cadrul cursului.

Competențe conferite
1. Cunoaștere și înțelegere ( cunoașterea și înțelegerea adecvată a noțiunilor specifice disciplinei)
P Cunoașterea și înțelegerea noțiunilor, conceptelor, teoriilor și principiilor cu care
operează cercetările operaționale;
P Folosirea corectă a termenilor de specialitate;
P Construirea unor modele economico-matematice adecvate ce descriu procese economice
reale;
P Cunoașterea și aplicarea corectă a tehnicilor și algoritmilor de rezolvare a modelelor
economico-matematice specifice cercetărilor operaționale;
P Utilizarea adecvată a produselor software specializate pentru soluționarea problemelor
specifice.

2. Explicare și interpretare (explicarea și interpretarea unor idei, proiecte, procese, precum și a


conținuturilor teoretice și practice ale disciplinei)
P Rolul unui analist specializat în cercetări operaționale și organizarea procesului de
modelare/ rezolvare a problemelor specifice într-o viziune sistemică;
P Utilizarea cu discernământ a corelațiilor dintre cercetările operaționale și celelalte
științe pentru analiza cantitativă și calitativă a diferitelor domenii de activitate;
P Realizarea unor teme de control folosind metodele cercetărilor operaționale.

3. Instrumental aplicative ( proiectarea, conducerea și evaluarea activităților practice specifice;


utilizarea unor metode, tehnici și instrumente de investigare și de aplicare)
P Capacitatea de a transpune în practică a cunoștințelor obținute din bibliografie,
seminarii, proiecte și referate ;
P Abilități de cercetare, creativitate, competențe în rezolvarea exercițiilor și a studiilor de
caz.

4. Atitudinale ( manifestarea unei atitudini pozitive și responsabile față de domeniul științific,


cultivarea unui mediu științific centrat pe valori și relații democratice, promovarea unui sistem de
valori culturale, morale și civice, valorificarea optimă și creativă a propriului potențial în activitățile
științifice, implicarea în dezvoltarea instituțională și în promovarea inovațiilor științifice, angajarea
în relații de parteneriat cu alte persoane, instituții cu responsabilități similare, participarea la
propria dezvoltare personală)
P Reacții pozitive la disciplina universitară în general și față de exigențele disciplinei de
Bazele Cercetărilor Operaționale în particular;
P Implicarea studenților în activități științifice în legătură cu disciplina Bazele
Cercetărilor Operaționale pentru participarea la sesiunile științifice ale universității;
P Capacitatea de a avea un comportament etic în relațiile cu colegii și cadrele didactice;
P Capacitatea de a aprecia diversitatea analizei fenomenelor și proceselor economice;
P Abilitatea de a colabora cu specialiștii din alte domenii.
Resurse și mijloace de lucru
Disciplina Bazele Cercetărilor Operaționale dispune de un Suport de curs pentru autoinstruire
pentru studenți, precum și de materiale prezentate pe platforma.ase.ro sub formă de sinteze, lecții și unități
de studiu, studii de caz și aplicați, necesare întregirii cunoștințelor practice și teoretice în domeniu.
Pentru rezolvarea cu ajutorul calculatorului a problemelor discutate, vom folosi Excel QM
versiunea 5.2 (disponibil atât pentru deținătorii de PC cât și pentru cei de MAC cu licență de Microsoft
Office) sau QM for Windows versiunea 5.2 (doar pentru deținătorii de PC).
La această disciplină, în timpul activităților de tutorat sunt folosite echipamente audio-vizuale,
metode interactive și participative de antrenare a studenților pentru conceptualizarea și vizualizarea practică
a disciplinei.

Structura manualului de studiu individual


Unitățile de studiu individual sunt proiectate corespunzător obiectivelor prevăzute în Fișa
disciplinei de Bazele Cercetărilor Operaționale fiind compuse din 5 unități de studiu, astfel:

Unitatea de studiu Tematica Nr. ore


Unitatea de studiu 1. Introducere în optimizarea rețelelor 4 ore
Unitatea de studiu 2. Managementul proiectelor complexe (analiza drumului 6 ore
critic)
Unitatea de studiu 3. Flux maxim în rețele de transport și distribuție 6 ore
Unitatea de studiu 4. Optimizarea proceselor economice utilizând programarea 6 ore
liniară
Unitatea de studiu 5. Probleme de optimizare în rețele de transport și distribuție 6 ore

Temele de control
Temele de control vor fi date conform Calendarului Disciplinei și acestea vor avea următoarele subiecte:
1. Determinarea unor arbori maximali de cost minim în context economic;
2. Modelarea și rezolvarea unor probleme de drum optim în rețele de transport;
3. Managementul proiectelor complexe;
4. Găsirea fluxului optim într-o rețea de transport;
5. Rezolvarea unor probleme de programare liniară;
6. Determinarea unor planuri optime de transport pentru probleme clasice de transport.

Bibliografie obligatorie:

1. Ciobanu, Gh, Nica, V, Mustață Fl., Mărăcine, V., Mitruț, D., Cercetări Operaționale. Optimizări în
rețele. Teorie și aplicații economice, Editura MATRIX ROM, București, 2002
2. Ciobanu, Gh, Nica, V, Mustață Fl., Mărăcine, V., Cercetări Operaționale cu aplicații în economie.
Teoria grafurilor și Analiza drumului critic, Editura MATRIX ROM, București, 1996
3. Nica, V., Cercetări operaționale I, Note de curs pentru învățământul la distanță, Editura ASE,
București, 2012;
4. Nica, V., Ciobanu, Gh, Mustață, Fl., Mărăcine V., Cercetări Operaționale- Programare liniară,
Probleme de optimizare în rețele de transport și distribuție, Teoria jocurilor strategice, cap. 1 și 2,
Editura MATRIX ROM, București 1998, http://asecib.ase.ro/cursurionline.htm
5. http://www.asecib.ase.ro/cursurionline.htm, cursurile numărul: 1- Bazele Cercetării Operaționale; 1-
ID Cercetări operaționale I și II; 13- Culegere de probleme de Bazele Cercetării Operaționale- an II zi
și distanță, București, Romania.
6. White, J., White, L., A review of the recent contribution of systems thinking tooperational
research and management science, European Journal of Operational Research, Volume 207, Issue
3, Pages 1147-1161, 2010, on-line:
http://www.sciencedirect.com/science/article/pii/S0377221709009473
Bibliografie suplimentară:
7. Bazaraa, M. S., & Jarvis, J. J. Linear programming and Network flows. John Wiley and Sons, Inc.
1997;
8. Cominetti, R., Facchinei, F., Lassere, J.B., Modern Optimization Modelling Technoques, Advanced
Courses in Mathematics- CRM, Barcelone, Barcelona, 2013, Spania;
9. Cooke, S., Slack, N., Making Management Decision, Prentice Hall International UK Ltd., 1991;
10. Dantzig, G. B., & Thapa, M. N. Linear programming. 1: Introduction. Springer-Verlag.1997;
11. Hillier, F. S., Lieberman, G. I., Introduction to Operations Research, ediţia a 8-a, McGraw Hill
Publishing Co., New York, 2005;
12. Lapin, L., Quantitative Methods for Business Decisions - with Cases, Harcourt Brace Jovanovich
Publishers and its subsidiary, Academic Press, 1991;
13. Lockzer, K., Gordon, J., Project Management and Project Network Techniques, Pitman Publishing,
1996;
14. Lucey, T., Quantitative Techniques, DP Publisher, 1992 ;
15. Luenberger, D. G., & Ye, Y. Linear and Nonlinear Programming (Third ed.). Springer Science, 2008;
16. Oliveira, C.A., Pardalos, P.M., Mathematical Aspects of Network Optimization, Springer
Optimization and its Applications, vol. 53, 2011;
17. Taha, H. A. Operations research. An introduction (Eight edition ed.). Pearson Prentice Hall, 2008;
18. Vanderbei, R. J. Linear programming. Foundations and Extentions (Third ed.). Springer Science,
2008.
19. Vanhoucke, M., Project Management with Dynamic Scheduling. Baseline Scheduling, Risk Analysis
and Project Control, Springer, 2012;
20. Zelinka, I., Snasel, V., Abraham, A. (editori), Handbook of Optimization. From classical to modern
Approach, Intelligent Systems Reference Library, vol. 38, 2012.

Metoda de evaluare:
Nota finală la disciplina Bazele Cercetărilor Operaționale se obține prin însumarea punctajului la cele două
evaluări, E1 și E2, ambele obligatorii, constând în:
• E1- Evaluarea pe parcursul semestrului- are alocate 30% din cele 10 puncte ale notei finale și constă
din rezolvarea temelor de control. Prezentarea temelor de control este condiție obligatorie pentru
participarea la evaluarea E2 din sesiunea de examene;
• E2- Evaluarea prin teză scrisă în sesiunea de examene- are alocate 70% din cele 10 puncte ale notei
finale. Absența de la susținerea acestei teze scrise echivalează cu nepromovarea examenului.
1 UNITATEA DE STUDIU 1. INTRODUCERE ÎN OPTIMIZAREA REȚELELOR

1.1. Obiectivele și competențele unității de studiu


1.2. Conținutul unității de studiu
1.2.1. Modelarea problemelor de transport și distribuție
1.2.2. Concepte utilizate în teoria grafurilor
1.2.3. Arbori maximali de valoare minimă
1.2.4. Drumuri de valoare minimă
1.3. Îndrumar pentru autoverificare

1.1. Obiectivele și competențele unității de studiu

Obiectivele unității de studiu:


q prezentarea conceptelor utilizate în teoria grafurilor;
q prezentarea arborilor maximali de valoare optimă și identificarea acestora cu ajutorul
algoritmului Kruskal
q identificarea drumurilor de valoare minimă cu ajutorul algoritmului Dijkstra;
q utilizarea aplicației Excel QM (opțiunile Minimum Spanning Tree și Shortest Path)
pentru identificarea arborilor maximali de valoare minimă și a drumurilor de valoare
minimă;

Competențele unității de studiu:


q studenții vor putea să definească și să utilizeze în mod corespunzător conceptele
prezentate;
q studenții vor putea construi arbori maximali de valoare optimă pentru un graf finit dat;
q studenții vor putea determina drumurile de valoare minimă într-un graf finit;
q studenții vor ști cum să utilizeze Excel QM (opțiunile Minimum Spanning Tree și
Shortest Path) pentru a identifica arbori maximali de valoare minimă și drumuri de
valoare minimă.

Durata medie de studiu individual alocat unității: 4 ore

1.2. Conținutul unității de studiu

1.2.1. Modelarea problemelor de transport și distribuție

Într-o mare varietate de contexte se pune problema deplasării unei cantităţi Q ce poate fi materie, energie,
informaţie, etc. din unele locuri numite surse în alte locuri numite destinaţii, această deplasare realizându-se pe
anumite rute de legătură. Unităţile indivizibile ale cantităţii Q care se deplasează de-a lungul rutelor se vor numi
unităţi de flux.

O clasificare a problemelor de transport şi distribuţie

Pentru Cercetarea Operaţională, problema enunţată va prezenta interes numai dacă respectă următoarele
ipoteze:
a) cel puţin o sursă poate aproviziona mai multe destinaţii şi cel puţin o destinaţie poate primi unităţi de flux
de la mai multe surse.
Rutele de legătură pot avea şi alte puncte comune în afara surselor şi destinaţiilor, numite puncte intermediare
sau de tranzit. Nu sunt excluse legăturile directe între surse sau între destinaţii. În principiu, orice rută poate fi parcursă
în ambele sensuri, dar pot exista şi rute cu sens unic.

Ansamblul surselor, destinaţiilor, al punctelor intermediare şi al rutelor de legătură se va numi reţea de


transport; el se identifică cu un graf neorientat sau parţial orientat ca în figura 1.1.
b) Unele rute de legătură pot avea limitări superioare şi / sau inferioare pentru volumul unităţilor de flux ce
se deplasează într-un sens sau altul. Aceste limitări poartă numele de capacităţi (inferioare, respectiv superioare). În
continuare, vom avea în vedere numai cazul în care toate capacităţile inferioare sunt egale cu zero, capacităţile
superioare fiind exprimate prin numere pozitive.
c) Există un cost al deplasării unei unităţi de flux de la un punct al reţelei la altul, cost care poate fi exprimat
în bani, timp sau distanţă. Sunt situaţii în care acest cost poate semnifica profitul obţinut de pe urma deplasării. Pe
aceeaşi rută, costurile şi capacităţile pot fi diferite în funcţie de sensul de parcurgere al rutei.

Ipoteza a) va fi întotdeauna presupusă în timp ce ipotezele b) şi c) pot fiinţa separat sau simultan.
1) În prezenţa ipotezei c) şi absenţa condiţiei b) se pune problema deplasării cantităţii de flux Q de la surse la
destinaţii la un cost total minim. Dacă sursele sunt în legătură directă cu destinaţiile obţinem problema clasică de
transport, care va face obiectul capitolului 5 al cursului. Cazul general, în care exisă şi puncte intermediare, este
cunoscut sub numele de problema transferului şi el nu face obiectul cursului de faţă. În cazul particular al unei singure
surse s, al unei singure destinaţii t şi a unei singure unităţi de flux se obţine problema drumului de cost minim de la s
la t, problemă de care ne vom ocupa în secţiunea 1.2.4 a acestui capitol.
2) În prezenţa ipotezei b) şi absenţa ipotezei c) se pune problema dacă reţeaua, ale cărei rute sunt capacitate,
este capabilă să permită acoperirea integrală a cererilor în punctele de destinaţie. Pentru aceasta, se va rezolva
problema determinării volumului maxim Q* de unităţi de flux ce pot fi deplasate de la surse la destinaţii. Dacă Q* <
Q vor exista destinaţii a căror cerere este acoperită doar în parte şi atunci se ridică problema măririi capacităţii de
transfer a reţelei. Am descris succint problema fluxului maxim, problemă ce va fi abordată în cadrul capitolului 3.
3) În prezenţa simultană a ipotezelor b) şi c) se pune problema satisfacerii cererilor în punctele de destinaţie
la un cost de transport minim. Ca şi în cazul precedent vom avea în vedere o problemă modificată: vom determina mai
întâi cantitatea maximă de flux ce poate fi deplasată de la surse la destinaţii şi apoi modul de organizare al deplasării
astfel încât costul operaţiei să fie minim. Aceasta este problema fluxului (maxim) de cost minim, problemă abordată,
de asemenea, în cadrul cursului de Cercetări Operaţionale din anul 2.
În secţiunile următoare vom trata două probleme de optimizare în reţele de transport: problema determinării
unui arbore maximal (de acoperire) de valoare (cost) optimă şi problema drumului de valoare minim de la s la t .
1.2.2. Concepte utilizate în teoria grafurilor

În secţiunea 1.3.1 am vizualizat elementele unei reţele de transport printr-un desen compus din puncte şi arce
care unesc unele din aceste puncte (vezi figura 1.1). Un asemenea desen constituie forma uzuală de prezentare a unui
concept deosebit de important, atât în sine cât şi pentru studiul unei impresionante varietăţi de probleme din cele mai
diverse domenii, domeniul economic fiind prioritar.
Am socotit deci necesar să includem aici câteva elemente privitoare la conceptul de graf, căci despre el este
vorba. Aceste elemente vor fi foarte utile pentru înţelegerea consideraţiilor teoretice dezvoltate în legătură cu
rezolvarea problemei de transport şi de asemenea constituie cadrul natural de abordare şi a celorlalte probleme amintite
în clasificarea dată în secţiunea precedentă.
Un graf este un cuplu G = (V, E) format dintr-o mulţime nevidă V, ale cărei elemente se numesc vârfuri sau
noduri şi o mulţime E de elemente, zise muchii, cu proprietatea că fiecărei muchii e Î E îi sunt asociate două noduri
x, y Î V, nu neapărat distincte, numite extremităţile muchiei e. Un subgraf al grafului G = (V, E) este un graf G’ =
(V’, E’) în care V’ Í V, E’ Í E şi orice muchie eÎ E’ are aceleaşi extremităţi atât în G‘ cât şi în G.
După cum se vede, definiţia generală nu exclude existenţa muchiilor cu o singură extremitate (aceste muchii
se numesc bucle), nici existenţa mai multor muchii cu aceleaşi extremităţi (figura 1.2.a)
x u

t
z v
a) b)
Figura 1.2.
Graful G se va numi simplu dacă nu are bucle şi oricare două noduri sunt extremităţi pentru cel mult o muchie. Vom
spune că G este finit dacă vârfurile şi muchiile sale sunt în număr finit.
În continuare, vom avea în vedere în exclusivitate grafuri finite şi simple aşa cum este cel reprezentat grafic
în figura 1.2.b).
Fie e = {x, y} o muchie a grafului G = (V, E); extremităţile sale pot fi ordonate în două moduri: (x, y) şi (y, x).
Cele două perechi se numesc rute orientate sau arce generate de muchia subiacentă e; spunem că arcul (x, y) are
extremitatea iniţială x şi extremitatea finală y şi că (y, x) este arcul opus lui (x, y). A orienta muchia {x, y} înseamnă
a alege unul din arcele (x, y) sau (y, x); dacă a fost ales arcul (x, y) vom spune că (x, y) este un arc permis şi că arcul
(y, x) este blocat. Dacă o asemenea alegere nu a fost făcută vom spune că muchia {x, y} este neorientată. În acest caz,
convenim ca ambele arce (x, y) şi (y, x), generate de muchia {x, y}, să fie considerate permise. În fine, a da o
orientare în graful G înseamnă a orienta unele din muchiile sale; orientarea poate fi totală sau parţială după cum toate
muchiile grafului au fost orientate sau numai o parte din ele. Este clar că în acelaşi graf G pot fi date mai multe
orientări; dacă G are m muchii, atunci există 2m orientări totale diferite ale acestuia!
Un graf orientat (parţial orientat, neorientat) este un graf în care s-a dat o orientare totală (o orientare parţială,
respectiv nu s-a dat nici o orientare); de exemplu, graful din figura 1.1.a) este (total) orientat iar cel din figura 1.1.b)
numai parţial. Graful din figura 1.2.b) este neorientat.
În unele situaţii este util să se pună în evidenţă arcele permise ale unui graf (parţial) orientat; realizarea grafică,
intuitivă a acestei operaţii este făcută în figura 1.3.
x y x y

Þ
z t z t

Figura 1.3.
Se constată uşor că dacă G este (total) neorientat, numărul arcelor permise este de două ori mai mare decât numărul
muchiilor din G.
În continuare vom introduce o serie de noţiuni frecvent utilizate în teoria grafurilor. Vom considera un graf
(finit, simplu) G = (V,E), în care (eventual) s-a dat o orientare pe unele din muchii (posibil pe toate).
Un lanţ în graful G este o succesiune de noduri l = (x0, x1, ... , xp-1, xp) cu proprietatea că {x0, x1}, {x1, x2}, ...,
{xp-1, xp } sunt muchii în G. Vom spune că x0 şi xp sunt extremităţile lanţului l şi că l “trece” prin nodurile intermediare
x1, ... , xp-1. Un lanţ poate fi:
o Elementar - un lanț care conţine doar noduri distincte.
o Neelementar - un lanț care nu conţine doar noduri distincte.
o Simplu - un lanț care conţine doar muchii distincte.
o Compus - un lanț care nu conţine doar muchii distincte.
Prin definiţie lungimea lanţului l este dată de numărul muchiilor componente. Astfel, lanţurile de lungime
unu se identifică cu muchiile grafului G; un lanţ de lungime doi este constituit din două muchii adiacente (au o
extremitate în comun).
Un ciclu este un lanţ ale cărui extremităţi coincid.
În figura 1.2.b) l = (x, y, t, u, v) este un lanț elementar, simplu, de lungime 4; l‘ = (x, z, y, t, z, v) este lanț neelementar,
simplu de lungime 5; l'' = (y, t, z, t, u) este neelementar compus iar µ = (x, y, t, u, x) este ciclu elementar de lungime
4.
Un drum în graful G este o succesiune de noduri d = (x0, x1, ... , xp -1, xp) cu proprietatea că (x0, x1), (x1, x2), ...,
(xp -1, xp) sunt arce permise. Nodul x0 este extremitatea iniţială a drumului d iar xp extremitatea finală. Un circuit este
un drum ale cărui extremităţi coincid. Este clar că orice drum este un lanţ, reciproca nefiind adevărată întotdeauna. În
figura 1.3, d = (z, t, x) este un drum de lungime 2 iar µ = (x, y, t, x) este un circuit de lungime 3; în acelaşi graf, l =
(z, x, y) este un lanţ care nu este un drum deoarece arcul (z, x) este blocat.
Graful G = (V,E) se zice conex dacă oricare două noduri Graful G G2
ale sale sunt extremităţile unui lanţ. Dacă G nu este conex,
există partiţiile V = V1ÈV2È .... ÈVs şi E=
G3
E1ÈE2È....ÈEs astfel încât G1 = (V1,E1) , G2 = (V2,E2) , ..., Gs = G1
(Vs,Es) sunt grafuri conexe. Subgrafurile G1, G2,...., Gs se
numesc componentele conexe ale grafului G. Graful din figura
1.3 este conex (ca şi cele din figurile anterioare); graful din
figura 1.4 are trei componente conexe.

Figura 1.4.

Graful G = (V,E) se numeşte bipartit dacă mulţimea nodurilor sale poate fi descompusă în două submulţimi
nevide şi disjuncte S şi T, astfel încât orice muchie din G are o extremitate în S şi cealaltă în T.
Este clar că graful asociat unei probleme clasice de transport este bipartit (figura 1.1.a), nodurile care
reprezintă furnizorii formând mulţimea S iar nodurile corespunzătoare consumatorilor alcătuind mulţimea T.

Calitatea unui graf de a fi bipartit nu depinde de modul particular de S T


reprezentare aşa cum arată exemplul din figura 1.5. O caracterizare completă a b a b
a grafurilor bipartite este oferită de următoarea teoremă:
Þ
Teorema König: Un graf este bipartit dacă şi numai dacă nu
conţine cicluri de lungime impară (altfel spus, orice ciclu al său are un c d d c
număr par de muchii).
Figura 1.5.

Adiacenţă şi incidenţă. Fie G = (V, E) un graf şi xi, xj Î V. Nodurile xi şi xj sunt noduri adiacente dacă
există o muchie e = [xi, xj] care le uneşte. Dacă e = [xi, xj], muchia e şi nodul xi sau muchia e şi nodul xj sunt
incidente. Două muchii e1 şi e2 ale grafului sunt muchii adiacente dacă sunt incidente în acelaşi nod (au o extremitate
în comun).
Gradul unui nod x Î V, notat cu d(x) reprezintă numărul de muchii din graful G incidente cu nodul x (care
au o extremitate în x). Un nod izolat are gradul 0. Dacă ½V½ = n şi ½E½ = m atunci pentru orice (m, n) – graf (un
n
graf cu n noduri şi m muchii) se verifică relaţia: å d (xi ) = 2 × m . Această relaţie rezultă din faptul că fiecare muchie
i =1
este incidentă în două noduri.
Un lanţ elementar care trece prin toate nodurile unui graf este un lanţ hamiltonian. Un lanţ hamiltonian ale
cărui extremităţi coincid se numeşte ciclu hamiltonian.
Un lanţ simplu care parcurge odată şi numai o dată toate muchiile grafului este un lanţ eulerian. Un lanţ
eulerian ale cărui extremităţi coincid se numeşte ciclu eulerian.
Conceptele anterioare se aplică şi în cazul grafurilor în care s-a dat o orientare a muchiilor, ele generând
noţiunile de drum/circuit hamiltonian, respectiv drum/circuit eulerian.

1.2.3. Arbori maximali de valoare minimă

Fie G = (V, E) un graf neorientat, cu mulţimea nodurilor V = {x1, x2,…, xn}. Notăm cu E(x) mulţimea
muchiilor incidente într-un nod x, cu numărul elementelor ½E(x)½. Un nod se numeşte suspendat (sau nod frunză)
dacă există o singură muchie incidentă în x (altfel spus |E(x)| = 1). Un nod x este izolat dacă nu există nici o muchie
incidentă în x ( |E(x)| = 0 ).
Un arbore este un graf neorientat, conex şi fără cicluri (figura 1.6.).
Propoziţia 1.11 Un arbore H = (V, E), ½V½ = n, ½E½ = m are următoarele proprietăţi echivalente:
1) H este conex şi fără cicluri;
2) H este fără cicluri şi are n – 1 muchii;
3) H este conex şi are n – 1 muchii;
4) H este fără cicluri şi dacă se unesc printr-o muchie două noduri neadiacente, se creează un ciclu şi
numai unul (figura 1.7);
5) H este conex şi dacă i se suprimă o muchie se creează două componente conexe (orice muchie din H
este o punte între două noduri), graful se disconectează (figura 1.8);
6) Orice pereche de noduri este legată printr-un lanţ şi numai unul.

*
adaugă ®
* Þ *

**
** **
Figura 1.6.
Figura 1.7

scoate ®

Þ
Figura 1.8

0 1 Pentru demonstrațiile teoremelor, lemelor ș i propozițiilor acestui capitol a se vedea: Ciobanu Gh., Nica V.,

Mustaţă Floare, Mă ră cine Virginia, Mitruţ D., “Cercetări Operaţionale. Optimizări în reţele. Teorie şi
aplicaţii economice”, Editura MatrixRom, Bucureşti, 2002
Un arbore H într-un graf G este un subgraf care - de sine stătător - este un arbore. H se zice maximal dacă
conţine toate nodurile grafului G (figura 1.9).

G Arbore nemaximal în G Arbore maximal în G

Figura 1.9.

1.2.3.1. Arbori de acoperire

Fie G = (V, E) un graf neorientat. Un arbore H = (V, Y) se spune că este un arbore care acoperă graful G
dacă Y Í E. Dacă ïVï = n şi ïYï = n – 1 arborele de acoperire este numit maximal.
Teorema 1.1 Într-un graf G = (V, E) există un graf parţial H care este un arbore de acoperire dacă şi numai
dacă G este conex.

Să considerăm un graf G = (V, E) conex. O muchie e Î E este valorizată dacă i se asociază o valoare
nenegativă v(e) ³ 0. Aceste valori pot reprezenta costuri, lungimi, profituri ale legăturilor definite prin muchiile
grafului. Un graf G este valorizat dacă toate muchiile sale sunt valorizate. Graful G fiind un graf conex, conform
teoremei 1.1, conţine un arbore de acoperire H = (V, Y), Y Í E, ca un graf parţial al său.
Valoarea unui arbore H = (V, Y) conţinut în graful G = (V, E), Y Í E este, prin definiţie, suma valorilor
muchiilor sale:
v(H) = å v(e) .
eÎY
(1.1)

Problema extremală pe care dorim să o rezolvăm este problema arborelui de valoare minimă: să se
determine un arbore de acoperire maximal H* = (V, Y*) conţinut într-un graf G = (V, E), Y* Í E de valoare
minimă:
v(H*) = min v(H) (1.2)
H

unde v(H) este valoarea unui arbore determinată cu relaţia (1.1).


Problema determinării unui arbore de valoare minimă constă în determinarea unui arbore maximal H* care
acoperă graful dat G astfel încât acesta să fie:
(1) conex (fiecare nod să fie conectat cu oricare alt nod);
(2) fără legături redundante (un singur lanţ este suficient pentru a conecta un nod cu oricare alt nod);
(3) de valoare minimă (având în vedere valorile asociate muchiilor).
Similar, se defineşte problema arborelui de valoare maximă, care constă în determinarea unui arbore H*
care acoperă graful dat G şi care verifică proprietăţile (1) şi (2), de mai sus, iar proprietatea (3) este înlocuită cu:
v(H*) = max v(H)
H

unde v(H) este valoarea unui arbore determinat de relaţia (1.1).

În activitatea economică, de multe ori apare problema determinării unor arbori de valoare optimă (minimă
sau maximă), întrucât există procese economice sau activităţi economice care pot fi reprezentate cu ajutorul unui
arbore în condiţii convenabile. Această problemă are importanţă practică în trasarea reţelelor de comunicaţii şi a
reţelelor de distribuţie, în general, în studiul reţelelor de transport:
- aprovizionarea cu apă potabilă sau cu energie electrică sau termică a unor puncte de consum de la un punct
central;
- evoluţii posibile ale unui sistem pornind de la o stare iniţială;
- construirea unei reţele telefonice radiale, a unei reţele de televiziune sau internet de la un punct central;
- schemele bloc ale programelor pentru calculatoare;
- studiul circuitelor electrice în electrotehnică, etc.
Teorema 1.2 (Berge) Dacă graful G = (V, E) este un graf conex şi complet şi dacă valorile asociate
muchiilor sunt toate distincte v(ei) ¹ v(ej) oricare ar fi ei, ej Î E cu i ¹ j atunci problema determinării arborelui de
acoperire de valoare minimă admite o soluţie şi numai una (arborele este unic determinat).
Dacă valorile muchiilor grafului G = (V, E) nu sunt distincte, adică, dacă de exemplu, v(e1) = v(e2) = v(e3)
= ... , considerăm:
v/(e1) = v(e1) + e
v/(e2) = v(e2) + 2e
v/(e3) = v(e3) + 3e
........
unde e este o valoare pozitivă foarte mică, astfel încât să nu schimbe ordinea de mărime a muchiilor. Prin
aceasta se introduce o ordine strictă între muchii şi putem avea situaţia din teorema 1.2 de formare a arborelui H =
(V, Y). În finalul construcţiei (în soluţia optimă) se ia e = 0.
În situaţia în care valorile muchiilor grafului nu sunt distincte, problema nu admite, în general, soluţie
unică. Pentru determinarea tuturor soluţiilor, se va alege la fiecare etapă k numai o muchie dintre cele cu valori
egale şi se verifică pentru fiecare dintre acestea dacă formează ciclu cu muchiile deja alese în etapele 1,2, …, k-1.
Dacă graful G = (V, E) nu este complet, se atribuie muchiilor ce lipsesc valoarea ¥ sau valori foarte mari.
Aceste muchii nu vor intra în mulţimea Y a muchiilor arborelui H.
Procedeul de construcţie efectivă a unui arbore care acoperă un graf dat G este prezentat în cele ce urmează:

1.2.3.2. Algoritmul Kruskal1)

Fie G = (V, E) un graf conex cu n = ïVï şi cu muchiile valorizate v(e) ³ 0, e Î E.

Etapa de iniţializare:

Din mulţimea muchiilor E se alege o muchie e1 cu valoarea v(e1) cea mai mică. Dacă există mai multe muchii
cu aceeaşi valoare se alege una dintre acestea. Fie Y mulţimea muchiilor alese. Iniţial Y = {e1} şi |Y| = 1.

Etapa iterativă:

Din mulţimea muchiilor neselectate E – Y se alege o muchie ei cu valoarea v(ei) cea mai mică, pentru care Y
È íeiý nu conţine un ciclu. Se ia Y È íeiý ® Y şi |Y| + 1 ® |Y|.

STOP: Etapa iterativă se opreşte atunci când sunt alese n-1 muchii. H = (V, Y) este arborele de acoperire de valoare
minimă.

Arborele de valoare minimă H = (V, Y) este determinat de muchiile alese. În cazul în care există mai multe
muchii de valori egale, arborele de valoare minimă nu este, în general, unic. Este preferabil, în aceste situaţii, să fie
determinaţi toţi arborii de valoare minimă şi dintre aceştia un manager (decident) să îl aleagă pe cel mai convenabil
corespunzător unui alt criteriu economic.
Algoritmul Kruskal este foarte simplu. El intră în categoria algoritmilor de tip "greedy" (lacom) deoarece la
fiecare pas al algoritmului se alege cea mai bună variantă. Totuşi, acest algoritm din ştiinţa managementului produce
întotdeauna soluţia optimă.
Algoritmul Kruskal poate fi utilizat şi pentru determinarea arborilor de acoperire de valoare maximă, prin
înlocuirea, în algoritm: "se alege muchia cu valoarea cea mai mică" cu "se alege muchia cu valoarea cea mai mare".

1)
J. B. Kruskal, On the Shortest Spanning Subtree of a Graph and the Traveling Salesman Problem, Proceedings of
the American Mathematical Society 7, 48-50, 1956.
Exemplul 1.1: Problema sistemului de comunicaţii

Într-un oraş se studiază posibilitatea ca principalele instituţii să fie conectate într-un sistem printr-o reţea de
telecomunicaţii. Schema tuturor legăturilor posibile, precum şi costul executării acestor legături între şase dintre
instituţiile oraşului sunt indicate în graful din figura 1.10. Valorile indicate pe arce reprezintă costurile (în unităţi
monetare) asociate realizării legăturilor dintre instituţii. Să se determine modul în care vor fi interconectate cele şase
instituţii astfel încât costul realizării sistemului de telecomunicaţii să fie minim.

B 6
D
7 5 4

A 7 F
4
3 6

C 5 E

Figura 1.10
Rezolvare:
Pentru rezolvarea acestei probleme se aplică algoritmul Kruskal. Muchia cu cel mai mic cost este [A,C] cu
v[A, C] = 3 u.m.. Aceasta este prima alegere. În continuare, pot fi alese muchiile [D, E] şi [D, F], fiecare având
costul de 4 u.m.. Pentru că fiecare din aceste muchii nu formează ciclu cu muchia [A, C] şi nici toate cele trei muchii
nu formează ciclu, se alege a doua oară şi a treia oară câte una din muchiile [D, E] şi [D,F]. Muchiile [A, D] şi [C,
E] cu costul v[A, D] = v[C, E] = 5 u.m. pot fi alese, în continuare. Se alege una din muchii, cealaltă formează un
ciclu. Deci, pot exista două variante conform figurilor 1.11.a) şi 1.11.b) prin alegerea fie a muchiei [A, D] fie a
muchiei [C, E].

6 6
B D B D
5 4 4

A F A 4 F
4
3 3
5
C E C E

a) H1 b) H2

Figura 1.11

Următoarea alegere este fie muchia [E, F] fie muchia [B, D] ambele având costul v[E, F] = v[B, D] = 6 u.m..
Dar, muchia [E, F] formează ciclu în ambii arbori parţiali împreună cu muchiile [D, E] şi [D, F]. În acest caz, se
alege muchia [B, D] în ambii arbori parţiali.
Rezultă două soluţii optime, deci doi arbori de valoare minimă prezentaţi în figura 1.11, cu v(H1) = v(H2) =
22. Alegerea între aceşti arbori va avea în vedere şi alte considerente economice pe lângă costul instalării sistemului
de telecomunicaţii.

1.2.3.3. Identificarea arborilor maximali de valoare minimă cu ajutorul Excel QM

Să reluăm exemplul 1.1 de mai sus referitor la problema sistemului de comunicaţii și să-l rezolvăm cu
ajutorul Excel QM.
În acest scop, deschidem aplicația Excel și din bara de sus selectăm Excel QM. Din meniul din stânga sus
apasăm pe Alphabetical, selectăm Network Analysis iar de acolo Minimum Spanning Tree.
În fereastra care se deschide introducem titlul „Problema sistemului de comunicații” și specificăm numărul
de muchii ale grafului, în cazul nostru „9”. Fereastra este redată mai jos:
Apăsăm pe butonul OK și ni se deschide o foaie de Excel cu un tabel în care vom introduce pentru fiecare
muchie („Branch”) nodul de start („Start node”), cel final („End note”) precum și valoarea („Cost”).
Atenție!! Nodurile etichetate alfabetic (A-F) vor trebui redenumite utilizând valori de la 1 la 6 deoarece
aplicația nu acceptă notațiile alfabetice pentru extremitățile muchiilor. Astfel, nodul A devine nodul 1, nodul D
devine nodul 4, muchia [A;D] devine muchia [1;4] iar costul asociat este 5.

Odată introduse toate muchiile și valorile lor, apăsăm butonul „Solve”. Rezultatele vor fi redate în tabelul
gri din drepta și se interpretează astfel: muchiile din tabelul din stânga in dreptul cărora apare valoarea „1” în tabelul
din dreapta sunt cele incluse în arborele maximal iar cele care nu au o valoare asociată nu vor fi considerate. Astfel,
citirea rezultatelor indică următoarea componență a arborelui maximal de cost minim: [1;3], [1;4], [2;4], [4;5] și
[4;6] sau, pe notațiile inițiale, muchiile [A;C], [A;D], [B;D], [D;E] și [D;F], reprezentate printr-o linie îngroșată în
figura 1.12. Valoarea arborelui maximal de cost minim este 22 u.m. ( v(H) = 22).

Figura 1.12

Notă: Excel QM nu furnizează decât o soluție optimă deși, așa cum am văzut în secțiunea precedentă,
problema admite două soluții optime.
1.2.3.3. Arborescenţe

Fie G = (X, U) un graf orientat.


Un nod xk Î X se numeşte rădăcină în graful G dacă pentru oricare xi Î X, xi ¹ xk există în G un drum de la
xk la xi.
Arborescenţa este un graf orientat, finit şi fără circuite, în care:
- există un nod şi numai unul numit rădăcină care nu este extremitatea terminală a nici unui arc;
- oricare nod diferit de nodul rădăcină este extremitatea terminală a unui singur arc.

Propoziţia 1.2 Orice arborescenţă este un arbore.

Dacă n este numărul nodurilor, atunci numărul arcelor unei arborescenţe este m = n – 1. Prin urmare,
arborescenţa este un arbore cu orientare unică pe muchii, în care se pun în evidenţă drumuri de la nodul rădăcină la
toate celelalte noduri. Dacă G = (X, U) este un graf orientat şi conex, printre grafurile parţiale există arborescenţe
ale grafului dat.
Arborele genealogic este un exemplu de arborescenţă, nodurile fără descendenţi fiind noduri frunză.

1.2.3. Drumuri de valoare minimă


1.2.4.1. Problema drumului de valoare minimă

Fie G = (V, E) un graf finit (orientat, neorientat sau parţial orientat).


Dacă e Î E este o muchie cu extremităţile xi şi xj atunci această muchie are o orientare permisă prin arcele
(xi, xj) şi (xj, xi). În acest mod, un graf neorientat este tratat ca graf orientat G = (V, U). În continuare, ne referim
numai la grafuri orientate finite.
Dacă arcul u este dat prin extremităţile sale u = (xi, xj), cu xi, xj Î V, valoarea arcului va fi dată prin notaţiile
v(xi, xj) sau vij. Dacă u este o muchie în graful G = (V, E) atunci v(u) = v(xi, xj) = v(xj, xi), deci pe ambele sensuri
arcele au aceeaşi valoare. Pe o muchie neorientată {i, j} putem avea însă şi v(i, j ) ¹ v(i, j ) . Valorile asociate
arcelor pot reprezenta în practică distanţele între două localităţi, costurile executării unei lucrări pe tronsoanele
respective, costurile trecerii unei linii de fabricaţie de la un produs la altul, timpii de execuţie ai unor activităţi,
măsura siguranţei transmisiunii unui semnal, etc.
Pentru un drum l între nodul xi Î X şi nodul xj Î X, precizat prin specificarea arcelor componente, se
defineşte valoarea drumului l ca fiind suma valorilor arcelor componente:

v(l) = å v(u ) . (1.3)


uÎl

Din noţiunile introductive ştim că un drum este o succesiune de arce permise:

l = (u1, u2, ..., uq) , ui Î U

cu proprietatea că pentru orice 1 £ i £ q – 1, extremitatea finală a unui arc ui coincide cu extremitatea iniţială a
arcului ui+1. Altfel spus, de-a lungul drumului l arcele componente sunt orientate în acelaşi sens, de la nodul iniţial
al arcului u1 către nodul final al arcului uq. Numărul arcelor componente defineşte lungimea l(l) a drumului l.
Drumurile de lungime 1 se identifică cu arcele permise ale grafului.
Dacă u1 = (x0, x1), u2 = (x1, x2), ..., uq = (xq-1, xq) sunt arcele date prin extremităţile lor, atunci un drum poate
fi definit şi prin succesiunea de noduri:
l = (x0, x1, x2, ..., xq)
Nodul x0 este extremitatea de start a drumului l iar nodul xq extremitatea finală. Dacă extremităţile sale
coincid (x0 = xq) atunci drumul l este un circuit.
Un drum este elementar dacă nodurile sale sunt distincte (drumul trece o singură dată prin fiecare nod al
său). Un drum este simplu dacă arcele sale sunt distincte (drumul trece o singură dată prin fiecare arc al său). Evident,
orice drum elementar este şi simplu. Reciproca nu este, în general, adevărată. Mulţimea drumurilor elementare dintr-
un graf finit este finită. Un drum l dintr-un graf G este inclus în drumul l' (l Í l') dacă toate arcele drumului l
sunt arce şi ale drumului l'. Evident, v(l) £ v(l').
O problemă extremală într-un graf orientat G = (V, U) constă în determinarea unui drum elementar (sau a
drumurilor elementare), între două noduri date, de valoare minimă (sau de valoare maximă).
Fie s şi t două noduri oarecare ale grafului G. Notăm cu G*(s, t) un subgraf al grafului G format din mulţimea
drumurilor din graful considerat G = (V, U) între nodurile s şi t, în care sunt incluse şi drumurile de lungime 1.
Problema drumurilor de valoare minimă între nodurile s şi t se defineşte ca problema determinării drumului l* de
la nodul s la nodul t în graful G*(s, t), de valoare minimă:

v(l*) = min{v(l)½l Î G*(s, t)}. (1.4)

Dacă se consideră drumurile de valoare minimă de la un nod s la oricare alt nod al grafului G, mulţimea
acestor drumuri formează un graf parţial orientat în G, numit graful drumurilor de valoare minimă cu originea în
nodul s şi este notat G*(s) sau simplu G*. Problema pusă în acest fel cuprinde şi problema determinării drumurilor
de valoare minimă de la nodul s la un alt nod oarecare t. Într-adevăr, dacă în G*(s) figurează şi nodul t, atunci în
acest graf vom găsi şi drumurile de valoare minimă de la s la t.
Dacă luăm în considerare numai drumurile elementare de la s la t, deoarece mulţimea acestora este finită,
atunci există, întotdeauna, un drum de la s la t de valoare minimă. Aceste drumuri elementare sunt identificate greoi,
motiv pentru care drumurile de valoare minimă se determină considerând, în graf, toate drumurile elementare sau
neelementare între cele două noduri.
Este posibil ca problema (1.4) să nu admită soluţii optime (de exemplu în cazul existenţei circuitelor de
valoare negativă). În acest caz, există o infinitate de drumuri de la s la t a căror mulţime de valori poate fi nemărginită
inferior.

Propoziţia 1.3 Problema drumurilor de valoare minimă cu originea în nodul s admite soluţii în graful G =
(V, U) dacă şi numai dacă graful G*(s) nu conţine nici un circuit cu valoare strict negativă.

Demonstraţie: Fie s un nod al grafului G. Vom presupune că în graful G*(s) există un circuit c = (x = x0, xi,
xj, ..., xk, x) de valoare strict negativă v(c) = r < 0. Deoarece x Î X există un drum µ de la s la x şi fie w valoarea
acestuia. Prin prelungirea drumului µ cu circuitul c, noul drum µ ! c are valoarea w + r. De asemenea, µ ! c ! c are
valoarea w + 2r. Prin recurenţă, prelungirea drumului µ cu de k ori circuitul c, duce la drumul µ ! c$%! % ...
c# !" %c , k
k ori

Îℕ, are valoarea w + kr. Prin urmare, lim (w + kr ) = -¥ .


k ®¥
În concluzie, nu există un drum de valoare minimă în mulţimea drumurilor de la s la x şi problema nu are
soluţie.
Reciproc, dacă G*(s) nu are circuite de valoare strict negativă atunci pentru orice x Î X există un drum µ
de la s la x şi deci şi un drum elementar µE de la s la x, inclus în µ. Întrucât graful nu admite circuite de valoare strict
negativă, prin eliminarea circuitelor suplimentare ale drumului µ faţă de µE avem v(µE) £ v(µ), prin urmare
minorantul va fi atins într-un drum elementar.
Pentru că mulţimea drumurilor elementare este finită minimul acesteia este efectiv atins într-un element al
acesteia şi problema are soluţii, în sensul că există drumuri de valoare minimă.
Un circuit în graful G de valoare strict negativă este numit circuit absorbant. Deoarece problemele de
determinare a drumurilor de valoare minimă între nodurile date se rezolvă considerând toate drumurile posibile, nu
numai cele elementare, vom presupune verificată următoarea condiţie: în graful G nu există circuite de valoare
strict negativă.
Determinarea drumului de valoare minimă poate avea loc într-un graf în care valorile sau ponderile arcelor
sunt nenegative. În grafuri în care există arce cu ponderi negative, sunt necesare eforturi mai mari pentru rezolvare;
în acest caz se va presupune îndeplinită condiţia: nu există circuite de valoare strict negativă (absorbante).
Observaţie. Similar, problema drumurilor de valoare maximă într-un graf G cu nodul de pornire s admite
soluţie dacă şi numai dacă graful G*(s) nu conţine nici un circuit de valoare strict pozitivă.

Dacă l şi l' sunt drumuri elementare în G având aceleaşi extremităţi, atunci drumurile pot fi comparabile:
fie v(l') £ v(l), fie v(l) £ v(l’).
În cazul în care există drumuri de la s la t, evaluarea şi compararea acestora, conform afirmaţiei anterioare,
se poate limita la drumurile elementare cu aceleaşi extremităţi. Numărul drumurilor elementare fiind finit unul dintre
ele va fi drumul de la s la t de valoare minimă.
Dacă graful G nu este conex şi nodurile s şi t nu fac parte din aceeaşi componentă conexă (figura 1.13.a)
sau orientările pe arce nu permit atingerea nodului t din nodul s (figura 1.13.b), există posibilitatea ca în graful G să
nu existe drumuri de la s la t.
În acest context vom spune că nodul i este atins din nodul s dacă există un drum de la s la i format din arce
permise. Ne ocupăm de rezolvarea problemei determinării drumului de valoare minimă de la s la toate celelalte
noduri ale grafului, P(s ) , şi a cazului său particular P(s, t ) - determinarea drumului de valoare minimă de la s la t,
în ipoteza: toate valorile arcelor permise sunt nenegative: v(u ) ³ 0 ; "u Î U .

s
t

Figura 1.13.a

s
t

Figura 1.13.b

1.2.4.2. Metoda Dijkstra2

1. Preliminarii

1) Fiecărui nod i Î V i s-a asociat o variabilă d (i ) numită în continuare eticheta nodului i. Prin definiţie
d (s ) = 0 . În oricare moment al aplicării algoritmului variabilei d (i ) reţine valoarea unui drum de la s la i găsit de
algoritm până în acel moment. Dacă algoritmul nu a găsit încă un drum de la s la i variabila d (i ) are valoarea +∞.
La finalul aplicării metodei, eticheta indică valoarea celui mai „scurt” drum de la nodul s la nodul i. Pe parcursul
aplicării algoritmului etichetele se corectează în sensul micşorării valorilor lor. În momentul în care o etichetă d (i )
atinge valoarea minimă ea devine permanentă.
Metodele de rezolvare a problemei determinării drumului de valoare minimă între două noduri ale unui graf
sunt procedee de etichetare care se împart în două clase:
§ metode cu etichetare permanentă (la fiecare iteraţie se identifică un nod a cărui etichetă se
permanentizează – valoarea ei nu se va mai modifica până la finalul rezolvării); şi

2
Dijkstra, E.W. “A Note on two Problems in Connection with Graphs”, Numerische Math. 1, 269-271, 1959
§ metode cu etichetare temporară (etichetele tuturor nodurilor au valori temporare care devin
permanente doar la finalul rezolvării).
Metodele aparţinând primei clase se aplică numai grafurilor cu valori (costuri) nenegative ale muchiilor, în
timp ce metodele aparţinând celei de a doua clase se aplică grafurilor cu valori (costuri) negative ale muchiilor.
Algoritmul Dijkstra aparţine primei clase.
2) Fiecărui nod i Î V diferit de s i se asociază o altă variabilă PRED (i ) numită indicator de precedenţă cu
următoarea semnificaţie: în oricare moment al aplicării algoritmului, PRED (i ) conţine ultimul nod dinaintea lui i
pe drumul de la s la i găsit de algoritm până în acel moment. Atâta timp cât un asemenea drum nu a fost găsit
d (i ) = +¥ , indicatorul PRED (i ) nu este definit el fiind o locaţie vidă (PRED(i) = Æ).
3) Iniţializăm o listă P în care vom include toate nodurile i Î V pentru care algoritmul a găsit un drum de
valoare minimă de la i la s (lista nodurilor cu eticheta declarată permanentă). La start P se reduce la nodul de
plecare s.
4) Iniţializăm o listă T în care vom include toate nodurile j Î V care sunt vecine cu noduri din lista P: un
nod j este vecin cu i dacă arcul (i, j ) este permis. T este lista nodurilor cu eticheta declarată temporară.
Nodurile cu etichetă permanentă din lista P se selectează din lista T a nodurilor candidate. Corectarea unei
etichete se face după următoarea schemă echivalentă (figura 1.14).

s
j
μ

Figura 1.14

Referitor la un arc permis (i, j ) Î U cu valoarea v(i, j ) ³ 0 presupunem că algoritmul a găsit un drum λ de
la s la i a cărui valoare e reţinută în eticheta d (i ) şi un drum μ de la s la j a cărui valoare se găseşte în locaţia d ( j )
. Figura 1.14 pune în evidenţă cele două drumuri de la s la j.
- drumul l È (i, j ) de valoare d (i ) + v(i, j ) ;
- ,,vechiul” drum μ de valoare d ( j ) .
Dacă d (i ) + v(i, j ) < d ( j ) atunci primul drum are o valoare mai mică şi ca urmare va fi reţinut de algoritm
ca fiind cel mai bun drum de la s la j găsit până în acest moment. Memorarea acestui nou drum se face prin corectarea
etichetei d ( j ) care ia valoarea d ( j ) = d (i ) + v(i, j ) şi actualizarea indicatorului de precedenţă PRED (j): PRED
(j) = i.
Cu aceste pregătiri trecem la prezentarea algoritmului Dijkstra.

2. Algoritmul Dijkstra

START: Iniţializăm:
P = {s};
T = {i Î V / există arcul permis (s, i ) Î U } ;
d (s ) = 0 ; d (i ) = v(s, i ) pentru i Î T si d (i ) = +¥ în rest;
PRED (i ) = s pentru i Î T şi PRED ( j ) nedefinit în rest.
ITERAŢIE:
Pas 1: Dacă lista T e vidă, STOP: algoritmul a găsit toate nodurile ce pot fi atinse din s de-a lungul unor
drumuri de valoare minimă, toate nodurile sunt în lista P şi valorile minime ale drumurilor de la s la aceste noduri
sunt indicate de etichetele corespunzătoare. Identificarea drumului de valoare minimă se face cu ajutorul
indicatorului de precedenţă, din aproape în aproape, de la t (sau de la fiecare nod al grafului) către s.
Dacă T ¹ Æ se trece la pasul 2.
( )
Pas 2: Se selectează nodul i * Î T cu proprietatea: d i * = min{d (i ), i Î T }
Se transferă nodul i din lista T în lista P ( i devine nod cu eticheta permanentă). Drumul de la s la i * găsit
* *

până în momentul selectării este un drum de valoare minimă. Se adaugă la lista T toate nodurile j Î V - {s} care
nu figurau în această listă, noduri adiacente lui i * pentru care există arcul i * , j Î U .( )
( )
Pas 3: Pentru fiecare nod j Î T , vecin cu i * se compară d ( j ) cu suma d (i* ) + v i* , j (vezi figura 1.14
*
cu i schimbat în i ).
() ( )
- Dacă d i* + v i* , j ³ d ( j ) se trece la examinarea altui nod din T vecin cu i * ;
- Dacă d (i ) + v (i , j ) < á d ( j ) se fac actualizările:
* *

d ( j ) ¬ d (i ) + v (i , j ) şi* *

PRED ( j ) = i *
după care se trece la examinarea altui nod din lista T vecin cu i * .
După examinarea tuturor vecinilor lui i * din T se revine la Pasul 1 în cadrul unei noi iteraţii.
STOP: Algoritmul se termină în următoarele situaţii:
§ La Pasul 1: dacă lista T e vidă, T = Æ ;
§ La Pasul 2: Dacă ne interesează numai drumul de valoare minimă de la s la un nod t algoritmul descris se
termină în momentul în care nodul selectat este t : i * = t.

NOTĂ:
1) Dacă algoritmul se termină la Pasul 1 şi d(t) = +¥, în graful G NU există nici un drum de la s la t
(vezi situaţiile din figura 1.13).
2) Aplicarea Algoritmului Dijkstra nu rezolvă doar problema găsirii drumului de valoare minimă de la
s la t ci a TUTUROR drumurilor de valoare minimă de la s la toate celelalte noduri ale grafului
G.

Exemplul 1.2. Aplicaţi metoda DISKTRA pentru a determina drumurile de valoare minimă de la nodul s
la nodurile ce pot fi atinse din s în graful din figura 1.15.

3
x y
4 2
8
s 1
3 w
2
3
z t
Figura 1.15

Fiecărei muchii îi este asociat un cost valabil în ambele sensuri de parcurgere pe muchiile neorientate.

Rezolvare: Valorile iniţiale şi intermediare ale variabilelor d (i ) şi PRED(i) sunt date în tabelul 1.
START: Iniţializăm:
• Listele P = {s}, T = {x, y, z}
• d (s ) = 0 ; d ( x ) = 4, d ( y ) = 8, d ( z ) = 3; d (i ) = +¥ în rest;
• PRED (i ) = s pentru i Î T şi PRED ( j ) nedefinit în rest.
Iteraţia 1: Se calculează min{d (i ), i Î T } = min{4, 8, 3} = 3 Þ i * = z
Transferăm z din lista T în lista P: P = {s, z} şi includem în lista T nodul t care este vecin cu
i * = z : T = {x, y, t}.
*
Examinăm toţi vecinii lui i = z din lista T: există un singur vecin, nodul t. Deoarece
d ( z ) + v( z , t ) = 3 + 3 = 6 < +¥ = d (t ) actualizăm d (t ) = 6 şi PRED (t ) = z (valorile actualizate se trec
în tabelul 1 în linia ITERAŢIA 1, celelalte valori nu se modifică).
Iteraţia 2: Se calculează min{d (i ), i Î T } = min{4, 8, 6} = 4 Þ i * = x
Actualizăm listele P şi T: P = {s, z , x}, T = {y, t}
Observăm că vecinii lui i * = x cu etichetă nepermanentă, adică y şi t sunt deja în lista T.
Trecem la corectarea – dacă este cazul – a etichetelor d ( y ) şi d (t ) :
• d ( x ) + v( x, y ) = 4 + 3 = 7 < 8 = d ( y ) Þ actualizăm: d ( y ) = 7 şi PRED ( y ) = x
• d ( x ) + v( x, t ) = 4 + 1 = 5 < 6 = d (t ) Þ actualizăm d (t ) = 5 şi PRED (t ) = x .
Celelalte etichete şi indicatori de precedenţă rămân neschimbaţi.
Iteraţia 3: Calculăm min{d (i ), i Î T } = {7, 5} = 5 Þ i * = t .
Actualizăm P = {s, z , x, t}; T = {y} .
i * = t nu are vecini cu etichetă nepermanentă, nici în T, nici în afara lui T.
În această iteraţie nu are loc nici o corectare de indicatori.
Iteraţia 4: i* = y
P = {s, z , x, t , y}; T = F
i * = y nu are nici un vecin cu etichetă nepermanentă.
STOP, pentru că T = F .
Tabelul 1
ITERAŢIA d(s) d(x) PRED(x) d(y) PRED d(z) PRED d(t) PRED d(w) PRED (w)
(y) (z) (t)
START 0* 4 s 8 s 3 s +∞ - +∞ -
ITERAŢIA 1 - 4 s 8 s 3* s 6 z +∞ -
ITERAŢIA 2 - 4* s 7 x - - 5 x +∞ -
ITERAŢIA 3 - - - 7 x - - 5* x +∞ -
ITERAŢIA 4 - - - 7* x - - - - +∞ -
STOP 0 4* s 7 x 3 s 5 x +∞ -

Drumurile de valoare minimă se construiesc cu ajutorul indicelui de precedenţă şi sunt vizualizate în figura
1.16.

d(x) = 4 d(y) = 7
PRED(x) = s PRED(y) = x
3
x y
4
d(s) = 0 d(w) = +∞
s 1 PRED(w) = Æ
w
3

z t
d(z) = 3 d(t) = 5
PRED(z) = s PRED(t) = x

Figura 1.16
Aşa cum se observă, deşi graful din figura 1.15 este conex, datorită orientărilor existente pe muchii, nodul
w nu poate fi atins din s (nu se găseşte în lista P). Lungimile drumurilor de valoare minimă de la s la toate celelalte
noduri ale grafului sunt date de etichetele fiecărui nod (de exemplu, valoarea celui mai scurt drum de la s la y este
7 şi el trece prin nodul x – PRED(y) = x iar PRED(x) = s).

Observaţie finală: Una dintre metodele de determinare a drumurilor de valoare minimă în grafuri cu costuri
negative asociate muchiilor este Metoda Ford. Ea aparţine clasei metodelor cu etichetare temporară şi poate fi
lecturată în: Ciobanu Gh., Nica V., Floare Mustaţă, Virginia Mărăcine, Mitruţ D., “Cercetări Operaţionale.
Optimizări în reţele. Teorie şi aplicaţii economice”, Editura MatrixRom, Bucureşti, 2002.

1.2.4.3. Identificarea drumurilor minime cu ajutorul Excel QM

Să reluăm exemplul 1.2 de mai sus referitor la identificarea drumurilor de valoare minimă de la nodul s la
nodurile ce pot fi atinse din s în graful din figura 1.15 și să-l rezolvăm cu ajutorul Excel QM.
În acest scop, deschidem aplicația Excel și din bara de sus selectăm Excel QM. Din meniul din stânga sus
apasăm pe Alphabetical, selectăm Network Analysis iar de acolo Shortest Path.
În fereastra care se deschide introducem titlul „Drumuri de valoare minimă de la s” și specificăm numărul
de muchii ale grafului, în cazul nostru „13”.
Întrucât graful este parțial orientat, optăm pentru opțiunea „Directed” ceea ce presupune dublarea numărului
muchiilor neorientate și introducerea lor în tabel cu considerarea ambelor arce (de exemplu pentru muchia
neorientată {s;x} considerăm atât arcul (s;x) cât și arcul opus (x;s)). Muchiile orientate se vor adăuga ținând cont de
orientarea lor (sensul de parcurgere permis). Dacă în graf am fi avut numai muchii neorientate, atunci am fi selectat
opțiunea „Undirected” iar dublarea numărului muchiilor neorientate nu ar mai fi fost necesară. Numărul 13 provine
din cele 5 muchii neorientate ale grafului care pot fi deci parcurse în ambele direcții (5 x 2=10) la care se adaugă
cele 3 muchii orientate care pot fi parcurse doar în direcția indicată. Fereastra este redată mai jos:

Apăsăm pe butonul OK și ni se deschide o foaie de Excel cu un tabel în care vom introduce pentru fiecare
muchie („Branch”) nodul de start („Start node”), cel final („End note”) precum și distanța („Distance”).
Atenție!! Deoarece nodurile din graf sunt etichetate alfabetic, ele vor trebui redenumite utilizând valori de
la 1 la 6 deoarece aplicația nu acceptă notațiile alfabetice pentru extremitățile muchiilor. Astfel, nodul s devine
nodul 1, nodul x devine nodul 2, nodul y este nodul 3, z este 4, t este 5 iar w este acum 6.
Faptul că muchia {s;x} este neorientată conduce la introducerea ei ca (s;x) și apoi ca (x;s) (pe notațiile
acceptate de program vom avea deci (1;2), respectiv (2;1)).
Specificăm apoi nodul sursă și nodul destinație. Întrucât în acest exercițiu dorim să identificăm toate
drumurile de valoare minimă de la nodul s (nodul 1) la restul nodurilor din graf, introducem „1” pentru „Origin” și
nu trecem nimic la „Destination”.
Odată introduse toate muchiile și valorile lor și specificate nodurile sursă și destinație, apăsăm butonul
„Solve”. Rezultatele vor fi redate în tabelul gri în care avem de fapt o matrice în care sunt date toate distanțele dintre
toate nodurile grafului către celelalte noduri din graf. Pentru a citi distanța de la un anumit nod la celelalte noduri
din graf pe uităm pe linia corespunzătoare nodului considerat nod de start. De exemplu, pentru a citi distanța de
nodul s la restul nodurilor din graf ne uităm la valorile trecute pe prima linie a matricii („node 1”). Astfel, distanța
de la s la s este 0 (d(s)=d(1)=0), de la s la x este 4 (d(x)=d(2)=4), de la s la y este 7 (d(y)=d(3)=7, de la s la z este 3
(d(z)=d(4)=3), de la s la t este 5 (d(t)=d(5)=5) iar de la s la w este +∞ (d(w)=d(6)= +∞ ) ceea ce arată faptul că nodul
w nu poate fi atins pornind din nodul s (se observă din graf dar și din ultima coloană a matricii că toate drumurile
către nodul w au o valoare foarte mare, indicând imposibilitatea ajungerii în acest nod din oricare nod al rețelei).
Astfel, matricea ne arată nu doar toate distanțele minime de la un anumit nod către toate nodurile din graf
(citite de pe linia corespunzătoare fiecărui nod) dar și toate distanțele minime de la toate nodurile unui graf către
un anumit nod din acel graf care se regăsesc pe coloanele matricii. Prin urmare, deși nu putem ajunge de la s la w,
putem ajunge de la w la s iar distanța minimă în acest caz este de 7 km așa cum rezultă din tabel dacă ne uităm la
valoarea care se regăsește în celula de pe linia node 6 și coloana node 1.

Dacă ne interesează de exemplu, un drum de valoare minimă de la nodul s la nodul t, introducând nodul t
(adică valoarea 5) ca destinație („Destination”), programul ne sugerează componentele acestui drum și ne
calculează valoarea minimă a acestuia cumulând valorile de pe fiecare arc component. În plus, programul furnizează
drumurile de valoare minimă și în cazul în care muchiile neorientate au valori diferite în funcție de sensul de
parcurgere (de exemplu în cazul în care distanța de la nodul 1 la nodul 2 este de 4 km iar de la nodul 2 la nodul 1
este de 5 km).
Rezultatele sunt redate mai jos; se observă că drumul de valoare minimă de la nodul s (nodul 1) la t (nodul
5) este alcătuit din arcele (1;2) și (2;5) iar distanța cumulată este de 4+1= 5 km. De asemenea, datorită valorilor
diferite ale muchiei {1;2} în funcție de sensul de parcurgere, drumul de lungime minimă de la t (nodul 5) la s (nodul
1) are distanța minimă de 6 km.
1.3. Îndrumar pentru autoverificare

1.3.1. Sinteza unității de studiu 1

În această unitate am abordat două probleme de optimizare în reţele de transport:


1. problema determinării unui arbore maximal (de acoperire) de valoare (cost) minimă şi
2. problema drumului de valoare minimă de la un nod de start la un nod destinație (sau la
toate celelalte noduri dintr-un graf).

Pentru rezolvarea acestor probleme, este necesară înțelegerea câtorva concepte de bază folosite în
teoria grafurilor. Acestea sunt prezentate pe scurt mai jos.
Într-o mare varietate de contexte se pune problema deplasării unei cantităţi Q ce poate fi materie,
energie, informaţie, etc. din unele locuri numite surse în alte locuri numite destinaţii, această deplasare
realizându-se pe anumite rute de legătură. Ansamblul surselor, destinaţiilor, al punctelor intermediare şi al
rutelor de legătură se va numi reţea de transport; ea se identifică cu un graf orientat, neorientat sau parţial
orientat
Un graf este un cuplu G = (V, E) format dintr-o mulţime nevidă V, ale cărei elemente se numesc
vârfuri sau noduri şi o mulţime E de elemente, zise muchii. Graful G se va numi simplu dacă nu are bucle
şi oricare două noduri sunt extremităţi pentru cel mult o muchie. Vom spune că G este finit dacă vârfurile
şi muchiile sale sunt în număr finit. Un graf orientat (parţial orientat, neorientat) este un graf în care s-a
dat o orientare totală (o orientare parţială, respectiv nu s-a dat nici o orientare). Graful G = (V,E) se zice
conex dacă oricare două noduri ale sale sunt extremităţile unui lanţ.
Un lanţ în graful G este o succesiune de noduri l = (x0, x1, ... , xp-1, xp) cu proprietatea că {x0, x1},
{x1, x2}, ..., {xp-1, xp } sunt muchii în G. Un ciclu este un lanţ ale cărui extremităţi coincid. Un drum în
graful G este o succesiune de noduri d = (x0, x1, ... , xp -1, xp) cu proprietatea că (x0, x1), (x1, x2), ..., (xp -1, xp)
sunt arce permise. Un circuit este un drum ale cărui extremităţi coincid. Prin definiţie lungimea unui
lanț/ciclu/drum/circuit este dată de numărul muchiilor componente.
Un arbore este un graf neorientat, conex şi fără cicluri. H se zice maximal dacă conţine toate
nodurile grafului G. Valoarea unui arbore H = (V, Y) conţinut în graful G = (V, E), Y Í E este, prin definiţie,
suma valorilor muchiilor sale.
Prima problemă pe care dorim să o rezolvăm este problema arborelui de valoare minimă: să se
determine un arbore de acoperire maximal H* = (V, Y*) conţinut într-un graf G = (V, E), Y* Í E de valoare
minimă: v(H*) = min v(H) . O modalitate de a identifica arbori de acoperire maximali este furnizată de
H
algoritmul Kruskal.
Cea de-a doua problemă referitoare la determinarea drumului de valoare minimă de la s la toate
celelalte noduri ale grafului, P(s ) şi a cazului său particular de la s la un anumit nod t, P(s, t ) (în ipoteza
că toate valorile arcelor permise sunt nenegative) se face cu ajutorul algoritmului lui Dijkstra.

1.3.2. Concepte și termeni de reținut

Rețea de transport Arbore


Graf (orientat, neorientat, parțial orientat) Arbore maximal
Noduri (vârfuri) Arbore de acoperire
Muchii vs. arce Valoarea unui arbore
Graf simplu Drum de valoare minimă
Graf conex Lanț vs. drum
Graf finit Ciclu vs. circuit
Graf bipartit

1.3.3. Probleme rezolvate/de rezolvat

Exercițiul 1 (rezolvat): Administraţia unei localităţi montane a hotărât construirea unor linii de teleferic
care să lege oraşul de cele 8 puncte turistice importante din jurul acestuia. În urma unui studiu au fost puse
în evidenţa toate posibilităţile şi costurile de conectare a obiectivele turistice între ele şi cu oraşul, acestea
fiind prezentate în figura 1.17.
Se cere găsirea variantei de construcţie de cost minim, care să asigure accesul din oraş la oricare
din obiectivele turistice.

Rezolvare: Condiţia de cost minim implică două obiective:


1. Să se construiască minimul de arce necesare;
2. Să se construiască cele mai ieftine legături.

Referitor la numărul de arce necesar, facem observaţia că, dacă din oraş se va putea ajunge la orice
obiectiv turistic, atunci se va putea ajunge şi de la orice obiectiv turistic la oricare altul (trecând prin oraş),
deci trebuie ca arcele alese pentru construcţie să formeze la un loc un graf conex.
În concluzie, căutăm un graf parţial conex cu un număr minim de arce, adică un arbore. În plus,
suma costurilor arcelor sale trebuie să fie minimă. Vom aplica algoritmul lui Kruskal.
Figura 1.17
La primul pas poate fi ales unul din arcele OP3 sau OP7, ele având valoarea minimă 2. Putem alege
oricum primul arc dintre cele două pentru că la al doilea pas va fi ales celălalt.
La pasul trei poate fi ales unul din arcele OP5, OP6 sau P1P6 care au valoarea minimă 3. Nici în
acest caz nu are vreo importanţă ordinea alegerii, deoarece pot fi alese succesiv toate trei fără a se forma
nici un ciclu.
Al şaselea arc poate fi ales dintre arcele P4P5 şi P1P2, care au valoarea minimă 4. Nici în acest caz
nu are vreo importanţă ordinea alegerii, deoarece pot fi alese succesiv ambele, fără a se forma nici un ciclu.
Următoarea valoare disponibilă a unui arc este 5, dar arcul opt nu poate fi ales dintre arcele OP1,
P6P7, deşi au valoarea minimă 5. Arcul OP1 nu poate fi ales deoarece s-ar forma ciclul OP1P6, iar P6P7 ar
duce la ciclul OP6P7. Următoarea valoare minimă este 6, pentru arcul P5P7 dar nu poate fi ales deoarece se
formează ciclul OP5P7.
Valoarea următoare, 7, o au arcele OP4, P2P3 şi P5P8. OP4 nu poate fi ales deoarece s-ar forma ciclul
OP5P4. Arcul P2P3 nu poate fi ales deoarece s-ar forma ciclul OP6P1P2P3. Arcul P5P8 nu formează nici un
ciclu şi el va fi al optulea arc ales. În acest caz, deoarece s-au adunat 8 arce într-un graf cu 9 noduri, am
obţinut graful căutat. Acest arbore este reprezentat în figura 1.18.

Figura 1.18
Exercițiul 2: Într-un județ se urmărește modernizarea drumurilor care să lege orașul reședință de județ (O)
cu alte 6 localități din județ. În graf s-au identificat drumurile ce pot fi modernizate și s-au estimat costurile
implicate în modernizarea acestora.
Să se determine drumurile ce trebuie să fie modernizate astfel încât toate localitățile să fie conectate
la un cost minim.
20
11 B
F
10 12
8 9
A
10
C O 15
19 8
11 16
D E

25
Figura 1.19

Răspuns: se aplică algoritmul Kruskal pentru a determina arborele maximal de valoare minimă. Problema
admite 2 soluții optime iar costul minim al conectării este 58 u.m.

Exercițiul 3: În cazul unei căderi masive de zăpadă, primăria dorește un plan de deblocare, într-o primă
etapă, a punctelor importante ale orașului (spitale, pompieri, aeroport). Se cunosc distanțele între aceste
puncte importante conform rețelei din figura. 1.20.
Să se determine drumurile ce trebuie să fie deszăpezite în prima etapă astfel încât toate aceste
puncte importante ale orașului să fie accesibile. După rezolvarea manuală a acestui exercițiu, utilizați Excel
QM pentru a obține soluția optimă furnizată de program și interpretați rezultatul obținut.

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

Figura 1.20

Răspuns: se aplică algoritmul Kruskal pentru a determina arborele maximal de valoare minimă. Problema
admite 6 soluții optime iar costul minim al conectării este 20 u.m.

Exercițiul 4: Problema modernizării reţelei de drumuri. Prefectura judeţului X şi-a fixat ca obiectiv
modernizarea reţelei drumurilor care leagă localităţile judeţului conform grafului din figura 1.21. Pe fiecare
muchie este înscrisă valoarea numerică în unităţi monetare [u.m.] a costului modernizării tronsonului
respectiv. În prima etapă se caută să se modernizeze numai unele drumuri astfel încât fiecare localitate să
fie conectată la cel puţin un drum modernizat şi costul întregii operaţii de modernizare (parţială) să fie
minim.

2 3
5
5 1 6 7
3
8 3 3 4
1 6 8
10 2 10 8 7

4 2 7

Figura 1.21
Rezolvarea problemei se reduce la determinarea unui arbore maximal de valoare minimă. Aplicaţi
algoritmul Kruskal pentru determinarea variantei optime de modernizare a drumurilor.

Exercițiul 5 (rezolvat): În graful din figura 1.22 valorile numerice înscrise pe muchii reprezintă distanţe.
Se cere determinarea celui mai scurt drum de la nodul O la nodul T. Atenţie: absenţa orientărilor vrea să
însemne că orice muchie poate fi parcursă în ambele sensuri (deci graful are 12 muchii şi 24 arce permise).
Aplicăm algoritmul lui Dijkstra.

Figura 1.22

Soluţie:
Start Nodul de plecare O este declarat cercetat; celelalte şase noduri ale grafului sunt declarate
necercetate.

Iteraţia 1
Singurul nod cercetat O are trei vecini A,B,C dintre care, cel mai apropiat, este A. Nodul A va fi
unicul candidat asociat nodului cercetat O. Declarăm cercetat nodul A; drumul cel mai scurt de la O la A
se reduce la arcul OA. Reţinem arcul OA pentru graful G*(O) al drumurilor de valoare minimă cu origina
în O.

Iteraţia 2 Avem două noduri cercetate O şi A.


• Vecinii necercetaţi ai lui O sunt nodurile B şi C; deoarece este mai apropiat de O, nodul C este
nodul candidat asociat – în această iteraţie – nodului O.Drumul asociat lui C se reduce la arcul
OC şi are valoarea 4.
• Vecinii necercetaţi ai lui A sunt B şi D; candidat va fi nodul mai apropiat B. Drumul asociat
nodului B se obţine „prelungind” drumul de valoare minimă de la O la A – găsit la iteraţia 1 –
cu arcul AB ; valoarea drumului este egală cu 2 + 2 = 4.
• Avem două noduri candidate C şi B ale căror drumuri asociate au aceeaşi valoare 4. Le
declarăm pe amândouă ca fiind noduri cercetate. Conform teoriei, drumurile asociate sunt cele
mai scurte drumuri către ele.

Iteraţia 3 În acest moment nodurile O, A, B şi C sunt cercetate.


• Nodul O nu mai are vecini necercetaţi.
• Nodul A are un singur vecin necercetat, nodul D, care va fi şi candidatul său. Drumul asociat
are lungimea 2 + 2 = 4 km iar ultimul său arc component este AD.
• Vecinii necercetaţi ai lui B sunt D şi E; candidatul lui B va fi nodul mai apropiat E. Drumul
minim până la B are valoarea 4 km (iteraţia 2) astfel că drumul asociat candidatului E va avea
valoarea 4 + 3 = 7 km (s-a adăugat valoarea ultimului arc BE).
• E va candida şi din partea lui C ca unic vecin necercetat şi ca urmare va avea un al doilea drum
asociat, obţinut prelungind drumul minim până la C (în fapt, arcul OC) cu arcul CE. Valoarea
noului drum este 4 + 4 = 8 km.
• Comparăm valorile drumurilor asociate construite. Cel mai scurt se termină în E, înainte de a
ajunge în E trece prin B şi are lungimea 7. În consecinţă declarăm E nod cercetat şi reţinem
arcul BE ca ultim arc pe drumul cel mai scurt către E.

Iteraţia 4: La acest stadiu al derulării algoritmului sunt declarate cercetate nodurile O,A,B,C şi
E.Sunt cunoscute valorile minimale ale drumurilor da la O către A,B,C şi E. Sunt reţinute deasemenea
„ultimele” arce ale drumurilor minimale; după cum vom vedea cunoaştera acestor arce va fi suficientă
pentru reconstituirea drumurilor minimale din O către orice alt nod al grafului!
D este singurul nod candidat, asociat însă la numai puţin de trei noduri deja cercetate A,B şi E. Este
clar că D va fi următorul nod declarat cercetat; rămâne să stabilim valoarea drumului minimal de la O la D
şi ultimul său arc! Algoritmul ia în considerare trei drumuri de la O la D:
- drumul minim de la O la A, prelungit cu arcul AD; valoare: 2 + 7 = 9 km;
- drumul minim de la O la B, prelungit cu arcul BD; valoare: 4 + 4 = 8 km;
- drumul minim de la O la E, prelungit cu arcul ED; valoare: 7 + 1 = 8 km;
În concluzie, cele mai scurte drumuri de la O la D au valoarea 8 km şi înainte de a ajunge în D trec, fie prin
B fie prin E!

Iteraţia 5 Nodul T candidează:


- o dată din partea lui D - drumul asociat va avea valoarea 8 + 5 = 13;
- altă dată din partea lui E - drumul asociat va avea valoarea 7 + 7 = 14.
Prin urmare, cel mai scurt drum de la O la T va avea valoarea 13 iar ultimul său arc va fi DT.

Deoarece am „atins” nodul T algoritmul se opreşte. În cazul de faţă toate nodurile grafului au fost
cercetate aşa încât algoritmul a găsit şi toate drumurile minimale cu originea în O!

Consideraţiile de mai sus au fost sintetizate în tabelul 1.1

2 2 4 5
O A B D T

3 1

Figura 1.23

Determinarea efectivă a nodurilor prin care trece drumul cel mai scurt de la O la T sau la oricare
alt nod se face din aproape în aproape „de la sfârşit către începutul drumului” folosind arcele reţinute pe
parcurs.
Există două drumuri optime indicate în figura 1.23:
În fapt, algoritmul a determinat drumurile de valoare minimă de la O la toate celelalte noduri.

2 2

O 4 5
B D T

4 3 1

C E
Figura 1.24

Tabelul 1.1
Iteraţia Noduri Noduri Valoarea Care nod Valoarea minimă Ultimul arc pe
cercetate cu (necercetate) drumului a fost a drumului către drumul de
vecini candidate asociat declarat nodul declarat valoare minimă
necercetaţi cercetat cercetat
1 O A 2 A 2 OA
2 O C 4 C 4 OC
A B 2+2=4 B 4 AB
3 A D 2+7=9
B E 4+3=7 E 7 BE
C E 4+4=8
4 A D 2+7=9
B D 4+4=8 D 8 BD
E D 7+1=8 D 8 ED
5 D T 8+5=13 T 13 DT
E T 7+7=14

Exercițiul 6: În reţeaua din figura 1.25,


valorile numerice înscrise pe muchii C
5
reprezintă costuri de deplasare valabile în
ambele sensuri de parcurgere. Aplicaţi A
algoritmul lui Dijkstra pentru determinarea 2 5
8 4
drumului de la nodul O la nodul T cu cel
mai mic cost.
1 D 6 T
O
5
6
1 4
B

7
E

Figura 1.25

Exercițiul 7: Aplicaţi metoda DISKTRA pentru a determina drumurile de valoare minimă de la nodul s
(respectiv nodul 1) la nodurile ce pot fi atinse de s (respectiv nodul 1) din grafurile următoare.
Figura 1.26

Figura 1.27

Figura 1.28

Exercițiul 8:
a) Utilizând algoritmul lui Dijkstra determinaţi cele mai scurte drumuri de la nodul A la
celelalte noduri ale grafului din figura 1.29;
b) Ce modificări intervin în graful G*(A) al drumurilor de lungime minimă dacă muchiile {I,
G} şi {D, J} nu pot fi parcurse decât de la I la G, respectiv de la D la J?

B 8 8
C D

7 4 3 5 3 4

5 7
A H I J E

5 2 10
8 6

G F
7

Figura 1.29
Întrebări de control și teme de dezbatere

1. Ce este un graf și la ce poate folosi acesta în cadrul disciplinei studiate? Dați exemple.
2. Care sunt diferențele dintre un graf orientat/ parțial orientat/neorientat?
3. Care sunt diferențele dintre lanțuri/cicluri/drumuri și circuite?
4. Ce este un arbore? Când este el maximal?
5. Cum se aplică algoritmul lui Kruskal?
6. Cum se aplică algoritmul lui Dijkstra?
7. Dați exemple de situații întâlnite în practică în care vom folosi algoritmul lui Kruskal. Dar
algoritmul lui Dijkstra?

1.3.4. Bibliografie obligatorie

1. Ciobanu, Gh, Nica, V, Mustață Fl., Mărăcine, V., Mitruț, D., Cercetări Operaționale. Optimizări în
rețele. Teorie și aplicații economice, Editura MATRIX ROM, București, 2002
2. Ciobanu, Gh, Nica, V, Mustață Fl., Mărăcine, V., Cercetări Operaționale cu aplicații în economie.
Teoria grafurilor și Analiza drumului critic, Editura MATRIX ROM, București, 1996
3. Nica, V., Cercetări operaționale I, Note de curs pentru învățământul la distanță, Editura ASE,
București, 2011;
4. http://www.asecib.ase.ro/cursurionline.htm, cursurile numărul: 1- Bazele Cercetării Operaționale; 13-
Culegere de probleme de Bazele Cercetării Operaționale- an II zi și distanță, București, Romania.

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