কম্পিউটার সায়েন্সে বিভিন্ন ধরনের অ্যালগরিদম
সার্চিং অ্যালগরিদম (Searching Algorithm) ১. লিনিয়ার সার্চ (Linear Search): একটি এলিমেন্টকে সিকোয়েন্সিয়ালি একটি লিস্টের প্রতিটি এলিমেন্টের সাথে তুলনা করে খুঁজে বের করা হয়। বাইনারি সার্চ (Binary Search): সার্ট করা ডেটার উপর ভিত্তি করে মাঝখানের এলিমেন্টের সাথে তুলনা করে অর্ধেক অংশ বাদ দিয়ে খোঁজা হয়। প্রতি ধাপে এলিমেন্টের রেঞ্জ অর্ধেক হয়। (শুধু সার্টেড লিস্টের জন্য কার্যকর) ২. সর্টিং অ্যালগরিদম (Sorting Algorithm) বাবল সর্ট (Bubble Sort): প্রত্যেক জোড়া এলিমেন্ট তুলনা করা হয় এবং প্রয়োজন অনুযায়ী তাদের স্থান পরিবর্তন করা হয়। ইনসার্শন সর্ট (Insertion Sort): ডেটার প্রতিটি আইটেমকে সঠিক স্থানে ইনসার্ট করে একটি সার্টেড সাবলিস্ট তৈরি করা হয়। মার্জ সর্ট (Merge Sort): লিস্টকে ছোট ছোট সাবলিস্টে ভাগ করা হয় এবং পরে একত্রিত করে সর্ট করা হয়। এটি Divide and Conquer পদ্ধতি অনুসরণ করে। কুইক সর্ট (Quick Sort): একটি পিভট এলিমেন্ট নির্বাচন করে, ছোট এবং বড় এলিমেন্টগুলোকে আলাদা করে এবং তাদের আলাদাভাবে সর্ট করা হয়। ৩. গ্রাফ অ্যালগরিদম (Graph Algorithm) ডিপথ ফার্স্ট সার্চ (DFS): গ্রাফের প্রতিটি নোডকে গভীরতার দিক থেকে ভিজিট করা হয়, অর্থাৎ যতক্ষণ সম্ভব নীচের দিকে যাওয়া হয়। ব্রেডথ ফার্স্ট সার্চ (BFS): গ্রাফের প্রতিটি নোডকে চওড়া দিক থেকে ভিজিট করা হয়, অর্থাৎ প্রথমে প্রতিবেশীদের দেখা হয়। ডিজকাস্ট্রা অ্যালগরিদম (Dijkstra's Algorithm): গ্রাফে একটি উৎস নোড থেকে অন্যান্য নোড পর্যন্ত সবচেয়ে ছোট পথ খুঁজে বের করা হয়। প্রিমস অ্যালগরিদম (Prim's Algorithm): একটি গ্রাফ থেকে মিনিমাম স্প্যানিং ট্রি (MST) তৈরি করা হয়, যা নোডগুলিকে সংযুক্ত করার জন্য ন্যূনতম ওজনের পথ খুঁজে বের করে। ৪. ডিভাইড অ্যান্ড কনকর (Divide and Conquer) মার্জ সর্ট (Merge Sort): বড় সমস্যাকে ছোট ছোট সমস্যায় ভাগ করা হয়, পরে একত্রিত করা হয়। কুইক সর্ট (Quick Sort): সমস্যাকে ছোট ছোট সাবপ্রোবলেমে ভাগ করা হয় এবং রিকার্সিভলি সমাধান করা হয়। ৫. ডাইনামিক প্রোগ্রামিং (Dynamic Programming) ফিবোনাচি (Fibonacci Series): পূর্ববর্তী হিসাব করা মানগুলো ব্যবহার করে ভবিষ্যতের মান গণনা করা হয়। ক্ন্যাপস্যাক সমস্যা (Knapsack Problem): একটি নির্দিষ্ট ওজনের ব্যাগে সর্বাধিক মূল্যের আইটেম বেছে নেওয়া হয়। ৬. ব্যাকট্র্যাকিং অ্যালগরিদম (Backtracking Algorithm) ন-রানী সমস্যা (N-Queens Problem): একটি n×n চেসবোর্ডে nটি রানী বসানোর উপায় খুঁজে বের করা হয় যাতে কোনো রানী অন্য রানীর উপর আক্রমণ না করতে পারে। সাডোকু সমাধান (Sudoku Solver): সাডোকু গেমের পূর্ণ সমাধান বের করার জন্য ব্যাকট্র্যাকিং ব্যবহার করা হয়। ৭. গ্রিডি অ্যালগরিদম (Greedy Algorithm) হাফম্যান কোডিং (Huffman Coding): অক্ষরের ফ্রিকোয়েন্সি অনুযায়ী তাদের কম্প্রেশন কোড তৈরি করা হয়, যা ডেটা কম্প্রেশন সমস্যা সমাধান করে। অ্যাক্টিভিটি সিলেকশন (Activity Selection): সীমিত সময়ে সর্বাধিক সংখ্যক কাজ নির্বাচন করা হয়। ৮. রিকার্সন (Recursion) ফ্যাক্টোরিয়াল গণনা (Factorial Calculation): একটি ফাংশন নিজেই নিজেকে কল করে সমস্যার সমাধান করে। উদাহরণ: ৯. গ্রাফের মিনিমাম স্প্যানিং ট্রি (MST) অ্যালগরিদম ক্রুসকাল অ্যালগরিদম (Kruskal's Algorithm): এটি একটি গ্রাফের সমস্ত এজগুলোকে ছোট থেকে বড় ক্রমে সাজিয়ে মিনিমাম স্প্যানিং ট্রি তৈরি করে। ১০. পাথফাইন্ডিং অ্যালগরিদম (Pathfinding Algorithm) A অ্যালগরিদম:* এটি একটি গ্রিডের মধ্য দিয়ে সবচেয়ে ছোট পথ খুঁজে বের করে, যেখানে প্রতিটি নোডের জন্য একটি হিউরিস্টিক ফাংশন ব্যবহার করা হয়।
Comments
This is a great article!