Gradivo za takmičenje u Gimnaziji "Veljko Petrović"

Računarstvo i Informatika

Grafovi

Predstavljanje grafa - Matrica susedstva - funkcije

Većsmo rekli da se veze u grafu predstavljaju na taj način da se u matrici susedstva članu Mij dodeli 1 (ili neki drugi broj ako je u pitanju težinski graf), inače je on 0.

Sada možemo deklarisatri sledeće funkcije:

  • Function StepenCvora(Var G : TGraf; v : TCvor): Integer;
  • Function SledeciSused(Var G : TGraf; v, x : TCvor): Integer;

Stepen čvora

Kao što je već rečeno, stepen čvora je broj veza sa drugim čvorovima u grafu. To znači da trebamo prebrojati koliko elemenata različitih od nule ima u redu matrice koji odgovara čvoru grafa za kog tražimo stepen.

Function StepenCvora(Var G : TGraf; v : TCvor): Integer;
var Pom, i : Integer;
Begin
  Pom := 0;
  For i := 1 to G.N do
    if G.M[v, i] > 0
      then Pom := Pom + 1;
  StepenCvora := Pom;
End;

Sledeći sused

Često ćete u litaraturi pronaći dve odvojene funlcije koje se koriste: jedna za prvog suseda, a druga za sledećeg suseda. Možda ovo što ćemo ovde navesti nije uvek opravdano, no mi zaključismo da je jedna funkcija dovoljna a to je Sledeći sused. Kada nam bude trebao prvi sused nekog čvora, stavićemo treći parametar funkcije na nulu.
Pod susedom čvora v podrazumeva se čvor w, ako su čvorovi v i w u vezi. Pod sledećim susedom čvora v nakon čvora x podrazumeva se sledeči čvor koji je u vezi sa v. U matrici susedstva, to predstavlja prvi sledeći elemenat u redu v, koji je različit od nule, a nakon kolone x. Ako takvih elemenata nema, tada čvor v nema više suseda.
Ako nam je potreban prvi sused čvora v, tada parametar x u pozivu funcije postavljamo na 0.

Function SledeciSused(Var G : TGraf; v, x : TCvor): Integer;
var i : Integer;
Begin
  SledeciSused := 0;
  For i := x+1 to G.N do
    if G.M[v, i] > 0
      then Begin
             SledeciSused := i;
             exit;
           End;
End;

Uklanjanje veze između dva čvora

Pošto je veza izmedju dva čvora u grafu predstavljena brojem upisanim u preseku kolona i redova koji predstavljaju čvorove, tao je uklanjanje veze u stvari postavljanje tih članova matrice susedstva na nulu.

Function UkloniGranu(Var G : TGraf; v, u : TCvor): Integer;
Begin
  G.M[u, v] := 0;
  G.M[v, u] := 0;
End;

Povezivanje dva čvora

Pošto je veza izmedju dva čvora u grafu predstavljena brojem upisanim u preseku kolona i redova koji predstavljaju čvorove, tao je njihovo povezivanje u stvari postavljanje tih članova matrice susedstva na odgovarajući broj.

Function Dodaj(Var G : TGraf; v, u : TCvor; x : Integer;): Integer;
Begin
  G.M[u, v] := x;
  G.M[v, u] := x;
End;
Valid XHTML 1.0 Strict! | Site map | Kontakt | © 2007..2015 prof. Duško Obradović sa učenicima Gimnazije