निम्नलिखित उत्तर मूल रूप से उस एक के बराबर है जिसे आप पहले से जानते हैं, लेकिन थोड़ा "जादुई" लग सकता है। दूसरी ओर, यह अधिक तकनीकी है, लेकिन मेरा मानना है कि सामान्य तकनीक "आपकी समस्या को क्रमपरिवर्तन मैट्रिसेस पर अनुकूलन के रूप में लिखती है और बिरखॉफ-वॉन न्यूमैन को आमंत्रित करती है" यह जानने के लिए एक महान है।
क्रमपरिवर्तन के लिए क्रमचय मैट्रिक्स को 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=∑ki=1αiPσi∑αi=1
ध्यान दें कि एक डबल स्टोकेस्टिक मैट्रिक्स असमानताओं द्वारा परिभाषित किया गया है
∀i:∑j=1nMij=1
∀j:∑i=1nMij=1
∀i,j:Mij≥0
एक साथ ली गई ये सभी असमानताएं एक पोलीटोप निर्धारित करती हैं , और 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σ)=∑ni=1iaσ(i)
- इसके बाद के संस्करण को पर अधिकतम किया जाता है जिसके लिए को छांटा जाता है (विरोधाभास द्वारा: अन्यथा आप दो निर्देशांक स्विच कर सकते हैं और उच्च मान प्राप्त कर सकते हैं)।σ ( एक ) σ ( एक )σσ(a)σ(a)
और वॉइला, आपके पास सॉर्टिंग के लिए एक रैखिक कार्यक्रम है। छँटाई के लिए मूर्खतापूर्ण लगता है, लेकिन यह वास्तव में अनुकूलन में एक शक्तिशाली तरीका है।