Arresto boost :: depth_first_search lungo una particolare profondità, se determinati criteri è soddisfatta
-
11-10-2019 - |
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.
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