Estoy trabajando en un algoritmo TopSort modificado y estoy teniendo problemas para encontrar/crear gráficos acíclicos dirigidos grandes (más de 1000 nodos) para usarlos en las pruebas. Tengo un gráfico de muestra no dirigido de otro proyecto que es de buen tamaño, pero tiene muchos ciclos. ¿Hay algún algoritmo que pueda usar para dirigir los bordes para que no haya ciclos?¿Cómo transformo un gráfico no dirigido y muy cíclico en un gráfico acíclico dirigido?
Respuesta
Está buscando convertir el gráfico en un bosque de árboles enraizados. hacer un cruce de gráfico primero o primero de profundidad de cada componente del gráfico. Durante el recorrido, crea un borde dirigido entre los vértices padre-hijo.
this proporciona una forma de obtener gráficos acíclicos. Básicamente, un cruce de gráfico produce un árbol, que define un orden parcial en los nodos originales. Luego, simplemente dirija todos los bordes para que apunten en una dirección consistente de acuerdo con el orden parcial, o estén entre 2 elementos que no están ordenados (estos pueden apuntar en cualquier dirección).
No lo leí todo, pero a mi entender: la sección 2.1 de este documento describe una forma de convertir el gráfico dirigido a DAG (es decir, ciclos de interrupción). Y propone agregar un paso previo para convertir un gráfico dirigido a no dirigido a través de (cualquier) recorrido del gráfico. –
Para garantizar que el nuevo grafo dirigido esté conectado, ¿podría utilizar la búsqueda de primer orden de la siguiente manera?
old_undirected graph G
new_directed graph D
dequeue Q
v is any node in G
add v to D
Q.push_back(v)
while(Q is not empty):
v = Q.pop_front()
for all neighbors u to v:
if u in D
add edge u->v to D
else
add u to D and add edge v->u to D
Q.push_back(u)
return D
este gráfico debe contener todos los bordes de la gráfica original, pero el debe ser tan dirigido que no habrá ningún círculos.
- 1. Recorrido de gráfico cíclico dirigido
- 2. ¿Cómo se almacena un gráfico acíclico dirigido (DAG) como JSON?
- 3. ¿Cómo puedo verificar si un gráfico dirigido es acíclico?
- 4. ¿Cómo detectar si un gráfico dirigido es cíclico?
- 5. Django gráfico no dirigido
- 6. Encontrar un ciclo en un gráfico no dirigido versus encontrar uno en un gráfico dirigido
- 7. Cómo convertir el gráfico acíclico dirigido (DAG) al árbol
- 8. ¿Modelar un gráfico no dirigido en Rails?
- 9. Ruta acíclica más larga en un gráfico no ponderado dirigido
- 10. Estructura de datos y algoritmos para un gráfico cíclico dirigido (F #)
- 11. Implementando un gráfico dirigido en python
- 12. Todos los posibles caminos en un grafo no dirigido cíclico
- 13. ¿Cómo implementar un gráfico no dirigido en Ruby on Rails?
- 14. ¿Cómo se llama este algoritmo para buscar la ruta máxima en un gráfico acíclico dirigido?
- 15. Redis: implementar gráfico dirigido ponderado
- 16. Flujo máximo - Ford-Fulkerson: gráfico no dirigido
- 17. Detectando ciclos de un gráfico (tal vez dirigido o no dirigido) en Haskell
- 18. Formas de mapeo de un gráfico acíclico dirigido a una grilla/matriz
- 19. Algoritmo de propósito general para triangular un gráfico no dirigido?
- 20. ¿Hay algún tipo de datos de Gráfico Acíclico Dirigido (DAG) en Java, y debería usarlo?
- 21. Un árbol de expansión mínimo bidireccional de un gráfico dirigido
- 22. Encontrar todas las rutas en un gráfico dirigido con ciclos
- 23. Almacenar un gráfico dirigido en google appengine datastore
- 24. ¿Encontrando las "mejores raíces" en un gráfico de árbol dirigido?
- 25. Sugerencias para KSPA en el gráfico no dirigido
- 26. Visualizar gráfico no dirigido que es demasiado grande para GraphViz?
- 27. ¿Cómo puedo convertir un dígrafo en un gráfico no dirigido en networkx?
- 28. Gráfico dirigido a la muestra y código de clasificación topológica
- 29. Cómo almacenar un gran gráfico no ponderado dirigido con miles de millones de nodos y vértices
- 30. Cómo comprobar si un gráfico no dirigido tiene un ciclo de longitud impar
errm .. él no está tratando de hacer árboles. él quiere dirigir cada borde para que el gráfico resultante sea acíclico. y el método propuesto eliminará algunos bordes (creando así un árbol). – lijie