RSA से SAT तक फास्ट रिडक्शन


28

स्कॉट आरोनसन के ब्लॉग पोस्ट ने आज जटिलता में दिलचस्प खुली समस्याओं / कार्यों की एक सूची दी। विशेष रूप से मेरा ध्यान आकर्षित किया:

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

इसने मेरे सवाल को ट्रिगर किया: आरएसए / फैक्टरिंग की समस्याओं को कम करने के लिए मानक तकनीक क्या है, और यह कितनी तेजी से है? क्या इस तरह के मानक में कमी है?

बस स्पष्ट होने के लिए, "तेज" से मेरा मतलब बहुपद समय नहीं है। मैं सोच रहा हूं कि क्या हमारे पास कटौती की जटिलता पर ऊपरी ऊपरी सीमाएं हैं। उदाहरण के लिए, क्या एक ज्ञात घन कमी है?

जवाबों:


26

एसएटी के लिए फैक्टरिंग (आरएसए) को एनकोड करने के लिए एक दृष्टिकोण गुणक सर्किट (हर सर्किट को सीएनएफ के रूप में एन्कोड किया जा सकता है) का उपयोग करना है।

मान लेते हैं कि हमें 2n बिट्स, C = (c_1, c_2, \ cdots, c_ {2n}) _ 2 के साथ पूर्णांक C दिया गया है । हम दो n -bit पूर्णांक A = (a, \ cdots, an) और A = (b_1, \ cdots, b_n) को खोजने में रुचि रखते हैं , जिसका उत्पाद C = A * B हैC2nC=(c1,c2,,c2n)2nA=(a1,,an)A=(b1,,bn)C=AB

सबसे भोली एन्कोडिंग कुछ इस तरह हो सकती है: हम जानते हैं कि

c2n=anbn
c2n1=(anbn1)xor(an1bn)
Carry:d2n1=(anbn1)(an1bn)
c2n2=(anbn2)xor(an1bn1)xor(an2bn)xord2n1
...

तब टेसिटिन परिवर्तन का उपयोग करके, उपरोक्त एन्कोडिंग को सीएनएफ में अनुवाद किया जा सकता है।

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

गुणन के लिए अन्य सर्किट हैं जो इस उद्देश्य के लिए उपयोग किए जा सकते हैं, लेकिन वे एक बड़े सीएनएफ का उत्पादन करते हैं।


10
कुक और मिशेल द्वारा "संतुष्टि की समस्या का पता लगाना: एक सर्वेक्षण" के खंड 6.1 में, वे इस समस्या को एक चुनौती के रूप में उपयोग करते हैं।
अमीर

आप कैसे जानते हैं कि A और B की लंबाई n बिट होनी चाहिए, यह n - 1 और n बिट्स नहीं हो सकता है। यकीन के लिए यह 2n बिट और 1 बिट हो सकता है।
इल्या गज़मैन

1
@ बाबू: अगर हम सामान्य फैक्टराइजेशन के बारे में बात कर रहे हैं, तो आप सही हैं। लेकिन आरएसए के मामले के लिए, हम जानते हैं कि प्रत्येक दो अपराधों में से प्रत्येक में बिट्स हैं। n
आमिर

मैं समझता हूं कि आप जवाब देंगे लेकिन मुझे नहीं पता कि इसे कैसे जारी रखा जाए। क्या आप कृपया दिखा सकते हैं । c2n2
इल्या गज़मैन


18

@Amir ने जो लिखा है, उसका विस्तार करते हुए, मैं निम्नलिखित अच्छे वेब पेज पर आया, जो एक फैक्टरिंग सर्किट के लिए CNF जनरेटर को होस्ट करता है, जो कि उदाहरण के लिए (अब निष्क्रिय) RSA फैक्टरिंग चैलेंज नंबरों में से कुछ पर चल सकता है । उत्पन्न मामलों में कर रहे हैं DIMACS प्रारूप कि सीधे वार्षिक में वर्तमान प्रतियोगियों में से किसी एक को खिलाया जा सकता सैट solver प्रतियोगिता । सामान्य रूप से कठिन SAT उदाहरणों के संबंध में, SAT प्रतियोगिता स्थल पर दी गई बेंचमार्क समस्याएं काफी उपयोगी प्रतीत होती हैं, साथ ही यादृच्छिक / तैयार / औद्योगिक में वर्गीकरण अच्छा है।


1
यह लिंक बहुत अच्छा है!
हनी बेनेट

यदि आप वास्तव में उन नंबरों में से किसी एक को इनपुट करने का प्रयास करते हैं, तो आप पाएंगे कि उनका स्रोत कोड इंट डेटाइप का उपयोग करता है और इसलिए केवल 32-बिट संख्या को पकड़ सकता है, जबकि अधूरा आरएसए संख्या सैकड़ों बिट पर शुरू होती है।
इलियट गोरोखोवस्की

11

यहाँ फैक्टरिंग से SAT उदाहरण उत्पन्न करने पर एक पेपर है:

होरी, एस। और वतनबे, ओ। [१ ९९ Hard ] " सैट के लिए हार्ड इंस्टेंस जेनरेशन " एल्गोरिथम और कम्प्यूटेशन १३५०: २२-३१ ( पीडीएफ )

यह रैखिक से भी बदतर है, लेकिन से बेहतर है । 512-बिट RSA चुनौती प्रकार की संख्या 63,652 चर और 406,860 खंडों के साथ एक उदाहरण उत्पन्न करती है।n2


9

ToughSat हेनरी यूएन और यूसुफ Bebel द्वारा एक और उपकरण @Martin से जुड़े हुए है, जो CNF सूत्रों उत्पन्न करने के लिए इसी तरह की है कि फैक्टरिंग और अन्य कठिन समस्याओं के एनकोड उदाहरणों।


1
स्कॉट ने इसके बारे में भी ब्लॉग किया: scottaaronson.com/blog/?p=676
Alessandro Cosentino

0

देखें satfactor:


बंजर SATISFIABILITY समस्या में पूर्णांक फैक्टरकरण को परिवर्तित करें

शेन नेफ

अवलोकन

कम से कम यूक्लिड के समय से एक बड़ी पूर्णांक संख्या के कारकों का निर्धारण करना मनुष्य के लिए दिलचस्पी का विषय रहा है। इस समस्या के लिए कोई ज्ञात सामान्य एल्गोरिथ्म नहीं है जो पूर्णांक से कम समय में तराजू का प्रतिनिधित्व करने के लिए आवश्यक बिट्स की संख्या के संबंध में है।

यह कोड क्या करता है

एक पूर्णांक कारक समस्या को बूलियन SATISFIABILITY समस्या में परिवर्तित करता है। यदि समस्या का समाधान SAT सॉल्वर द्वारा किया जाता है, तो यह पूर्णांक कारकों को निकालता है।

हर साल बूलियन संतुष्टि सॉल्वर बेहतर होते हैं। हर 2 साल में, सॉल्वर के बीच एक अंतर्राष्ट्रीय प्रतियोगिता होती है (देखें http://www.satcompetition.org/ और http://www.satlive.org/ )। ये अत्याधुनिक सॉल्वर्स अस्तित्व में सबसे पुरानी खुली गणित समस्याओं में से एक के खिलाफ कितना अच्छा कर सकते हैं?

इस परियोजना के 2 मुख्य उद्देश्य हैं:
1) समस्या को बदलें और कारक ब्याज का पूर्णांक बनाएं!
2) जल्दी से या तो एक सॉल्वेबल या एक बेकार SATISFIABILITY प्रॉब्लम क्रिएट करें, जिसकी मुश्किल को कंट्रोलर आसानी से कंट्रोल कर लेता है।
- एक असंगत SATISFIABILITY समस्या बनाने के लिए, बस एक अभाज्य संख्या को कूटबद्ध करें।
- अधिक कठिन लेकिन हल करने योग्य समस्याएं पैदा करने के लिए, कम कारकों के साथ बड़ी समग्र संख्या चुनें।

ब्याज की संख्या किसी भी आकार हो सकती है!

कुछ ओपन-सोर्स SATISFIABILITY सॉल्वर हैं। इनमें से कुछ के लिए http://www.satlive.org/ देखें ।

बिल्ड

मेक-सी src /

कैसे

अपने द्विआधारी रूप में कई ब्याज इनपुट करें:

bin / iencode 10101> composite.21
// अपने पसंदीदा solver के साथ हल करने और solution.txt में परिणाम रख
bin / निकालने-बैठे composite.21 solution.txt

आउटपुट होगा:
00011
00111

जो दशमलव पूर्णांक 3 और 7, 21 के कारकों के लिए द्विआधारी अभ्यावेदन हैं।

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

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

1 -2 3 4 -5 ...


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