Sunteți pe pagina 1din 2

1 SUBIECTUL 2 Verificarea conexitati unui graf

2 Enuntul problemei
Se da un graf cu n varfuri prin matricea sa de adiacenta. Sa se verifice daca graful
de mai sus este conex sau nu.

3 Suportul teoretic al solutiei


Definitie. Se numeste componenta conexa a grafului neorientat G=(X,U) un subgraf
G1=(X1,U1) a lui G, care sa fie conex cu proprietatea ca nu exista nici un lant care sa
lege un varf din X1 cu un varf din X\X1.
Exemplu:

1 5

2 3 6

7
4

8
G=(X,U) X={1,2,3,4,5,6,7,8}
U={[1,2],[1,4],[1,3],[2,3],[5,6],[6,7],[6,8],[7,8]}

G1=(X1,U1) X1={1,2,3,4}
U1={[1,2],[1,4],[1,3],[2,3]}

G2=(X2,U2) X2={5,6,7,8}
U2={[5,6],[6,7],[6,8],[7,8]}

Observatie. Daca un graf are mai mult de o componenta conexa atunci este neconex.
Un graf conex are o singura componenta conexa.

Graful este conex daca prin explorarea in largime se viziteaza toate varfurile.
Vom imparti rezolvarea problemei in mai multe subprograme
 Procedura initializari
-citeste matricea de adiacenta din fisierul text ,,GRAF.DAT” aflat sub forma
n
a11,……….,a1n
……………..
an1,………..,ann
 Functia nevizitat
-verifica daca in urma explorari grafului cu functia BF mai raman varfuri
din G neexplorate.
Variabila ,,Neexplorat” se initializeaza cu –1 daca exista un varf neexplorat, atunci va
lua valoarea primului astfel de varf. Se exploreaza vectorul vizitate incepand cu prima
pozitie j:=1
cat timp j<=n si neexplorat=-1 executa
daca varful j este nevizitat (vizitate[j]=0) atunci
Neexplorat:=j
j:=j+1
daca vizitate[j]=0 atunci Neexplorat:=j si ciclul while se incheie.
Functia returneaza j, care este primul varf neexplorat
Pentru j=1 la n executa
Daca vizitate[j]=1 atunci au fost toate varfurile explorate si functia returneaza –1
 Functia BF –returneaza TRUE daca graful este conex si FALSE altfel
Cum se codifica acest lucru?
Daca functia nevizitat returneaza –1 graful este conex si functia BF returneaza TRUE
 Programul principal
1 afiseaza initializarile
2 matricea de adiacenta
3 apeleaza functia BF

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