সুডোকু ধাঁধা এর কার্যকর এনকোডিং


16

যে কোনও নির্বিচারে 9x9 গ্রিড নির্দিষ্ট করে তোলার জন্য প্রতিটি বর্গের অবস্থান এবং মান দেওয়া দরকার। এর জন্য একটি নির্দোষ এনকোডিং 81 (x, y, মান) ট্রিপলগুলি দিতে পারে, প্রতিটি এক্স, y এবং মান (1-9 = 9 মান = 4 বিট) এর জন্য মোট 81x4x3 = 972 বিটের জন্য 4 টি বিট প্রয়োজন। প্রতিটি বর্গক্ষেত্রকে সংখ্যায়িত করে, প্রতিটি অবস্থানের তথ্যকে 7 টি বিটে হ্রাস করতে পারে, প্রতিটি স্কোয়ারের জন্য কিছুটা এবং মোট 891 বিট ফেলে দেওয়া যায়। পূর্বনির্ধারিত অর্ডার নির্দিষ্ট করে, কেউ এটিকে আরও মারাত্মকভাবে হ্রাস করতে পারে মোট 324 বিটের প্রতিটি মানের জন্য 4 টি বিটকে। তবে একটি সুডোকুতে নিখোঁজ সংখ্যা থাকতে পারে। এটি নির্দিষ্ট করতে হবে এমন সংখ্যার সংখ্যা হ্রাস করার সম্ভাবনা সরবরাহ করে তবে পজিশনের জন্য অতিরিক্ত বিট লাগতে পারে। আমাদের 11-বিট এনকোডিং (অবস্থান, মান) ব্যবহার করে আমরা 11 দিয়ে ক্লু সহ একটি ধাঁধা নির্দিষ্ট করতে পারিn বিট, যেমন একটি সর্বনিম্ন (17) ধাঁধা 187 বিট প্রয়োজন। আমি এখনও অবধি সবচেয়ে ভাল এনকোডিং হ'ল প্রতিটি স্থানের জন্য এটি কিছুটা পূরণ হয়েছে কিনা তা চিহ্নিত করার জন্য একটি বিট ব্যবহার করা এবং যদি তা হয় তবে নিম্নলিখিত 4 টি বিট নম্বরটি এনকোড করে। এটির জন্যন্যূনতম ধাঁধা ( এন = 17 ) এরজন্য 81 + 4 এন বিট, 149প্রয়োজন। প্রতিটি বৈধ সুডোকু সেটআপের ডেটাবেস ছাড়াই আরও কার্যকর এনকোডিং কি আছে? (ক সাধারণ অ্যাড্রেসিং জন্য বোনাস পয়েন্ট এন থেকে এন × এন ধাঁধা)11n81+4এনn=17এনN×এন

এটি আমার কাছে সবেমাত্র ঘটেছিল যে অনেক ধাঁধা অন্যের ঘূর্ণন হতে পারে, বা অঙ্কগুলির একটি সরল অনুমান থাকবে। সম্ভবত এটি প্রয়োজনীয় বিটগুলি হ্রাস করতে সহায়তা করতে পারে।

উইকিপিডিয়া অনুসারে ,

ক্লাসিক 9 × 9 সুডোকু সলিউশন গ্রিডের সংখ্যা 6,670,903,752,021,072,936,960 (ওইআইএসে ক্রম A107739), বা প্রায় 6.67×1021

আমি যদি আমার গণিতটি সঠিকভাবে করি ( ), এটি অনুসন্ধানের টেবিলের জন্য তথ্যের বিট (৩ (72.498) এ আসে।ln(6,670,903,752,021,072,936,960)ln(2)

কিন্তু:

আবর্তন, প্রতিবিম্ব, ক্রমশক্তি এবং সম্পর্কিত সম্পর্কিত মতামতগুলি যখন বিবেচনায় নেওয়া হয় তখন মূলত পৃথক সমাধানের সংখ্যাটি কেবল 5,472,730,538 [15] (ওইআইএসে ক্রম A109741) হিসাবে দেখানো হয়েছিল।

এটি 33 (32.35) বিট দেয়, সুতরাং কোন পারমিটেশনটি ব্যবহার করতে হবে তা বোঝার একটি চতুর পদ্ধতিটি পুরো 73 বিটের নিচে যেতে পারে।


1
হ্যাঁ, আমি পর্যাপ্ত সমস্যার কথা চিন্তা না করে প্রাথমিকভাবে কিছু জিনিস পোস্ট করেছি। আমি এটি মুছে ফেলেছি। দুর্দান্ত প্রশ্ন!
প্যাট্রিক 87

আপনি কী পরিমাণ সুডোকু ধাঁধা আছে তা আমাদের স্মরণ করিয়ে দিতে পারেন, তাই আমরা জানি যে সহজেই ডিকোডেবল এনকোডিংগুলি এবং একটি ব্রুট ফোর্মের গণনার মধ্যে কতটা বিস্তৃত ব্যবধান?
গিলস 'এস-অশুভ হওয়া বন্ধ করুন'

আপনাকে গ্রিডের সমস্ত এনকোড করতে সক্ষম হওয়া দরকার , সুতরাং আপনার 73 বিট (স্থির দৈর্ঘ্যের এনকোডিং ধরে) need কোনও "কোন অনুমানের ব্যবহার করতে হবে তা নির্দেশ করার চতুর পদ্ধতি" আপনাকে এতে সহায়তা করবে না। 6.67×1021
সুইভ

@ সিক একটি তথ্যের তত্ত্বের দৃষ্টিকোণ থেকে, আমি মনে করি আপনাকে অবশ্যই ঠিক থাকতে হবে, তবে অতিরিক্ত বিটগুলি কোথা থেকে আসছে তা আমি বুঝতে পারি না। সেখানেক্রিয়াকলাপগুলি, যা 19 টি বিট, আয়না এবং ঘোরার জন্য প্লাস 3, সুতরাং 22 টি প্লাস 33 টি অনন্য ধাঁধার জন্য 55 করে; অন্য 18 কোথা থেকে আসে? 9!
কেভিন

উত্তর:


5

প্রতিটি বৈধ সুডোকু সেটআপের ডেটাবেস ছাড়াই আরও কার্যকর এনকোডিং কি আছে?

হ্যাঁ. আমি কোনও শর্তের উপর নির্ভর করে 6 বা 9 বিটগুলিতে আপনার ন্যূনতম ধাঁধাটির 149-বিট এনকোডিং উন্নত করে একটি এনকোডিংয়ের কথা ভাবতে পারি । এই ছাড়া একটি ডাটাবেস বা অন্যান্য সমাধানের বা আংশিক বোর্ড কোন রেজিস্টার। এখানে এটা যায়:9×9

প্রথমত, আপনি ব্যবহার একটি সংখ্যা এনকোড বিট মি বোর্ডে চেহারাগুলো একটি সংক্ষিপ্ত নম্বর দিয়ে। পরবর্তী 4 বিট এম প্রদর্শিত হবে এর প্রকৃত সংখ্যা enc এনকোড করুন । পরবর্তী4m4m বিটগুলি এম প্রদর্শিত হবেএমন প্রতিটি অবস্থানের এনকোড করে।7m

নিম্নলিখিত বিটগুলি পতাকাগুলি যা ইঙ্গিত করে যে অবশিষ্ট পজিশনের একটি সংখ্যা রয়েছে কিনা (আপনি কেবল যে অবস্থানগুলিতে এম আছেন সেগুলি এড়িয়ে যাবেন )। যখনই এই বিট এক , তারপর পরবর্তী 3 বিট ইঙ্গিত যা সংখ্যা এটা (আদেশ সেট হয় { 1 , ... , 9 } ছাড়া মি )। উদাহরণস্বরূপ, যদি মি = 4 এবং 3 বিট81m1{1,,9}mm=4101 , তবে বোর্ডে সংশ্লিষ্ট পজিশনে সংখ্যাটি 5 ((0 থেকে গণনা করা) সেট , সুতরাং এটি 6 । সংখ্যা j < এম বাইনারি জে - 1 হিসাবে এনকোড করা হবে, এবং সংখ্যা j > মি j - 2 হিসাবে এনকোড হবে। যেহেতু আমরা ইতিমধ্যে পজিশনলিখেছি,এই পদক্ষেপে বোর্ডের বাকী অংশটি এনকোড করতেকেবলমাত্র 3 ( এন - ) বিট যুক্ত করা হবে।{1,2,3,5,6,7,8,9}6j<mj1j>mj23(n)

সুতরাং, এই পদ্ধতিটি ব্যবহার করে বোর্ডকে এনকোড করার জন্য প্রয়োজনীয় বিটের মোট সংখ্যা হ'ল

B=4+4+7+(81)+3(n)=89+3+3n.

জন্য আমরা লক্ষ করুন যে, 0 বা 1 (সাধারণ, হতে পারে এন /n=17 )। সুতরাং,বোর্ডের একটি নম্বর উপস্থিত নেই কিনা তার উপর নির্ভর করে বি 140 বা 143 হতে পারে।n/9B

এটি উল্লেখ করার মতো যে সাধারণ ক্ষেত্রে কেভিনের সমাধানটি আরও ভাল। শুধুমাত্র সবচেয়ে 149 বিট এ এই এনকোডিং ব্যবহার করা হয় , অথবা এন = 20 এই শর্তে যে = 0 । অন্তত এটা কিভাবে সত্য সুবিধা গ্রহণ করতে যে একটি সাধারণ ধারণা দেখায় এন = 9 খুব কাছাকাছি 2 লগ ইন করুন 2 এন n{17,18,19}n=20=0N=92log2N (যার মানে আমরা "হারান মেমরি" ঝোঁক মান প্রতি 4 টি বিট ব্যবহার করে, যেহেতু 4 টি বিট অনুমতি আমাদের সংখ্যা প্রকাশ করতে ।N=16


উদাহরণ।নীচের বোর্ডটি ক্লু সহ বিবেচনা করুন ।n=17

.  .  .   .  .  .   .  1  .
4  .  .   .  .  .   .  .  .
.  2  .   .  .  .   .  .  .

.  .  .   .  5  .   4  .  7
.  .  8   .  .  .   3  .  .
.  .  1   .  9  .   .  .  .

3  .  .   4  .  .   2  .  .
.  5  .   1  .  .   .  .  .
.  .  .   8  .  6   .  .  .

এখানে, কোনও নম্বর বোর্ডে উপস্থিত হয় না এবং 6, 7 এবং 9 নম্বর কেবল একবার উপস্থিত হয়। আমরা ( ) এবং = 1 ( ) গ্রহণ করি। বাম থেকে ডানে এবং তারপরে উপরে থেকে নীচে অবস্থানগুলি পড়া, এম 36 ( ) অবস্থানে উপস্থিত রয়েছে । সুতরাং, আমাদের এনকোডিং শুরু হয় ।m=70111=10001m360100100011100010100100

0110140000000100101100m=71101,2,3,4,5,6,8,9111

// m=7, l=1 and its position on the board.
011100010100100
// Numbers 1 and 4 at the beginning. Note that 1 is encoded 000, and 4 is 011.
0000000100001011
// Numbers 2 and 5.
0000000001001000000000001100
// Numbers 4 and 8. We skip the appearance of 7 and encode 8 as 110.
010110001110
// 3, 1 and 9. 9 is encoded as 111.
00010100000100001111
// 3, 4, 2, 5, 1, 8, 6 and the last empty cells.
0000101000101100100100011000100000000000111001101000

সম্পূর্ণ এনকোডিংটি রয়েছে 01110001010010000000001001010110000000001001000000000001100010110001110000101000001000011110000101000101100100100011000100000000000111001101000এবং পাঠক সেই স্ট্রিংয়ের দৈর্ঘ্যটি অবশ্যই 143 :-) দেখতে পারবেন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.