Documente Academic
Documente Profesional
Documente Cultură
2. Având la dispozitie o hartă cu n tării, n N*. Să se precizeze dacă i se poate asocia un graf
neorientat; în caz afirmativ, să se definească graful corespunzător.
Da, un exemplu l-ar putea reprezenta liniile de tren directe între aceste țării.
1. Fiind dat graful de mai jos, să se determine pentru fiecare vârf în parte gradul său; să se
precizeze vârfurile terminale si vârfurile izolate.
2. Să se demonstreze că orice graf G, cu n ≥2 noduri, contine cel putin două vârfuri care au
acelasi grad.
Presupunem ca afirmatia nu este adevarata. Atunci sirul gradelor nodurilor se poate reprezenta
astfel 0,1,2,3,4,..., n-1. Deoarece un nod este izolat, cel mai mare grad al unui nod nu poate fi decât n-2
(nodul nu se poate lega de el însuşi şi de nodul izolat). Rezultă că şirul de numere definit mai sus nu poate
reprezenta şirul gradelor în graf.
Exemplul 1
Fie graful reprezentat in figura de mai jos:
Exemplul 2
Fie graful reprezentat in figura de mai jos:
Comentarii:
1. Matricea
de
adiacentă
este o
matrice
pătratică,
de ordin n, si simetrică fată de diagonala principală (adică a[i][j]=a[j][i]).
2. Matricea de adiacentă are toate elementele de pe diagonala principală egale cu 0.
3. Numărul elementelor egale cu 1 de pe linia i (sau coloana j) este egal cu gradul vârfului i.
4. Dacă vârful i este un vârf izolat pe linia i (si coloana j) nu sunt elemente egale cu 1.
Metoda 2:
..............................
cin>>n; cin>>m;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
a[i][j]=0;
for (i=1;i<=m;i++)
{
cout<<"dati extremitatile muchiei "<< i;
cin>>x >>y;
a[x][y]=1;
a[y][x]= 1;
}
Exercitii
Indicatie:
Construiti subprogramul grad care returneaza gradul unui varf. Folositi aceasta functie
pentru rezolvarea problemelor!
Verificat in codeblocks
#include <iostream>
int main()
{
int i,j,nr=0;
cout<<"n="; cin>>n;
for (i=1;i<=n-1;i++)
for (j=i+1; j<=n; j++)
{cout<<"a["<<i<<"]["<<j<<"]=";cin>>a[i][j];
a[j][i]=a[i][j];
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{if(grad(a[i][j])==1)
nr++;}
if(nr>0)
cout<<"Graful are varfuri terminale";
else
cout<<"Graful nu are varfuri terminale";
}