Problema di ricerca del grafo

3

Ho pensato che stavo eseguendo correttamente la ricerca dell'ampio grafico, ma lo script di valutazione del mio istruttore mi sta dicendo che la mia risposta non è corretta.

Dalle istruzioni:

Consider a breadth-first graph search on the graph below, where S is the start and G is the goal state. Assume that ties are broken alphabetically (so a partial plan S->X->A would be expanded before S->X->B and S->A->Z would be expanded before S->B->A). You may find it helpful to execute the search on scratch paper.

Please enter the final path returned by breadth-first graph search in the box below. Your answer should be a string with S as your first character and G as your last character. Don't include arrows or spaces in your submission. For example, if you believe the path is S->X->G, please enter SXG in the box.

HoricevutoeinseritolarispostaSACBG,cheloscriptdivalutazionehacontrassegnatocomeerrato.("Il tuo input è stato valutato come SACBG, che non è corretto.")

Ecco i miei passi per la ricerca del grafico di ampiezza nel grafico sopra usando l'algoritmo al link :

  1. Accodare il nodo root S . Queue = [S], Path = []
  2. Elimina S ed esaminalo. Queue = [], Path = [S]
  3. Accoda i figli di S , A e C . Queue = [A, C], Path = [S]
  4. Rimuovi A ed esaminalo. Queue = [C], Path = [S, A]
  5. A non ha figli. Dequeue C ed esaminalo. Queue = [], Path = [S, A, C]
  6. Accoda i figli B e G di C . Queue = [B, G], Path = [S, A, C]
  7. Rimuovi B ed esaminalo. Queue = [G], Path = [S, A, C, B]
  8. L ' G solo figlio di è già in coda. Queue = [G], Path = [S, A, C, B]
  9. Rimuovete il nodo obiettivo G ed esaminatelo. Chiudi la ricerca e ritorna. Queue = [], Path = [S, A, C, B, G]

Un nodo viene posizionato nel percorso quando viene rimosso dalla coda ed esaminato.

Le legature sono in ordine alfabetico come richiesto nelle istruzioni.

Che cosa sto sbagliando?

    
posta user93172 07.09.2013 - 13:22
fonte

2 risposte

4

Il problema sembra essere che la tua risposta è l'ordine in cui i nodi vengono valutati dalla ricerca per ampiezza, ma quello che le domande richiedono è il percorso finale da S a G che la ricerca sarebbe trovare.

Penso che la risposta che la domanda sta cercando sia SCG.

Il modo più semplice per confermare sarebbe parlare con il tuo istruttore.

(Una prima ricerca approfondita con le stesse regole di precedenza alfabetiche restituirebbe SCBG come percorso.)

    
risposta data 07.09.2013 - 16:00
fonte
0

Poiché nessuno ha fornito ancora i dettagli, ecco la tua risposta con correzione:

  1. Accodare il nodo root S. Queue = [S], Path = []
  2. Dequeue S ed esaminalo. Queue = [], Path = [S]
  3. Accoda i figli di S, A e C. Queue = [A, C], Path = [S]
  4. Elimina la coda A ed esaminala. Queue = [C], Path = [S, A]
    - > Tutto corretto finora
  5. A non ha figli. Deseleziona C ed esaminalo. Queue = [], Path = [S, C]
    - > Qui è stato commesso l'errore: A viene rimosso dal percorso, poiché non ha figli; la ricerca passa ora dal percorso S-A (un vicolo cieco) al percorso S-C.
  6. Accoda i figli B e G. Queue = [B, G], Path = [S, C]
    - > Corretto, tranne che il percorso corrente è S-C (non S-A-C).
  7. Elimina la coda B ed esaminala. Queue = [G], Path = [S, C, B]
  8. L'unico figlio di B G è già in coda. Queue = [G], Path = [S, C, B]
    - > Corretto, con la stessa correzione di cui sopra (A non è più nel percorso).
  9. Rimuovete il nodo obiettivo G ed esaminatelo. Chiudi la ricerca e ritorna. Queue = [], Path = [S, C, G]
    - > Dequeue G ed esaminalo, trova che è un obiettivo, fermati. Lo stesso errore di sopra: B viene rimosso dal percorso e la ricerca passa dal percorso S-C-B a S-C-G (che sembra essere il percorso della soluzione).

Nota che, se tutti i bordi hanno lo stesso peso (di 1, come nel tuo caso), la ricerca in ampiezza trova il percorso più breve (numero minimo di passaggi).

    
risposta data 01.04.2014 - 20:56
fonte

Leggi altre domande sui tag