एक रैखिक कार्यक्रम के रूप में छंटनी


24

समस्याओं की एक आश्चर्यजनक संख्या में रैखिक प्रोग्रामिंग (एलपी) के लिए काफी प्राकृतिक कटौती है। नेटवर्क प्रवाह, द्विदलीय मिलान, शून्य-योग खेल, कम से कम पथ, रैखिक प्रतिगमन का एक रूप और यहां तक ​​कि सर्किट मूल्यांकन जैसे उदाहरणों के लिए [1] का अध्याय 7 देखें !

चूंकि सर्किट मूल्यांकन रैखिक प्रोग्रामिंग को कम करता है, में किसी भी समस्या का रैखिक प्रोग्रामिंग सूत्रीकरण होना चाहिए। इसलिए, हमारे पास एक रेखीय कार्यक्रम में कमी के माध्यम से "नया" सॉर्टिंग एल्गोरिदम है। तो, मेरे सवाल हैंP

  1. रैखिक कार्यक्रम क्या है जो वास्तविक संख्याओं की एक सरणी को सॉर्ट करेगा ?n
  2. कम करने वाली एलपी-एंड-हल सॉर्टिंग एल्गोरिदम का रनिंग टाइम क्या है?

  1. एस। दासगुप्ता, सी। पापादिमित्रिउ और यू। वज़ीरानी (2006) द्वारा एल्गोरिदम


3
यदि आप पहले से ही जवाब जानते हैं, तो आप सवाल क्यों पूछ रहे हैं?
युवल फिल्मस

2
@ जो जवाब देने के बाद भी दिलचस्प सामग्री पोस्ट करना ठीक है। ऐसा करने का पारंपरिक तरीका यह है कि आप अपने स्वयं के प्रश्न का उत्तर दें (विस्तृत) कुछ दस्तावेज़ों के लिंक पोस्ट करने के बजाय, जो टूट सकते हैं)।
राफेल

@ राफेल अगर कोई और जवाब नहीं लिखता है, तो मेरे पास समय होगा।
जो

@YuvalFilmus एक प्रश्न पूछ रहा है, जिसका उत्तर आपको पता है कि स्टैक एक्सचेंज पर स्पष्ट रूप से प्रोत्साहित किया गया है
जो

जवाबों:


23

निम्नलिखित उत्तर मूल रूप से उस एक के बराबर है जिसे आप पहले से जानते हैं, लेकिन थोड़ा "जादुई" लग सकता है। दूसरी ओर, यह अधिक तकनीकी है, लेकिन मेरा मानना ​​है कि सामान्य तकनीक "आपकी समस्या को क्रमपरिवर्तन मैट्रिसेस पर अनुकूलन के रूप में लिखती है और बिरखॉफ-वॉन न्यूमैन को आमंत्रित करती है" यह जानने के लिए एक महान है।

क्रमपरिवर्तन के लिए क्रमचय मैट्रिक्स को 0-1 मैट्रिक्स के रूप में परिभाषित करते हैं जैसे कि अगर और अन्यथा। यह केवल एक मैट्रिक्स है जो अनुसार एक वेक्टर के निर्देशांक को अनुमति देता है : यदि तो । मैं अभी से as निरूपित करूँगा ।σ{1,,n}PσPij=1j=σ(i)Pij=0xσy=Pσxyi=xσ(i)y=Pσxσ(x)

एक और परिभाषा: एक गैर-नकारात्मक मैट्रिक्स दोगुना-स्टोचैस्टिक है यदि इसकी प्रत्येक पंक्तियों और इसके प्रत्येक कॉलम में से प्रत्येक 1 के लिए गाया जाता है।n×nM

और एक तथ्य जो कॉम्बीनेटरियल ऑप्टिमाइज़ेशन में बहुत महत्वपूर्ण है - बिरखॉफ़-वॉन न्यूमन प्रमेय:

एक मैट्रिक्स दोगुना stochastic है अगर और केवल अगर यह क्रमपरिवर्तन matrices का एक उत्तल संयोजन है, अर्थात यदि और केवल तभी मौजूद है जब क्रमपरिवर्तन और सकारात्मक reals जैसे कि और ।Mσ1,,σkα1,,αkM=i=1kαiPσiαi=1

ध्यान दें कि एक डबल स्टोकेस्टिक मैट्रिक्स असमानताओं द्वारा परिभाषित किया गया है

i:j=1nMij=1
j:i=1nMij=1
i,j:Mij0

एक साथ ली गई ये सभी असमानताएं एक पोलीटोप निर्धारित करती हैं , और Birkhoff-von Neumann प्रमेय में कहा गया है कि इस पॉलीटॉप के चरम बिंदु (कोने) सभी क्रमपरिवर्तन मैट्रिक्स हैं। बुनियादी रेखीय प्रोग्रामिंग से, हम यह जानते हैं कि किसी भी रेखीय कार्यक्रम में जो उपरोक्त असमानताएं हैं, जैसे कि कोई बाधा (और कोई अन्य बाधा नहीं) में एक इष्टतम समाधान के रूप में एक क्रमपरिवर्तन मैट्रिक्स होगा।P

इसलिए एक इनपुट दिया जाना चाहिए, हमें केवल एक रैखिक उद्देश्य के साथ आने की आवश्यकता है :a=(a1,,an)fa(M)

  • fa(Pτ)<fa(Pσ) यदि को सॉर्ट किया जाता है, लेकिन नहीं है।σ(a)τ(a)

फिर और बाधाओं के रूप में ऊपर की विषमताओं को अधिकतम करने के उद्देश्य से एक रेखीय कार्यक्रम तैयार करें , और आपको गारंटी दी जाती है कि एक इष्टतम समाधान लिए क्रमपरिवर्तन मैट्रिक्स जैसे कि । बेशक, यह आसान "बंद पढ़ें" करने के लिए से ।fa(M)Pσσσ(a)σPσ

के लिए एक विकल्प है जहां । सत्यापित करो किfa(M)vTMav=(1,,n)

  • यह में रैखिक है ;M
  • के लिए , ;एक ( पी σ ) = Σ n मैं = 1 मैं एक σ ( मैं )Pσfa(Pσ)=i=1niaσ(i)
  • इसके बाद के संस्करण को पर अधिकतम किया जाता है जिसके लिए को छांटा जाता है (विरोधाभास द्वारा: अन्यथा आप दो निर्देशांक स्विच कर सकते हैं और उच्च मान प्राप्त कर सकते हैं)।σ ( एक ) σ ( एक )σσ(a)σ(a)

और वॉइला, आपके पास सॉर्टिंग के लिए एक रैखिक कार्यक्रम है। छँटाई के लिए मूर्खतापूर्ण लगता है, लेकिन यह वास्तव में अनुकूलन में एक शक्तिशाली तरीका है।


1
कुछ मैंने निपटाया नहीं है: जब कई इष्टतम समाधान होते हैं, तो उनमें से कुछ क्रमपरिवर्तन मेट्रिसेस (और कुछ निश्चित रूप से) नहीं होंगे। इसे ठीक करने के कई आसान तरीके हैं: गड़बड़ी से आप में डुप्लिकेट को हटा सकते हैं । a
साशो निकोलेव

1
जब कई इष्टतम समाधान होते हैं तो कुछ क्रमचय मेट्रिसेस नहीं हो सकते हैं (लेकिन हमेशा कुछ इष्टतम समाधान एक क्रमपरिवर्तन मैट्रिक्स होंगे)। यदि उद्देश्य फ़ंक्शन स्थिर है, तो सभी संभव समाधान इष्टतम हैं।
साशो निकोलेव

1
@ टरबो लीनियर प्रोग्राम पूरी तरह से इस उत्तर में लिखा गया है। जाहिर है कि इसमें कोई अभिन्नता नहीं है। मैं आपके दूसरे प्रश्न का उत्तर देने का प्रयास नहीं करने जा रहा हूं। नीचे बैठें और जीआई को लिखने का प्रयास करें क्योंकि दोगुने स्टोचस्टिक मैट्रीक पर एक रैखिक कार्य को अनुकूलित करने का तरीका, जिस तरह से मैंने यहां छँटाई के लिए किया है। अपने लिए देखें कि वह कहाँ असफल है।
साशो निकोलेव

1
व्यवहार में आप शायद सिम्प्लेक्स का उपयोग करना चाहते हैं, लेकिन सिद्धांत रूप में आप एक बहुपद समय एल.पी. सॉल्वर का उपयोग करके एक बहुपद समय एल्गोरिथ्म प्राप्त कर सकते हैं, उदाहरण के लिए एक आंतरिक बिंदु विधि, या दीर्घवृत्त विधि। यह आपको की बिट जटिलता में बहुपद का समय देगा । जब बाधा मैट्रिक्स TUM है (जैसा कि यहां मामला है), वहाँ दृढ़ता से पॉलीटाइम सॉल्वर भी मौजूद हैं cstheory.stackexchange.com/questions/4454/…a
शाशो निकोलेव

1
और हाँ, ऐसा करने के लिए सबसे आसान काम सुनिश्चित करें कि आप एक अद्वितीय इष्टतम समाधान है, जो आप के लिए एक छोटे से यादृच्छिक गड़बड़ी जोड़कर कर सकते हैं बनाने के लिए है । a
सैशो निकोलोव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.