পাঠ ০১ · ৪৪-এর মধ্যে · মডিউল ১
Home / Courses / Discrete Mathematics / কেন গুরুত্বপূর্ণ

কেন বিচ্ছিন্ন গণিত কম্পিউটার সায়েন্সের ভিত্তি

Why discrete math is the foundation of CS
৯ মিনিট পড়া শুরু · Beginner Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • বিচ্ছিন্ন (discrete) বনাম অবিচ্ছিন্ন (continuous) গণিতের পার্থক্য
  • এই কোর্সের প্রতিটি মডিউল কোন বাস্তব কম্পিউটার সায়েন্স সমস্যার সাথে সরাসরি যুক্ত
  • কেন DSA (Data Structures & Algorithms) কোর্সের আগে বা পাশাপাশি এই কোর্স করা উপকারী
  • Python দিয়ে একটি ছোট্ট উদাহরণ — সেট অপারেশন বাস্তবে কেমন দেখতে

১ · বিচ্ছিন্ন (Discrete) মানে কী?

গণিতের জগৎ মোটাদাগে দুই ভাগে ভাগ করা যায়। Continuous MathematicsContinuous Mathematicsএমন গাণিতিক কাঠামো যেখানে মান অবিচ্ছিন্নভাবে পরিবর্তিত হয় — যেমন real number line-এ যেকোনো দুটি সংখ্যার মাঝে অসীম সংখ্যা আছে। ক্যালকুলাস এই জগতের গণিত। (যেমন ক্যালকুলাস) কাজ করে অবিচ্ছিন্ন পরিবর্তনের সাথে — একটি বস্তুর গতি, তাপমাত্রা। কিন্তু Discrete MathematicsDiscrete Mathematicsএমন গাণিতিক কাঠামোর অধ্যয়ন যেখানে মান আলাদা আলাদা, গণনাযোগ্য ধাপে থাকে — যেমন পূর্ণসংখ্যা, গ্রাফের নোড, অথবা True/False। কম্পিউটার সায়েন্সের ভিত্তি। কাজ করে আলাদা আলাদা, গণনাযোগ্য বস্তুর সাথে — পূর্ণসংখ্যা, True/False, একটি গ্রাফের নোড।

মূল পার্থক্য

একটি কম্পিউটার memory-তে কোনো "অবিচ্ছিন্ন" মান থাকে না — প্রতিটি bit হয় 0 নয়তো 1, প্রতিটি integer একটি নির্দিষ্ট, গণনাযোগ্য মান। কম্পিউটার নিজেই সম্পূর্ণভাবে একটি discrete যন্ত্র — তাই এটিকে বোঝা ও নিয়ন্ত্রণ করার গণিতও discrete হতে হবে।

২ · এই কোর্সের প্রতিটি মডিউল যেখানে কাজে লাগে

নিচে এই কোর্সের প্রতিটি মূল ক্ষেত্র এবং তার একটি সরাসরি, বাস্তব কম্পিউটার সায়েন্স প্রয়োগ দেখানো হলো —

লজিক ও প্রমাণ (M1)
একটি প্রোগ্রাম সব ইনপুটে সঠিকভাবে কাজ করে তা প্রমাণ করা — শুধু টেস্ট করা নয়, নিশ্চিতভাবে জানা।
সেট, রিলেশন, ফাংশন (M2)
রিলেশনাল ডেটাবেস (SQL) আক্ষরিক অর্থেই সেট থিওরির রিলেশনের উপর ভিত্তি করে তৈরি।
কম্বিনেটরিক্স (M3)
একটি অ্যালগরিদম কতগুলো ধাপে চলবে তা গণনা করা, বা হ্যাশ টেবিলে কলিশনের সম্ভাবনা বের করা।
গ্রাফ থিওরি (M4)
Google Maps-এর রুট খোঁজা, সোশ্যাল নেটওয়ার্কের কানেকশন, কম্পিউটার নেটওয়ার্ক টপোলজি।
নাম্বার থিওরি (M5)
প্রতিবার আপনি একটি HTTPS ওয়েবসাইট খোলেন, RSA এনক্রিপশন এই মডিউলের গণিত ব্যবহার করছে।
রিকারেন্স রিলেশন (M6)
একটি রিকার্সিভ অ্যালগরিদম (যেমন merge sort) ঠিক কত সময় নেবে তা গণিত দিয়ে বের করা।
বুলিয়ান অ্যালজেব্রা ও অটোমাটা (M7)
প্রতিটি ডিজিটাল সার্কিট ও প্রতিটি regex ইঞ্জিন এই গণিতের সরাসরি বাস্তবায়ন।

৩ · সেট থিওরির একটি ছোট্ট, বাস্তব উদাহরণ

সেট থিওরি বিমূর্ত মনে হলেও, আপনি প্রতিদিন এটি ব্যবহার করেন — এমনকি না জেনেই। ধরুন দুইটি তালিকা আছে: যারা কোর্স A-তে ভর্তি হয়েছে, এবং যারা কোর্স B-তে ভর্তি হয়েছে। "কতজন শিক্ষার্থী দুটো কোর্সেই ভর্তি হয়েছে" — এই প্রশ্নের উত্তর হলো দুটো সেটের ইন্টারসেকশনIntersection (∩)দুটি সেটের মধ্যে যে উপাদানগুলো উভয় সেটেই আছে। M2-তে বিস্তারিত কভার হবে। — $A \cap B$।

Python
course_a = {"Rahim", "Karim", "Fatema", "Nusrat"}
course_b = {"Karim", "Nusrat", "Jahid"}

# উভয় কোর্সে ভর্তি হয়েছে এমন শিক্ষার্থী — ইন্টারসেকশন
both = course_a & course_b
print("উভয় কোর্সে:", both)

# অন্তত একটি কোর্সে ভর্তি হয়েছে এমন সবাই — ইউনিয়ন
either = course_a | course_b
print("অন্তত একটিতে:", either)

    
Python-এর বিল্ট-ইন set টাইপ এবং & (ইন্টারসেকশন), | (ইউনিয়ন) অপারেটর সরাসরি সেট থিওরির গাণিতিক সংজ্ঞা থেকে এসেছে। M2-তে আমরা এই অপারেশনগুলোর পূর্ণ গাণিতিক সংজ্ঞা ও বৈশিষ্ট্য দেখব।
বিচ্ছিন্ন গণিত লজিক ও প্রমাণ প্রোগ্রাম সঠিকতা গ্রাফ থিওরি নেটওয়ার্ক, ম্যাপ নাম্বার থিওরি ক্রিপ্টোগ্রাফি রিকারেন্স রিলেশন অ্যালগরিদম জটিলতা
বিচ্ছিন্ন গণিতের প্রতিটি শাখা কম্পিউটার সায়েন্সের একটি নির্দিষ্ট ক্ষেত্রে সরাসরি প্রয়োগ হয়।

৪ · এই কোর্স ও DSA কোর্সের সম্পর্ক

এই সাইটের DSA (Data Structures & Algorithms) কোর্স আপনাকে শেখায় কীভাবে কোড লিখতে হয় — কীভাবে একটি লিংকড লিস্ট বা BFS বাস্তবায়ন করতে হয়। এই কোর্স শেখায় কেন সেই কোডগুলো কাজ করে, এবং কীভাবে তাদের সঠিকতা ও দক্ষতা গাণিতিকভাবে প্রমাণ করা যায়। দুটো কোর্স একসাথে করলে সবচেয়ে ভালো ফলাফল পাওয়া যায় — একটি বাস্তবায়ন শেখায়, আরেকটি বোঝায় কেন সেই বাস্তবায়ন নির্ভরযোগ্য।

মূল কথা · Key takeaway

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

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ একটি কম্পিউটার কেন সম্পূর্ণভাবে একটি "discrete" যন্ত্র — এমনকি যখন এটি একটি ছবির মতো "অবিচ্ছিন্ন" মনে হওয়া কিছু প্রসেস করে?

মূল উত্তর — স্যাম্পলিং ও ডিজিটাইজেশন। একটি ছবি বাস্তবে আলোর অবিচ্ছিন্ন তীব্রতার একটি ক্ষেত্র, কিন্তু কম্পিউটারে সংরক্ষণ করার আগে সেটিকে সসীম সংখ্যক পিক্সেলে ভাগ করা হয়, এবং প্রতিটি পিক্সেলের রঙ একটি নির্দিষ্ট সংখ্যায় (যেমন 0-255) রাউন্ড করা হয়। এটাই discretization — অবিচ্ছিন্ন কিছুকে গণনাযোগ্য, আলাদা ধাপে রূপান্তর করা।

তাই কম্পিউটার কখনোই সত্যিকারের "অবিচ্ছিন্ন" কিছুর সাথে কাজ করে না — এটি সবসময় একটি সসীম-নির্ভুলতার (finite-precision) discrete আনুমানিক রূপের সাথে কাজ করে। এই কারণেই discrete mathematics কম্পিউটার সায়েন্সের একমাত্র সত্যিকারের ভিত্তি — floating-point সংখ্যাও, শেষ পর্যন্ত, একটি সসীম সেট মাত্র।

প্র ০২ রিলেশনাল ডেটাবেস (যেমন MySQL)-কে "রিলেশনাল" বলা হয় কেন — এর সাথে সেট থিওরির রিলেশনের কী সম্পর্ক?

একটি ডেটাবেস টেবিল বাস্তবে একটি রিলেশন-এর গাণিতিক সংজ্ঞার সরাসরি বাস্তবায়ন — একাধিক সেটের (কলামের) কার্তেসিয়ান প্রোডাক্টের একটি সাবসেট। "JOIN" অপারেশন আসলে দুটি রিলেশনের মধ্যে একটি গাণিতিক অপারেশন। SQL-এর পুরো তাত্ত্বিক ভিত্তি (relational algebra) সরাসরি সেট থিওরি ও রিলেশন থিওরি থেকে এসেছে, ১৯৭০-এর দশকে Edgar Codd-এর কাজের মাধ্যমে। M2-তে আমরা রিলেশনের সঠিক গাণিতিক সংজ্ঞা দেখব।

প্র ০৩ কেন প্রতিবার একটি HTTPS ওয়েবসাইট ভিজিট করলে "নাম্বার থিওরি" (যা একটি বিশুদ্ধ, প্রাচীন গণিতের শাখা মনে হয়) কাজ করছে?

HTTPS-এর নিরাপত্তা নির্ভর করে RSA-এর মতো এনক্রিপশন অ্যালগরিদমের উপর, যা M5-তে বিস্তারিত দেখব। RSA-এর নিরাপত্তা একটি সহজ কিন্তু গভীর গাণিতিক সত্যের উপর দাঁড়িয়ে — দুটি অনেক বড় প্রাইম নাম্বার গুণ করা সহজ, কিন্তু সেই গুণফল থেকে মূল প্রাইম দুটি খুঁজে বের করা (factorization) কম্পিউটেশনালি প্রায় অসম্ভব রকম কঠিন।

১৯৭৭ সালে আবিষ্কৃত এই অ্যালগরিদম প্রাইম নাম্বার, মডুলার এরিথমেটিক ও ইউলার'স থিওরেম (এই কোর্সের M5) ব্যবহার করে — এমন গণিত যা ২০০০ বছরেরও বেশি পুরনো (Euclid) কিন্তু আজকের প্রতিটি নিরাপদ ইন্টারনেট কানেকশনের ভিত্তি।

অনুশীলন

  1. চিন্তা করুন: আপনার প্রতিদিনের ব্যবহৃত ৩টি অ্যাপ (যেমন Facebook, Google Maps, একটি ব্যাংকিং অ্যাপ) চিহ্নিত করুন এবং প্রতিটির পেছনে কোন discrete math ক্ষেত্র (লজিক, সেট, গ্রাফ, নাম্বার থিওরি) কাজ করছে বলে মনে হয় তা লিখুন।

    সম্ভাব্য উত্তর: Facebook (গ্রাফ থিওরি — friend network, feed recommendation), Google Maps (গ্রাফ থিওরি — shortest path/route finding), ব্যাংকিং অ্যাপ (নাম্বার থিওরি — এনক্রিপশন; লজিক — transaction validation সঠিকভাবে হচ্ছে কি না)। প্রায় প্রতিটি অ্যাপেই একাধিক ক্ষেত্র একসাথে কাজ করে।

  2. পরীক্ষা করুন: উপরের কোড সেলে course_a ও course_b-তে নিজের মতো ৩-৪ জনের নাম বসিয়ে ইন্টারসেকশন ও ইউনিয়ন হাতে হিসাব করুন, তারপর Run চেপে মিলিয়ে দেখুন।

    ইন্টারসেকশন ($A \cap B$) মানে যে নামগুলো উভয় সেটে আছে; ইউনিয়ন ($A \cup B$) মানে যে নামগুলো অন্তত একটি সেটে আছে (পুনরাবৃত্তি ছাড়া)। যদি কোড আউটপুট আপনার হাতে-হিসাবের সাথে না মেলে, প্রতিটি নামের বানান ঠিক আছে কি না যাচাই করুন — সেট মেম্বারশিপ exact matching-এর উপর নির্ভর করে।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

কোর্সে ফিরে যান
Discrete Mathematics — সব পাঠ