এই সমস্যাটি আমাকে অনেক সিদ্ধান্তের গাছ মনে করিয়ে দেয়। আমি এই ধরণের সমাধান বিবেচনা করব, যা সর্বদা সবচেয়ে প্রতিশ্রুতিবদ্ধ পথ বেছে নেওয়ার চেষ্টা করে তবে পুরো উপগ্রাফটি দেখে:
সিঙ্ক নোডগুলি থেকে শুরু করে, উত্সগুলির দিকে আপনার পথে কাজ করুন একবারে এক স্তর। আপনি এটি করার সময় প্রতিটি প্রান্তকে একটি ওজন দিন। এই ওজনটি আপনাকে "দিতে হবে" বা নোড থেকে প্রান্ত বিন্দুতে শুরু হওয়া সাবগ্রাফটিকে অনুসরণ করে ন্যূনতম পরিমাণের প্রতিনিধিত্ব করবে। ধরা যাক আমরা i + 1 স্তরে রয়েছি এবং আমরা i লেভেল পর্যন্ত চলেছি। আমি স্তরের i নোডের দিকে ইঙ্গিত করে প্রান্তটির জন্য একটি ওজন নির্ধারণ করতে এটিই করব:
- এজ_ ওয়েট = পয়েন্টিং_ নোড_ ওয়েট।
- সর্বাধিক ওজন সহ "পয়েন্টিং নোড" থেকে প্রান্তটি সন্ধান করুন। এই ওজনটি পরের_সাম_ ওজন হতে দিন।
- এজ_ ওয়েট + = নেক্সট_এজ_ ওয়েট
তারপরে, আদেশটি নিম্নরূপভাবে তৈরি করুন:
- এসটিকে সন্ধানের সীমানা হিসাবে চলুন, পরবর্তী থেকে নির্বাচনের জন্য নোডের সেট।
- নোডটি নির্বাচন করুন যাতে (নোড_ওয়েট + সর্বাধিক_ডিজ_ ওয়েট) সর্বাধিক হয়।
- গ্রাফ এবং এস থেকে নোড সরান নোডের "শিশু" এস এ যোগ করুন
- যদি গ্রাফটি খালি না থাকে তবে পদক্ষেপ 1 এ যান।
- স্থগিত করা হবে।
ণাত্মক ওজনের সাবগ্রাফের পরে ব্যয়ভার বহন করতে সক্ষম হওয়ার জন্য সেই অনুচ্ছেদগুলি অনুসরণ করা উচিত যা প্রথমে যতটা সম্ভব লাভ দেয়।