Introduction to Discrete Mathematics and Learning Curve

Introduction to Discrete Mathematics and Learning Curve

Introduction to Discrete Mathematics and Learning Curve

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

বুঝে গেলাম যে আমাদের DSA শিখতে হবে প্রব্লেম সলভিং এফিশিয়েন্টলি করার জন্য। এখন আবার আরেকটা প্রশ্নের উদয় হয় মনে। DSA শেখার জন্য কোন ল্যাঙ্গুয়েজ শিখতে হবে। সি / সি++ / জাভা / পাইথন / জাভাস্ক্রিপ্ট কোনটা? এই জায়গাতেই আমরা বিগিনাররা ভুলটা করে ফেলি বড়সড়। আমরা জানিই না DSA কোনো ল্যাঙ্গুয়েজ স্পেসিফিক বিষয় না। DSA শেখার জন্য কোনো স্পেসিফিক ল্যাঙ্গুয়েজ জানতে হয় না। এটা একটা ম্যাথমেটিকাল থিওরি। আমরা যদি থিওরিটা জানি তাহলে যেকোনো ল্যাঙ্গুয়েজেই আমরা DSA নিয়ে কাজ করতে পারবো।

উপরের প্যারা পড়ার পর আবার গুলিয়ে গেলো। ম্যাথমেটিকাল থিওরি! কিন্তু আমি তো ম্যাথে দূর্বল, আমার তো সায়েন্স ব্যাকগ্রাউন্ড না, আমি তো জ্যামিতি পারি না, তাহলে কি আমি DSA শিখতে পারবো না?

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

Discrete Mathematics

বিচ্ছিন্ন গণিত, নাম দেখেই বুঝতে পারছেন এটা গণিত থেকে বিচ্ছিন্ন। এটাকে বিচ্ছিন্ন বলার কারণ হলো অবিচ্ছিন্ন বা continuous গণিতের কোনো বিষয় যেমন real number, calculus, geometry ইত্যাদি এই অংশের আলোচ্য বিষয় নয়। এটা একটা ম্যাথমেটিকাল স্ট্রাকচার যেখানে Integers, Logic, graphs, algorithms, trees এসব নিয়ে আলোচনা করা হয়। এটা সাধারণত মূল ধারার গণিতের মতো না। অনেকটা থিওরাম টাইপের এটা। আমাদের ডাটা গুলোকে সুনির্দিষ্টভাবে বিন্যস্ত করতে হলে কি কি করতে হবে এগুলোই এই ম্যাথের আলোচ্য বিষয়। সুতরাং যারা গণিত শুনে ভয় পেয়ে গিয়েছিলেন তারা একটু রিলাক্স হোন। এটা মোটেও কঠিন কঠিন জ্যামিতি, উপপাদ্য, বীজগণিত তেমনটা নয়। কম্পিউটার বিজ্ঞানে এই ম্যাথ জানা খুবই গুরুত্বপূর্ণ। কেন গুরুত্বপুর্ণ সেটা হয়তো এখানে বললে আপনারা অনুধাবন করতে পারবেন না। যতোই দিন যাবে ততোই এর গুরুত্ব আপনারা বুঝতে পারবেন। ডিসক্রিট ম্যাথ নিয়ে হালকা ধারণা পেতে আপনারা Discrete mathematics - Wikipedia আর্টিকেলটি পড়তে পারেন। বুঝেন বা না বুঝেন পড়বেন। কিছু বুঝবেন, কিছু বুঝবেন না এটাই স্বাভাবিক। তবে একটা ন্যূনতম ধারণা পাবেন। আর কিছু শিখতে গেলে তার ইতিহাস, কাজ কি এসব জেনে রাখাটা ভাল। তাহলে শেখার আগ্রহটা জমে।

Who am I

এখন প্রশ্ন হলো ডিসক্রিট ম্যাথ আমি শেখানোর কে? আমি কতটা এক্সপার্ট? আমি ডিসক্রিট ম্যাথে আপনাদের মতোই লার্নার। আমার লার্নিং আপনাদের সাথে শেয়ার করবো। সেখানে ভুলভ্রান্তি যদি পান তাহলে আপনারা আমাকে নির্দ্বিধায় ধরিয়ে দিবেন।

আবার হয়তো ধাক্কা খেলেন। যে নিজেই শিখছে সে কিভাবে ডিসক্রিট ম্যাথ নিয়ে আর্টিকেল লিখবে? প্রশ্নটা উদয় হওয়া স্বাভাবিক। ধরেন যখন আপনি ক্লাস করেন, স্যারের কাছে যখন বুঝতে পারেন না তখন যান আপনার বন্ধু যে বুঝতে পেরেছে। দেখা গেলো আপনার বন্ধু আপনাকে ঠিক আপনার মতো করেই বুঝিয়ে দিয়েছে। কোনো অ্যাডভান্সড কনসেপ্ট দিয়ে না যেটা স্যার বুঝিয়েছেন। আমাকে আপনারা আপনাদের বন্ধু ভেবে নিন। আমি যা শিখবো সেগুলোই লিখবো। তাতে আশা করি আপনারাও খুব সহজেই তা শিখতে শিখতে এগিয়ে যাবেন। আপনাদের কাছ থেকে আমি শিখবো। অনেকটা গ্রুপ স্টাডি বলেই ধরে নিন। 😊

Which topics do we learn

এখন প্রশ্ন হলো ডিসক্রিট ম্যাথে আমরা কি কি শিখবো? ডিসক্রিট ম্যাথে আমাদের যে যে টপিক শিখতে হবে তা হলোঃ

  • Logic and Proofs
  • Basic Structures
  • Algorithms
  • Number Theory and Cryptography
  • Induction and Recursion
  • Counting
  • Discrete Probability
  • Advanced Counting Techniques
  • Relations
  • Graphs
  • Trees
  • Boolean Algebra
  • Modeling Computation

অনেকে এই নামগুলো হয়তো আজ প্রথম শুনছেন, বা অনেকে কিছু কিছু শুনেছেন। আপাতত নামগুলো জেনে রাখেন। বিস্তারিত যদি এখন বলি আপনাদের মাথায় ঢুকবে না এখন। তার চেয়ে ভাল হবে যখন আমরা যে টপিকে যাবো তখন তার পোস্টমর্টেম করে সেটা ভালভাবে বুঝে নেয়া। প্রতিটা টপিকের শুরুতে একটা সূচনা বক্তব্য টাইপের একটা আর্টিকেল থাকবে। সেখানে সেই টপিকে কি কি শিখবো, কেন শিখবো ইত্যাদি ইত্যাদি বিস্তারিত বলা থাকবে।

Which book I follow through the series

ডিসক্রিট ম্যাথ নিয়ে আমি জাস্ট একটা স্বচ্ছ ধারণা দেয়ার চেষ্টা করবো। কিন্তু কিছু শিখতে গেলে অবশ্যই আপনাদের সাথে একটা বই থাকতে হবে। যাতে আপনারা নিজেরা আরো ভালভাবে স্টাডি করতে পারেন। আমি ব্যক্তিগতভাবে Mr. Kenneth H. Rosen এর Discrete Mathematics and Its Application বইয়ের Eighth Edition ফলো করবো। আমার কাছে বইটা অত্যন্ত ভাল লেগেছে। খুব সহজেই লেখা হয়েছে। যে কেউই বুঝতে পারবে। আমি রিকমেন্ড করবো আপনারা বইটা কালেক্ট করবেন এবং সাথে রাখবেন। কারণ প্রতিটা টপিক শেষে অসংখ্য এক্সারসাইজ আছে বইটাতে। আপনারা সেগুলো করলে আপনাদের শেখাটা আরো মজবুত হবে।

How do you learn from this series

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

Conclusion

আশা করি ডিসক্রিট ম্যাথ নিয়ে তুলনামূলক একটা ধারণা পেয়েছেন। আমি তো খুব এক্সাইটেড এই জার্নির জন্য। কে কে আমার সাথে ডিসক্রিট ম্যাথ শিখতে রাজি আছেন। কমেন্টে জানিয়ে দিন। একসাথে আমাদের জার্নিটা আমরা সাক্সেসফুল করবো। কি বলেন?? 🙌 🙌