আপনি ফ্লোয়েড-ওয়ারশালের এমন একটি সংস্করণ তৈরি করার চেষ্টা করতে পারেন যা স্পার্স ম্যাট্রিক্সে দ্রুত।
প্রথমে আসুন আমরা এই অ্যালগরিদমটি কী করে তা স্মরণ করি:
যাক দূরত্ব একটি ম্যাট্রিক্স হও। অ্যালগরিদম শুরুতে এম আমি , ঞ প্রান্ত ওজন আমি → ঞ । তারপর অস্তিত্ব এই প্রান্ত আছে যদি তা না হয় M আমি , ঞ = ∞ ।MMi,ji→jMi,j=∞
অ্যালগরিদমের পদক্ষেপ রয়েছে। অ্যালগরিদমের ধাপে K , প্রতিটি জোড় নোডের জন্য i , j সেট করিVki,j
Mi,j←min{Mi,j,Mi,k+Mk,j}.
স্পষ্টত যদি বা এম কে , জ = ∞ হয় তবে কোনও আপডেট সম্পাদনের প্রয়োজন নেই। সুতরাং, অ্যালগরিদমের প্রথম পদক্ষেপগুলিতে, আমাদের কেবল ডি ই জি i এন ( কে ) ⋅ ডি ই জি ও ইউ টি ( কে ) তুলনা যেখানে ডি ই জি আই এন ( কে ) এবং ডি ই জি ও ইউ টি (Mi,k=∞Mk,j=∞degin(k)⋅degout(k)degin(k) যথাক্রমে কে- নোডেরআগত এবং বহির্গামী প্রান্তগুলির সংখ্যা উল্লেখ করুন। অ্যালগরিদম যেমন এগিয়ে চলেছে, ম্যাট্রিক্স এম এরআরও বেশি সংখ্যক এন্ট্রিপূরণ করা হয়। অতএব, শেষ পদক্ষেপগুলি আরও বেশি সময় নিতে পারে।degout(k)kM
নোট করুন যে আমাদের কেবল ম্যাট্রিক্সের থ্রি সারি এবং কলামে অসীম কোষগুলিতে পুনরাবৃত্তি করতে একটি দক্ষ উপায় প্রয়োজন । প্রতিটি নোডের জন্য আগত এবং বহির্গামী প্রান্তগুলির সেট রেখে এটি করা যেতে পারে।k
E=O(V)k=0O(1)MO(V)k=|V|O(V2)O(V3)