Dapatkan Dua dari Satu

12

Seperti yang kita lihat dalam pertanyaan ini, pernyataan logis yang kompleks dapat diekspresikan dalam kaitannya dengan koneksi sederhana Minesweeper umum. Namun kapal penyapu ranjau yang digeneralisasi masih memiliki redudansi.

Untuk menghindari redudansi ini, kami mendefinisikan game baru yang disebut "Generalized-1 Minesweeper".

Generalized-1 Minesweeper adalah versi yang dimainkan Minesweeper pada grafik arbitrer. Grafik memiliki dua jenis titik, "indikator" atau "nilai". Nilai dapat berupa hidup atau mati (tambang atau tak berguna) namun kondisinya tidak diketahui oleh pemain. Indikator memberi tahu bahwa salah satu sel yang berdekatan berada di (tambang). Indikator tidak dihitung sebagai ranjau sendiri.

Misalnya papan berikut untuk Generalized Minesweeper memberi tahu kita bahwa sel A dan B keduanya merupakan ranjau atau tidak ada ranjau.

Game sederhana

(Dalam diagram indikator ditandai abu-abu sementara nilainya putih)

Tidak seperti di kapal penyapu ranjau normal di mana Anda mengklik nilai yang tidak aktif untuk mengungkapkan indikator, tidak ada mekanik seperti itu di Generalized Minesweeper. Seorang pemain hanya menentukan keadaan grafik yang dapat memenuhi indikatornya.

Tujuan Anda adalah membuat 2Generalized-1 Minesweeper. Anda akan membangun struktur di Generalized-1 Minesweeper sedemikian rupa sehingga ada 8 sel spesifik yang semua konfigurasi nilai yang mungkin memiliki tepat dua sel. Ini berarti berperilaku persis seperti yang 2dilakukan di kapal penyapu ranjau tradisional. Ketika Anda menulis solusi Anda, Anda seharusnya tidak memiliki nilai spesifik dalam pikiran untuk sel-sel nilai. (Sebagai jawaban atas pertanyaan H.PWiz, dibolehkan bahwa beberapa sel nilai mungkin dapat dikurangkan dari negara)

Mencetak gol

Jawaban Anda akan dinilai dengan jumlah simpul dalam grafik akhir minus 8 (untuk 8 input) dengan skor yang lebih rendah lebih baik. Jika dua jawaban mengikat dalam metrik ini, pemutus dasi adalah jumlah ujung.

Ad Hoc Garf Hunter
sumber
Apakah ada tepi yang selalu menghubungkan titik indikator dan titik nilai?
xnor
@ xnor Untuk memaksimalkan skor Anda, mereka seharusnya, tapi saya merasa saya tidak perlu membuat aturan. Tepi yang tidak menghubungkan nilai ke indikator tidak mengubah perilaku grafik.
Ad Hoc Garf Hunter
Ketika 6 dikurangi dari skor, apa saja 6 input? Tidak ada 8 sel?
xnor
@ xnor Maaf seharusnya 8. Diperbaiki sekarang.
Ad Hoc Garf Hunter
Apa yang Anda maksud dengan "struktur ... sedemikian rupa sehingga ada 8 sel khusus sehingga satu-satunya konfigurasi nilai yang mungkin memiliki tepat dua sel."? Apakah satu-satunya konfigurasi yang mungkin hanya memiliki dua tambang?
dylnan

Jawaban:

7

42 simpul, 56 tepi

Jaringan tambang

Setiap variabel adalah simpul nilai, dan setiap kotak adalah simpul indikator dengan ujung ke variabel di dalamnya. Inputnya adalah x 1 , ..., x 8 . Misalnya, inilah solusi dengan ranjau di x 3 dan x 5 , dengan ranjau disorot dalam warna hijau.

Solusi jaringan tambang

Batasan horisontal memastikan bahwa tepat salah satu a dan tepat satu dari b memiliki tambang. Dalam dua kolom itu, r tidak memiliki tambang, tetapi r ada di enam kolom lainnya. (Perhatikan bahwa a dan b tidak dapat memiliki tambang di kolom yang sama.) Setiap input x berseberangan dengan r di kolomnya, jadi tepat dua input memiliki tambang seperti yang diinginkan.

Untuk kinput, ini menggunakan 5k+2simpul ( 3knilai dan 2k+2indikator), dan 7ktepi. Di sini, k=8input memberikan 42 simpul dan 56 tepi.

Tidak
sumber
3

50 Verteks, 89 tepi

Berdasarkan gerbang logika dari jawaban H.Piz.

  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

Masing *- masing aktif ketika dua input masing-masing aktif. Untuk menangani kasus input tunggal, kami menggunakan nilai-nilai perantara a=A&!Bdll. Menghubungkan ketiga nilai a, bdan A&Bke input gerbang level kedua memberi kami input efektif A|B(ini menghemat simpul di atas !(!A&!B)):

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

Ini *aktif jika dua input mereka (sesuai dengan empat input asli) aktif, kecuali dalam kasus pasangan yang sudah dibahas di atas. Sementara itu, kita dapat menghubungkan #*#node ke gerbang akhir. Karena itu kami memiliki hasil sebagai berikut:

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]

Ini mencakup semua 28 dari kasus dua input. Kemudian tetap menghubungkan indikator terakhir ke tujuh nilai ini. Jika kurang dari dua input aktif, maka tidak ada yang aktif, sehingga indikator akan mati. Jika lebih dari dua input aktif, maka lebih dari satu input akan aktif, dan indikator akan mati.

Neil
sumber
Ah, saya punya ide serupa, tetapi akhirnya membuat versi yang lebih rumit dari ini. Kerja bagus!
justhalf
Saya tidak yakin ada 43 simpul. Anda menunjukkan dengan jelas 42, jadi Anda mengatakan Anda hanya perlu satu lagi untuk menghubungkan semuanya?
H.PWiz
Sebenarnya, jika saya telah ditarik dengan benar grafik Anda menjelaskan, saya pikir itu memungkinkan bagi negara-negara seperti ACE, BDF, ADG...
H.PWiz
@ H.Piz. Saya mengerti maksud Anda ... Saya pikir mungkin saya bisa menyelesaikannya dengan tepi ekstra untuk memberikan ekspresi (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, apakah itu terlihat benar bagi Anda?
Neil
Mungkin, meskipun bagi saya ungkapan itu sepertinya menyelesaikan masalah sepenuhnya. Dan saya tidak tahu tepi apa yang bisa Anda tambahkan untuk mendapatkan itu ...
H.PWiz
2

197 Verteks, 308 tepi

Saya datang dengan jawaban ini tadi malam, tetapi menahannya karena itu skor yang sangat tinggi. Namun, karena itu mengalahkan jawaban yang lain dengan begitu banyak, saya pikir saya harus mempostingnya.

Saya menggunakan pengaturan berikut pada semua 28 pasang sel nilai di ABCDEFGH

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

?mewakili sel nilai yang tidak dalam ABCDEFGH. Di sini, ketika ?*adalah ON , Adan Bkeduanya di. Jika tidak, Adan Bbisa dalam konfigurasi lainnya.

Saya menghubungkan semua 28 ?*s ke satu sel indikator. Ini berarti bahwa hanya satu pasangan yang ABCDEFGHmemiliki dua AKTIF . Yang cukup untuk menegakkan bahwa tepat dua sel output saya akan AKTIF

H.Piz
sumber
1
Perhatikan bahwa di gerbang Anda memiliki masing-masing 4 ?s sesuai dengan salah satu dari 4 negara bagian A B.
Ad Hoc Garf Hunter
@HeebyJeebyMan Menarik, saya tidak mempertimbangkan itu. Saya baru saja menemukan gerbang ini karena keberuntungan
H.PWiz
1

354 node, 428 edge

Hanya untuk membuktikan itu mungkin. Saya akan memperbaikinya nanti dengan beberapa caching.

(semoga tidak ada kesalahan kode)

Saya mencoba menulis program Mathematica di sini untuk memeriksa validitas program, tetapi tidak berhasil mungkin karena ada terlalu banyak variabel.

Hasilnya dihasilkan oleh program komputer: Cobalah online!


Saya menggunakan gerbang yang terlihat seperti ini:


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

di mana (#)1-indikator, (a).. (f)adalah nilai.

Kemudian,


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

Juga, gerbang ini


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

memberi


b = not a

. Gunakan kedua jenis gerbang yang bisa Anda buat ekspresi apa pun.

Tentu saja, ini untuk menegaskan bahwa itu (a)pasti benar:


(a) ----- (#)
pengguna202729
sumber
1

81 Nodes, 108 Tepi

Menggunakan 13 node dan 14 edge, kita membuat Adder gate berikut (C (arry) = X AND Y, S (um) = X XOR Y):

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

Gunakan empat Adders M1, M2, M3, M4 untuk menambahkan A + B, C + D, E + F, G + H, masing-masing, dengan membawa carry C1, C2, C3, C4, dan jumlah S1, S2, S3, S4.

Gunakan dua Adders M5, M6 untuk menambahkan S1 + S2, S3 + S4, dengan membawa carry C5, C6, dan jumlah S5, S6.

Gunakan satu Adder M7 untuk menambahkan S5 + S6 untuk mendapatkan C7 dan S7.

Sekarang sambungkan semua carry ke simpul indikator tunggal seperti berikut:

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

dan memaksa S7 (modulo 2 dari jumlah 8 nilai) menjadi 0 oleh sirkuit ini:

S7--1 -? - 1

Saya berpendapat bahwa rangkaian ini memaksa tepat dua nilai dari ABCDEFGHmenjadi ON, karena itu hanya bisa menjadi bilangan genap (karena S7 adalah 0), dan tidak mungkin ada lebih dari 3 nilai ON (karena hanya satu dari C1-C7 yang ON).

justhalf
sumber