अनोखा -सैट बेंचमार्क


16

यह प्रश्न संभवतः ऑन-टॉपिक और ऑफ़-टॉपिक के बीच की सीमा रेखा पर है, हालाँकि मैंने यहाँ इसी तरह के प्रश्न देखे हैं, इसलिए मैं इसे पूछूँगा।


मैं एक अनोखा -SAT सॉल्वर लागू कर रहा हूं , जिसका इनपुट -CNF फॉर्मूला है जिसमें अधिकतम संतोषजनक असाइनमेंट है। इसके व्यावहारिक व्यवहार का परीक्षण करने के लिए, मुझे इस तरह के सूत्रों का एक सेट चाहिए। मैंने वेब पर उनके लिए खोज की है, और कुछ भी नहीं पाया है (जबकि, दूसरी ओर, साधारण सीएनएफ फॉर्मूले के सूट को खोजना बहुत आसान है )।k केkk1k

मुझे विशिष्ट -सैट उदाहरण कहां मिल सकते हैं ?k

वैकल्पिक रूप से, मैं विशिष्ट संतोषजनक उदाहरण उत्पन्न करने के लिए किसी भी प्रक्रिया को जानने के लिए भी संतुष्ट रहूंगा। एकमात्र दृष्टिकोण जो मुझे पता है कि लगाए गए SAT उदाहरण पीढ़ी के नाम से जाना जाता है : आप बेतरतीब ढंग से चर का एक असाइनमेंट उत्पन्न करते हैं , तो आप केवल उन क्लॉज़ को उत्पन्न करते हैं जो इस तरह के असाइनमेंट से सहमत हैं। यह दृष्टिकोण निम्नलिखित कारणों से मेरे उद्देश्यों के लिए असंतोषजनक है:n

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

हम उचित संख्या वाले खंडों के साथ विशिष्ट रूप से संतोषजनक सूत्र कैसे उत्पन्न कर सकते हैं? द्वारा उचित मैं अधिकतम से दूर मतलब 2k(nk)


वेरिएबल और क्लॉज के साथ एसएटी फॉर्मूला । यदि खंडों की संख्या और तो सूत्र या तो विशिष्ट संतोषजनक है या संतोषजनक नहीं है। .. मैंने के-सैट के लिए भी समीकरणों पर काम किया था। तुम्हें पता चल जाएगा अगर मैं यह मिल जाए। एन एम 3 एन - 2 एन 3 एन - 2 एन - 2 एन - 1 एफFnm3n2n3n2n2n1F
तैफून पे

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

जवाबों:


7

यहाँ एक अनोखा -सैट उदाहरण उत्पन्न करने का एक तरीका है , जिसे SAT उदाहरण जिसे आप जानते हैं कि यह संतोषजनक है। द्वारा दिए गए सूत्र पर विचार करेंφ ψ ( एक्स )kφψ(x)

φ(x)h(x)=y,

जहां एक हैश समारोह है कि एक काम के नक्शे है के लिए एक -बिट मूल्य (के कुछ छोटे मूल्य के लिए ), और एक यादृच्छिक है -बिट मूल्य। यदि में लगभग संतोषजनक कार्य हैं, तो (हेयुरेटिक रूप से) हम मानते हैं कि एक पूर्णतया संतोषजनक कार्य (निरंतर संभावना के साथ) होगा। हम परीक्षण कर सकते हैं कि क्या यह सैट सॉल्वर (अर्थात् परीक्षण करें कि क्या संतोषजनक है? यदि यह है, और एक संतोषजनक कार्य है, तो परीक्षण करें कि क्या संतोषजनक है)। अगरएक्स कश्मीर कश्मीर y कश्मीर φ 2 कश्मीर ψ ψ एक्स 0 ψ ( एक्स ) x एक्स 0 कश्मीर कश्मीर कश्मीर = 1 , 2 , ... , एन एन एक्सhxkkykφ2kψψx0ψ(x)xx0kज्ञात नहीं है, आप द्विआधारी खोज का उपयोग करके प्राप्त कर सकते हैं या बस प्रत्येक उम्मीदवार मान (जहां बूलियन चर की संख्या ) का उपयोग करके।kk=1,2,,nnx

आप हैश फ़ंक्शन को स्वतंत्र रूप से चुन सकते हैं। आप शायद इसे यथासंभव सरल बनाना चाहेंगे। एक अत्यंत सरल निर्माण है के एक यादृच्छिक सबसेट चुन से बिट्स । एक थोड़ा और अधिक परिष्कृत निर्माण है की वें सा से दो अनियमित रूप से चुने बिट्स की XOR हो (प्रत्येक के लिए थोड़ा पदों की एक अलग जोड़ी चुनने , स्वतंत्र रूप से)। रखते हुए सरल रखना होगा अपेक्षाकृत सरल।कश्मीर एक्स मैं ( एक्स ) एक्स मैं ψhkxih(x)xihψ

इस तरह के परिवर्तन का उपयोग कभी-कभी किया जाता है / सुझाव दिया जाता है, एक सूत्र को संतोषजनक कार्य की संख्या का अनुमान लगाने के लिए एक योजना के भाग के रूप में ; मैंने इसे आपकी विशेष आवश्यकता के लिए अनुकूलित किया है।φ

आप इंटरनेट पर SAT उदाहरणों के कई परीक्षण पा सकते हैं, और आप उन सभी के लिए इस परिवर्तन को लागू कर सकते हैं, जो अद्वितीय -सैट उदाहरणों का संग्रह प्राप्त कर सकते हैं ।k


एक और संभावना क्रिप्टोग्राफी से अद्वितीय एसएटी उदाहरण उत्पन्न करने के लिए होगी । उदाहरण के लिए, मान लीजिए एक क्रिप्टोग्राफ़िक एक-तरफ़ा क्रमांकन है। आज्ञा देना एक बेतरतीब ढंग से चुना तत्व , और । तब द्वारा दिया गया सूत्र एक विशिष्ट -SAT उदाहरण है। एक अन्य उदाहरण के रूप में, दो बड़े अभाज्य संख्या अनियमित रूप से उठाओ , और । फिर द्वारा दिया गया सूत्र: { 0 , 1 } n{ 0 , 1 } एन एक्स { 0 , 1 } n y = ( एक्स ) φ ( एक्स ) ( एक्स ) = y कश्मीर पी , क्यू n = पी क्ष φ ( एक्स , y ) एक्स y = n एक्स >kf:{0,1}n{0,1}nx{0,1}ny=f(x)φ(x)f(x)=ykp,qn=pqφ(x,y)xy=nx>1y>1xy(बिट-स्ट्रिंग्स और पूर्णांकों के बीच स्पष्ट पत्राचार के साथ) एक अनूठा -सैट उदाहरण है। हालाँकि, ये निर्माण बेंचमार्क को बेंचमार्क या ऑप्टिमाइज़ करने के लिए एक उपयोगी तरीका नहीं है। उन सभी के पास एक विशेष संरचना है, और यह मानने का कोई कारण नहीं है कि यह संरचना वास्तविक दुनिया की समस्याओं का प्रतिनिधि है। विशेष रूप से, क्रिप्टोग्राफ़िक समस्याओं से तैयार सैट उदाहरणों को बहुत कठिन, सैट सॉल्वर्स के कई अन्य वास्तविक दुनिया अनुप्रयोगों से खींचे गए सैट उदाहरणों की तुलना में बहुत कठिन माना जाता है, इसलिए वे आपके सॉल्वर को बेंचमार्क करने के लिए बहुत अच्छा आधार नहीं हैं।k


सामान्य तौर पर, तकनीक इस जवाब में वर्णित सभी दोष यह है कि वे अद्वितीय उत्पन्न है एक विशेष संरचना के साथ -SAT उदाहरणों, इसलिए वे नहीं हो सकता है कि आप क्या ढूंढ रहे हैं - या कम से कम, आप भरोसा करने के लिए नहीं चाहते हो सकता है पूरी तरह से इस तरह से उत्पन्न सूत्रों पर। एक बेहतर तरीका यह होगा कि आप अनूठे -SAT के अनुप्रयोगों की पहचान करें (जो आपको लगता है कि आपके सॉल्वर का उपयोग करने जा रहा है, और किस उद्देश्य के लिए?), और फिर उन एप्लिकेशन डोमेन से कुछ यथार्थवादी उदाहरण प्राप्त करने का प्रयास करें।कश्मीरkk

संबंधित विषय के लिए, दिलचस्प कॉम्बीनेटरियल ऑप्टिमाइज़ेशन समस्याएं उत्पन्न करना भी देखें


आपके क्रिप्टो पैराग्राफ का पहला भाग गलत है, क्योंकि (यदि एक तरफ़ा फ़ंक्शंस मौजूद हैं) तो एक-तरफ़ा फ़ंक्शंस मौजूद हैं जो इंजेक्टिव नहीं हैं।

धन्यवाद, @ रिकीडेमर! मेरा मतलब एक तरफ़ा क्रमोन्नति से था, लेकिन मैंने ऐसा नहीं लिखा। फिक्स्ड।
DW

6

आप उन पहेलियों पर विचार कर सकते हैं जिनका उपयोग सुडोकू पहेलियों को उत्पन्न करने के लिए किया जाता है - संभवतः लिए सामान्यीकृत - चूंकि (आमतौर पर) सुडोकू पहेलियों का एक अनूठा समाधान होना चाहिए। दूसरी ओर, सुडोकू पहेलियाँ भी आमतौर पर कम से कम एक समाधान होने की गारंटी होती हैं ... लेकिन उस समाधान को ढूंढना अभी भी अपने सॉल्वर के लिए एक अच्छा बेंचमार्क हो सकता है।n×n

आप सैट में कमी के साथ एक सुडोकू-जनरेटर का उपयोग कर सकते हैं, या आप यह सोच सकते हैं कि सुडोकू पीढ़ी में उपयोग की जाने वाली तकनीकों को और अधिक सीधे यूटी सैट उदाहरणों को कैसे उत्पन्न किया जाए। पूर्व के लिए, स्पष्ट रूप से आपके SAT उदाहरणों में कुछ संरचना होगी, लेकिन यह मेरे लिए अस्पष्ट है कि क्या यह समाधान की तुलना में अधिक या कम संरचना है या साक्षी अलगाव तकनीक का उपयोग करके। संभवतः आपकी आवश्यकताओं और आपके विलायक पर निर्भर करता है।

एक संदर्भ जो मुझे यहां पता है वह है: सुडोकू पहेलियाँ उत्पन्न करना: आसान से बुराई तक


4

मुझे लगता है कि एक अच्छा परीक्षण मामला बाधाओं के साथ यादृच्छिक विशिष्ट संतोषजनक 3XOR इंस्टेंसेस (लगाए गए इंस्टेंसेस) उत्पन्न करेगा और फिर उन्हें 3SAT इंस्टेंस में परिवर्तित करेगा।Θ(n)


2

imho सबसे अच्छा तरीकों में से एक बनाने के लिए "संभवतः कठिन" SAT उदाहरणों को नियंत्रित करते हुए समाधानों की संख्या बाइनरी में एन्कोडिंग फैक्टरिंग सर्किट / सर्किट से होती है। कोड बहुत जटिल नहीं है, यह मुख्य रूप से ईई जोड़ सर्किट का उपयोग करता है, और "बड़े" सैट उदाहरणों के लिए नेतृत्व नहीं करता है। समाधानों की संख्या कारकों की संख्या के बराबर है (कारकों के "क्रमपरिवर्तन" सहित)। इसलिए अभाज्य संख्याएँ वास्तव में दो समाधान उत्पन्न करती हैं, । एकमात्र समाधान एक और "तुलना" बाधा है कि करने के लिए कारकों को प्रतिबंधित करता है के साथ गारंटी दी जा सकती एक <(1,p),(p,1)a<ba1bp

इस दृष्टिकोण के साथ भी मोटे तौर पर संख्याओं का पता लगाना अपेक्षाकृत आसान है, लेकिन कई कारक / समाधान वांछित हैं। "चिकनी" संख्या, और अधिक कारकों।

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

एक और अनुभवजन्य / पुनरावृत्त दृष्टिकोण जो कुछ के लिए उपयोगी हो सकता है, अधिक "असंरचित" उदाहरण बनाने के लिए: संक्रमण बिंदु के पास यादृच्छिक सैट उदाहरण बनाएँ (उस क्षेत्र में जहां समीकरण "संभाव्य और अयोग्य" के बीच 50% संभावना है), और फिर समीकरण हल करें। अगर यह बेकार है, तो फेंक दें और पुनः आरंभ करें। यदि यह हल करने योग्य है, तो उस क्लॉस को जोड़ें जो समाधान को "न" करने के लिए पाए गए समाधान को प्रतिबंधित करता है, n + 1 प्राप्त करता है , और पुनः हल करता है। यदि आवश्यक हो तो दोहराएं। जब समीकरण e n + 1 अब सॉल्व नहीं होता है, तो e n का एकल / अद्वितीय समाधान होना चाहिए था।enen+1en+1en


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

इसलिए ऊपर एक अलग पोव है कि अगर कोई बहुत कठिन उदाहरण चाहता है, तो जाहिर है कि किसी भी सॉल्वर के लिए एक प्राकृतिक परीक्षण मामला है, तो फैक्टरिंग वास्तव में एक आशाजनक तरीका है। गंभीरता से संदेह है कि आप किसी भी प्रकाशित राय पा सकते हैं जो आपका दर्पण है। कई वर्षों पहले शुरू होने वाले गंभीर शोधकर्ता (एस) द्वारा डीआईएमएसीएस चुनौती अभिलेखागार में दोहराए जाने वाले फैक्टरिंग उदाहरणों को दोहराया गया है। वैसे भी, आपकी विपरीत राय वास्तव में आत्मनिर्भर तरीके से व्यक्त नहीं की जाती है। क्रिप्टोग्राफी वास्तव में एसएटी उदाहरणों के लिए उपयोग किए जाने वाले कई सार / संक्षिप्त / शैक्षणिक समस्याओं की तुलना में वास्तव में एक अग्रणी / लागू वास्तविक दुनिया की समस्या है ...
vzn

2

आप आसानी से उचित आकार के साथ सीधे विशिष्ट SAT फ़ार्मुलों को उत्पन्न कर सकते हैं (|F|<n+2k)

चलो अनूठा मॉडल हो - जैसे कि मीटर केवल "0" s (चर बाद में यदि आवश्यक हो तो नाम बदलने) शामिल हैं। चलो एफ एक कश्मीर -SAT सूत्र केवल से संतुष्ट मीटर - का अधिकतम आकार एफ से संतुष्ट खंड की कुल संख्या है मीटर यानी ( 2 कश्मीर - 1 ) ( nmm
FkmFm(2k1)(nk)

ले खंड है कि एक "1" के बीच वास्तव में बताए सभी मॉडलों को खत्मएक्स1,एक्स2...एक्सकश्मीर:(¬एक्स1,एक्स2...एक्सकश्मीर)(एक्स1,¬एक्स2...एक्सकश्मीर)...(एक्स1,एक्स2...¬एक्सकश्मीर)(k1)x1,x2xk
(¬x1,x2xk)(x1,¬x2xk)(x1,x2¬xk)

ले खंड है कि सभी मॉडलों को खत्म बताए ठीक दो "1" के बीचएक्स1,एक्स2...एक्सकश्मीर:(¬एक्स1,¬एक्स2,एक्स3...एक्सकश्मीर)(¬एक्स1,x2,¬एक्स3...एक्सकश्मीर)...(एक्स1,एक्स2...¬एक्सकश्मीर-1¬(k2)x1,x2xk
(¬x1,¬x2,x3xk)(¬x1,x2,¬x3xk)(x1,x2¬xk1¬xk)

एकमात्र ( k) लेने तक चलते रहें खंड जोx1,x2xk केबीच प्रत्येक चर के लिए "1" असाइन करने वाले सभी मॉडलों को समाप्त करता है।(kk)x1,x2xk

केवल मॉडल जो अभी तक समाप्त नहीं हुए हैं वे सभी से "0" तक असाइन करते हैं । के बाद से मीटर एक मॉडल है, तो के किसी सेट ले n - कश्मीर खंड है कि "1" बताए करने के लिए सभी मॉडलों को खत्म एक्स मैं ( कश्मीर < मैं n ) और 0 किसी भी करने के लिए कश्मीर - 1 के बीच चर एक्स 1 , एक्स 2 ... एक्स कश्मीर उदाहरण के लिए: ( ¬ एक्स कश्मीर + 1x1,x2xkmnkxi(k<in)0k1x1,x2xk
(¬xk+1,x1,xk1)(¬xn,x1xk1)

तब |F|=i=1k(ki)+nk=2k1+nk

अधिक खंड प्राप्त करने के लिए, कम से कम एक नकारात्मक चर वाले किसी भी खंड को जोड़ें। एक असंतोषजनक सूत्र प्राप्त करने के लिए, बस unggated चर के साथ एक खंड जोड़ें ।k


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