Arresto boost :: depth_first_search lungo una particolare profondità, se determinati criteri è soddisfatta

StackOverflow https://stackoverflow.com/questions/4711549

Domanda

BGL dove riporre i miei DAG. I vertici hanno stati. Dato un cambiamento di stato in uno dei vertici voglio aggiornare i vertici dipendenti. Questo sono in grado di farlo utilizzando boost :: depth_first_search e un visitatore personalizzato.

Ora la logica è che non voglio aggiornare un vertice e il suo dipendente cercato se il vertice è in uno stato particolare. Fondamentalmente Voglio controllare over en-accodamento dei vertici sia in DFS o bfs. Qual è il modo migliore per raggiungere questo obiettivo in BGL.

Grazie.

È stato utile?

Soluzione

Sembra che boost :: depth_first_search non supporta questo, ma il sottostante boost :: depth_first_visit fa, attraverso la sua seconda sovraccarico permettendo una "funzione di terminazione" (TerminatorFunc).

Così si potrebbe copiare l'attuazione di boost :: depth_first_search e sostituire dettaglio :: nontruth2 () parametro passato al boost :: depth_first_visit con il proprio (non banale) funzione di terminazione.

Altri suggerimenti

La mancanza di terminazione in profondità prima di ricerca -. È il più cosa stupida nella biblioteca grafico che abbia mai visto

Può essere, questo può essere la via d'uscita: depth_first_search su filtered_graph. Si può segnare la stop-vertice in qualche modo, e in funzione del filtered_graph filtro bordi solo nascondere i bordi incidenti

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