কম্পিউটার টিউটোরিয়াল

ফ্লয়েড সাইকেল ডিটেকশন অ্যালগরিদম লিনিয়ার ডেটা স্ট্রাকচরে সাইকেল ডিটেক্ট করতে


ফ্লয়েড সাইকেল একটি সাইকেল ডিটেকশন অ্যালগরিদম যা একটি দিয়ে সিঙ্গলি লিঙ্কড লিস্টে সাইকেল ডিটেক্ট করতে ব্যবহৃত হয়।

ফ্লয়েড সাইকেল অ্যালগরিদমে, আমাদের দুটি পয়েন্টার থাকে যা প্রাথমিকভাবে হেডে পয়েন্ট করে। হেয়ার এবং টরটויזের গল্পে, হেয়ার টরটויזের চেয়ে দ্বিগুণ গতিতে চলে, এবং যতক্ষণ হেয়ার পথের শেষে পৌঁছায়, ততক্ষণ টরটויז পথের মাঝপথে পৌঁছায়।

অ্যালগরিদম

  • হেয়ার এবং টরটויזকে লিস্টের হেড নোডে ইনিশিয়ালাইজ করুন।

  • প্রাথমিকভাবে, হেয়ার টরটויזের চেয়ে দ্বিগুণ গতিতে চলে।

  • হেয়ার এবং টরটויז উভয়কেই মুভ করুন এবং খুঁজুন হেয়ার লিঙ্কড লিস্টের শেষে পৌঁছেছে কিনা, যদি হ্যাঁ তবে রিটার্ন করুন কারণ লিস্টে কোনো লুপ নেই।

  • অন্যথায়, হেয়ার এবং টরটויז উভয়ই এগিয়ে যাবে।

  • যদি হেয়ার এবং টরটויז একই নোডে থাকে, তবে রিটার্ন করুন কারণ আমরা লিস্ট সাইকেল খুঁজে পেয়েছি।

  • অন্যথায়, ধাপ ২-তে ফিরে যান।

উপরের অ্যালগরিদমের সিউডোকোড

tortoise := headNode
hare := headNode
foreach:
  if hare == end
    return 'There is No Loop Found.'
  hare := hare.next
  if hare == end
    return 'No Loop Found'
  hare = hare.next
  tortoise = tortoise.next
  if hare == tortoise
    return 'Cycle Detected'

  1. ডেটা স্ট্রাকচরে B-ট্রি

  2. ডেটা স্ট্রাকচরে B+ ট্রি

  3. ডেটা স্ট্রাকচরে ইয়েনস k-শর্টেস্ট পাথ অ্যালগরিদম

  4. ডেটা স্ট্রাকচরে এক্সপ্রেশন ট্রি কনস্ট্রাক্ট করার অ্যালগরিদম