Salve a tutti
sono nuovo...vi scrive perchè mi servirebbe una mano!!!
dovrei presentare un progetto per un esame
questo è il testo:
Dato un grafo G=(V,L) non orientato, chiamiamo triangolo un insieme di tre nodi distinti
di G che formano una clique({a,b,c} tale che a!=b b!=c a!=c e i lati ab bc e ac appartengono ad L
a) sia G = (V,L) un grafo non orientato e completo ovvero ab E L , per ogni coppia di nodi distinti. se n è il numero di nodi di G
qual'è il numero dei suoi triangoli?
b) progettare un algoritmo che ricevendo in input un grafo non orientato G calcoli il numero
dei suoi triangoli. Si assuma G rappresentato mediante matrice di adiacenza
per chi non è al corrente una matrice di adiacenza è una matrice simmetrica dove la diagonale è posta a 0.
mi manca la parte b e non so come cavarne piede. c'è qualcuno per caso che mi può dare una mano?
quel che ho fatto io è questo ma non creo una matrice tramite l'inserimento di un grafo. bensi calcolo il numero dei triangoli sapendo il numero dei vertici del grafo
programma con c++
codice:main() { int n_triang=0,i=1,c=0, j, V,Grafo[MAX][MAX],sum=0; int n; printf("\nInserire il numero dei vertici del grafo :\n"); scanf("%d",&V); if (V==0 || V==1 || V==2) printf("il grafo non ha triangoli"); else { creagrafo(Grafo,V); stampagrafo (Grafo,V); for (j=3; j<=V; j++) { n_triang= n_triang+i; n+=n_triang; i++; } printf("\n il numero dei triangoli in un grafo di %d vertici e' %d ", V, n); } infotriang (Grafo,V); fflush(stdin); getchar(); } void creagrafo(int mat[MAX][MAX], int nodo) { int i,j; for (i=0;i<nodo;i++) for (j=0;j<nodo;j++) mat[i][j] = 1; for(i=0;i<nodo;i++) mat[i][i] = 0; } void stampagrafo (int mat[MAX][MAX],int nodo) { int i,j,k; char a='A'; char b='A'; printf(" "); for (k=0;k<nodo;k++) printf(" %c", b++); for(i=0;i<nodo;i++){ printf("\n %c ",a++); for(j=0;j<nodo;j++) printf("%d ",mat[i][j]); } }

Rispondi quotando
