चौकोरता के द्विघात अवशेषों के परीक्षण के लिए अड्डों का न्यूनतम आवरण


11

चुनौती

आधारों के सबसे छोटे आवरण (जैसे, मोडुली) का पता लगाएं, जिसके द्विघात अवशेषों के सेट को टेबल-लुकअप के माध्यम से निश्चित रूप से निर्धारित करने के लिए परीक्षण किया जा सकता है कि क्या किसी दिए गए गैर-नकारात्मक पूर्णांक n एक पूर्ण वर्ग है या नहीं । आधार सभी को n के अधिकतम मान के वर्गमूल से कम या बराबर होना चाहिए ।

किसी दिए गए श्रेणी n के लिए सबसे छोटे सेट के साथ उत्तर चुनौती को जीतता है। (इसका मतलब है कि संभावित रूप से एक से अधिक विजेता हो सकते हैं।) n की श्रेणियां हैं:

         Category       Maximum allowed n    Maximum allowed modulus/base
    -------------    --------------------    ----------------------------
     8-bit values                     255                              15
    16-bit values                   65535                             255
    32-bit values              4294967295                           65535
    64-bit values    18446744073709551615                      4294967295

समानता वाले दो सेटों के साथ एक टाई होने की स्थिति में, टाई उस सेट पर जाएगी, जिसमें पहले सीक्वेंस में गैर-वर्गों का पता लगाने की अधिक क्षमता हो।

इस घटना में कि कोई पूर्ण कवर नहीं मिला है (जो कि पूरी तरह से 32-बिट और 64-बिट श्रेणियों के लिए होने की संभावना है), विजेता उन ठिकानों का सेट होगा, जो सांख्यिकीय रूप से या साबित तौर पर गैर-वर्गों के उच्चतम प्रतिशत को गलत तरीके से लागू करते हैं (बिना गलत तरीके से) गैर-वर्गों के रूप में रिपोर्टिंग चौकों)। अधूरे कवर की चर्चा के लिए नीचे देखें।

पृष्ठभूमि

कई संख्या सिद्धांत अनुप्रयोगों में, यह सवाल उठता है कि क्या कुछ संख्या n एक पूर्ण वर्ग (0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, आदि) है या नहीं। यह जांचने का एक तरीका है कि क्या n वर्ग वर्गाकार है, यह परखने के लिए कि क्या तल (testn), = n है, यानि कि वर्ग-वर्ग वर्गमूल n , जब चुकता किया गया है, तो वापस n देता है । उदाहरण के लिए, मंजिल ()123), = 11 121 = 121, जो 123 नहीं है, इसलिए 123 वर्ग नहीं है; लेकिन मंजिल (floor121) ² = 11 121 = 121, इसलिए 121 वर्ग है। यह विधि छोटी संख्या के लिए ठीक काम करती है, खासकर जब एक हार्डवेयर वर्ग-रूट ऑपरेशन उपलब्ध होता है। लेकिन बड़ी संख्या (सैकड़ों या हजारों बिट्स) के लिए यह बहुत धीमा हो सकता है।

स्क्वैरिटी का परीक्षण करने का एक और तरीका है कि द्विघात अवशेष तालिकाओं का उपयोग करके गैर-वर्गों को बाहर निकालना। उदाहरण के लिए, बेस 10 में सभी वर्गों के पास एक अंतिम (एकल-स्थान) अंक होना चाहिए जो कि 0, 1, 4, 5, 6, या 9 है। ये मान बेस 10. के लिए द्विघात अवशिष्ट के सेट का निर्माण करते हैं। -10 नंबर 0, 1, 4, 5, 6, या 9 में समाप्त होता है, आप जानते हैं कि यह वर्ग हो सकता है, और आगे की परीक्षा की आवश्यकता होगी। लेकिन अगर आधार -10 नंबर 2, 3, 7, या 8 में समाप्त होता है, तो आप निश्चित हो सकते हैं कि यह वर्ग नहीं है

तो आइए दूसरे आधार पर देखें। बेस 8 में सभी वर्ग 0, 1, या 4 में समाप्त होने चाहिए, जो कि सुविधाजनक रूप से 8 संभावनाओं में से केवल 3 हैं, जिसका अर्थ है कि एक यादृच्छिक संख्या का 37.5% संभावना संभवतः वर्ग है, या यादृच्छिक संख्या का 62.5% संभावना निश्चित रूप से वर्ग नहीं है। आधार 10 जो देता है, उसकी तुलना में वे बहुत बेहतर हैं। (और ध्यान दें कि बेस -10 मापांक के विपरीत एक बेस -8 मापांक ऑपरेशन केवल एक तार्किक और ऑपरेशन है, जो शेष 10 के साथ एक विभाजन है।)

क्या और भी बेहतर आधार हैं? खैर, हां, वास्तव में। बेस 120 में 18 संभावनाएं (0, 1, 4, 9, 16, 24, 25, 36, 40, 49, 60, 64, 76, 81, 84, 96, 100 और 105) हैं, जो केवल 15% का प्रतिनिधित्व करती है। संभवतः चौकोर होने का मौका। और बेस 240 बेहतर है, केवल 24 संभावनाओं के साथ, संभवतः स्क्वायर होने के केवल 10% संभावना का प्रतिनिधित्व करता है।

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

तो, सवाल यह बन जाता है: आधार का कौन सा सेट एक न्यूनतम कवर बनाता है जो एक साथ स्क्वैरिटी या गैर-स्क्वैसिटी की निश्चित कटौती की अनुमति देता है?

एक सही लेकिन गैर-न्यूनतम कवर का उदाहरण

कवर 16-बेस कवर {3, 4, 5, 7, 8, 9, 11, 13, 16, 17, 19, 23, 25, 29, 31, 37} निश्चित रूप से स्क्वैरिटी या गैर-स्क्वैरिटी निर्धारित करने के लिए पर्याप्त है सभी 16-बिट मान 0 से 65535 हैं। लेकिन यह एक न्यूनतम कवर नहीं है , क्योंकि कम से कम एक 15-बेस कवर मौजूद है जो आसानी से खोजा जा सकता है। वास्तव में, यह संभावना है कि अभी तक छोटे कवर मौजूद हैं - शायद 6 या 7 ठिकानों के साथ।

लेकिन उदाहरण के लिए, आइए इस 16-बेस कवर सेट का उपयोग करके n के एक सैंपल मान का परीक्षण करें। यहाँ आधारों के उपरोक्त सेट के लिए द्विघात अवशेषों के समूह दिए गए हैं:

Base m   Quadratic residue table specific to base m
------   ----------------------------------------------------
   3     {0,1}
   4     {0,1}
   5     {0,1,4}
   7     {0,1,2,4}
   8     {0,1,4}
   9     {0,1,4,7}
  11     {0,1,3,4,5,9}
  13     {0,1,3,4,9,10,12}
  16     {0,1,4,9}
  17     {0,1,2,4,8,9,13,15,16}
  19     {0,1,4,5,6,7,9,11,16,17}
  23     {0,1,2,3,4,6,8,9,12,13,16,18}
  25     {0,1,4,6,9,11,14,16,19,21,24}
  29     {0,1,4,5,6,7,9,13,16,20,22,23,24,25,28}
  31     {0,1,2,4,5,7,8,9,10,14,16,18,19,20,25,28}
  37     {0,1,3,4,7,9,10,11,12,16,21,25,26,27,28,30,33,34,36}

अब प्रत्येक बेस में परिवर्तित करके, आधारों के इस सेट का उपयोग करके संख्या n = 50401 का परीक्षण करें । (यह अवशेषों की जांच करने का सबसे कुशल तरीका नहीं है, लेकिन यह व्याख्यात्मक उद्देश्यों के लिए पर्याप्त है।) यह 1 जगह है जिसे हम यहां रुचि रखते हैं (नीचे कोष्ठक में चिह्नित किया गया है):

 Base                               "Digits" in base m
   m          m^9   m^8   m^7   m^6   m^5   m^4   m^3   m^2   m^1  ( m^0 )
 ----      -----------------------------------------------------------------
   3           2     1     2     0     0     1     0     2     0   (  1 ) ✓
   4                       3     0     1     0     3     2     0   (  1 ) ✓
   5                             3     1     0     3     1     0   (  1 ) ✓
   7                                   2     6     6     6     4   (  1 ) ✓
   8                                   1     4     2     3     4   (  1 ) ✓
   9                                         7     6     1     2   (  1 ) ✓
  11                                         3     4     9     5   ( 10 )
  13                                         1     9    12     3   (  0 ) ✓
  16                                              12     4    14   (  1 ) ✓
  17                                              10     4     6   ( 13 ) ✓
  19                                               7     6    11   ( 13 )
  23                                               4     3     6   (  8 ) ✓
  25                                               3     5    16   (  1 ) ✓
  29                                               2     1    26   ( 28 ) ✓
  31                                               1    21    13   ( 26 )
  37                                                    36    30   (  7 ) ✓

इसलिए हम देख सकते हैं कि इन 13 ठिकानों में, अवशेष एक ज्ञात द्विघात अवशेष (तालिका में इसे "हिट" कहते हैं) से मेल खाते हैं, और इनमें से 3 आधारों में अवशेष एक ज्ञात द्विघात अवशेष से मेल नहीं खाते हैं (इसे कॉल करें a) "कुमारी")। यह जानने के लिए 1 याद आती है कि एक संख्या गैर-वर्ग है, इसलिए हम 11 पर रोक सकते हैं, लेकिन उदाहरण के लिए, हमने यहां सभी 16 ठिकानों की जांच की है।

अपूर्ण आवरण का उदाहरण

तकनीकी रूप से, एक अधूरा कवर एक कवर नहीं है, लेकिन यह बिंदु के बगल में है। ठिकानों के सेट {7, 8, 11, 15} लगभग के सभी 8 बिट मूल्यों को शामिल किया गया n 0 से 255 से सही ढंग से है, लेकिन काफी नहीं। विशेष रूप से, यह गलत रूप से 60 और 240 को वर्ग के रूप में पहचानता है (ये गलत सकारात्मक हैं) - लेकिन यह सभी वास्तविक वर्गों (0, 1, 4, 9, 16, 25, 36, 49, 64, 81) की सही पहचान करता है। 100, 121, 144, 169, 196, और 225) और कोई अन्य झूठी सकारात्मकता नहीं बनाता है। तो यह एक 4-सेट है जो लगभग समाधान के रूप में सफल होता है, लेकिन अंततः विफल हो जाता है, क्योंकि एक अधूरा कवर एक वैध समाधान नहीं है।

8-बिट n के लिए , आधारों का सेट {7, 8, 11, 15} 4 आधारों के दो सेटों में से एक है जो दो त्रुटियों का उत्पादन करता है, और 4 आधारों के सात सेट हैं जो केवल एक त्रुटि उत्पन्न करते हैं। 4 बेस का कोई सेट वास्तव में मौजूद नहीं है जो 8-बिट मानों का एक पूर्ण और सटीक कवर बनाता है। क्या आप 5 आधारों का एक सेट पा सकते हैं, जो सभी 8-बिट मानों को सही ढंग से कवर करते हुए कोई त्रुटि उत्पन्न नहीं करते हैं? या आपको 6 या अधिक की आवश्यकता है? (मुझे 8-बिट एन के लिए जवाब पता है , लेकिन मैं इसे दूर नहीं करने जा रहा हूं। मुझे 16-बिट, 32-बिट या 64-बिट के लिए जवाब नहीं पता है, और मेरा मानना ​​है कि यहां तक ​​कि 16- बिट केस को ब्रूट-फोर्स सर्च के जरिए हल करना असंभव है। 32-बिट और 64-बिट मामलों को हल करने के लिए निश्चित रूप से आनुवांशिक, आनुवांशिक या अन्य खोज तकनीकों की आवश्यकता होगी।)

क्रिप्टोग्राफिक रूप से बड़ी संख्या में एक टिप्पणी

64-बिट संख्या से परे - सैकड़ों या हजारों बाइनरी अंकों में - यह वह जगह है जहां एक त्वरित स्क्वैरिटी की जांच वास्तव में सबसे अधिक काम में आती है, भले ही कवर अधूरा हो (जो कि यह निश्चित रूप से वास्तव में बड़ी संख्या के लिए होगा)। इस तरह एक परीक्षण अभी भी उपयोगी हो सकता है, भले ही यह अपर्याप्त रूप से निर्णायक हो? ठीक है, कल्पना कीजिए कि आपके पास स्क्वैरिटी के लिए एक बहुत तेज़ परीक्षण था जो उस समय 99.9% सही ढंग से काम करता था और झूठे नकारात्मक को शेष 0.1% समय देता था और कभी भी गलत सकारात्मकता नहीं देता था। इस तरह के परीक्षण के साथ, आप लगभग तुरंत एक संख्या की गैर-धारिता का निर्धारण करने में सक्षम होंगे, और फिर अभद्रता के असाधारण मामलों में, आप तब अज्ञात तरीके से हल करने के लिए एक धीमी विधि का सहारा ले सकते हैं। इससे आपका काफी समय बचेगा।

उदाहरण के लिए, सेट {8, 11, 13, 15} सही है की 8 बिट मूल्यों के लिए समय की 99.61% n 0 से 255 तक सही है, 95.98 के 16-बिट मूल्यों के लिए समय की% n 0 से 65535, और 24 बिट मूल्यों के लिए समय की 95.62% सही है n 0 से 16777215. के रूप में करने के लिए एन अनंत को जाता है, अड्डों के इस सेट के लिए शुद्धता का प्रतिशत नीचे चला जाता है, लेकिन यह asymptotically दृष्टिकोण और 95.5944% से नीचे चला जाता है कभी नहीं शुद्धता।

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

यह ध्यान रखना दिलचस्प है कि कुछ 16-बिट बेस अपने दम पर 95% से बेहतर हासिल करते हैं। वास्तव में, नीचे का प्रत्येक आधार वर्ग नहीं होने के कारण अनंत तक की सभी संख्याओं के 97% से बेहतर निराई करने में सक्षम है। इनमें से प्रत्येक आधार के लिए निर्धारित द्विघात अवशेष को केवल 8192 बाइट्स का उपयोग करके एक पैक-बिट सरणी के रूप में दर्शाया जा सकता है।

यहाँ 10 सबसे शक्तिशाली एकल आधार 2 ^ 16 से कम हैं:

 Rank   Base    Prime factorization       Weeds out
 ----   ------------------------------    ---------
  1.    65520 = 2^4 x 3^2 x 5 x 7 x 13      97.95%
  2.    55440 = 2^4 x 3^2 x 5 x 7 x 11      97.92%
  3.    50400 = 2^5 x 3^2 x 5^2 x 7         97.56%
  4.    52416 = 2^6 x 3^2 x 7 x 13          97.44%
  5.    61200 = 2^4 x 3^2 x 5^2 x 17        97.41%
  6.    44352 = 2^6 x 3^2 x 7 x 11          97.40%
  7.    63360 = 2^7 x 3^2 x 5 x 11          97.39%
  8.    60480 = 2^6 x 3^3 x 5 x 7           97.38%
  9.    63840 = 2^5 x 3 x 5 x 7 x 19        97.37%
 10.    54720 = 2^6 x 3^2 x 5 x 19          97.37%

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

साइड चुनौती: सबसे प्रभावशाली अड्डों में से एक (यदि नहीं 2 ^ 28 अप करने के लिए सबसे) 245,044,800, जो अकेले सही ढंग से गैर-वर्गों के 99.67% बाहर निकाल सकें, या 307 यादृच्छिक इसे फेंक दिया संख्या के 306 के बारे में है। आप पा सकते हैं सबसे प्रभावशाली एकल आधार 2 ^ 32 से भी कम समय?

सम्बंधित

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


आप दिए गए रेंज में हर एक नंबर का परीक्षण करने के लिए टाई-ब्रेकर का निर्धारण कैसे करेंगे और कुल मिलाकर कितने चेक बनाए गए हैं?
मार्टिन एंडर

मैं प्रत्येक आधार के लिए द्विघात अवशेषों के सेट की कार्डिनैलिटी को देखूंगा। उदाहरण के लिए, 4 3 की तुलना में एक बेहतर आधार है, क्योंकि केवल 4 मोड्यूलो 4 के मान द्विघात अवशेष हैं, जबकि दो-तिहाई मान modulo 3 द्विघात अवशेष हैं। इस प्रकार, 4 में पहले की संख्या को कम करने की अधिक क्षमता है। सबसे खराब आधार 2 है, क्योंकि यह किसी भी संख्या को खारिज नहीं कर सकता है , और 256 से कम का सबसे अच्छा आधार 240 है, जो कि 90% संख्याओं को नियंत्रित करने में सक्षम है। वास्तव में बड़े ठिकानों के लिए मोंटे कार्लो का नमूना लेना पड़ सकता है।
टोड लेहमैन

हाँ, यह समझ में आता है। लेकिन क्या आप केवल पहले आधार से टाई तय करेंगे जिसकी संभावना अलग है, या आप संभावनाओं के आधार पर पूरे सेट की दक्षता का पता कैसे लगाएंगे? मैं यह भी सोच रहा हूँ कि जब आप अन्य ठिकानों की जाँच कर लेंगे, तो संभावनाएँ स्वतंत्र नहीं हैं।
मार्टिन एंडर

2
बड़े n रिक्त स्थान के मामले में , मुझे लगता है कि मुझे समग्र अनुमानित दक्षता के आधार पर टाई तय करनी होगी, जैसा कि प्रत्येक अवशेष सेट द्वारा अनुमानित संभावनाओं को गुणा करके गणना की जाती है। उदाहरण के लिए, आधार {8,11,13,15} में क्रमशः 0.375, 0.545455, 0.538462 और 0.4 की संभावनाएं हैं, जो कि बढ़कर 0.044056 हो जाती हैं। 1 से घटाना, यह 0.955944 देता है, जो कि 95.62% की संपूर्ण गिनती के परिणाम के साथ बहुत निकटता से सहमत है जैसा कि [0,2 ^ 24-1] में सभी n पर मापा जाता है ।
टॉड लेहमैन

जवाबों:


7

मेथेमेटिका

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

bits = 8
Timing[
 maxN = 2^bits - 1;
 maxBase = 2^(bits/2) - 1;
 bases = {
     #,
     Union[Mod[Range[0, Floor[#/2]]^2, #]]
     } & /@ Range[3, maxBase];
 bases = SortBy[bases, Length@#[[2]]/#[[1]] &];
 numbers = {};
 For[i = 0, i <= Quotient[maxN, bases[[1, 1]]], ++i,
  AppendTo[numbers, # + i*bases[[1, 1]]] & /@ bases[[1, 2]]
  ];
 While[numbers[[-1]] > maxN, numbers = Most@numbers];
 numbers = Rest@numbers;
 i = 0;
 cover = {bases[[1, 1]]};
 lcm = cover[[-1]];
 Print@cover[[1]];
 While[Length@numbers > maxBase,
  ++i;
  bases = DeleteCases[bases, {b_, r_} /; b\[Divides]lcm];
  (*bases=SortBy[bases,(Print[{#,c=Count[numbers,n_/;MemberQ[#[[2]],
  Mod[n,#[[1]]]]]}];c)&];*)
  bases = SortBy[
    bases,
    (
      n = Cases[numbers, n_ /; n < LCM[#[[1]], lcm]];
      Count[n, n_ /; MemberQ[#[[2]], Mod[n, #[[1]]]]]/Length@n
      ) &
    ];
  {base, residues} = bases[[1]];
  numbers = Cases[numbers, n_ /; MemberQ[residues, Mod[n, base]]];
  AppendTo[cover, base];
  lcm = LCM[lcm, base];
  Print@base
  ];
 cover
 ]

यह निम्नलिखित 6 आधारों के साथ कुछ समय में 8 बिट्स को हल करता है:

{12, 13, 7, 11, 5, 8}

16 बिट्स में 6 एस लगते हैं और निम्नलिखित 6-बेस कवर में परिणाम:

{240, 247, 253, 119, 225, 37}

बड़े मामलों के लिए यह दृष्टिकोण स्पष्ट रूप से स्मृति से बाहर है।

16 बिट से आगे जाने के लिए, मुझे एन अधिकतम तक सभी नंबरों की सूची रखने (या जाने और संख्या सिद्धांत के बारे में जानने) के बिना कवर को पूरा करने के लिए जांचने का एक तरीका निकालने की आवश्यकता होगी ।

संपादित करें: केवल उन लोगों के साथ संख्याओं की सूची को छांट कर 66 से 8 से 16 बिट्स के लिए रनटाइम को कम कर दिया जाता है जिन्हें सबसे प्रभावी आधार द्वारा खारिज नहीं किया जाता है। यह भी स्मृति पदचिह्न में काफी सुधार करना चाहिए।

संपादित करें: मैंने खोज स्थान को कम करने के लिए दो मामूली अनुकूलन जोड़े। यह आधिकारिक श्रेणियों में से एक नहीं है, लेकिन इसके साथ मुझे 9.3 घंटों में 24 बिट्स के लिए 8-बेस कवर मिला:

{4032, 3575, 4087, 3977, 437, 899, 1961, 799}

आशाओं के लिए, मैं अब उन सभी आधारों को छोड़ रहा हूं, जो पहले से ही कवर में आधारों के एलसीएम को विभाजित करते हैं, और जब मैं किसी आधार की दक्षता का परीक्षण करता हूं तो मैं केवल उस नए आधार के एलसीएम तक संख्या के खिलाफ परीक्षण करता हूं और सभी आधार मैं पहले से ही कर रहा हूं। की है।


1
@ToddLehman मुझे नहीं पता कि क्या आपने लालची के साथ इसे संपादित करने से पहले मेरा पहला समाधान देखा था। (यदि आपने नहीं किया तो संपादित इतिहास पर एक नज़र डालें।) जब तक मेरा पूरा कवर नहीं था, तब तक मैं उनके सामान्य हिट / मिस अनुपात के आधार पर बस उठा रहा था। जिसमें 8 बिट्स के लिए 8 बेस और 16 बिट्स के लिए 29 बेस थे। : डी
मार्टिन एंडर

1
@ToddLehman परीक्षणों के लिए धन्यवाद! :) मुझे आश्चर्य है कि वास्तविक संख्या सिद्धांत ज्ञान वाले लोग क्या कर सकते हैं। मेरे पास इसे गति देने के लिए कुछ विचार हैं, इसलिए मैं 24 बिट पर जा सकता था, लेकिन मुझे लगता है कि मुझे ट्रैक पर अपनी अगली चुनौती प्राप्त करने पर ध्यान देने की आवश्यकता है।
मार्टिन एंडर

1
@ToddLehman आपके लिए 24-बिट कवर है। मैं पहले से ही सोच रहा था कि क्या मैं प्रमुख कारकों का उपयोग कर सकता हूं, लेकिन मैं अभी तक सभ्य अनुमान के साथ नहीं आया हूं। मैं बस इतना कर सकता हूं कि उस क्रम में सुधार किया जाए जिसमें ठिकानों का परीक्षण किया जाता है, लेकिन मुझे अभी तक यकीन नहीं है कि मैं कब गर्भपात कर सकता हूं।
मार्टिन एंडर

1
@ToddLehman आपको अपनी पोस्ट में मुझे टैग करने की आवश्यकता नहीं है क्योंकि मुझे वैसे भी सूचित किया जाएगा। यही कारण है कि एसई स्वत: पूर्णता को निष्क्रिय कर देता है जब तक कि कई उपयोगकर्ताओं की टिप्पणियां नहीं होती हैं, जहां यह विशेष रूप से ओपी को संबोधित करने के लिए समझ में आता है।
मार्टिन एंडर

1
बस 28 बिट्स के लिए 9-बेस कवर पाया गया: {15840, 15827, 16211, 12549, 14911, 15111, 9869, 14647, 16043}। रनटाइम 36.5 मिनट था, लालची एल्गोरिथ्म का उपयोग करके पैक्ड बिटवाइज ऑपरेशन का उपयोग करके फिटनेस का मूल्यांकन करने के लिए अनुकूलित सी प्रोग्राम का उपयोग करना। यह 9-बेस सेट 2 and से कम संख्या के लिए एक पूर्ण कवर है, और 283 रेंज में संख्याओं के लिए 99.999983% सटीक है।
टोड लेहमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.