Comprender los circuitos eulerios en la teoría de la gravedad

Un circuito eulerio es un paseo cerrado que atraviesa cada borde de un gráfico exactamente una vez y regresa al vértice inicial. El concepto se origina del famoso problema de Siete Puentes de Königsberg planteado por Leonhard Euler en 1736. Euler demostró que tal circuito existe sólo si cada vértice en el gráfico tiene grado y el gráfico está conectado (ignorando las optimizaciones de la combinación de vertices aisladas).

Para indicarlo formalmente: G = (V], E]) es un gráfico no dirigido. Un circuito euriano existe si y sólo si cada vértice ]v grado ] Identificar el gráfico [FLT]

¿Qué es el Algoritmo de Hierholzer?

El Algoritmo de Hierholzer, publicado por el matemático alemán Carl Hierholzer en 1873, es un método eficiente para construir un circuito eulerio cuando las condiciones necesarias están satisfechas. Construye el circuito encontrando una serie de ciclos y fusionándolos.El algoritmo funciona en tiempo lineal O] [F spanse LT]

Conceptos clave

  • Detección del ciclo: A partir de un vértice, siga los bordes no utilizados hasta volver al vértice inicial. Esto forma un ciclo simple.
  • Ciclos de fusión: Cuando un vértice en el circuito actual todavía tiene bordes sin usar, un nuevo ciclo se forma desde ese vértice e insertado en el circuito.
  • Edge removal:] Como se utilizan los bordes, se marcan o se eliminan para evitar volver a visitarlos.

Paso a paso Descripción del Algoritm de Hierholzer

El algoritmo se puede implementar recursivamente o iterativamente. La idea central es construir un circuito al extender repetidamente sub-circuits. A continuación se presenta un desglose detallado.

Paso 1: Elija un Vertex de inicio

Seleccione cualquier vértice con al menos un borde. Ya que el gráfico está conectado y todos los grados son incluso, cualquier vértice funcionará. Típicamente el algoritmo comienza en el vértice v.

Paso 2: Traverse un ciclo

Desde el vértice actual, siga cualquier borde no utilizado a un vecino. Siga avanzando a lo largo de los bordes no utilizados, marcando cada borde como usado, hasta que regrese al vértice inicial. Esto produce un ciclo C]. Si el ciclo contiene todos los bordes del gráfico, el algoritmo termina – tenemos un circuito eulerian.

Paso 3: Encontrar los vértices con los bordes no utilizados

Escanear el circuito actual para cualquier vértice u] que todavía tiene bordes no utilizados. Si no hay ninguno, el algoritmo está completo. De lo contrario, dejar u] sea un vértice.

Paso 4: Construye un nuevo ciclo de u

A partir de u], repetir el proceso de determinación del ciclo entre los bordes no utilizados. Esto crea un nuevo ciclo C′ que comienza y termina en u].

Paso 5: Incorpore el nuevo ciclo en el circuito principal

Insertar C′] en el circuito principal en la posición de u. El paseo resultante sigue siendo un circuito (cerrado) y cubre todos los bordes visitados hasta ahora. Volver al Paso 3.

Debido a que cada vértice tiene un grado, el proceso nunca se atasca: cuando entras en un vértice, siempre habrá un borde no utilizado para salir, hasta que el grado de vértice se convierte en cero. El algoritmo garantiza que el paseo final incluye cada borde exactamente una vez.

Ejemplo: Construyendo un circuito eulerio

¿Considera un gráfico no dirigido con vértices A, B, C, D y E. Edges: AB, AC, AD, BC, BD, CE, D. (Este es un pequeño gráfico donde cada vértice tiene grado: deg(A)=3, deg(B)=3, deg(C)=2, deg(D)=3, deg(E)=1?

Algoritmo de Hierholzer de ejecución:

  • Comience en el vértice 1. Siga los bordes: 1‐2 (uso), 2‐3 (uso), ahora en 3. Elija el borde no utilizado 3‐4 (uso), 4‐5 (uso), 5‐3 (uso). Regresar a 3, pero el punto de partida inicial fue 1. No hemos vuelto a 1 todavía. En realidad el algoritmo necesita formar un ciclo que regrese al vértice izquierdo. Vamos a seguir correctamente: 1-0, 2-0, ahora, 2-0,
  • Scan C1: vertex 3 tiene bordes sin usar. Comience nuevo ciclo a las 3: 3-4, 4‐5, 5‐3. Ciclo C2 = 3‐4‐5‐3.
  • Combina C2 en C1 en el vértice 3: circuito resultante: 1‐2‐3‐4‐5‐3‐1. Todos los bordes utilizados, el circuito es Eulerian.

Este ejemplo ilustra la elegancia del algoritmo: se descubren ciclos y se combinan sin problemas.

Complejidad y Consideraciones de la Aplicación

El algoritmo de la FLT [FLT] [FLT] ] ] [FLT: [FLT]]]] [FLT]]] [FLT]]]] [FLT]]]

Para gráficos dirigidos, el mismo enfoque funciona siempre que el gráfico es Eulerian (en grado equivale a un grado fuera de acuerdo en cada vértice). El requisito del algoritmo de incluso grados se traduce también en el caso indicado.

Comparación con el Algoritmo de Fleury

Otro algoritmo conocido para encontrar circuitos eurísticos es el Algorithm de Fleury, que funciona a través de los bordes de traversación, asegurando que el gráfico restante se mantiene conectado (es decir, evitando puentes). El algoritmo de Fleury se ejecuta en O]

Aplicaciones del Algoritmo de Hierholzer

La capacidad de encontrar un circuito eulerio de manera eficiente tiene muchos usos del mundo real.

Problema del cartero chino

En el problema del Postman chino (inspección de ruta), el objetivo es encontrar el paseo cerrado más corto que cubre cada borde al menos una vez. Para gráficos que ya son Eulerian, la solución es simplemente el circuito eulerian. El algoritmo de Hierholzer proporciona ese circuito. Para gráficos no eulerios, el problema reduce a los bordes duplicados para hacer todos los grados, y luego aplicar Hierholzer’s.

Red Routing y Diseño de Circuito

Los circuitos eulerios se utilizan para diseñar rutas eficientes para barredores callejeros, recolección de basura y transmisión de paquetes de red donde cada enlace debe ser atravesado exactamente una vez. El algoritmo ayuda a minimizar los viajes redundantes.

DNA Fragment Assembly

En biología computacional, el enfoque de grafito de Bruijn para el montaje del genoma se basa en la búsqueda de caminos o circuitos eulerios a través de gráficos k‐mer. El algoritmo de Hierholzer es un componente básico de muchos montadores, permitiendo la reconstrucción de secuencias contiguas de lecturas cortas.

Gráficos de computación y generación de laberintos

Los senderos eulerios se utilizan para generar laberintos y en ciertos algoritmos de dibujo de gráficos donde los bordes deben ser dibujados sin levantar el bolígrafo. El algoritmo proporciona una construcción óptima.

Pruebas integradas de circuito

En el diseño de Integración de Escalas Muy Grandes (VLSI), probar todas las conexiones se puede modelar como un problema de circuito eulerio, minimizando el movimiento de ester.

Lectura y recursos externos

Para profundizar su comprensión de los circuitos eulerios y el algoritmo de Hierholzer, se recomiendan los siguientes recursos:

Conclusión

Algoritmo de Hierholzer sigue siendo una piedra angular de traversal de gráficos para su elegancia, velocidad y amplia aplicabilidad. Al descomponer el problema en encontrar y fusionar ciclos, proporciona una solución directa y óptima para construir circuitos euslerios. Ya sea que usted está diseñando rutas de red, ensamblando genomas o resolver puzzles, entender este algoritmo le equipa con una poderosa herramienta de manejo de gráficos favorito