Кіріспе

Бастапқы жиынның әрбір элементі дәл бір кіші жиынға кіретін кіші жиындар жиынтығы. Комбинаторика саласында, егер жиынның кіші жиындарының жиынтығы берілсе, нақты жабу – бұл жиынның әрбір элементі дәл бір кіші жиынға кіретін кіші жиындардың ішкі жиыны. Бұл детерминистік емес полиномиалдық уақытта (NP) шешілетін толық проблема және әуе компанияларының рейстер кестелерін оңтайландыру, бұлтты есептеу және электрондық тізбектерді жобалау сияқты әртүрлі қолданыстарға ие. Басқаша айтқанда, нақты жабу – бұл жиынның кіші жиындарынан тұратын бөлінісі, олардың әрқайсысы жиынға кіреді. Нақты жабуды табу мәселесі – бұл шектеулерді қанағаттандыру мәселесінің бір түрі. Жиынның элементтері таңдауларды, ал жиынның элементтері шектеулерді көрсетеді. Нақты жабу мәселесі кіші жиындар мен элементтер арасындағы «кіреді» қатынасын қамтиды. Бірақ нақты жабу мәселесі таңдаулар және шектеулер жиыны арасындағы кез келген әртүрлі қатынас арқылы бейнеленуі мүмкін. Мысалы, нақты жабу мәселесі нақты соққы жиынтығы мәселесіне, инциденттік матрицаға немесе екі бөлікті графқа эквивалентті. Компьютер ғылымында нақты жабу мәселесі – нақты жабудың бар-жоғын анықтауға арналған шешімдік мәселе. Нақты жабу мәселесі NP-толық және Карптың 21 NP-толық мәселесінің бірі болып табылады. Бұл мәселе әр кіші жиында дәл үш элемент болған кезде де NP-толық болып қалады; бұл шектеулі мәселе 3 жиынмен нақты жабу деп аталады және көбінесе X3C деп белгіленеді. Егер белгілі бір кандидаттық шешімде белгілі бір қосымша баған қанағаттандырылса, онда қосылған қатар қажет емес. Бірақ егер қосымша баған қанағаттандырылмаса, бұл жалпыланған мәселеде рұқсат етілгенімен, стандартты мәселеде рұқсат етілмегенімен, онда баған қанағаттандырылсын үшін қосылған қатарды таңдауға болады. Бірақ Кнут жалпыланған мәселемен тікелей жұмыс істеудің жақсы екенін түсіндіреді, өйткені жалпыланған алгоритм қарапайым және жылдам: оның X алгоритміне жасалған қарапайым өзгеріс қосымша бағандарды тікелей өңдеуге мүмкіндік береді. N патшайымдар мәселесі – жалпыланған нақты жабу мәселесінің мысалы, өйткені шахмат тақтасының диагональдарына сәйкес келетін шектеулер нақты патшайымдар санына емес, ең көп патшайымдар санына қатысты.

Ерекше мысалдар

NP-толықтығына байланысты, NP класындағы кез келген мәселені дәл жабу проблемаларына келтіруге болады, олар Dancing Links сияқты техникалармен шешіледі. Дегенмен, кейбір белгілі мәселелер үшін келтіру өте тікелей болады. Мысалы, пентоминолармен тақтаны мозаикалау және Судокуды шешу мәселелері дәл жабу проблемалары ретінде қарастырылуы мүмкін.

N квин проблемасы

N ханышалар мәселесі – жалпыланған нақты жабу мәселесінің мысалы. Мәселе төрт түрлі шектеуді қамтиды:
Қатар: N қатарының әрқайсысында дәл бір ханыша болуы керек. Баған: N бағанының әрқайсысында дәл бір ханыша болуы керек. Диагональдар: 2N–1 диагональдің әрқайсысында ең көп дегенде бір ханыша болуы керек. Кері диагональдар: 2N–1 кері диагональдің әрқайсысында ең көп дегенде бір ханыша болуы керек. 2N қатар мен баған негізгі шектеулерді құрайтынын, ал 4N–2 диагональ мен кері диагональ екіншілік шектеулерді құрайтынын ескеріңіз. Бұдан әрі, бірінші және соңғы диагональдар мен кері диагональдардың әрқайсысы шахмат тақтасында тек бір шаршыны қамтитындықтан, оларды жоюға болады, демек екіншілік шектеулердің санын 4N–6 дейін азайтуға болады. N ханышалар мәселесі үшін матрицада N2 қатар және 6N–6 баған болады, әр қатар шахмат тақтасындағы әрбір шаршыдағы мүмкін ханыша орналасуы үшін, ал әр баған әр шектеу үшін.