কিভাবে অজানা মান প্রাপ্ত করার


19

কেউ কি আমাকে নিম্নলিখিত সমস্যার সাথে সহায়তা করতে পারে?

আমি কিছু মান (mod ) সন্ধান করতে চাই যেখানে (উদাহরণস্বরূপ K = 6 ) রয়েছে, কে ^ 2 মানের একটি তালিকা দেওয়া হয়েছে পার্থক্যের সাথে সামঞ্জস্য করুন a_i-b_j N pmod N (উদাহরণস্বরূপ এন = 251 ), কংক্রিটের সাথে সম্পর্কিত সম্পর্কটি না জেনে। যেহেতু a_i, b_j \ pmod N এর মানগুলি a_i-b_j \ pmod N এর পার্থক্য বিবেচনা করে স্বতন্ত্রভাবে সংজ্ঞায়িত করা হয় না , তাই আমরা মানগুলির কোনও কার্যকর অ্যাসাইনমেন্ট খুঁজছিa i , b jai,bj N Ni = 1 , 2 , , K , j = 1 , 2 , , K i=1,2,,K,j=1,2,,KK = 6 K=6K 2 K2a i - b j( মোডএন ) aibj(modN)এন = 251 N=251আই , বি জে( মোডএন ) ai,bj(modN)i - বি জে( মোডএন )aibj(modN)

অবশ্যই, তালিকায় কে 2K2 সংখ্যার প্রতিটি ক্রমান্বয়ে চেষ্টা করা (সম্পূর্ণ কে 2 !K2! সম্ভাব্য কেস) এবং তারপরে ভেরিয়েবলগুলি a i , b jai,bj হওয়ায় a_i, b_j দিয়ে মডিউলার সমীকরণগুলি সমাধান করা ।

বস্তুত, এই সমস্যা NTRU স্বাক্ষর পরিকল্পনার একটি প্রাথমিক সংস্করণ (থেকে cryptanalysis একটি কাগজে দেখা দেয় দুটো কারণে http://eprint.iacr.org/2001/005 )। তবে, লেখক কেবল একটি বাক্য লিখেছিলেন "একটি সাধারণ ব্যাকট্র্যাক অ্যালগরিদম ds n একটি সমাধান…" (বিভাগ ৩.৩ এ) এবং সুতরাং যে কেউ আরও ব্যাখ্যা দিতে পারে? আরও কী, লেখক আরও উল্লেখ করেছেন যে "প্রতিটি বিজ্ঞপ্তি শিফট { ( ( একটি আমি + + এম )গেলিক ভাষারএন , ( i + এম )গেলিক ভাষারএন } কে আমি = 1{((ai+M)modN,(bi+M)modN}Ki=1 বা একটি অদলবদল ( { ( এন - 1 - বি আই , এন - 1 - আই ) } কে আই = 1 )({(N1bi,N1ai)}Ki=1) ফলাফল একই_আ_ বি_জ \ মোড এন এর একই প্যাটার্নে আসে a i - b jগেলিক ভাষারএনaibjmodNএবং এই বিবৃতিটি সহায়ক?


7
খেয়াল করুন যে , অ_আই, বি_জে পুনরুদ্ধার করা অসম্ভব a i , b jai,bj, যেহেতু আপনি যদি সমস্ত সংখ্যায় কিছু ধ্রুবক সি যুক্ত সিCকরেন, তবে পার্থক্যগুলি একই থাকে।
যুবাল ফিল্মাস 14

1
@ ইউভাল: এটি ইতিমধ্যে বর্ণনার শেষ বাক্যে অন্তর্ভুক্ত রয়েছে। আমি মনে করি কেবলমাত্র একটি সমাধান প্রয়োজন, কারণ বেশ কয়েকটি বিদ্যমান থাকতে পারে।
ডোমোটর্প

2
@Yuval দুঃখিত ইশারা না যে জন্য এর আরো গ্রহণ করা উচিত মডুলার । সুতরাং অসীম সমাধান নেই। a i , b j Nai,bjN
একজন অতিথি

@ ডমোটরপ হ্যাঁ, সমাধানগুলির যে কোনও একটি সন্ধান করা ঠিক আছে।
একজন অতিথি

1
সম্ভবত ওপি স্পষ্ট করতে পারে যে , পোস্টের আগে মডুলো নেওয়া হয়েছিল: সম্ভবত শিরোনামে বা প্রথম অনুচ্ছেদে। ধ্রুব বিষয়টিও উল্লেখ করার মতো। আমি যখন পড়া শুরু করি তখন দুটি জিনিসই আমাকে বিভ্রান্ত করে। a i b j N CaibjNC
জুয়ান বার্মেজো ভেগা

উত্তর:


4

এবং জন্য এখানে একটি পরামর্শ । আমরা একটি তালিকা দেওয়া হয় । সাধারণত্ব ক্ষতি ছাড়া তাদের মধ্যে একজন গ্রহণ, শুরু । সাধারণত্ব বিনা ক্ষতিতে , এবং আমরা এর মান পাই । এখন অন্য একটি নিতে, এবং আশা এটি ফর্ম হল (এই সম্ভাব্যতা সঙ্গে ঘটে , এবং অনুমান) ।কে = 6 এন = 251 আই - বি জেK=6N=251( মোডএন ) একটি 1 - 1 1 = 0 একটি 1 একটি 2 - 1 5 / 35 = 1 / 7 একটি 2aibj(modN)a1b1b1=0a1a2b15/35=1/7a2

এই পর্যায়ে, আমরা জানি । আমাদের পরবর্তী লক্ষ্য সন্ধান করা হয় জন্য । প্রতিটি পরীক্ষার্থীর , যদি তবে থাকা উচিত। যদি , তবে সম্ভাব্যতা এছাড়াও তালিকায় রয়েছে প্রায় । তাই আপনি যদি আমরা কিছু প্রার্থী খুঁজে পাব যার জন্য তালিকায় এছাড়াও, তারপর সম্ভবত । এইভাবে, আমরা কিছুটা নিশ্চিত করে পুনরুদ্ধার করতে পারি ।a 1 , a 2 , b 1 a 1 - b j j 1 a i - b j i = 1 ( a i - b j ) + ( a 2 - a 1 ) = a 2 - b j i 1 ( a i - b j ) + ( a 2 - a)a1,a2,b1a1bjj1aibji=1(aibj)+(a2a1)=a2bji1 1 ) 33 / 251(aibj)+(a2a1)33/251a i - b j ( a i - b j ) + ( a 2 - a 1 ) i = 1aibj(aibj)+(a2a1)i=12b2

এই পর্যায়ে, আমরা । আমরা পুনরুদ্ধার , আমরা যুক্তিসঙ্গত নিশ্চয়তার সাথে পুনরুদ্ধার করতে পারি । আমরা তখন পুনরুদ্ধার করতে পারেন প্রার্থী খুঁজছেন দ্বারা যার জন্য এবং তালিকায় উভয় হয়। যেহেতু আমরা আরো আছে গুলি, আমাদের ব্যর্থতা সম্ভাব্যতা appreciably যায় নিচে। আমরা অবিরত এবং ।a 1 , a 2 , b 1 , b 2 b 2 a 3 b 3 a i - b j ( a i - b j ) + ( a 2 - a 1 ) ( a i - b j ) + ( a 3 - a 1 ) 3 , 4 , 4a1,a2,b1,b2b2a3b3aibj(aibj)+(a2a1)(aibj)+(a3a1)a,a5,b6,a6,b6b3,a4,b4,a5,b6,a6,b6

এই অ্যালগরিদমের যে কোনও মুহুর্তে, আমরা কিছু ভুল অনুমান করতে পেরেছি এবং এটি দ্বন্দ্বের কারণ হয়ে উঠবে (এক পর্যায়ে বলুন, ভাল প্রার্থী )। তারপরে আমরা ব্যাকট্র্যাক করি এবং অন্য সম্ভাবনার চেষ্টা করি; যদি আমরা সমস্ত সম্ভাবনা নিঃশেষ করি তবে আমরা আবার ব্যাকট্র্যাক করব এবং আরেকটি সম্ভাবনা চেষ্টা করব (অ্যালগোরিদমের বিভিন্ন স্তরের জন্য); ইত্যাদি।aibjaibj

আসলে এই অ্যালগরিদমকে প্রোগ্রাম করা ভাল ব্যায়াম - এটি ব্যাকট্র্যাকিংকে সঠিকভাবে কীভাবে বাস্তবায়ন করা যায় তা বোঝার একমাত্র উপায়। এই অ্যালগরিদমটি বাস্তবে কার্যকর হয় কিনা তা জানার একমাত্র উপায়।


আপনাকে ধন্যবাদ এবং আমি আরও ব্যপারে এই ব্যাকট্র্যাকিংয়ের কোড করব। সম্ভবত সেই মূল কাগজের লেখক একটি অনুরূপ পদ্ধতি ব্যবহার করেছিলেন কারণ তিনি "ব্যাকট্র্যাক" উল্লেখ করেছিলেন।
অতিথি

আপনার উত্তরে আমার মন্তব্য পোস্ট করতে ভুলবেন না জন্য দুঃখিত! আপনার প্রস্তাবিত পদ্ধতিটিও আমি কার্যকর করেছি (সি ++ তে)। উপসংহারটি হল যে আপনার অ্যালগরিদম বেশ ভাল কাজ করে এবং এর একটি সমাধান খুব দ্রুত পাওয়া যায় (আমার পিসিতে এক সেকেন্ডেরও কম সময়ে)। এবং এবার, আমি ব্যাকট্র্যাকের পদ্ধতিগুলি আরও ভালভাবে বুঝতে পারি। আপনাকে অনেক ধন্যবাদ!
একজন অতিথি

আমি কেন আমার শেষ মন্তব্যে "@ ইউয়াল" পারি না ?! দুঃখিত, তবে আমি বেশ কয়েকবার চেষ্টা করেছি।
অতিথি

সম্ভবত আপনি কোডটি অনলাইনে ভাগ করে নিতে পারেন, যাতে কাগজটি পড়া অন্যান্য লোকেরা এতে অ্যাক্সেস পান।
যুবাল ফিল্মস

5

আপডেট : নীচের বিবরণটি একটি ভিন্ন সমস্যার জন্য (যাতে দুটি স্বতন্ত্র সেটগুলির মধ্যে জোড়াযুক্ত দূরত্বের পরিবর্তে আপনার সেটগুলিতে সমস্ত জুটিওয়ালা দূরত্ব থাকে)। এটি যেহেতু একে অপরের সাথে সম্পর্কিত তাই এটি ছেড়ে দেব leave

এই সমস্যাটিকে বেল্টওয়ে সমস্যা বলা হয় এবং এটি সাধারণ ডি- ডোরাস এমবেডিং সমস্যার একটি বিশেষ ক্ষেত্রে । এটি টার্নপাইক সমস্যার সাথেও ঘনিষ্ঠভাবে জড়িত, যেখানে দূরত্বের পার্থক্যগুলি পরম (কিছু সংখ্যক মডেল নয়) ared

বেল্টওয়ের সমস্যাটি বহু-সময়ের অ্যালগরিদমকে স্বীকার করে কিনা তা জানা যায়নি। সম্পর্কিত প্রশ্নের জন্য বিভিন্ন সিউডো-পলি-টাইম অ্যালগরিদম রয়েছে। সেরা রেফারেন্স (হায় একটি পুরাতন একটি) লেমকে, স্কিয়েনা এবং স্মিথের কাগজ ।


1
আমি মনে করি এই সমস্যাটি অন্যরকম। বেল্টওয়ে সমস্যাটিতে আমরা সমস্ত জোড়ায়িত দূরত্ব জানি, এখানে আমরা কেবল এটি দুটি গ্রুপের মধ্যে জানি যা বিভিন্ন গ্রুপে রয়েছে। যদিও এটি কম তথ্যের মতো বলে মনে হচ্ছে এটি বাস্তবে সমস্যা সমাধানে সহায়তা করতে পারে।
ডোমোটর্প

অই হ্যাঁ. এটি একটি দ্বিপক্ষীয় গ্রাফ ভাল যুক্তি.
সুরেশ ভেঙ্কট

দ্বিপক্ষীয় গ্রাফ? কিছুটা এইরকম. হতে পারে আমার এইভাবে সমস্যাটি চেষ্টা করা উচিত তবে আমার এখনই চিন্তাভাবনার ট্রেন নেই train
একজন অতিথি

3

এখানে একটি পর্যবেক্ষণ যা আমি মনে করি আপনাকে একটি পা রাখবে, সম্ভবত সমস্যার সমাধান করার জন্য যথেষ্ট একটি।

ধরুন আমরা চার পার্থক্য রয়েছে একটি 1 - 1 , একটি 1 - 2 , একটি 2 - 1 , একটি 2 - 2 যে দুই মধ্যে pairwise পার্থক্য যেমন উঠা একটি 'র এবং দুই a1b1a1b2a2b1a2b2ab ' এর। এটিকে পার্থক্যের একটি চৌম্বক বলুন । লক্ষ করুন যে আমাদের একটি তুচ্ছ সম্পর্ক রয়েছে:

( a 1 - b 1 ) - ( a 1 - b 2 ) = ( a 2 - b 1 ) - ( a 2 - b 2 )( মোডএন )

(a1b1)(a1b2)=(a2b1)(a2b2)(modN).

আপনি এই সম্পর্ক কে 2 এর তালিকা থেকে বের করে সম্ভাব্য কোয়ার্টেটগুলি সনাক্ত করতে চেষ্টা করতে পারেন । উদাহরণস্বরূপ, তালিকা থেকে চারটি পার্থক্য বেছে নিন; যদি তারা উপরের সম্পর্কটি সন্তুষ্ট না করে তবে তারা অবশ্যই একটি চৌকো কাঠামো থেকে উত্থিত হবে না; যদি তারা সম্পর্কটি সন্তুষ্ট করে তবে তারা কোয়ার্টেট থেকে উত্থিত হতে পারে।K2

আপনি এখান থেকে জিনিস নিতে পারবেন এমন অনেকগুলি উপায় রয়েছে তবে আমি সন্দেহ করি যে এটি যথেষ্ট হবে।

আমি বিশেষত সন্দেহ করি যে, আপনার উদাহরণের প্যারামিটার সেটিংসের জন্য, সমস্যাটি খুব সহজ হতে চলেছে, কারণ একটি চৌকোটি চিহ্নিত করার জন্য উপরের পরীক্ষায় সম্ভবত খুব বেশি মিথ্যা ধনাত্মকতা থাকবে না। আমাদের সকলের ( কে 2)4 ) তালিকা থেকে 4 টি পার্থক্য বাছাই করার উপায়গুলি থাকবে ( কে(K24)2 ) 2কোয়ার্টেট (যা সমস্ত সম্পর্ককে সন্তুষ্ট করবে) এবং বাকীটি অ-কোয়ার্টেটগুলি (যা সম্ভাব্যতা1/এন এরসাথে সম্পর্কের তাত্ত্বিকভাবে সন্তুষ্ট করে)। সুতরাং আমরা((কে2)সম্পর্কে দেখার আশা করি(K2)21/N4 ) - ( কে2 ) 2)/এনমিথ্যা পজিটিভ, অর্থাত্ 4-টি-টিপল যা পরীক্ষায় উত্তীর্ণ হয় যদিও তারা কোয়ার্টেট না হলেও। আপনার প্যারামিটারগুলির জন্য, এর অর্থ হল আমাদের কাছে 225 কোয়ার্ট এবং(58905-225)/251234অন্যান্য মিথ্যা ধনাত্মক রয়েছে; সুতরাং পরীক্ষায় উত্তীর্ণ 4-টিউপলগুলির অর্ধেকটি আসলে কোয়ার্টেটস। এর অর্থ এই যে উপরোক্ত পরীক্ষাটি কোয়ার্টেটগুলি সনাক্ত করার জন্য বেশ ভাল উপায়। একবার আপনি কোয়ার্টিটগুলি চিনতে পারলে, পার্থক্যের তালিকার কাঠামো পুনরুদ্ধারে আপনি সত্যই শহরে যেতে পারেন।((K24)(K2)2)/N(58905225)/251234


@ ডিডাব্লু: আপনাকে ধন্যবাদ, তবে আমি এখন সম্ভাব্য সকল কোয়ার্টেটগুলি (সম্পূর্ণ 225 + 234 = 459 টি) পাওয়া যাওয়ার পরে পরবর্তী পদক্ষেপটি নিয়ে ভাবছি। এটি কি 3 টি নন-ওভারল্যাপিং কোয়ার্টারিগুলির সন্ধান করা এবং এটির কোনও সম্ভাব্য সমাধান গঠন করতে পারে কিনা তা পরীক্ষা করা উচিত? কীভাবে এটি দক্ষতার সাথে সম্পন্ন করবেন? সম্ভবত এতটা কঠিন নয় কারণ অনেকগুলি ওভারল্যাপিং থাকবে না।
একজন অতিথি

@ আগস্ট, ভাল প্রশ্ন! আমি তখন কী ভাবছিলাম তা মনে করতে পারছি না। আমি মনে করি আমি এক পদ্ধতির চিন্তা রিকল এক চৌতাল দিয়ে শুরু, তারপর অন্যদের যে এটি 2 পার্থক্য মধ্যে ওভারল্যাপ জন্য চেহারা (যেমন, থেকে উদ্ভূত হতে পারে একটি 1 , একটি , 1 , 2 যেখানে 2 ), কিন্তু আমি সেখান থেকে কোথায় যাবেন তা জানেন না (কীভাবে মিথ্যা পজিটিভগুলি ফিল্টার করবেন)। a1,aj,b1,b2j2
DW

3

এখানে একটি ভিন্ন পদ্ধতি, iteratively এই সংখ্যার যে মধ্যে প্রদর্শিত করতে পারবে না খোঁজার উপর ভিত্তি করে { একটি 1 , ... , একটি 6 } । একটি সেট করুন একটি এর কোনো ওভার-দ্য পড়তা একটি যদি আমরা সেটা জানি 's { একটি 1 , ... , একটি 6 } একজন । একইভাবে, বি একজন overapproximation হয় যদি আমরা জানি যে s ' { 1 , ... , 6 } বি । স্পষ্টতই, ছোট {a1,,a6}Aa{a1,,a6}ABb{b1,,b6}BAহয়, এই অতিরিক্ত-অনুমানের পরিমাণ আরও কার্যকর এবং এটি বি এর ক্ষেত্রেও একই রকম । আমার দৃষ্টিভঙ্গি এই অতিরিক্ত-অনুমানকে পুনরায় সংশোধন করার উপর ভিত্তি করে তৈরি করা হয়েছে, অর্থাত্ পুনরায় এই সেটগুলির আকার হ্রাস করা (আমরা যত বেশি সংখ্যক মানকে অসম্ভব বলে প্রমাণ করি)।B

এই পদ্ধতির মূল জন্য একটি পদ্ধতি পরিশোধন : কোনো ওভার-দ্য পড়তা দেওয়া একটি জন্য একটি 's এবং কোনো ওভার-দ্য পড়তা বি জন্য ' s, একটি নতুন ওভার পড়তা এটি একটি * জন্য একটি 'র যেমন যে একজন । বিশেষ করে, সাধারণত একজন * চেয়ে ছোট হতে হবে একজন , তাই এই আমাদের জন্য ওভার পড়তা পরিমার্জন করতে দেয় একটিAaBbAaAAAAa 'র।

প্রতিসাম্য দ্বারা, মূলত একই কৌতুক দেওয়া হবে আমাদের জন্য একটা ওভার পড়তা পরিমার্জন 'র: কোনো ওভার-দ্য পড়তা দেওয়া একটি জন্য একটি ' s এবং কোনো ওভার-দ্য পড়তা বি জন্য 'র যে এটা একটা নতুন ওভার উত্পাদন করা হবে -approximation বি * জন্য 's।bAaBbBb

সুতরাং, আমি আপনাকে কীভাবে পরিশোধন করতে বলি, তারপরে আমি এই সমস্যাটির জন্য একটি সম্পূর্ণ অ্যালগরিদম পেতে সমস্ত কিছু একসাথে রেখে দেব। এরপরে, ডি পার্থক্যগুলির একাধিক সেট বোঝাতে দিন , যেমন, ডি = { আই - বি : 1 i , জে 6 } ; আমরা একটি পরিশ্রুত ওভার পড়তা খোঁজার মনোনিবেশ করব একজন * দেওয়া একটি , বিDD={aibj:1i,j6}AA,B

কীভাবে একটি পরিশোধন গণনা করা যায়। একটি একক পার্থক্য বিবেচনা করুন ডি ডি । সেট বিবেচনা করুন + + বি = { + + Y : Y বি } । আমাদের জ্ঞান যে উপর ভিত্তি করে বি এর কোনো ওভার-দ্য পড়তা হয় 'র, আমরা জানি যে অন্তত একটি উপাদান + + বি এর একটি উপাদান হতে হবে { একটি 1 , ... , একটি 6 } । অতএব, আমরা d + B এর প্রতিটি উপাদানকে চিকিত্সা করতে পারিdDd+B={d+y:yB}Bbd+B{a1,,a6}d+Bএকটি একটি সংখ্যাকে জন্য "প্রস্তাবনা" হিসাবে সম্ভবত অন্তর্ভুক্ত একটি । সুতরাং, এর মিষ্টির উপর সব পার্থক্য দিন ডি এবং প্রতিটি জন্য, চিহ্নিত যা সংখ্যার দ্বারা "প্রস্তাব" হয় AdDd

এখন আমি পালন করা যে সংখ্যা যাচ্ছি একটি 1 এই প্রক্রিয়ার সময় অন্তত 6 বার প্রস্থাবিত করা নিশ্চিত। কেন? কারণ পার্থক্য একটি 1 - 1 হয় ডি , এবং যখন আমরা এটিকে প্রক্রিয়া, একটি 1 নম্বর এটা প্রস্তাব দেওয়া এক যেহেতু আমরা নিশ্চিত করছি হতে হবে (অর্থাৎ 1বি , ( একটি 1 - 1 ) + + বি ইচ্ছা অবশ্যই একটি 1 ) অন্তর্ভুক্ত । একইভাবে, পার্থক্য a 1 - b 2 কোথাও উপস্থিত হয়a1a1b1Da1b1B(a1b1)+Ba1a1b2ডি , এবং এটি কারণ করব একটি 1 পুনরায় প্রস্তাব করতে হবে। এই ভাবে, আমরা দেখতে যে সঠিক মান একটি 1 প্রস্থাবিত করা হবে না অন্তত 6 বার। একই হিসাবে একটি 2 , এবং একটি 3 , এবং আরওধরে রাখে।Da1a1a2a3

সুতরাং, দিন একটি * সংখ্যার সেট হতে একটি * যে অন্তত 6 বার প্রস্তাব করা হয়েছে। এই একজন ওভার পড়তা হবে নিশ্চিত একটি 'র, উপরোক্ত মন্তব্য।Aaa

একটি অপ্টিমাইজেশান হিসাবে, আমরা সমস্ত পরামর্শ যে উপস্থিত না ফিল্টার করতে পারে একজন অবিলম্বে: অন্য কথায়, আমরা পার্থক্য চিকিৎসা করতে পারে মূল্যবোধের সব পরামর্শ হিসাবে ( + + বি ) একজন । এটি নিশ্চিত করে যে আমাদের A A থাকবে । আশা করছি একজন * থেকে যথাযথভাবে ছোট একটি ; কোনও গ্যারান্টি নেই, তবে যদি সবকিছু ঠিকঠাক হয়, সম্ভবত এটি হবে।Ad(d+B)AAAAA

একসঙ্গে এই স্থাপন আলগোরিদিম পরিমার্জন একটি , বি উত্পাদ একটি * হিসাবে অনুসরণ করে হয়:A,BA

  1. যাক এস = ডি ( + + বি ) একজন । এটি পরামর্শের বহু সেট।S=dD(d+B)A

  2. এস তে প্রতিটি মান কতবার উপস্থিত হয় তা গণনা করুন । যাক একজন * যে প্রদর্শিত অন্তত 6 বার মূল্যবোধের সেট হতে এস । (এই একটি অ্যারের নির্মাণের দ্বারা দক্ষতার সঙ্গে বাস্তবায়ন করা যাবে একটি প্রাথমিকভাবে সব শূন্য 251 এর প্রথমে, এবং প্রতিটি সময় সংখ্যা গুলি পরামর্শ দেওয়া হয়, আপনি বাড়ায় একটি [ গুলি ] ; শেষে আপনি মাধ্যমে কুড়ান একটি উপাদান যার মান 6 অথবা খুঁজছেন বৃহত্তর)SASasa[s]a

অনুরূপ একটি পদ্ধতি পরিমার্জন নির্মিত হতে পারে একটি , বি পেতে বি * । আপনি মূলত উপরের জিনিসগুলিকে বিপরীত করে কিছু লক্ষণ উল্টাতে পারেন: যেমন, ডি + বি এর পরিবর্তে আপনি দেখুন - ডি + A,BBd+Bd+A

প্রাথমিক ওভার-অ্যাক্সেসিমিয়েশন কীভাবে গণনা করা যায়। আমাদের প্রাথমিক অতিরিক্ত-অনুমানের পেতে, একটি ধারণা হ'ল (ওলগ) ধরে নেওয়া যায় যে 1 = 0 । এটা অনুসরণ করে যে প্রতিটি মান একটি আমি মধ্যে কোথাও প্রদর্শিত হতে হবে ডি এইভাবে পার্থক্যের তালিকা, ডি জন্য আমাদের প্রাথমিক ওভার পড়তা হিসাবে ব্যবহার করা যেতে পারে একটি 'র। দুর্ভাগ্যক্রমে, এটি আমাদের বি এর জন্য খুব কার্যকর ওভার সান্দ্রতা দেয় না ।b1=0aiDDab

আরও ভাল একটি পদ্ধতির অতিরিক্ত একটি এর এর মূল্য অনুমান করা হয় । অন্য কথায়, আমরা (wlog) যে অনুমান 1 = 0 , এবং ব্যবহার একটি = ডি এর আমাদের প্রাথমিক ওভার পড়তা হিসাবে একটি 'র। এর পরে, আমরা অনুমান যা এই 36 মান এক প্রকৃতপক্ষে এক একটি 'র বলে একটি 1 । যে তারপর আমাদের কোনো ওভার-দ্য পড়তা দেয় বি = একটি 1 - ডি জন্য 'এর। আমরা এই প্রাথমিক ওভার সান্দ্রতা , বি ব্যবহার করিab1=0A=Daaa1B=a1DbA,B, তারপরে এটি পুনরায় সংশোধন পর্যন্ত সংশোধন করুন এবং ফলাফলটি সঠিক কিনা তা পরীক্ষা করুন। আমরা 36 বার পর্যন্ত পুনরাবৃত্তি 36 বিভিন্ন অনুমান সঙ্গে, একটি 1 (গড় 6 অনুমান যথেষ্ট হওয়া উচিত), যতক্ষণ না আমরা যে এক কাজ পাবেন।a1

একটি সম্পূর্ণ অ্যালগরিদম। এখন আমাদের কাছে একটি 1 , , a 6 , 1 , , বি 6 গণনা করার জন্য একটি সম্পূর্ণ অ্যালগরিদম থাকতে পারে । মূলত, আমরা A এবং B এর জন্য প্রাথমিক ওভার-সান্ধ্যভঙ্গীকরণ পাই , তারপরে পুনরাবৃত্তভাবে পরিমার্জন করি।a1,,a6,b1,,b6AB

  1. একটি অনুমান করুন: প্রতিটি জন্য z- র ডি , অনুমান একটি 1 = z- র । নিম্নলিখিতগুলি করুন:zD

    1. প্রাথমিক অতিরিক্ত-অনুমানের: A = D এবং B = z - D সংজ্ঞায়িত করুন ।

    2. আইট্রেটিভ পরিশোধন: একত্রিত হওয়া পর্যন্ত বার বার নিম্নলিখিত প্রয়োগ করুন:

      • পরিমার্জন একটি , বি একটি নতুন ওভার পড়তা পেতে বি * এর 'এর।
      • পরিমার্জন একটি , বি * একটি নতুন ওভার পড়তা পেতে একটি * এর একটি 'র।
      • Let A:=A and B:=B.
    3. Check for success: If the resulting sets A,B each have size 6, test whether they are a valid solution to the problem. If they are, stop. If not, continue with the loop over candidate values of z.

Analysis. Will this work? Will it eventually converge on A={a1,,a6} and B={b1,,b6}, or will it get stuck without completely solving the problem? The best way to find out is probably to test it. However, for your parameters, yes, I expect it will be effective.

If we use method #1, as long as |A|,|B| are not too large, heuristically I expect the sizes of the sets to monotonically shrink. Consider deriving A from A,B. Each difference d suggests |B| values; one of them correct, and the other |B|1 can be treated (heuristically) as random numbers. If x is a number that does not appear among the a's, what is the probability that it survives the filtering and is added to A? Well, we expect a to be suggested about (|B|1)×36/251 times in total (on average, with standard deviation about the square root of that). If |B|36, the probability that a wrong x survives the filtering should be about p=0.4 or so (using the normal approximation for the binomial, with continuity correction). (The probability is smaller if |B| is smaller; e.g., for |B|=30, I expect p0.25.) I expect the size of A to be about p(|A|6)+6, which will strictly improve the over-approximation since it is strictly smaller than |A|. For instance, if |A|=|B|=36, then based upon these heuristics I expect |A|18, which is a big improvement over |A|.

Therefore, I predict that the running time will be very fast. I expect about 3-5 iterations of refinement to be enough for convergence, typically, and about 6 guesses at z should probably be enough. Each refinement operation involves maybe a few thousand memory reads/writes, and we do that maybe 20-30 times. So, I expect this to be very fast, for the parameters you specified. However, the only way to find out for sure is to try it and see if it works well or not.


@DW: Thank you very much for your long answer and the effort you took to type so many words!!! According to your description, your algorithm here is quite correct. And I’m going to code it to test the efficiency right now.
a guest

@DW: Hi, I’ve implemented your description in C++. The algorithm runs fast and the refinement step does reduce the sizes of original sets A and B. However, the convergence seems to be not so perfect. In fact, for each guess zD, the final sizes of A and B are still more than 10 according to my record output by the program. The most frequent number of existing elements when A (and B) can not be improved by further repetitions of refinement is 11, but I can hardly see a number below 10. However, this has made the problem solvable by trying each 6-elements chosen from
a guest

@DW: (Cotinued)final A and B for each guess z (although I didn’t implement the last step on my PC). The total amount computation will be about 220, I estimate. Thank you very much!
a guest

Sorry, but my last comment is too long, and I have to split it into two.
a guest
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.