तत्वों का आदेश देना ताकि कुछ तत्व दूसरों के बीच न आएं


10

एक पूर्णांक को देखते हुए n और विशिष्ट पूर्णांक तीन के सेट

S{(i,j,k)1i,j,kn,ij,jk,ik},
एक एल्गोरिथ्म लगता है जो या तो सेट जैसे कि क्रमचय पाता हैπ{1,2,,n}
(i,j,k)S(π(j)<π(i)<π(k))  (π(i)<π(k)<π(j))
या सही ढंग से निर्धारित करता है कि ऐसा कोई क्रमपरिवर्तन मौजूद नहीं है। औपचारिक रूप से कम, हम माध्यम से संख्या 1 को फिर से लिखना चाहते हैं ; में प्रत्येक ट्रिपल इंगित करता है कि नए ऑर्डर में से पहले दिखाई देना चाहिए , लेकिन j को i और k के बीच नहीं दिखाना चाहिए ।n(i,j,k)Sikjik

उदाहरण 1

मान लीजिए n=5 और S={(1,2,3),(2,3,4)} । फिर

  • हैनहींएक वैध क्रमचय, क्योंकि ( 1 , 2 , 3 ) एस , लेकिन π ( 1 ) > π ( 3 )π=(5,4,3,2,1)(1,2,3)Sπ(1)>π(3)

  • हैनहींएक वैध क्रमचय, क्योंकि ( 1 , 2 , 3 ) एस लेकिन π ( 1 ) < π ( 3 ) < π ( 5 )π=(1,2,4,5,3)(1,2,3)Sπ(1)<π(3)<π(5)

  • एक वैध क्रमपरिवर्तन है।(2,4,1,3,5)

उदाहरण 2

यदि और S = { ( 1 , 2 , 3 ) , ( 2 , 1 , 3 ) } , तो कोई मान्य क्रमपरिवर्तन नहीं है। इसी तरह, यदि n = 5 और S = { ( 1 , 2 , 3 ) , ( 3 , 4 , 5 ) , ( 2 , 5 , 3 ) है तो कोई वैध अनुमति नहीं है।n=5S={(1,2,3),(2,1,3)}n=5 (मुझे लगता है; यहाँ एक गलती हो सकती है)।S={(1,2,3),(3,4,5),(2,5,3),(2,1,4)}

बोनस: कौन से गुण निर्धारित करते हैं कि एक संभव समाधान मौजूद है या नहीं?S


के रूप में दूसरी शर्त क्यों नहीं अलग तरीके से व्यक्त ? फिर आपके पास एक सीधा, अधिक-या-कम, बाधा संतुष्टि की समस्या है। (ध्यान दें कि मैंने अन्य मान्यताओं के आधार पर स्थिति को सरल बना दिया है।)(σmi,σmj,σmk)S(i>jj>k)
डेव क्लार्क

BTW: इस समस्या के लिए प्रेरणा क्या है?
डेव क्लार्क

@DaveClarke मेरा संपादन देखें। इस समस्या को एक शेड्यूलिंग समस्या के बारे में चर्चा से बाहर कर दिया गया है जो मैं प्रयोगशाला में कुछ अन्य छात्रों के साथ चर्चा कर रहा था। मूल रूप से, विचार यह है कि आपके पास बहुत सारी नौकरियां हैं, जिनमें से कुछ को एक निश्चित क्रम में निष्पादित करना है। हालाँकि, आप नहीं चाहते हैं कि कुछ नौकरियों को एक क्रम में नौकरियों के बीच निर्धारित किया जाए, संभवतः बहुत ही सूक्ष्म कारणों से।
पैट्रिक87

3
सिग्मस क्यों? बस को परिभाषित । नेस्टेड सदस्यता बच्चे यीशु को रोते हैं। Σ={1,2,,n}
जेफ ईआर

@JeffE ईमानदारी से, मैं सिर्फ समीकरण चीज़ के साथ खेलने के बहाने पसंद करता हूं। वहाँ कुछ बस viscerally कोड है कि उन छोटे के लिए compiles लिखने के बारे में संतोषजनक है के। न लें कि मुझ से, यार। σ
पैट्रिक 88

जवाबों:


3

यहाँ एक भोली एल्गोरिथ्म है। यह अंततः क्रूर बल पर निर्भर करता है, लेकिन कभी-कभी ठीक भी हो सकता है।

प्रत्येक बाधा दो conjuncts के होते हैं; उन्हें type- कॉल एक , मैं < कश्मीर , और type- बी , ¬ ( मैं < j < कश्मीर ) । प्रत्येक type- बी बाधा समतुल्य रूप एक अलगाव के रूप में लिखा जा सकता है मैं > j j > कश्मीर , इस तथ्य पर निर्भर है कि मैं जे , जे कश्मीर(σmi,σmj,σmk)Si<k¬(i<j<k)Ai<kB¬(i<j<k)Bi>jj>kij,jk

  1. Collect all type-A constraints. Call this Θ. Check whether they are consistent, namely that this is a linearization of the ordering. This takes O(|S|)-time in the number of constraints using topological sorting.
  2. For each of the disjuncts in the type-B constraint, check whether it is consistent with partial order Θ. If it is not consistent, remove the disjunct. If both disjuncts are inconsistent with Θ, then fail. Whenever just one type-B constraint is removed, add the remaining one to Θ. This step is O(|S|2).
  3. BΘ|S|
    B
  4. If a leaf of the tree is reached, then we have a consistent set of constraints consisting of all of the type-A constraints and one disjunct of the type-B constraints. Linearise the result to obtain the desired ordering.

My preferred approach would actually be to encode it into a set of constraints and use a constraint solver such as Choco. I would introduce n integer variables xi in the range [0,n1] and require that they were all distinct. Then I would encode each of the constraints above directly as constraints and then let Choco do it's business.


1

Here is a partial answer:

If you remove the constraint i<k on each triple then your problem becomes the Non-Betweeness problem which is NP-complete and there are no known efficient algorithms for such problems. But with i<k constraint, it may force some nice structure which can be exploited to find a polynomial time algorithm for your problem.

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.