कप स्टैकिंग रोबोट का कार्यक्रम


36

मुझे यकीन है कि सभी ने देखा है कि इससे पहले कि कपों को पिरामिड (और अन्य आकार) में ढेर किया जा सकता है:

           A    
        A A A   
 A     A A A A  
A A A A A A A A

हां, Aकप का प्रतिनिधित्व करने के लिए निश्चित रूप से एक पर्याप्त चरित्र है।

नए कप या तो जमीन पर, संरचना के दाईं ओर या दो आसन्न कप के ऊपर जोड़े जा सकते हैं। यहां उपरोक्त संरचना फिर से है, लेकिन नए कप के लिए सभी उपलब्ध स्पॉट _निम्न के साथ चिह्नित हैं :

         _ A         
        A A A        
 A _ _ A A A A       
A A A A A A A A _ _ _

मान लें कि हम एक रोबोट बनाना चाहते हैं जो इन कप स्टैक्स को इकट्ठा कर सके। रोबोट ऐसी संरचना में हेरफेर करने के दो सरल निर्देशों को समझेगा:

  • a: बाएं से दाएं पढ़ने के क्रम में पहले उपलब्ध स्थान में एक नया कप जोड़ें (यानी, ऊपर से नीचे तक पंक्तियों को स्कैन करें, बाएं से दाएं जब तक आप उपलब्ध स्थान नहीं पाते हैं, तब कप को वहां रखें)। उपरोक्त उदाहरण बन जाएगा:

             A A   
            A A A  
     A     A A A A 
    A A A A A A A A
    
  • r: बाएं से दाएं पढ़ने के क्रम में पहला कप निकालें। उपरोक्त उदाहरण बन जाएगा:

            A A A  
     A     A A A A 
    A A A A A A A A
    

यह पता चला है कि किसी भी संरचना का निर्माण केवल इन दो प्रचालनों के उपयोग से किया जा सकता है। उदाहरण के लिए

      A
 A   A A
A A A A A

निर्देशों के अनुक्रम के साथ बनाया जा सकता है

aaaaaaaaaaaarrrrraa

ऊपर बड़ा उदाहरण का उपयोग कर बनाया जा सकता है

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaarrrrrrrrrrrrrrrrrraaaaaaarr

यहाँ एक और भी बड़ा है:

    A
   A A                   A
  A A A     A   A       A A
 A A A A   A A A A     A A A A
A A A A A A A A A A   A A A A A

जिसके साथ बनाया जा सकता है

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrraaaaaaaaaaaaaaaaaaarrrrrrrrrrrrrrraaaaaaaaaaaaaarrrrrrrrrrraaaaaaaa

नोट: यदि सभी मौजूदा कपों के दाईं ओर कप रखने से पहले पुन: उपयोग किए जाने वाले निर्देशों को हटाकर जमीन पर धब्बे मुक्त किए जाते हैं । उदाहरण के लिए

aaaarrra

निकलेगा

A   A

नहीं

    A A

आप कप के एक अर्ध-अनंत पंक्ति के शीर्ष पर जमीन के रूप में सोच सकते हैं।

चुनौती

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

यहाँ नियमों के बारे में कुछ और जानकारी दी गई है:

  • आप मान सकते हैं कि इनपुट की निचली पंक्ति पर कोई अग्रणी स्थान नहीं हैं, इसलिए हमेशा उपयोग किए जाने वाले एक कप के लिए बाएं-सबसे ज़मीन का स्थान।
  • आप किसी भी अनुगामी रिक्त स्थान (कोई स्थान, एक स्थान, एक आयत को गद्देदार, एक एकल अनुगामी स्थान के साथ एक आयत में गद्देदार) मान सकते हैं।
  • आप वैकल्पिक रूप से इनपुट को एक एकल अनुगामी न्यूलाइन में समाप्त होने की उम्मीद कर सकते हैं।
  • आप Aऔर रिक्त स्थान (स्थान के बारे में नियम फिर अपने चुने हुए चरित्र में स्थानांतरित कर सकते हैं ) के बजाय किसी भी दो अलग-अलग मुद्रण योग्य ASCII वर्ण (0x20 से 0x7E, समावेशी) चुन सकते हैं ।
  • आपके आउटपुट में केवल दो अलग-अलग वर्णों का होना चाहिए जो संचालन का प्रतिनिधित्व करते हैं (आप की तुलना में अन्य वर्ण चुन सकते हैं aऔर r)। आप वैकल्पिक रूप से एक एकल अनुगामी न्यूलाइन प्रिंट कर सकते हैं।
  • आपका कोड उचित डेस्कटॉप पीसी पर एक मिनट से भी कम समय में नीचे दिए गए किसी भी परीक्षण के मामलों को हल करने में सक्षम होना चाहिए (यदि यह मेरा दो मिनट लेता है, तो मैं आपको संदेह का लाभ दूंगा, लेकिन अगर यह दस लेता है तो मैं जीत गया 't - मेरा मानना ​​है कि एक इष्टतम एल्गोरिथ्म संभव है जो उनमें से किसी को भी एक सेकंड से भी कम समय में हल करता है)।
  • आपको अलग-अलग परीक्षण मामलों के लिए अपने कोड का अनुकूलन नहीं करना चाहिए (उदाहरण के लिए उन्हें हार्डकोड करके)। यदि मुझे ऐसा करने में किसी पर संदेह है, तो मैं परीक्षण मामलों को बदलने का अधिकार सुरक्षित रखता हूं।

आप इस CJam स्क्रिप्ट को रिवर्स ऑपरेशन के लिए उपयोग कर सकते हैं : यह बिल्डिंग निर्देशों का एक तार लेगा और कप के परिणामस्वरूप स्टैक को प्रिंट करेगा। (स्निपेट को फिर से लिखने और इसे तेज करने के लिए डेनिस के लिए धन्यवाद।)

Sp3000 ने इसी उद्देश्य के लिए कृपया इस वैकल्पिक पायथन लिपि को भी प्रदान किया ।

परीक्षण के मामलों

प्रत्येक परीक्षण मामले के बाद, एल के उत्तर के अनुसार निर्देशों की इष्टतम संख्या का संकेत करने वाला एक नंबर होता है।

                                       A
                                      A A
                                     A A A
                                    A A A A
                                   A A A A A
                                  A A A A A A
                                 A A A A A A A
                                A A A A A A A A
                               A A A A A A A A A
                              A A A A A A A A A A
                             A A A A A A A A A A A
                            A A A A A A A A A A A A
                           A A A A A A A A A A A A A
                          A A A A A A A A A A A A A A
                         A A A A A A A A A A A A A A A
                        A A A A A A A A A A A A A A A A
                       A A A A A A A A A A A A A A A A A
                      A A A A A A A A A A A A A A A A A A
                     A A A A A A A A A A A A A A A A A A A
                    A A A A A A A A A A A A A A A A A A A A
                   A A A A A A A A A A A A A A A A A A A A A
                  A A A A A A A A A A A A A A A A A A A A A A
                 A A A A A A A A A A A A A A A A A A A A A A A
                A A A A A A A A A A A A A A A A A A A A A A A A
               A A A A A A A A A A A A A A A A A A A A A A A A A
              A A A A A A A A A A A A A A A A A A A A A A A A A A
             A A A A A A A A A A A A A A A A A A A A A A A A A A A
            A A A A A A A A A A A A A A A A A A A A A A A A A A A A
           A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
          A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
         A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
        A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
       A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
      A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
     A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
    A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
   A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
  A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
 A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A

820
                                             A
                                            A A
                                           A A A
                                          A A A A
                                         A A A A A
                                        A A A A A A
                                       A A A A A A A
                                      A A A A A A A A
                     A               A A A A A A A A A
                    A A             A A A A A A A A A A
                   A A A           A A A A A A A A A A A
                  A A A A         A A A A A A A A A A A A
         A       A A A A A       A A A A A A A A A A A A A
        A A     A A A A A A     A A A A A A A A A A A A A A
   A   A A A   A A A A A A A   A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A

1946

               A
              A A
             A A A
            A A A A
           A A A A A
          A A A A A A
         A A A A A A A
        A A A A A A A A
       A A A A A A A A A               A
      A A A A A A A A A A             A A
     A A A A A A A A A A A           A A A
    A A A A A A A A A A A A         A A A A
   A A A A A A A A A A A A A       A A A A A       A
  A A A A A A A A A A A A A A     A A A A A A     A A
 A A A A A A A A A A A A A A A   A A A A A A A   A A A   A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A

2252

                                                         A A
                                                      A A A A
                                                   A A A A A A
                                                A A A A A A A A
                                             A A A A A A A A A A
                                          A A A A A A A A A A A A
                                       A A A A A A A A A A A A A A
                                    A A A A A A A A A A A A A A A A
                                 A A A A A A A A A A A A A A A A A A
                              A A A A A A A A A A A A A A A A A A A A
                           A A A A A A A A A A A A A A A A A A A A A A
                        A A A A A A A A A A A A A A A A A A A A A A A A
                     A A A A A A A A A A A A A A A A A A A A A A A A A A
                  A A A A A A A A A A A A A A A A A A A A A A A A A A A A
               A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
            A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
         A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
      A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
   A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A

9958

                   A A
                  A A A A
                 A A A A A A
                A A A A A A A A
               A A A A A A A A A A
              A A A A A A A A A A A A
             A A A A A A A A A A A A A A
            A A A A A A A A A A A A A A A A
           A A A A A A A A A A A A A A A A A A
          A A A A A A A A A A A A A A A A A A A A
         A A A A A A A A A A A A A A A A A A A A A A
        A A A A A A A A A A A A A A A A A A A A A A A A
       A A A A A A A A A A A A A A A A A A A A A A A A A A
      A A A A A A A A A A A A A A A A A A A A A A A A A A A A
     A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
    A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
   A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
  A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
 A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A

5540

A   A   A   A   A   A   A   A   A   A   A   A   A   A   A   A   A   A   A   A

10280

 A   A   A   A   A   A   A   A   A   A   A   A   A   A   A   A   A   A   A   A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A

10320

   A       A       A       A       A       A       A       A       A       A
  A A     A A     A A     A A     A A     A A     A A     A A     A A     A A
 A A A   A A A   A A A   A A A   A A A   A A A   A A A   A A A   A A A   A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A

5794

              A
             A A
            A A A
           A A A A                                               A
          A A A A A                                             A A
         A A A A A A A                                         A A A
        A A A A A A A A               A                       A A A A
       A A A A A A A A A             A A             A       A A A A A   A
      A A A A A A A A A A           A A A           A A     A A A A A A A A
     A A A A A A A A A A A         A A A A         A A A   A A A A A A A A A
    A A A A A A A A A A A A       A A A A A       A A A A A A A A A A A A A A
 A A A A A A A A A A A A A A     A A A A A A     A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A   A A A A A A A   A A A A A A A A A A A A A A A A

3297

                                                   A A
                                                  A A A
                                                 A A A A
                                                A A A A A
                                               A A A A A A
                                              A A A A A A A
                                             A A A A A A A A
                                            A A A A A A A A A
                                           A A A A A A A A A A     A
                                          A A A A A A A A A A A   A A
                                       A A A A A A A A A A A A A A A A
                                      A A A A A A A A A A A A A A A A A
                                     A A A A A A A A A A A A A A A A A A
      A                             A A A A A A A A A A A A A A A A A A A
     A A                           A A A A A A A A A A A A A A A A A A A A
    A A A             A A         A A A A A A A A A A A A A A A A A A A A A
   A A A A           A A A       A A A A A A A A A A A A A A A A A A A A A A
  A A A A A         A A A A     A A A A A A A A A A A A A A A A A A A A A A A
 A A A A A A     A A A A A A   A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A   A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A

4081

                      A
                     A A       A                     A
                    A A A     A A                   A A A                 A
             A     A A A A   A A A A               A A A A     A         A A
  A         A A   A A A A A A A A A A         A   A A A A A   A A       A A A
 A A       A A A A A A A A A A A A A A       A A A A A A A A A A A     A A A A
A A A   A A A A A A A A A A A A A A A A     A A A A A A A A A A A A   A A A A A

4475

                                                             A              
      A           A                       A                 A A A   A       A
     A A         A A   A         A A     A A A   A         A A A A A A     A A
A   A A A A A   A A A A A   A   A A A   A A A A A A   A   A A A A A A A   A A A

5752

इसका मतलब है, सबसे अच्छा संभव स्कोर 64,515 निर्देश है।

जवाबों:


32

पायथन 2, 64,515

import sys

input = map(str.rstrip, sys.stdin.readlines())
width = (len(input[-1]) + 1) / 2
for i in range(len(input)):
    indent = len(input) - i - 1
    input[i] = [c != " " for c in input[i][indent::2]]
    input[i] += [False] * (width - indent - len(input[i]))
input = [[False] * n for n in range(width - len(input) + 1)] + input
working_area = [[False] * n for n in range(width + 1)]

def add():
    sys.stdout.write("a")
    for row in range(width + 1):
        for i in range(row):
            if not working_area[row][i] and (
                row == width or
                (working_area[row + 1][i] and working_area[row + 1][i + 1])
            ):
                working_area[row][i] = True
                return
def remove():
    sys.stdout.write("r")
    for row in range(width + 1):
        if True in working_area[row]:
            working_area[row][working_area[row].index(True)] = False
            return

for row in range(width, -1, -1):
    r = input[row]; R = working_area[row]
    for i in range(len(r) - 1, -1, -1):
        if r[i]:
            while not R[i]: add()
        else:
            while R[i]: remove()

परिणाम

परीक्षण 1 # 1 - 820 # 2 - 1,946 # 3 - 2,252 # 4 - 9958 # 5 - 5540 # 6 - 10,280 # 7 - 10,320 # 8 - 5794 # 9 - 3,297 # 10 - 4081 # 11 - 4475 # 12 - 5752परीक्षण २ परीक्षण ३
टेस्ट 4 परीक्षण ५ परीक्षण ६
टेस्ट 7 परीक्षण 8 टेस्ट 9
टेस्ट 10 टेस्ट 11 टेस्ट 12

कुल 64,515

व्याख्या

हम एक खाली "कार्य क्षेत्र" से शुरू करते हैं। हम रिवर्स रीडिंग ऑर्डर में इनपुट को स्कैन करते हैं , यानी राइट-टू-लेफ्ट और बॉटम-टू-टॉप। यदि वर्तमान स्थान पर इनपुट और कार्य क्षेत्र के बीच एक बेमेल है (यानी, एक कप इनपुट में मौजूद है, लेकिन कार्य क्षेत्र में नहीं है, या इसके विपरीत,) हम कार्य क्षेत्र के अनुसार कप जोड़ते हैं, या हटाते हैं। नियमों तक, बेमेल हल होने तक, जिस बिंदु पर हम अगले स्थान पर जारी रखते हैं।

यथार्थता

यह दिखाने के लिए कि यह विधि सही है, अर्थात, परिणामी अनुक्रम इनपुट संरचना उत्पन्न करता है, यह दिखाने के लिए पर्याप्त है कि हम कभी भी संशोधित नहीं हुए हैं (यानी, ऐसे स्थानों पर जो हमने पहले से विज़िट किए हैं) , हम सुनिश्चित करते हैं कि कार्य क्षेत्र इनपुट से मेल खाता है।) यह इस तथ्य का एक आसान परिणाम है कि हम रिवर्स ऑर्डर में काम करते हैं जिसमें कप जोड़े और हटाए जाते हैं:

  • स्थान l पर एक कप हमेशा एक स्थान पर एक कप से पहले हटा दिया जाएगा जो पढ़ने के क्रम में l सफल होता है , और इसलिए, कि स्कैन क्रम में l से पहले होता है , इसलिए हमारे द्वारा पहले से देखी गई एक कप को हटाने का कोई खतरा नहीं है।
  • इसी तरह, स्थान l पर एक कप हमेशा एक कप से पहले जोड़ा जाएगा जो इसे स्कैन क्रम में पहले देता है, यह देखते हुए कि इसके नीचे पहले से दो कप हैं (या यह सबसे नीचे है); हालाँकि, चूंकि हम पहले ही इन स्थानों का दौरा कर चुके हैं, और इसलिए आवश्यक कपों को जोड़ा है, और चूंकि, जैसा कि ऊपर उल्लेख किया गया है, बाद में उन कपों को हटाने का कोई खतरा नहीं है, यह स्थिति पूरी होती है, और इसलिए एक कप को जोड़ने का कोई खतरा नहीं है वह स्थान जिसे हम पहले ही देख चुके हैं।

optimality

ध्यान दें कि संरचना से एक कप जोड़ने, या हटाने का प्रभाव संरचना को उत्पन्न करने के लिए उपयोग किए जाने वाले संचालन के अनुक्रम पर निर्भर नहीं करता है, केवल उनके वर्तमान कॉन्फ़िगरेशन पर। परिणामस्वरूप, एक इष्टतम अनुक्रम S n = { s 1 , ..., s n } संचालन का दिया गया जो एक निश्चित संरचना उत्पन्न करता है, S n के प्रत्येक प्रारंभिक खंड , अर्थात, किसी भी अनुक्रम S m = { s 1 , ।। ।, एस एम }, जहां मीटरn , यह भी एक इष्टतम अनुक्रम है, इसी संरचना यह उत्पन्न करता है, वरना की तुलना में कम अनुक्रम होगा के लिए एस एन, एक ही संरचना का निर्माण।

हम दिखा सकते हैं कि हमारी विधि इष्टतम उत्पन्न करने वाले अनुक्रम की लंबाई पर प्रेरण द्वारा इष्टतम है: हमारी विधि स्पष्ट रूप से किसी भी संरचना के लिए एक इष्टतम अनुक्रम उत्पन्न करती है जिसका इष्टतम उत्पन्न करने वाला अनुक्रम खाली है (ऐसी केवल एक संरचना है - खाली संरचना।) मान लीजिए कि हमारी विधि सभी संरचनाओं के लिए एक इष्टतम अनुक्रम उत्पन्न करती है जिसका इष्टतम अनुक्रम (या अनुक्रम) लंबाई n का है , और एक इष्टतम अनुक्रम S n +1 द्वारा उत्पन्न संरचना पर विचार करें । हम यह दिखाना चाहते हैं कि इनपुट के रूप में S n +1 द्वारा निर्मित संरचना को देखते हुए , हमारी विधि समान अनुक्रम (या, कम से कम, समान लंबाई का एक क्रम) का उत्पादन करती है।

जैसा कि ऊपर उल्लेख किया गया है, एस एन भी एक इष्टतम अनुक्रम है, और इसलिए, परिकल्पना द्वारा, हमारी विधि इनपुट के रूप में एस एन द्वारा उत्पन्न संरचना को देखते हुए एक इष्टतम अनुक्रम पैदा करती है । मान लीजिए, सामान्यता की हानि के बिना, कि S n हमारे विधि द्वारा निर्मित अनुक्रम है (यदि ऐसा नहीं है, तो हम हमेशा S n +1 के पहले n तत्वों को उक्त अनुक्रम से बदल सकते हैं, और लंबाई n + का एक क्रम प्राप्त कर सकते हैं । 1 होगा, जिसकी संरचना उत्पन्न करता है।) चलो एल स्थान में पिछले आपरेशन द्वारा संशोधित किया एस एन +1 (यानी, एस एन +1 ), और जानेएस मीटर की प्रारंभिक खंड हो एस एन , हमारे कार्यक्रम का उत्पादन किया है होगा कि एक बार यह तक पहुँचता है एल (लेकिन प्रक्रिया से पहले एल )। ध्यान दें कि, चूंकि S n और S n +1 द्वारा निर्मित संरचनाएं उन सभी स्थानों में सहमत हैं जो पढ़ने के क्रम में l का अनुसरण करते हैं , S m इनपुट के समान संरचना या तो दिया गया है।

यदि s n +1 है a(अर्थात, कप जोड़), तो पढ़ने के क्रम में कोई भी स्थान पूर्ववर्ती l नहीं होना चाहिए , जहां S n द्वारा निर्मित संरचना में एक कप जोड़ा जा सकता है । नतीजतन, S n के बाद S m का पालन सभी को होना चाहिए a(क्योंकि rइसका मतलब होगा कि या तो एल से पहले एक खाली जगह है , या यह कि S n इष्टतम नहीं है।) जब हम l को प्रोसेस करने के लिए आएंगे , तो हमें इसकी आवश्यकता होगी। इससे पहले कि हम एल में एक कप जोड़ सकते हैं, वास्तव में n - m कप जोड़ें , इसलिए परिणामी अनुक्रम S होगामी , इसके बाद n - m + 1aतत्व है, जो S n +1 के बराबर है(इस बिंदु के बाद कोई बेमेल नहीं होगा, इसलिए यह पूर्ण अनुक्रम निर्मित है।)

इसी तरह, यदि s n +1 है r, तो S n द्वारा निर्मित संरचना में, रीडिंग ऑर्डर में, पूर्ववर्ती l पर कोई कप नहीं होना चाहिए । नतीजतन, एस एन निम्नलिखित एस एम के बाद सभी होना चाहिए । जब हम l प्रोसेस करने के लिए आते हैं , तो हमें l पर कप निकालने से पहले बिल्कुल n - m कप निकालने की आवश्यकता होगी , इसलिए परिणामस्वरूप अनुक्रम S m होगा , उसके बाद n - m + 1 तत्व, जो फिर से S n के बराबर होगा। +1rr

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

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

विशिष्टता

हम अपनी पद्धति की इष्टतमता का उपयोग यह दिखाने के लिए कर सकते हैं कि इष्टतम अनुक्रम वास्तव में, अद्वितीय हैं (अर्थात, कोई दो अलग-अलग इष्टतम अनुक्रम एक ही संरचना उत्पन्न नहीं करते हैं।) हम इष्टतम उत्पादक अनुक्रम के आकार पर फिर से, प्रेरण का उपयोग करते हैं: खाली अनुक्रम स्पष्ट रूप से खाली संरचना का अद्वितीय इष्टतम उत्पादक अनुक्रम है। मान लीजिए कि लंबाई n के सभी इष्टतम उत्पन्न करने वाले क्रम अद्वितीय हैं, और दो इष्टतम अनुक्रम S n +1 और T n +1 द्वारा उत्पन्न एक संरचना, generating पर विचार करें ।

स्मरण करो कि S n और T n स्वयं ही इष्टतम हैं, और इसलिए, परिकल्पना द्वारा, अद्वितीय हैं। चूँकि हमारी विधि इष्टतम अनुक्रम उत्पन्न करती है, इसलिए S n और T n को हमारी विधि द्वारा उत्पन्न के रूप में माना जा सकता है। चलो एल एस और एल टी स्थानों में पिछला संचालक द्वारा संशोधित किया एस एन +1 और टी एन +1 , क्रमशः, और लगता है, व्यापकता की हानि के बिना, कि एल एस इस प्रकार है, या इसके बराबर, एल टी आदेश पढ़ने में। चूंकि एस एन द्वारा उत्पन्न संरचनाएंऔर टी n , एल एस के बाद के सभी स्थानों में सहमत हैं , पढ़ने के क्रम में, हमारी विधि द्वारा निर्मित अनुक्रम, जिसे इनपुट के रूप में संरचना दी जाती है, एक बार यह एल एस तक पहुंच जाता है (लेकिन इसे संसाधित करने से पहले), दोनों के लिए समान है; इस क्रम को यू कहो

की अंतिम क्रिया के बाद से एस एन +1 संशोधित एल एस , अगर Σ पर एक कप है एल एस तो नहीं से पहले किसी भी रिक्ति होना चाहिए एल एस , और कम से अगर Σ एक कप नहीं है एल एस तो वहाँ किसी भी नहीं होना चाहिए कप एल एस से पहले , पढ़ने के क्रम में। इसलिए, शेष अनुक्रम the, U का अनुसरण करते हुए , एक ही निर्देश के बार-बार आने वाले अनुप्रयोग से मिलकर बनता है, जो कि L S पर एक कप की मौजूदगी या अनुपस्थिति द्वारा निर्धारित होता है (अन्यथा यह इष्टतम नहीं होगा)। दूसरे शब्दों में, S n +1 और T n +1समान हैं (वे दोनों यू से शुरू करते हैं , और दोहराया निर्देशों के उक्त अनुक्रम के साथ समाप्त होते हैं), अर्थात्, sequence का इष्टतम उत्पादन क्रम अद्वितीय है, और इसलिए, प्रेरण द्वारा, सभी इष्टतम उत्पन्न करने वाले अनुक्रम अद्वितीय हैं।

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