हलकों के परिमित सेट को संलग्न करते हुए सबसे छोटे वृत्त की गणना कैसे न करें


17

मान लीजिए कि हमें एक परिमित सेट है में डिस्क की , और हम सबसे छोटी डिस्क की गणना करना चाहते हैं जिसके लिए ⋃ एल ⊆ डी । यह करने के लिए एक मानक तरीका Matousek, Sharir और Welzl [1] के एल्गोरिथ्म का उपयोग एक आधार खोजने के लिए करने के लिए है बी के एल , और डी = ⟨ बी ⟩ , छोटी से छोटी डिस्क युक्त ⋃ बी । डिस्क गणना बीजगणितीय रूप से इस तथ्य का उपयोग करके की जा सकती है कि, एक आधार है, में प्रत्येक डिस्क लिए स्पर्शरेखा है ।LR2⟨ बी ⟩D⋃L⊆DBLD=⟨B⟩⋃B⟨B⟩BB⟨B⟩

( एक है आधार के यदि कम है ऐसा है कि एक आधार नहीं है सबसे तीन तत्वों पर;। में गेंदों के लिए सामान्य रूप में एक आधार अधिक से अधिक तत्व हैं।)B⊆Lबी ⟨ बी ⟩ = ⟨ एल ⟩ आर डी डी + 1LB⟨B⟩=⟨L⟩Rdd+1

यह एक यादृच्छिक पुनरावर्ती एल्गोरिदम निम्नानुसार है। (लेकिन एक पुनरावृत्त संस्करण के लिए नीचे देखें, जिसे समझना आसान हो सकता है।)

प्रक्रिया : इनपुट : डिस्क के परिमित सेट , , जहां एक आधार है ( )।एल बी बी बीMSW(L,B)
LBBB

  1. यदि , तो वापस लौटें ।L=∅B
  2. अन्यथा यादृच्छिक पर में चुनें ।X∈L
  3. आज्ञा देना ।B′←MSW(L−{X},B)
  4. यदि तो वापस करें ।X⊆⟨B′⟩B′
  5. अन्यथा , जहाँ कप '' {X \} का एक आधार है ।MSW(L,B″)B″B′∪{X}

के रूप में प्रयुक्त MSW(L,∅) के आधार गणना करने के लिए L ।

हाल ही में मेरे पास इस एल्गोरिथम को लागू करने का कारण था। लाखों यादृच्छिक रूप से उत्पन्न परीक्षण मामलों में परिणाम सही होने के बाद, मैंने देखा कि मैंने कार्यान्वयन में त्रुटि की थी। अंतिम चरण में मैं लौट रहा था MSW(L−{X},B″) के बजाय MSW(L,B″) ।

इस त्रुटि के बावजूद, एल्गोरिथ्म सही उत्तर दे रहा था।


मेरा प्रश्न: एल्गोरिथ्म का यह गलत संस्करण स्पष्ट रूप से यहाँ सही उत्तर क्यों देता है? क्या यह हमेशा (साबित) काम करता है? यदि हां, तो क्या यह उच्च आयामों में भी सच है?


जोड़ा: कुछ गलतफहमी

कई लोगों ने इस आशय के गलत तर्क पेश किए हैं कि संशोधित एल्गोरिथ्म तुच्छ रूप से सही है, इसलिए यहां कुछ गलतफहमी को दूर करना उपयोगी हो सकता है। एक लोकप्रिय गलत धारणा यह प्रतीत होती है कि । यहाँ उस दावे का प्रतिवाद है। दिए गए अनुसार डिस्क नीचे ( की सीमा को भी लाल रंग में दिखाया गया है):एक , ख , ग , घ , ई ⟨ एक , ख , ई ⟩B⊆⟨MSW(L,B)⟩a,b,c,d,e⟨a,b,e⟩

ए, बी, सी, डी, ई

हमारे पास ; और ध्यान दें कि :ई ∉ ⟨ ग , घ ⟩MSW({c,d},{a,b,e})={c,d}e∉⟨c,d⟩

c और d के सबसे छोटे संलग्न वृत्त में e नहीं है

यहाँ है कि यह कैसे हो सकता है। पहला अवलोकन यह है कि :MSW({c},{a,b,e})={b,c}

  • हम गणना करना चाहते हैंMSW({c},{a,b,e})
  • चुनेंX=c
  • आज्ञा देनाB′=MSW(∅,{a,b,e})={a,b,e}
  • उस निरीक्षण करेंX∉⟨B′⟩
  • तो चलिए का एक आधार हो सकता हैबी ' ∪ { एक्स } = { एक , ख , ग , ई }B″B′∪{X}={a,b,c,e}
  • निरीक्षण करें किB″={b,c}
  • लौटें , जो कि{ b , c }MSW({c},{b,c}){b,c}

अब ।MSW({c,d},{a,b,e})

  • हम गणना करना चाहते हैंMSW({c,d},{a,b,e})
  • चुनेंX=d
  • आज्ञा देनाB′=MSW({c},{a,b,e})={b,c}
  • उस निरीक्षण करेंX∉⟨B′⟩
  • तो चलिए एक आधार हो सकता हैबी ' ∪ { एक्स } = { ख , ग , घ }B″B′∪{X}={b,c,d}
  • निरीक्षण करें किB″={c,d}
  • लौटें , जो{ c , d }MSW({c,d},{c,d}){c,d}

(निश्चितता के लिए, हम कहते हैं कि डिस्क सभी की त्रिज्या 2 है, और , , , , और क्रमशः।)( 30 , 5 ) ( 30 , 35 ) ( 10 , 5 ) ( 60 , 26 ) ( 5 , 26 )a,b,c,d,e(30,5)(30,35)(10,5)(60,26)(5,26)


जोड़ा गया: एक पुनरावृत्त प्रस्तुति

एल्गोरिथ्म की पुनरावृत्त प्रस्तुति के बारे में सोचना आसान हो सकता है। मुझे निश्चित रूप से इसके व्यवहार की कल्पना करना आसान है।

इनपुट : एक सूची डिस्क की आउटपुट : का एक आधारएलL
L

  1. दें ।B←∅
  2. बेतरतीब ढंग से शफ़ल ।L
  3. में प्रत्येक लिए :एलXL
  4.   यदि :X∉⟨B⟩
  5.     चलो के एक आधार होना ।BB∪{X}
  6.     चरण 2 पर वापस जाएं।
  7. वापसी ।B

एल्गोरिथ्म का कारण, संयोगवश, यह है कि चरण 5 हमेशा की त्रिज्या को बढ़ाता है - और केवल कई संभावित मान हैं ।⟨B⟩B

संशोधित संस्करण में इतनी सरल पुनरावृत्त प्रस्तुति नहीं है, जहां तक ​​मैं देख सकता हूं। (मैंने इस पोस्ट में पिछले संपादन में एक देने की कोशिश की, लेकिन यह गलत था - और गलत परिणाम दिए।)


संदर्भ

[१] जिओ मतौकेक, मीशा शायर और इमो वेल्ज़ल। लीनियर प्रोग्रामिंग के लिए एक उपसमुच्चय बाउंड। एलगोरिदमिका, 16 (4-5): 498-516, 1996।


सबसे पहले, अपनी लाइन में "इनपुट: ..." मुझे लगता है कि आप चाहते हैं "(एल के)" के बजाय "(बी के)"। दूसरे, जब MSW (L- {X}, B '') MSW (L, B '') के बजाय, आपका आधार B '' को 'B' संघ {X}] का आधार माना जाता है, तो X है अभी भी MSW (L- {X}, B '') द्वारा कवर किया जाना सुनिश्चित है, भले ही आपने इसे सेट से हटा दिया हो।
— जिमएन

नहीं, मैं वास्तव में वहाँ ("बी का") मतलब है, और बी जरूरी पुनरावर्ती कॉल में एल का एक सबसेट नहीं है। बीएल के तत्व आवश्यक रूप से MSW (L, B) द्वारा कवर नहीं किए जाते हैं, जैसा कि इस उदाहरण में है। bl.ocks.org/robinhouston/c4c9dffbe8bd069028cad8b8760f392c जहां और (गणना के माध्यम से कदम रखने के लिए थोड़ा तीर बटन दबाएं।)L={a,b,c,d}B={a,b,e}
— रॉबिन ह्यूस्टन

जवाबों:


1

निरंतर पुनरावृत्ति से पहले एल से को हटाने का यह कदम वास्तव में एल्गोरिथ्म में सुधार करता है, क्योंकि यह आधार उम्मीदवारों के पूल से पहले से ही जोड़े गए एक्स को हटा देता है । यह हमेशा, साबित काम करेगा, क्योंकि यह मौजूदा एल्गोरिथ्म के बराबर है, और यह उच्च आयामों के लिए भी काम करेगा।XLX

एल्गोरिथ्म के माध्यम से ट्रेस। आप का उपयोग करते हैं , वहाँ है एक्स ∈ एल और एक्स ∈ बी ' ' । मान लीजिए कि हमें चरण 3, का परिणाम की परवाह किए बिना कदम 2 में इसे फिर से चुना बी ' हमेशा होगा एक्स , पुनरावर्ती क्रिया अपरिवर्तनीय है क्योंकि बी ⊆ एम एस डब्ल्यू ( एल , बी ) ।MSW(L,B′′)X∈LX∈B′′B′XB⊆MSW(L,B)

दूसरे शब्दों में, को चुना गया भाग में चरण 3 में एल्गोरिथ्म शॉर्टकट के लिए आपका सुधार ।X


यह सच नहीं है कि सामान्य रूप में। प्रश्न पर मेरी टिप्पणी में लिंक किए गए उदाहरण को देखें। B⊆MSW(L,B)
— रोबिन ह्यूस्टन

न तो यह सामान्य रूप में यह सच है , उस बात के लिए! क्या आपका मतलब है एक्स ∈ ⟨ बी " ⟩ ? मुझे संदेह है कि यदि आप अपने तर्क को अधिक कठोरता से समझाने की कोशिश करते हैं, तो आप देखेंगे कि यह काम नहीं करता है। X∈B″X∈⟨B″⟩
— रॉबिन ह्यूस्टन

एनबी। यह सामान्य रूप में भी सच नहीं है कि । B⊆⟨MSW(L,B)⟩
— रॉबिन ह्यूस्टन

मैं सवाल की एक प्रति देने के लिए एक अनुभाग जोड़ दिया है , के बाद से कई लोगों को यह अपेक्षा की जाती है सच। B⊆⟨MSW(L,B)⟩
— रॉबिन ह्यूस्टन

1
ओह, मैं पूरी तरह से याद किया! । हाँ, यह उत्तर पूरी तरह से गलत है। क्या मुझे इसे हटा देना चाहिए? B′′=⟨B′∪X⟩
— लैरी बी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.