This is an old revision of the document!


Laboratorul 8: Grafuri

1. Obiectivele laboratorului

  • Definirea structurii și elementelor unui graf neorientat
  • Definirea structurii și elementelor unui graf orientat
  • Modalitati de parcurgere a grafurilor

Structura laboratorului se gaseste in acest link.

2. Grafuri neorientate

2.1. Definitie

Un graf neorientat este o pereche ordonată de multimi(X,U),unde:

  • X este o mulțime finită și nevidă de elemente numite noduri sau vârfuri
  • U este o mulțime de perechi neordonate din X,numite muchii

2.2. Structura

Un graf are următoarele elemente:

  • Mulțimea nodurilor X - Mulțimea tuturor nodurilor grafului
  • Multimea muchiilor U - Mulțimea tuturor muchiilor grafului
  • Gradul nodului - numărul de muchii formate cu ajutorul nodului respectiv
  • Nod izolat - Un nod ce nu formează nicio muchie
  • Noduri terminale - Un nod ce formează o singură muchie
  • Noduri adiacente - Noduri intre care există o muchie
  • Nod si muchie incidente - Nodul face parte dintr-o muchie

2.3. Reprezentare

  • Matricea de adiacență - este o matrice a cu n linii și n coloane,în care elementele a[i,j] se definesc astfel:
    • a[i,j] = 1 ,dacă ∃ muchia [i,j] cu i≠j
    • a[i,j] = 0 ,în caz contrar
  • Lista de adiacență - este un tablou de liste egal cu numarul de varfuri;dacă există o muchie intre nodul curent si un alt nod,atunci acesta se trece în listă
  • Vectorul de muchii - mulțime ce conține toate muchiile grafului

Având lista de adiacentă:

  • A:B→C→D
  • B:A→D→E
  • C:A→D
  • D:A→B→C→D→E
  • E:B→D

Un graf parțial este un graf obținut din graful inițial prin eliminarea uneia sau mai multor muchii

Un subgraf este un graf obținut din graful inițial prin eliminarea unui număr de noduri impreună cu muchiile formate cu acele noduri

Se numește lanț într-un graf,o succesiune de vârfuri L={v1,v2,…,vk},cu proprietatea că oricare două vârfuri consecutive sunt adiacente,adică există o muchie între acestea. Se numeşte lanţ elementar un lanţ în care nu se repetă vârfuri.

Se numeşte lanţ simplu un lanţ în care nu se repetă muchii.

Se numeşte ciclu un lanţ simplu pentru care primul şi ultimul vârf coincid.

Se numeşte ciclu elementar un ciclu în care nu se repetă vârfuri(excepţie primul şi ultimul).

3. Grafuri orientate

3.1. Definitie

Un graf orientat este o pereche ordonată de multimi(X,U),unde:

  • X este o mulțime finită și nevidă de elemente numită mulțimea nodurilor(vârfurilor)
  • U este o mulțime de perechi ordonate din X,numită mulțimea arcelor

3.2. Structura

Într-un graf orientat, distingem:

  • gradul interior/intern al unui nod: numărul de arce care intră în nod
  • gradul exterior/extern al unui nod: numărul de arce care ies din nod

3.3. Reprezentare

  • Matricea de adiacență - este o matrice a cu n linii și n coloane,în care elementele a[i,j] se definesc astfel:
    • a[i,j] = 1 ,dacă ∃ arcul (i,j) în mulțimea U
    • a[i,j] = 0 ,în caz contrar

  • Matricea vârfuri-arce - este o matrice B cu n = |X| linii și m = |U| coloane, în care fiecare element b[i,j] este:
    • 1 ,dacă nodul i este o extremitate inițială a arcului
    • -1 ,dacă nodul i este o extremitate finală a arcului
    • 0,dacă nodul i nu este o extremitate a arcului

4.Parcurgerea grafurilor

Parcurgere (traversal) = metoda de vizitare sistematica a fiecarui varf sau arc din graf.

Parcurgerile pot sa tina loc de cautare (Search/Traversal)

Tipuri de parcurgeri:

  • în lățime/pe nivel - Breadth First Search/Traversal (BFS/T)
  • în adâncime - Depth First Search/Traversal (DFS/T)

4.1.Parcurgerea în lățime

Parcurgerea in latime (Breadth First Traversal) a unui graf e similara cu parcurgerea pe niveluri a unui arbore cu diferenta ca intr-un graf putem sa avem cicluri. Parcurgerea în lățime (Breadth-First-Search -BFS) este o metodă ce presupune vizitarea nodurilor în următoarea ordine:

  • Nodul sursa
  • nodul sursă (considerat a fi pe nivelul 0)
  • vecinii nodului sursă (reprezentând nivelul 1)
  • vecinii încă nevizitați ai nodurilor de pe nivelul 1 (reprezentând nivelul 2)
  • ș.a.m.d

4.1.1 Implementare

Pe masură ce algoritmul avansează,se colorează nodurile în felul următor:

  • alb - nodul este nedescoperit încă
  • gri - nodul a fost descoperit și este în curs de procesare
  • negru - procesarea nodului s-a încheiat Se păstrează informațiile despre distanța până la nodul sursă. Se obține arborele BFS

Pentru implementarea BFS se utilizează o coadă (Q) în care inițial se află doar nodul sursă.Se vizitează pe rând vecinii acestui nod și se pun și ei în coadă.În momentul în care nu mai există vecini nevizitați,nodul sursă este scos din coadă.

Pentru fiecare nod u din graf
{
     culoare[u]=alb
     d[u] = infinit    //in d se retine distanta pana la nodul sursa
     p[u] = null       //
}
 
culoare[sursă]=gri
d[sursă]=0
enqueue(Q,sursă)     //punem nodul sursă în coada Q
 
Cât timp coada Q nu este vidă
{
     v=dequeue(Q)   //extragem nodul v din coadă
     pentru fiecare u dintre vecinii lui v
          dacă culoare[u] == alb
          {
               culoare[u] = gri
               p[u] = v
               d[u] = d[v] + 1
               enqueue(Q,u)   //adăugăm nodul u în coadă
          }
     culoare[v] = negru   //am terminat explorarea vecinilor lui v
}

sda-ab/laboratoare/09.1615056734.txt.gz · Last modified: 2021/03/06 20:52 by smaranda.bogoi
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0