1 / 12

GRAFURI NEORIENTATE

GRAFURI NEORIENTATE. METODE DE REPREZENTARE

Download Presentation

GRAFURI NEORIENTATE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GRAFURI NEORIENTATE

  2. METODE DE REPREZENTARE • Considerăm un graf neorientat G=(X,U) cu m muchii şi n vârfuri numerotate 1,2,3,.....,n. Cele mai cunoscute forme de reprezentare ale unui astfel de graf sunt: matricea de adiacenţă, listele vecinilor, vectorul muchiilor, matricea de incidenţă şi matricea costurilor.

  3. Matricea de adiacenţă • Este o matrice a pătratică cu n linii şi n coloane, în care elementele a[i][j] se definesc astfel: • a[i][j]= 1,dacă există muchia [i,j] cu • ij • 0, în caz contrar

  4. Exemplu:

  5. Pentru graful G=(X,U) din figura de mai sus, matricea de adiacenţă este: • 0 1 0 0 • 1 0 1 1 • 0 1 0 1 • 0 1 1 0

  6. Elementul a[2][3] (de pe linia 2 şi coloana 3) va fi 1, întrucât există în graf muchia (2,3). Dar acestă muchie este identică cu muchia (3,2), deci şi a[3][2] este 1. • Pe caz general, a[i][j]=a[j][i] oricare ar fi i,j {1,2,……..,n} , cu ij, adică, pentru orice graf neorientat, matricea de adiacenţă a este simetrică faţă de diagonala principală.

  7. Algoritmi specifici metodelor de reprezentare • 1. Construirea matricei de adiacenţă prin citirea muchiilor de la tastatură • Mai întâi citim de la tastatură numărul de muchii m şi numărul de vârfuri n. Matricea de adiacenţă fiind variabilă globală, are elementele iniţializate cu 0 de către compilator. Citim apoi cele m perechi de numere întregi (x,y). La citirea fiecărei perechi, validăm valorile introduse pentru x şi y. Acestea vor reprezenta vârfurile-extremităţi ale unei muchii, deci trebuie să fie cuprinse între 1 şi n. Matricea de adiacenţă fiind simetrică, două elemente ale acesteia (a[x][y] şi a[y][x]) vor primi valoarea 1.

  8. void creare_graf1() • { • int i,j,k,x,y; • cout<<“numarul de varfuri: “; cin>>n; • cout<<“numarul de muchii: “;cin>>m; • for(k=1;k<=m;k++) • { • cout<<“muchia : “<<k; • do{ • cin>>x>>y; • }while(x<1 || x>n || y<1 || y>n || x==y); • a[x][y]=1; a[y][x]=1; • } • }

  9. 2. Afişarea muchiilor unui graf pornind de la matricea de adiacenţă • Matricea de adiacenţă este simetrică faţă de diagonala principală, aşadar este suficient să parcurgem porţiunea de deasupra diagonalei principale, pentru că aici găsim toate valorile de 1 care identifică muchiile distincte. La vizitarea fiecărui element a[i][j] aflat deasupra diagonalei principale, vom verifica dacă acesta este 1. În caz afirmativ, înseamnă că există muchia (i,j), deci vom afişa extrimităţile acesteia (i şi j).

  10. void afisare_graf1() • { • int i,j; • cout<<“muchiile grafului sunt:”; • for(i=1;i<=n-1;i++) • for(j=i+1;j<=n;j++) • if(a[i][j]) cout<<i<<” “<<j); • }

  11. 3. Citirea matricei de adiacenţă de la tastatură • Pentru a citi matricea de adiacenţă element cu element de la tastatură, trebuie să introducem mai întâi numărul de vârfuri n. Apoi, ţinând cont că matricea de adiacenţă este simetrică faţă de diagonala principală, vom citi numai valorile de deasupra diagonalei principale, completându-le prin simetrie pe ce de sub diagonala principală. Citirea unui element a[i][j] trebuie validată deoarece nu sunt permise decât valori binare.

  12. void citire_matrice() • { • int i,j; • cout<<“numarul de varfuri: “; • cin>>n; • for(i=1;i<=n-1;i++) • for(j=i+1;j<=n;j++) • { cout<<“exista muchia “<<i<<” “<<j;//[1/0] • do{ • cin>>a[i][j]); • }while(a[i][j]<0 || a[i][j]>1); • a[j][i]=a[i][j]; • } • }

More Related