বর্গক্ষেত্রের চতুষ্কোণ অবশিষ্টাংশ পরীক্ষার জন্য বেসগুলির সর্বনিম্ন কভার


11

চ্যালেঞ্জ

ক্ষুদ্রতম ঘাঁটিগুলির (যেমন, মডুলি) কভারেট্যাটিক অবশিষ্টাংশের সেটগুলি সুনির্দিষ্টভাবে নির্ধারণ করতে পরীক্ষা দেওয়া যেতে পারে যে প্রদত্ত অ-নেতিবাচক পূর্ণসংখ্যা n একটি নিখুঁত বর্গক্ষেত্র কিনা defin বেসগুলি অবশ্যই 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, ইত্যাদি) কিনা whether N বর্গক্ষেত্র কিনা তা পরীক্ষা করার একটি উপায় হ'ল তল ()n) ² = n কিনা তা পরীক্ষা করা, অর্থাৎ, গোলাকার-ডাউন বর্গমূলের এন , যখন বর্গক্ষেত্র হয় , ফিরে এন দেয় । উদাহরণস্বরূপ, তল (√123) ² = 11² = 121, যা 123 নয়, তাই 123 বর্গ নয়; তবে তল (√121) ² = 11² = 121, সুতরাং 121 বর্গক্ষেত্র। এই পদ্ধতিটি অল্প সংখ্যক জন্য ভাল কাজ করে, বিশেষত যখন কোনও হার্ডওয়্যার স্কোয়ার-রুট অপারেশন উপলব্ধ থাকে available তবে বড় সংখ্যক (শত বা হাজার হাজার বিট) এটি খুব ধীর হতে পারে।

বর্গক্ষেত্রের জন্য পরীক্ষা করার আরেকটি উপায় হ'ল চতুষ্কোণীয় অবশিষ্টাংশ সারণীগুলি ব্যবহার করে অ-স্কোয়ারগুলি বাতিল করা। উদাহরণস্বরূপ, বেস 10 এর সমস্ত স্কোয়ারের একটি চূড়ান্ত (অবশ্যই স্থান) অঙ্ক থাকতে হবে যা 0, 1, 4, 5, 6 বা 9 হয় is এই মানগুলি বেস 10 এর জন্য চতুর্ভুজীয় অবশিষ্টাংশের সেট গঠন করে So সুতরাং যদি একটি বেস হয় -10 নম্বর 0, 1, 4, 5, 6, বা 9 এ শেষ হয়, আপনি জানেন যে এটি বর্গক্ষেত্র হতে পারে এবং আরও পরীক্ষার প্রয়োজন হবে। তবে যদি বেস -10 সংখ্যাটি 2, 3, 7 বা 8 এর মধ্যে শেষ হয় তবে আপনি নিশ্চিত হতে পারেন যে এটি বর্গক্ষেত্র নয়

সুতরাং আসুন অন্য বেস তাকান। বেস 8 এর সমস্ত স্কোয়ার 0, 1, বা 4 এর সমাপ্ত হতে হবে, যা সুবিধামত 8 টি সম্ভাবনার মধ্যে কেবল 3, যার অর্থ একটি এলোমেলো সংখ্যার সম্ভবত 37.5% সম্ভাবনা, বা এলোমেলো সংখ্যার 62.5% সম্ভাবনা অবশ্যই বর্গক্ষেত্র নয়। এটি বেস 10 যা দেয় তার চেয়ে অনেক বেশি ভাল মতবিরোধ। (এবং নোট করুন যে বেস -8 মডুলাস অপারেশনটি কেবল একটি লজিক্যাল-এবং অপারেশন, বেস -10 মডুলাসের বিপরীতে, যা বাকী 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 itive এর স্কোয়ারনেস বা স্কোয়ারনেসটি নির্ধারণ করার জন্য যথেষ্ট সমস্ত 16-বিট মান 0 থেকে 65535. তবে এটি কোনও ন্যূনতম কভার নয়, কারণ কমপক্ষে একটি 15-বেস কভার বিদ্যমান যা সহজেই আবিষ্কারযোগ্য। প্রকৃতপক্ষে, সম্ভবত এটি সম্ভবত আরও ছোট কভারগুলি উপস্থিত রয়েছে - সম্ভবত কম 6 বা 7 বেস রয়েছে।

তবে উদাহরণস্বরূপ, আসুন এই 16-বেস কভার সেটটি ব্যবহার করে এন এর একটি নমুনা মান পরীক্ষা করে দেখুন । উপরের বেসগুলির সেটগুলির জন্য এখানে চতুষ্কোণ অবশিষ্টাংশগুলির সেট রয়েছে:

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 ) ✓

সুতরাং আমরা দেখতে পাচ্ছি যে এই ১৩ টি ঘাঁটিতে, অবশিষ্টাংশগুলি একটি পরিচিত চতুষ্কোণীয় অবশিষ্টাংশের সাথে মেলে (এটি টেবিলের "হিট" বলুন) এবং এই তিনটি ঘাঁটিতে, অবশিষ্টাংশগুলি একটি পরিচিত চতুষ্কোণ অবশিষ্টাংশের সাথে মেলে না (এটি একটি কল করুন "হারানো"). একটি সংখ্যা অ-বর্গক্ষেত্রের জেনে এটি কেবল 1 মিস দরকার, তাই আমরা 11 এ থামতে পারি, তবে উদাহরণস্বরূপ উদ্দেশ্যে, আমরা এখানে 16 টি ঘাঁটি পরীক্ষা করেছি।

অসম্পূর্ণ কভার উদাহরণ

প্রযুক্তিগতভাবে, একটি অসম্পূর্ণ আবরণ কোনও কভার নয়, তবে এটি পয়েন্টের পাশে। বেসগুলির সেট {7, 8, 11, 15} প্রায় 0 থেকে 255 পর্যন্ত এন এর সমস্ত 8-বিট মানগুলি সঠিকভাবে কভার করে , তবে বেশ নয়। বিশেষত, এটি 60 এবং 240 কে ভুল হিসাবে স্কোয়ার হিসাবে চিহ্নিত করেছে (এগুলি মিথ্যা ধনাত্মক) - তবে এটি প্রকৃত স্কোয়ারগুলি (0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196 এবং 225) এবং অন্য কোনও মিথ্যা ধনাত্মক করে না। সুতরাং এটি একটি 4-সেট যা প্রায় একটি সমাধান হিসাবে সফল হয় তবে শেষ পর্যন্ত ব্যর্থ হয়, কারণ একটি অসম্পূর্ণ কভারটি বৈধ সমাধান নয়।

8-বিট এন এর জন্য s 7, 8, 11, 15 base ঘাঁটির সেটটি 4 টি ঘাঁটির দুটি সেটগুলির মধ্যে একটি যা দুটি ত্রুটি তৈরি করে এবং 4 টি ঘাঁটির সাতটি সেট রয়েছে যা কেবল একটি ত্রুটি তৈরি করে। 4 টি বেসের কোনও সেট আসলে বিদ্যমান নেই যা 8-বিট মানগুলির একটি সম্পূর্ণ এবং সঠিক কভার গঠন করে। আপনি 8 টি বেসের একটি সেট খুঁজে পেতে পারেন যা কোনও ত্রুটি তৈরি করে না, সমস্ত 8-বিট মান সঠিকভাবে আচ্ছাদন করে? অথবা আপনার 6 বা তার বেশি প্রয়োজন? (আমি 8-বিট এন এর উত্তর জানি না , তবে আমি তা দিয়ে যাব না 16 আমি 16-বিট, 32-বিট বা 64-বিটের উত্তর জানি না, এবং আমি 16- ব্রিট-ফোর্স অনুসন্ধানের মাধ্যমে বিট কেস সমাধান করা অসম্ভব 32 32-বিট এবং 64৪-বিট কেস সমাধান করার জন্য অবশ্যই জেনেটিক, হিউরিস্টিক বা অন্যান্য অনুসন্ধান কৌশলগুলির প্রয়োজন হবে))

ক্রিপ্টোগ্রাফিকভাবে প্রচুর সংখ্যার উপর একটি মন্তব্য

শত শত বা হাজারো বাইনারি অঙ্কগুলিতে 64৪-বিট সংখ্যার বাইরে - এইখানেই একটি দ্রুত স্কোয়ারনেস চেক বেশিরভাগই কার্যকর হয়, এমনকি কভারটি অসম্পূর্ণ থাকলেও (এটি সম্ভবত এটি সত্যই বড় সংখ্যার জন্য হবে)। অপ্রতুলভাবে সিদ্ধান্ত নেওয়া হলেও এর মতো পরীক্ষা কীভাবে কার্যকর হতে পারে? ঠিক আছে, কল্পনা করুন যে আপনার স্কোয়ারনেসের জন্য একটি অত্যন্ত দ্রুত পরীক্ষা হয়েছিল যা সময়ের 99.9% সঠিকভাবে কাজ করে এবং বাকি 0.1% সময়কে মিথ্যা negativeণাত্মকতা দেয় এবং কখনও মিথ্যা ধনাত্মক দেয় না। এ জাতীয় পরীক্ষার মাধ্যমে আপনি সংখ্যার অ-স্কোয়ারনেসটি প্রায় তাত্ক্ষণিকভাবে নির্ধারণ করতে সক্ষম হবেন এবং তারপরে সিদ্ধান্তহীনতার ব্যতিক্রমী ক্ষেত্রে আপনি অজানাটিকে অন্যরকমভাবে সমাধানের জন্য ধীর গতিতে অবলম্বন করতে পারেন। এটি আপনাকে বেশ কিছুটা সময় সাশ্রয় করবে।

উদাহরণস্বরূপ, সেট {8, 11, 13, 15} সঠিক 8-বিট মানের জন্য সময় 99,61% এন 0 থেকে 255, সংশোধন হয় 95,98 এর 16 বিট মানের জন্য সময়% এন 0 থেকে 65535, এবং 24-বিট মানের জন্য সময় 95,62% সঠিক এন 0 থেকে 16777215. হিসাবে এন অনন্ত যায়, ঘাঁটি এই সেটটির জন্য শুদ্ধি শতাংশ যায় নিচে, কিন্তু এটা এসিম্পটোটিকভাবে দৃষ্টিভঙ্গী এবং 95,5944% এর নিচে কখনোই ড্রপ শুদ্ধি।

এমনকি 4 টি ছোট ঘাঁটির এই অতি ক্ষুদ্র সেটটি প্রায় 23 টির মধ্যে 22 টির মধ্যে প্রায় 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 অবধি সর্বাধিক প্রভাবশালী ঘাঁটির একটি (সবচেয়ে বেশি না হলে ) 245044800, যা একা সঠিকভাবে 99,66% অ স্কোয়ারগুলি, বা 307 এর প্রায় 306 এ ছুঁড়ে ফেলে দিতে পারে it আপনি খুঁজে পেতে পারেন সবচেয়ে প্রভাবশালী একক বেস 2 ^ 32 কম কিসে?

সম্পর্কিত

নীচের প্রশ্নগুলিতে কিছু খুব সুন্দর ধারণা রয়েছে যা ঘনিষ্ঠভাবে সম্পর্কিত, পাশাপাশি নির্দিষ্ট ক্রিয়াকলাপগুলিকে আরও দ্রুত করার জন্য বেশ কয়েকটি মাইক্রো-অপ্টিমাইজেশনের কৌশল। যদিও লিঙ্কযুক্ত প্রশ্নগুলি ঘাঁটিগুলির সবচেয়ে শক্তিশালী সেট সন্ধানের জন্য বিশেষভাবে সেট করা হয় নি, শক্ত ঘাঁটিগুলির ধারণা সেখানে ব্যবহৃত কিছু অপ্টিমাইজেশন কৌশলগুলির মধ্যে অন্তর্ভুক্ত central


আপনি কীভাবে টাই-ব্রেকারকে প্রদত্ত পরিসীমাতে প্রতিটি সংখ্যার পরীক্ষার সংক্ষিপ্ততা নির্ধারণ করবেন এবং মোট কতগুলি চেক তৈরি করা হয়েছে তা গণনা করবেন?
মার্টিন ইন্ডার

আমি প্রতিটি বেসের জন্য চতুষ্কোণের অবশিষ্টাংশগুলির সেটগুলির কার্ডিনালিটিটি দেখব। উদাহরণস্বরূপ, 4 3 এর চেয়ে ভাল বেস, কারণ মডিউল 4 এর কেবলমাত্র অর্ধেকগুলি হল চতুষ্কোণীয় অবশিষ্টাংশ, যেখানে মডিউল 3 মানের দুই-তৃতীয়াংশ চতুষ্কোণ অবশিষ্টাংশ। সুতরাং, 4 এর আগে সংখ্যাগুলি আগাছা ছাড়ানোর বৃহত্তর ক্ষমতা রয়েছে। সবচেয়ে খারাপ বেসটি 2, কারণ এটি কোনও সংখ্যাকে বাতিল করতে পারে না , এবং 256 এর চেয়ে কম বেস্টটি 240, যা 90% সংখ্যার রায় দিতে সক্ষম। সত্যিই বড় ঘাঁটির জন্য মন্টে কার্লো স্যাম্পলিং করতে হতে পারে।
টড লেহম্যান

হ্যাঁ, এটা বোঝা যায়। তবে আপনি কি প্রথম ভিত্তির মাধ্যমে টাইটি ঠিক করবেন যার সম্ভাবনা পৃথক রয়েছে, বা সম্ভাবনার উপর নির্ভর করে আপনি কীভাবে পুরো সেটটির দক্ষতা নির্ধারণ করবেন? আমি আরও ভাবছি যে আপনি অন্যান্য ঘাঁটিগুলি পরীক্ষা করে নিলে সম্ভাবনাগুলি আর স্বাধীন হয় না।
মার্টিন ইন্ডার

2
বৃহত্তর এন স্পেসগুলির ক্ষেত্রে , আমি মনে করি যে প্রতিটি অবশিষ্টাংশের সেট দ্বারা পূর্বাভাসের সম্ভাবনাগুলিকে গুণ করে গণনা হিসাবে, সামগ্রিক আনুমানিক দক্ষতার ভিত্তিতে টাই নির্ধারণ করতে হবে। উদাহরণস্বরূপ, বেসগুলি {8,11,13,15। এর যথাক্রমে 0.375, 0.545455, 0.538462 এবং 0.4 এর সম্ভাব্যতা রয়েছে, যা 0.044056 এ গুণ হয়। 1 থেকে বিয়োগ করে, এটি 0.955944 দেয়, যা [0,2 ^ 24-1] এর মধ্যে সমস্ত এন হিসাবে পরিমাপকৃত 95.62% এর বিস্তৃত গণনা ফলাফলের সাথে খুব ঘনিষ্ঠভাবে সম্মত ।
টড লেহম্যান

উত্তর:


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}

বড় ক্ষেত্রে ক্ষেত্রে এই পদ্ধতির স্পষ্টতই মেমরি চলে যায়।

১ bit বিটের ছাড়িয়ে যাওয়ার জন্য, আমার কাছে সমস্ত সংখ্যা একটি তালিকা এন ম্যাক্স পর্যন্ত না রেখেই কভার সম্পূর্ণ হওয়ার জন্য চেক করার একটি উপায় বের করতে হবে (বা যান এবং সংখ্যা তত্ত্ব সম্পর্কে শিখুন)।

সম্পাদনা করুন: সবচেয়ে কার্যকর বেস দ্বারা প্রত্যাখ্যানযোগ্য নয় এমন কেবলমাত্র সংখ্যার তালিকা প্রিপোপুলেটেজেট করে 16 বিটের 16 টি বিটের জন্য রানটাইম হ্রাস পেয়েছে। এটি মেমরির পদক্ষেপের উল্লেখযোগ্যভাবে উন্নতি করা উচিত।

সম্পাদনা করুন: অনুসন্ধানের স্থানটি হ্রাস করতে আমি দুটি ছোট ছোট অপটিমাইজেশন যুক্ত করেছি। এটি অফিসিয়াল বিভাগগুলির মধ্যে একটি নয়, তবে এটির সাথে আমি 9.3 ঘন্টাে 24 বিটের জন্য একটি 8-বেস কভার পেয়েছি:

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

অপ্টিমাইজেশন হিসাবে, আমি এখন সমস্ত ঘাঁটিগুলি এড়িয়ে যাচ্ছি যা ইতিমধ্যে কভারের বেসগুলির LCM কে বিভক্ত করে এবং যখন আমি একটি বেসের দক্ষতা পরীক্ষা করি তখন আমি কেবল এটি নতুন বেসের LCM পর্যন্ত সংখ্যার বিপরীতে পরীক্ষা করি এবং আমি ইতিমধ্যে সমস্ত ঘাঁটিগুলিকেই পরীক্ষা করি আছে।


1
@ টডলেহম্যান লোভীর সাথে সম্পাদনা করার আগে আপনি আমার প্রথম সমাধানটি দেখেছেন কিনা আমি জানি না। (আপনি যদি না করেন তবে সম্পাদনা ইতিহাসে একবার দেখুন)) আমি সম্পূর্ণ কভার না পাওয়া পর্যন্ত আমি কেবল তাদের সাধারণ হিট / মিস অনুপাত দ্বারা ঘাঁটিগুলি বেছে নিই। এটি 8 বিটের 8 টি বেস এবং 16 বিটের জন্য 29 টি বেস পেয়েছে। : ডি
মার্টিন ইন্ডার

1
@ টডলেহম্যান পরীক্ষার জন্য ধন্যবাদ! :) আমি অবাক করি যে আসল সংখ্যা তত্ত্ব জ্ঞানের লোকেরা কী সামনে আসতে পারে। এটির গতি বাড়ানোর জন্য আমার কাছে বেশ কয়েকটি ধারণাগুলি রয়েছে, তাই আমি 24 বিটে যেতে পারি, তবে আমি মনে করি আমার নিজের পরবর্তী চ্যালেঞ্জটি ট্র্যাকের দিকে ফোকাস করা উচিত।
মার্টিন ইন্ডার

1
@ টাডলিহম্যান আপনার জন্য একটি 24-বিট কভার রয়েছে। আমি ইতিমধ্যে ভাবছিলাম যে আমি যদি প্রধান বিষয়গুলি ব্যবহার করতে পারি তবে আমি এখনও শালীন urশ্বরবাদ নিয়ে আসিনি। আমি যা করতে পারি তা হ'ল ঘাঁটি পরীক্ষা করা হয়েছে এমন ক্রমটি উন্নত করা, তবে আমি কখনই এটিকে বাতিল করতে পারি তা নিশ্চিত নই।
মার্টিন ইন্ডার

1
@ টাডলিহম্যান আপনার নিজের পোস্টে আমাকে ট্যাগ করার দরকার নেই কারণ যেভাবেই আমাকে জানানো হবে। একারণে একাধিক ব্যবহারকারীর মন্তব্য না আসা পর্যন্ত এসই স্বয়ংক্রিয়রোধটি অক্ষম করে, যেখানে ওপিকে বিশেষভাবে সম্বোধন করা বোধগম্য হতে পারে।
মার্টিন এন্ডার

1
সবেমাত্র 28 বিটের জন্য 9-বেস কভারটি পেয়েছে: 8 15840, 15827, 16211, 12549, 14911, 15111, 9869, 14647, 16043}} রানটাইমটি ছিল 36.5 মিনিট, লোভী অ্যালগরিদম ব্যবহার করে প্যাক বিটওয়াইজ অপারেশনগুলি ব্যবহার করে ফিটনেস মূল্যায়ন করতে অনুকূলিত একটি সি প্রোগ্রাম ব্যবহার করে Run এই 9-বেস সেটটি 2²⁸ এর চেয়ে কম সংখ্যার জন্য একটি উপযুক্ত কভার এবং 2⁶⁴ সীমার মধ্যে সংখ্যাগুলির জন্য 99.999983% সঠিক accurate
টড লেহম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.