मल्टीकोर सैट सॉल्वर


12

मैं एक 25k खंड 5k चर SAT समस्या को हल करने की कोशिश कर रहा हूँ। जैसा कि यह एक घंटे (प्रीसोसैट) के लिए चल रहा है और मैं बाद में बड़े लोगों को हल करना चाहूंगा, मैं एक मल्टी-कोर एसएटी-सॉल्वर की तलाश कर रहा हूं।

जैसा कि कई SAT-Solvers लगते हैं, मैं काफी खो गया हूं।

क्या कोई मुझे मेरे मामले के लिए सबसे अच्छा संकेत दे सकता है?

मुझे खुशी होगी अगर कोई मुझे अनुमानित समय दे सकता है (यदि संभव हो तो)।


1
आप तैयार कार्यक्रमों की तलाश कर रहे हैं? फिर यह पूछने के लिए सबसे अच्छी साइट नहीं है। आप SAT- हल के बारे में सीखना चाहते हैं? स्वागत हे! तुम कहते हो तुमने खोजा है; आपको क्या मिला? आपको क्या भ्रमित करता है?
राफेल

खैर, मैंने कई StackExchange मंचों पर SAT से संबंधित थ्रेड्स की संख्या को देखा। मैंने सैद्धांतिक सीएस और सीएस के बीच चयन किया है (और बाद में चुनें)। मुझे तैयार नाम कार्यक्रम के लिए कहां से पूछना चाहिए था? धन्यवाद।
मुलत्सोलाव

जवाबों:


8

इस वर्ष सैट 2013 प्रतियोगिता के परिणामों पर एक नज़र डालें । इन परिणामों के आधार पर, लिंगलिंग को एक कोशिश जरूर दें । Plingeling इसके समानांतर संस्करण है।

यदि आपको असंतोषजनकता साबित करने की आवश्यकता नहीं है (शायद आपको पता है कि उदाहरण संतोषजनक है, और आपको बस इसे SAT बनाने के लिए असाइनमेंट जानना होगा), तो आप स्थानीय खोज विधियों को भी आज़मा सकते हैं।


धन्यवाद। मैं (पी) लिंगलिंग पर एक नज़र डालूंगा। इसके अलावा, मेरे पास कोई विचार नहीं है यदि यह संतोषजनक है (हालांकि यह बेहतर होगा, अन्यथा मैं फंस गया हूं)।
मटोलात्सोव

+1। हमारे अनुभव के आधार पर, प्लिंगलिंग निश्चित रूप से है जिसे आपको पहले प्रयास करना चाहिए (कम से कम यदि आपके पास एक कंप्यूटर है जिसमें कई कोर और बहुत सारी मेमोरी है)। और भी अधिक प्रदर्शन के लिए, संभव के रूप में कई नोड्स के साथ एक कंप्यूटिंग क्लस्टर खोजने का प्रयास करें और विभिन्न यादृच्छिक बीजों के साथ लिंगलिंग (या प्लिंगलिंग) के कई उदाहरण चलाएं।
जुक्का सुकोला

4

मैं व्यावहारिक बहु-सॉल-सॉल्वर के अस्तित्व के बारे में निश्चित नहीं हूं, लेकिन कुछ परियोजनाएं और कागजात हैं:

मुझे यह दिलचस्प बिंदु भी मिला: आप मल्टी-कोर प्रभाव प्राप्त करने के लिए समानांतर में एक ही समस्या पर अलग-अलग बीजों के साथ कई बार एक नियमित रूप से सैलेवर चला सकते हैं।

संपादित करें: vzn के विचार पर मेरी टिप्पणियों को यहाँ शामिल करना:

इसी तरह की वैकल्पिक विधि बस एक एकल चर का चयन करना है, इसके मूल्य को सही पर सेट करें, एक सॉल्वर उदाहरण के लिए भेजें। इसके मान को असत्य पर सेट करें, और इसे दूसरे सॉल्वर उदाहरण पर भेजें। आप इसे चर के लिए कर सकते हैं , और प्रक्रियाओं को एक साथ चला सकते हैं। सेट करने के लिए चर चुनना थोड़ा मुश्किल हो सकता है, अर्थात। यदि वे सीधे एक-दूसरे पर निर्भर हैं, तो एक और फिर एक को चुनना व्यर्थ है। क्रमिक / पुनरावर्ती विकल्प करने के लिए एक सरलीकरण कदम आवश्यक हो सकता है।2 केk2k


(मुझे खुशी होगी अगर कोई मुझे एक्स क्लॉज़ Y टेबल चर समस्या को हल करने के लिए अनुमानित समय (यदि संभव हो तो) दे सके।)

कोई भी आपको चर, क्लॉस के आधार पर अनुमानित समय नहीं दे सकता है , क्योंकि कुछ सैट समस्याएं बेहद कठिन हैं (पढ़ने के लिए: ऐसा नहीं होने वाला) हल करने के लिए, यहां तक ​​कि अपेक्षाकृत छोटे ; जबकि अन्य विशाल उदाहरण अपेक्षाकृत जल्दी से हल किए जा सकते हैं (और यह इन उदाहरणों के लिए है कि सॉल्वर उपयोगी हैं)।एन एम , एनmnm,n


लिंक के लिए धन्यवाद। मैं उनमें से कुछ पढ़ूंगा। मुझे उम्मीद है कि मेरी समस्या को हल करना बहुत मुश्किल नहीं है।
मुलत्ससोलव

@ मुलतत्सोलव यह समस्या पर निर्भर करता है। यह एन्कोडिंग पर भी निर्भर करता है। एसएटी सॉल्वर एक ही समस्या के विभिन्न एनकोडिंग को अलग-अलग तरीके से संभाल सकते हैं। और अलग सैट सॉल्वर एक एन्कोडिंग की तुलना में दूसरे पर बेहतर हो सकता है; इस के लिए कोई विज्ञान नहीं है (अच्छी तरह से वहाँ है, लेकिन यह समझने की कोशिश करने से परे है, सैट सॉल्वरों के तेजी से विकसित विकास में): केवल एक चीज यह है कि एनकोडिंग और सॉल्वर के विभिन्न संयोजनों का प्रयास करें।
रियलज स्लाव

3

किसी भी सैट सॉल्वर को एक समानांतर संस्करण में बदलने का वास्तव में एक बहुत ही सरल तरीका है क्योंकि सैट निम्नलिखित अर्थों में शर्मनाक समानांतर है।

इसे विभाजित करने के लिए दो की कुछ शक्ति चुनें, । फिर चरों का चयन करें और सभी संभावित बूलियन मान निर्दिष्ट करें। वहाँ हो जाएगा कार्य के बाद सैट सूत्रों जिसके परिणामस्वरूप। हर एक को अलग-अलग (समानांतर में) हल करें। यदि कोई एक अलग समाधान मौजूद है, तो उसका संपूर्ण समाधान मौजूद है और पूर्ण समाधान बिल्कुल सभी अलग समाधानों का मिलन है। एन 2 एन2nn2n


केn आमतौर पर बहुत बड़ा होता है (यह क्लॉज-चर ग्राफ पर मिन-कट होता है, और यह शायद पिछले दरवाजे से बड़ा होता है)। इसी तरह की वैकल्पिक विधि बस एक एकल चर का चयन करना है, इसके मूल्य को सही पर सेट करें, एक सॉल्वर उदाहरण के लिए भेजें। इसके मान को असत्य पर सेट करें, और इसे दूसरे सॉल्वर उदाहरण पर भेजें। आप इसे वेरिएबल्स के लिए कर सकते हैं । सेट करने के लिए चर चुनना थोड़ा मुश्किल हो सकता है, अर्थात। यदि वे सीधे एक-दूसरे पर निर्भर हैं, तो एक और फिर एक को चुनना व्यर्थ है। क्रमिक / पुनरावर्ती विकल्प करने के लिए एक सरलीकरण कदम आवश्यक हो सकता है। k
रियलज स्लाव

3
यह दृष्टिकोण व्यवहार में बहुत अच्छा काम नहीं करता है। सकारात्मक उदाहरणों के लिए, निम्न दृष्टिकोण आम तौर पर बहुत बेहतर होता है यदि आपके पास बहुत सारे कंप्यूटर हैं: बस उसी उदाहरण के साथ lingeling चलाएं , लेकिन विभिन्न यादृच्छिक बीज और तब तक प्रतीक्षा करें जब तक कि सॉल्वरों में से कोई एक समाधान न मिल जाए।
जुका सुओमेला

@ जुक्का जो दृष्टिकोण और क्यों यह बहुत अच्छी तरह से काम नहीं करता है? क्या यह कार्यभार में असंतुलन के कारण है? rs में विभाजन के बारे में एक अच्छी बात है कि वर्कलोड को समान रूप से विभाजित नहीं किया जा सकता है, लेकिन यह उदाहरण संरचना पर (समरूपता) पर निर्भर करता है, और वह शुरू में आसान ऐसे चर का चयन करता है जो विभाजन के समान प्रतीत होते हैं। शाम होते ही # खंड का परिणाम। realz, बारे में बिंदु को पिछले दरवाजे के बारे में नहीं समझा ... लगता है कि n
बैकस्टेड

1
@vzn: आपके द्वारा सुझाया गया दृष्टिकोण। यह देखने के लिए कि यह बहुत अच्छी तरह से काम क्यों नहीं करता है, इसे वास्तविक दुनिया के उदाहरणों के साथ आज़माएं और जो मैंने सुझाया है उसकी तुलना करें। :) यदि आप एक भोली backtracking खोज एल्गोरिथ्म के साथ काम कर रहे थे, तो आपका दृष्टिकोण बहुत समझ में आता है, लेकिन आधुनिक SAT सॉल्वर भोले-भाले खोज से बहुत अधिक हैं।
जुल्का सुमेला

ठीक है, लेकिन क्या आप शब्दों में बता सकते हैं कि मुद्दा क्या है ? आपका दृष्टिकोण संतोषजनक उदाहरणों के लिए काम कर सकता है, लेकिन क्या यह एक असंतोषजनक उदाहरण की खोज करने के लिए समानांतर में एक ही समय लेगा, चाहे कितने अलग-अलग उदाहरण चलाए जाएं? यदि नहीं, तो शायद उप पर उद्धृत करने के लिए एक रेफरी है ...
vzn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.