Obtenez deux d'un seul

12

Comme nous l'avons vu dans cette question , des déclarations logiques complexes peuvent être exprimées en termes de connecteurs simples de démineur généralisé. Cependant, le dragueur de mines généralisé a toujours des redondances.

Afin d'éviter ces redondances, nous définissons un nouveau jeu appelé "Démineur Généralisé-1".

Démineur généralisé-1 est une version Démineur jouée sur un graphique arbitraire. Le graphique a deux types de sommet, un "indicateur" ou une "valeur". Une valeur peut être activée ou désactivée (une mine ou un raté) mais son état est inconnu du joueur. Un indicateur indique que exactement une des cellules adjacentes est allumée (une mine). Les indicateurs ne comptent pas comme des mines eux-mêmes.

Par exemple, le tableau suivant pour le dragueur de mines généralisé nous dit que les cellules A et B sont soit les deux mines, soit aucune d'entre elles n'est une mine.

Jeu simple

(Dans le diagramme, les indicateurs sont marqués en gris tandis que les valeurs sont en blanc)

Contrairement au dragueur de mines normal où vous cliquez sur des valeurs qui sont désactivées pour révéler des indicateurs, il n'y a pas un tel mécanicien dans le dragueur de mines généralisé. Un joueur détermine simplement pour quels états du graphique peut satisfaire ses indicateurs.

Votre objectif est de faire un 2démineur en Généralisé-1. Vous allez construire une structure dans Démineur Généralisé-1 de telle sorte qu'il y ait 8 cellules spécifiques pour lesquelles toutes les configurations de valeurs possibles ont exactement deux cellules. Cela signifie qu'il se comporte exactement comme le 2fait un dragueur de mines traditionnel. Lorsque vous écrivez votre solution, vous ne devez pas avoir de valeurs spécifiques à l'esprit pour les cellules de valeur. (En réponse à la question de H.PWiz, il est permis que certaines cellules de valeur soient déductibles de l'état)

Notation

Vos réponses seront notées par le nombre de sommets dans le graphique final moins 8 (pour les 8 entrées), un score inférieur étant meilleur. Si deux réponses sont égales dans cette métrique, le briseur d'égalité sera le nombre d'arêtes.

Ad Hoc Garf Hunter
la source
Une arête connecte-t-elle toujours un sommet indicateur et un sommet valeur?
2018
@xnor Afin de maximiser votre score, ils le devraient, mais je ne pense pas que je doive en faire une règle. Les arêtes qui ne connectent pas de valeurs à des indicateurs ne modifient pas le comportement du graphique.
Ad Hoc Garf Hunter
Lorsque 6 est soustrait du score, quelles sont les 6 entrées? N'y a-t-il pas 8 cellules?
xnor
@xnor Désolé devrait être 8. Fixé maintenant.
Ad Hoc Garf Hunter
Qu'entendez-vous par "structure ... de telle sorte qu'il existe 8 cellules spécifiques sur lesquelles les seules configurations de valeurs possibles ont exactement deux cellules". Les seules configurations possibles sont-elles supposées n'avoir que deux mines?
dylnan

Réponses:

7

42 sommets, 56 arêtes

Réseau minier

Chaque variable est un sommet de valeur et chaque case est un sommet indicateur avec des bords pour les variables à l'intérieur. Les entrées sont x 1 , ..., x 8 . Par exemple, voici une solution avec des mines à x 3 et x 5 , avec des mines surlignées en vert.

Solution de réseau minier

Les contraintes horizontales garantissent que exactement l' un des a et exactement l'un des b a une mine. Dans ces deux colonnes, r ne détient pas de mine, mais dans les six autres colonnes. (Notez que a et b ne peuvent pas avoir tous les deux une mine dans la même colonne.) Chaque entrée x est opposée au r dans sa colonne, donc exactement deux entrées ont des mines comme vous le souhaitez.

Pour les kentrées, cela utilise des 5k+2sommets ( 3kvaleur et 2k+2indicateur) et des 7karêtes. Ici, les k=8entrées donnent 42 sommets et 56 arêtes.

xnor
la source
3

50 sommets, 89 bords

Basé sur la porte logique de la réponse de H.PWiz.

  A&B      C&D      E&F      G&H
   |        |        |        |
b--1--a  d--1--c  f--1--e  h--1--g
|  |  |  |  |  |  |  |  |  |  |  |
1--?--1  1--?--1  1--?--1  1--?--1
|     |  |     |  |     |  |     |
A     B  C     D  E     F  G     H

Chacun *est activé lorsque les deux entrées respectives sont activées. Pour traiter le cas d'une seule entrée, nous utilisons les valeurs intermédiaires , a=A&!Betc. Connexion trois valeurs a, bet A&Bà l'entrée d'un niveau secondaire de portes nous donne une entrée efficace de A|B(ce qui permet d' économiser des sommets plus !(!A&!B)):

      *              *
      |              |
   #--1--#        #--1--#
   |  |  |        |  |  |
   1--?--1        1--?--1
  |||   |||      |||   |||
  A|B   C|D      E|F   G|H

Ces *s sont activés si deux de leurs entrées (correspondant à quatre des entrées d'origine) sont activées, sauf dans le cas des paires déjà couvertes ci-dessus. Pendant ce temps, nous pouvons connecter les #*#nœuds à une dernière porte. Nous avons donc les résultats suivants:

A&B
C&D
E&F
G&H
(A|B)&(C|D)         [4 cases]
(E|F)&(G|H)         [4 cases]
(A|B|C|D)&(E|F|G|H) [16 cases]

Celles-ci couvrent les 28 cas de deux entrées. Il reste alors à connecter un indicateur final à ces sept valeurs. Si moins de deux entrées sont activées, aucune ne sera activée, donc l'indicateur sera éteint. Si plus de deux entrées sont activées, alors plusieurs d'entre elles seront activées et l'indicateur sera éteint.

Neil
la source
Ah, j'avais une idée similaire, mais j'ai fini par en créer une version plus compliquée. Bon travail!
justhalf
Je ne suis pas convaincu qu'il y ait 43 sommets. Vous montrez clairement 42, donc vous dites que vous n'avez besoin que d'un seul pour tout connecter?
H.PWiz
En fait, si je l' ai dessiné correctement le graphique que vous décrivez, je pense qu'il permet des Etats comme ACE, BDF, ADG...
H.PWiz
@ H.PWiz Je vois ce que tu veux dire ... Je pense que je peux peut-être résoudre cela avec des bords supplémentaires pour donner l'expression (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, cela vous semble-t-il juste?
Neil
Peut-être, même si pour moi cette expression semble résoudre complètement le problème. Et je n'ai aucune idée des bords que vous pouvez ajouter pour obtenir cela ...
H.PWiz
2

197 sommets, 308 arêtes

J'ai trouvé cette réponse hier soir, mais j'ai refusé de la publier car c'était un score si élevé. Cependant, comme il bat tellement l' autre réponse , j'ai pensé que je devrais le poster.

J'utilise la configuration suivante sur les 28 paires de cellules de valeurs dans ABCDEFGH

   ?*
   |
?--1--?
|  |  |
1--?--1
|     |
A     B

?représente une cellule de valeur absente ABCDEFGH. Ici, quand ?*est allumé , Aet Bsont tous les deux allumés. Sinon, Aet Bpourrait être dans n'importe quelle autre configuration.

Je connecte tous les 28 ?*s à une cellule d'indicateur. Cela signifie qu'une seule paire en ABCDEFGHaura deux ON . Ce qui est suffisant pour appliquer exactement deux de mes cellules de sortie sera ON

H.PWiz
la source
1
Notez que dans la porte, vous avez chacun des 4 ?s correspond à l'un des 4 états de A B.
Ad Hoc Garf Hunter
@HeebyJeebyMan Intéressant, je n'y avais pas pensé. Je viens de trouver cette porte par chance
H.PWiz
1

354 nœuds, 428 arêtes

Juste pour prouver que c'est possible. Je vais améliorer cela plus tard avec un peu de mise en cache.

(j'espère pas d'erreur de code)

J'ai essayé d'écrire un programme Mathematica ici pour vérifier la validité du programme, mais cela ne fonctionne probablement pas car il y a trop de variables.

Le résultat a été généré par un programme informatique: Essayez-le en ligne!


J'utilise une porte qui ressemble à ceci:


               (f)
                |
                |
               (#)
              /   \
             /     \
           (d)     (e)
          /           \
         /             \
       (#) --- (c) --- (#)
     .'                  '.
   .'                      '.
(a)                          (b)

(#)sont 1-indicateurs, (a).. (f)sont des valeurs.

Alors,


c = (not a) and (not b)
d = (not a) and      b
e =      a  and (not b)
f =      a  xnor     b

De plus, cette porte


(a) ----- (#) ----- (b)

donne


b = not a

. Utilisez ces deux types de portes que vous pouvez créer toutes les expressions.

Bien sûr, celui-ci est pour affirmer que cela (a)doit être vrai:


(a) ----- (#)
user202729
la source
1

81 nœuds, 108 bords

En utilisant 13 nœuds et 14 arêtes, nous créons la porte Adder suivante (C (arry) = X AND Y, S (um) = X XOR Y):

X - 1 --------------?
   | |
   ? - 1 - S - 1 -? - 1
   | | |
   | C |
O - 1 --------------?

Utilisez quatre additionneurs M1, M2, M3, M4 pour ajouter A + B, C + D, E + F, G + H, respectivement, avec le report résultant C1, C2, C3, C4 et la somme S1, S2, S3, S4.

Utilisez deux additionneurs M5, M6 pour ajouter S1 + S2, S3 + S4, avec le report résultant C5, C6 et la somme S5, S6.

Utilisez un Adder M7 pour ajouter S5 + S6 pour obtenir C7 et S7.

Maintenant, connectez tous les portages à un seul nœud indicateur comme suit:

C1- |
C2- |
C3- |
C4 - + - 1
C5- |
C6- |
C7- |

et forcer S7 (le modulo 2 de somme de 8 valeurs) à 0 par ce circuit:

S7--1 -? - 1

Je soutiens que ce circuit force exactement deux valeurs ABCDEFGHà être ON, car il ne peut être qu'un nombre pair (puisque S7 est 0), et il ne peut pas y avoir plus de 3 valeurs ON (car une seule de C1-C7 est ON).

juste la moitié
la source