Algoritmo BFS (Breadth First Search) con ESEMPIO

โšก Riepilogo intelligente

La ricerca in ampiezza (BFS, Breadth First Search) รจ un algoritmo che attraversa un grafo livello per livello, visitando tutti i vicini di un nodo prima di procedere verso il basso. Utilizza una coda FIFO e trova il percorso piรน breve nei grafi non pesati senza cicli infiniti.

  • ๐Ÿ“Š Ordine di livello: L'algoritmo BFS visita ogni nodo alla profonditร  corrente prima di passare al livello successivo.
  • ๐Ÿ“ฅ Basato su code: Una coda FIFO memorizza i nodi visitati in modo che i nodi vicini vengano elaborati in ordine.
  • ๐ŸŽฏ Percorso piรน breve: Nei grafi non pesati, l'algoritmo BFS trova il percorso piรน breve nel minor numero di iterazioni.
  • โœ… Nessun ciclo: La marcatura dei nodi visitati impedisce all'algoritmo BFS di rimanere bloccato in un ciclo infinito.
  • ๐ŸŒ applicazioni: BFS alimenta i crawler web, le reti P2P, la navigazione e la trasmissione in rete.

Algoritmo di ricerca in ampiezza (BFS) con esempio

Che cos'รจ l'algoritmo BFS (ricerca in ampiezza)?

La ricerca in ampiezza (BFS, Breadth-first search) รจ un algoritmo utilizzato per rappresentare graficamente i dati, per esplorare alberi o per attraversare strutture. L'acronimo BFS sta per Breadth-first search (ricerca in ampiezza).

L'algoritmo visita e contrassegna in modo efficiente tutti i nodi chiave in un grafico in modo accurato in larghezza. Questo algoritmo seleziona un singolo nodo (punto iniziale o sorgente) in un grafico e quindi visita tutti i nodi adiacenti al nodo selezionato. Ricorda, BFS accede a questi nodi uno per uno.

Una volta che l'algoritmo visita e contrassegna il nodo di partenza, si sposta verso i nodi non visitati piรน vicini e li analizza. Una volta visitati, tutti i nodi vengono contrassegnati. Queste iterazioni continuano finchรฉ tutti i nodi del grafico non sono stati visitati e contrassegnati con successo.

Che cosa sono gli attraversamenti del grafico?

L'attraversamento del grafico รจ una metodologia comunemente utilizzata per individuare la posizione del vertice nel grafico. Si tratta di un algoritmo di ricerca avanzato in grado di analizzare il grafico con velocitร  e precisione oltre a segnare la sequenza dei vertici visitati. Questo processo ti consente di visitare rapidamente ciascun nodo in un grafico senza rimanere bloccato in un ciclo infinito.

L'architettura dell'algoritmo BFS

Archistruttura dell'algoritmo BFS

  1. Nei vari livelli dei dati, รจ possibile contrassegnare qualsiasi nodo come nodo di partenza o iniziale per iniziare l'attraversamento. L'algoritmo BFS visiterร  il nodo, lo contrassegnerร  come visitato e lo inserirร  nella coda.
  2. Ora il BFS visiterร  i nodi piรน vicini e non visitati e li contrassegnerร . Questi valori vengono anche aggiunti alla coda. La coda funziona su Modello FIFO.
  3. Analogamente, i nodi rimanenti piรน vicini e non ancora visitati sul grafo vengono analizzati, contrassegnati e aggiunti alla coda. Questi elementi vengono eliminati dalla coda man mano che vengono ricevuti e stampati come risultato.

Perchรฉ abbiamo bisogno dell'algoritmo BFS?

Esistono numerose ragioni per utilizzare l'algoritmo BFS per la ricerca nel tuo dataset. Alcuni degli aspetti piรน importanti che rendono questo algoritmo la scelta ideale sono:

  • BFS รจ utile per analizzare i nodi in un grafico e costruire il percorso piรน breve per attraversarli.
  • BFS puรฒ attraversare un grafico nel minor numero di iterazioni.
  • L'architettura dell'algoritmo BFS รจ semplice e robusta.
  • Il risultato dell'algoritmo BFS mantiene un elevato livello di precisione rispetto ad altri algoritmi.
  • Le iterazioni BFS sono continue e non vi รจ alcuna possibilitร  che questo algoritmo rimanga intrappolato in un problema di ciclo infinito.

Come funziona l'algoritmo BFS?

L'attraversamento del grafico richiede che l'algoritmo visiti, controlli e/o aggiorni ogni singolo nodo non visitato in una struttura ad albero. Gli attraversamenti del grafico sono classificati in base all'ordine in cui visitano i nodi sul grafico.

L'algoritmo BFS avvia l'operazione dal primo nodo o nodo iniziale in un grafico e lo attraversa completamente. Una volta attraversato con successo il nodo iniziale, viene visitato e contrassegnato il successivo vertice non attraversato nel grafico.

Pertanto, si puรฒ affermare che tutti i nodi adiacenti al vertice corrente vengono visitati e attraversati nella prima iterazione. Per implementare il funzionamento di un algoritmo BFS viene utilizzata una semplice metodologia a coda, che consiste nei seguenti passaggi:

Passo 1)

Funzionamento dell'algoritmo BFS

Ogni vertice o nodo del grafico รจ noto. Ad esempio, puoi contrassegnare il nodo come V.

Passo 2)

Funzionamento dell'algoritmo BFS

Nel caso in cui il vertice V non sia accessibile, aggiungerlo alla coda BFS.

Passo 3)

Funzionamento dell'algoritmo BFS

Avvia la ricerca BFS e, al termine, contrassegna il vertice V come visitato.

Passo 4)

Funzionamento dell'algoritmo BFS

La coda BFS non รจ ancora vuota, quindi rimuovi il vertice V del grafico dalla coda.

Passo 5)

Funzionamento dell'algoritmo BFS

Recupera tutti i vertici rimanenti del grafo adiacenti al vertice V.

Passo 6)

Funzionamento dell'algoritmo BFS

Per ogni vertice adiacente, diciamo V1, se non รจ ancora stato visitato, aggiungi V1 alla coda BFS.

Passo 7)

Funzionamento dell'algoritmo BFS

BFS visiterร  V1, lo contrassegnerร  come visitato e lo eliminerร  dalla coda.

Esempio di algoritmo BFS

Passo 1)

Esempio di algoritmo BFS

Hai a disposizione un grafico di sette numeri che vanno da 0 a 6.

Passo 2)

Esempio di algoritmo BFS

0 o zero รจ stato contrassegnato come nodo radice.

Passo 3)

Esempio di algoritmo BFS

0 viene visitato, contrassegnato e inserito nella struttura dati della coda.

Passo 4)

Esempio di algoritmo BFS

I nodi rimanenti adiacenti a 0 e non ancora visitati vengono visitati, contrassegnati e inseriti nella coda.

Passo 5)

Esempio di algoritmo BFS

Le iterazioni di attraversamento vengono ripetute finchรฉ non vengono visitati tutti i nodi.

Regole dell'algoritmo BFS

Ecco alcune regole importanti per l'utilizzo dell'algoritmo BFS:

  • Una coda (FIFO โ€“ First in First Out) struttura dati รจ utilizzato da BFS.
  • Si contrassegna un nodo qualsiasi del grafico come radice e si inizia a percorrere i dati a partire da esso.
  • BFS attraversa tutti i nodi nel grafo e continua a lasciare cadereping li consideravano completati.
  • BFS visita un nodo non visitato adiacente, lo contrassegna come completato e lo inserisce in una coda.
  • Rimuove il vertice precedente dalla coda nel caso in cui non venga trovato alcun vertice adiacente.
  • L'algoritmo BFS itera fino a quando tutti i vertici del grafo non vengono attraversati con successo e contrassegnati come completati.
  • Non ci sono loop causati da BFS durante l'attraversamento dei dati da qualsiasi nodo.

Applicazioni dell'algoritmo BFS

Diamo un'occhiata ad alcune delle applicazioni reali in cui l'implementazione di un algoritmo BFS puรฒ essere molto efficace.

  • Grafici non ponderati: L'algoritmo BFS puรฒ facilmente creare il percorso piรน breve e un albero di copertura minimo per visitare tutti i vertici del grafo nel minor tempo possibile e con elevata precisione.
  • Reti P2P: L'algoritmo BFS puรฒ essere implementato per individuare tutti i nodi piรน vicini o adiacenti in una rete peer-to-peer. Ciรฒ consentirร  di trovare i dati richiesti piรน rapidamente.
  • Crawler web: I motori di ricerca o i web crawler possono facilmente creare piรน livelli di indici utilizzando BFS. L'implementazione di BFS inizia dalla fonte, ovvero la pagina Web, e quindi visita tutti i collegamenti da quella fonte.
  • Sistemi di navigazione: BFS puรฒ aiutare a trovare tutte le posizioni vicine dalla posizione principale o di origine.
  • Trasmissione in rete: Un pacchetto trasmesso รจ guidato dall'algoritmo BFS per trovare e raggiungere tutti i nodi di cui ha l'indirizzo.

DOMANDE FREQUENTI

Nell'ambito dell'intelligenza artificiale, l'algoritmo BFS esplora gli stati di gioco, le configurazioni del puzzle e le mappe per trovare la soluzione piรน breve quando ogni mossa ha lo stesso costo. Garantisce il minor numero di passaggi, sebbene possa richiedere molta memoria su grafi di grandi dimensioni.

Sรฌ. Gli assistenti IA possono scrivere BFS in Python, Java, o C++ Utilizzando una coda e un insieme di nodi visitati a partire da una semplice descrizione. Testatelo su grafici di esempio, poichรฉ รจ facile non notare casi limite come i nodi disconnessi.

BFS esplora un grafo livello per livello utilizzando una coda e trova il percorso piรน breve nei grafi non pesati. DFS esplora il piรน profondamente possibile lungo ogni ramo utilizzando uno stack o la ricorsione prima di tornare indietrotracre.

L'algoritmo BFS ha una complessitร  temporale di O(V + E), dove V รจ il numero di vertici ed E รจ il numero di archi, poichรฉ ogni vertice e ogni arco vengono esaminati una sola volta. La sua complessitร  spaziale รจ O(V) per la coda e l'insieme dei vertici visitati.

Riassumi questo post con: