আসুন একটু মজা করি। নিচের চিত্রটির দিকে তাকান। কেমন একটা গোল মতো গ্রাফ। মনে হচ্ছে কোনো একটা ম্যাপ বুঝি, যেখানে রাস্তার দিক আবার নির্দেশ করে দেওয়া আছে। মজার ব্যাপার হলো এসব রাস্তা দিয়ে হাটা হাটি করে একটা দারুণ কাজ করা যায়। সেটা হলো, কোনো পূর্ণ সংখ্যা সাত দিয়ে বিভাজ্য কিনা সেটা বের করা!

প্রথমে গ্রাফের সাদা রঙ এর মোড়ে দিয়ে দাঁড়ান (সবার নিচের নোড) । এরপর যেকোনো একটা পূর্ণ সংখ্যা নিন। তারপর সংখ্যাটির সবচেয়ে বামের অঙ্কটা ধরুণ। অঙ্কটির যত ততগুলো কালো তীর চিহ্নিত রাস্তা পাড়ি দিন। এর পর পরের অঙ্কে যাবার সময় একবার মাত্র সাদা তীর চিহ্নিত রাস্তা পাড়ি দিয়ে নিন। তারপর আবারো আগের মত করে নতুন অঙ্কটা যত ততবার কালো রাস্তা পাড়ি দিন। এভাবে যখন সংখ্যাটির সব অংক ফুরিয়ে যাবে তখন যদি আপনি দেখেন যে আবারো আমরা সেই আগের সাদা চিহ্নিত নোডে ফিরে এসেছি তাহলে বোঝা যাবে আমাদের সংখ্যাটি ৭ দ্বারা বিভাজ্য।

এবারে উদাহরণ
– মনে করুন আপনার হাতের সংখ্যাটি ৩২৯। শুরুতে প্রথম চিত্রের নিচের সাদা নোড থেকে শুরু করে কালো তীর ধরে ৩ টি রাস্তা পাড়ি দিন। এর পর সেখান থেকে সাদা তীর ধরে একটি রাস্তা। এরপর আবারো কালো তীর ধরে ২টি রাস্তা। আবারো যথা নিয়মে একটি রাস্তা সাদা তীর ধরে। তারপর আবারো কালো তীর ধরে ৯টি রাস্তা পাড়ি দিন। দেখুন আমরা পৌছে গেছি একদম শুরুর সাদা নোডে। তার মানে ৩২৯ সংখ্যাটি ৭ দ্বারা বিভাজ্য! এবার মনের সুখে অন্য সব সংখ্যা নিয়ে পরীক্ষা-নিরীক্ষা করতে থাকুন।

ক্যাজুয়াল পাঠকের জন্য পোস্টটি এখানেই শেষ। বাকিটা একটু নার্ডি পাঠকদের জন্য। 😉

এই পুরা সিস্টেমের সব চেয়ে মজার ব্যাপার হলো কীভাবে এই চমতকার গ্রাফটা কাজ করে। মানে এই তীর ধরে হাটাহাটি করলে ব্যাপারটা মিলবেই বা কেন? পুরো ব্যাখ্যা দিয়ে মজাটা নষ্ট করতে চাই না। তবে এরকম গ্রাফ শুধু ৭ ই না, যেকোনো সংখ্যার জন্যই বানানো সম্ভব। এখন আমরা ৭ এর গ্রাফটা কীভাবে বানানো হলো সেটা দেখবো। এই পদ্ধতি ব্যবহার করে আপনি নিজেই অন্য যেকোনো সংখ্যার জন্য ‘ডিভিজিবিলিটি গ্রাফ’ বানিয়ে নিতে পারবেন। তবে তারপরেও পুরো ব্যাপারটা কীভাবে কাজ করছে সেটা ধরতে পারাটাই হলো আসল মজা। সেটা বের করতে পারলে মন্তব্যের ঘরে জানাতে ভুলবেন না।

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

এই চিত্রে দেখুন মূল বৃত্তের উপর সাতটি লাল নোড বসানো হয়েছে। এবং শূন্য থেকে তারা কয় ঘর দূরে সেই সংখ্যা দিয়ে সূচিত করা হয়েছে। এখন সাদা তীর ওয়ালা রাস্তাগুলো বসানো হলো কেমনে সেটা দেখি। ধরুণ আমরা আছি ৬ নাম্বার নোডে। তাহলে ৬ কে ১০ দিয়ে গুণ করুন। পেলাম ৬০। তাকে ৭ দিয়ে ভাগ করুন। অবশিষ্ট থাকে ৪। তাহলে ৬ নাম্বার নোড থেকে ৪ নাম্বার নোডে একটা সাদা তীর দিয়ে দিন। এভাবেই বাকি সব নোডের জন্যই বানিয়ে ফেলুন। হয়ে গেলো আপনার ৭ এর ডিভিজিবিলিটি গ্রাফ। ৭ বাদে অন্য যেকোনো সংখ্যার জন্য বানাতে হলে জাস্ট ততগুলো লাল নোড দিয়ে শুরু করলেই হবে। এখন ওয়ার্ম আপের জন্য ৪ এর গ্রাফ আর মোটামুটি একটা এক্সার্সাইজের জন্য ১৩ র ডিভিজিবিলিটি গ্রাফ বের করুণ।

অতিরিক্ত:– একটা প্লানার গ্রাফ হচ্ছে সেই গ্রাফ যার নোড(মোড়) এর সংযোগকারী রাস্তাগুলো(এজ) একে অপরের উপর দিয়ে যায় না। যেমন প্রথম চিত্র থেকে আমরা দেখি ৭ এর ডিভিজিবিলিটিগ্রাফটি আসলে প্লানার। তবে কোন রাস্তা কোথা থেকে শুরু হয়ে কোথায় শেষ হল এটা ঠিক রেখে যেকোনো প্লানার গ্রাফকে চাইলেই ননপ্লানারের মত করেও আঁকা যায়। যেটা করা হয়েছে দ্বিতীয় চিত্রে। কিন্তু যে কোনো নন-প্লানার গ্রাফকে প্লানার আকারে আঁকা যায় না। আমাদের আঁকা এই ডিভিজিবিলিটি গ্রাফটা আসলে একটা ফিনাইট অটোম্যাটা।

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

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

কৃতজ্ঞতা: তানিয়া খোভানোভা এবং ডেভিড উইলসন।