Loading [MathJax]/extensions/TeX/mathchoice.js

5 votos

La generación de un circuito Euleriano de un grafo completo con constante de la memoria

(esta pregunta es acerca de tratar de utilizar algunos combinatoria para simplificar un algoritmo y ahorrar memoria)
Deje K2n+1 ser un grafo no dirigido en 2n+1 vértices. Me gustaría generar un circuito Euleriano de este gráfico (visita cada arista exactamente una vez).

Una solución es ejecutar el DFS basado en el algoritmo que se puede encontrar un circuito Euleriano en cualquier grafo Euleriano (un gráfico con todos los vértices, incluso de grado).

Sin embargo, tengo la esperanza de que es posible utilizar la agradable estructura de K2n+1 para evitar la construcción de la gráfica y la ejecución del algoritmo. Hay un camino para la construcción de uno de estos circuitos en O(n) tiempo con O(1) de la memoria?

Motivación: La motivación detrás de esto es un algoritmo que recibe una lista L y necesidades para calcular el B(A(x),A(y)) por cada desordenada par x,y de los distintos elementos de L (sólo estoy considerando la posibilidad de pares no ordenados desde B(u,w)=B(w,u)). El resultado de la operación es muy grande y tarda casi la mitad de la memoria disponible. Ejemplo de un circuito que me permita minimizar el número de llamadas de operación A.

Nota: Este es un tipo de "espontáneos" de la versión de la generación de la secuencia de Bruijn. Una vez escuché que es posible generar un de-secuencia de Bruijn con constante de la memoria, pero no sé cómo hacerlo.

7voto

Alex Bolotov Puntos 249

Sí es posible.

El número de los vértices 1,2,2n+1.

Considerar la secuencia de 1,2n,2,2n1,3,2n2,,n,n+1, ignorar 2n+1 en el momento.

Esto le da un camino hamiltoniano en K2n.

Ahora agregue 1 a cada vértice \mod 2n, para obtener el 2,1,3,2n,4, 2n-1 \dots, n+1, n+2. Esto puede ser visualizado como la escritura de los números 1,2, \dots, 2n en un círculo y la rotación de la ruta. (ver figura a continuación).

Repita este proceso de adición de 1, n veces. Esto proporciona un conjunto de n borde discontinuo caminos hamiltonianos en K_{2n}. (Podemos demostrar que la demostración de que (wlog) 1 es la primera adyacentes a2n,2,3,4,5, etc)

Para cada una de estas rutas, agregar 2n+1 al final y unirse de nuevo a la primer vértice de la ruta.

Esto le da una Euler tour de K_{2n+1}, que comienza y termina en el vértice 2n+1.

Este puede ser calculado en la memoria constante.

Tenga en cuenta que esto sigue básicamente el (clásico/folklore) de la construcción que K_{2n+1} puede ser descompuesto en n borde discontinuo ciclos Hamiltonianos. Ver esto por ejemplo, la Moderna Teoría de grafos, página 16.

En caso de que el libro no es accesible, aquí está una foto de la parte pertinente de esa página:

alt text

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