Sei sulla pagina 1di 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++:

Potrebbero piacerti anche

  • Cap 2 - Supply Chain Management
    Cap 2 - Supply Chain Management
    Documento28 pagine
    Cap 2 - Supply Chain Management
    Daniel Tarabic
    Nessuna valutazione finora
  • Curs 13-14 Probleme
    Curs 13-14 Probleme
    Documento2 pagine
    Curs 13-14 Probleme
    Tinna Condrache
    Nessuna valutazione finora
  • STD3
    STD3
    Documento96 pagine
    STD3
    Tinna Condrache
    Nessuna valutazione finora
  • ATD2
    ATD2
    Documento2 pagine
    ATD2
    Tinna Condrache
    Nessuna valutazione finora
  • STD1
    STD1
    Documento1 pagina
    STD1
    Tinna Condrache
    Nessuna valutazione finora
  • Curs 13-14 Probleme
    Curs 13-14 Probleme
    Documento2 pagine
    Curs 13-14 Probleme
    Tinna Condrache
    Nessuna valutazione finora
  • Tema 2-1 - Proiectarea Unui Supply Chain Competitiv
    Tema 2-1 - Proiectarea Unui Supply Chain Competitiv
    Documento16 pagine
    Tema 2-1 - Proiectarea Unui Supply Chain Competitiv
    Tinna Condrache
    Nessuna valutazione finora
  • Acada
    Acada
    Documento6 pagine
    Acada
    Tinna Condrache
    Nessuna valutazione finora
  • HHHH
    HHHH
    Documento6 pagine
    HHHH
    Tinna Condrache
    Nessuna valutazione finora
  • Acada
    Acada
    Documento6 pagine
    Acada
    Tinna Condrache
    Nessuna valutazione finora
  • FFDF
    FFDF
    Documento6 pagine
    FFDF
    Tinna Condrache
    Nessuna valutazione finora
  • RTJJ
    RTJJ
    Documento3 pagine
    RTJJ
    Tinna Condrache
    Nessuna valutazione finora
  • Vvjfidjs
    Vvjfidjs
    Documento10 pagine
    Vvjfidjs
    Tinna Condrache
    Nessuna valutazione finora
  • Rasada
    Rasada
    Documento6 pagine
    Rasada
    Tinna Condrache
    Nessuna valutazione finora
  • Sjfuf
    Sjfuf
    Documento4 pagine
    Sjfuf
    Tinna Condrache
    Nessuna valutazione finora
  • Vvjfidjs
    Vvjfidjs
    Documento10 pagine
    Vvjfidjs
    Tinna Condrache
    Nessuna valutazione finora
  • Yhtjuy
    Yhtjuy
    Documento14 pagine
    Yhtjuy
    Tinna Condrache
    Nessuna valutazione finora
  • Vvjfidjs
    Vvjfidjs
    Documento10 pagine
    Vvjfidjs
    Tinna Condrache
    Nessuna valutazione finora
  • Tytikkpo
    Tytikkpo
    Documento54 pagine
    Tytikkpo
    Tinna Condrache
    Nessuna valutazione finora
  • DFGTHH
    DFGTHH
    Documento38 pagine
    DFGTHH
    Tinna Condrache
    Nessuna valutazione finora
  • Strategia de Contractare
    Strategia de Contractare
    Documento49 pagine
    Strategia de Contractare
    tiberiu_bacs
    Nessuna valutazione finora
  • Sjfuf
    Sjfuf
    Documento4 pagine
    Sjfuf
    Tinna Condrache
    Nessuna valutazione finora
  • Uykuiyo
    Uykuiyo
    Documento28 pagine
    Uykuiyo
    Tinna Condrache
    Nessuna valutazione finora
  • Uykiiulio
    Uykiiulio
    Documento43 pagine
    Uykiiulio
    Tinna Condrache
    Nessuna valutazione finora
  • Proiect BI
    Proiect BI
    Documento31 pagine
    Proiect BI
    Tinna Condrache
    Nessuna valutazione finora
  • Lucrare in Business
    Lucrare in Business
    Documento40 pagine
    Lucrare in Business
    Miki Stan
    Nessuna valutazione finora
  • Cursul 3
    Cursul 3
    Documento41 pagine
    Cursul 3
    Bijou Bijou
    Nessuna valutazione finora
  • Cursul 7
    Cursul 7
    Documento31 pagine
    Cursul 7
    Bijou Bijou
    Nessuna valutazione finora
  • Cursul 2 HJK
    Cursul 2 HJK
    Documento43 pagine
    Cursul 2 HJK
    Tinna Condrache
    Nessuna valutazione finora
  • LA 2021 - Concepte de Baza in Formularea Subiectelor de Examen
    LA 2021 - Concepte de Baza in Formularea Subiectelor de Examen
    Documento4 pagine
    LA 2021 - Concepte de Baza in Formularea Subiectelor de Examen
    Tinna Condrache
    Nessuna valutazione finora