सबसे लंबे फाइबोनैचि विकल्प को खोजने के लिए एक भोले एल्गोरिदम की जटिलता


10

दो प्रतीकों और को देखते हुए , आइए -th फाइबोनैचि स्ट्रिंग को निम्नानुसार परिभाषित करें :b k

एफ()={अगर =0अगर =1एफ(-1)एफ(-2)अन्य

स्ट्रिंग संवृद्धि को दर्शाते हुए साथ ।

इस प्रकार हमारे पास होगा:

  • एफ(0)=
  • एफ(1)=
  • एफ(2)=एफ(1)एफ(0)=अब
  • एफ(3)=एफ(2)एफ(1)=ए.बी.ए.
  • F(4)=F(3)F(2)=abaab
  • ...

एक स्ट्रिंग को देखते हुए S द्वारा गठित n प्रतीकों, हम एक फाइबोनैचि किसी भी रूप में सबस्ट्रिंग परिभाषित सबस्ट्रिंग के S जो भी का एक उपयुक्त चुनाव के लिए एक फाइबोनैचि स्ट्रिंग है a और b

समस्या

एस को देखते हुए S, हम इसका सबसे लंबा फाइबोनैचि विकल्प ढूंढना चाहते हैं।

एक तुच्छ एल्गोरिथ्म

प्रत्येक स्थिति के लिए स्ट्रिंग के , मान लीजिए कि वहाँ शुरू होता है (यह है कि जाँच करने के लिए काफी है वें और मई के प्रतीकों अलग हैं)। यदि ऐसा है, तो जांचें कि क्या इसे तक बढ़ाया जा सकता है , तो , और इसी तरह। उसके बाद, स्थिति से फिर से शुरू करें । तब तक दोहराएं जब तक आप स्थिति तक नहीं पहुंच जाते ।S F ( 2 ) i ( i + 1 ) F ( 3 ) F ( 4 ) i + 1 niSF(2)i(i+1)एफ(3)एफ(4)मैं+1n

हमें प्रत्येक प्रतीक को कम से कम एक बार देखना चाहिए, इसलिए यह । इसमें केवल दो छोरों को शामिल किया गया है, इसलिए हम आगे कह सकते हैं कि यह ।हे ( एन 2 )Ω(n)हे(n2)

हालाँकि (कुछ अस्वाभाविक रूप से) यह भोली एल्गोरिथ्म सामान्य द्विघात एल्गोरिदम की तुलना में बहुत बेहतर प्रदर्शन करता है (यदि यह -th स्थिति पर बहुत काम करता है , तो यह अगले पदों में बहुत काम नहीं करेगा)।मैं

मैं इस एल्गोरिथ्म के निष्पादन समय के लिए तंग सीमा खोजने के लिए फाइबोनैचि गुणों का उपयोग कैसे कर सकता हूं?

जवाबों:


5

यह कहें कि किसी स्थिति में होता है यदि उस स्थिति में शुरू होने वाला सबस्ट्रिंग या उसके पूरक के साथ संगत है । कितने निकट हो सकते हैं? एक उदाहरण रूप में लें । यदि स्थिति पर होता है तो यह स्थिति या पर नहीं हो सकता है , लेकिन यह स्थिति में दिखाई दे सकता है । हम आपको यह बताने छोटी संख्या ऐसी है कि के दो घटनाओं होना की दूरी पर हो सकता है । आप प्रेरण द्वारा साबित कर सकते हैं कि हमारे पास हैएफ ( एन ) एफ ( एन ) एफ ( 4 ) = एक एक एक एफ ( 4 ) पी पी + 1 पी + 2 पी + 3 ( एन ) एफ ( ) n 4 ( n ) = | एफ ( एन - 1 ) |एफ(n) एफ(n)एफ(n)एफ(4)=एफ(4)पीपी+1पी+2पी+3(n)एफ()n4(n)=|एफ(n-1)|(उदाहरण के लिए, )।(4)=3

लंबाई की एक स्ट्रिंग को देखते हुए , प्रत्येक लिए उन पदों का समूह है, जिन पर होता है। हम आपकी प्रक्रिया के चलने के समय को ऊपरी तौर पर, जहाँ राशि सभी पर चलती है जैसे कि (कहना)। चूंकि की घटनाएं कम से कम अलग हो जाती हैं, हम देखते हैं कि चलने का समय आदेश से चूंकि फिबोनाची शब्दों की लंबाई तेजी से बढ़ जाती है, इसलिए । शेष अवधिएन पी ( एन ) एफ ( एन ) Σ n | पी ( एन ) | | एफ ( एन ) | एन | एफ ( एन - 1 ) | एन एफ ( एन ) | एफ ( एन - 1 ) | एन | एफ ( एन ) | ( एनएनnपी(n)एफ(n)Σn|पी(n)||एफ(n)|n|F(n1)|NF(n)|F(n1)|एन| एफ(एन)| =हे(एन)Σएनहे(एन)=हे(एनलॉगएन)के लिए लॉग इनएनहे(एनलॉगएन)

n|F(n)|(N|F(n1)|+1).
n|F(n)|=O(N)nO(N)=O(NlogN), क्योंकि इस राशि में कई शर्तें हैं। हम निष्कर्ष निकालते हैं कि चलने का समय ।logNO(NlogN)

इसके विपरीत, पर चलने का समय is , जैसा कि प्रेरण द्वारा सिद्ध किया जा सकता है। हम निष्कर्ष है कि सबसे खराब स्थिति लंबाई के तार पर समय चल है ।FnΩ(|Fn|log|Fn|)NΘ(NlogN)

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