गिने जाने वाले क्रमपरिवर्तन जिनके तत्व वास्तव में उनके सूचकांक नहीं हैं whose M


13

मुझसे हाल ही में एक एल्गोरिथम साक्षात्कार में यह समस्या पूछी गई और इसे हल करने में विफल रहा।

दो मान N और M को देखते हुए, आपको लंबाई N के क्रमपरिवर्तन की संख्या (1 से N की संख्या का उपयोग करते हुए) की गणना करनी होगी, ताकि क्रमचय में किसी भी संख्या और क्रमपरिवर्तन में इसकी स्थिति के बीच का अंतर M के बराबर न हो।

उदाहरण - यदि N = 3 और M = 1 तो, 1 2 3 और 3 2 1 मान्य क्रमपरिवर्तन हैं लेकिन 1 3 2 अमान्य है क्योंकि संख्या 3 स्थिति 2 पर है और उनका अंतर = एम है।

मैंने NxM डायनेमिक प्रोग्रामिंग की कोशिश की, लेकिन एक पुनरावृत्ति बनाने में विफल रहा जो दोहराव की गिनती नहीं करता है।


आप संभवतः समावेश-बहिष्करण का उपयोग करके एक सूत्र प्राप्त कर सकते हैं। केस को शास्त्रीय रूप से अपमानजनक कहा जाता हैM=0
युवल फिल्मस Yu

1
यह रेखांकन में सही मिलान गिनने का एक विशेष उदाहरण है, एक समस्या जो -complete है। बेशक, यह विशेष मामला आसान हो सकता है। #P
युवल फिल्मस Yu

मैंने पहले ही समावेश-बहिष्करण की कोशिश की लेकिन कोई प्रगति नहीं हुई।
गेना

आप अपमान की गणना के तरीकों को अपनाने की कोशिश कर सकते हैं । मुझे नहीं पता कि वह आपको कहीं ले जाएगा या नहीं। आप M = 1 (कहते हैं) को ठीक करने का प्रयास कर सकते हैं, क्रूर बल द्वारा N (N = 1,2,3,4,5,6,7,8) के छोटे मूल्यों के लिए संख्या की गणना कर रहे हैं, और फिर इसी क्रम को देख रहे हैं में OEIS उम्मीद में आप कुछ उपयोगी पाते हैं कि।
DW

आपके द्वारा सेट की गई पुनरावृत्ति क्या है? "गिनती दोहराव" से आपका क्या मतलब है?
राफेल

जवाबों:


2

पहली बात मैं यह पूछूंगा कि यह प्रश्न कब दिया जाएगा

क्या आप एक बहुपद समय एल्गोरिथ्म चाहते हैं?

और फिर मुझे उम्मीद है कि उत्तर 'नहीं' है। मुझे संदेह है कि यह समस्या एनपी-कठिन है, निम्न कारण से:

इस समस्या के लिए प्राकृतिक दृष्टिकोण पहली संख्या के स्थान पर विचार करना है और दूसरों को लगाने के लिए एक पुनरावर्ती सूत्र प्राप्त करना है। यह केस के लिए अच्छी तरह से काम करता है (यानी संख्या की गणना), क्योंकि यह इस बात पर कोई फर्क नहीं पड़ता कि आपने किस नंबर को पहले नंबर पर रखा है, क्योंकि हर नंबर की केवल एक 'अवैध' स्थिति है। दूसरे शब्दों में, यह दृष्टिकोण स्वतंत्र उपप्रकारों की ओर जाता है।M=0

के लिए , इस के रूप में हम अब हो सकता है इतना आसान नहीं है, कुछ नंबरों के लिए अवैध पदों। इनमे से कौन सी स्थिति उपप्रभु में रहती है अब उपप्रोम्बल के समाधान के लिए प्रासंगिक है। केवल 'अवैध' पदों की संख्या पर विचार करना पर्याप्त नहीं है, क्योंकि संख्याओं की 'श्रृंखला' जो कि किसी अवैध स्थिति को साझा करती हैं, उस उप-उप-वर्ग की संरचना का निर्धारण करने के लिए आवश्यक हैं। तो, यह दृष्टिकोण अनिवार्य रूप से निम्नलिखित उपप्रकार की ओर जाता है:2M>02

एक सेट , एक सेट जो कि अधिकतम और एक प्राकृतिक संख्या दोनों के आकार का है, को देखते हुए , ग्राफ है, जहां यदि और केवल यदि । बी एन एन एम ( एक , बी , ) ( एक , ) | a - बी | एमANBNNM(A,B,E)(a,b)E|ab|M

यह समस्या कठिन दिखती है। इस समस्या का एकमात्र तरीका मुझे दिखाई देना शामिल है / शामिल नहीं है, जो एक बहुपद समय एल्गोरिथ्म को जन्म नहीं देगा।

हम उन दृष्टिकोणों पर विचार कर सकते हैं जो संख्याओं के पुनरावृत्ति प्लेसमेंट पर भरोसा नहीं करते हैं, लेकिन मुझे कोई सुराग नहीं है कि आप यह कैसे करेंगे। (विशेष रूप से एक साक्षात्कार के दौरान!)

बेशक, यह सब कुछ अटकलें हैं और यह अभी भी संभव है कि एक चतुर चाल एक बहुपद समय समाधान दे सकती है, लेकिन मुझे आशा है कि मैंने ठोस तर्क दिया है कि यह चाल वास्तव में बहुत चालाक है।

शायद इस समस्या को कम करके # 2-SAT (संख्याओं की 'जंजीर') में एनपी-कठोरता दिखाना संभव है जो गैरकानूनी स्थिति साझा करते हैं, एक गैर-तुच्छ पसंद लगती है, जिसे सत्य-मूल्य के चयन के साथ मिलान किया जा सकता है), लेकिन मैंने अब तक ऐसा करने का स्पष्ट तरीका नहीं देखा है।


यदि साक्षात्कारकर्ता वास्तव में एक घातांक समय एल्गोरिथ्म से संतुष्ट होगा, तो मैं इस विशेष मामले को बाहर करने के लिए एक क्रमचय उत्पन्न करने के लिए एक पुनरावर्ती backtracking एल्गोरिथ्म को अपनाने के द्वारा सभी संभव समाधान उत्पन्न करूँगा।


मैंने कहा था कि मैं एक घातीय समय एल्गोरिथ्म दे सकता हूं, लेकिन एक बहुपद समय समाधान के लिए कहा गया था जो काम करता है जब N <= 1000 है।
Gena

1
खैर, जब तक कि आपको गलत याद नहीं आया / गलत तरीके से इस सवाल का जवाब नहीं दिया गया, क्योंकि पेंग्विन के जवाब से पता चलता है, मुझे लगता है कि यह सवाल या तो बहुत ही मांग वाले साक्षात्कारकर्ताओं, साक्षात्कारकर्ताओं से पूछा जाता है, जो खुद इस सवाल को गलत समझते हैं या शायद एक सवाल के रूप में वे किसी से भी हल करने की उम्मीद नहीं करते हैं। । यहां तक ​​कि अगर यह प्रश्न कम्प्यूटेशनल रूप से कठिन नहीं होगा, तो यह सबसे अधिक संभावना है कि यह साक्षात्कार कठिन है।
छिपकली

ऐसा प्रतीत होता है कि एम = 1 संभावित रूप से उल्लेखनीय है (और इसलिए संभवतः अन्य), इसलिए कुछ ऐसा है जो हम चूक गए हैं। क्या आप मुझे M = 1 मामले को समझने / मूल्यांकन करने में मदद कर सकते हैं? मैंने इसके लिए एक अलग प्रश्न किया cs.stackexchange.com/questions/74674/…
PP पेंगुइनin

2

क्या यह संभव है कि आपको विशिष्ट विवरण गलत या गलत तरीके से याद किया गया है?

अपने विवरण में, तत्व स्थिति में के लिए प्रतिबंधित है । लेकिन अगर उनका मतलब केवल अंतर प्रतिबंधित था: , तो समस्या प्रकट होती है।एक - ± एम एक - एमabab±M
abM


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

पर विचार करें समारोह जो करने के लिए 1 लेबल तत्वों की सूची के क्रमपरिवर्तन की संख्या देता है , जहां तत्व स्थिति में (प्रथम स्थान है 1) को संतुष्ट करता है , और ।f(N,M,P)एक एक - एम बी - एक पीNababMbaP

इसकी कल्पना करने के लिए, इसे दो बाधाओं में अलग करने से और को उन प्रतिबंधों को अलग-अलग स्थानांतरित करने की अनुमति मिलती है ।MP

1 2 3 4 5  M=0, restricted values for each position
. . . . .  (positions in list)
1 2 3 4 5  P=0, restricted values for each position

3 4 5      M=2, restricted values for each position
. . . . .  (positions in list)
  1 2 3 4  P=1, restricted values for each position

सुविधा के लिए, जब ताकि यह क्रमपरिवर्तन पर प्रतिबंध न लगाए, परिभाषित करें । इसी तरह, जब ताकि यह क्रमपरिवर्तन पर कोई प्रतिबंध नहीं रखता है।PNg(N,M)=f(N,M,P)g(N,P)=f(N,M,P)MN

विशेष मामले में और से अवरोध समतुल्य हैं, इसलिए किसी को अनदेखा किया जा सकता है, जिससे हम : संदर्भ में लिख सकते हैंM=P=0MPfg

f(N,0,0)=g(N,0).

समस्या की समरूपता से:

f(N,M,P)=f(N,P,M)

पहले लिए हल करते हैं , और फिर अधिक सामान्य निपटते हैं ।g(N,M)f(N,M,P)

के लिए , प्रत्येक तत्व एक प्लेसमेंट प्रतिबंध है (और प्रतिबंध अलग हैं)। इसलिए कुछ तत्व चुनते हुए , हम इसे कुछ स्थिति में रखेंगे । कर रहे हैं के चुनाव के लिए अलग अलग संभावनाएं ।M=0ijN1j

इस चयन ने एलिमेंट लिए प्रतिबंधित स्थिति को हटा दिया , जबकि अन्य तत्वों में अभी भी एक प्रतिबंध है। हम के प्लेसमेंट को दो विकल्पों में तोड़ सकते हैं:j(N2)j

  1. में रखें । यह अन्य सभी तत्वों को एक प्रतिबंध के साथ छोड़ देता है, इसलिए शेष प्लेसमेंट की समस्या अब कम हो गई है ।ig(N2,0)

  2. एक स्थिति में रखें । यह अब लिए एक प्लेसमेंट प्रतिबंध देता है , और इसलिए प्रत्येक तत्व में एक प्रतिबंध है, और शेष प्लेसमेंट की समस्या कम हो जाती हैijg(N1,0)

तो यह पुनरावर्ती सूत्र देता है:

g(N,0)=(N1)[g(N2,0)+g(N1,0)]

और हाथ से सरल स्थितियों को देखकर, बेस केस प्राप्त कर सकते हैं।

g(1,0)=0,  g(2,0)=1

यह सामान्य व्युत्पन्न पुनरावर्ती सूत्र है।

हालांकि मैं इस मौके पर किसी के साथ आने की कल्पना नहीं कर सकता, लेकिन यह भी पता चलता है कि इसके लिए एक बंद फॉर्म समाधान है ( विवरण के लिए अपमानजनक विकी लेख देखें)।

g(N,0)=n!e+12

के लिए , वहाँ किसी भी नियुक्तियों पर कोई प्रतिबंध नहीं है:MN

(MN)g(N,M)=N!

साथ , पहले तत्वों कोई प्रतिबंध नहीं होगा और शेष तत्व एक प्लेसमेंट प्रतिबंध होगा। यह पदों की शर्तों, अंतिम पदों को सभी संख्याओं की अनुमति देगा।0<M<NMM

अंतिम स्थिति के लिए, एक तत्व का चयन करें । शेष प्लेसमेंट जैसा दिखता है, उसके लिए दो संभावनाएँ हैं:i

  1. यदि , तो पास कोई प्लेसमेंट प्रतिबंध नहीं था, इसलिए का उपयोग करके किसी भी स्थिति पर प्रतिबंधों को नहीं बदलता। हमने बिना किसी प्रतिबंध के एक स्थिति को भी हटा दिया है, इसलिए शेष प्लेसमेंट जैसा दिखता है ।i<Miig(N1,M1)

  2. यदि , तो पास प्लेसमेंट प्रतिबंध था, और हमने बिना किसी प्रतिबंध के एक स्थिति को निकाल दिया। क्योंकि रखा गया है, यह स्थिति अब से प्रतिबंधित कर दिया गया था कि किसी भी शेष संख्या को स्वीकार कर सकते हैं। तो शेष प्लेसमेंट जैसा दिखता है ।i>=Miig(N1,M)

तो यह पुनरावर्ती सूत्र देता है:

(0<M<N)g(N,M)=(M1)g(N1,M1)+(NM+1)g(N1,M)

यह लिए पुनरावर्ती समाधान को पूरा करता है ।g

जब , पहले पदों पर उन पर एक ही नंबर प्रतिबंध है, तो अंतिम पदों पर एक ही नंबर प्रतिबंध है, और मध्य पदों पर कोई प्रतिबंध नहीं है। यह मामले की तरह ही है।M+PNNMNPM+PNg(N,M+PN)

(M+P)Nf(N,M,P)=g(N,M+PN)

हमने वर्तमान में और को छोड़कर सभी मामलों को संभाला है जैसे कि । यह वह जगह है जहां कुछ तत्वों पर कई प्रतिबंध हैं। में समरूपता के कारण , हम सामान्यता की हानि के बिना विचार कर सकते हैं ।0<M<N0<P<NM+P<Nf0<MP<N

पहले पदों पर एक एकल प्रतिबंध होगा, फिर दो प्रतिबंधों के साथ, फिर अंतिम पदों पर एक एकल प्रतिबंध होगा।PNMPM

तत्वों को देखते हुए, पहले तत्वों में एक ही प्रतिबंध होगा, फिर तत्वों पर दो प्रतिबंध हैं, फिर अंतिम तत्वों में एक ही प्रतिबंध है।MNMPP

हालाँकि यह वह जगह है जहाँ हमें समाप्त होना चाहिए। जैसा कि इस विधि के साथ आगे कोई रास्ता नहीं है।


मैंने दो बाधाओं को अलग कर दिया क्योंकि मैं देख सकता था कि एक चयनित स्थिति में एक संख्या रखने से असंतुलित हो सकता है कि "+" बाधा और "-" के "-" बाधाओं के लिए कितने एकल विवश पद थे ।ab±M

लेकिन अधिक सामान्य समस्या में, इसमें एक संख्या रखकर एक स्थिति को हटाने से, हमेशा एक उपप्रोग्राम में परिणाम नहीं होता है जो कि साथ वर्णित है ।f(N,M,P)

पर इन बाधाओं की कल्पना करने के लिए, नोड्स के साथ एक निर्देशित ग्राफ पर विचार करें , लेबल का एक सेट और दूसरा लेबल । एक निर्देशित बढ़त मौजूद है अगर , और निर्देशित धार मौजूद है अगर और ।2NN{A1,A2,...,AN}{B1,B2,...,BN}(Ai,Bj)ij=M(Bj,Ai)ji=MM0

नोड्स के सेट को उन संख्याओं पर विचार किया जा सकता है जिन्हें हम किसी सूची में अनुमति दे रहे हैं, और उनके संभावित पदों को नोड करते हैं। यह ग्राफ बाधाओं का प्रतिनिधित्व करता है। ग्राफ में कोई चक्र नहीं होगा। यह हमेशा एक या अधिक लंबाई के नोड्स या जंजीरों का तिरस्कार होगा।AB

तो हम एक फ़ंक्शन चाहते हैं जो इनपुट के रूप में इस बाधा ग्राफ को लेता है, और बाधाओं को संतुष्ट करने वाले क्रमपरिवर्तन की संख्या को आउटपुट करता है।

ऐसे मामले में जहां , ग्राफ सिर्फ नोड्स और सिंगल एज को असम्बद्ध करता है। तो ए और बी नोड को हटाने से एक सबग्राफ मिलेगा जो नोड्स और एकल किनारों को भी असम्बद्ध करता है।M+PN

हालाँकि , ग्राफ़ में लंबी श्रृंखलाएँ हो सकती हैं। उपलब्ध स्थिति में किसी संख्या को रखने के लिए, भले ही हम नोड या स्थिति को ठीक करें, हमें इसे बनाने के लिए संभावित तरीकों के सभी सबग्राफ पर विचार करने की आवश्यकता है। जंजीरों को तोड़ने के सभी अलग-अलग तरीकों का परिणाम एक "पुनरावृत्ति" के रूप में होगा जो कि प्रत्येक दौर में भागों के आदेश पर है , और इस प्रकार सभी जांच करने की तुलना में किसी भी बचत की बहुत उम्मीद नहीं की जा सकती हैक्रमपरिवर्तन।N N !0<MP<NNN!

क्योंकि जंजीरों की अनुमति मिलने के बाद बहुत सारे संभावित उपसमूह होते हैं, मैं वास्तव में यह नहीं देखता कि इसे कैसे सामान्य पुनरावर्ती तरीकों से हल किया जा सकता है जब तक कि कोई चतुर संबंध यह न कहे कि गैर-आइसोमॉर्फिक बाधा रेखांकन किसी भी तरह से क्रमपरिवर्तन की संख्या के बराबर हैं।

मुझे लगता है कि सबसे अधिक संभावना है, इस सवाल का गलत अर्थ लगाया गया था। संभवतः साक्षात्कारकर्ता द्वारा भी (जो स्वयं उत्तर विवरण भूल गए हों)।


आपका बाधा ग्राफ क्यों निर्देशित है? निर्देशों का क्या मतलब है?
छिपकली

@Discretelizard दो दिशाएँ (a-> b बनाम b-> a) इस बात में भेद करती हैं कि बाधा कहाँ से आई ('+' या '-' बाधा का संस्करण)। यह वास्तव में आवश्यक नहीं है, क्योंकि यह बाधा की उत्पत्ति से कोई फर्क नहीं पड़ता है, यह सिर्फ मेरे लिए यह कल्पना करना आसान बनाता है कि क्या चल रहा था।
पीपीग्विन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.