Sunteți pe pagina 1din 5

Plangu Ioan Carol

Grupa 134

ARBORI PARTIALI IN GRAFURI CU MUCHIILE PONDERATE

1
Plangu Ioan Carol
Grupa 134

Notatii

w(x,y) - ponderea drumului (x,y)

w(G) - suma ponderilor tuturor muchiilor unui graf

w(P) - suma ponderilor muchiilor dintr-o parcurgere

G = (V,E,w) - graf ponderat cu V multimea varfurilor, E


multimea muchiilor, functia w:E→R+ indicatoare a ponderii
muchiilor

d(x,y) - drumul cu w(muchii parcurse) in graful aflat in


discutie sau distanta dintre x si y

2
Plangu Ioan Carol
Grupa 134

Definitie:

Graful cu muchii ponderate este un graf conex caruia ii este alaturata o functe w:E→R+
care atribuie un numar real pozitiv tuturor muchiilor.

Observatie:

Daca am defini un graf neconex (V1,E1,w1) cu functia w pentru pondere si n


componente conexe, intodeauna ar exista un graf conex (V1,E1+{n-1 muchii care leaga
componentele conexe},

w2(x) = w1(x) - daca x in E1

∞ - daca x nu este in E1

Notiuni:

Lant optim intre x si y - lantul L cu w(L) minim si x,y capete

Acesta nu poate contine un ciclu deoarece ar implica existent unui lant mai scurt fara
acesta

Lanturile incluse in acesta sunt si ele optime deoarece existent unui lant mai scurt intre
doua elemente continute ar implica existent uni lant mai scurt prin lantul acesta

Distanta dintre doua varfuri - suma ponderilor muchiilor lantului optim dintre doua puncte.

Proprietati:

d(x, x) = 0 prin conventie

d(x, y) = d(y, x) evident

d(x, y) ≤ d(x, z) + d(z, y) inegalitatea triunghiului

Demonstratie :

Presupunem d(x, y) > d(x, z) + d(z, y), Lz1 = lantul corespunzator d(x, z) , Lz2 =
lantul corespunzator d(z,y) , Lz = lantul corespunzator d(x, y)

=> w(Lz1+Lz2) < w(Lz) => Lz nu este lant optim

Intr-un graf simplu conex cu w(x) = 1

Excentricitatea unui varf – distanta maxima catre orice alt varf

3
Plangu Ioan Carol
Grupa 134

Raza unui graf – excentricitatea minima a unui varf din graf

Diametrul unui graf-excentricitatea maxima a unui varf dintr-un graf

Centrul unui graf-varful cu excentricitatea minima

Observatie:

Rad(G) ≤ Diam(G) ≤ 2*Rad(G)

Prima inegalitate rezulta din definitie

A doua egalitate rezulta din inegalitatea triunghiului

Daca x,y = capetele diametrului si c = centru atunci w(x, y) ≤ w(x,c) + w(c,y)

Arborele economic - este arborele partial T al lui G(V,E,w) cu proprietatea ca orice x, y


din V au aceeasi distanta si T si in G

Acesta poate fi generat prin Algoritmul lui Prim

Este repetat urmatorul pas pana cand arborele este format (are n-1 muchii)

Daca T este arborele economic neformat, este adugat varful cu distanta minima fata de toate
varfurile introduce in arbore la momentul respective.

Un posibil pseudocod:

for each vertex in graph


set min_distance of vertex to ∞
set parent of vertex to null
set minimum_adjacency_list of vertex to empty list
set is_in_Q of vertex to true
set min_distance of initial vertex to zero
add to minimum-heap Q all vertices in graph, keyed by min_distance
//WIKIPEDIA

4
Plangu Ioan Carol
Grupa 134

Arbore al distantelor unui varf- este arborele partial T al lui G(V,E,w) cu proprietatea
ca orice x din V are aceeasi distanta fata de varful desemnat in T si in G

Acesta poate fi generat prin Algoritmul lui Dijkstra

Arborele este format prin desemnarea unui scor pentru drumul minim

Este repetat urmatorul pas pana cand arborele este format (are n-1 muchii)

Pentru toate varfurile conectate verifica daca scorul varfului selectat + w(varf selectat, varful
legat) < scorul varfului legat. Daca da, scorul varfului legat devine scorul varfului selectat +
w(varf selectat, varful legat).

Ordinea de parcurgere este ca in cazul parcurgerii in latime.

Un posibil pseudocod:

function Dijkstra(Graph, source):


2 for each vertex v in Graph: // Initializations
3 dist[v] := infinity // Unknown distance function from source to v
4 previous[v] := undefined // Previous node in optimal path from source
5 dist[source] := 0 // Distance from source to source
6 Q := the set of all nodes in Graph
// All nodes in the graph are unoptimized - thus are in Q
7 while Q is not empty: // The main loop
8 u := vertex in Q with smallest dist[]
9 if dist[u] = infinity:
10 break // all remaining vertices are inaccessible from source
11 remove u from Q
12 for each neighbor v of u: // where v has not yet been removed from Q.
13 alt := dist[u] + dist_between(u, v)
14 if alt < dist[v]: // Relax (u,v,a)
15 dist[v] := alt
16 previous[v] := u
17 return dist[]
//WIKIPEDIA

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