सैट सॉल्वरों के लिए एन-आउट-ऑफ-एन-एन बाधा


25

मैं किसी समस्या का एनकोड करने के लिए SAT सॉल्वर का उपयोग कर रहा हूँ, और SAT उदाहरण के भाग के रूप में, मेरे पास बूलियन वैरिएबल जहाँ यह इरादा है कि इनमें से एक सही होना चाहिए और बाकी सब होना चाहिए झूठा होना। (मैंने कभी-कभी इसे "एक-गर्म" एन्कोडिंग के रूप में वर्णित देखा है।)x1,x2,,xn

मैं बाधा सांकेतिक शब्दों में बदलना चाहता हूँ "की ठीक एक बाहर सच होना चाहिए" सैट में। इस बाधा को सांकेतिक शब्दों में बदलना, सैट सॉल्वर को यथासंभव कुशलता से चलाने का सबसे अच्छा तरीका क्या है?x1,,xn

मैं इस बाधा को एनकोड करने के कई तरीके देख सकता हूं:

  • जोड़ीदार बाधाओं। मैं जोड़ो में कमी जोड़ सकता है सब के लिए मैं , जे सुनिश्चित करने के लिए अधिक से अधिक एक है कि x मैं सच है, और फिर जोड़ने के एक्स 1एक्स 2एक्स एन सुनिश्चित करना है कि कम से कम एक सच है।¬xi¬xji,jxix1x2xn

    यह कहते हैं खंड और बिना किसी अतिरिक्त बूलियन चर।Θ(n2)

  • बाइनरी एन्कोडिंग। मैं दे सकते हैं नई बूलियन चर मैं 1 , मैं 2 , ... , मैं lg n (बाइनरी में) का प्रतिनिधित्व करने के एक पूर्णांक मैं ऐसा है कि 1 मैं n (कुछ बूलियन की कमी जोड़ने सुनिश्चित करना है कि मैं वांछित सीमा में है )। फिर, मैं इस बात को जोड़ सकता हूं कि x i ट्री है और अन्य सभी x j झूठे हैं। दूसरे शब्दों में, प्रत्येक j के लिए , हम उस i = j को लागू करने वाले खंड जोड़ते हैंlgni1,i2,,ilgni1inixixjji=jxj

    यह क्लॉज़ जोड़ता है और मुझे नहीं पता कि कितने अतिरिक्त बूलियन वैरिएबल हैं।Θ(nlgn)

  • सच्चे मूल्यों की संख्या गिनें। मैं बूलियन योजक सर्किट के एक पेड़ को लागू करने और आवश्यकता हो सकती है कि , प्रत्येक इलाज x मैं 0 के रूप में या किसी असत्य या सच के बजाय 1, और Tseitin सैट करने के लिए सर्किट कन्वर्ट करने के लिए बदलने का उपयोग खंड। अर्ध-योजक का एक पेड़ होता है: प्रत्येक अर्ध-योजक के कैरी आउटपुट को 0 होना चाहिए और अंतिम हाफ़-योजक के अंतिम उत्पादन में बाधा डालना 1. पेड़ को किसी भी आकार का चुना जा सकता है ( संतुलित बाइनरी ट्री, या असंतुलित, या जो भी हो)।x1+x2++xn=1xi

    इस में किया जा सकता फाटकों और इस तरह कहते हैं Θ ( n ) खंड और Θ ( n ) नई बूलियन चर।Θ(n)Θ(n)Θ(n)

    इस दृष्टिकोण का एक विशेष मामला बूलियन चर शुरू करने की है , विचार है कि साथ y मैं के मूल्य को शामिल करना चाहिए एक्स 1एक्स 2एक्स मैं । इस आशय खंड जोड़कर लागू किया जा सकता y मैं¬ एक्स मैं , y मैं¬ y मैं - 1 , और ¬ y मैंएक्स मैंy मैं -y1,,ynyix1x2xiyi¬xiyi¬yi1 =(जहाँ हम y 0 को असत्य के पर्याय के रूप मेंमानते हैं)i=1,,n के लिए। इसके बाद, हम प्रतिबंध जोड़ सकते हैं¬ y मैं¬ एक्स मैं + 1 के लिएमैं=1,2,...,n-1। यह मूल रूप से एक अर्ध-योजक वृक्ष के टेसिटिन परिवर्तन के बराबर है, जहां वृक्ष की अधिकतम असंतुलित आकृति होती है।¬yixiyi1y0i=1,,n¬yi¬xi+1i=1,2,,n1

  • तितली नेटवर्क। मैं एक बना सकते हैं तितली नेटवर्क पर बिट्स, विवश n -बिट इनपुट होने के लिए 000 01 , विवश n -बिट उत्पादन होने की एक्स 1 एक्स 2एक्स एन , और एक स्वतंत्र गेट के रूप में प्रत्येक 2-बिट तितली गेट का इलाज या तो स्वैप करता है या उसके इनपुट को स्वैप नहीं करता है जिसके निर्णय के साथ एक नए नए बूलियन वैरिएबल पर आधारित होता है जो कि अप्रयुक्त छोड़ दिया जाता है। फिर, मैं सर्किट को सैट क्लॉस में बदलने के लिए टेसिटिन ट्रांसफ़ॉर्म लागू कर सकता हूं।nn00001nx1x2xn

    इसके लिए आवश्यक है फाटकों और इस तरह कहते हैं Θ ( n एलजी n ) खंड और Θ ( n एलजी n ) नई बूलियन चर।Θ(nlgn)Θ(nlgn)Θ(nlgn)

क्या कोई अन्य तरीके हैं जिनकी मैंने अनदेखी की है? मुझे किसका उपयोग करना चाहिए? क्या किसी ने यह परीक्षण किया है या उन्हें प्रयोगात्मक रूप से आज़माया है, या किसी को इनमें से किसी के साथ कोई अनुभव नहीं है? क्या सैट सॉल्वर के प्रदर्शन पर इसके प्रभाव का आकलन करने के लिए क्लॉज़ और / या नए बूलियन वेरिएबल्स की संख्या एक अच्छा स्टैंड-इन मीट्रिक है, या यदि नहीं, तो आप किस मीट्रिक का उपयोग करेंगे?


मैंने अभी देखा कि इस उत्तर में SAT के लिए कार्डिनैलिटी की कमी को लागू करने के लिए कुछ संदर्भ हैं, यानी, इस कसौटी को लागू करना कि एन वेरिएबल्स में से वास्तव में सही हैं। तो, मेरा प्रश्न एक विशेष मामले में आता है जहां k = 1 । हो सकता है कि हृदय संबंधी बाधाओं पर साहित्य मेरे प्रश्न पर प्रकाश डालने में मदद करे।knk=1


अधिकांश आधुनिक एसएटी सॉल्वर कार्डिनैलिटी क्लॉज़ और अन्य विशेष (गैर-सीएनएफ) बाधाओं का समर्थन करते हैं।
दाविद होरवथ

जवाबों:


12

N वेरिएबल्स k के बाहर जहाँ k = 1 के विशेष मामले के लिए, कमांडर वेरिएबल एन्कोडिंग है जैसा कि कुशल CNF एनकोडिंग में क्लेबर और क्वॉन द्वारा 1 से N ऑब्जेक्ट्स का चयन करने के लिए वर्णित किया गया है। सरलीकृत: चर को छोटे समूहों में विभाजित करें और उन क्लॉस को जोड़ें जो एक कमांडर चर की स्थिति का कारण बनाते हैं कि चर का एक समूह या तो सभी गलत है या सभी-लेकिन-एक गलत है। फिर कमांडर चर के लिए एक ही एल्गोरिदम को पुन: लागू करें। प्रक्रिया के अंत में मांग है कि अंतिम कमांडर चर के मुट्ठी भर में से एक सच हो। परिणाम O (n) नए खंड और O (n) नए चर हैं।

डीपीएलएल आधारित सॉल्वरों में दो-देखा-शाब्दिक की सर्वव्यापकता को देखते हुए, मुझे लगता है कि ओ (एन) क्लॉज वृद्धि एन्कोडिंग योजनाओं पर एक निर्णायक लाभ है जो अधिक खंड जोड़ देगा।


2
यदि "छोटे समूह" का आकार दो है, तो यह केवल द्विआधारी जोड़ है, जहां "कमांडर" परिणाम बिट है, और कैरी झूठे होने का दावा किया जाता है। फिर से किया, यह विधि पूरी तरह से सामान्य है (एन के 1 के लिए काम करता है) और वास्तव में व्यावहारिक रूप से संभव है।
d8d0d65b3f7cf42 11

3

मैग्नस ब्योर्क के एक पेपर में दो तकनीकों का वर्णन किया गया है जो कोशिश करने लायक हो सकती हैं।

1-आउट-ऑफ- , एक एक साथ एक-गर्म और बाइनरी एन्कोडिंग दोनों का उपयोग कर सकता है । इस प्रकार, हमारे पास x 1 , , x n एक-गर्म एन्कोडिंग के रूप में, और y 1 , , y b एक बाइनरी एन्कोडिंग के रूप में है, जहां b = lg n । हम आसानी से "कम से कम एक" बाधा सांकेतिक शब्दों में बदलना कर सकते हैं, एक एकल खंड में: ( एक्स 1एक्स एन ) । हम यह भी के अनुरूप होना करने के लिए दो एन्कोडिंग मजबूर कर सकते हैं 2 एलजी nnx1,,xny1,,ybb=lgn(x1xn)2lgnखंड: हम केवल x i जोड़ते हैं या एक्स मैंxi¬yj , के अनुसार कि i की बाइनरी एन्कोडिंग का j बिट0 या 1. है, अंत में, "सबसे अधिक एक" बाधा स्वचालित रूप से अनुसरण करती है। यह बाकी एसएटी उदाहरण को भी जो भी एन्कोडिंग का उपयोग करने के लिए अधिक सुविधाजनक है, की अनुमति देता है।xiyjji

के लिए आउट के- n , एक के लिए इनपुट एक छँटाई नेटवर्क आवेदन कर सकते हैं एक्स 1 , ... , एक्स एन क्रमबद्ध उत्पादन प्राप्त करने के लिए y 1 , ... , y एन , और फिर एक खंड की आवश्यकता होती है कि जोड़ने y कश्मीर सच है और y k + 1 झूठा है। कई सरल छंटनी वाले नेटवर्क हैं जिन्हें केवल O ( n lg 2 n ) तुलनित्र इकाइयों की आवश्यकता है। इसलिए, हमें O ( n lg 2) का उपयोग करने वाला एन्कोडिंग मिलता हैknx1,,xny1,,ynykyk+1O(nlg2n)O(nlg2n)

कागज है

मैग्नस ब्योर्क। सफल सैट एनकोडिंग तकनीक । 25 जुलाई 2009।

nkn

एलन एम। फ्रिस्क, पॉल ए। जियानारोस। एट-मोस्ट-के-कॉन्स्ट्रेन्ड के सैट एनकोडिंग्स: सम ओल्ड, सम न्यू, सम फास्ट, सम स्लो । ModRef 2010।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.