Domanda

Il mio compito è trovare il modo più breve in una matrice da un punto all'altro. È possibile muoversi solo in tale direzione (su, giù, a sinistra, a destra).

0 0 0 0 1 0 0 0
1 0 0 0 0 0 0 0
0 0 0 1 0 1 F 0
0 1 0 1 0 0 0 0
0 0 0 1 0 0 0 0
0 S 0 1 0 0 1 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 1 0

S - Punto di inizio

F - Posto di destinazione (finitura)

0 - celle libere (possiamo muoverci attraverso di esse)

1 - "muri" (non possiamo muoverci attraverso di loro)

È ovvio che una prima ricerca in larghezza risolve questo problema nel modo più ottimale. So che la libreria Boost fornisce questo algoritmo, ma non ho mai aumentato prima.

Come posso fare una prima ricerca in larghezza nel mio caso usando Boost? Come ho capito, l'algoritmo di ricerca di prima ricerca di ampiezza è destinato solo ai grafici. Immagino che non sia una buona idea convertire la matrice in grafico m*n vertici e m*(n -1) + (m-1)*n bordi.

Posso applicare l'algoritmo di prima ricerca in ampiezza per la matrice (senza convertirlo in grafico) o è meglio implementare la mia funzione per la prima ricerca in larghezza?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top