আমি কীভাবে একটি "20 প্রশ্ন" অ্যালগরিদম বাস্তবায়ন করতে পারি?


16

শৈশবকাল থেকেই, আমি ভেবে দেখেছি কীভাবে 20Q বৈদ্যুতিন গেমটি কাজ করে। আপনি কোনও জিনিস, জিনিস বা প্রাণী (যেমন আলু বা গাধা ) সম্পর্কে ভাবেন । ডিভাইসটি তখন আপনাকে একাধিক প্রশ্ন জিজ্ঞাসা করে:

  • এটি কি একটি রুটির চেয়ে বড়?
  • এটি বাইরে খুঁজে পাওয়া যায়?
  • এটি বিনোদন জন্য ব্যবহৃত হয়?

প্রতিটি প্রশ্নের জন্য, আপনি হ্যাঁ , না , সম্ভবত , বা অজানা উত্তর দিতে পারেন । আমি সর্বদা এটি কল্পনা করেছিলাম যে এটি প্রচুর, নেস্টেড শর্তাবলীর ( ifস্টেটমেন্টস) কাজ করে। তবে আমি মনে করি এটি প্রোগ্রামারের পক্ষে জটিলতার কারণে এটি একটি অসম্ভব ব্যাখ্যা।

আমি কীভাবে এ জাতীয় ব্যবস্থা বাস্তবায়ন করব?

উত্তর:


19

আমি জানি না কীভাবে 20 কিউ এটি বিশেষভাবে করেছে, তবে 20 টি প্রশ্নের একটি গেম কীভাবে বাস্তবায়ন করা যায় সে সম্পর্কে প্রচুর তথ্য রয়েছে ।

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

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

এখানে চিত্র বর্ণনা লিখুন

মূলত এটি প্রক্রিয়া:

  1. সামগ্রীর সম্পূর্ণ তালিকা দিয়ে শুরু করুন। এগুলি সমস্ত সমান সম্ভাবনা থেকেই শুরু হতে পারে, বা পরীক্ষার ক্ষেত্রে কীভাবে সম্ভাব্য বিষয়টি বেছে নেওয়া হত তা দ্বারা তাদের সাজানো যেতে পারে।
  2. সিদ্ধান্ত গাছ প্রথম প্রশ্ন দিয়ে শুরু করুন। এটিকে প্রশ্ন-কাতারে চাপ দিন।
  3. সারির উপরে প্রশ্ন জিজ্ঞাসা করুন।
  4. প্রক্রিয়া প্রতিক্রিয়া:
    1. হ্যাঁ / কোনও উত্তর প্রশ্নের ভিত্তিতে প্রতিটি উত্তর থেকে পূর্বনির্ধারিত পরিমাণের সম্ভাবনা সরিয়ে / যুক্ত করে।
    2. "হতে পারে" উত্তর একটি "হ্যাঁ" এর পূর্বনির্ধারিত পরিমাণের একটি ভগ্নাংশ সরিয়ে / যোগ করে।
    3. "অজান্ত" সম্ভাবনা পরিবর্তন করে না
  5. একটি "অজানা" বা "হতে পারে" প্রতিক্রিয়া পরবর্তী নোডের উভয় প্রশ্নকে প্রশ্ন-কাতারে চাপ দেয়। একটি "হ্যাঁ" বা "না" প্রতিক্রিয়া কেবল প্রশ্ন কাতারে স্ব স্ব হ্যাঁ / না নোডকে যুক্ত করে।
  6. কোনও একক উত্তরের সম্ভাব্যতা বা পূর্বনির্ধারিত "নিশ্চিততা" প্রান্তিকের বাইরে হওয়া পর্যন্ত প্রশ্ন না হওয়া পর্যন্ত 3 ধাপে যান।
  7. সর্বাধিক সম্ভাব্য উত্তর সরবরাহ করুন।

গাছ উত্পন্ন সম্ভবত অন্য প্রশ্নের বিষয় the তবে মূলত এটি এমন প্রশ্নগুলি বেছে নিচ্ছে যা উত্তরগুলিকে যথাসম্ভব বিভক্ত করে। প্রশ্নগুলির শুরুতে খুব সমানভাবে বিভাজন রাখুন যাতে সর্বাধিক সংখ্যক প্রশ্নের দ্রুততম সমাধান করা যায়।


15

এর সহজ উত্তর হ'ল হ্যান্ডহেল্ড গেম 20Q টি কৃত্রিম বুদ্ধিমত্তা থেকে তৈরি হয়েছিল যা http://20Q.net এ থাকে । 20Q.net- এ আপনি টোয়েন্টির মতো কুশটি প্রশ্নের গেমের বিভিন্ন সংস্করণ খেলতে পারেন, খেলাগুলির মতোই খেলানো প্রতিটি গেম থেকে খেলা শিখতে পারে। হ্যান্ডহেল্ড খেলনা একই নিউরাল নেটওয়ার্ক অ্যালগরিদম ব্যবহার করে। নিউরাল নেটওয়ার্ক অনুমান করার পাশাপাশি জিজ্ঞাসা করার জন্য প্রশ্নগুলি তোলে। এই পদ্ধতির অর্থ হ'ল এআই প্রায়শই সঠিকভাবে অনুমান করবে এমনকি আপনি যদি এআই শেখানো হয়েছে তার থেকে আলাদাভাবে কোনও প্রশ্নের উত্তর দেন। আর একটি সুবিধা হ'ল আপনি একই জিনিসটি ভাবলেও গেমটি প্রতিটি গেমকে আলাদা করে প্রশ্ন করবে।

ক্লাসিক ইংলিশ গেমের অ্যালগরিদম এবং নিউরাল নেটওয়ার্ক (অ্যানিম্যাল, ভেজিটেবল, মিনারেল) 1988 সালে রবিন বার্গনার তৈরি করেছিলেন। । । আমাকে.

জিজ্ঞাসা করার জন্য ধন্যবাদ.


1
হ্যালো রবিন, সাইটে আপনাকে স্বাগতম। উদ্ভাবক নিজে থেকে এই প্রশ্নের উত্তর দেওয়ার চেয়ে কে আরও ভাল। 20Q আসলে কতটা জটিল তা জানা আকর্ষণীয়। সাইটে আপনার অবদানের জন্য ধন্যবাদ এবং আরও অনেক কিছু যাতে কৃত্রিম বুদ্ধিমত্তায় আপনার অবদান। আশা করি আপনি মাঝে মাঝে সাইটটি পরিদর্শন করবেন এবং এআই প্রশ্নের উত্তর দিন :) :)
MichaelHouse

1
হেই, এক্সডি হওয়ার সময় এটিকে ভালবাসুন।
jmacedo

6

আমি "20 কিউ কোড" গুগল করে এটি পেয়েছি: http://mosaic.cnLive.com/B142LCW2008A197

এই সংস্করণটি কেবল প্রাণীদের জন্য তবে আসল 20 টি প্রশ্নের মধ্যে সম্ভবত একটি অনুরূপ আলগোরিটম রয়েছে।

আমি যে কোডটি সংযুক্ত করেছি তার একটি দ্রুত পর্যালোচনা এখানে দেওয়া হয়েছে:
প্রোগ্রামটিতে বেশ কয়েকটি পৃথক উত্তর রয়েছে od বেশ কয়েকটি সত্য বা মিথ্যা বৈশিষ্ট্য তাদের পরে নির্ধারিত হয়:

#define ANIMALS_LIST      "daddylonglegs bee penguin eagle giraffe octopus tiger elephant jellyfish bull \nparrot dolphin python crocodile cat leopard monkey zebra sheep rat \nowl spider frog polarbear snail tortoise rabbit salmon rhino fox"
#define MAMMALS                    "0 0 0 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 0 1 1"
#define FLYING_ANIMALS             "1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
#define WATER_ANIMALS              "0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0"
#define BEAK                       "0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0"
...

যেমন আপনি দেখতে পাচ্ছেন মৌমাছিটি স্তন্যপায়ী নয় তবে এটি উড়ে যায় ইত্যাদি etc.

প্রতিটি গ্রুপের জন্য একটি অ্যারে রয়েছে:

int   mammals[ TOTAL_ANIMALS ] = { 0 };
int   flying_animals[ TOTAL_ANIMALS ] = { 0 };
int   water_animals[ TOTAL_ANIMALS ] = { 0 };
...

যখন প্রতিটি প্রশ্ন জিজ্ঞাসা করা হয়:

  askUserQuestion( guesses, "\nQuestion %d: Is your animal a mammal? \n", mammals );

প্রোগ্রামটি যথাযথ বিভাগের সংজ্ঞাটি দেখে এবং কোন প্রাণীটি সম্ভবত সত্য বা মিথ্যা মান এবং আপনার ইনপুটযুক্ত হ্যাঁ বা প্রশ্নের উত্তর নেই তার উপর নির্ভর করে আপনি যে প্রাণীটির কথা ভাবছেন তা সন্ধান করে।

এটি এতে করা হয়:

void askUserQuestion( int guessNumber, char* question, int* animalData );

0

এটি কোনও বৃহত্তর সিদ্ধান্তের গাছ নয় বা যদি / অন্য বিবৃতি দেয় তবে কঠোর কোডে থাকা একগুচ্ছ নয়। উদ্ভাবক রবিন বার্গনার তার 2005 এর পেটেন্ট ফাইলিংয়ে সম্পূর্ণভাবে তার অ্যালগরিদম নথিভুক্ত করেছিলেন । এটি উদ্ভাবনীভাবে সহজ।


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