প্রোগ্রামিং দাবা ইঞ্জিনগুলি খুব জটিল অঞ্চল, তাই ঠিক সামনে আমি আপনাকে দাবা প্রোগ্রামিং উইকির দিকে নির্দেশ করব , যার এই বিষয়ে প্রচুর দুর্দান্ত তথ্য রয়েছে।
পটভূমি
দাবা গণনা (এবং অনেক অনুরূপ জিনিস) সাধারণত মডেল করা হয় এবং "গেম ট্রি" বা " সিদ্ধান্ত গাছ " হিসাবে ভাবা হয় । সুস্পষ্টভাবে, এই গাছটি একটি নির্দেশিত গ্রাফ, শীর্ষে একটি নোড (বর্তমান অবস্থান) সহ প্রতিটি সম্ভাব্য পদক্ষেপের জন্য নোডের দিকে নিয়ে যায়, যার প্রতিটিই প্রতিটি পরবর্তী পরবর্তী পদক্ষেপের জন্য আরও নোডের দিকে নিয়ে যায় এবং এইরকম।
তাদের সবচেয়ে সরল, নিষ্ঠুর-বল আকারে, দাবা ইঞ্জিনগুলি এই গাছের সমস্ত অবস্থান কিছুটা গভীরতার সীমাতে ("প্লাই") তৈরি করে, প্রতিটি জটিল মানদণ্ড 1 এর ভিত্তিতে প্রতিটি ফলাফলের অবস্থানের মূল্যায়ন করে । তারপরে এটি সেই পদক্ষেপটি খেলে যা সেরা ফলাফলের দিকে নিয়ে যায় বলে মনে হয়। আজকাল, ইঞ্জিনের যে অবস্থানগুলিতে নজর রাখতে হবে তা সীমাবদ্ধ করার জন্য অনেক জটিল কৌশল তৈরি করা হয়েছে, তবে আমি এই উত্তরটির উদ্দেশ্য নিয়ে সেগুলি উপেক্ষা করব, কারণ তারা আসল সমস্যাটি পরিবর্তন করে না হাত.
ম্যাথ ট্যানজেন্ট
ইঞ্জিনগুলি প্রতিটি পদক্ষেপ বিবেচনা করতে সাধারণত একই পরিমাণ সময় নেয় তার মূল কারণ হ'ল সিদ্ধান্ত গাছের আকার গভীরতার ( k
) সাথে তাত্পর্যপূর্ণভাবে বৃদ্ধি পায় ।
প্রারম্ভিক অবস্থান বিবেচনা করুন। গাছের শীর্ষটি ( k=0
) একটি নোড। হোয়াইটের জন্য বিশটি প্রথম সম্ভাবনা রয়েছে, সুতরাং বিশে নোড রয়েছে k=1
। তারপরে, ব্ল্যাকের হোয়াইটের প্রতিটি বিকল্পের বিশটি উপলব্ধ চাল k=2
আছে : সুতরাং , 20 * 20 = 400
সম্ভাব্য অবস্থান রয়েছে! এবং খেলোয়াড়রা তাদের টুকরোগুলি বিকাশ করার সাথে সাথে এটি আরও খারাপ হয়!
উদাহরণস্বরূপ, সাজা সবসময় যেকোনো দেওয়া সময়ে প্রতিটি প্লেয়ারের জন্য বিশ সম্ভব প্যাচসমূহ আছে যাক 2 । আপনি কম্পিউটারকে প্রতিটি খেলোয়াড়ের জন্য পাঁচটি চালনা (দশটি প্লাই) সন্ধানের নির্দেশ দেন। আসুন প্রতিটি স্তরের ব্রুট ফোর্স গাছের আকারটি দেখুন। মজা করার জন্য, আমরা গাছের মোট অবস্থানের সংখ্যাও (উপরে থেকে প্রদত্ত স্তরের দিকে) দেখব।
Ply | Positions | Total Tree Size
----------------------------------------
0 | 1 | 1
1 | 20 | 21
2 | 400 | 421
3 | 8000 | 8421
4 | 160000 | 168421
5 | 3200000 | 3368421
6 | 64000000 | 67368421
7 | 1280000000 | 1347368421
8 | 25600000000 | 26947368421
9 | 512000000000 | 538947368421
10 | 10240000000000 | 10778947368421
পূর্ববর্তী স্তরের চেয়ে প্রতিটি স্তরের তাত্পর্যপূর্ণ আকারে বড় হওয়ার ফলাফলটি হ'ল নীচের স্তরের দ্বারা পুরো গাছের আকার প্রাধান্য পায় । উপরের উদাহরণটি বিবেচনা করুন: কেবলমাত্র শেষ স্তরে দশ ট্রিলিয়ন নোড রয়েছে। গাছের পুরো অংশে কেবল পাঁচশো বিলিয়ন থাকে। দশম প্লাইতে পুরো গাছের প্রায় 95% নোড থাকে (এটি প্রতিটি স্তরে আসলে সত্য)। অনুশীলনে, এর অর্থ হ'ল অনুসন্ধানের সমস্ত সময় "শেষ" পদক্ষেপটি মূল্যায়নে ব্যয় করা হয়।
উত্তর
সুতরাং এটি আপনার প্রশ্নের সাথে কীভাবে সম্পর্কিত? ঠিক আছে, ধরা যাক কম্পিউটারটি উপরে হিসাবে দশটি প্লাইতে সেট করা আছে এবং আরও এটির মূল্যায়নের ফলাফলগুলি "মনে রাখে"। এটি একটি পদক্ষেপ গণনা করে, এটি চালায় এবং তারপরে আপনি একটি পদক্ষেপ নেন। এখন দুটি চাল তৈরি করা হয়েছে, সুতরাং এটি মেমোরি থেকে সমস্ত পদগুলিকে ছাঁটাই করে যা ঘটেনি,
ঠিক আছে! সুতরাং আমরা শুধুমাত্র শেষ দুটি প্লাই গণনা করা প্রয়োজন! আমাদের প্রতিটি-গতিবেগের প্রতিটি গভীরতার প্রাক্কলন ব্যবহার করে, আমাদের এখানে গণনা করতে হবে এমন মোট চাল সংখ্যা এখনও দশ ট্রিলিয়ন এরও বেশি। আমরা ইতিমধ্যে যে পজিশনগুলি গণনা করেছি তার সম্ভাব্যতার মাত্র 2.5%! এমনকি সর্বশেষ পদক্ষেপের ফলাফলগুলি ক্যাশে করেও, আমরা সবচেয়ে ভালভাবে আশা করতে পারি এটি গতির 2.5% বৃদ্ধি! মনে মনে, এই কারণেই যদি আপনার প্রোগ্রামটি পূর্ববর্তী ফলাফলগুলিকে ক্যাশে করে, আপনি সাধারণত চালগুলির মধ্যে একটি গুরুত্বপূর্ণ গতিপথ দেখতে পাবেন না (কম্পিউটার যখন জোর করে সাথী বা কিছু খুঁজে পায় তখন অবশ্যই কেস!)!
সরলীকরণ অস্বীকৃতি
নেই অনেক এই প্রশ্ন নেই, যে কারণে আমি খুব উপরের প্রোগ্রামিং উইকি লিঙ্ক এবং শুধুমাত্র বিস্তৃত গাণিতিক পদ উত্তর ব্যাখ্যা করার চেষ্টা জড়িত জটিলতা। বাস্তবে, প্রোগ্রাম কি পদক্ষেপ পদক্ষেপ থেকে গাছের সাধারণত ক্যাশে অংশ, এবং অন্যান্য কারণ আছে কেন যে তার নিজের উপর অপর্যাপ্ত নেই - কিছু সহজ কারণে (যেমন একটি নির্দিষ্ট লাইন আট প্যাচসমূহ ভালো চক্ষু মেলিয়া পারে, কিন্তু একটি ব্যাক সঙ্গে প্রান্ত ন্যাচ-এ মুভ নাইন!) এবং অনেক অত্যন্ত জটিল (সাধারণত বিভিন্ন চতুর ছাঁটাইয়ের পদ্ধতিতে সম্পর্কিত) ran সুতরাং কম্পিউটারটিকে আগের পদক্ষেপের কাট-অফ গভীরতার উপর ভিত্তি করে খারাপ অনুমানগুলি এড়াতে চাইলে আরও এগিয়ে খুঁজতে হবে।
1 আমি এখানে তাত্ত্বিক কার্যগুলিতে যেতে যাচ্ছি না, কারণ এটি তার নিজস্ব অবিশ্বাস্যরকম জটিল অঞ্চল, তবে প্রায়শই কিছু লাভ রয়েছে যা এখানে অবস্থানের ক্যাচিং স্কিমগুলির মাধ্যমে অর্জন করা যায়।
2 20 এর গড় শাখা প্রশাখার কারণটি সম্ভবত খুব কম ।