a IX-a A0 lecții INFORMATICĂ | 2 lecții T.I.C.
T.I.C.
Lectia 01   |   Lectia 02
a IX-a B0 lecții INFORMATICĂ | 0 lecții T.I.C.
a IX-a C0 lecții INFORMATICĂ | 0 lecții T.I.C.
a IX-a D0 lecții INFORMATICĂ | 0 lecții T.I.C.
a IX-a E0 lecții INFORMATICĂ | 0 lecții T.I.C.
a X-a A0 lecții INFORMATICĂ | 0 lecții T.I.C.
a X-a B0 lecții INFORMATICĂ | 0 lecții T.I.C.
a X-a C0 lecții INFORMATICĂ | 0 lecții T.I.C.
a X-a D0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XI-a A30 lecții INFORMATICĂ | 0 lecții T.I.C.
Informatică
Lectia 07   |   Lectia 08   |   Lectia 09   |   Lectia 10   |   Lectia 11   |   Lectia 12   |   Lectia 13   |   Lectia 14
Lectia 16   |   Lectia 18   |   Lectia 19   |   Lectia 20   |   Lectia 21
Lectia 23   |   Lectia 24
Lectia 36
Lectia 40   |   Lectia 41   |   Lectia 42   |   Lectia 43   |   Lectia 44   |   Lectia 45   |   Lectia 46   |   Lectia 46_1
Lectia 47   |   Lectia 48
Lectia 48 --- [ Teorie + 0 Probleme rezolvate ]

ARBORE PARTIAL DE COST MINIM

Se da un graf G=(X, U). Fiecare muchie a sa are atasat un numar real pozitiv reprezentand costul muchiei. Sa se determine un arbore partial de cost minim.

Def: Suma costurilor unui graf se numeste costul grafului

Daca c : U ® Rfunctia costul grafului    atunci suma costurilor muchiilor care compun arborele determina costul arborelui.

Graful se va citi c o succesiune de muchii (doua varfuri) impreuna cu costul fiecarei muchii. Numarul de muchii este m.

Se va ordona sirul muchiilor in ordine crescatoare dupa costul muchiilor.

Se considera un graf format numai din cele n noduri fara nici o muchie

Se vor adauga muchii la acest graf daca muchia respectiva nu va crea un ciclu pana cand graful devine conex (numarul de componente conexe este 1).

Se vor lua muchiile in ordinea crescatoare a costurilor si se va stabili apartenenta celor doua varfuri la o componenta conexa. Astfel avem 3 cazuri:

  1. Daca varfurile nu apartin de nici o componenta conexa atunci se va crea una noua care sa contina cele doua varfuri, costul componentei va fi costul muchiei.
  2. Daca unul din varfuri apartine de o componenta conexa atunci se va introduce si celalalt iar costul componentei va creste cu costul muchiei, sau ambele varfuri apartin de o componenta conexa, atunci nu se va face nimic.
  3. Daca unul din varfuri apartine la o componenta conexa si celalalt la o alta componenta conexa atunci cele doua componente conexe se vor uni si va contine toate varfurile de la cele doua si numarul de componente conexe va scade cu 1 iar costul noi componente este suma costurilor celor doua la care se aduna costul muchiei.

Se vor introduce muchii pana in prima componenta conexa avem n noduri.

Algoritmul de determinare a unui arbore partial de cost minim.

Muchiile au fost ordonate dupa cost [much[I].x, much[I].y, much[I].cost]

Pentru I = 1 la m si NrElemente(CompCon[1] != n)   executa

k=0;

Pentru j = 1 la nc executa

Daca ((much[I].x apartine CompCon[j]) sau (much[I].y apartine CompCon[j]))          atunci        

                k = k+1;           u[k] = j;

 SfDaca

 SfPentru

  Daca (k =0) atunci    nc = nc + 1;   CostArb[nc] = much[I].cost;   

                    &nb sp;                CompCon[nc] = {much[I].x, much[I].y} Ales[I] = 1; // s-a ales muchia i

      Altfel   

             Daca (k=1) atunci (Daca nu apartin amandoua de aceeasi comp coexa)

                    &nb sp;    CompCon[u[1]] = CompCon[u[1]] U {x[I], y[I]}

                 CostArb[u[1]] = CostArb[u[1]] + much[I].cost;    Ales[I] = 1;

                    &nb sp; Altfel

                 CompCon[u[1]] = CompCon[u[1]] U CompCon[u[2]];

                        &n bsp;  CostArb[u[1]] = CostArb[u[1]] + CostArb[u[2]] + much[I].cost;  

                    &nb sp;       Ales[I] = 1;      nc = nc –1;

                     SfDaca

    SfDaca

SfPentru

                        m – numarul de muchii

much – vectorul muchiilor are trei componente { x, y, cost}

x – prima extremitate a muchiei

y -  a doua extremitate a muchiei

cost – costul muchiei

nc – numarul de componente conexe

NrElemente – intoarece numarul de element al unui vector

CompCon[j] – vector ce memoreaza varfurice ce fac parte din componenta conexa j.

u[k] – memoreaza numarul componentei conexe din care fac parte cele doua varfuri

k – ne spune in ce situatie ne aflam (1, 2, sau 3)

CostArb – vector ce reprezinta costul componentelor

Ales[I] – vector ce arata ca muchia I a fost aleasa sa faca parte din arbore


Fii primul care comentează lecţia
     Submit
  |   Lectia 49   |   Lectia 50   |   Lectia 50_1
Lectia 50_2
a XI-a B0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XI-a C0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XI-a D0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XI-a E0 lecții INFORMATICĂ | 1 lecții T.I.C.
T.I.C.
Fişa 01
a XII-a A2 lecții INFORMATICĂ | 6 lecții T.I.C.
Informatică
Lectia 01   |   Lectia 02
T.I.C.

Fişa 01   |   Fişa 02   |   Fişa 03   |   Fişa 04   |   Fişa 05   |   Fişa 06
a XII-a B0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XII-a C0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XII-a D0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XII-a E0 lecții INFORMATICĂ | 0 lecții T.I.C.
Excelenta A0 lecții INFORMATICĂ | 0 lecții T.I.C.