Convertir un dígrafo en un gráfico no dirigido de forma reversible

10

Estoy buscando un algoritmo para convertir un dígrafo (gráfico dirigido) en un gráfico no dirigido de manera reversible, es decir, el dígrafo debe ser reconstruible si se nos da el gráfico no dirigido. Entiendo que esto vendrá a expensas del gráfico no dirigido que tiene más vértices, pero no me importa.

¿Se sabe cómo hacer esto o se puede sugerir alguna referencia? Gracias por adelantado.


Actualización: Respecto a la respuesta de AdrianN a continuación. Puede ser un buen punto de partida, pero no creo que funcione en su forma actual. Aquí hay una imagen de por qué creo que no: ingrese la descripción de la imagen aquí


Actualización después del comentario de DW: considero que los vértices de los gráficos no están etiquetados. Si una solución implica etiquetar los vértices (como lo hace AdrianN), entonces debería dar el mismo gráfico (isomorfo) no dirigido, sin importar cómo se realice el etiquetado. Mi definición de "isomorfo" para gráficos con vértices etiquetados es que hay una permutación del etiquetado que relaciona los dos gráficos, pero no estoy seguro de la definición exacta de gráficos sin etiquetar ...

Heterótica
fuente
1
Creo que esta pregunta es demasiado amplia. ¿Cuáles son tus limitaciones?
adrianN
Realmente no puedo pensar en ninguna restricción por ahora. Supongo que cualquier forma de codificar la información de un gráfico dirigido en uno no dirigido lo haría, siempre que sea reversible. Supongo que lo que tengo en mente es el tipo más simple de gráficos no dirigidos, por lo que estoy buscando una solución que no use colores ni para los vértices ni para los bordes.
Heterótico
Creo que debería especificar en la pregunta qué quiere decir con "el mismo gráfico". ¿Quiere decir que los vértices están etiquetados o que los vértices no están etiquetados? ¿Quiere decir que es lo mismo para ambos, o que las dos gráficas son isomorfas? Parece que te refieres a lo último. ¿Estás seguro de que es un requisito en tu solicitud? Si se le permite retener etiquetas, el problema se vuelve más fácil y la respuesta de AdrianN funciona (porque el borde ( 3 , 4 ) no es el mismo que el borde ( 1 ' , 2 ' ) ). (V,E)(3,4)(1,2)
DW
2
Por favor, incorporar las actualizaciones en la cuestión. En cualquier momento, las publicaciones SE deben ser legibles de arriba a abajo sin preguntarse sobre el historial; eso se archiva por separado.
Raphael

Respuestas:

6

e=(x,y)v1e,,v5eexv1ev1ev2ev1ev3ev3ev4ev4ev5ev3ey

v5ee=(x,y)v4ev4ev3ev3ev1ev2ev1ev2ev1exv3ey(x,y)v1e,,v5e

David Richerby
fuente
7

La respuesta de David Richerby (que fue aceptada) es buena.

Seguí sus instrucciones en un ejemplo simple de dígrafo y espero que ayude a alguien.

dígrafo a <-> b, c -> a, b -> c

(Hubiera publicado esto como un comentario sobre la respuesta de David, pero no tengo los puntos de reputación requeridos).

Guillermo
fuente
1
La representación gráfica es una gran mejora sobre la respuesta original. Gracias por publicarlo como respuesta, no como comentario.
OrangeSherbet
1
Siempre me siento abrumado cuando veo una explicación formal o una fórmula en un trabajo de matemáticas. Solo tengo que superar esa ansiedad y mirar cada oración lentamente, buscando cosas que no conozco a medida que avanzo. Luego garabateo un ejemplo como este para asegurarme de que entiendo. Al final, siempre estoy atónito por lo simple que fue todo un tiempo, y algo horrorizado por el esfuerzo que me llevó comprenderlo. Se siente como si fuera de un planeta diferente a veces. Me alegra poder ayudarte a entenderlo más rápido. Una vez que lo ves, es fácil.
William
2

DG

  1. D
  2. GGD
  3. Para cada borde , en agregue el borde a si , de lo contrario agregue el borde auvDGu<vG
  4. G es la unión disjunta de yGG

Al hacer la unión disjunta, uno debe tener cuidado para que sea reversible.

Ejemplo

adrianN
fuente
Este es un buen intento y está en la línea que tenía en mente para una respuesta, pero no funciona porque lo inverso no es único. Por ejemplo, el gráfico O <-> OOO se convertirá en el gráfico OO OO OO OO, pero este último también podría provenir del gráfico dirigido O-> O O-> OOO, por lo que el proceso no es reversible.
Heterótico
Agregué una foto para hacerlo más claro.
adrianN
-1

¿Qué pasa con la función de identidad? Es decir, cada dígrafo puede verse como un gráfico bipartito no dirigido con particiones de igual tamaño y viceversa.

muede
fuente
Supongo que quiere codificar el dígrafo con el gráfico . Eso no funciona porque no puede hacer frente a los bordes bidireccionales y, si es el resultado de revertir todos los bordes en , entonces y tienen codificaciones isomorfas pero no son necesariamente isomorfas en sí mismas. G=(V,E)(V×{0,1},{(u,0,v,1)(u,v)E})GGGG
David Richerby
-1

Aquí hay una puñalada en esto:

Reemplace la información de dirección con vértices adicionales en el gráfico no dirigido. En otras palabras, use los vértices adicionales en el gráfico no dirigido para "codificar" la información de dirección. Por ejemplo, para cada vértice dirigido con al menos un borde, agregue un número de vértices no dirigidos igual a 1 + el número de bordes "entrantes". Los vértices con bordes cero permanecen sin cambios.

Para realizar la dirección inversa, cree un vértice dirigido para cada vértice que tenga 0 o más de 1 borde. (Los vértices con exactamente un borde son los vértices de "codificación de dirección"). Cada borde que conecta otro vértice de bordes múltiples es una conexión en el gráfico dirigido. Ahora es la parte difícil para la que no puedo explicar un algoritmo (pero creo que existe): debe deducir la dirección de las flechas dado solo el número de flechas entrantes para cada vértice.

Creo que la parte difícil es algo así como jugar al buscaminas :-) Averigua dónde se les da a las bombas (bordes entrantes) el número de bombas adyacentes para cada cuadrado (vértice).

Aaron
fuente
¿Qué es un "vértice dirigido"? En cualquier caso, esto no es únicamente decodificable. Supongamos que un vértice tiene un montón de vértices de grado 1 unidos a él, junto con un montón de vértices de otros grados. ¿Cómo diría cuántos de ellos representan aristas entrantes de vértices de grado 1 y cuántos codifican el grado de entrada de ? En cualquier caso, resolver Buscaminas es NP-difícil, la solución no siempre es única y no es obvio que se pueda resolver cuando los cuadrados no están necesariamente dispuestos en una buena cuadrícula. xx
David Richerby
Por "vértice dirigido", me refiero a un vértice en el gráfico dirigido (en oposición al gráfico no dirigido equivalente). Puede distinguir los bordes "reales" de los bordes de "codificación de grado" porque solo los vértices de "codificación de grado" tienen un solo borde. Esa fue la razón del "1 +" en mi descripción. Voy a tomar su palabra sobre la "parte difícil" dulce de las minas. No sé si es exactamente equivalente al buscaminas, pero puedo creer que tal vez solo pateé el cubo en el camino :-)
Aaron
Además, no entendí bien su solución cuando la leí por primera vez, pero ahora veo cómo funciona. ¡Inteligente!
Aaron
Sea un vértice en el gráfico original que no tiene bordes entrantes y exactamente un borde saliente. En el gráfico codificado, aparece como un vértice con exactamente un borde saliendo de él. ¿Cómo distingue ese tipo de vértice de grado 1 del tipo de vértice de grado 1 que codifica en grado? xx
David Richerby
Creo que ahora es "discutible", pero mi idea era tomar el borde dirigido y convertirlo a y . Entonces tendrá dos aristas, no 1. Cualquier vértice que tenga solo 1 arista es codificación en grados. tiene dos vértices de codificación de grado, lo que indica un grado de 1. En este simple ejemplo, la decodificación es fácil porque sabemos que solo hay dos vértices y tienen un grado de 0 y 1, respectivamente, por lo tanto( x 0 , x ) , ( x , y ) , ( y , y 0 ) ( y , y 1 ) x y ( x , y )(x,y)(x0,x),(x,y),(y,y0)(y,y1)xy(x,y)
Aaron