সরাসরি প্রধান সামগ্রীতে চলে যান

বোগোসর্ট এবং সর্টিং অ্যালগরিদমের জটিলতা পরিচিতি

ভিডিওটির নির্দিষ্ট অংশ [04:31:40] থেকে [04:51:25] পর্যন্ত বিশ্লেষণ করে আপনার জন্য সহজ বাংলায় সারসংক্ষেপ নিচে দেওয়া হলো:

Introduction

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


১. বোগোসর্ট (Bogosort) কী এবং এটি কীভাবে কাজ করে?

রেফারেন্স: [04:31:40]

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

  1. সংখ্যাগুলোকে নিয়ে ইচ্ছামতো ঝাঁকায় (Shuffle)।

  2. এরপর চেক করে দেখে যে সংখ্যাগুলো কি ছোট থেকে বড় হিসেবে সাজানো হয়েছে?

  3. যদি সাজানো না থাকে, তবে আবার ঝাঁকায় এবং আবার চেক করে।

এটি ততক্ষণ চলতে থাকে যতক্ষণ না দৈবক্রমে (By chance) সংখ্যাগুলো সাজানো অবস্থায় পাওয়া যায়।

  • সহজ ব্যাখ্যা: চিন্তা করুন আপনার কাছে তাসের একটি প্যাকেট আছে যা আপনি সাজাতে চান। আপনি তাসের প্যাকেটটি বাতাসে ছুড়ে মারলেন, তারপর সেগুলো মেঝে থেকে কুড়িয়ে দেখলেন সেগুলো সিরিয়াল অনুযায়ী সাজানো আছে কি না। না থাকলে আবার ছুড়ে মারলেন। এটাই হলো বোগোসর্ট!

  • কঠিন শব্দ (Shuffle): এর সহজ অর্থ হলো তাসের মতো ওলটপালট বা এলোমেলো করা।


২. বোগোসর্টের কোড এবং বাস্তবায়ন

রেফারেন্স: [04:36:15]

ভিডিওতে পাইথন ল্যাঙ্গুয়েজ ব্যবহার করে বোগোসর্টের একটি উদাহরণ দেখানো হয়েছে। নিচে একটি সহজ কোড স্নাইপেট দেওয়া হলো:

Python

import random

def is_sorted(values):
    # এই ফাংশনটি চেক করে লিস্টটি সাজানো আছে কি না
    for index in range(len(values) - 1):
        if values[index] > values[index + 1]:
            return False
    return True

def bogo_sort(values):
    # যতক্ষণ সাজানো না হচ্ছে, ততক্ষণ এলোমেলো করতেই থাকো
    while not is_sorted(values):
        random.shuffle(values)
    return values

# উদাহরণ
numbers = [5, 2, 9, 1]
print(bogo_sort(numbers)) 

এই কোড দিয়ে আমরা কী অর্জন করলাম? এই কোডটি দেখাচ্ছে যে, বোগোসর্ট আসলে কোনো বুদ্ধি খাটায় না। এটি শুধু বারবার চেষ্টা (Try) করে যায়। ছোট লিস্টের জন্য এটি কাজ করলেও বড় কোনো লিস্টের জন্য এটি সারাজীবনেও শেষ না হতে পারে।


৩. সর্টিং জটিলতা বা টাইম কমপ্লেক্সিটি (Sorting Complexity)

রেফারেন্স: [04:42:10]

যেকোনো অ্যালগরিদম কতটা ভালো তা মাপার জন্য আমরা 'Big O Notation' ব্যবহার করি। বোগোসর্টের ক্ষেত্রে এর সময় লাগে O(n * n!)

  • সহজ কথায় জটিলতা: যদি আপনার কাছে ৩টি সংখ্যা থাকে, তবে বোগোসর্ট হয়তো কয়েকবার চেষ্টা করলেই সাজিয়ে ফেলবে। কিন্তু যদি ১০টি সংখ্যা থাকে, তবে লাখ লাখ বার চেষ্টা করা লাগতে পারে। আর যদি ২০টি সংখ্যা হয়? তবে পৃথিবীর বয়স শেষ হয়ে যেতে পারে, তাও হয়তো কম্পিউটার সর্ট করা শেষ করতে পারবে না!

  • কঠিন শব্দ (Time Complexity): এর মানে হলো একটি কাজ করতে ইনপুট বা ডেটার পরিমাণের ওপর ভিত্তি করে কতগুলো ধাপ পার করতে হবে।


৪. কেন আমরা বোগোসর্ট শিখছি?

রেফারেন্স: [04:48:50]

বোগোসর্ট বাস্তবে কেউ ব্যবহার করে না। এটি শেখার মূল কারণ হলো 'Efficiency' বা দক্ষতা বোঝা। ভিডিওর এই অংশে বোঝানো হয়েছে যে, কম্পিউটারের ক্ষমতা সীমিত। তাই আমাদের এমন অ্যালগরিদম দরকার যা কম সময়ে এবং কম ধাপে সঠিক উত্তর দিতে পারে। বোগোসর্টের বিপরীত হলো Merge Sort বা Quicksort, যা অনেক বেশি দ্রুত কাজ করে।


৫. আমার বিশ্লেষণ ও মতামত

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

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

বিকল্প ও পরামর্শ:

  • বিকল্প: আপনি যদি সত্যিই ডেটা সাজাতে চান, তবে Merge Sort বা পাইথনের বিল্ট-ইন sorted() ফাংশন ব্যবহার করুন। এগুলোর টাইম কমপ্লেক্সিটি অনেক কম (O(n log n))।

  • পরামর্শ: একজন বিগিনার হিসেবে আপনার প্রথমে বোঝা উচিত যে কম্পিউটারের জন্য 'এলোমেলো চেষ্টা' (Brute Force) সবসময় ভালো সমাধান নয়। বুদ্ধিদীপ্ত বা লজিক্যাল ধাপগুলোই প্রোগ্রামিংয়ের আসল শক্তি।

এই ভিডিওর এই অংশটি আপনাকে অ্যালগরিদমের 'ভালো' এবং 'খারাপ' এর পার্থক্য বুঝতে দারুণ সাহায্য করবে।

[

Algorithms and Data Structures Tutorial - Full Course for Beginners

freeCodeCamp.org · 5.7M views

](http://www.youtube.com/watch?v=8hly31xKli0)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...