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?

introducir 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 esta realmente una razón que puedas dar si alguien te pregunta?

¿Existe tal vez algún tipo de regla o 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 diría algo así 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 "todas en" o "todas fuera", 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 lidian bien con 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 continúa. Si llegas a un punto en el que no tienes opción, es necesario que ya lo hayas visitado antes (cada punto tiene una flecha de salida, por lo que ya la has usado), y por lo tanto es fácil ver que hay un ciclo.

0 votos

Es posible que obtengas una respuesta de los poderes de la matriz de adyacencia...

57voto

B. Mehta Puntos 743

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

Por ejemplo, un ordenamiento topológico de tu grafo es dado por $A,B,C,D,E,F$ y si reorganizas el grafo de manera que los vértices anteriores son más altos que los posteriores (no necesariamente de manera 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 de hecho 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 también es el algoritmo de Kahn.

0 votos

En el ejemplo específico, gira la imagen dada por 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 ser parte de ningún ciclo. Así que remuévalo. Ahora tenemos el grafo $G_1$.

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

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

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 ordenamiento topológico del gráfico. Si al detenerte todavía quedan nodos, entonces el gráfico original no es acíclico. Si no quedan nodos, entonces el gráfico original es acíclico, y has encontrado un ordenamiento topológico.

12voto

Arnaud Mortier Puntos 297

Un ciclo dirigido no puede incluir a $F$ ya que ninguna flecha comienza en $F$. Por lo tanto, puedes eliminar $F$ y todas las flechas que llegan a $F$ del grafo. El grafo original es acíclico si y solo si el nuevo grafo lo es.

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

Al final, solo queda $A$, sin aristas, lo que es un grafo 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:

  • Comienza coloreando cada nodo de verde.

Ahora haz los siguientes pasos para cada nodo:

  • Si el nodo es rojo, omítelo. Ya lo hemos revisado para ciclos.
  • Si el nodo es amarillo, tienes un ciclo. Estamos listos.
  • 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 te encuentras con un nodo amarillo, o no. Si no lo hiciste, no hay ciclo. Si lo hiciste, entonces hay un ciclo, y contiene el nodo amarillo.

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

A se vuelve amarillo. Ahora debemos ver B, C, D a continuación.
  B se vuelve amarillo. Ahora debemos ver E a continuación.
    E se vuelve amarillo. Ahora debemos ver F a continuación.
      F se vuelve amarillo.
      F se vuelve rojo.
    E se vuelve rojo.
  B se vuelve rojo.
  C se vuelve amarillo. Ahora debemos ver F a continuación.
    F es rojo, así que lo omitimos.
  C se vuelve rojo.
  D se vuelve amarillo. Ahora debemos ver 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 rojos, 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 ver a B a continuación.
  B se vuelve amarillo; debemos ver a C a continuación.
    C se vuelve amarillo; debemos ver a A a continuación.
      A está amarillo. Hay un ciclo.

¿Tiene sentido?

Algoritmo adicional: Supongamos que el grafo es acíclico. Cuando coloreas 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 eliminaras los nodos del grafo en ese orden, nunca eliminarías un nodo que tiene una arista saliente.

Por eso esto se llama "ordenamiento topológico". Nos permite encontrar un orden en un DAG donde una flecha que va de A a B significa "la tarea A no se puede hacer hasta que la tarea B esté hecha". En nuestro ejemplo, F tiene que hacerse primero, y efectivamente lo está. Eliminamos F del grafo, y ahora E tiene que hacerse a continuación. Eliminamos E del grafo y ahora B, C o D son igualmente buenos para hacerlos, y luego debemos hacer A por último.

4voto

Mansour Puntos 101

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

No si no puedes probarlo, pero en tu ejemplo 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, todas las aristas y, por lo tanto, todos los caminos (no vacíos) van de arriba abajo, por lo que trivialmente, no puede haber un camino desde un vértice hasta sí mismo.

0 votos

Me gusta cómo esto representa geométricamente una función potencial en los vértices usando la coordenada $y$. Un grafo dirigido finito es acíclico si y solo si existe una función $\Phi:V\to\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 clasificación topológica también puede representarse como una colección de "curvas isopotenciales" por las 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