ফ্লয়েড-ওয়ারশল অ্যালগরিদম (Floyd-Warshall Algorithm)
ফ্লয়েড-ওয়ারশল অ্যালগরিদম হল একটি গ্রাফের মধ্যে সমস্ত জোড়ের মধ্যে সর্বনিম্ন পথ (shortest path) নির্ধারণ করার জন্য ব্যবহৃত একটি কার্যকরী অ্যালগরিদম। এটি একটি ডাইনামিক প্রোগ্রামিং পদ্ধতি যা ঋণাত্মক ওজনের এজ সমর্থন করে এবং সম্পূর্ণ গ্রাফের জন্য পাথের দৈর্ঘ্য নির্ধারণ করতে সক্ষম।
অ্যালগরিদমের কাজ করার পদ্ধতি
- ম্যাট্রিক্স প্রস্তুতি:
- একটি ম্যাট্রিক্স তৈরি করুন, যেখানে হল গ্রাফের ভেরটেক্স সংখ্যা। এই ম্যাট্রিক্সে সরাসরি সংযুক্ত ভেরটেক্সের মধ্যে দূরত্ব নির্ধারণ করুন।
- যদি দুটি ভেরটেক্সের মধ্যে সরাসরি সংযোগ না থাকে, তবে দূরত্ব অসীম (∞) হিসেবে চিহ্নিত করুন।
- অ্যালগরিদমের পুনরাবৃত্তি:
- তিনটি স্তরের লুপ ব্যবহার করে সমস্ত ভেরটেক্স , , এর জন্য সর্বনিম্ন দূরত্ব আপডেট করুন।
- যদি হয়, তবে আপডেট করুন।
- ঋণাত্মক চক্র চেক:
- যদি হয়, তবে গ্রাফে ঋণাত্মক চক্র আছে।
পseudocode for Floyd-Warshall Algorithm
উদাহরণ
ধরি, আমাদের একটি গ্রাফ আছে
- ভেরটেক্স: A, B, C, D
- এজ: A-B (2), A-C (1), B-D (-5), C-D (4)
ফ্লয়েড-ওয়ারশল অ্যালগরিদমের প্রক্রিয়া:
প্রাথমিক ম্যাট্রিক্স তৈরি করা হবে:
- হিসেবে A, B, C, D কে পরপর ব্যবহার করা হবে এবং ম্যাট্রিক্স আপডেট করা হবে:
- প্রথমে A কে ব্যবহার করে A থেকে B এবং C এর দূরত্বগুলি আপডেট হবে।
- তারপর B কে ব্যবহার করে B থেকে D এর মাধ্যমে A থেকে D এর নতুন দূরত্ব আপডেট হবে।
- পরবর্তীতে C এবং D কে ব্যবহার করে ম্যাট্রিক্স আরও আপডেট হবে।
শেষ ম্যাট্রিক্স হবে:
সুবিধা
- সর্বনিম্ন পাথের জন্য প্রযোজ্য: সমস্ত জোড়ের মধ্যে সর্বনিম্ন পাথ খুঁজে বের করার জন্য কার্যকরী।
- ঋণাত্মক ওজনের সমর্থন: ঋণাত্মক এজ থাকার ক্ষেত্রে এটি কাজ করে।
অসুবিধা
- জটিলতা: O(V^3), যা বড় গ্রাফের জন্য ধীর গতির হতে পারে।
- মেমরি ব্যবহারের সমস্যা: মেমরি ব্যবহারে যথেষ্ট বেশি, কারণ এটি একটি ম্যাট্রিক্সের আকারে কাজ করে।
সারসংক্ষেপ
ফ্লয়েড-ওয়ারশল অ্যালগরিদম একটি শক্তিশালী পদ্ধতি যা সমস্ত ভেরটেক্স জোড়ের মধ্যে সর্বনিম্ন পথ খুঁজে বের করে এবং এটি ঋণাত্মক ওজনের এজ সহ গ্রাফের জন্য কার্যকর। যদিও এটি স্থান এবং সময়ের দিক থেকে কিছু সীমাবদ্ধতা রয়েছে, এটি বিভিন্ন সমস্যার সমাধানে অপরিহার্য।
Read more