Sunteți pe pagina 1din 12

Proiect realizat de: Capota Alina si

Predescu Iulia

Descrierea algoritmului

Implementarea algoritmului

Aplicatie practica

Exemplu

Programul in C++

Algoritmul lui Kruskal, scris de Joseph Kruskal n 1956, este un algoritm


n teoria grafurilor care gsete arborele parial de cost minim pentru un
graf conex ponderat (graf in care fiecare muchie are asociat un cost). Cu
alte cuvinte, gsete submulimea muchiilor care formeaz un arbore care
include toate vrfurile i care este minimizat din punct de vedere al
costului. Dac graful nu este conex, atunci algoritmul gsete un arbore
parial de cost minim pentru fiecare component conex. Algoritmul lui
Kruskal este un exemplu de algoritm greedy.

Pentru implementarea algoritmului este necesar rezolvarea urmtoarelor dou


probleme:
cum extragem muchia de cost minim
cum testm dac muchia selectat formeaz sau nu cicluri cu cele deja selectate.
Pentru a extrage minimul, o idee ar fi s sortm muchiile cresctor dup cost i s
parcurgem secvenial muchiile ordonate. Pentru a realiza sortarea muchiilor grafului,
vom reprezenta graful prin lista muchiilor (un vector cu m componente, fiecare
component fiind o structur n care reinem cele dou extremiti i costul muchiei).
O muchie va forma cicluri cu muchiile deja selectate dac i numai dac ntre
extremitile muchiei exist cel puin un lan.
Pentru a testa dac o muchie formeaz cicluri cu muchiile deja selectate este suficient
s testm dac extremitile muchiei se gsesc n aceeai component conex. Pentru
aceasta va trebui s inem permanent evidena componentelor conexe (arborilor) care
se formeaz.

Reprezentarea informaiilor:
n numrul de vrfuri
m numrul de muchii din graf
G graful dat, reprezentat prin lista muchiilor (un vector cu m
componente, fiecare component fiind o structur n care
reinem cele dou extremiti i costul muchiei)
A arborele parial de cost minim, reprezentat ca un vector n-1
componente n care vom reine indicii din G ai muchiilor
selectate
c vector cu n componente n care vom reine evidena
componentelor conexe (c[i] = componenta conex creia i
aparine vrful i)

Trebuie sa conectam 3 orase la o retea telefonica:


Bucuresti, Timisoara si Arad.
Necesar cablu: 1300 km.

640
60
600

E inutil sa executam toate cele trei conexiuni, numai 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.

640

600

Sau legatura Timisoara Bucuresti ar putea lipsi,


necesarul de cablu devenind 700 km.

640
60

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.

Din punctul de vedere al necesarului de cablu, lucrurile nu mai stau la fel.

Conteaza foarte mult care legaturi vor fi realizate si care nu.

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.

Exemplu:
Notm

cu n numrul de vrfuri din graf (n=|X|). Iniial


considerm c nici o muchie din graf nu a fost selectat, deci
fiecare vrf din graf este vrf izolat. Cu alte cuvinte, la
momentul iniial avem o pdure format din n arbori, fiecare
arbore fiind format dintr-un singur vrf. La fiecare pas se
selecteaz o muchie de cost minim care nu a mai fost selectat
i care nu formeaz cicluri cu muchiile deja selectate.
1
1
1

1
21
1
1
11
1

3
1 1
14
1

3
1
1
1
5
1

Pasul 1:Selectm o muchie de cost minim. (n cazul


nostru, de cost 1).Observai c n graful parial selectat
exist n - 1 = 4 arbori, pentru c am unificat arborii
corespunztori extremitilor muchiei selectate. Arborii
sunt: { 1, 3 }; { 2 }; { 4 }; { 5 }.
Pasul 2: Selectm din nou o muchie de cost minim.
(Costul minim fiind 1).Observai c n graful parial
selectat exist n - 2 = 3 arbori. Arborii sunt:{ 1, 3, 4 };
{ 2 }; { 5 }.
Pasul 3: La acest pas nu mai putem selecta o muchie de
cost 1, deoarece s-ar obine un ciclu. Selectm muchia de
cost 2.Arborii sunt: { 1, 2, 3, 4 }; { 5 }.
Pasul 4: Selectnd, n final, muchia de cost 3, obinem
un graf fr cicluri cu n-1 muchii, deci un arbore.

Cod C++:

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

  • Tema 2-1 - Proiectarea Unui Supply Chain Competitiv
    Tema 2-1 - Proiectarea Unui Supply Chain Competitiv
    Document16 pagini
    Tema 2-1 - Proiectarea Unui Supply Chain Competitiv
    Tinna Condrache
    Încă nu există evaluări
  • ATD2
    ATD2
    Document2 pagini
    ATD2
    Tinna Condrache
    Încă nu există evaluări
  • Curs 13-14 Probleme
    Curs 13-14 Probleme
    Document2 pagini
    Curs 13-14 Probleme
    Tinna Condrache
    Încă nu există evaluări
  • Cap 2 - Supply Chain Management
    Cap 2 - Supply Chain Management
    Document28 pagini
    Cap 2 - Supply Chain Management
    Daniel Tarabic
    Încă nu există evaluări
  • Curs 13-14 Probleme
    Curs 13-14 Probleme
    Document2 pagini
    Curs 13-14 Probleme
    Tinna Condrache
    Încă nu există evaluări
  • STD1
    STD1
    Document1 pagină
    STD1
    Tinna Condrache
    Încă nu există evaluări
  • STD3
    STD3
    Document96 pagini
    STD3
    Tinna Condrache
    Încă nu există evaluări
  • Acada
    Acada
    Document6 pagini
    Acada
    Tinna Condrache
    Încă nu există evaluări
  • FFDF
    FFDF
    Document6 pagini
    FFDF
    Tinna Condrache
    Încă nu există evaluări
  • Acada
    Acada
    Document6 pagini
    Acada
    Tinna Condrache
    Încă nu există evaluări
  • HHHH
    HHHH
    Document6 pagini
    HHHH
    Tinna Condrache
    Încă nu există evaluări
  • RTJJ
    RTJJ
    Document3 pagini
    RTJJ
    Tinna Condrache
    Încă nu există evaluări
  • Vvjfidjs
    Vvjfidjs
    Document10 pagini
    Vvjfidjs
    Tinna Condrache
    Încă nu există evaluări
  • Vvjfidjs
    Vvjfidjs
    Document10 pagini
    Vvjfidjs
    Tinna Condrache
    Încă nu există evaluări
  • Rasada
    Rasada
    Document6 pagini
    Rasada
    Tinna Condrache
    Încă nu există evaluări
  • Sjfuf
    Sjfuf
    Document4 pagini
    Sjfuf
    Tinna Condrache
    Încă nu există evaluări
  • Yhtjuy
    Yhtjuy
    Document14 pagini
    Yhtjuy
    Tinna Condrache
    Încă nu există evaluări
  • Uykuiyo
    Uykuiyo
    Document28 pagini
    Uykuiyo
    Tinna Condrache
    Încă nu există evaluări
  • DFGTHH
    DFGTHH
    Document38 pagini
    DFGTHH
    Tinna Condrache
    Încă nu există evaluări
  • Strategia de Contractare
    Strategia de Contractare
    Document49 pagini
    Strategia de Contractare
    tiberiu_bacs
    Încă nu există evaluări
  • Vvjfidjs
    Vvjfidjs
    Document10 pagini
    Vvjfidjs
    Tinna Condrache
    Încă nu există evaluări
  • Sjfuf
    Sjfuf
    Document4 pagini
    Sjfuf
    Tinna Condrache
    Încă nu există evaluări
  • Cursul 3
    Cursul 3
    Document41 pagini
    Cursul 3
    Bijou Bijou
    Încă nu există evaluări
  • Uykiiulio
    Uykiiulio
    Document43 pagini
    Uykiiulio
    Tinna Condrache
    Încă nu există evaluări
  • Tytikkpo
    Tytikkpo
    Document54 pagini
    Tytikkpo
    Tinna Condrache
    Încă nu există evaluări
  • Cursul 7
    Cursul 7
    Document31 pagini
    Cursul 7
    Bijou Bijou
    Încă nu există evaluări
  • Lucrare in Business
    Lucrare in Business
    Document40 pagini
    Lucrare in Business
    Miki Stan
    Încă nu există evaluări
  • Cursul 2 HJK
    Cursul 2 HJK
    Document43 pagini
    Cursul 2 HJK
    Tinna Condrache
    Încă nu există evaluări
  • Proiect BI
    Proiect BI
    Document31 pagini
    Proiect BI
    Tinna Condrache
    Încă nu există evaluări
  • LA 2021 - Concepte de Baza in Formularea Subiectelor de Examen
    LA 2021 - Concepte de Baza in Formularea Subiectelor de Examen
    Document4 pagini
    LA 2021 - Concepte de Baza in Formularea Subiectelor de Examen
    Tinna Condrache
    Încă nu există evaluări