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

অ্যালগরিদম তুলনার শেষ যুদ্ধ এবং কোর্সের উপসংহার

এই ভিডিওর শেষ অংশটি মূলত ডাটা খোঁজার দুটি প্রধান পদ্ধতি—Linear Search এবং Binary Search-এর মধ্যে একটি চুড়ান্ত লড়াই বা তুলনা। এখানে দেখানো হয়েছে কোনটি বেশি দ্রুত এবং কেন।

Introduction

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


১. প্র্যাকটিক্যাল টেস্টিং: লিনিয়ার বনাম বাইনারি সার্চ

এই অংশে একটি নামের ফাইল (যেখানে প্রায় ১ লক্ষ নাম আছে) ব্যবহার করে পরীক্ষা করা হয়েছে।

রেফারেন্স: [05:18:02]

বিস্তারিত আলোচনা: ইন্সট্রাক্টর প্রথমে Linear Search চালিয়ে দেখলেন। এই পদ্ধতিতে কম্পিউটার তালিকার একদম শুরু থেকে একটি একটি করে নাম চেক করে। ১ লক্ষ নামের মধ্যে ১০০টি নাম খুঁজতে এর সময় লেগেছে প্রায় ০.৯ সেকেন্ড

এরপর একই কাজ Binary Search দিয়ে করা হলো। কিন্তু মনে রাখতে হবে, বাইনারি সার্চের জন্য তালিকাটি অবশ্যই Sorted বা ক্রমানুসারে (A-Z) সাজানো থাকতে হয়। এই পদ্ধতিতে সময় লেগেছে মাত্র ০.২৫ সেকেন্ড! অর্থাৎ লিনিয়ার সার্চের চেয়ে অর্ধেকেরও কম সময়ে এটি কাজ শেষ করেছে।

  • Sorted (সর্টেড): এর মানে হলো ডাটাগুলোকে একটি নির্দিষ্ট নিয়মে সাজানো (যেমন ছোট থেকে বড় বা অক্ষর অনুযায়ী A থেকে Z)।

  • Time Command (টাইম কমান্ড): এটি একটি টুল যা দিয়ে বোঝা যায় একটি প্রোগ্রাম চলতে কতটুকু সময় নিচ্ছে।


২. বিগ ও নোটেশন (Big O Notation) দিয়ে তুলনা

অ্যালগরিদমের গতি মাপার আন্তর্জাতিক ভাষা হলো Big O Notation। এখানে এই দুটি সার্চের গাণিতিক তুলনা দেওয়া হয়েছে।

রেফারেন্স: [05:20:41]

বিস্তারিত আলোচনা:

  • Linear Search (O(n)): এটাকে বলা হয় Linear Time। যদি তালিকায় ১০০০টি আইটেম থাকে, তবে সবচেয়ে খারাপ পরিস্থিতিতে (Worst Case) কম্পিউটারকে ১০০০ বারই চেক করতে হবে। তাই ডাটা যত বাড়বে, সময়ও ঠিক ততটাই বাড়বে।

  • Binary Search (O(log n)): এটাকে বলা হয় Logarithmic Time। এটি প্রতিবার তালিকার অর্ধেক অংশ বাদ দিয়ে দেয়। ফলে ডাটা অনেক বেশি হলেও কাজের পরিমাণ খুব একটা বাড়ে না। যেমন, ৮টি আইটেমের জন্য মাত্র ৩টি স্টেপ লাগে। এটি অত্যন্ত দ্রুত এবং শক্তিশালী।

  • Big O Notation: এটি কোডের পারফরম্যান্স বা দক্ষতা মাপার একটি গাণিতিক উপায়। এটি বলে দেয় ডাটা বাড়লে কোডটি কতটা ধীর হয়ে যেতে পারে।

  • Worst Case (ওয়ার্স্ট কেস): এর মানে হলো সবচেয়ে খারাপ পরিস্থিতি, যখন আপনি যা খুঁজছেন তা একদম তালিকার শেষে আছে।


৩. কোডিং উদাহরণ (Python)

নিচে একটি সহজ উদাহরণ দেওয়া হলো যা দিয়ে আপনি বুঝতে পারবেন কীভাবে বাইনারি সার্চ কাজ করে:

Python

# বাইনারি সার্চের একটি সহজ উদাহরণ
def binary_search(list, target):
    first = 0
    last = len(list) - 1

    while first <= last:
        midpoint = (first + last) // 2
        if list[midpoint] == target:
            return midpoint
        elif list[midpoint] < target:
            first = midpoint + 1
        else:
            last = midpoint - 1
    return None

# সর্টেড লিস্ট
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = binary_search(my_list, 7)
print("Target found at index:", result) 

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


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

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

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

বিকল্প চিন্তা: সব সময় বাইনারি সার্চ ব্যবহার করা যায় না। যদি আপনার ডাটা বারবার পরিবর্তন হয় এবং আপনি সেটা সর্ট করার সময় না পান, তবে লিনিয়ার সার্চই সহজ সমাধান। আবার খুব দ্রুত খোঁজার জন্য Hash Tables নামক আরও একটি উন্নত পদ্ধতি আছে, যা বাইনারি সার্চের চেয়েও দ্রুত হতে পারে। তবে শুরুর জন্য লিনিয়ার এবং বাইনারি সার্চের পার্থক্য বোঝাটাই সবচেয়ে গুরুত্বপূর্ণ ভিত্তি।

[

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

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