Como vimos en esta pregunta , las declaraciones lógicas complejas se pueden expresar en términos de los conectivos simples del Buscaminas generalizado. Sin embargo, el buscaminas generalizado todavía tiene redundancias.
Para evitar estas redundancias, definimos un nuevo juego llamado "Generalized-1 Minesweeper".
Generalized-1 Minesweeper es una versión que Minesweeper jugó en un gráfico arbitrario. El gráfico tiene dos tipos de vértice, un "indicador" o un "valor". Un valor puede estar activado o desactivado (una mina o un fracaso), sin embargo, su estado es desconocido para el jugador. Un indicador indica que exactamente una de las celdas adyacentes está encendida (una mina). Los indicadores no cuentan como minas en sí.
Por ejemplo, la siguiente tabla para el Buscaminas generalizado nos dice que las celdas A y B son minas o ninguna de ellas son minas.
(En el diagrama, los indicadores están marcados en gris mientras que los valores son blancos)
A diferencia del dragaminas normal donde hace clic en los valores que están apagados para revelar indicadores, no existe tal mecánica en el Buscaminas generalizado. Un jugador simplemente determina qué estados del gráfico pueden satisfacer sus indicadores.
Tu objetivo es hacer un 2
Buscaminas generalizado-1. Construirá una estructura en el Buscaminas generalizado-1 de modo que haya 8 celdas específicas para las que todas las configuraciones posibles de valores tengan exactamente dos celdas. Esto significa que se comporta exactamente como lo 2
hace en el buscaminas tradicional. Cuando escribe su solución, no debe tener en cuenta valores específicos para las celdas de valores. (En respuesta a la pregunta de H.PWiz, se permite que algunas celdas de valor sean deducibles del estado)
Puntuación
Sus respuestas se puntuarán por el número de vértices en el gráfico final menos 8 (para las 8 entradas) con una puntuación más baja mejor. Si dos respuestas empatan en esta métrica, el separador será el número de bordes.
fuente
Respuestas:
42 vértices, 56 bordes
Cada variable es un vértice de valor, y cada cuadro es un vértice indicador con bordes a las variables dentro de él. Las entradas son x 1 , ..., x 8 . Por ejemplo, he aquí una solución con minas en x 3 y x 5 , con minas resaltados en verde.
Las restricciones horizontales aseguran que exactamente una de las a 's y exactamente una de las b ' s tenga una mina. En esas dos columnas, r no contiene una mina, pero sí en las otras seis columnas. (Tenga en cuenta que una y b no se puede tener tanto una mina en la misma columna.) Cada entrada x está enfrente de la r en su columna, de modo exactamente dos entradas tienen minas según se desee.
Para las
k
entradas, esto usa5k+2
vértices (3k
valor e2k+2
indicador) y7k
aristas. Aquí, lask=8
entradas dan 42 vértices y 56 aristas.fuente
50 vértices, 89 bordes
Basado en la puerta lógica de la respuesta de H.PWiz.
Cada uno
*
está activado cuando las dos entradas respectivas están activadas. Para manejar el caso de una sola entrada, se utilizan los valores intermediosa=A&!B
etc. Conexión los tres valoresa
,b
yA&B
a la entrada de un nivel secundario de puertas nos da una entrada eficaz deA|B
(esto ahorra vértices más de!(!A&!B)
):Estos
*
s están activados si dos de sus entradas (correspondientes a cuatro de las entradas originales) están activadas, excepto en el caso de los pares ya cubiertos anteriormente. Mientras tanto, podemos conectar los#*#
nodos a una puerta final. Por lo tanto, tenemos los siguientes resultados:Estos cubren los 28 casos de dos entradas. Entonces queda por conectar un indicador final a estos siete valores. Si hay menos de dos entradas encendidas, ninguna de ellas estará encendida, por lo que el indicador estará apagado. Si hay más de dos entradas encendidas, más de una de ellas estará encendida y el indicador estará apagado.
fuente
ACE
,BDF
,ADG
...(a&b)+((a|b)&(c|d))+(c&d)+((a|b|c|d)&(e|f|g|h))+(e&f)+((e|f)&(g|h))+(g&h)==1
, ¿te parece correcto?197 vértices, 308 bordes
Anoche se me ocurrió esta respuesta, pero no la publiqué porque era una puntuación muy alta. Sin embargo, dado que supera mucho a la otra respuesta , pensé que debería publicarla.
Utilizo la siguiente configuración en los 28 pares de celdas de valores en
ABCDEFGH
?
representa una celda de valor que no está enABCDEFGH
. Aquí, cuando?*
está ENCENDIDO ,A
yB
ambos están encendidos. De lo contrario,A
yB
podría estar en cualquier otra configuración.Conecto los 28
?*
s a una celda indicadora. Esto significa que solo un parABCDEFGH
tendrá dos ON . Lo cual es suficiente para exigir que exactamente dos de mis celdas de salida estén ENCENDIDASfuente
?
s corresponde a uno de los 4 estados deA B
.354 nodos, 428 bordes
Solo para demostrar que es posible. Mejoraré esto más tarde con algo de caché.
(con suerte no hay error de código)
Traté de escribir un programa de Mathematica aquí para verificar la validez del programa, pero probablemente no funcione porque hay demasiadas variables.
El resultado fue generado por un programa de computadora: ¡ Pruébelo en línea!
Yo uso una puerta que se ve así:
donde
(#)
están los indicadores 1,(a)
..(f)
son valores.Luego,
Además, esta puerta
da
. Use esos dos tipos de puertas para construir cualquier expresión.
Por supuesto, este es para afirmar que
(a)
debe ser cierto:fuente
81 nodos, 108 bordes
Usando 13 nodos y 14 aristas, creamos la siguiente compuerta Adder (C (arry) = X AND Y, S (um) = X XOR Y):
Use cuatro sumadores M1, M2, M3, M4 para agregar A + B, C + D, E + F, G + H, respectivamente, con el acarreo resultante C1, C2, C3, C4 y la suma S1, S2, S3, S4.
Use dos sumadores M5, M6 para agregar S1 + S2, S3 + S4, con el resultado resultante C5, C6 y suma S5, S6.
Use un Adder M7 para agregar S5 + S6 para obtener C7 y S7.
Ahora conecte todos los transportes a un solo nodo indicador como el siguiente:
y obligar a S7 (el módulo 2 de la suma de 8 valores) a ser 0 por este circuito:
Sostengo que este circuito obliga exactamente a que dos valores
ABCDEFGH
estén ENCENDIDOS, ya que solo puede ser un número par (ya que S7 es 0), y no puede haber más de 3 valores ENCENDIDOS (ya que solo uno de C1-C7 está ENCENDIDO).fuente