하나에서 둘 가져 오기


12

이 질문 에서 보았 듯이 복잡한 논리적 진술은 일반화 된 지뢰 찾기의 간단한 연결 측면에서 표현 될 수 있습니다. 그러나 일반화 된 지뢰 찾기에는 여전히 중복성이 있습니다.

이러한 중복을 피하기 위해 "Generalized-1 Minesweeper"라는 새로운 게임을 정의합니다.

일반화 -1 지뢰 찾기는 지뢰 찾기가 임의의 그래프에서 재생되는 버전입니다. 그래프에는 "지표"또는 "값"의 두 가지 유형의 정점이 있습니다. 값은 켜거나 끌 수 있지만 (광산 또는 멍청한) 상태는 플레이어에게 알려지지 않습니다. 표시기는 인접한 셀 중 정확히 하나가 켜져 있음을 나타냅니다. 지표는 광산 자체로 계산되지 않습니다.

예를 들어 Generalized Minesweeper의 다음 보드는 셀 A와 B가 모두 광산이거나 둘 다 광산이 아니라고 말합니다.

간단한 게임

(다이어그램에서 표시기는 회색으로 표시되고 값은 흰색으로 표시됩니다)

지표를 표시하기 위해 해제 된 값을 클릭하는 일반 지뢰 찾기와 달리 일반화 된 지뢰 찾기에는 이러한 기법이 없습니다. 플레이어는 단순히 그래프의 어떤 상태가 지표를 만족시킬 수 있는지 결정합니다.

당신의 목표는 2일반화 1 지뢰 찾기 를 만드는 것 입니다. 가능한 모든 값 구성에 정확히 두 개의 셀 이있는 8 개의 특정 셀이 있도록 Generalized-1 Minesweeper에서 구조를 빌드합니다 . 즉 2, 기존 지뢰 찾기에서 와 동일하게 작동합니다 . 솔루션을 작성할 때 가치 셀에 대한 특정 값을 염두에 두어서는 안됩니다. (H.PWiz의 질문에 대한 답변으로 일부 값 셀은 상태에서 추론 할 수 있습니다)

채점

답은 최종 그래프의 정점 수에서 8을 뺀 값 (8 개의 입력)으로 점수가 매겨지며 점수가 낮을수록 좋습니다. 두 메트릭이이 메트릭에 연결되면 타이 브레이커는 에지 수입니다.


가장자리가 항상 표시기 정점과 값 정점을 연결합니까?
xnor

@xnor 당신의 점수를 극대화하기 위해, 그러나 나는 그것을 규칙으로 만들 필요는 없다고 생각하지 않습니다. 값을 지표에 연결하지 않은 가장자리는 그래프의 동작을 변경하지 않습니다.
Ad Hoc Garf Hunter

6을 점수에서 빼면 6 개의 입력은 무엇입니까? 8 개의 세포가 없습니까?
xnor

@xnor 죄송합니다. 8로 수정되었습니다.
Ad Hoc Garf Hunter

"구조는 ... 8 개의 특정 셀이 있고 값의 가능한 구성에는 정확히 두 개의 셀이 있습니다"는 무엇을 의미합니까? 유일하게 가능한 구성에는 두 개의 광산 만 있어야합니까?
dylnan

답변:


7

정점 42 개, 가장자리 56 개

광산 네트워크

각 변수는 값 정점이고 각 상자는 변수 내부에 모서리가있는 표시기 정점입니다. 입력 값은 x 1 , ..., x 8 입니다. 예를 들어 다음은 광산이 x 3x 5 이고 광산이 녹색으로 강조 표시된 솔루션입니다 .

광산 네트워크 솔루션

수평 구속 조건은 정확히 ab 중 하나가 광산을 갖도록합니다 . 이 두 열에서 r 은 광산을 보유하지 않지만 다른 6 개의 열에는 있습니다. ( ab 모두 같은 열에 광산을 가질 수는 없습니다.) 각 입력 x 는 해당 열의 r 과 반대 이므로 정확히 두 개의 입력에 원하는대로 광산이 있습니다.

내용 k입력, 사용이 5k+2정점 ( 3k2k+2표시), 및 7k가장자리. 여기에서 k=8입력은 42 개의 정점과 56 개의 가장자리를 제공합니다.


3

꼭지점 50 개, 모서리 89 개

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

각각 *의 두 입력이 켜져있을 때 켜집니다. 단일 입력의 경우를 처리하기 위해, 우리는 중간 값을 사용하는 a=A&!B세 가지 값을 연결하는 등 a, bA&B게이트의 2 수준의 입력에 우리의 유효 입력을 제공합니다 A|B(이 이상의 정점을 저장 !(!A&!B))

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

*위에 이미 포함 된 쌍의 경우를 제외하고 입력 중 2 개 (원래 입력 중 4 개에 해당)가 켜져 있으면 이 s가 켜집니다. 한편, #*#노드를 최종 게이트에 연결할 수 있습니다 . 따라서 다음과 같은 결과가 나타납니다.

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]

여기에는 두 입력의 28 가지 경우가 모두 포함됩니다. 그런 다음 최종 지표를이 7 가지 값에 연결해야합니다. 두 개 미만의 입력이 켜져 있으면 아무 것도 켜지지 않으므로 표시기가 꺼집니다. 둘 이상의 입력이 켜져 있으면 둘 이상의 입력이 켜지고 표시기가 꺼집니다.


아, 비슷한 아이디어가 있었지만 결국 더 복잡한 버전을 만들었습니다. 잘 했어!
justhalf

나는 꼭짓점이 43 개라고 확신하지 못한다. 당신은 분명히 42를 보여 주므로, 당신은 그것을 모두 연결하기 위해 하나만 더 필요하다고 말하는가?
H.PWiz

내가 정확하게 당신이 설명하는 그래프를 그린 경우 사실, 나는 그것이 허용 생각 상태가 좋아 위해 ACE, BDF, ADG...
H.PWiz

@ H.PWiz 나는 당신이 무슨 뜻인지 알 겠어 ... 나는 아마도 그것을 표현하기 위해 여분의 가장자리로 해결할 수 있다고 생각 (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합니다.
Neil

어쩌면 그 표현은 문제를 완전히 해결하는 것처럼 보입니다. 그리고 당신이 그것을 얻기 위해 어떤 가장자리를 추가 할 수
있을지 모르겠습니다

2

197 꼭지점, 308 개의 모서리

어젯밤 에이 답변을 생각해 냈지만 점수가 높기 때문에 게시를 보류했습니다. 그러나 다른 답변 보다 훨씬 뛰어나 므로 게시해야합니다.

모든 28 쌍의 값 셀에 다음 설정을 사용합니다. ABCDEFGH

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

?에없는 값 셀을 나타냅니다 ABCDEFGH. 여기에, 때 ?*이다 ON , A그리고 B모두에 있습니다. 그렇지 않으면, AB기타 구성 될 수있다.

모든 28 ?*초를 하나의 표시기 셀에 연결합니다 . 이는 한 쌍의 입력에만 ABCDEFGH두 개의 ON 이 있음을 의미합니다 . 정확히 두 개의 출력 셀이 ON 이되도록하기에 충분합니다.


1
게이트에서 4 개의 각각은 ?4 개의 상태 중 하나에 해당합니다 A B.
Ad Hoc Garf Hunter

@HeebyJeebyMan 흥미로운, 나는 그것을 고려하지 않았다. 나는 방금 운에
의해이

1

354 개 노드, 428 개 에지

그것이 가능하다는 것을 증명하기 위해서입니다. 나중에 캐싱을 통해이를 개선 할 것입니다.

(코드 오류가 없습니다)

나는 티카 프로그램을 작성하려고 여기에 프로그램의 유효성을 확인하기 위해,하지만 너무 많은 변수가 있기 때문에 아마 작동하지 않습니다.

결과는 컴퓨터 프로그램에 의해 생성되었습니다 : 온라인으로 사용해보십시오!


다음과 같은 게이트를 사용합니다.


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

여기서 (#)1- 인디케이터는 (a).. (f)은 값입니다.

그때,


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

또한이 문


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

준다


b = not a

. 이 두 가지 유형의 게이트를 사용하여 식을 만들 수 있습니다.

물론 이것은 (a)사실이어야한다는 주장입니다 .


(a) ----- (#)

1

81 노드, 108 에지

13 개의 노드와 14 개의 에지를 사용하여 다음과 같은 가산기 게이트 (C (arry) = X AND Y, S (um) = X XOR Y)를 만듭니다.

X--1 --------------?
   | |
   β--1--S--1-?-1
   | | |
   | C |
Y--1 --------------?

4 개의 가산기 M1, M2, M3, M4를 사용하여 A + B, C + D, E + F, G + H를 각각 더하고 결과 캐리 C1, C2, C3, C4 및 합계 S1, S2, S3, S4.

2 개의 가산기 M5, M6을 사용하여 S1 + S2, S3 + S4를 추가하고 결과 캐리 C5, C6 및 합계 S5, S6을 추가하십시오.

하나의 Adder M7을 사용하여 S5 + S6을 추가하여 C7 및 S7을 얻습니다.

이제 모든 캐리를 다음과 같은 단일 표시기 노드에 연결하십시오.

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

이 회로에 의해 S7 (8 값의 합의 모듈로 2)을 0으로 만듭니다.

S7-1--1-?-1

나는이 회로 ABCDEFGH가 짝수 일 수 있기 때문에 (S7이 0이므로) 정확히 2 개의 값을 ON으로 강제 하고, 3 개 이상의 ON 값을 가질 수 없기 때문에 (C1-C7 중 하나만 ON이기 때문에)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.