28 votos

¿Cómo se razona correctamente que este grafo dirigido es acíclico?

¿Cómo puedes razonar correctamente que este grafo dirigido es acíclico?

enter image description here

Sólo puedo decir visualmente que este grafo es acíclico porque no hay ningún camino en el grafo en el que el vértice inicial sea igual al vértice final. Pero, ¿es esto realmente una razón que puedes decir si alguien te pregunta?

¿Existe tal vez algún tipo de regla / fórmula donde se pueda determinar esto comparando la cantidad de vértices con la cantidad de aristas?

Tenemos aquí $6$ vértices y $10$ bordes.

Espero que me podáis ayudar porque si alguien me pregunta por qué este grafo dirigido o en general un grafo dirigido es acíclico, yo me pondría así aquí y no me siento bien.

3 votos

Aparte del hecho de que podría eliminar ambos $A$ y $F$ juntos en la primera etapa como vértices con flechas "todo dentro" o "todo fuera", y repetir la prueba en cada etapa, lo que podría ser más eficiente en un grafo dirigido más grande, las respuestas que tienes tratan bien tu ejemplo. Si tu reducción te lleva a una situación en la que cada vértice tiene tanto flechas de entrada como de salida, simplemente toma un camino y sigue adelante. Si llegas a un punto en el que no tienes ninguna opción, debes haberlo visitado antes (cada punto tiene una flecha de salida, así que ya lo has usado), y por lo tanto es fácil ver que hay un ciclo.

0 votos

Puedes obtener una respuesta de las potencias de la matriz de adyacencia...

57voto

B. Mehta Puntos 743

Una aproximación más general a esto viene dada por clasificación topológica . En particular, existe una ordenación topológica si y sólo si el grafo es un grafo acíclico dirigido. Los "algoritmos" descritos en las otras respuestas realizan efectivamente una ordenación topológica, en el sentido de que eliminan repetidamente los vértices sin aristas de entrada/salida.

Por ejemplo, una ordenación topológica de su grafo viene dada por $A,B,C,D,E,F$ y si se redibuja el gráfico de forma que los vértices anteriores estén más altos que los posteriores (no necesariamente de forma lineal) se puede ver que no hay aristas "hacia arriba", por lo que no puede haber ningún ciclo.

0 votos

Me gusta esta respuesta porque proporciona una respuesta que funciona en otros gráficos además de éste. También creo que el primer algoritmo de la página de Wikipedia (el algoritmo de Kahn) es efectivamente el algoritmo que ChristianF ha explicado en su respuesta.

0 votos

@CortAmmon Sí, y si inviertes todas las aristas entonces el algoritmo descrito por Arnaud es también el algoritmo de Kahn.

0 votos

En el ejemplo concreto, gire la imagen dada un pequeño ángulo en el sentido de las agujas del reloj. Entonces cada flecha tiene un componente hacia abajo.

51voto

aprado Puntos 1

Paso 1. Como $A$ no tiene ningún grado, no puede formar parte de ningún ciclo. Así que elimínalo. Ahora tenemos el gráfico $G_1$ .

Paso 2. Como $C$ no tiene ningún indegree no puede ser parte de ningún ciclo (en este nuevo gráfico $G_1$ ). Así que quítalo. Obtenemos $G_2$

Paso 3. Ahora en $G_2$ nodos $B$ y $D$ no tienen ningún grado, así que elimínalos.

4 votos

Puedes eliminar B también en el paso 2.

1 votos

@HRSE Sí podemos...

21 votos

Ese es el algoritmo para encontrar un ordenamiento topológico del grafo. Si cuando te detienes aún te quedan nodos, entonces el grafo original no es acíclico. Si no quedan nodos, entonces el grafo original es acíclico, y has encontrado un ordenamiento topológico

12voto

Arnaud Mortier Puntos 297

Un ciclo dirigido no puede implicar $F$ ya que ninguna flecha parte de $F$ . Así que puedes borrar $F$ y todas las flechas que caen en $F$ del gráfico. El grafo original es acíclico si y sólo si el nuevo grafo lo es.

Repita el procedimiento con $E$ ahora. Entonces con $D$ , entonces con $B$ y $C$ .

Al final, sólo $A$ queda, sin aristas, que es un gráfico acíclico.

7voto

Eric Lippert Puntos 1561

Como indica la respuesta de B. Mehta, se puede resolver este problema en el caso general mediante una topo-clasificación. Aquí tienes una guía rápida de cómo hacerlo:

  • Comienza coloreando todos los nodos de color verde.

Ahora haga los siguientes pasos para cada nodo :

  • Si el nodo está en rojo, sáltalo. Ya hemos comprobado los ciclos.
  • Si el nodo es amarillo, tienes un ciclo. Hemos terminado.
  • El nodo debe ser verde. Recolócalo en amarillo.
  • Vuelva a iniciar este algoritmo para todos los vecinos salientes del nodo actual.
  • Cuando estén todos hechos, colorea este nodo de rojo.

Una vez hecho esto, o bien has encontrado un nodo amarillo, o bien no lo has hecho. Si no lo hiciste, no hay ciclo. Si lo hiciste, entonces hay un ciclo, y contiene el nodo amarillo.

Veamos su ejemplo. Empezamos con todo verde. Supongamos que vamos a mirar los nodos en orden A, B, C, D, E, F.

A becomes yellow. We must now look at B, C, D next.
  B becomes yellow. We must look at E next.
    E becomes yellow. We must look at F next.
      F becomes yellow.
      F becomes red. 
    E becomes red.
  B becomes red.
  C becomes yellow. We must look at F next.
    F is red, so we skip it.
  C becomes red.
  D becomes yellow. We must look at E and F next.
    But they are both red, so skip them.
  D becomes red.
  A becomes red.
B, C, D, E and F are all red, so we're done, and the graph is acyclic.

Ahora supongamos que tenemos A -> B -> C -> A. Todos son verdes.

A becomes yellow; we have to look at B next.
  B becomes yellow; we have to look at C next.
    C becomes yellow; we have to look at A next.
      A is yellow. There is a cycle.

¿Tiene sentido?

Algoritmo de bonificación: Supongamos que el grafo es acílico. Cuando colorees un nodo de rojo, ponle un número creciente. En nuestro ejemplo, F = 1, E = 2, B = 3, C = 4, D = 5 A = 6. Si eliminas los nodos del grafo en ese orden, tendrías nunca eliminar un nodo que tenía un borde de salida .

Por eso se llama "ordenación topológica". Nos permite encontrar un orden en un DAG en el que una flecha que apunta de A a B significa que "la tarea A no puede hacerse hasta que la tarea B esté hecha". En nuestro ejemplo, F tiene que ser la primera en hacerse, y efectivamente, lo es. Quitamos F del gráfico, y ahora hay que hacer E a continuación. Quitamos E del gráfico y ahora B, C o D son igualmente buenas, así que podemos hacerlas, y entonces debemos hacer A en último lugar.

4voto

Mansour Puntos 101

Sólo puedo decir visualmente que este grafo es acíclico porque no hay ningún camino en el grafo en el que el vértice inicial sea igual al vértice final. Pero, ¿es esto realmente una razón que puedes decir si alguien te pregunta?

No si no puedes demostrarlo, pero en tu ejemplo particular, puedes hacerlo muy fácilmente, y eso hace que sea un enfoque válido para usar aquí.

Mueve F un poco hacia abajo. Una vez hecho esto, todas las aristas y, por tanto, todos los caminos (no vacíos) van de arriba a abajo, por lo que, trivialmente, no puede haber ningún camino de un vértice a sí mismo.

0 votos

Me gusta cómo esto representa geométricamente una función potencial en los vértices utilizando el $y$ coordinar. Un grafo dirigido finito es acíclico si y sólo si existe una función $\Phi:V\to\mathbb{Z}$ tal que $\Phi(v)-\Phi(w)>0$ siempre que haya una arista desde $w$ a $v$ . (Supongo que en el lenguaje de la homología simplicial, si hay un $0$ -cadena cuyo co-límite está en el cono positivo). Para un grafo dirigido planar, una ordenación topológica también puede representarse como una colección de "curvas isopotenciales" que las aristas sólo pueden cruzar en una única dirección.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X