To'liq qopqoq - Exact cover

Yilda matematika, to'plam berilgan S ning pastki to'plamlar to'plamning X, an aniq qopqoq kichik to'plamdir S* ning S shunday qilib har bir element X tarkibida mavjud to'liq bitta kichik to'plam S*.Birida har bir element X bilan qoplangan to'liq bitta to'plam S*.Aniq qopqoq bir xil qopqoq.

Yilda Kompyuter fanlari, aniq qopqoq muammosi a qaror muammosi aniq qopqoq mavjudligini aniqlash uchun. To'liq qopqoq muammosi To'liq emas[1]va ulardan biri Karpning 21 ta NP-ning to'liq muammolari.[2]To'liq qopqoq muammosi bir xil cheklovni qondirish muammosi.

To'liq qopqoq muammosi bilan ifodalanishi mumkin insidens matritsasi yoki a ikki tomonlama grafik.

Knut algoritmi X bu algoritm bu aniq qopqoq muammosining barcha echimlarini topadi. DLX - algoritm X yordamida samarali amalga oshirilganda unga berilgan ism Donald Knuth "s Raqsga havolalar kompyuterda ishlash.[3]

Standart aniq qopqoq muammosi nafaqat "to'liq bitta" cheklovlarni, balki "eng ko'pi bilan" cheklovlarni ham o'z ichiga olgan holda biroz umumlashtirilishi mumkin.

Topish Pentomino plitkalar va echimlar Sudoku aniq qopqoq muammolarining diqqatga sazovor misollari n malikalar muammosi ozgina umumlashtirilgan aniq qopqoq muammosi.

Rasmiy ta'rif

To'plam berilgan S ning pastki to'plamlar to'plamning X, aniq qopqoq X kichik to'plamdir S* ning S ikkita shartni qondiradigan:

  • The kesishish har qanday ikkita alohida kichik to'plamdan S* bu bo'sh, ya'ni pastki to'plamlar S* bor juftlik bilan ajratish. Boshqacha qilib aytganda, har bir element X tarkibida mavjud ko'pi bilan ichki qism S*.
  • The birlashma pastki to'plamlarning S* bu X, ya'ni pastki to'plamlar S* qopqoq X. Boshqacha qilib aytganda, har bir element X tarkibida mavjud kamida bitta kichik to'plam S*.

Muxtasar qilib aytganda, har bir element tarkibida aniq qopqoq "aniq" X tarkibida mavjud to'liq bitta kichik to'plam S*.

Bunga teng ravishda, aniq qopqoq X kichik to'plamdir S* ning S bu bo'limlar X.

Ning aniq qopqog'i uchun X mavjud bo'lish uchun quyidagilar zarur:

  • Ichki to'plamlarning birlashishi S bu X. Boshqacha qilib aytganda, har bir element X kamida bitta kichik to'plamda joylashgan S.

Agar bo'sh to'plam ∅ tarkibida mavjud S, keyin aniq biron bir qopqoqda bo'ladimi-yo'qligi hech qanday farq qilmaydi, shuning uchun quyidagilarni tasavvur qilish odatiy holdir:

  • Bo'sh to'plam mavjud emas S*. Boshqacha qilib aytganda, har bir kichik to'plam S* kamida bitta elementni o'z ichiga oladi.

Asosiy misollar

Ruxsat bering S = {N, O, P, E} to'plamning pastki to'plamlari to'plami bo'lishi mumkin X = {1, 2, 3, 4} shunday:

  • N = { },
  • O = {1, 3},
  • P = {2, 3} va
  • E = {2, 4}.

Subcollection {O, E} - bu aniq qopqoq X, pastki to'plamlardan beri O = {1, 3} va E = {2, 4} qismli va ularning birlashishi X = {1, 2, 3, 4}.

Subcollection {N, O, E} shuningdek, bu aniq qopqoq X.Bosh to'plamni o'z ichiga oladi N = {} hech qanday farq qilmaydi, chunki u barcha pastki to'plamlar bilan ajralib turadi va birlashmani o'zgartirmaydi.

Subcollection {E, P} ning aniq qopqog'i emas X.Ko'p qismlarning kesishishi E va P, {2}, bo'sh emas: pastki to'plamlar E va P bir-biriga qo'shilmagan, shuningdek, kichik guruhlarning birlashishi E va P, {2, 3, 4}, bunday emas X = {1, 2, 3, 4}: ham E na P 1 elementni qamrab oladi.

Boshqa tomondan, aniq qopqoq yo'q - haqiqatan ham, hatto qopqoq ham yo'q Y = {1, 2, 3, 4, 5} chunki ning tegishli qismidir Y: Ichki to'plamlarning hech biri S 5 elementni o'z ichiga oladi.

Batafsil misol

Ruxsat bering S = {A, B, C, D., E, F} to'plamning pastki to'plami bo'lishi mumkin X = {1, 2, 3, 4, 5, 6, 7} quyidagicha:

  • A = {1, 4, 7};
  • B = {1, 4};
  • C = {4, 5, 7};
  • D. = {3, 5, 6};
  • E = {2, 3, 6, 7}; va
  • F = {2, 7}.

Keyin pastki to'plam S* = {B, D., F} - bu aniq qopqoq, chunki har bir element X pastki to'plamlarning birida joylashgan:

  • B = {1, 4};
  • D. = {3, 5, 6}; yoki
  • F = {2, 7}.

Bundan tashqari, {B, D., F} - bu yagona aniq qopqoq, chunki quyidagi dalillar shuni ko'rsatadiki: Chunki A va B 1-ni o'z ichiga olgan yagona pastki to'plamlar, aniq qopqoqni o'z ichiga olishi kerak A yoki B, lekin ikkalasi ham emas. Agar aniq qopqoq bo'lsa A, keyin u o'z ichiga olmaydi B, C, E, yoki F, chunki ushbu kichik to'plamlarning har biri umumiy elementga ega A.Shunda D. qolgan yagona to'plam, ammo to'plam {A, D.} elementni qamrab olmaydi 2. Xulosa qilib aytganda, aniq qopqoq mavjud emas A.Agar boshqa tomondan, agar aniq qopqoq bo'lsa B, keyin u o'z ichiga olmaydi A yoki C, chunki ushbu kichik to'plamlarning har biri umumiy elementga ega B.Chunki D. 5 ni o'z ichiga olgan yagona qolgan to'plam, D. aniq qopqoqning bir qismi bo'lishi kerak D., keyin u o'z ichiga olmaydi E, kabi E bilan umumiy bir elementga ega D..Shunda F qolgan yagona to'plam va to'plam {B, D., F}, albatta, aniq qopqoq misol haqidagi maqolada Knut algoritmi X ushbu argumentning matritsaga asoslangan versiyasi uchun.

Vakolatxonalar

Qopqoqning aniq muammosi ikkilik munosabat pastki to'plamlar orasidagi "o'z ichiga oladi" S va elementlari X.Bu munosabatni ifodalashning turli xil ekvivalent usullari mavjud.

Standart vakolatxona

"O'z ichiga olgan" munosabatni ifodalashning standart usuli har bir kichik to'plamdagi elementlarni ro'yxatlashdir.

Masalan, batafsil misol yuqorida ushbu standart vakolatxonadan foydalaniladi:

  • A = {1, 4, 7};
  • B = {1, 4};
  • C = {4, 5, 7};
  • D. = {3, 5, 6};
  • E = {2, 3, 6, 7}; va
  • F = {2, 7}.

Shunga qaramay, kichik to'plam S* = {B, D., F} - bu aniq qopqoq, chunki har bir element aynan bitta tanlangan kichik to'plamda joylashgan, chunki ta'kidlash aniq.

Teskari vakillik

Ichki to'plamlar va elementlar orasidagi "o'z ichiga olgan" munosabatlar bo'lishi mumkin konvertatsiya qilingan, har bir element joylashgan pastki to'plamlarni ro'yxati.

Masalan, "tarkibidagi" munosabat batafsil misol yuqoridagi har bir element tarkibidagi quyi to'plamlarni ro'yxatlash orqali ifodalanishi mumkin:

  • 1 ning elementi A, B;
  • 2 ning elementi E, F;
  • 3 ning elementi D., E;
  • 4 ning elementi A, B, C;
  • 5 ning elementi C, D.;
  • 6 - ning elementi D., E; va
  • 7 ning elementi A, C, E, F.

Shunga qaramay, kichik to'plam S* = {B, D., F} - bu aniq qopqoq, chunki har bir element aynan bitta tanlangan kichik to'plamda joylashgan, chunki ta'kidlash aniq.

Qopqoqning aniq muammosini hal qilishda ko'pincha standart va teskari tasvirlar o'rtasida almashtirish foydali bo'ladi.

Matritsa va gipergraf tasvirlari

"O'z ichiga oladi" munosabati an bilan ifodalanishi mumkin insidens matritsasi.

Matritsa har bir kichik to'plam uchun bitta qatorni o'z ichiga oladi S va har bir element uchun bitta ustun XAgar ma'lum bir satr va ustundagi yozuv 1 ga teng bo'lsa, agar mos keladigan ichki qismda tegishli element bo'lsa, aks holda 0 ga teng bo'ladi. Har bir satr mos keladigan pastki qismdagi elementlarni va har bir ustun mos keladigan elementni o'z ichiga olgan pastki qismlarni aks ettiradi, tushish matritsasi standart va teskari tasvirlarni samarali taqdim etadi.

Matritsada aniq qopqoq qatorlar tanlovidir, shunda har bir ustunda aynan bitta tanlangan satrda 1 bo'ladi.

Masalan, "tarkibidagi" munosabat batafsil misol yuqorida 6 × 7 tushish matritsasi bilan ifodalanishi mumkin:[4]

1234567
A1001001
B1001000
C0001101
D.0010110
E0110011
F0100001

Shunga qaramay, kichik to'plam S* = {B, D., F} - bu aniq qopqoq, chunki har bir element aynan bitta tanlangan kichik to'plamda joylashgan, ya'ni har bir ustunda aynan bitta tanlangan qatorda 1 bo'ladi, chunki ta'kidlash aniq.

Ga qarang misol haqidagi maqolada Knut algoritmi X ning matritsaga asoslangan echimi uchun batafsil misol yuqorida.

O'z navbatida, tushish matritsasini a ni tavsiflovchi sifatida ham ko'rish mumkin gipergraf. Gipergrafada har bir element uchun bitta tugun mavjud X va har bir kichik to'plam uchun bitta chekka S; har bir tugun qopqoqni tashkil etuvchi qirralarning to'liq biriga kiritilgan.

Grafik tasviri

"O'z ichiga oladi" munosabati a bilan ifodalanishi mumkin ikki tomonlama grafik.

Grafika tepalari ikkita ajratilgan to'plamga bo'linadi, ulardan biri pastki qismlarni aks ettiradi S va boshqa elementlarni ifodalovchi XAgar ichki qism elementni o'z ichiga olsa, chekka grafadagi tegishli tepaliklarni birlashtiradi.

Grafika ko'rinishida aniq qopqoq - bu elementga mos keladigan har bir tepalik aniq tanlangan bitta vertikalga ulanadigan pastki qismlarga mos keladigan tepalar tanlovidir.

Masalan, "tarkibidagi" munosabat batafsil misol yuqorida 6 + 7 = 13 tepalikli ikki tomonlama grafik bilan ifodalanishi mumkin:

Aynan qopqoq-bigraph-ta'kidlangan.svg

Shunga qaramay, kichik to'plam S* = {B, D., F} - bu aniq qopqoq, chunki har bir element aniq tanlangan bitta kichik to'plamda, ya'ni har bir elementga to'g'ri keladigan tepada joylashgan X aniq bir tanlangan tepalikka ulangan, chunki ta'kidlash aniq.

Ekvivalent muammolar

Garchi kanonik aniq qopqoq muammosi to'plamni o'z ichiga oladi S to'plamning pastki to'plamlari X, mantiq elementlarni o'z ichiga olgan pastki to'plamlarning mavjudligiga bog'liq emas. "Muqova aniq qopqoq muammosi" mavjud bo'lganda paydo bo'ladi heterojen munosabat ikki to'plam o'rtasida P va Q va maqsad kichik to'plamni tanlashdir P * ning P shunday qilib har bir element Q bilan bog'liq to'liq bitta element P *.Umumiy holda P tanlovlarini va elementlarini ifodalaydi Q ushbu tanlovdagi "to'liq bitta" cheklovlarni anglatadi.

Ikkilik munosabatlar berilgan rasmiyroq RP × Q to'plamlar orasida P va Q, pastki to'plamga qo'ng'iroq qilish mumkin P * ning P ning "mavhum aniq qopqog'i" Q agar har bir element Q bu RT- aniq bir element bilan bog'liq P *. Bu yerda RT bo'ladi suhbatlashish ning R.

Umuman, RT cheklangan ga Q × P * a funktsiya dan Q ga P *, bu har bir elementni xaritada aks ettiradi Q noyob elementga P * anavi R- bu element bilan bog'liq Q.Bu funktsiya ustiga, agar bo'lmasa P * tarkibida "bo'sh to'plam", ya'ni mavjud bo'lmagan element mavjud R- har qanday element bilan bog'liq Q.

Kanonik aniq qopqoq muammosida, P to'plamdir S ning pastki to'plamlari X, Q to'plam X, R pastki to'plamlar va elementlar orasidagi "o'z ichiga olgan" ikkilik munosabatlar va RT bilan cheklangan Q × P * elementlardan tanlangan pastki to'plamlarga qadar "mavjud" funktsiyasi.

To'liq urish to'plami

Yilda matematika, to'plam berilgan S to'plamning pastki to'plamlari X, an aniq urish to'plami X * ning pastki qismi X har bir kichik to'plam S o'z ichiga oladi to'liq bitta element X *. Bittasi har bir kichik to'plamni aytadi S tomonidan uriladi to'liq bitta element X *.

Yilda Kompyuter fanlari, aniq urish muammosi a qaror muammosi aniq urish to'plamini topish yoki yo'qligini aniqlash.

To'liq urish to'plami muammosi mavhum aniq qopqoq muammosi yuqoridagi yozuv, P to'plam X, Q to'plamdir S ning pastki to'plamlari X, R elementlar va kichik to'plamlar orasidagi "mavjud" ikkilik munosabatdir va R−1 bilan cheklangan Q × P * funktsiyasi pastki to'plamlardan tanlangan elementlarga "o'z ichiga oladi".

Agar qopqoqning aniq muammosi quyi to'plamlarni tanlashni o'z ichiga oladi va pastki qismlardan elementlarga "o'z ichiga oladi" munosabati, aniq urish to'plami muammosi elementlarni tanlashni o'z ichiga oladi va "element" dan pastki qismgacha bo'lgan "munosabat" aniq ma'noda. pastki to'plamlarning bir xil to'plami va yig'ilishini o'z ichiga olgan aniq qopqoq muammosining teskarisi.

To'liq urish

Kabi batafsil aniq qopqoq namunasi yuqorida, ruxsat bering S = {A, B, C, D., E, F} to'plamning pastki to'plamlari to'plami bo'lishi mumkin X = {1, 2, 3, 4, 5, 6, 7} quyidagicha:

  • A = {1, 4, 7};
  • B = {1, 4};
  • C = {4, 5, 7};
  • D. = {3, 5, 6};
  • E = {2, 3, 6, 7}; va
  • F = {2, 7}.

Keyin X * = {1, 2, 5} - bu aniq urish to'plami, chunki har bir kichik to'plam S tarkibida bitta element mavjud X *, ta'kidlashicha aniq.

Bundan tashqari, {1, 2, 5} yagona aniq zarba to'plamidir, chunki quyidagi argument shuni ko'rsatadiki: 2 va 7 yagona elementlar F, aniq urish to'plamida 2 yoki 7 bo'lishi kerak, lekin ikkalasida ham yo'q. Agar aniq urish to'plamida 7 bo'lsa, unda u 1, 2, 3, 4, 5 yoki 6 ni o'z ichiga olmaydi, chunki bu elementlarning har biri ba'zi bir kichik to'plam ham 7. ni o'z ichiga oladi, keyin boshqa elementlar qolmaydi, ammo {7} to'liq urish to'plami emas, chunki u urilmaydi B yoki D.Xulosa qilib aytganda, 7 ni o'z ichiga olgan aniq urish to'plami yo'q, boshqa tomondan, agar aniq zarba to'plamida 2 bo'lsa, unda u 3, 6 yoki 7 ni o'z ichiga olmaydi, chunki bu elementlarning har biri ba'zi bir kichik to'plamda joylashgan o'z ichiga olgan 2. Chunki 5 - bu yagona yagona element D., aniq urish to'plami 5. Agar aniq urish to'plami 5 dan iborat bo'lsa, unda ikkala zarba bo'lgani kabi, u ham 4 ni o'z ichiga olmaydi C.Chunki 1 xit qolgan yagona element A, aniq urish to'plamida 1 bo'lishi kerak. Keyin qolgan elementlar yo'q va {1, 2, 5} haqiqatan ham aniq urish to'plamidir.

Ushbu misolda yuqoridagi batafsil aniq misol bilan bir xil pastki to'plamlar to'plami mavjud bo'lsa-da, bu aslida boshqa muammo. Bir ma'noda, aniq urish to'plami muammosi yuqoridagi mos keladigan aniq qopqoq muammosining teskari (yoki transpozitsiyasi yoki teskari tomoni) dir, chunki matritsaning namoyishi aniq:

ABCD.EF
1110000
2000011
3000110
4111000
5001100
6000110
7101011

Ikkala misol

Ammo aniq bir xil bo'lgan yana bir aniq urish to'plami muammosi mavjud batafsil aniq qopqoq namunasi yuqorida, unda raqamlangan elementlar pastki qismga aylanadi va harfli pastki qismlar elementlarga aylanib, pastki qismlar va element o'rtasidagi munosabatni samarali ravishda o'zgartiradi.

Masalan, kichik to'plam sifatida B aniq qopqoq muammosidagi 1 va 4 elementlarni, pastki qismlarni o'z ichiga oladi Men va IV elementni o'z ichiga oladi b ikkita aniq urish to'plami muammosida.

Xususan, ruxsat bering S = {Men, II, III, IV, V, VI, VII} to'plamning pastki to'plamlari to'plami bo'lishi mumkin X = {a, b, v, d, e, f} shu kabi:

  • Men = {a, b}
  • II = {e, f}
  • III = {d, e}
  • IV = {a, b, v}
  • V = {v, d}
  • VI = {d, e}
  • VII = {a, v, e, f}

Keyin X * = {b, d, f} - bu aniq urish to'plami, chunki har bir kichik to'plam S tarkibida bitta element mavjud (uriladi) X *, ta'kidlashicha aniq.

To'liq urish to'plami X * = {b, d, f} bu erda aslida aniq qopqoq bilan bir xil S* = {B, D., F} yuqorida, chunki matritsaning namoyishi aniq:

MenIIIIIIVVVIVII
a1001001
b1001000
v0001101
d0010110
e0110011
f0100001

Yechimlarni topish

Algoritm X bu ism Donald Knuth aniq qopqoq muammosining barcha echimlarini topish uchun "eng aniq sinov-xato yondashuvi" ni berdi.[3] Texnik jihatdan X algoritmi a rekursiv, noaniq, chuqurlik birinchi, orqaga qaytish algoritm.

Algoritm X yordamida samarali amalga oshirilganda Donald Knuth "s Raqsga havolalar kompyuterda ishlaydigan texnika, Knut uni DLX deb ataydi. DLX bir qator sifatida bajarilgan muammoning matritsali ko'rinishini ishlatadi ikki marta bog'langan ro'yxatlar matritsaning 1-laridan: har bir 1 ta element yuqoridagi, pastdan, chapdan va o'ngdan keyingi 1-ga bog'langan. (Texnik jihatdan, ro'yxatlar dairesel bo'lgani uchun, bu torusni hosil qiladi). Qopqoqning aniq muammolari kamdan-kam uchraydiganligi sababli, bu vakolatxonada talab qilinadigan hajm va ishlov berish vaqtlarida odatda ancha samarali bo'ladi. Keyin DLX Raqsga havolalar qatorlarning almashtirishlarini iloji boricha echimlar sifatida tanlash va xato taxminlardan samarali orqaga qaytish (bekor qilish) usuli.[3]

Umumlashtirish

Qopqoqning standart aniq muammosida har bir cheklov aniq bir marta qondirilishi kerak, bu talabni biroz yumshatish va ba'zi bir "asosiy" cheklovlarni qondirish imkoniyatini berish uchun oddiy umumlashtirish. to'liq bitta tanlov, ammo boshqa "ikkilamchi" cheklovlarni qondirish mumkin ko'pi bilan tanlov.

Knut tushuntirganidek, har bir ikkinchi darajali ustun uchun bitta satr qo'shib, shu ustunda bitta bitta o'z ichiga olgan holda, umumlashtirilgan aniq qopqoq muammosi ekvivalent aniq qopqoq muammosiga aylantirilishi mumkin.[5] Agar ma'lum bir nomzodning echimida ma'lum bir ikkinchi darajali ustun qoniqtirilsa, unda qo'shimcha satr kerak emas, ammo ikkinchi darajali ustun qondirilmasa, standart muammo emas, balki umumiy muammo, ustun qondirilishini ta'minlash uchun tanlangan.

Ammo Knut umumlashgan muammo bilan to'g'ridan-to'g'ri ishlash yaxshiroq ekanligini tushuntiradi, chunki umumlashtirilgan algoritm oddiyroq va tezroq: Uning X algoritmiga oddiy o'zgartirish to'g'ridan-to'g'ri ikkinchi darajali ustunlar bilan ishlashga imkon beradi.

The N malikalar muammosi umumlashtirilgan aniq qopqoq muammosining misoli, chunki shaxmat taxtasi diagonallariga mos keladigan cheklovlar aniq malikalar soniga emas, balki maksimalga ega.

E'tiborli misollar

NP-ning to'liqligi tufayli NP-da har qanday muammo bo'lishi mumkin kamaytirilgan muammolarni aniq qoplash uchun, keyin ularni Dancing Links kabi usullar bilan hal qilish mumkin, ammo ba'zi ma'lum bo'lgan muammolar uchun qisqartirish ayniqsa to'g'ridan-to'g'ri, masalan, taxtani plitka bilan qoplash muammosi pentominolar va hal qilish Sudoku ikkalasini ham aniq qopqoq muammolari sifatida ko'rish mumkin.

Pentomino plitkalari

12 kvadrat bepul bo'lgan 60 kvadratlik taxtani plitka bilan qoplash muammosi pentominolar kabi aniq qopqoq muammosiga misoldir Donald Knuth "Raqsga tushadigan aloqalar" maqolasida tushuntiradi.[3]

Masalan, 4 ta markaziy kvadrat olib tashlangan 8 × 8 shaxmat taxtasini pentomino bilan plitka bilan qoplash muammosini ko'rib chiqing:

1112131415161718
2122232425262728
3132333435363738
414243464748
515253565758
6162636465666768
7172737475767778
8182838485868788

Muammo ikki xil cheklovlarni o'z ichiga oladi:

Pentomino: 12 ta pentominoning har biri uchun uni aniq bir marta qo'yish kerak bo'lgan cheklov mavjud. Tegishli pentominolar nomidan ushbu cheklovlarni nomlang: F I L P N T U V W X Y Z.[6]
Kvadrat: 60 kvadratning har biri uchun pentomino tomonidan bir marta yopilishi kerak bo'lgan cheklov mavjud. Ushbu cheklovlarni taxtadagi mos kvadratchalar nomi bilan nomlang: ij, qayerda men daraja va j fayl.

Shunday qilib, 12 + 60 = 72 cheklovlar mavjud.

Ikkala turdagi cheklovlar "to'liq bitta" cheklovlar bo'lgani uchun, muammo aniq qopqoq muammosida.

Muammo pentominoni taxtaga joylashtirishning har bir usuli uchun juda ko'p tanlovni o'z ichiga oladi, har bir tanlovni 6 ta cheklovlar to'plamini qoniqtiradigan deb hisoblash qulay: pentomino uchun 1 ta cheklov va u joylashgan beshta kvadrat uchun 5 ta cheklov. joylashtirilgan.

4 ta markaziy kvadrat olib tashlangan 8 × 8 shaxmat taxtasida 1568 ta shunday tanlov mavjud, masalan:

  • {F, 12, 13, 21, 22, 32}
  • {F, 13, 14, 22, 23, 33}
  • {I, 11, 12, 13, 14, 15}
  • {I, 12, 13, 14, 15, 16}
  • {L, 11, 21, 31, 41, 42}
  • {L, 12, 22, 32, 42, 43}

Ushbu aniq muammoni hal qilishning ko'plab echimlaridan biri quyidagi 12 ta tanlovdir:

  • {I, 11, 12, 13, 14, 15}
  • {N, 16, 26, 27, 37, 47}
  • {L, 17, 18, 28, 38, 48}
  • {U, 21, 22, 31, 41, 42}
  • {X, 23, 32, 33, 34, 43}
  • {V, 24, 25, 35, 36, 46}
  • {P, 51, 52, 53, 62, 63}
  • {F, 56, 64, 65, 66, 75}
  • {Z, 57, 58, 67, 76, 77}
  • {T, 61, 71, 72, 73, 81}
  • {V, 68, 78, 86, 87, 88}
  • {Y, 74, 82, 83, 84, 85}

Ushbu tanlov to'plami pentomino plitka qo'yish muammosining quyidagi echimiga mos keladi:

Pentomino jumboq echimi 8x8 Minus Center.svg

Pentomino plitka muammosi tabiiy ravishda aniq urish to'plamiga qaraganda aniq qopqoq muammosi sifatida qaraladi, chunki har bir tanlovni cheklovlar to'plami sifatida ko'rib chiqish tabiiydir.

Har bir tanlov sanab o'tish oson bo'lgan atigi 6 ta cheklovga taalluqlidir. Boshqa tomondan, har bir cheklov sanab o'tish qiyin bo'lgan ko'plab tanlovlarga taalluqlidir.

To'liq qopqoq muammosi yoki aniq urish to'plami muammosi sifatida qaraladimi, matritsaning namoyishi bir xil bo'lib, tanlovga mos keladigan 1568 qator va cheklovlarga mos keladigan 72 ustun mavjud.Har bir satrda pentominoni aniqlaydigan ustunda bitta bitta va beshta 1 pentomino bilan qoplangan kvadratlarni aniqlaydigan ustunlar.

Matritsadan foydalanib, kompyuter barcha echimlarni nisbatan tez topishi mumkin, masalan Raqsga havolalar.

Sudoku

 Asosiy maqolalar: Sudoku, Sudoku matematikasi, Sudoku echish algoritmlari

Muammo Sudoku ma'lum cheklovlarni qondirish uchun katakchadagi (yoki kvadratchalarga) raqamlarni (yoki raqamlarni, qiymatlarni, belgilarni) belgilashdir.

Standart 9 × 9 Sudoku variantida to'rt xil cheklovlar mavjud:

Qator ustun: Qator va ustunning har bir kesishishi, ya'ni har bir katak to'liq bitta raqamni o'z ichiga olishi kerak.
Qator raqami: Har bir satrda har bir raqam to'liq bir marta bo'lishi kerak
Ustun raqami: Har bir ustun har bir raqamni to'liq bir marta o'z ichiga olishi kerak.
Raqam raqami: Har bir qutida har bir raqam to'liq bir marta bo'lishi kerak.

Birinchi cheklov ahamiyatsiz bo'lib tuyulsa-da, baribir bitta katakka bitta raqam bo'lishini ta'minlash kerak. Intuitiv ravishda raqamni katakchaga joylashtirish har qanday boshqa katakchada bir xil ustun, satr yoki katakchani joylashtirishni taqiqlaydi, shuningdek taqiqlaydi. boshqa har qanday raqamni joylashtirish hozir egallab olingan kameraga.

Sudokuni hal qilish - bu aniq qopqoq muammosi.

Aniqrog'i, Sudokuni hal qilish aniq urish to'plami har bir cheklovlar to'plami aniq bir tanlangan imkoniyatni o'z ichiga olgan (ya'ni urilgan) imkoniyatlarni tanlash uchun muammo sifatida qaralganda, aniq qopqoq muammosiga teng bo'lgan muammo. (umumiy) aniq qopqoq muammosi uchun yuqoridagi belgida, X imkoniyatlar to'plami, Y bu cheklovlar to'plami va R "tarkibida mavjud." ikkilik munosabati.

Muayyan sonni ma'lum bir katakka har bir mumkin bo'lgan tayinlash a imkoniyat Sudoku qalam va qog'oz bilan o'ynaganda, imkoniyatlar ko'pincha qalam izlari deb nomlanadi.

9 × 9 katakchalarning har biriga 9 ta raqamdan bittasi berilgan 9 × 9 Sudoku standart variantida 9 × 9 × 9 = 729 imkoniyat mavjud.Qatorlar, ustunlar va raqamlar uchun aniq yozuvlardan foydalanib, imkoniyatlarni etiketlash mumkin.

R1C1 # 1, R1C1 # 2,…, R9C9 ​​# 9.

Cheklovlarning har bir turi aniq bir narsani o'z ichiga olishi, bu Sudokuni aniq urish muammosiga aylantiradi. cheklovlar to'plamlari.Muammo shundaki, har bir cheklov to'plami aniq bir tanlangan imkoniyatni o'z ichiga olgan (ya'ni urilgan) imkoniyatlarni tanlashda.

Standart 9 × 9 Sudoku variantida to'rt turdagi cheklovlarga mos keladigan to'rt xil cheklovlar to'plami mavjud:

Qator ustun: Qator-ustun cheklovlar to'plami ma'lum bir qator va ustun kesishishi uchun, ya'ni katak uchun barcha imkoniyatlarni o'z ichiga oladi. Masalan, R1C1 deb belgilanishi mumkin bo'lgan 1-satr va 1-ustun uchun o'rnatilgan cheklov 1-satr va 1-ustun uchun 9 ta imkoniyatni o'z ichiga oladi, ammo har xil raqamlar:
R1C1 = {R1C1 # 1, R1C1 # 2, R1C1 # 3, R1C1 # 4, R1C1 # 5, R1C1 # 6, R1C1 # 7, R1C1 # 8, R1C1 # 9}.
Qator raqami: Qator-raqam cheklovlari to'plami ma'lum qator va raqam uchun barcha imkoniyatlarni o'z ichiga oladi. Masalan, R1 # 1 deb belgilanishi mumkin bo'lgan 1-qator va 1-sonli cheklov 1-qator va 1-raqam uchun 9 imkoniyatni o'z ichiga oladi, ammo har xil ustunlar:
R1 # 1 = {R1C1 # 1, R1C2 # 1, R1C3 # 1, R1C4 # 1, R1C5 # 1, R1C6 # 1, R1C7 # 1, R1C8 # 1, R1C9 # 1}.
Ustun raqami: Ustun-raqam cheklovlari to'plami ma'lum bir ustun va raqam uchun barcha imkoniyatlarni o'z ichiga oladi. Masalan, C1 # 1 deb belgilanishi mumkin bo'lgan 1-ustun va 1-sonli cheklovlar 1-ustun va 1-raqam uchun 9 imkoniyatni o'z ichiga oladi, ammo har xil satrlar:
C1 # 1 = {R1C1 # 1, R2C1 # 1, R3C1 # 1, R4C1 # 1, R5C1 # 1, R6C1 # 1, R7C1 # 1, R8C1 # 1, R9C1 # 1}.
Raqam raqami: Box-number cheklash to'plami ma'lum bir quti va raqam uchun barcha imkoniyatlarni o'z ichiga oladi. Masalan, B1 # 1 deb belgilanishi mumkin bo'lgan 1-quti (yuqori chap burchakda) va 1-raqam uchun o'rnatilgan cheklov 1-qutidagi va 1-sonli katakchalar uchun 9 imkoniyatni o'z ichiga oladi:
B1 # 1 = {R1C1 # 1, R1C2 # 1, R1C3 # 1, R2C1 # 1, R2C2 # 1, R2C3 # 1, R3C1 # 1, R3C2 # 1, R3C3 # 1}.

9 ta satr, 9 ta ustun, 9 ta quti va 9 ta raqam bo'lgani uchun 9 × 9 = 81 ta satr-ustunli cheklovlar to'plami, 9 × 9 = 81 ta satr-sonli cheklovlar to'plamlari, 9 × 9 = 81 ta ustunlar soni cheklovlar to'plamlari, va 9 × 9 = 81 quti raqami cheklovlari: 81 + 81 + 81 + 81 = 324 cheklovlar to'plamlari.

Qisqacha aytganda, standart 9 × 9 Sudoku varianti 729 ta imkoniyat va 324 ta cheklovlar to'plamiga ega bo'lgan aniq zarba to'plamidir, shuning uchun muammoni 729 × 324 matritsa bilan ifodalash mumkin.

729 × 324 matritsasini to'liq namoyish etish qiyin bo'lsa ham, matritsaning umumiy mohiyatini bir nechta oniy rasmlardan ko'rish mumkin:

Qator ustunli cheklovlar
R1
C1
R1
C2
R1C1 # 110
R1C1 # 210
R1C1 # 310
R1C1 # 410
R1C1 # 510
R1C1 # 610
R1C1 # 710
R1C1 # 810
R1C1 # 910
R1C2 # 101
R1C2 # 201
R1C2 # 301
R1C2 # 401
R1C2 # 501
R1C2 # 601
R1C2 # 701
R1C2 # 801
R1C2 # 901
Qator-sonli cheklovlar
R1
#1
R1
#2
R1C1 # 110
R1C1 # 201
R1C2 # 110
R1C2 # 201
R1C3 # 110
R1C3 # 201
R1C4 # 110
R1C4 # 201
R1C5 # 110
R1C5 # 201
R1C6 # 110
R1C6 # 201
R1C7 # 110
R1C7 # 201
R1C8 # 110
R1C8 # 201
R1C9 # 110
R1C9 # 201
Ustun-raqam cheklovlari
C1
#1
C1
#2
R1C1 # 110
R1C1 # 201
R2C1 # 110
R2C1 # 201
R3C1 # 110
R3C1 # 201
R4C1 # 110
R4C1 # 201
R5C1 # 110
R5C1 # 201
R6C1 # 110
R6C1 # 201
R7C1 # 110
R7C1 # 201
R8C1 # 110
R8C1 # 201
R9C1 # 110
R9C1 # 201
Raqam cheklovlari
B1
#1
B1
#2
R1C1 # 110
R1C1 # 201
R1C2 # 110
R1C2 # 201
R1C3 # 110
R1C3 # 201
R2C1 # 110
R2C1 # 201
R2C2 # 110
R2C2 # 201
R2C3 # 110
R2C3 # 201
R3C1 # 110
R3C1 # 201
R3C2 # 110
R3C2 # 201
R3C3 # 110
R3C3 # 201

To'liq 729 × 324 matritsani Robert Xansondan olish mumkin.[7]

Imkoniyatlar to'plami R ekanligini unutmangxCy#z koordinatalari bo'lgan 3 o'lchovli bo'shliqda 9 × 9 × 9 kub shaklida joylashtirilishi mumkin x, yva zKeyin har bir satr Rx, ustun Cyyoki raqam #z imkoniyatlarning 9 × 9 × 1 "bo'lagi"; har bir quti Bw imkoniyatlarning 9x3 × 3 "trubkasi" dir; har bir satr-ustun cheklovi R to'plamixCy, satr raqami cheklovi Rx#z, yoki ustunlar sonini cheklash S to'plamiy#z imkoniyatlarning 9x1 × 1 "tasmasi" dir; har bir quti-raqam cheklovi Bw#z bu 3x3 × 1 imkoniyatlarning "kvadrati"; va har bir imkoniyat RxCy#z Bu bitta imkoniyatdan iborat bo'lgan 1x1 × 1 "kubik" dir. Bundan tashqari, har bir cheklov to'plami yoki imkoniyat kesishish Masalan, R1C2 # 3 = R1 ∩ C2 ∩ # 3, bu erda set to'plamning kesishishini bildiradi.

Sudoku-ning boshqa xilma-xilligi qatorlar, ustunlar, raqamlar va / yoki har xil turdagi cheklovlarga ega bo'lishiga qaramay, ularning barchasi imkoniyatlar va cheklovlar to'plamini o'z ichiga oladi va shu bilan ularni aniq urish muammolari sifatida ko'rish mumkin.

N malikalar muammosi

The N malikalar muammosi umumlashtirilgan aniq qopqoq muammosining misoli.[3] Muammo to'rt xil cheklovlarni o'z ichiga oladi:

Rank: Har biri uchun N martabalar, to'liq bitta malika bo'lishi kerak.
Fayl: Har biri uchun N fayllar, bitta malika bo'lishi kerak.
Diagonallar: 2 ning har biri uchunN - 1 diagonal, ko'pi bilan bitta malika bo'lishi kerak.
Teskari diagonallar: 2 ning har biri uchunN - 1 teskari diagonal, ko'pi bilan bitta malika bo'lishi kerak.

2 ga e'tibor beringN qator va fayl cheklovlari asosiy cheklovlarni tashkil qiladi, 4N - 2 diagonal va teskari diagonallar ikkilamchi cheklovlarni hosil qiladi. Bundan tashqari, har bir birinchi va oxirgi diagonal va teskari diagonallarning barchasi shaxmat taxtasida faqat bitta kvadratni o'z ichiga olganligi sababli, ularni tashlab qo'yish mumkin va shu bilan ikkilamchi cheklovlar sonini 4 ga kamaytirish mumkinN - 6. uchun matritsa N keyin malikalar muammosi mavjud N2 qatorlar va 6N - shaxmat taxtasidagi har bir kvadratga malika joylashishi mumkin bo'lgan har bir satr va har bir cheklash uchun har bir ustun - 6 ta ustun.

Shuningdek qarang

Adabiyotlar

  1. ^ M.R.Garey; D.S.Jonson (1979). Kompyuterlar va echib bo'lmaydiganlik: NP to'liqligi nazariyasi uchun qo'llanma. Nyu-York: W.H. Freeman. ISBN  0-7167-1045-5. Ushbu kitob klassik bo'lib, nazariyani rivojlantiradi, keyin kataloglaydi ko'p NP-to'liq muammolar.
  2. ^ Richard M. Karp (1972). "Kombinatoriya muammolari orasida qisqartirish "R.E. Millerda; J.V. Tetcher (tahrir). Kompyuter hisoblashlarining murakkabligi. Proc. Simp. kompyuter hisoblashlarining murakkabligi to'g'risida. Nyu-York: Plenum. 85-103 betlar. ISBN  0-3063-0707-3.
  3. ^ a b v d e Knuth, Donald (2000). "Raqsga tushadigan havolalar". arXiv:cs / 0011047.
  4. ^ Donald Knuth "Raqsga havolalar" maqolasida ushbu misolni (3) tenglama sifatida, faqat qatorlar qayta tartiblangan holda keltiradi.
  5. ^ Donald Knut o'zining "Dancing Links" maqolasida ushbu oddiy umumlashtirishni, xususan, tetrastikni tushuntirishda va N malikalar muammolar.
  6. ^ Golomb, Sulaymon V. (1994). Poliominolar: jumboqlar, naqshlar, muammolar va qadoqlar (2-nashr). Princeton, Nyu-Jersi: Princeton University Press. p.7. ISBN  0-691-02444-8.
  7. ^ Xanson, Robert M. "Muqovaning aniq muammosi". www.stolaf.edu. Sankt-Olaf kolleji. Olingan 20 avgust 2020.

Tashqi havolalar