“...ঝড়ের মুকুট পরে ত্রিশূণ্যে দাঁড়িয়ে আছে, দেখো ,স্বাধীন দেশের এক পরাধীন কবি,---তার পায়ের তলায় নেই মাটি হাতে কিছু প্রত্ন শষ্য, নাভিমূলে মহাবোধী অরণ্যের বীজ...তাকে একটু মাটি দাও, হে স্বদেশ, হে মানুষ, হে ন্যাস্ত –শাসন!—সামান্য মাটির ছোঁয়া পেলে তারও হাতে ধরা দিত অনন্ত সময়; হেমশষ্যের প্রাচীর ছুঁয়ে জ্বলে উঠত নভোনীল ফুলের মশাল!” ০কবি ঊর্ধ্বেন্দু দাশ ০

শনিবার, ১১ জুলাই, ২০২০

মন্টি হল সমস্যা – অন্তর্দৃষ্টিকে চ্যালেঞ্জ করার খেলা

ভোগবাদ-ই হচ্ছে বর্তমান যুগের মূল মন্ত্র। সেই ভোগবাদের ভুক মেটায় পদার্থ বিজ্ঞান (Material Science)। প্রতিদিন পৃথিবীর কোণায় কোণায় বেশীরভাগ গবেষণাগারে শত শত বিজ্ঞানী এই নিয়ে কাজ করে চলেছেন যে কি ভাবে নতুন নতুন পদার্থ আবিষ্কার করা যায়। এই গবেষণার তাত্বিক ভিত্তি আসে পদার্থবিদ্যার প্রধান দুটি শাখা থেকে, যথা,   পরিসংখ্যানগত বলবিজ্ঞান (Statistical Mechanics) এবং কোয়ান্টাম বলবিজ্ঞান (Quantum Mechanics)। আবার এই দুটি ভাগেরই মূলে আছে সম্ভাব্যতা তত্ত্ব (Probability Theory)।  তাই বর্তমান যুগের বৈজ্ঞানিক অগ্রগতিতে সম্ভাব্যতা তত্ত্বের একটা বিরাট ভূমিকা আছে। পদার্থ বিজ্ঞান ছাড়াও এই সম্ভাব্যতা তত্ত্বের উপযোগিতা আছে অর্থনীতি শাস্ত্রে। 
বিজ্ঞান, প্রযুক্তি, ও অর্থনীতিতে এতো গুরুত্বপূর্ণ হওয়া সত্তেও আমাদের স্কুলের পাঠ্যসূচীতে সম্ভাব্যতা তত্ত্বকে বিশেষ ভাবে রাখা হয়নি, আর যা আছে তাও খুব গুরুত্ব সহকারে পড়ানো হয় না। এ কারণে সম্ভাব্যতা তত্ত্বে আমাদের খুব মজবুত ভিত কখনোই গড়ে উঠে না। তাই এই বিষয়টি নিয়ে আমাদের ভাল অন্তর্দৃষ্টিও (intuition) জন্মে না। অর্থশাস্ত্র অথবা বৈজ্ঞানিক গবেষণার কাজতো দূরের কথা, আমাদের দৈনন্দিন জীবনেও সম্ভাব্যতার খেলা অনেক পরিস্থিতিতে আসে এবং আমরা তখন দুর্দান্ত রকম ভাবে বিফল হই আর অনেক ভুল সিদ্ধান্ত গ্রহণ করি।

সম্ভাব্যতা তত্ত্ব নিয়ে আমাদের এই দুর্বল অন্তর্দৃষ্টিকে পরীক্ষা করার জন্যে "মন্টি হল সমস্যা" হল এক খুব সুন্দর বৈজ্ঞানিক উপায়।

মন্টি হল (Monty Hall) সমস্যা হল একটি সম্ভাবনার ধাঁধাঁ যা মার্কিন টেলিভিশন গেম শো লেট'স মেক এ ডিল এর ওপর ভিত্তি করে তৈরি হয়েছে। হেঁয়ালিটির নামকরণ হয়েছে অনুষ্ঠানটির উপস্থাপক মন্টি হলের নামে। সমস্যাটি মন্টি হল হেঁয়ালি নামেও পরিচিত, কারণ এর প্রকৃত ফলাফল অসম্ভব মনে হলেও প্রকৃতপক্ষে সত্য। [বাংলা উইকিপিডিয়া থেকে নেওয়া মন্টি হল সমস্যার সংজ্ঞা]

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

কেমন করে খেলে ...

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


সম্ভাব্যতার অংক ...

সম্ভাব্যতার অংক মতে খেলোয়াড়কে সব সময়েই তার প্রথম অনুমান বদলে নেওয়া উচিত, তাতে তার জেতার সম্ভাবনা দ্বিগুণ বেড়ে যায়।

আসুন বোঝা যাক এটা কেমন করে হয়। প্রথমে তিনটে বাক্সের (ক, খ এবং গ) মধ্যে যেকোনো একটাতে বল থাকার সম্ভাবনা এক-তৃতীয়াংশ (১/৩)। সব বাক্সের সম্ভাবনা সমান (১/৩)। তার মানে যখন খেলোয়াড় প্রথম বাক্সেটা পছন্দ করল (ধরুন বাক্স ক) তখন বাকি দুটো বাক্সে বল থাকার মোট সম্ভাবনা (১/৩+১/৩=২/৩)। এবার পরিচালক বাকি দুটো বাক্স থেকে একটাকে (ধরুন বাক্স খ খুলে দেখিয়ে দিলেন যে ওটাতে বল নেই, তখনও বাকি দুটো বাক্সে (ক এবং খ-এ) বল থাকার মোট সম্ভাবনা ২/৩-ই রয়ে গেছে (খেয়াল করবেন "মোট সম্ভাবনা")। তাহলে কি দাড়াল? বাকি দুটো বাক্সের মোট সম্ভাবনা ২/৩, একটাতে (মানে বাক্স খ-এ) এখন জানা হয়ে গেছে যে বল নেই, তাহলে রয়ে যাওয়া বাক্সে (মানে বাক্স গ-এ) বল থাকার সম্ভাবনা বদলে গেলো, ১/৩ থেকে বেড়ে হল ২/৩। তারমানে, প্রথম যে বাক্সটা পছন্দ ছিল তাতে টাকা আদৌ আছে কি না তার সম্ভাবনা ১/৩, দ্বিতীয় বাক্স, যা পরিচালক খোলে দেখিয়েছিলেন যে ওটা খালি, তাতে বল থাকার সম্ভাবনা নেই (০), আর শেষ ব্যাগটিতে সম্ভাবনা ২/৩। তাহলে পরিচালকের হস্তক্ষেপের পর (মানে দ্বিতীয় বাক্সের সম্ভাবনা নেই শূন্য করে দেবার পর), খেলোয়াড়কে তার পছন্দ বাক্স ক থেকে বাক্স গ-এ বদলে নেওয়াই উচিত (সফলতার সম্ভাবনা ১/৩ থেকে বেড়ে হয়ে যাবে ২/৩, মানে দ্বিগুণ হয়ে যাবে)।
এটাকে অন্য ভাবেও বোঝা যায়। যেমন খেলোয়াড় যদি তার প্রথম অনুমানেই কায়েম থাকে, পরিচালক কি করল না করল তার কোনো কথাই ভাবে না, তাহলে তার জেতার সম্ভাবনা শুরুতে যা ছিল তাই রয়ে গেল, মানে জেতার সম্ভাবনা ১/৩ হয়ে রয়ে গেলো। তারমানে, পরিচালকের হস্তক্ষেপের পর খেলোয়াড় তার পছন্দ বদলালে, জেতার সম্ভাবনা হয়ে যাবে ১-১/৩=২/৩।

সম্ভাব্যতার ভুল অংক ...

কোনো কোনো খেলোয়াড় আবার অন্তর্দৃষ্টি বশতঃ একটু অন্য ভাবে ভাবতে পারেন আর সম্ভাব্যতার অংকে ভুল করে তার জেতার সম্ভাবনা টা কমিয়ে দিতে পারেন। তাহলে, ভুল ভাবনাটা হচ্ছে এরকম:

খেলোয়াড় একটা বাক্স অনুমান করে পছন্দ করেছে। পরিচালক বাকি দুটো বাক্সের মধ্যে কোনো একটা বাক্স, যেটা খালি, সেটা খুলে দেখিয়ে দিলন যে বল ওটাতে নেই। তাহলে এবার বল হয় খেলোয়াড় যে বাক্সটা পছন্দ করেছে তাতে আছে নয়ত যে বাক্সটা এখন খোলা হয়নি সেটাতে আছে। অন্য ভাবে বললে বল দুটো বাক্সের মধ্যে যেকোনো একটাতে আছে। তাই এই ক্ষেত্রে এখনও বন্ধ থাকা বাক্স দুটোর মধ্যে বল থাকার সম্ভাবনা সমান আর সেটা ১/২। তাই এই খেলায় পরিচালকের হস্তক্ষেপের পর খেলোয়াড় তার পছন্দ বদল করার কোনো প্রয়োজন নেই। কারণ বদল করলেও জেতার সম্ভাবনা সমানই থাকবে।

পরীক্ষা করে দেখা যাক ...

এখানে একটা কথা বলা খুবই গুরুত্বপূর্ণ যে, যেকোনো সম্ভাবনার খেলায় গাণিতিক যে সম্ভাব্যতার সংখা আসে সেটা পরীক্ষা করে দেখতে গেলে অনেক অনেক বার (যেমন ১ লক্ষ বার) খেলাটা খেলতে হয়। পরিসংখান তত্বের ভাষায় "নমুনার সংখ্যা" (sample size) বাড়াতে হয়। তারপর সব খেলার পরিসংখ্যান নিলে তবেই দেখা যাবে যে সম্ভাবনাটা ঠিক হচ্ছে কি না।

মন্টি হল (Monty Hall) সমস্যার খেলাটাকে লক্ষ বার খেলা হয়তো ব্যবহারিকভাবে একটু মুস্কিলই বটে, কিন্তু এখানে ব্যাপারটা সহজ হয়ে যায় যদি আমরা একটা কম্পিউটার এর সহায়তা নেই। এখানে সি-ভাষায় লেখা একটা কম্পিউটার কোড দেয় আছে। এটা যেকোনো কেউ চালিয়ে দেখে নিতে পারেন যে এতক্ষণ যা আলোচনা করলাম সেটা কতটুকু সঠিক।
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
// This MONTY-HALL PROBLEM
// Written by- Debabrata Deb, TIET, Patiala
// To understand the code better 
// see the following video on YouTube (last 5 mins)
// https://youtu.be/rTSfPOOayaU
// Dated: 10th July 2020
int main(){
 int ii,nplay=10000000,bags[3];
    int hid,pid,heid;
    int nwin=0, win=0;
    for (ii=1;ii<=nplay;ii++){
        // set up the bags
        bags[0]=bags[1]=bags[2]=0;            // emptying all three bags
        hid=(int)(3*(double)rand()/RAND_MAX); // host chooses in which box to put ball
     bags[hid]=1;                          // ball is placed into the hid-th box
          // play the game
     pid=(int)(3*(double)rand()/RAND_MAX); // the player chooses the pid-th box
        
        do{
          // host has to choose an empty box which is neither pid nor hid
          // why not hid? because host only opens the box which is empty
          // and hid is the box which contains the ball. 
          heid=(int)(3*(double)rand()/RAND_MAX); // host's choosen empty box id
        }while(heid==hid || heid==pid);
        // game ends -- next we will check if the player have won 
          // to win with 2/3 probability, 
     // the player switches its choice from pid to
     // the third box which the host did not choose
     // in otherwords, because player would choose to switch to win more, 
     // now if the pid box has the ball then he looses
     if(bags[pid]==1) win=0;   // i.e. the player looses the game 
     else win=1;
        //printf("Game #%4d: ball was in %d box, Player chooses %d box, Host chooses %d box, win %d\n",ii,hid+1,pid+1,heid+1,win);
        
        nwin+=win;
    }
    printf("\nWin probability = %f (ideal=%f)\n",(double)nwin/nplay,2.0/3.0);
    return 0;
}
এই নিচে দেওয়া ইউটিউব ভিডিও তে মন্টি হল সমস্যার আগা-গোড়া আলোচনা রয়েছে। বিশেষ করে সি-ভাষায় লেখা উপরের কোড কেমন করে ব্যবহার করতে হবে, প্রোগ্রাম আউটপুট কেমন করে ব্যাখ্যা করবেন, এই সব বিশদ ভাবে রয়েছে।