2011-09-24 16 views
5

मैंने हाल ही में के समांतरता पर a paper पर ठोकर खाई, और इस तथ्य के अलावा कि मैंने गणित के आवश्यक स्तर को प्राप्त नहीं किया है, मुझे आश्चर्य है कि यह विशेष समानांतरता है या नहीं विधि मेरे विशिष्ट मामले में मदद करता है।पोलार्ड-रो फैक्टोरिज़ेशन समांतरता

मैं एक बहुत बड़ी संख्या के दो कारकों-सेमिप्रिम्स खोजने की कोशिश कर रहा हूं। मेरी धारणा, कागज के बारे में मुझे समझने के आधार पर, यह है कि यह समानांतर दो बहुत बड़े कारकों के बजाए बहुत से छोटे कारकों के साथ एक संख्या पर अच्छी तरह से काम करता है।

क्या यह सच है? क्या मुझे इस समांतरता का उपयोग करना चाहिए या कुछ और उपयोग करना चाहिए? क्या मुझे पोलार्ड के Rho का भी उपयोग करना चाहिए, या क्या एक अलग कारककरण एल्गोरिदम का बेहतर समांतरता है?

+0

आपकी बहुत बड़ी संख्या कितनी बड़ी है? कितने दशमलव अंक? – user448810

+0

'2^16' (5 दशमलव अंक) से '2^8192' (2467 दशमलव अंक) से कहीं भी। मुझे अनुमान है कि मैं संख्या की परिमाण के आधार पर शायद कई अलग-अलग एल्गोरिदम का उपयोग करूंगा, हालांकि मुझे यकीन नहीं है। मुझे पता है कि पोलार्ड-रो एक विशेष एल्गोरिदम है, लेकिन मुझे अन्य एल्गोरिदम के कई समानांतरताएं नहीं मिली हैं, इसलिए मैं थोड़ा सा संघर्ष कर रहा हूं। – skeggse

+0

ध्यान दें कि, हालांकि '2^8192' सैद्धांतिक ऊपरी बाउंड है, मैं अपेक्षा करता हूं कि बड़े पैमाने पर कुछ भी कारक करने में सक्षम न हो। – skeggse

उत्तर

4

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

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

मैं अधिक जानकारी के लिए mersenneforum.org पर फ़ैक्टरिंग फ़ोरम की अनुशंसा करता हूं।

+0

एक छोटी सी समस्या। आपके द्वारा अनुशंसित विधियां काफी जटिल हैं, और मुझे कोई एल्गोरिदम विनिर्देश या छद्म कोड नहीं मिल रहा है। यह देखते हुए कि मेरी गणित पृष्ठभूमि कुछ हद तक सीमित है, मैं सिर्फ स्रोत पर नहीं जा सकता और अपने आप कोड के साथ आने का प्रयास नहीं कर सकता। – skeggse

+2

आपको इसे स्वयं करने की आवश्यकता नहीं है। Mersenneforum.org पर फैक्टरिंग फ़ोरम पर जाएं। उनके पास gmp-ecm, msieve और अन्य जैसे प्रोग्राम हैं जो स्वतंत्र रूप से उपलब्ध हैं और सर्वोत्तम उपलब्ध फैक्टरिंग प्रोग्राम भी हैं। यदि आपको इसे स्वयं करना है, तो http://programmingpraxis.com पर मेरे ब्लॉग में उन फैक्टरिंग एल्गोरिदम के अधिकांश विवरण और स्रोत कोड हैं, हालांकि अभी तक दो स्विस नहीं हैं। – user448810

6

विकिपीडिया लेख में कहा गया दो ठोस उदाहरण:

सभी की
Number    Original code  Brent's modification 
18446744073709551617 26 ms    5 ms 
10023859281455311421 109 ms    31 ms 

पहले, अपने कार्यक्रम के साथ इन दोनों चलाने के लिए और अपने समय पर एक नज़र डालें। यदि वे इस तरह के हैं ("हार्ड" संख्या 4-6 गुना अधिक गणना करते हैं), तो खुद से पूछें कि क्या आप इसके साथ रह सकते हैं। या इससे भी बेहतर, सरल क्लासिक "ब्रूट फोर्स" कारककरण जैसे अन्य एल्गोरिदम का उपयोग करें और वे जो समय देते हैं उन्हें देखें। मुझे लगता है कि उनके पास 1 के करीब एक कठिन कारक हो सकता है, लेकिन पूर्णकालिक समय, इसलिए यह एक साधारण व्यापार-बंद है।

साइड नोट: बेशक, समांतरता यहां जाने का तरीका है, मुझे लगता है कि आप जानते हैं लेकिन मुझे लगता है कि जोर देना महत्वपूर्ण है। इसके अलावा, यह इस मामले में मदद करेगा कि पोलार्ड-रोड समय (जैसे पोलार्ड-रो 5-31 एमएस, अलग दृष्टिकोण 15-17 एमएस) के बीच एक और दृष्टिकोण है, इस मामले में, पृथक धागे में 2 एल्गोरिदम चलाने पर विचार करें एक "कारक बनाने की दौड़" करने के लिए।

यदि आपके पास अभी तक एल्गोरिदम का वास्तविक कार्यान्वयन नहीं है, तो यहां Python implementations हैं।

+0

बहुत धन्यवाद, मैं मूल दस्तावेज़ तक पहुंचने में असमर्थ था, इसलिए यह कार्यान्वयन सबसे उपयोगी साबित हुआ है। – skeggse