डायरेक्ट सैट से 3-सैट की कमी


18

यहाँ लक्ष्य बहुसंख्यक वर्गों और चर की सबसे कम संख्या का उपयोग करके बहुपद समय में 3-सैट के लिए एक मनमाने ढंग से सैट समस्या को कम करना है। मेरा प्रश्न जिज्ञासा से प्रेरित है। औपचारिक रूप से, मैं जानना चाहता हूं: "SAT से 3-SAT में 'सबसे प्राकृतिक' कमी क्या है?"

अब जो कमी मैंने हमेशा पाठ्य पुस्तकों में देखी है वह कुछ इस तरह से होती है:

  1. पहले एसएटी का अपना उदाहरण लें और इसे कम करने के लिए कुक-लेविन प्रमेय को सर्किट सैट में लागू करें।

  2. फिर आप क्लैट के साथ गेट्स को बदलकर सर्किट सैट को 3-सैट के मानक कमी से काम खत्म करते हैं।

हालांकि यह काम करता है, जिसके परिणामस्वरूप 3-सैट क्लॉज लगभग कुछ भी नहीं दिखते हैं जैसे कि कुक-लेविन प्रमेय के प्रारंभिक आवेदन के कारण आपके द्वारा शुरू किए गए सैट क्लॉज की तरह है।

क्या कोई यह देख सकता है कि इंटरमीडिएट सर्किट कदम को कम करने और सीधे 3-सैट पर जाने से कैसे अधिक कटौती की जा सकती है? मैं n-SAT के विशेष मामले में प्रत्यक्ष कमी से भी खुश हूँ।

(मुझे लगता है कि अभिकलन समय और आउटपुट के आकार के बीच कुछ ट्रेड-ऑफ हैं। स्पष्ट रूप से एक पतित - हालांकि सौभाग्य से अप्राप्य है जब तक कि पी = एनपी - समाधान सिर्फ सैट की समस्या को हल करने के लिए नहीं होगा, तब एक तुच्छ 3 का उत्सर्जन करें -सात उदाहरण ...)

EDIT: शाफ़्ट के जवाब के आधार पर अब यह स्पष्ट है कि n-SAT में कमी कुछ हद तक तुच्छ है (और मुझे वास्तव में यह सोचना चाहिए था कि पोस्टिंग से पहले थोड़ा और अधिक सावधानी से)। मैं इस सवाल को थोड़े समय के लिए खुला छोड़ रहा हूं कि कोई व्यक्ति अधिक सामान्य स्थिति का उत्तर जानता है, अन्यथा मैं केवल शाफ़्ट के उत्तर को स्वीकार करूंगा।


7
मैं (1) में कुक-लेविन के उपयोग को नहीं समझता। क्या बूलियन-सूत्र-सैट पहले से ही सर्किट-सैट का एक विशेष मामला नहीं है जिसमें सर्किट की ग्राफ संरचना एक पेड़ के रूप में होती है?
लुका ट्रेविसन

जवाबों:


28

प्रत्येक SAT खंड में 1, 2, 3 या अधिक चर होते हैं। 3 चर खंड को बिना किसी समस्या के कॉपी किया जा सकता है

1 और 2 चर खंड {a1}और {a1,a2}करने के लिए विस्तारित किया जा सकता {a1,a1,a1}है और {a1,a2,a1}क्रमशः।

अधिक से अधिक 3 चर के साथ खंड {a1,a2,a3,a4,a5}के लिए विस्तारित किया जा सकता {a1,a2,s1}{!s1,a3,s2}{!s2,a4,a5}के साथ s1और s2नए चर जिसका मूल्य पर निर्भर करेगा जो मूल खंड में चर सच है


6
सावधान। कौन कहता है कि सैट के इनपुट में "क्लॉस" होना चाहिए?
जेफ

6
प्रश्न ने कहा "मैं n-SAT के विशेष मामले में प्रत्यक्ष कमी से भी खुश होऊंगा"
रयान विलियम्स

हाँ, यह काम करता है! मुझे लगता है कि मुझे उस अंतिम पंक्ति को जोड़ने से पहले थोड़ा और ध्यान से सोचना चाहिए था, लेकिन अगर मुझे अधिक सामान्य प्रश्न का उत्तर नहीं मिला तो मैं इसे स्वीकार करूंगा।
मिकोला

1
@ मिकोला शायद त्सीटीन या प्लाव्ड-ग्रीनबाउम परिवर्तन आपको 3CNF देता है? (मुझे पूरा यकीन नहीं है कि मैं इस सवाल को पूरी तरह से समझता हूं :))
मिकोलस

मैं सोच रहा था कि शाफ़्ट द्वारा विशेष रूप से k = 1 के लिए विस्तार किसी भी पुस्तक में क्यों नहीं दिखाई दे रहा है (कम से कम जो मैं अब तक आया था)। मेरा तर्क यह है कि परिभाषा के अनुसार शाब्दिक रूप से 'a1' नहीं हो सकता है, जिसे {a1, a1, a1} की तरह बढ़ाया नहीं जा सकता है। दूसरी ओर, आप {'a1' नहीं, 'a1', 'not a1]} नहीं कर सकते क्योंकि इसे यह पहचानने के लिए किसी अन्य तर्क की आवश्यकता है कि क्या मूल सत्तारूढ़ एक उपेक्षित शाब्दिक शामिल है या नहीं। यही कारण है कि (संभवतः) माइकल आर। गैरी और डेविड एस। जॉनसन सहित सभी लेखकों ने 'कार्लोस लिनारेस लोपेज़' द्वारा प्रस्तुत एक अलग एक्सटेंशन का उपयोग अपने यहाँ पोस्ट में किया है।
केज़हतक


19

यदि आपको k-SAT से 3-SAT में कमी की आवश्यकता है, तो शाफ़्ट का उत्तर ठीक काम करता है।

यदि आप जेनेरिक प्रपोजल फॉर्मूला से CNF (और 3-सैट) तक की सीधी कमी चाहते हैं - तो कम से कम "SAT सॉल्वर के नजरिए" से - मुझे लगता है कि आपके प्रश्न का उत्तर 'सबसे स्वाभाविक' कमी है ... ? , है: कोई 'प्राकृतिक' कमी नहीं है !

अध्याय 2 के निष्कर्ष से - (बहुत अच्छी) पुस्तक का "CNF एनकोडिंग" : संतुष्टि की पुस्तिका :

...
CNF में दी गई समस्या को मॉडल करने के लिए आमतौर पर कई तरीके हैं, और उनमें से कुछ दिशानिर्देश चुनने के लिए जाने जाते हैं। अक्सर चर के रूप में मॉडल करने के लिए समस्या सुविधाओं का एक विकल्प होता है, और कुछ को खोजने के लिए काफी सोचा जा सकता है। Tseitin एन्कोडिंग कॉम्पैक्ट और मैकेनिज़ेबल हैं लेकिन व्यवहार में हमेशा सबसे अच्छे मॉडल की ओर नहीं जाते हैं, और कुछ सबफॉर्मुले बेहतर तरीके से विस्तारित हो सकते हैं। कुछ खंडों को ध्रुवीयता के विचारों से हटा दिया जा सकता है, और निहित, समरूपता को तोड़ने या अवरुद्ध खंडों को जोड़ा जा सकता है। अलग-अलग एनकोडिंग के अलग-अलग फायदे और नुकसान हो सकते हैं जैसे कि आकार या समाधान घनत्व, और जो एक एसएटी सॉल्वर के लिए एक फायदा है वह दूसरे के लिए नुकसान हो सकता है। संक्षेप में, CNF मॉडलिंग एक कला है और हमें अक्सर अंतर्ज्ञान और प्रयोग द्वारा आगे बढ़ना चाहिए।
...

सबसे अधिक ज्ञात एल्गोरिथ्म Tseitin एल्गोरिथ्म (जी। Tseitin है। प्रोपलनल कैलकुलस में व्युत्पत्ति की जटिलता पर। रीजनिंग का स्वचालन: कम्प्यूटेशनल लॉजिक में शास्त्रीय पेपर्स, 2: 466-483, 1983। स्प्रिंगर-वर्लाग।)

CNF एनकोडिंग के अच्छे परिचय के लिए सुझाई गई पुस्तक हैंडबुक ओ सैटिसिबिलिटी पढ़ें । आप हाल के कुछ कार्यों को भी पढ़ सकते हैं और संदर्भ देख सकते हैं; उदाहरण के लिए:

  • पी। जैक्सन और डी। शेरिडन। बूलियन सर्किट के लिए खंड रूप रूपांतरण। एचएच होओस और डीजी मिशेल में, संपादकों, थ्योरी और एप्लिकेशंस ऑफ सैटिसिबिलिटी टेस्टिंग, 7 वें इंटरनेशनल कॉन्फ्रेंस, सैट 2004 , एलएनसीएस का वॉल्यूम 3542, पृष्ठ 183-198। स्प्रिंगर, 2004. (जिसका उद्देश्य खंड की संख्या को कम करना है)
  • पी। मानोलियोस, डी। व्रोन, कुशल सर्किट से सीएनएफ रूपांतरण। में सिद्धांत और satisfiability परीक्षण के अनुप्रयोग -। सैट 2007 (2007), पीपी 4-9

15

कृपया मुझे Ratchel के समान एक और समाधान पोस्ट करें, लेकिन कुछ अलग। यह सीधे स्टीवन स्कीना द्वारा "द एल्गोरिथम डिज़ाइन मैनुअल" के 2 संस्करण के अध्याय 9 से लिया गया है

  • यदि खंड में केवल एक शाब्दिक C = {z1} है, तो दो नए चर v1 और v2 और चार नए 3-शाब्दिक खंड बनाएं: {v1, v2, z1}, {! V1, v2, z1}, {v1! v2, z1} और {! v1; v2, z1}। ध्यान दें कि इन चार खंडों में से एक ही तरीका है कि एक साथ संतुष्ट किया जा सकता है अगर z1 = T, जिसका अर्थ है कि मूल इच्छा संतुष्ट होगी
  • यदि क्लॉज में दो शाब्दिक हैं, C = {z1, z2}, तो एक नया वैरिएबल v1 और दो नए क्लॉज बनाएं: {v1, z1, z2} और {! V1, z1, z2}। फिर, इन दोनों खण्डों को संतुष्ट करने का एकमात्र तरीका z1 और z2 में से कम से कम एक होना चाहिए, इस प्रकार से संतोषजनक है C
  • यदि क्लॉज में तीन शाब्दिक हैं, C = {z1, z2, z3}, तो C को 3-SAT उदाहरण में कॉपी करें
  • यदि खंड में 3 से अधिक लीटर C = {z1, z2, ..., zn} हैं, तो n-3 नए चर और n-2 नए खंड एक श्रृंखला में बनाएं, जहां 2 <= j <= n-2 के लिए , Cij = {v1, j-1, zj + 1,! Vi, j}, Ci1 = {z1, z2; vi; 1} और Ci, n-2 = {vi, n-3, zn-1! Zn}

1
@TayfunPay क्या आप बता सकते हैं कि आप इस समाधान को अधिक सही क्यों मानते हैं? डुप्लिकेटिंग वैरिएबल मेरे लिए अधिक स्वाभाविक लगता है, और मैंने जो 3SAT की किसी भी परिभाषा का उल्लंघन नहीं किया है। क्या कुछ तकनीकी है जो इस समाधान को बेहतर बनाती है?
क्रॉकेआ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.