প্রায় এক বছর আগে, এক বন্ধু এবং আমি ক্রসকলের অ্যালগরিদমকে ঘন গ্রাফের জন্য সাধারণ বাউন্ড (প্রাক-সাজানো প্রান্তগুলি ধরে না রেখে ) তুলনায় আরও ভালভাবে প্রয়োগ করার উপায় নিয়ে ভাবতাম । বিশেষত, আমরা সংলগ্ন ম্যাট্রিক্স ব্যবহার করে প্রিমের অনুরূপ, সব ক্ষেত্রেই অর্জন করি ।
আমি আমার ব্লগে সি ++ কোড এবং বেঞ্চমার্ক সহ অ্যালগরিদম সম্পর্কে কিছুটা পোস্ট করেছি , তবে সাধারণ ধারণাটি এখানে:
প্রতিটি সংযুক্ত উপাদানগুলির জন্য একটি প্রতিনিধি নোড বজায় রাখুন। প্রাথমিকভাবে, সমস্ত নোড তাদের প্রতিনিধিত্ব করে।
dist[i]
এমন কোনও ভেক্টর বজায় রাখুন যাতে প্রতিটি উপাদানগুলির জন্যi
সবচেয়ে হালকা উপাদান-ক্রসিং প্রান্তের ঘটনা ঘটেi
।পার্টিশনগুলি অতিক্রম করে এমন সবচেয়ে হালকা প্রান্তটি সন্ধান করার সময়, লিনিয়ার সময়ে কেবল
i
ওজন হ্রাস করে পানdist[i]
।
সবচেয়ে হালকা প্রান্তের চুক্তি এবং বলা প্রান্তের সন্ধান উভয়ই রৈখিক সময়ে করা যায়। আমরা এমটিএসটি খুঁজে পেতে এই বার করি। আমরা এমএসটিতে কোন প্রান্তটি যুক্ত করতে চাই তা খুঁজে পেতে আসলে একটু বুককিপিংয়ের প্রয়োজন, তবে জটিলতা বাড়ায় না। সুতরাং রানটাইমটি হ'ল । বাস্তবায়ন লুপগুলির জন্য মাত্র একটি দম্পতি।Θ ( n 2 )
কৃসকলের এই সংস্করণটি কি সাহিত্যে সুপরিচিত?