2012-06-19 37 views
8

में न्यूनतम हानिकारक लागत हम एन नोड्स के साथ एक ग्राफ जी (वी, ई) और वास्तव में (एन 1) (0 से N-1 के लिए क्रमिक) दो तरह किनारों दिया जाता है।ग्राफ

ग्राफ़ में प्रत्येक किनारे में सकारात्मक लागत सी (यू, वी) (एज वजन) है।

पूरे ग्राफ ऐसे वहाँ नोड्स के किसी भी जोड़ी के बीच एक अनूठा रास्ता है।

हमें नोड संख्या की सूची एल भी दी गई है, जिस पर बम रखा गया है।

हमारा उद्देश्य क्षति के लिए है/ग्राफ से इस तरह के किनारे निकालने के लिए, हानिकारक के बाद/ग्राफ से किनारों को हटाने, वहाँ बम के बीच कोई संबंध नहीं है कि -

कि हानिकारक के बाद है , किसी भी दो बम के बीच कोई रास्ता नहीं है।

एज (u, v) = एज वजन (u, v) को नुकसान पहुँचाए की लागत।

तो, हमें उन किनारों को नुकसान पहुंचाया जाना चाहिए, जैसे कि कुल हानिकारक लागत न्यूनतम है।

उदाहरण:

Total Nodes=N=5 
Total Bomb=Size of List L=3 

List L={2,4,0}//Thats is at node number 2,4 and 0 bomb is placed... 

Total Edges =N-1=4 edges are:: 

u v Edge-Weight 

2 1 8 

1 0 5 

2 4 5 

1 3 4 



In this case the answer is :: 
Total Damaging cost =(Edge Weight (2,4) + Edge Weight(0,1)) 
      =5+5=10. 

So when we remove the edge connecting node (2,4), 
and the edge connecting node (0,1) ,there is no connection left 
between any pair of machines in List {2,4,0}; 

Note any other,combinations of edges(that we damaged) to achieve the 
target goal ,needs more than 10 unit cost. 

enter image description here

Constraints:: 
N(ie. Number of Nodes) <= 100,000 
ListSize |L|(ie. Number of Bombs) <= N 
1 <=Edge cost(u,v) <= 1000,000 

मैं क्या किया था?

अब तक, मैं किसी भी कारगर तरीका :(नहीं मिला था।

इसके अलावा, के रूप में नोड्स की संख्या N है, किनारों की संख्या वास्तव में N-1 है और पूरे ग्राफ इस तरह वहाँ एक अनोखा रास्ता है नोड्स के किसी भी जोड़ी के बीच, मैं एक निष्कर्ष यह है कि ग्राफ एक वृक्ष है मिला है।

मैं Kruskal एल्गोरिथ्म संशोधित करने की कोशिश की लेकिन है कि या तो मेरी मदद नहीं की।

धन्यवाद!

+0

मुझे विश्वास है कि एक लालची दृष्टिकोण (प्रत्येक पथ में सबसे निचले चरम को हटा दें) के पास एक पेड़ में एक मौका है, लेकिन मुझे अभी तक इसके बारे में निश्चित नहीं है: \ इसके अलावा: आप एक कुशल दृष्टिकोण के रूप में क्या पाएंगे? – amit

+0

@ अमित, अब तक मैं इसे हल करने के लिए कोई कुशल विधि नहीं ढूंढ पा रहा हूं। नोड्स = 100,000 की बाधा संख्या, जिसका मतलब कुल किनारों = 100,000-1 है। तो ओ (एन लॉग एन) एल्गोरिदम आसान और कुशल होगा। –

+0

@All :: बाधाओं को एक संपादन के रूप में जोड़ा गया। –

उत्तर

2

यह पेड़ों में मल्टीवे कट समस्या है। इसे बहुमुखी गतिशील प्रोग्रामिंग द्वारा बहुपद समय में हल किया जा सकता है। देखें चोपड़ा और राव: "On the multiway cut polyhedron", नेटवर्क 21 (1): 51-89, 1991.

+0

अच्छा जवाब, आईएमओ मल्टीवे कट परिभाषा प्रदान करना बेहतर है। –

+0

http://www.cs.ust.hk/mjg_lib/Classes/COMP572_Fall06/Notes/Tree_Multicut.ps में एल्गोरिदम का विवरण है। http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=29&ved=0CIkBECEwCDgU&url=http%3A%2F%2Fwebcache.googleusercontent.com%2Fsearch%3Fq%3Dcache%3AkB1mIzECSx8J%3Awww। cs.ust.hk% 2Fmjg_lib% 2FClasses% 2FCOMP572_Fall06% 2FNotes% 2FTree_Multicut.ps% 2 बी% 26cd% 3D29% 26hl% 3Den% 26ct% 3Dclnk% 26gl% 3Dus और Ei = T4_hT_ijLOXa2wXa8YnrCw और यूएसजी = AFQjCNG-fpl9SK2GP-o4VMKJaDseONYNKQ – VSOverFlow

4

मुझे लगता है कि एक संशोधित कृष्काल यहां जाने का तरीका है।

ग्राफ़ जी '= (वी', ई '), वी' = वी, ई '= {} ले लो। ई में किनारों को लागत के बढ़ते क्रम में क्रमबद्ध करें। अब, ई में प्रत्येक किनारे के लिए, इसे ई 'में जोड़ें, अगर यह दो घटकों को कनेक्ट नहीं करता है जिसमें दोनों में बम के साथ शिखर होते हैं। परिणाम ई-ई की लागत का योग है।

संपादित करें:

अपने उदाहरण पर इस चल रहा है।

प्रारंभ में, किनारों का हमारा सेट खाली है {}, और हम गैर-बढ़ते क्रम [(1, 2), (0, 1), (2, 4), (1, 3) में क्रमबद्ध किनारों को लेते हैं। ]

तो, शुरुआत में, हमारा ग्राफ 5 डिस्कनेक्ट किए गए घटकों से बना है।

(1, 2) की लागत 8 है, और इसके कनेक्ट होने वाले घटकों में से केवल एक बम है। तो हम इसे ई 'में जोड़ते हैं। ई '= {(1, 2)} और हमारे पास 4 घटक हैं।

अगले उच्चतम लागत किनारे (0, 1) 5 की लागत के साथ है। लेकिन दोनों घटकों में बम हैं, इसलिए इस किनारे को न जोड़ें।

अगला वाला (2, 4) है। यह बम के साथ घटकों से भी जुड़ता है, इसलिए हम इसे भी छोड़ देते हैं।

अंततः सबसे कम लागत वाला किनारा (1, 3) है। चूंकि इसके घटकों में से एक (केवल नोड 3 युक्त) में कोई बम नहीं है, इसलिए हम इसे ई 'में जोड़ते हैं।

यह हमें ई '= {(1,2), (1, 3)} देता है।

मेरा तर्क यह है कि हम कम लागत वाले लोगों के सामने उच्च लागत वाले किनारों को जोड़ने का प्रयास करते हैं - जो सुनिश्चित करता है कि मूल नोड में बम के साथ नोड्स के बीच किसी भी पथ में, सबसे कम लागत को जोड़ा जाएगा।

+0

माक, क्या आप कृपया एक उदाहरण दे सकते हैं। मुझे नहीं लगता कि यह दृष्टिकोण काम करता है क्योंकि हमेशा एक कनेक्टेड घटक होता है क्योंकि "संपूर्ण ग्राफ ऐसा है कि नोड्स की किसी भी जोड़ी के बीच एक अनोखा पथ है"। कृपया मुझे सही करें अगर मैं हूं गलत, मुझे लगता है कि अगर आप अपना दृष्टिकोण दिखा सकते हैं, उदाहरण के रूप में नमूना इनपुट लेना, तो यह समझना बहुत आसान होगा। –

+0

@ritesh_nitw: मैंने अपना जवाब अपडेट कर दिया है। – MAK

0

मुझे लगता है कि निम्नलिखित सुझाव काम करना चाहिए: 0

  • 2) बनाएं पथ सभी आसन्न नोड्स चुड़ैल:

    • 1) एक बम के साथ शुरू करो, अपने उदाहरण में मैं के साथ शुरू करते हैं। तो सभी रिश्तों को लें और उनके साथ एक रास्ता शुरू करें। आपके उदाहरण में यह एक पथ शुरू करेगा: 0 -> 1
    • 3) यदि आप पथ पर एक और बम मारा, तो आप किनारे को सबसे कम लागत के साथ हटा दें। उदाहरण में हम एक बम नहीं मारा है, इसलिए हम चरण 2 के साथ जारी रखते हैं।
    • 3 ए) अभी तक किसी भी रास्ते में कोई बम नहीं है। चरण 2 के साथ जारी रखें और नए आसन्न नोड्स के साथ पथ का विस्तार करें। आपके मामले में एक नया पथ बनाया जाएगा: 1 -> 3। और मौजूदा एक बढ़ाया जाएगा: 0 -> 1 -> 2
    • 3 बी) पथ पर एक बम पाया जाता है। उस पथ को लें जहां बम पाया जाता है, और किनारे को सबसे कम लागत के साथ हटा दें। आपके उदाहरण में पथ 0 -> 1 -> 2 में एक बम (2) है। इसलिए हम लागत 5 के साथ संबंध हटाते हैं। 'Todo' से पथ हटाएं और अंतिम पहुंच वाले नोड्स (2 और 3) पर चरण 2 के साथ जारी रखें।

    अंत में आपको प्रत्येक नोड को एक बार पार करना चाहिए। यदि मुझे गलती नहीं है तो जटिलता ओ (एन लॉग एन)

  • 2

    मुझे लगता है कि यह रैखिक समय में किया जा सकता है।

    कुछ कशेरुक में पेड़ को रूट करें और फिर नीचे-ऊपर ट्रैवर्सल से शुरू करें।

    कुछ पत्ते से शुरू करें। यदि कोई बम नहीं है, तो पत्ती काट लें और आगे बढ़ें। यदि कोई बम है तो आपको इस पत्ते के रास्ते पर एक किनारे काटना होगा। इस पत्ते के लिए सबसे सस्ता किनारे के बारे में जानकारी का प्रचार करें।

    फिर जब आप आंतरिक चरम पर होते हैं, तो आपके पास यह संभावनाएं होती हैं: यदि वर्टेक्स में बम है और नीचे कुछ बम हैं, तो उन सभी के लिए सबसे सस्ता मार्ग घटाएं। यदि कोई बम नहीं है और केवल एक बम नीचे है, तो सबसे सस्ता पथ के बारे में जानकारी प्रसारित करें। यदि नीचे अधिक बम हैं, तो सबसे महंगा मार्ग वाले किसी को छोड़कर प्रत्येक को काट लें।

    +0

    मैं वही सोच रहा था, लेकिन अंतिम एल्गोरिदम में नहीं आ सकता था, मुझे लगता है कि एक बम के बराबर सबट्रीज़ याद रखने के साथ आपका विचार है, मुझे लगता है। – unkulunkulu

    0

    http://www.cs.ust.hk/mjg_lib/Classes/COMP572_Fall06/Notes/Tree_Multicut.ps

    एल्गोरिथ्म के एक विवरण नहीं है।

    उपसंहार फ़ाइल

    की Google HTML version ===================================== ====

    http://dspace.mit.edu/bitstream/handle/1721.1/5394/OR-308-95.pdf?sequence=1

    मामले कश्मीर = 2 बहुमार्गीय कटौती की समस्या का ही polynomially व्याख्या करने योग्य उदाहरण नहीं है। लवडज़ [12] और चेर्कास्की [3] दिखाते हैं कि जब सीई = 1 वी ई ई और जी यूलरियन है, तो मल्टीवे कट समस्या बहुपद रूप से हल करने योग्य है। एर्डोस और एसजे 6 केली [8] ने दिखाया है कि का सामान्यीकरण बहुवे काट समस्या बहुपद रूप से हल करने योग्य है जब अंतर्निहित ग्राफ जी एक पेड़ है। डलहॉस et। अल। [7] प्लानर ग्राफ पर फिक्स्ड के लिए बहुपद हल करने योग्य समस्या को दिखाया है।

    मैं एक साधारण लालची एल्गोरिथ्म आधारित समाधान कल रात जो नोड्स जो दो लाल (टर्मिनल) नोड्स के बीच एक रास्ते पर नहीं हैं को दूर करने, और उसके बाद सबसे छोटी वजन नोड का चयन करें, और तब पर प्रक्रिया दोहरा शामिल थे लिखा था उप पेड़ मैंने हटा दिया क्योंकि आगे पढ़ने से सुझाव दिया गया कि समस्या एनपी है। लेकिन इस संदर्भ पता चलता है एक बहुपद समाधान है कि वहाँ ...

    1

    यहाँ मेरी परिकल्पना है:

    ग्राफ़ जी एक पेड़ है। इसलिए किसी भी दो नोड्स के बीच केवल एक पथ है।

    मान लीजिए एल लाल (बम) नोड्स और वी एल व्हाइट (गैर बम नोड्स) कर रहे हैं। समाधान को एल के उप-पेड़ों के जंगल में जी के विभाजन की आवश्यकता होती है। इसके लिए कम से कम एल -1 किनारों को हटाने की आवश्यकता है।

    प्रत्येक हटाए गए हटाए गए पर दो लाल नोड्स के बीच एक पथ होना चाहिए।

    ए। पेड़ जी को सभी किनारों को हटाने के लिए दो लाल नोड्स के बीच पथ में भाग न लें।

    1. विचार से व्हाइट पत्र-गांठ (और घटना धार) निकालें।
    2. संशोधित ग्राफ में कोई सफेद पत्ता नोड्स होने तक # 1 दोहराएं।

    बी के बाद (ए) सभी किनारों ग्राफ में बाएं किनारों पर जो फार्म दो लाल नोड्स के बीच एक रास्ता है।

    सबसे कम वजन इस पेड़ के साथ बढ़त का चयन करें। इसके परिणामस्वरूप प्रत्येक पेड़ के साथ दो उप-पेड़ होंगे जिनमें कम से कम एक लाल नोड होता है।

    सी बी में बनाए गए प्रत्येक उप-पेड़ों के लिए चरण ए पर वापस जाएं यदि इसमें एक से अधिक लाल नोड शामिल हैं।

    यह ओ (वी लॉग वी) (| ई | है | वी | -1) है।