স্বেচ্ছাসেবী বাইনারি ডিএজিএস তে এলএমসির জন্য বহু-কালীন অ্যালগরিদম (এখানে একটি চেষ্টা) রয়েছে ।জি
এই উত্তর # 3। (সময়ের আগে অগোছালো লেখার জন্য দুঃখিত। :))
আরম্ভ করার জন্য, বর্জন "সব সময় প্রবেশ করুন" কোনো প্রান্তবিন্দু থেকে পৌঁছানো যাচ্ছে না । আমরা এগুলি নিয়ে কোন চিন্তা করি না, যেহেতু তারা কোনও এস - টি পথের অংশ নয় ।গুলিগুলিটি
এরপরে, উপ-ড্যাগগুলি এবং B সংজ্ঞা দিন , প্রাথমিকভাবে খালি। তারপর, সব ছেদচিহ্ন জন্য v ∈ জি - { গুলি , T } ,একজনবিবনাম ∈ জি - { গুলি , T }
থেকে টি পর্যন্ত কোনও পথ আছে কিনা তা পরীক্ষা করুন । যদি তাই হয়, যোগ বনাম করার একটি । যদি তা না হয়, অ্যাড বনাম করার বি ।বনামটিবনামএকজনবনামবি
কোণগুলি যাক এবং বি (বর্তমানে জন্য প্রতিটি সেট মধ্যে ছেদচিহ্ন দ্বারা প্রবর্তিত সেই হও, থেকে কোন প্রান্ত উপেক্ষা গুলি করার একটি থেকে একটি থেকে টি , এবং থেকে একটি থেকে বি ; আরো উল্লেখ্য কাছ থেকে কোন প্রান্ত আছে বি থেকে টি দ্বারা নির্মাণ).একজনবিগুলিএকজনএকজনটিএকজনবিবিটি
এর পরে, এর সকর্মক অবসান গনা । যথা, আমরা কিছু শিখুনের সেট খুঁজে পেতে আগ্রহী { একটি ∗ } যা উপ-ডাগ এ এর "পাতাগুলি" ।একজন{ ক*}একজন
এমন কোন ত্রুটিমুক্ত । মান্য যে সেখান থেকে একটি নির্দেশ প্রান্ত হতে হবে একটি * থেকে টি । এটা এজন্য যে, নির্মাণ দ্বারা, (ঝ) আছে একটি হল গুলি - টি মাধ্যমে পাথ একটি * , (২) কোন পাথ আছে একটি * মাধ্যমে বি , এবং (গ) যেহেতু একজন নিজেই একটি DAG এবং একটি * পাতার হয় এর একটি সেখান থেকে কোন পথ একটি * আরেকটি প্রান্তবিন্দু মাধ্যমে একটি থেকে টি ।একটি*একটি*টিগুলিটিএকটি*একটি*বিএকজনএকটি*একজনএকটি*একজনটি
এখন, এছাড়াও প্রতিটি প্রান্তবিন্দু থেকে একটি নির্দেশ প্রান্ত হতে হবে মধ্যে কিছু প্রান্তবিন্দু করার বি , বা কিছু { একটি * } একটি একক প্রান্ত টি । উভয় ক্ষেত্রেই, আমরা কোনো মুছতে করার অনুমতি দেওয়া হয় একটি * → টি প্রান্ত।{ ক*}বি{ ক*}টিএকটি*→ টি
যদি = 1, তারপর হয় আমরা প্রান্ত অনন্য থেকে মুছে দিতে হবে একটি * → টি , বা সেখানে তার আগে একটি প্রান্তবিন্দু হয় গুলি - টি ধারণকারী পথ একটি * দুই পাথ আছে টি মাধ্যমে এক - একটি * এবং সরাসরি অন্যতম। ক্ষেত্রে যে আধুনিক শক্তি হোল্ড, আমরা রেকর্ডে একটি * → টি "পিছন সাগ্রহে" এবং এগিয়ে (এই নিচে বিস্তারিত)।| { ক*} |একটি*→ টিগুলিটিএকটি*টিএকটি*একটি*→ টি
যদি > 1, তাহলে আমরা পারেন প্রান্ত সমস্ত মুছে দিতে হবে { একটি * } → টি , বা অন্য সেখানে প্রান্ত কিছু সংখ্যা আছে ট < | { a ∗ } | এর সকর্মক অবসান আগে একজন যে সকল পাথ সংযোগ বিচ্ছিন্ন গুলি মাধ্যমে { একটি * } থেকে টি ।| { ক*} |{ ক*। → tকে < | { ক*} |একজনগুলি{ ক*}টি
এইখানেই আমরা এই সত্যটি ব্যবহার করি যে গ্রাফ একটি বাইনারি ডিএজি।জি
এর পূর্বসুরীদের সেট বিবেচনা করুন । যেহেতু এই প্রতিটি শীর্ষে সর্বোচ্চ দু'একটি ডিগ্রি রয়েছে, ঠিক তিনটি ক্ষেত্রে রয়েছে:{ ক*}
কেস 1. একটি পূর্বসুরী মধ্যে কিছু প্রান্তবিন্দু একটি আউট-প্রান্ত হয়েছে এবং কিছু প্রান্তবিন্দু একটি আউট-প্রান্ত বি ।{ ক*}বি
এই ক্ষেত্রে, এটা ব্যাপার কিনা আমরা প্রান্তবিন্দু পূর্বসুরী থেকে প্রান্ত মুছে দেয় না বা প্রান্তবিন্দু থেকে প্রান্ত { একটি * } থেকে টি । অতএব, আমরা এই প্রান্তবিন্দু "অতীতে এড়িয়ে যান" করতে পারেন (এবং অন্য প্রান্তবিন্দু একটি পাথ দিয়ে কিনা পিছন পথ মার্জ পরীক্ষা { একটি * } )।{ ক*}{ ক*}টি{ ক*}
কেস 2. একটি পূর্বসুরী একটি প্রান্তবিন্দু একটি আউট-প্রান্ত হয়েছে এবং আরেকটি পূর্বসুরী { একটি * } ।{ ক*}{ ক*}
এই ক্ষেত্রে, আমরা হয় থেকে উভয় প্রান্ত মুছে দিতে হবে থেকে টি , অথবা আমরা থেকে পাথ একটি একক আগে প্রান্ত মুছে দিতে পারেন গুলি পূর্বসুরী যে disconnects উভয় পাথ করতে।{ ক*}টিগুলি
কেস 3. একটি পূর্বসুরী দুই ছেদচিহ্ন একটি আউট-প্রান্ত হয়েছে ।{ ক*}
এই ক্ষেত্রে 2. অভিন্ন এটা কোন ব্যাপার না আমরা এই পূর্বসুরী প্রান্তসীমা এক এবং থেকে সংশ্লিষ্ট অন্যান্য প্রান্ত মুছতে কিনা করেন থেকে টি থেকে প্রান্ত এর, অথবা উভয় { একটি * } থেকে টি । আমরা শুধু জানতে আমরা থেকে পাথ সংযোগ বিচ্ছিন্ন করতে পারেন কিনা চান গুলি এই পূর্বসুরী মাধ্যমে টন পথে তার আগে একটি একক প্রান্ত থেকে গুলি পূর্বসুরী করতে।{ ক*}টি{ক*}টিগুলিটিগুলি
মোটের ওপর, আমরা এর সকর্মক অবসান মধ্যে পূর্বসুরীদের মাধ্যমে পিছন স্ক্যান যেমন , আমরা সাগ্রহে "বেস্ট এতদূর" পছন্দ ট্র্যাক রাখতে পারবেন না। এটি হ'ল, প্রতিটি পদক্ষেপে আমাদের একটি সুস্পষ্ট পছন্দ রয়েছে যার মধ্যে কয়েকটি সংখ্যক প্রান্ত মোছা জড়িত রয়েছে, তবে আরও ভাল বিকল্প উপলব্ধ কিনা তা দেখার জন্য আমরা অপেক্ষা করতে চাই। আরও ভাল বিকল্পটি পাওয়া গেলে আমরা আগের বিকল্পটি "ভুলে যেতে" পারি। অতএব, পূর্বসূরীদের প্রতিটি স্তরের একটি লোভী পছন্দ যথেষ্ট (যতক্ষণ আমরা শেষ পর্যন্ত অপেক্ষা করি কোনও পছন্দ প্রতিশ্রুতিবদ্ধ)।একজন
অতএব, কিছু বেসিক স্মৃতিচারণের সাথে, এই প্রক্রিয়াটির সময় এবং স্থান জটিলতা সর্বাধিক হিসাবে উপস্থিত বলে মনে হয় । এটি এই সত্যটি এড়িয়ে যায় যে, যখন আমরা একটি "সস্তা পছন্দ" পেয়েছি যখন স্থানীয়ভাবে / লোভনীয়ভাবে সনাক্ত করতে পারি, এটি একটি অগ্রাধিকারের বিষয়টি অস্পষ্ট যা পূর্বে নথিভুক্ত প্রান্তগুলি অপসারণ করতে পারে। অতএব, আমরা যেভাবে আমরা প্রান্তগুলি যাব ঠিক তেমন ক্রমটি রেকর্ড করি। আরও ভাল বিকল্পটি সন্ধান করার পরে, পূর্বের রেকর্ডকৃত কোনগুলি সরিয়ে ফেলতে হবে তা অনুসন্ধান করার জন্য আমরা অনুসন্ধানটি এই বিন্দুতে পুনরাবৃত্তি করি। এই পদক্ষেপের মোট সময় জটিলতা হ'ল হে ( | ই | 2 ) এবং স্পেস জটিলতা হে ( | ই | )ও ( | ই।)| )ও ( | ই।)|2)ও ( | ই।)| )।
মোটের ওপর, সময় জটিলতা হয় আরম্ভের জন্য, প্লাস হে ( | ভী | 3 ) সকর্মক অবসান জন্য, প্লাসও ( | ভি।)| ⋅( | ভি।)| + | ই| ))ও ( | ভি।)|3) অনুসন্ধান। মোট সময় হল ও ( | ভি | 2 + | ই | | ভি | + | ভি | 3)ও ( | ই।)|2) ।O(|V|2+|E||V|+|V|3+|E|2)=O(|V|3+|E|2)
প্রক্রিয়া সম্পন্ন করার পরে, আমরা সংযোগ বিচ্ছিন্ন করা প্রয়োজন প্রান্ত ন্যূনতম সেট প্রাপ্ত থেকে টি যখন অন্তত আউট-প্রান্ত গ্রাফ প্রতিটি প্রান্তবিন্দু এক সংরক্ষণের (অথবা আমরা আবিষ্কার করে একটি সমাধান পথ ধরে অসম্ভব, এবং পরিত্যাগ)।st