Grafici che fanno sì che DFS e BFS elaborino i nodi nello stesso identico ordine


11

Per alcuni grafici, gli algoritmi di ricerca DFS e BFS elaborano i nodi nello stesso identico ordine, a condizione che entrambi inizino dallo stesso nodo. Due esempi sono grafici che sono percorsi e grafici a forma di stella (alberi di profondità con un numero arbitrario di figli). C'è un modo per classificare i grafici che soddisfano questa proprietà?1


6
Nota che in entrambi i casi funziona solo se inizi da un nodo specifico. Se si sceglie un nodo centrale in un percorso lungo, ad esempio, si otterranno ordini diversi da DFS e BFS.
templatetypedef

1
Ci sono altre possibilità interessanti oltre a una stella o un percorso? A prima vista sembrerebbe che se avessi un vertice sia con un fratello che con un bambino, otterrai immediatamente diversi attraversamenti, quindi o nessun vertice ha figli (a parte la radice) e ottieni una stella, o nessun vertice ha un fratello e ottieni un percorso. Immagino che funzioni anche una cricca, ma ha sia la stella che il percorso incorporati.
Luke Mathieson,

2
@LukeMathieson Sto pensando a una stella con il bambino più a destra che è la radice di un'altra stella. Immagino che funzionerebbe anche. Possiamo anche fare una dichiarazione generale: se soddisfa la proprietà quando la ricerca inizia nel nodo v∈V, allora anche una stella il cui figlio più a destra . Ancora meglio, se e soddisfano la proprietà e il nodo è l'ultimo elaborato in e è dove inizia la ricerca in , quindi l'aggiunta del bordo del ponte crea un grafico che soddisfa la proprietà. Anche la sostituzione di con funziona.= v G 1 G 2 v 1 G 1 v 2 G 2 ( v 1 , v 2 ) v 1 v 2G=(V,E)=vG1G2v1G1v2G2(v1,v2)v1v2
Saadtaame,

2
Un buon punto, quindi c'è una sorta di composizione ricorsiva a destra in cui è possibile identificare la foglia destra del primo grafico con la radice del secondo.
Luke Mathieson,

@LukeMathieson Sembra che tu possa risolvere il caso in cui un nodo ha un fratello e un figlio aggiungendo un bordo tra quel figlio e il genitore di . Ecco la mia proposta: dato un grafico . , se tale che , quindi la proprietà vale per . Il prossimo passo è dimostrare o confutare questa proposta. v G = ( V , E ) x V y , z , w V ( y , x ) , ( z , y ) , ( x , w ) E ( x , z ) EvvG=(V,E)xVy,z,wV(y,x),(z,y),(x,w)E(x,z)EG
Saadtaame,

Risposte:


6

Supponiamo che il nostro BFS e dfs abbia una regola per iniziare da un nodo specifico e in entrambi i modi visitano prima il nodo con il grado più basso:

DFS-BFS

inizia dal nodo nero più a sinistra, quindi (BFS e DFS) visitano il nodo rosso più a sinistra, quindi visiteranno il nodo nero successivo e così via, per renderlo più generale, potresti aggiungere alcuni percorsi tra i triangoli o aggiungere una stella dopo aver finito i triangoli ...


È corretto sotto il tuo presupposto. In realtà hai sollevato un buon punto; dovremmo specificare in quale ordine sono i nodi aggiunti all'agenda (stack o coda) di fronte a una scelta.
Saadtaame,

Tenendo presente che LIFO e FIFO per la pianificazione producono rispettivamente DFS e BFS, si potrebbe obiettare che una programmazione come questa (in cui la pianificazione potrebbe non essere simile a quella dello stack o della coda) non è né una ricerca approfondita né approfondita, anche se in alcuni casi puoi descrivere la sua tendenza ad assomigliare all'una o all'altra.
Niel de Beaudrap,

1
Penso che possa essere implementato in termini di stack o coda. Non cambia il modo in cui le cose vengono tolte (LIFO o FIFO), cambia l'ordine in cui vengono aggiunti i bambini (in questo caso, prima il grado più basso).
SamM,

@NieldeBeaudrap in realtà questa è solo una struttura per mostrare che da qualche parte in entrambi i modi sono uguali.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.