28 votos

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

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

introduce la descripción de la imagen aquí

Solo puedo decir visualmente que este grafo es acíclico porque no hay un solo camino en el grafo donde el vértice inicial sea igual al vértice final. Pero ¿es esto realmente una razón que puedas decir si alguien te pregunta?

¿Quizás hay alguna regla / fórmula donde puedas determinar esto comparando la cantidad de vértices con la cantidad de aristas?

Aquí tenemos $6$ vértices y $10$ aristas.

Espero que puedas darme algo de ayuda porque si alguien me pregunta por qué este grafo dirigido o en general un grafo dirigido es acíclico, yo respondería como aquí y no me siento bien al respecto.

3 votos

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

0 votos

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

57voto

B. Mehta Puntos 743

Una aproximación más general a esto se da mediante ordenación topológica. En particular, una ordenación topológica existe si y solo si el grafo es un grafo dirigido acíclico. Los 'algoritmos' descritos en las otras respuestas realizan efectivamente una ordenación topológica, en el sentido de que eliminan repetidamente vértices sin aristas entrantes/salientes.

Por ejemplo, una ordenación topológica de tu gráfico es dada por $A,B,C,D,E,F$ y si redes el gráfico de manera que los vértices anteriores estén más altos que los posteriores (no necesariamente de forma lineal) puedes ver que no hay aristas 'hacia arriba', por lo que no puede haber ciclo.

0 votos

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

0 votos

@CortAmmon Sí, y si inviertes todos los bordes, entonces el algoritmo descrito por Arnaud también es el algoritmo de Kahn.

0 votos

En el ejemplo específico, rota la imagen dada en un pequeño ángulo en sentido horario. Luego, cada flecha tiene un componente hacia abajo.

51voto

aprado Puntos 1

Paso 1. Dado que $A$ no tiene grado de entrada, no puede formar parte de ningún ciclo. Entonces, retíralo. Ahora tenemos el grafo $G_1$.

Paso 2. Dado que $C$ no tiene grado de entrada, no puede formar parte de ningún ciclo (en este nuevo grafo $G_1$). Así que retíralo. Obtenemos $G_2$.

Paso 3. Ahora en $G_2$ los nodos $B$ y $D$ no tienen grado de entrada, así que retíralos.

4 votos

Puedes eliminar también la etiqueta B en el paso 2.

1 votos

@HRSE Sí, podemos...

21 votos

Ese es el algoritmo para encontrar un orden topológico del grafo. Si al detenerte sigues teniendo nodos restantes, entonces el grafo original no es acíclico. Si no quedan nodos, entonces el grafo original es acíclico y has encontrado un orden topológico.

12voto

Arnaud Mortier Puntos 297

Un ciclo dirigido no puede involucrar a $F$ ya que no hay flechas que comiencen desde $F$. Por lo tanto, puedes eliminar $F$ y todas las flechas que lleguen a $F$ del gráfico. El gráfico original es acíclico si y solo si el nuevo gráfico lo es.

Repite el procedimiento con $E$ ahora. Luego con $D$, luego con $B$ y $C.

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

7voto

Eric Lippert Puntos 1561

Como indica la respuesta de B. Mehta, puedes resolver este problema en el caso general haciendo un ordenamiento topológico. Aquí tienes una guía rápida de cómo hacerlo:

  • Empieza coloreando cada nodo de verde.

Ahora sigue los siguientes pasos para cada nodo:

  • Si el nodo es rojo, omítelo. Ya lo hemos revisado en busca de ciclos.
  • Si el nodo es amarillo, tienes un ciclo. Hemos terminado.
  • El nodo debe ser verde. Recolócalo a amarillo.
  • Reinicia este algoritmo para todos los vecinos salientes del nodo actual.
  • Cuando todos estén listos, colorea este nodo de rojo.

Una vez que hayas terminado, o bien encuentras un nodo amarillo o no. Si no encontraste uno, no hay ciclo. Si lo encontraste, entonces hay un ciclo y contiene al nodo amarillo.

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

A se vuelve amarillo. Ahora debemos mirar B, C, D a continuación.
  B se vuelve amarillo. Luego debemos mirar E a continuación.
    E se vuelve amarillo. Luego debemos mirar F a continuación.
      F se vuelve amarillo.
      F se vuelve rojo.
    E se vuelve rojo.
  B se vuelve rojo.
  C se vuelve amarillo. Luego debemos mirar F a continuación.
    F es rojo, así que lo omitimos.
  C se vuelve rojo.
  D se vuelve amarillo. Luego debemos mirar E y F a continuación.
    Pero ambos son rojos, así que los omitimos.
  D se vuelve rojo.
  A se vuelve rojo.
B, C, D, E y F están todos en rojo, así que hemos terminado y el grafo es acíclico.

Ahora supongamos que tenemos A -> B -> C -> A. Todos están en verde.

A se vuelve amarillo; debemos mirar a B a continuación.
  B se vuelve amarillo; debemos mirar a C a continuación.
    C se vuelve amarillo; debemos mirar a A a continuación.
      A está en amarillo. Hay un ciclo.

¿Tiene sentido?

Algoritmo adicional: Supongamos que el grafo es acíclico. Cuando colores un nodo de rojo, ponle un número incrementado. En nuestro ejemplo, F = 1, E = 2, B = 3, C = 4, D = 5, A = 6. Si quitas los nodos del grafo en ese orden, nunca eliminarás un nodo que tenga una arista saliente.

Por eso se llama "ordenamiento topológico". Nos permite encontrar un orden en un DAG donde una flecha apuntando de A a B significa "la tarea A no puede realizarse hasta que se haya realizado la tarea B". En nuestro ejemplo, F debe hacerse primero, y efectivamente se hace. Quitamos F del grafo, y ahora E debe hacerse a continuación. Quitamos E del grafo y ahora B, C o D son igualmente buenos para hacerse, y luego debemos hacer A por último.

4voto

Mansour Puntos 101

Solo puedo decir visualmente que este grafo es acíclico porque no hay un solo camino en el grafo donde el vértice inicial sea igual al vértice final. ¿Pero es realmente una razón que puedes decir si alguien te pregunta?

Si no puedes probarlo, entonces no, pero en tu caso particular, puedes hacerlo muy fácilmente, y eso lo convierte en un enfoque válido para usar aquí.

Mueve F un poco hacia abajo. Una vez que hayas hecho eso, todos los bordes y, por lo tanto, todos los caminos (no vacíos) van de arriba hacia abajo, por lo que trivialmente, no puede haber un 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 la coordenada $ y $. Un grafo dirigido finito es acíclico si y solo si existe una función $ \Phi: V \rightarrow \mathbb{Z} $ tal que $ \Phi(v) - \Phi(w)> 0 $ siempre que haya una arista de $ w $ a $ v $. (Supongo que en el lenguaje de la homología simplicial, si y solo si hay un $ 0 $-cociclo cuya coborde está en el cono positivo.) Para un grafo dirigido plano, una ordenación topológica también puede representarse como una colección de "curvas isopotenciales" que las aristas solo pueden cruzar en una sola 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