2011-03-28 13 views
6

Dadas algunas entradas, que consisten en un símbolo izquierdo y derecho, cadenas de salida que vinculan las entradas.Algoritmo de coincidencia de Dominios

Imagine que las entradas son dominós que no pueden voltearse horizontalmente y deben encadenarse entre sí. Se prefiere crear cadenas circulares grandes (ignorar si no se puede hacer físicamente con dominós reales) sobre cadenas circulares pequeñas que se prefieren sobre cadenas donde el inicio y el final no coinciden.

Las salidas con más cadenas circulares (independientemente de la longitud o la longitud de la cadena) son lo que estamos buscando. Por ejemplo, una salida de 3 cadenas circulares es mejor que 1 cadena grande y un dominó individual sobrante.

¿Puede alguien señalarme en la dirección correcta? ¿A qué grupo de problemas pertenece esto y existen algoritmos existentes para resolver esto?

Ejemplos (salidas pueden ser incorrectos!):

in[0]=(A,B) 
in[1]=(B,C) 
in[2]=(C,A) 
out[0]=(0,1,2) 

in[0]=(A,B) 
in[1]=(B,A) 
in[2]=(C,D) 
in[3]=(D,C) 
out[0]=(0,1) 
out[1]=(2,3) 

in[0]=(A,B) 
in[1]=(B,A) 
in[2]=(C,D) 
in[3]=(E,F) 
out[0]=(0,1) 
out[1]=(2) 
out[2]=(3) 

in[0]=(A,B) 
in[1]=(B,A) 
in[2]=(C,D) 
in[3]=(D,E) 
out[0]=(0,1) 
out[1]=(2,3) 

in[0]=(A,B) 
in[1]=(B,C) 
in[2]=(C,D) 
out[0]=(0,1,2) 
+0

@Lieven Gracias por la corrección. – zaf

+0

no lo menciones, pero preferiría saber la respuesta. Estaba pensando en términos de gráficos, pero es un área donde mis habilidades son muy deficientes. Tratando de mejorarme leyendo http://www.amazon.co.uk/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ref=sr_1_1?s=books&ie=UTF8&qid=1301312087&sr=1-1. Lo recomiendo encarecidamente si usted, como yo, no tiene un conocimiento matemático suficientemente fuerte. –

+1

@Lieven ¡Hola! Tengo un fuerte bagaje matemático. Simplemente no he jugado suficientes dominós :) – zaf

Respuesta

1

El problema ya que ahora no es tan claramente definido como podría ser - ¿cómo es exactamente son calificados de soluciones? ¿Cuál es el criterio más importante? ¿Es la longitud de la cadena más larga? ¿Hay una penalización por crear cadenas de longitud uno?

A menudo es útil en tales problemas visualizar la estructura como un gráfico, por ejemplo, asignar un vértice (V [i]) a cada mosaico. Entonces para cada i, j crea un borde entre los vértices V [i], V [j] si puedes colocar V [i] a la izquierda de V [j] en una cadena (entonces si V [i] corresponde a (X) , A) entonces V [j] corresponde a (A, Y) para algunos X, Y, A).

En dicho gráfico, las cadenas son trayectorias, los ciclos son cadenas cerradas ("circulares") y el problema se ha reducido a la búsqueda de algún ciclo y/o trazado de camino para un gráfico. Este tipo de problemas a menudo pueden reducirse a problemas de coincidencia o * flujo (flujo máximo, flujo máximo-máximo-máximo, flujo mínimo-máximo-máximo o lo que sea).

Pero antes de que pueda reducir aún más, debe establecer las reglas precisas según las cuales se determina que una solución es "mejor" que otra.

+0

He agregado un poco más información. El criterio más importante es minimizar los restos de dominó individuales. No está totalmente claro lo que estás sugiriendo, pero buscaré problemas de flujo para ver si hay alguna pista. Gracias. – zaf

0

Es fácil comprobar si existe una cadena circular que consta de todos los dominós. Lo primero que necesita hacer el siguiente gráfico dirigido G:

  • nodos de G son símbolos en las fichas de dominó (A, B, C ..) en su ejemplo,
  • Para cada dominó (A, B) se poner un borde dirigido de a a B.

existe una cadena circular que consiste en todas las fichas de dominó si y sólo si existe un Eulerian cycle en G. para comprobar si existe ciclo euleriano en G es suficiente para comprobar el tiempo cada nodo tiene incluso grado

+0

Gracias. Parece que tengo más cosas para leer. – zaf

0

No estoy seguro de si este es realmente el caso, pero a juzgar por sus ejemplos, su problema es similar al problema de descomponer una permutación en un producto de ciclos disjuntos. Cada mosaico (X, Y) puede verse como P (X) = Y para una permutación P. Si esto está de acuerdo con sus suposiciones, la buena (o mala) noticia es que dicha descomposición es única (hasta la orden del ciclo) y es muy fácil de encontrar Básicamente, empiezas con cualquier ficha, encuentras una ficha correspondiente y, por otro lado, sigues esto hasta que no se pueda encontrar ninguna coincidencia. Luego pasas al siguiente punto sin tocar. Si eso no es lo que está buscando, la solución más general basada en gráficos por t.dubrownik parece ser el camino a seguir.

+0

Gracias por la idea simple y el plomo de permutación. – zaf

4

Dominios que no se pueden voltear horizontalmente == gráficos dirigidos.

Poner los dominós uno después del otro se llama un "camino", si se trata de un camino cerrado, es un circuito.

Un circuito que incluye todos los vértices de un gráfico es un circuito de Hamilton.

Su problema en términos de teoría de grafos es: cómo dividir (descomponer) su gráfica en un número mínimo de subgrafos que tienen circuitos hamiltonianos. (a.k., gráficos de Hamilton)

+0

Gracias por el consejo. Saldré echa un vistazo a las cosas hamiltonianas. – zaf

Cuestiones relacionadas