Se dau n orase precum si costul conectarii anumitor perechi de orase. Se cere sa se aleaga o parte din muchii astfel incat se asigure existenta unui lant intre oricare doua orase si costul total sa fe minim.
G=(V, E) un graf neorientat, unde V are n elemente (n noduri) si E are m elemente (m muchii). Se cunosc costurile muchiilor. Prin eliminarea unor muchii se obtine un graf partial. aca acesta este arbore se !a numi arbore partial.
"ostul unui arbore este egal cu suma costurilor muchiilor sale. #rborele partial de cost minim este un arbore pentru care suma este minima.
Problema. Fie un graf conex pentru care se cunosc costurile muchiilor. Sa se determine arborele de cost minim asociat (costul arborelui si !ectorul de tati).
$ %
&
4 2 1 7
4
Vom utiliza 2 vectori : Vectorul s, pentru care s[i]=0 daca nodul i a fost adaugat la arbore sau s[i]= daca i nu a fost adaugat la arbore si e!ista muc"ie intre i si de#a adaugat si are valoare minima Vectorul t, vector de tati
$lgoritmul consta in urmatoarele: %e citeste nodul de pornire , v %e incarca in s valoarea v %[v]=0 &arborele contine nodul v' %pre e!emplu daca v=1 se obtine: %=(0 1 1 1 1) *=(0 0 0 0 0)
+e n ,1 ori : o se determina cel mai apropiat nod &neadaugat inca la arbore' de arborele partial construit si muc"ia de cost minim min o %e marc"eaza pentru nod: t[nod]=s[nod] o %e adauga min la cost : cost=cost-min o %e marc"eaza nod ca fiind adaugat la arbore: s[nod]=0 o %e actualizeaza datele : +aca distanta de la i la arbore &a[i][s[i]]' este mai mare decat distanta de la i la nodul nod tocmai adaugat la arbore &a[i][nod]' se modifica potentialul ascendent pentru i: s[i]=nod Pas1 .od=2 /uc"ia de cost minim este 1,2 min=2, cost=2 %e obtine : %=(0 0 2 2 1) *=(0 1 0 0 0)
$ %
&
4 2 1 7
4
Pas2 .od=4 /uc"ia de cost minim este &2,4' min=1, cost=0 %=(0 0 4 0 1) *=(0 1 0 2 0)
$ %
&
4 2 1 7
4
Pas 3 .od=1 /uc"ia de cost minim &1,1' min=0 cost=2 %=(0,0,4,0,0) *=(0 1 0 2 1)
$ %
&
4 2 1 7
4
Pas 4 .od=0 /uc"ia de cost minim &4,0', min=4, cost=10 %=(0 0 0 0 0) *=(0 1 4 2 1)
' %
&
4 2 1 7
4
3 solutie de implementare: 4include5fstream6"7 4include5values6"7 4include5conio6"7
int n,m,v,s[20],t[20]8 long int a[20][20],min8 const long int infinit=/$9:3.;8