बड़े पूर्णांक को फैक्टरिंग क्यों मुश्किल माना जाता है?


17

मैंने कहीं पढ़ा है कि सबसे कुशल एल्गोरिथ्म पाया में कारकों की गणना कर सकता समय है, लेकिन कोड मैंने लिखा है हे ( एन ) या संभवतः O ( n लॉग एन ) कितनी तेजी से विभाजन और मापांक पर निर्भर करता है। मुझे पूरा यकीन है कि मैंने कहीं न कहीं कुछ गलत समझा है, लेकिन मुझे यकीन नहीं है कि यहाँ है। यहाँ मैंने छद्म कोड रूप में क्या लिखा है।हे(exp((64/9)1/3(लॉग)2/3)हे(n)हे(nलॉगn)

function factor(number) -> list
    factors = new list
    if number < 0
        factors.append(-1)
        number = -number
    i = 2
    while i <= number
        while number % i == 0
            factors.append(i)
            number /= i
        i++
    return factors

3
Google "छद्म बहुपद"।
राफेल

वह एल्गोरिथ्म वास्तव में बहुत धीमा है - यदि संख्या एक प्राइम संख्या लूप है जबकि पुनरावृति (संख्या) बार। एक बहुत ही सरल तर्क है जो आपको sqrt (संख्या) पुनरावृत्तियों से दूर होने देता है।
gnasher729

जवाबों:


26

आप संख्या को भ्रमित कर रहे हैं प्रतिनिधित्व करने के लिए आवश्यक बिट्स की संख्या के साथ एन । यहाँ b = n का प्रतिनिधित्व करने के लिए आवश्यक बिट्स की संख्या (इसलिए b g lg n )। इससे बहुत फर्क पड़ता है। एक हे ( एन ) टाइम एल्गोरिथ्म एक है हे ( 2 ) बिट्स की संख्या में घातीय - टाइम एल्गोरिथ्म। इसकी तुलना में, आपके द्वारा पाया गया "कुशल" एल्गोरिदम में एक चलने का समय होता है जो कि बी में उपसंचाई के रूप में होता है ।nn=nएलजीnहे(n)हे(2)

उदाहरण: (2 मिलियन) पर विचार करें। फिर b = 21 बिट्स संख्या n का प्रतिनिधित्व करने के लिए पर्याप्त हैं । तो, एक एल्गोरिथ्म है कि हे ( 2 1 / 3 ) बहुत तेजी से एक एल्गोरिथ्म है कि तुलना में किया जाएगा हे ( 2 ) । एक O ( n ) एल्गोरिथ्म बाद की श्रेणी में आता है, यानी बहुत धीमा।n=2,000,000=21nहे(21/3)हे(2)हे(n)

Https://en.wikipedia.org/wiki/Integer_factorization देखें


1
मुझे पता था कि यह कुछ सरल था।
एंडरशॉ

3
@EnderShadow: इसके अलावा, वर्तमान में उपलब्ध हार्डवेयर का उपयोग करके फैक्टरिंग के प्रकार की संख्या को कठिन माना जाता है, और इसका उपयोग RSA एन्क्रिप्शन में किया जाता है, जिसमें (यानी n > 2 1,000 ) या ऐसा होता है। एक अभ्यास के रूप में, यह सोचते हैं आप कंप्यूटर आपके चला सकते हैं कि हे ( एन ) कहते हैं पर, एल्गोरिथ्म, प्रति सेकंड एक अरब पुनरावृत्तियों की गणना कितने साल यह कारक के लिए ले जाएगा n 2 1,000 । (यदि आपकी प्रारंभिक प्रतिक्रिया "यह सही नहीं हो सकती है!", तो आपने शायद इसकी सही गणना की है।)>1,000n>21,000हे(n)n21,000
इल्मरी करोनें

1

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

जैसा कि बताया गया है, 1980 के दशक के मध्य में आरएसए क्रिप्टोसिस्टम्स में जब तक यह ("मोटे तौर पर") इस्तेमाल नहीं किया गया था, तब तक जटिलता बहुत अधिक नहीं थी, जहां क्रिप्टोग्राफिक सुरक्षा धारणा पर निर्भर करती है (दो अन्य "नहीं-बिल्कुल-उत्साहजनक" संबंधित डेटा पॉइंट्स : पी-टाइम क्वांटम फैक्टरिंग और प्राइमलिटी परीक्षण के लिए शोर एल्गोरिथ्म 2000 के दशक के शुरुआती / प्रसिद्ध एकेएस एल्गोरिथ्म में पी में साबित हुआ था ।) एक संभावित सकारात्मक परिणाम यह होगा। अपने में quasipolynomial समय है, जो कमजोर है की तुलना में एनपी पूरा (पी ≠ एनपी संभालने और एनपी पूरा एक है कम बाध्य घातीय समय ), लेकिन अभी भी तकनीकी "हार्ड"।

अभी तक इस प्रमुख उपप्रजाति पर एक महान सर्वेक्षण नहीं मिला है। हालांकि यह भी देखें


एक और संभव रूप से कुछ हद तक "बढ़त-मामला" परिदृश्य यह है कि फैक्टरिंग पी में हो सकता है लेकिन अभी भी कोई संभव एल्गोरिथ्म नहीं है। उर्फ गेलेक्टिक एल्गोरिदम
vzn

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