আমি ডিপ ব্লুয়ের জন্য ব্যবহৃত অ্যালগরিদমের পক্ষে কথা বলতে পারি না, তবে আমি দাবা প্রোগ্রামিংয়ের উন্নতির চেষ্টা করে ব্যাখ্যা করতে যাচ্ছি। গতি সর্বাধিক উন্নতি হয়। ডিপ ব্লু মাল্টি-প্রসেসর ডেডিকেটেড কম্পিউটার ব্যবহার করেছে, সুতরাং তুলনা করা সত্যিই সম্ভব নয়।
https://chessprogramming.wikispaces.com/ একটি দুর্দান্ত উত্স তবে নেভিগেট করা শক্ত hard
দাবা ইঞ্জিনকে উন্নত করার জন্য 3 টি প্রধান কার্যকারিতা রয়েছে যা হ'ল মূল্যায়ন, চলন উত্পন্নকরণ এবং অনুসন্ধান ক্রিয়াকলাপ।
মূল্যায়ন কর্মসূচীর পক্ষে সবচেয়ে কঠিন, কারণ নিয়মের অনেকগুলি ব্যতিক্রম রয়েছে। হার্ড ড্রাইভের জায়গা কম দামের সাথে, theভাল ফাংশনটি আরও ব্যতিক্রমগুলি মূল্যায়নের অনুমতি দেয়।
মুভ জেনারেশন, একটি পদক্ষেপ তৈরি এবং আনমাক করার পাশাপাশি প্রচুর স্মৃতি গ্রাস করে কারণ এটি বহুবার প্রিফর্ম করতে হয়েছে। সর্বাধিক সাধারণ প্রজন্মের ফাংশনগুলি হ'ল মেলবক্স, বিটবোর্ড, 0x88, 8x8, বর্ধিত বোর্ড (10x10, 10x12), এবং একটি পূর্বনির্ধারিত মুভ অ্যারে / টেবিল (* আমি একটি সূচীকরণ সরানো টেবিল ব্যবহার করি)। বর্তমান মতামতটি হ'ল বিটবোর্ডগুলি দ্রুততর এবং ম্যাজিক বিটবোর্ডগুলি ব্যবহার করে এটি 30% পর্যন্ত গতিবেগ করে। ডাঃ রবার্ট হায়াট, অধ্যাপক এবং ক্র্যাটিফাই দাবা ইঞ্জিনের স্রষ্টা, কোনও উল্লেখযোগ্য গতি বাড়েনি বলে দাবি করেছেন।
প্রাথমিক অনুসন্ধান ফাংশনটি ছিল আদিম সর্বনিম্ন সর্বাধিক ফাংশন। মূলত আপনি কি প্রতিপক্ষের স্কোরটি সরিয়ে এবং ন্যূনতম করার জন্য পাশের স্কোরকে সর্বাধিক করার চেষ্টা করেছিলেন? আলফা-বিটা ছিল প্রথম উন্নতি। তারা স্থানান্তর টেবিল, কাট-অফ মান, আকাঙ্ক্ষা উইন্ডো এবং ইতিহাসের হিউরিস্টিক্স দ্বারা অনুসন্ধান করা চালগুলির সংখ্যা হ্রাস করেছে। এগুলি গভীরতার প্রথম অনুসন্ধানগুলি। অভ্যন্তরীণ পুনরাবৃত্তিমূলক গভীরতর অনুসন্ধানও রয়েছে যা "সেরা" পদক্ষেপ (গুলি) সন্ধান করার চেষ্টা করে আরও গভীর আশাবাদী যে অন্যান্য পদক্ষেপগুলি অনুসন্ধান করা ফলদায়ক প্রমাণিত হবে।
দ্রষ্টব্য: আমার সূচি সারণী। জিএনইউচেস এবং জেসেস্টার উভয়ই তাদের চলগুলি তৈরি করতে একটি সূচক অ্যারে ব্যবহার করে। তারা সম্ভাব্য পদক্ষেপের সাথে অ্যারে পূরণ করে ইঞ্জিনটি আরম্ভ করে। ছয়টি টুকরো নিন এবং প্রতিটি স্কোয়ার থেকে উপলব্ধ আইনী পদক্ষেপগুলি গণনা করুন। সুতরাং প্রতিটি টুকরা একটি [64] [8] অ্যারে ছিল। আমি এই ধারণাটি নিয়েছি এবং এটি দুটি সূচি এবং একটি টেবিলের সাথে সংকুচিত করেছি। সারণীতে একটি মান রয়েছে যা জানায় যে 16 টি চালগুলি সম্ভব কিনা, একটি সূচক মুভের অফসেট ধরে রাখে এবং অন্যটি মাস্কটি ধারণ করে।
অফসেট [] = {-8, -1, 1, 8, -9, -7, 7, 9, -17, -15, -10, -6, 6, 10, 15, 17};
মুখোশ [] = {1, 2, 4, 8, 16, 32, 64, 128, 256, ...};
তারপরে একটি স্লাইডিং মুভের প্রজন্ম মুভ টেবিলের বিপরীতে এটির মঞ্জুরিপ্রাপ্ত অফসেটগুলিতে এর মাস্কটির বৈধতা অনুসন্ধান করা তত সহজ।