যদি অসীম প্রক্রিয়াকরণ শক্তি দেওয়া হয়, তবে এমন কোনও অ্যালগরিদম আছে যা দাবা পুরোপুরি খেলতে পারে?


29

এমন কোনও অ্যালগরিদম রয়েছে কি, যেখানে যদি অসীম প্রক্রিয়াকরণ ক্ষমতা দেওয়া হয় তবে কোনও কম্পিউটার দাবা পুরোপুরি খেলতে পারে যাতে এটি কখনই হারাতে না পারে?

যদি তা হয় তবে আমি এর জন্য সিউডো কোডটি কোথায় খুঁজে পাব?


8
নিখুঁত দাবা বলতে কী বোঝ?
হার্ব ওল্ফ

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

5
@ ডেভিডশওয়ার্টজ - "নিখুঁত দাবা" অবশ্যই সংজ্ঞায়িত করা যায় না। উভয়ই "অসীম প্রক্রিয়াকরণ শক্তি" করতে পারে না। এর অর্থ কি "0 টি সময়ে সমস্ত নির্দেশ ক্রম চালিত করে"? "অসীম সংখ্যক প্রসেসর উপলব্ধ আছে"? এফডাব্লুআইডাব্লু - "নিখুঁত দাবা" এর আমার সংজ্ঞাটি "কখনই একটি খেলা হারাবে না"।
বব জার্ভিস - মনিকা

24
হ্যাঁ, এটিকে বলপূর্বক শক্তি বলা হয়। অসীম প্রক্রিয়াকরণ শক্তি দিয়ে আপনাকে আলফা-বিটা ছাঁটাই করতে হবে না, যদিও আপনার অনুসন্ধানের গাছটি ধরে রাখতে আপনার আরও বড় পরিমাণে সঞ্চয় প্রয়োজন হতে পারে।
মাইকেল

4
একটি "অ্যালগরিদম" এর ধারণা এবং অসীম প্রক্রিয়াকরণ শক্তিটির ধারণাটি সত্যই মিশে যায় না। অ্যালগরিদম এবং গণ্যতার তত্ত্ব সমস্ত সীমাবদ্ধ পদক্ষেপের ফলাফল অর্জনের একটি অনুমানের উপর ভিত্তি করে। যদি আপনি অসীম সংখ্যক পদক্ষেপের অনুমতি পেয়ে থাকেন তবে কোনটি গণনাযোগ্য এবং কোনটি অদৃশ্য হয় না তার মধ্যে পার্থক্য।
মাইকেল কে

উত্তর:


62

একটি অ্যালগরিদম কি বিদ্যমান? হ্যাঁ। জেরমেলোর উপপাদ্য অনুসারে , দাবা-র মতো চূড়ান্ত নিরঙ্কুশ-নিখুঁত-তথ্য দ্বি-খেলোয়াড় গেমের জন্য তিনটি সম্ভাবনা রয়েছে: প্রথম খেলোয়াড়ের একটি বিজয়ী কৌশল থাকে, বা দ্বিতীয় খেলোয়াড়ের বিজয়ী কৌশল থাকে, অথবা উভয়ই খেলোয়াড় ড্র করতে বাধ্য করতে পারে। দাবা কোনটি তা আমরা এখনও (এখনও) জানি না। (অন্যদিকে, চেকারগুলি সমাধান করা হয়েছে : যে কোনও প্লেয়ারই ড্র করতে বাধ্য করতে পারে))

ধারণামূলকভাবে, অ্যালগরিদমটি বেশ সহজ: একটি সম্পূর্ণ গেম ট্রি তৈরি করুন , পাতাগুলি (গেম-শেষের অবস্থানগুলি) বিশ্লেষণ করুন, এবং হয় বিজয়ী প্রাথমিক পদক্ষেপ করুন, পদত্যাগ করুন বা একটি অঙ্কিত অফার করবেন।

সমস্যাটি বিশদে নিহিত রয়েছে: প্রায় 10 43 টি সম্ভাব্য অবস্থান রয়েছে, এবং আরও বেশি পরিমাণে চালনা (বেশিরভাগ অবস্থান একাধিক উপায়ে পৌঁছানো যেতে পারে)। এটির সুবিধা নিতে আপনার সত্যই আপনার অসীম-শক্তিশালী কম্পিউটারের প্রয়োজন, যেহেতু এই কম্পিউটারটি এই অ্যালগরিদমের সুবিধা নিতে পারে তা জ্ঞাত মহাবিশ্বের সাথে ফিট করতে পারে না, বা মহাবিশ্ব শেষ হওয়ার পরে কিছুক্ষণ গণনা শেষ করবে না।


13
@ উইল্ডকার্ড নং, এটি কোনওভাবেই ধরে নেয় না: এটিতে দাবা সংক্রান্ত সমস্ত সম্ভাব্য আইনী গেম রয়েছে এবং এটি সেই সমস্ত খেলাগুলিকে বেছে নেবে যেখানে হাতের খেলোয়াড়টি হারাবে না।
23

11
@ উত্সাহিত হয়ে, আমি অ্যালগরিদমের "পদত্যাগ" পদক্ষেপের কথা উল্লেখ করছিলাম। এটি মোটেই প্রয়োজনীয় পদক্ষেপ নয়।
ওয়াইল্ডকার্ড

38
ত্রি-পুনরাবৃত্তির নিয়ম অনুসন্ধানের জায়গাকে সীমাবদ্ধ করে, তাই কম্পিউটারকে অসীম শক্তিশালী হতে হবে না , কেবলমাত্র জ্যোতির্বিদ্যার দিক থেকে শক্তিশালী হতে হবে।
হোয়া লং ট্যাম

9
রেফারেন্সের জন্য, পর্যবেক্ষণযোগ্য মহাবিশ্বে ( 10 ^ 80 এর ক্রম অনুসারে) সম্ভাব্য গেমগুলির সংখ্যা ( 10 ^ 120 ) এর জন্য একটি নিম্ন সীমাটি তুলনা করুন । সবচেয়ে সহজ অ্যালগরিদম সেই সমস্ত গেমগুলি খুঁজতে এবং তাদের ডেটা সঞ্চয় করতে হবে। পরমাণু প্রতি একটি খেলা সংরক্ষণ করতে আমরা পর্যবেক্ষণযোগ্য মহাবিশ্বের অনুমান হিসাবে 10 থেকে 40 গুণ বেশি পরমাণু নিতে হবে take
ইঞ্জিনিয়ার টোস্ট

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

25

Https://en.wikedia.org/wiki/Endgame_tablebase দেখুন ।

অসীম কম্পিউটার পাওয়ার দ্বারা, কেউ প্রারম্ভিক অবস্থানের জন্য এই জাতীয় একটি টেবিল তৈরি করতে পারে এবং দাবা সমাধান করতে পারে ।

অনুশীলনে, কেবলমাত্র "পুরুষ" (পদ্ম এবং টুকরো, বাদশাহর গণনা) সহ কেবলমাত্র অবস্থানগুলি বর্তমান সুপার কম্পিউটারগুলি ব্যবহার করে সমাধান করা হয়েছে, সুতরাং আমরা দাবা সমাধান থেকে খুব দূরে। সমস্যার জটিলতা টুকরো সংখ্যা সহকারে তাত্পর্যপূর্ণভাবে বৃদ্ধি পায়।


9
পার্শ্ব দ্রষ্টব্য হিসাবে, আপনি যদি সত্যই এই জাতীয় একটি টেবিল তৈরি করেন তবে আপনি যে তথ্যটি সংরক্ষণ করেছিলেন তা বিবেচনাধীন নয়, এটি পর্যবেক্ষণযোগ্য মহাবিশ্বের তুলনায় প্রায় 10 ^ 43 গুণ ওজনের হবে; পর্যবেক্ষণযোগ্য মহাবিশ্বে ss 10 positions 123 সম্ভাব্য দাবা অবস্থান এবং কেবল 10 ডলার ^ 80 ব্যারিয়ন বিবেচনা করে।
Shufflepants

6
@ শাফলিপ্যান্টস যারা বলেছিলেন যে আমি এটি বেয়ারিয়ন ব্যবহার করে সংরক্ষণ করছি?
মাইকেল

3
@ ক্রিসটফ এবং তথ্যের সংরক্ষণ ধরে নিয়েছেন এবং ধরে নিচ্ছেন যে আপনার কাছে একটি ডিটেক্টর এবং অসীম প্রসেসিং পাওয়ার সহ আপনার সুপার কম্পিউটার রয়েছে, আপনি আস্তে আস্তে গুগলপ্লেক্স বর্ষের মতো টেবিলকে হকারিং রেডিয়েশন হিসাবে পড়তে পারেন।
Shufflepants

3
@ শাফলিপ্যান্টস নোট করুন যে আসল বিজয়ী কৌশলটির জন্য একটি পূর্ণ টেবিলবেসের চেয়ে অনেক কম জায়গার প্রয়োজন হতে পারে। উদাহরণস্বরূপ, নিমের একটি বিজয়ী কৌশল রয়েছে যা বর্ণনা করা সহজ, সমস্ত সম্ভাব্য রাজ্যের একটি বিশাল টেবিল তৈরি করার দরকার নেই।
ফেডেরিকো পোলোনি 20'17

1
এই সমাধানটি যেমনটি বলা হয়েছে তেমন কার্যকর নয়। এই জাতীয় সারণির ভর একটি ব্ল্যাকহোল তৈরি করে এবং এ থেকে ডেটা ব্যাখ্যা করা অসম্ভব।
ইমোরি

19

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


এটা সত্যি না. তিনি বলেছিলেন আপনার অসীম প্রক্রিয়াকরণ ক্ষমতা রয়েছে, তবে অসীম স্থান সম্পর্কে কিছুই বলেননি।
উবাদুব

@ বুদব: আমাদের অসীম জায়গার দরকার হবে না। 50-পদক্ষেপের নিয়মের কারণে একটি গেমটির দৈর্ঘ্য সীমাবদ্ধ এবং একটি অবস্থান থেকে সমস্ত সম্ভাব্য পদক্ষেপগুলি সাজানোর জন্য একটি নিয়ম তৈরি করা যেতে পারে। এগুলি যেমন বাছাই করা যায়, এগুলি একটি পূর্ণসংখ্যা হিসাবে সংরক্ষণ করা যেতে পারে। পুরো গাছটি হাঁটার জন্য প্রয়োজনীয় সমস্ত স্মৃতি। এবং যদি আপনার অসীম সময় থাকে তবে আপনি যতবার ইচ্ছা গাছটি হাঁটতে পারেন, তাই আপনাকে প্রতিটি সম্ভাব্য দাবা খেলা সংরক্ষণ করতে হবে না।
বনাম

গেমটির দৈর্ঘ্য সীমিত তবে এটি অত্যন্ত বড়; অন্য কেউ যেমন উল্লেখ করেছেন, আপনি যদি এই জাতীয় সমস্ত গেমগুলি সংরক্ষণের জন্য কোনও টেবিল তৈরি করেন, "আপনি যে তথ্যটি সংরক্ষণ করেছেন তা বিবেচনাধীন নয়, এটি পর্যবেক্ষণযোগ্য মহাবিশ্বের চেয়ে প্রায় 10 ^ 43 গুণ ওজনের হতে পারে; বিবেচনা করে সেখানে ~ 10 ^ 123 সম্ভব দাবা পজিশন এবং পর্যবেক্ষণযোগ্য মহাবিশ্বে কেবল 10
ডলার

2
@ বুদব্ব: এটি সত্য, তবে আমি "এই জাতীয় সমস্ত গেমস সংরক্ষণের জন্য একটি টেবিল" বলছিলাম না। গাছ সম্পর্কিত অনেকগুলি অ্যালগোরিদম রয়েছে যা পুরো গাছের সমস্ত নোডকে স্মৃতিতে ধরে রাখতে হয় না।
বনাম

@ ভার্জিজ ভাল পয়েন্ট
উডাবুব

13

প্রশ্নটিকে সরাসরি সম্বোধন করতে: হ্যাঁ এমন একটি অ্যালগরিদম রয়েছে। একে মিনিম্যাক্স বলা হয়। (এন্ডগ্যাম টেবিলবাসগুলি এই অ্যালগরিদম (পিছনের দিকে!) ব্যবহার করে তৈরি করা হয়, তবে সাধারণ প্লেইন সিম্পল মিনিম্যাক্স অ্যালগোরিদম আপনার যা দরকার তা হ'ল)। এই অ্যালগরিদম যে কোনও দুটি খেলোয়াড়কে পুরোপুরি শূন্য রাশি খেলা খেলতে পারে। সিউডোকোডটি এখানে সন্ধান করুন:

https://en.wikipedia.org/wiki/Minimax

নোট করুন যে এই অ্যালগরিদমের রূপগুলি আধুনিক কম্পিউটার দাবা প্রোগ্রামগুলি দ্বারা ব্যবহৃত হয়।


4

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

গেম ইঞ্জিনটি এটি যে গেমটি খেলছে তার বিধিগুলিও জানতে হবে না। এটির জন্য প্রয়োজনীয় সমস্ত একটি "গেম স্টেট" এর একটি অস্বচ্ছ প্রতিনিধিত্ব এবং ফাংশন যা (ক) যে কোনও গেমের অবস্থা দেওয়া হলে পরবর্তী আইনি গেমের রাজ্যগুলির একটি তালিকা সরবরাহ করে এবং (খ) একটি গেমের রাজ্য দেওয়া হয়, সিদ্ধান্ত নেয় এটি খেলোয়াড়ের জন্য জয় কিনা? , খেলোয়াড় 2 এর জন্য একটি জয়, একটি ড্র, বা এটি শেষের অবস্থা নয়।

এই ফাংশনগুলি দেওয়া একটি সাধারণ পুনরাবৃত্ত আলগোরিদিম গেমটি "সলভ" করে।

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

আমি 20 বছর আগে এই জাতীয় একটি প্রোগ্রাম লিখেছি। আমি এটি নিউটস-ও-ক্রস খেলে পরীক্ষা করে দেখেছি (আপনি আমেরিকান হলে টিক-ট্যাক-টো)। অবশ্যই এটি একটি নিখুঁত গেম খেলেছে Sure

অবশ্যই এটি কোনও গুরুতর গেমের জন্য যেকোন কল্পনাপ্রসূত কম্পিউটারে দ্রুত নেমে আসবে। কারণ এটি পুনরাবৃত্তিমূলক এটি কার্যকরভাবে স্ট্যাকের উপর পুরো গেম ট্রি তৈরি করছে, সুতরাং আপনি অন্যান্য উত্তরে উল্লিখিত দাবার 10 ^ 123 রাজ্যের বিশ্লেষণের কাছাকাছি যাওয়ার আগে আপনি একটি "স্ট্যাক ওভারফ্লো" (পাং খুব উদ্দেশ্যযুক্ত) পাবেন। তবে এটি মজাদার যে নীতিগতভাবে এই ছোট প্রোগ্রামটি কাজ করবে।

আমার জন্য এটি এআই সম্পর্কে আকর্ষণীয় কিছু বলেছেন: তবে আপনার মনে হয় অনেক "বুদ্ধি" ডিপ ব্লু বা গো জিরো দ্বারা প্রকাশিত হয়েছে, বা প্রকৃতপক্ষে কোনও মানুষ খেলেছে দাবা বা গো এমন একটি ধারণা রয়েছে যার মধ্যে এই গেমগুলি তুচ্ছ, ঠিক গণনাযোগ্য অনুকূল সমাধান। চ্যালেঞ্জ হ'ল যুক্তিসঙ্গত সময়ে অনুকূল সমাধান না হলেও কীভাবে ভাল পাওয়া যায়।


আপনার অ্যালগরিদম কেবল নিখুঁত-জ্ঞানের দ্বি-প্লেয়ার গেমের জন্য কাজ করে। এটি স্ট্র্যাটেগো -র মতো লুকানো-তথ্য গেমগুলির জন্য পড়ে যাবে , কারণ ফাংশন (ক) এর কোনও প্রয়োগ গেমের বিধি লঙ্ঘন করে। এটি সম্ভাব্য অসীম সময়সীমার গেমগুলির জন্যও ব্যর্থ হয়: উদাহরণস্বরূপ, দাবা থেকে 50-মুভের নিয়মটি বাদ দিন, এবং এটি বলতে পারবেন না যে বোর্ডের চারপাশে দুটি রাজা একে অপরকে তাড়া করে জিততে পারে না। এটি কেবলমাত্র এটিই বলতে পারে যে এটি কোনও শেষের অবস্থা নয়।
চিহ্নিত করুন

বৈধ পয়েন্ট আমি আমার উত্তর সম্পাদনা করব।
গ্যারেথ

3

সরলতার জন্য চালগুলিগুলির অঙ্কন বা অসীম ক্রমগুলির সম্ভাবনাগুলি আমি এড়িয়ে যাব। একবার অ্যালগরিদম বোঝা গেলে, এই ক্ষেত্রে এটি প্রসারিত করা বিশেষত কঠিন নয়।

প্রথমত, কিছু সংজ্ঞা:

  1. যে পদক্ষেপ খেলোয়াড়ের পক্ষে গেমটি জিতবে যে এই পদক্ষেপটি তৈরি করে সে একটি বিজয়ী পদক্ষেপ।

  2. যে পদক্ষেপ খেলোয়াড়ের জন্য গেমটি হারায় যে এই পদক্ষেপটি তোলে এটি হারাতে যাওয়া পদক্ষেপ।

  3. কমপক্ষে একটি জয়ের পদক্ষেপের সাথে অন্য খেলোয়াড়কে ছেড়ে যাওয়া যে কোনও পদক্ষেপ হ'ল একটি হারানো পদক্ষেপ। (যেহেতু প্রতিপক্ষ সেই পদক্ষেপ নিতে পারে এবং ক্ষতিতে বাধ্য করতে পারে))

  4. অন্য খেলোয়াড়কে কেবল হারাতে পারা চালানো যে কোনও পদক্ষেপ এটি একটি বিজয়ী পদক্ষেপ। (আপনার প্রতিপক্ষ যে পদক্ষেপ নেয় তা আপনি জিততে পারবেন না you)

  5. একটি নিখুঁত কৌশল মানে সর্বদা বিজয়ী পদক্ষেপ নেওয়া যদি কোনও অবশিষ্ট থাকে এবং পদত্যাগ করা হয় যখন কারও কাছে কেবল চালিকা বাকি থাকে।

এখন, একটি নিখুঁত কৌশল লেখা তুচ্ছ। কেবলমাত্র সমস্ত সম্ভাব্য মুভ ক্রমগুলি বিস্ফোরণ করুন এবং বিজয়ী / হারানো চালগুলি সনাক্ত করুন। অচলাবস্থাকে উপেক্ষা করে, শেষ পর্যন্ত এটি প্রতিটি পদক্ষেপকে জয়ী পদক্ষেপ বা হেরে যাওয়া পদক্ষেপ হিসাবে চিহ্নিত করবে।

এখন কৌশলটি তুচ্ছ। আপনার সমস্ত সম্ভাব্য পদক্ষেপ দেখুন। কোনও বিজয়ী পদক্ষেপ যদি থেকে যায় তবে একটি নিন এবং জিতে নিন। যদি কেবল হেরে যাওয়ার পদক্ষেপগুলি থেকে যায় তবে পদত্যাগ করুন, কারণ আপনার প্রতিপক্ষ আপনাকে হারাতে বাধ্য করতে পারে।

অচলাবস্থার সম্ভাবনা অন্তর্ভুক্ত করার জন্য কৌশলটি সামঞ্জস্য করা কঠিন নয়।

আপডেট : কেবলমাত্র এটি স্পষ্ট নয় তবে এটি কীভাবে প্রতিটি পদক্ষেপকে আরও বেশি জয়ী বা হারানো চাল হিসাবে চিহ্নিত করে, বিবেচনা করুন:

  1. জয়ের ফলশ্রুতিতে প্রতিটি পদক্ষেপ একটি বিজয়ী পদক্ষেপ।
  2. ক্ষতির ফলে প্রাপ্ত প্রতিটি পদক্ষেপ হারাতে যাওয়া পদক্ষেপ।
  3. প্রতিপক্ষের কেবল জয়ী হওয়া বা হারাতে পারা চালানো প্রতিটি পদক্ষেপ হ'ল হয় বিজয়ী বা হারানো পদক্ষেপ।
  4. nদীর্ঘতম সম্ভাব্য দাবা গেমের চাল সংখ্যাগুলি কল করুন। (আমরা আপাতত সীমাহীন ক্রমগুলি উপেক্ষা করছি, যদিও সেগুলি অন্তর্ভুক্ত করা কঠিন নয় not)
  5. nআমাদের বিবেচনা করা উচিত পূর্ববর্তী পদক্ষেপের সাথে কোনও পদক্ষেপ নেই ।
  6. n-1পূর্ববর্তী পদক্ষেপের সাথে প্রতিটি পদক্ষেপ হয় একটি বিজয়ী পদক্ষেপ বা হেরে যাওয়া পদক্ষেপ, যেহেতু nচালগুলি দীর্ঘতম গেমটি শেষ করে।
  7. এইভাবে গভীরতার প্রতিটি পদক্ষেপ n-2কেবল বিজয়ী চাল বা হারানো চালগুলি অনুসরণ করে এবং এটি নিজেই একটি বিজয়ী পদক্ষেপ বা হারানো পদক্ষেপ।
  8. এবং তাই প্রথম পদক্ষেপ ফিরে।

1
আপনার বিজয়ী এবং পরাজয় হারানোর সংজ্ঞাগুলি যথেষ্ট ব্যাপক নয়। উদাহরণস্বরূপ, প্রথম পদক্ষেপটি গেমটি (# 1) জিততে পারে না, বা প্রতিপক্ষকে কেবলমাত্র হেরে যাওয়া চাল (# 4) দিয়ে ছেড়ে দেয় না, সুতরাং এটি কোনও "বিজয়ী পদক্ষেপ" নয়। এটি খেলাটি (# 2) হারাবে না বা প্রতিপক্ষকে কোনও বিজয়ী পদক্ষেপ (# 3) দিয়ে ছাড়বে না, সুতরাং এটি কোনও "হারানো পদক্ষেপ" নয়। আপনার কৌশলটি প্রয়োজন যে প্রতিটি পদক্ষেপকে "বিজয়ী পদক্ষেপ" বা "হারানো চাল" হিসাবে সংজ্ঞায়িত করা হবে, যা আপনি এটি সংজ্ঞায়িত করেছেন তেমন সহজ নয়।
পারমাণবিক ওয়াং

2
@ নিউক্লিয়ার ওয়াং এটি প্রতিটি পদক্ষেপকে বিজয়ী পদক্ষেপ বা হারানো পদক্ষেপ হিসাবে সংজ্ঞায়িত করে। তৃতীয় বিকল্পটি কী বলে আপনি মনে করেন? সমস্ত সম্ভাব্য দাবা গেমসের গাছটি ভিজ্যুয়ালাইজ করুন (এবং মনে রাখবেন, আমরা আপাতত বন্ধন বা অসীম ক্রমগুলি বাদ দিচ্ছি)। প্রতিটি শৃঙ্খলা জয় বা হারের মধ্যেই শেষ হয়। এই গাছটি পেরিয়ে শেষ পর্যন্ত প্রতিটি পদক্ষেপকে জয়যুক্ত পদক্ষেপ বা হেরে যাওয়া পদক্ষেপ হিসাবে চিহ্নিত করে।
ডেভিড শোয়ার্জ

13
@NuclearWang পারেন প্রথম পদক্ষেপ হল এক প্লেয়ারের একটি বিজয়ী পদক্ষেপ, বা অন্য দাবা (মাংসপেশীর আক্ষেপ-Tac অঙ্গুলী মত) নিখুঁত খেলার সাথে একটি টানা খেলা। আমরা জানি না কারন কারও কাছে এই অ্যালগরিদমটি সমাপ্তির জন্য চালনার কম্পিউটিং শক্তি কারও কাছে নেই এবং এটির প্রত্যক্ষ প্রমাণ আর কারও কাছে পাওয়া যায় নি।
hobbs

8
দাবাতে কোনও এলোমেলোতা এবং কোনও গোপন তথ্য নেই, যা "সম্ভবত" জন্য কোনও স্থান রাখে না। প্রতিটি পজিশন জিতেছে, হারিয়ে গেছে বা আঁকছে (এমনকি আমরা সেগুলি সনাক্ত করতে সক্ষম না হলেও )। এবং এই ব্যাখ্যাটি সরলতার জন্য "টানা" বিকল্পটি ছাড়ছে, তবে এটি বেশিরভাগের সমান 1) কোনও অবস্থান নিয়ম অনুসারে আঁকানো হয় এবং 2) পজিশনটি যদি কোনও বিজয়ী পদক্ষেপ না থাকে তবে এটি আঁকা হয় কমপক্ষে একটি পদক্ষেপ যা প্রতিদ্বন্দ্বীকে বিজয়ী চাল না করে।
hobbs

2
@ ডেভিডশওয়ার্টজ: যদি কেউ হারানো অবস্থায় না থাকে তবে প্রতিটি পদক্ষেপ যা নিখুঁত নয় খারাপ bad একটি হেরে যাওয়া অবস্থায়, সাধারণত কোনও একক "নিখুঁত" পদক্ষেপ থাকতে পারে না [বাধ্যতামূলক-সরানো পরিস্থিতি ব্যতীত] যেহেতু কোনও আইনি পদক্ষেপের কোনও সম্ভাবনাময় (সম্ভবত অত্যন্ত স্বীকৃত) পরিস্থিতিতে একমাত্র বিজয়ী বা অঙ্কনের পদক্ষেপ হওয়ার সম্ভাবনা থাকে। পদত্যাগ করা, আপাতদৃষ্টিতে অস্বচ্ছলতম "পদক্ষেপ" বলে মনে হবে। মনে করুন গেমটি ডি 4 এর সাথে হোয়াইটের জয় হিসাবে প্রমাণিত হয়েছে। আপনি যদি একটি দাবা প্রোগ্রাম সাড়া খেলতে চাই চান 1. d4সঙ্গে ...resigns?
সুপারক্যাট

2

ধরুন আপনি তিনটি ফাংশন আছে: win_state, get_player, এবং next_states। এর ইনপুটটি win_stateএকটি গেম স্টেট এবং শ্বেত চেকমেটে থাকলে আউটপুট -1 হয়, যদি এটি ড্র হয় তবে 0 যদি কালো চেকমেটে থাকে 1 এবং Noneঅন্যথায়। এর ইনপুটটি get_playerএকটি গেম স্টেট এবং এর কালো রঙের পালা হলে আউটপুট -1 হয় এবং যদি সাদা রঙের হয় 1 ইনপুটটি next_statesপরবর্তী পরবর্তী খেলাগুলির তালিকার একটি তালিকা যা আইনী পদক্ষেপের ফলে আসতে পারে। তারপরে নিম্নলিখিত ফাংশনটি যখন কোনও গেমের অবস্থা এবং কোনও খেলোয়াড় দেওয়া হয়, আপনাকে সেই খেলোয়াড়ের জয়ের জন্য কী গেমের দিকে যেতে হবে তা আপনাকে বলা উচিত।

def best_state(game_state,player)
  def best_result(game_state):
     if win_state(game_state):
        return(win_state)
     else:
         player = get_player(game_state)
         return max([best_result(move)*player for move in next_states(game_state)])*player
  cur_best_move = next_states(games_state)[0]
  cur_best_outcome = -1
  for state in next_states(game_state):
     if best_result(state)*player > cur_best_outcome:
           cur_best_outcome = best_result(state)*player
           cur_best_move = state
return(best_move)

0

একটি চেহারা সারণী ব্যবহার করুন

হ্যাঁ। এটি সহজ. এমনকি আপনার অসীম প্রক্রিয়াকরণ শক্তিও প্রয়োজন নেই। আপনার যা দরকার তা হ'ল একটি লুক টেবিল যা প্রতিটি সম্ভাব্য বোর্ড পজিশনের জন্য, সেই অবস্থানে খেলার জন্য সেরা পদক্ষেপ। এখানে সিউডো কোডটি রয়েছে:

def play-move(my-color, board-position):
    return table-of-best-moves[my-color, board-position]

ধরা

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

এছাড়াও, দাবা সম্পর্কে আমাদের বর্তমান জ্ঞান দেওয়া, নিখুঁত খেলার গ্যারান্টি দেয় যে আপনি হারাবেন না তা নিশ্চিত হওয়ার কোনও উপায় নেই। উদাহরণস্বরূপ, নিখুঁত খেলা যদি হোয়াইটের পক্ষে জয়ের গ্যারান্টি দেয় তবে কালো পুরোপুরি খেলে এমনকি কালো হারাতে পারে।

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