Sunteți pe pagina 1din 2

Algoritmul Caracteristici Aplicatii

Kruskal Algoritmul lui Kruskal, scris de Joseph Kruskal Trebuie sa conectam 3 orase la o retea telefonica:
în 1956, este un algoritm în teoria grafurilor care Bucuresti, Timisoara si Arad.
găseşte arborele parţial de cost minim pentru un Necesar cablu: 1300 km.
graf conex ponderat (graf in care fiecare muchie
are asociat un cost). Cu alte cuvinte, găseşte
submulţimea muchiilor care formează un arbore
care include toate vârfurile şi care este minimizat
din punct de vedere al costului. Dacă graful nu
este conex, atunci algoritmul găseşte un arbore
parţial de cost minim pentru fiecare componentă
conexă. Algoritmul lui Kruskal este un exemplu E inutil sa executam toate cele trei conexiuni, numai
de algoritm greedy. doua din ele sunt suficiente pentru o comunicare in
bune conditii intre oricare 2 orase.
De exemplu, legatura Timisoara – Arad ar putea
lipsi, caz in care necesarul de cablu devine 1240 km.

Oricare 2 legaturi sunt suficiente, deoarece semnalul


electric circula suficient de rapid ca un abonat din
Timisoara care doreste sa vorbeasca cu unul din
Arad (de exemplu) sa nu-si dea seama ca nu exista
legatura directa intre Timisoara si Arad si ca apelul
sau este rutat prin Bucuresti.

Cel mai ieftin ar fi sa alegem legaturile Arad –


Timisoara si Timisoara – Bucuresti si sa evitam
legatura Arad - Bucuresti, necesarul de cablu
ajungand in acest caz la 660 km; aceasta este situatia
optima – sau “acoperirea minima” a retelei.

Apar ca funcţii anexe, dar fără de care funcțiile de


comutație nu ar putea fi pe deplin realizate.
Exploatarea şi întreţinerea desemnează funcţii care
permit:

- gestionarea echipamentelor şi a programelor de


comandă din centrele de comutaţie;

- observarea şi măsurarea traficului;

- detecţia şi localizarea deranjamentelor.

Specificitatea lor se manifestă prin: interacţiunea


cu operatorii tehnici, punerea în aplicare a unor
automate cu programe complexe, paralelismul
funcţiilor, restricţii mai scăzute de timp real.

Algoritmul lui Dijkstra este o metodă de a Se da un graf orientat cu N noduri si M arce.


stabili drumul de cost minim de la un nod de start la Cerinta
Djikstar oricare altul dintr-un graf. Numele este dat de Edsger Sa se determine lungimea minima a drumului de la
Dijkstra, savantul care l-a descoperit. nodul 1 la fiecare din nodurile 2, 3, ..., N-1, N si sa
se afiseze aceste lungimi. Lungimea unui drum este
Algoritm data de suma lungimilor arcelor care constituie
drumul.
1. Se creează o listă cu distanțe, o listă cu
Date de intrare
nodul anterior, o listă cu nodurile vizitate și
Fisierul de intrare dijkstra.in contine pe prima linie
numerele N si M, separate printr-un spatiu, cu
un nod curent. semnificatia din enunt. Urmatoarele M linii contin,
2. Toate valorile din lista cu distanțe sunt fiecare, cate 3 numere naturale separate printr-un
inițializate cu o valoare infinită, cu excepția spatiu A B C semnificand existenta unui arc de
nodului de start, care este setat cu 0. lungime C de la nodul A la nodul B.
3. Toate valorile din lista cu nodurile vizitate Date de iesire
sunt setate cu fals. In fisierul de iesire dijkstra.out veti afisa pe prima
4. Toate valorile din lista cu nodurile linie N-1 numere naturale separate printr-un spatiu.
anterioare sunt inițializate cu -1. Al i-lea numar va reprezenta lungimea unui drum
5. Nodul de start este setat ca nodul curent. minim de la nodul 1 la nodul i+1.
6. Se marchează ca vizitat nodul curent. Restrictii
7. Se actualizează distanțele, pe baza nodurilor  1 ≤ N ≤ 50 000
care pot fi vizitate imediat din nodul curent.  1 ≤ M ≤ 250 000
8. Se actualizează nodul curent la nodul  Lungimile arcelor sunt numere naturale
nevizitat care poate fi vizitat prin calea cea cel mult egale cu 20 000.
mai scurtă de la nodul de start.  Pot exista arce de lungime 0
9. Se repetă (de la punctul 6) până când toate  Nu exista un arc de la un nod la acelasi
nodurile sunt vizitate. nod.
 Daca nu exista drum de la nodul 1 la un
nod i, se considera ca lungimea minima
este 0.
 Arcele date in fisierul de intrare nu se
repeta.

Algoritmul lui Lee presupune doi paşi importanţi: Aplicaţia #1 -> Problema Labirintului
1. Primul şi poate cel mai important pas este Se dă o matrice cu M linii şi N coloane. Ştiind
Lee-Le Gall folosirea unei Cozi, sub forma unui vector de locul de plecare, marcat cu -1, se cere să se
structuri (de preferabil), care va menţine toţi determine drumul de lungime minimă până la o
paşii pe care o să-i facem de acum în colo. În ieşire, iar in caz că nu există, se va afişa-1
această coadă se pun, pentru fiecare pas,
Rezolvare
locurile care s-au marcat la punctul anterior.
După cum observaţi, este o aplicaţie a algoritmului
2. Se marchează cu numere consecutive toate
lui Lee. Această problemă se poate rezolva şi cu
locurile posibile prin care putem trece,
metoda backtracking, dar această metodă nu este una
parcurgând în ordine elementele cozii, până
eficientă, complexitatea fiind O(4(M*N)),
când nu mai putem marca, sau am ajuns la (M*N)
sau O(3 ) după caz, ceea ce este foarte mult. În
final.
primul pas vom pune în coadă coordonatele locului
de plecare, urmând apoi să parcurgem pe rând
coada, până când nu mai există cale de ieşire sau am
găsit una. Vă voi da un exemplu pentru a vă arata
mai bine cum se marchează fiecare vecin în parte:

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