हनोई के टावर्स की जटिलता


20

मैं हनोई के टावर्स की जटिलता पर निम्नलिखित संदेह में भाग गया , जिस पर मैं आपकी टिप्पणी चाहूंगा।

  • क्या यह एनपी में है? उत्तर दिया गया: मान लीजिए कि पैगी (प्रोवर) समस्या को हल करती है और उसे विक्टर (सत्यापनकर्ता) तक पहुँचा देती है। विक्टर आसानी से देख सकता है कि समाधान की अंतिम स्थिति (रैखिक समय में) सही है लेकिन उसके पास कोई विकल्प नहीं होगा लेकिन पेगी के प्रत्येक कदम से गुजरने के लिए सुनिश्चित करें कि उसने अवैध कदम नहीं उठाया। चूँकि पैगी को कम से कम 2 ^ | डिस्क्स बनाना पड़ता है | - 1 चाल (साबित), विक्टर को भी सूट का पालन करना है। इस प्रकार विक्टर का कोई बहुपद समय सत्यापन (एनपी की परिभाषा) नहीं है, और इसलिए यह एनपी में नहीं हो सकता है।

  • क्या यह PSPACE में है ? ऐसा लगता है, लेकिन मैं यह नहीं सोच सकता कि उपरोक्त तर्क को कैसे बढ़ाया जाए।

  • क्या यह PSPACE-complete है? नहीं लगता है, लेकिन मेरे पास केवल एक अस्पष्ट विचार है। स्वचालित योजना, जिसमें से TOH एक विशिष्ट उदाहरण है, PSPACE- पूर्ण है। मुझे लगता है कि ToH की तुलना में नियोजन के और अधिक कठिन उदाहरण हैं।

अपडेट किया गया : इनपुट = , डिस्क की संख्या; आउटपुट = प्रत्येक चरण में डिस्क कॉन्फ़िगरेशन। इसे अपडेट करने के बाद, मैंने महसूस किया कि यह इनपुट / आउटपुट प्रारूप निर्णय समस्या के लायक नहीं है। मैं इस तरह की समस्या के लिए एनपी, PSPACE, आदि की धारणाओं को पकड़ने के लिए सही औपचारिकता के बारे में निश्चित नहीं हूं।n

अपडेट # 2 : केव्स और जेफ की टिप्पणियों के बाद, मैं समस्या को और अधिक सटीक बनाने के लिए मजबूर हूं:

इनपुट को ints की जोड़ी होने दें जहां n डिस्क की संख्या है। यदि डिस्क द्वारा उठाए गए चालों के अनुक्रम को प्रारूप (डिस्क-संख्या, से-खूंटी, से-खूंटी) (डिस्क-संख्या, खूंटी, से-खूंटी) में लिखा गया है ... पहली चाल से। अंतिम, और बाइनरी में एन्कोड किया गया, i th बिट आउटपुट ।(n,मैं)nमैं

मुझे बताएं कि क्या एन्कोडिंग के बारे में मुझे और अधिक विशिष्ट होने की आवश्यकता है। मुझे लगता है कि इस मामले में केव की टिप्पणी लागू होती है?


5
क्या आप हनोई समस्या के टावर्स को परिभाषित कर सकते हैं या परिभाषा से जोड़ सकते हैं?
Kaveh

1
PKG, मुझे पता है कि यह हनोई का टॉवर क्या है। मेरा अभिप्राय था कि वह कौन सी कम्प्यूटेशनल समस्या है जो आप इसकी जटिलता जानना चाहते हैं? इनपुट क्या है? आउटपुट क्या है?
केव

@ केव: आपका इरादा आपकी पहली टिप्पणी से स्पष्ट नहीं था
पीकेजी

माफ़ करना। Btw, फ़ंक्शन जटिलता वर्ग हैं, उनके पास आमतौर पर नाम से पहले या बाद में एक एफ है, परिभाषाओं के लिए जटिलता चिड़ियाघर की जांच करें।
केवह

1
तो क्या पूर्णांक भी इनपुट का हिस्सा है? मैं
जेएफई

जवाबों:


9

नहीं, आपके द्वारा वर्णित समस्या वास्तव में काफी आसान है। उच्च स्तरीय कारण यह है कि सूचकांक है मोटे तौर पर है n , बिट्स लंबे इसलिए हम वास्तव में समय बहुपद खर्च करने के लिए खर्च कर सकते हैं ninn

निम्नलिखित संबंधित समस्या पर विचार करें: दो पूर्णांकों और k को देखते हुए , n -disk पहेली के समाधान में k वें चाल का वर्णन करें । इनपुट का आकार lg n + lg k < n + lg k है , लेकिन वास्तव में, n मामलों का केवल सबसे कम महत्वपूर्ण बिट है। तो भले ही lg k n की तुलना में काफी छोटा हो , हम इस समस्या को O ( लॉग k ) में बहुपद में हल कर सकते हैं ।nkknएलजीn+एलजी<n+एलजीnएलजीnहे(लॉग)

मान लीजिए कि डिस्क्स को आकार से बढ़ते क्रम में से क्रमांकित किया गया है, और खूंटे को 0 = स्रोत, 1 = गंतव्य और 2 = अतिरिक्त क्रमांकित किया गया है। कुछ पूर्णांक p और d के लिए k = ( 2 p + 1 ) write 2 d लिखें । फिर कश्मीर को चालू करें :0=(2पी+1)2पी

  • यदि विषम है, तो डिस्क d खूंटी ( p mod 3 ) से peg ( ( p + 1 ) mod 3 ) तक चलती है ।+n(पीआधुनिक3)((पी+1)आधुनिक3)
  • यदि भी है, तो डिस्क है चाल खूंटी के रूप में ( - पी आधुनिक 3 ) खूंटी करने के लिए ( ( - पी - 1 ) आधुनिक 3 )+n(-पीआधुनिक3)((-पी-1)आधुनिक3)

हम आसानी से कम से कम महत्वपूर्ण बिट ऊपर से कश्मीर के द्विआधारी प्रतिनिधित्व के माध्यम से पाशन ( लॉग कश्मीर ) में और डी की गणना कर सकते हैं। बस।पीहे(लॉग)

अब मान लीजिए कि आप वास्तव में आउटपुट अनुक्रम में th बिट चाहते हैं , जहां मैं k के बजाय इनपुट का हिस्सा हूं । हर मोड़ बिट्स की एक ही नंबर का उपयोग कर इनकोडिंग है - विशेष रूप से, एलजी ( n + 1 ) डिस्क नंबर के लिए बिट्स, 2 के लिए बिट्स, और खूंटी से 2 के लिए बिट्स-खूंटी - तो हम सिर्फ गणना करने के लिए है k th चाल, जहां k = i / ( lg ( n + 1 ) + 4 ) kमैंमैंएलजी(n+1)22=मैं/(एलजी(n+1)+4), और फिर उपयुक्त बिट निकालें। (ध्यान दें कि इनपुट आकार में रैखिक है, क्योंकि हमें आउटपुट निर्धारित करने के लिए n जानने की आवश्यकता है ।)एलजी(n+1)+4n

दूसरी ओर, यदि हम डिस्क संख्याओं के लिए एक चर-लंबाई प्रतिनिधित्व का उपयोग कर रहे हैं, तो हम बाइनरी खोज द्वारा बहुपद समय में चाल संख्या पा सकते हैं । हमें शीर्ष मीटर डिस्क को स्थानांतरित करने के लिए सभी एम We k के लिए आवश्यक घुमावों की कुल संख्या जानने की आवश्यकता है , लेकिन यह पुनरावृत्ति M ( m ) = 2 M ( m - 1 ) + ( \ #bits) द्वारा रिकॉर्ड करने के लिए दिया जाता है डिस्क  m ) जिसे हम डायनेमिक प्रोग्रामिंग द्वारा बहुपद समय में मूल्यांकन कर सकते हैं। शेष विवरण पाठक के लिए एक उबाऊ अभ्यास के रूप में छोड़ दिए जाते हैं।

()=2(-1)+(चलती डिस्क रिकॉर्ड करने के लिए \ #bits )

(मुझे लगता है कि मैंने कम-से-कम एक-एक या समता त्रुटि की है, लेकिन उम्मीद है कि मुख्य विचार स्पष्ट है।)

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