Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [c] grafi: visita bfs

  1. #1

    [c] grafi: visita bfs

    Ciao a tutti,

    qualcuno saprebbe suggerirmi qualcosa oppure indicarmi dove trovare materiale, sull'implementazione in C dell'algoritmo di visita bfs (visita in ampiezza) di un grafo memorizzato tramite matrice di adiacenza?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di lupix
    Registrato dal
    Nov 2004
    Messaggi
    59
    Ma ti serve il codice?

  3. #3
    codice:
    void Ampiezza(int v)
    {
    	/*Questa visita usa come struttura d'appoggio una coda anzichè uno stack.Si comincia
         visitando il vertice di partenza v e tutti i vertici ad esso adiacenti.Si prosegue
         visitando tutti i vertici non visitati adiacenti al primo vertice della lista
         di adiacenza di v,poi quelli adiacenti al secondo...Per far ciò ogni volta che si visita
         un vertice lo si pone in una coda e dopo aver completato la sua lista di adiacenza si
         estrae un nuovo vertice dalla coda,visitando anche per esso tutti i vertici adiacenti
         e così via fino a che la coda non si svuota.*/
    	pEle davanti,dietro;
       pNode w;
       davanti=dietro=NULL;//inizializza la coda
       printf("%d ",v);//stampa il vertice di partenza
       Visitato[v]=TRUE; //segna come visitato il vertice di partenza
       AddCoda(&davanti,&dietro,v); //aggiunge alla coda il vertice di partenza
       while(davanti)//finchè la coda non è vuota
       {
       	v=DelCoda(&davanti,&dietro); //estrae un vertice dalla coda
          for(w=Grafo[v];w;w=w->next) //visita tutti i vertici adiacenti al vertice corrente...
          	if(!Visitato[w->vertice])
             {
             	printf("%d ",w->vertice);
       			Visitato[w->vertice]=TRUE;
             	AddCoda(&davanti,&dietro,w->vertice);//...inserendoli nella coda se non visitati
             }
       }
    }
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  4. #4
    Si, mi servirebbe il codice, ma qualsiasi suggerimento è ben accetto.

    Il codice postato sopra si riferisce ad un grafo realizzato con liste di adiacenza: ciò che cerco è relativo invece ad un grafo realizzato tramite matrice di adiacenza.

  5. #5
    Originariamente inviato da FastMagister
    Si, mi servirebbe il codice, ma qualsiasi suggerimento è ben accetto.

    Il codice postato sopra si riferisce ad un grafo realizzato con liste di adiacenza: ciò che cerco è relativo invece ad un grafo realizzato tramite matrice di adiacenza.
    Hai ragione ho letto male.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.