Sunteți pe pagina 1din 21

?? ?

?
Definiii, reprezentri, parcurgeri

Grafuri

Grafuri

graf / graf neorientat (finit)

vrfuri, nevid
muchii (perechi neordonate de vrfuri din V, distincte)

Exemplu

, , grafuri

Identificator vrf
(v)

i este graf parial al lui


i este subgraf al lui

Muchie (e)
4, 5 extremiti, vrfuri adiacente

Grafuri

digraf

graf ponderat

vrfuri, nevid
arce (perechi ordonate de vrfuri, distincte)

graf
pondere (cost / ctig)

, ,, u-v drum

Muchii
orientate

Graf direcionat
nu neaprat
distincte

Grafuri

Exemple de grafuri
Reeaua de drumuri naionale
Reeaua de strzi dintr-un ora
O reea social
Un labirint
Un circuit electronic

Problema de rezolvat
Alegerea reprezentrii corecte i aplicarea

algoritmului corect, nu inventarea unui algoritm


nou

Grafuri
Reprezentri
Matematic
Grafic
Matriceal

Numrul de vrfuri,
dac snt numerotate (1-n)

Matrice de adiacen
Matricea ponderilor ,

Tabelar
Matricea muchiilor (2 coloane) i lista vrfurilor izolate

Liste de adiacen
Lista vrfurilor (compact, nlnuit)
Liste de vecini pentru fiecare vrf (nlnuit)

Grafuri
graf neorientat

3
1

2
4 N

4
4

4 N

2
N

7
6

4 N

4 N

5
1

6
6

2
3

7 N N
5

Grafuri
digraf

3
4

2
4 N

4
4

6 N
6

7 N N

Grafuri
graf direcionat

3
4

2
4 N

4
4

6 N
6

N
7

Grafuri
graf ponderat

costuri

Tem
Reprezentai un graf
direcionat ponderat,
folosind toate formele de
reprezentare anterioare.

2
2 3
4 4 N

3
1 3
4 1 N

4
4 2 N

5
1 4

6
6 3 N

2 1
3 2 N

7 N N
5 3 N

Grafuri
Alegerea

celei mai bune reprezentri

Citirea de pe un suport extern (fiier

text)
Memoria necesar
Grafuri mici , rare
Grafuri mari, dense

Numrul de operaii necesare


Gsirea unui vecin, traversare
Verificarea existenei unei muchii
Adugarea/eliminarea unei muchii

Grafuri
Parcurgere

(traversare)

Vizitarea vrfurilor, o singur dat, pornind de la


un vrf dat
Se pot vizita vrfurile conectate cu vrful iniial
(exist drum )
Ordinea de vizitare NU constituie un drum!

Parcurgere n lime (Breadth First)


Parcurgere n adncime(Depth First)
Parcurgere generalizat n adncime / lime

Grafuri
Parcurgerea

n lime

Vector de prini: = printele lui

Grafuri
Algoritm
se iniializeaz D, P cu , ,
i=0, gata=0
ct timp gata==0
gata=1
pentru fiecare vrf cu
reine (viziteaz, prelucreaz )
pentru fiecare vecin (nevizitat) al lui

(opional, prelucreaz muchia - )


gata=0
dac gata==0
i=i+1

Grafuri
Parcurgerea n lime

Variant

,
A matricea
la introducerea
adiacen

unuidevrf
n coad
C coad

M vector martor, iniializat cu zero


La final, vectorul martor va conine distanele pn la fiecare vrf i avem
vectorul de prini.

Algoritm

se adaug n coad i marcheaz


ct timp coada nu e vid

se extrage un vrf din coad


se viziteaz (proceseaz)
pentru fiecare vecin nevizitat al lui
se adaug n coad i se marcheaz (
opional, se proceseaz muchia -

Grafuri

Parcurgerea

n lime,

Grafuri
Tem
Descriei un algoritm pentru determinarea celei mai scurte ci de

la un vrf dat la fiecare dintre celelalte vrfuri ale unui graf,


folosind vectorul de prini.
Implementai algoritmul descris.

Grafuri
Parcurgerea

n adncime

A matricea de adiacen
S stiv
M vector martor, iniializat cu zero
Cnd se viziteaz (prelucreaz) un vrf?

Algoritm DF pentru subprogram recursiv


Se viziteaz i marcheaz
Pentru fiecare vecin nevizitat al lui
Se apeleaz recursiv parcurgerea, cu ca vrf iniial

Grafuri

Parcurgerea

n adncime,

Vector de prini: = printele lui

Grafuri
Parcurgerea

generalizat

BF / DF parcurg doar o component conex


Folosind vectorul martor ca parametru pentru
funcia de parcurgere:
repet
alege un vrf nevizitat
parcurge pornind de la (BF sau DF)

pn cnd nu mai exist vrfuri nevizitate

Grafuri
Teme
Scriei funcii pentru urmtoarele

operaii
Preluarea unui graf dintr-un fiier text (forma
tabelar)
pe prima linie n i m, pe fiecare din liniile urmtoare
cte o muchie

Obinerea reprezentrii matriceale din cea


tabelar
Obinerea reprezentrii cu liste de adiacen *
Parcurgerea n lime
Parcurgerea n adncime

Spor la nvat!

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