परिष्कृत पुनरावर्ती एल्गोरिदम के उदाहरण


14

मैं एक दोस्त को प्रसिद्ध नियतात्मक रैखिक-समय चयन एल्गोरिथ्म (औसत दर्जे का एल्गोरिदम) का स्पष्टीकरण दे रहा था ।

इस एल्गोरिथ्म में पुनरावृत्ति (बहुत सरल होने के नाते) काफी परिष्कृत है। दो पुनरावर्ती कॉल हैं, जिनमें से प्रत्येक विभिन्न मापदंडों के साथ है।

मैं ऐसे दिलचस्प पुनरावर्ती एल्गोरिदम के अन्य उदाहरणों को खोजने की कोशिश कर रहा था, लेकिन कोई भी नहीं मिला। सभी पुनरावर्ती एल्गोरिदम जो मैं आ सकता था, वे या तो सरल पूंछ-पुनरावृत्ति या सरल विभाजन और जीत (जहां दोनों कॉल "समान" हैं)।

क्या आप परिष्कृत पुनरावृत्ति के कुछ उदाहरण दे सकते हैं?


एक भूलभुलैया या अधिक आम तौर पर एक चौड़ाई के साथ एक रेखांकन-पहली खोज के साथ एक दिलचस्प पुनरावृत्ति का एक सरल उदाहरण है।

विशेष रूप से, मुझे लगता है कि BFS मेरे प्रश्न के लिए योग्य नहीं है, क्योंकि यह आसानी से और स्वाभाविक रूप से एक कतार और थोड़ी देर के लूप का उपयोग करके लागू किया जा सकता है।
२१:५० पर एलेकट्रोंज

पहेलियों को सुलझाने और पार्स करने में क्या पीछे है? और रैंकिंग और गैर-एल्गोरिदम में गैर-मानक पुनरावर्ती भी हैं।
औली

संस्मरण एल्गोरिदम?
केव

2
@vzn: एक कतार एक ढेर की जगह नहीं ले सकती । बीएफएस एक विशेष मामला है।
राफेल

जवाबों:


15

मेरा पसंदीदा पुनरावृत्ति पहले से ही कर्कटरिक और सेडेल द्वारा उत्तल पतवारों की गणना के लिए आउटपुट-संवेदनशील एल्गोरिदम में दिखाई देता है , लेकिन बाद में दूसरों द्वारा दोहराया जाता है। चलो समय की उत्तल पतवार की गणना करने के निरूपित n विमान, जब उत्तल पतवार है में अंक कोने। (का मान तुच्छ बाध्य से पहले से ज्ञात नहीं है, एक तरफ n ।) किर्कपैट्रिक और साइडेल एल्गोरिथ्म पैदावार पुनरावृत्ति टी ( एन , एच ) = { हे ( एन ) अगर T(n,h)nhhhn जहांn1,एन23n/4औरएन1+n2=nऔरएच1+एच2=एच

T(n,h)={O(n)if n3 or h3T(n1,h1)+T(n2,h2)+O(n)otherwise
n1,n23n/4n1+n2=nh1+h2=h

समाधान । यह थोड़ा आश्चर्य की बात है, क्योंकि एच समान रूप से विभाजित नहीं किया जा रहा है। लेकिन वास्तव में, पुनरावृत्ति का सबसे खराब मामला तब होता है जब एच 1 और एच 2 दोनों एच / 2 के बारे में होते हैं ; अगर किसी तरह जादुई रूप से h 1 हमेशा स्थिर रहता है, तो समाधान T ( n , h ) = O ( n ) होगाT(n,h)=O(nlogh)hh1h2h/2h1T(n,h)=O(n)

मैं इस पुनरावृत्ति का एक संस्करण का इस्तेमाल किया मेरी पहली कम्प्यूटेशनल टोपोलॉजी कागजात में से एक : कहां

T(n,g)={O(n)if n3 or g=0T(n1,g1)+T(n2,g2)+O(min{n1,n2})otherwise
और जी 1 + जी 2 = जी । फिर से, समाधान( एन लॉग जी ) है , और सबसेखराबस्थिति तब होती है जब एन और जी दोनोंहमेशा समान रूप से विभाजित होते हैं।n1+n2=ng1+g2=gO(nlogg)ng

मुझे स्थिति के साथ समस्या है "अगर या h = O ( 1 ) "; ओ का मतलब यहाँ क्या है ? क्या विश्व स्तर पर बाध्य स्थिरांक हैं जो n और h को एक मामले में समाप्त होने के लिए कम करना है (और लेखक उन्हें देने के लिए परेशान नहीं करते हैं)। अगर मैं इसे सचमुच पढ़ (यानी व्याख्या दोनों क्योंकि हे ( 1 ) के रूप में एक ही तरीके से हे ( एन ) एक ही पंक्ति में) मामले दो कभी नहीं हो या हमेशा करता है (मैं भी यकीन नहीं है)। बहुत दूर तक ली गई धारणा का दुरुपयोग। n=O(1)h=O(1)OnhO(1)O(n)
राफेल

1
क्षमा करें, मैंने अपना उत्तर स्पष्ट करने के लिए संपादित किया है। अर्थ था "आपका पसंदीदा स्थिरांक"। मैंने अपने संशोधन में 3 का उपयोग किया है , लेकिन 10 10 100 ! साथ ही साथ काम किया होगा। O(1)31010100!
जेफई

आपने कम्प्यूटेशनल टोपोलॉजी के पेपर में उन आरेखों को कैसे बनाया?
user119264

12

अग्रवाल एट अल द्वारा "एक उत्तल बहुभुज के वोरोनोई आरेख की गणना के लिए मेरे पेपर " एक रेखीय समय एल्गोरिथ्म में मैंने जो पुनरावृत्ति की थी, वह भी काफी जटिल है।

यहां हमारे पेपर से एल्गोरिदम का वर्णन है। यदि यह विवरण से स्पष्ट नहीं है, तो चरण 3 में लाल बिंदुओं को क्रिमसन और गार्नेट अंक में विभाजित किया गया है। चरण 1, 3 और 6 सभी रैखिक समय हैं। हम यह भी जानते हैं कि यदि अंकों की कुल संख्या है, | B | अल्फा n , | आर | बीटा n , और | सी | γ n कुछ के लिए α , β , γ > 0n|B|αn|R|βn|C|γnα,β,γ>0

मैं आपको यह पता लगाने देता हूं कि संपूर्ण एल्गोरिथ्म को रैखिक समय क्यों लगता है।

  1. मूल बिंदुओं को नीले और लाल रंग में सेट करता है बी और आर।
  2. नीले बिंदुओं के उत्तल पतवार की पुन: गणना करें।
  3. नीले पतवार की संरचना का उपयोग करते हुए, क्रिमसन पॉइंट सी का चयन करें।
  4. नीले बिंदु पर एक समय में क्रिमसन बिंदुओं को जोड़ें।
  5. गार्नेट अंक जी के उत्तल पतवार की पुन: गणना करें।
  6. चरण 4 के विस्तारित नीले पतवार के साथ इस गार्नेट पतवार को मिलाएं।

एल्गोरिथ्म क्या बनाता है रैखिक प्रति बिंदु निरंतर लागत पर नीले पतवार को लाल बिंदुओं के एक निश्चित अंश को जोड़ने की क्षमता है। जोड़े गए बिंदु क्रिमसन पॉइंट हैं।

रिकर्सन इस प्रकार है जहाँ आप जानते हैं B | और | जी | लेकिन गारंटी है कि | B | + | जी | ( 1 - γ ) n

T(n)=T(|B|)+T(|G|)+O(n)
|B||G||B|+|G|(1γ)n

7

मध्ययुगीन खोज पुनरावृत्ति पर एक भिन्नता है जो कि अर्ध-दूरी के साथ खोज करने वाली श्रेणी से आती है। पुनरावृत्ति ही रूप की है

जो मध्यमा-खोजने की अवधि के समान है। इस पर अधिक जानकारी के लिए,जेफ एरिकसन के व्याख्यान नोट्सऔर विशेष रूप से धारा 4 को देखें।

T(n)=T(n/2)+T(n/4)+cn

1
मेरा उत्तर यहाँ है ( cs.stackexchange.com/questions/332/… ) अपने चलने के समय के लिए ठीक उसी तरह की पुनरावृत्ति होती है :)
एलेक्स दस ब्रिंक

6

आरएनए माध्यमिक संरचना की भविष्यवाणी में उपयोग किए जाने वाले शांत पुनरावर्ती एल्गोरिदम [1], [2] का एक समूह है। अपने स्वयं के उपकरणों के लिए छोड़ दिया, आरएनए का एक किनारा अपने साथ बेस जोड़े बनाएगा; [3] से एक अपेक्षाकृत सरल उदाहरण नेस्टेड की अधिकतम संख्या की गणना करता है, एक आरएनए स्ट्रिंग बनती है, जो अपने साथ बनेगी:

(मैं,जे)=एक्समैं<जे-एलमैंn{(मैं,-1)+(+1,जे-1)+1(मैं,जे-1)


  1. एम। ज़ुकेर, पी। स्टीगर (1981) द्वारा ऊष्मागतिकी और सहायक सूचनाओं का उपयोग करते हुए बड़े आरएनए अनुक्रमों के इष्टतम कंप्यूटर फोल्डिंग

  2. ई। रिवास, एसआर एडिन (1999) द्वारा स्यूडोकनॉट्स सहित शाही सेना संरचना भविष्यवाणी के लिए एक गतिशील प्रोग्रामिंग एल्गोरिथ्म

  3. आर। नुसिनोव, एबी जैकबसन (1980) द्वारा एकल-फंसे हुए आरएनए की माध्यमिक संरचना की भविष्यवाणी के लिए फास्ट एल्गोरिथ्म


संबंधित एक प्रस्तावित यहाँ काफी जटिल है क्योंकि यह तीन परस्पर निर्भर (डायनेमिक प्रोग्रामिंग) पुनरावर्ती को स्पोर्ट करता है।
राफेल

4

मुझे अभी भी समझ में नहीं आया कि "परिष्कृत पुनरावृत्ति" से आपका क्या मतलब है। उदाहरण के लिए, FFT एल्गोरिथ्म में पुनरावृत्ति चरण परिष्कृत है!

लेकिन यदि आप अधिक जटिल पुनरावृत्ति की तलाश करना चाहते हैं , तो पारस्परिक पुनरावृत्ति एक संभावित उत्तर हो सकता है। फंक्शनल प्रोग्रामिंग लैंग्वेज के साथ काम करने पर म्युचुअल रिकर्सन उपयोगी है । पारस्परिक पुनरावृत्ति पुनरावर्ती वंश पार्सर्स की प्रमुख विशेषता है ।


ठीक है, एफएफटी (कोलेलि-तुकी का सबसे सरल रूप) में पुनरावृत्ति "मानक" विभाजन और जीत है। यह इसकी O (nlogn) जटिलता से स्पष्ट है। 2 पुनरावर्ती कॉल (1 के लिए 1, बाधाओं के लिए 1) कुछ हद तक "समान" हैं।
एलीट्रोनाज

3

मेरे सिर के शीर्ष पर, मैककार्थी 91 फ़ंक्शन

F(N) = 
    n - 100    if n > 100
    F(F(n+11)) if n <= 100

और एकरमैन फंक्शन

A(m, n) = 
    n + 1             if m = 0
    A(m-1, 1)         if m > 0 and n = 0
    A(m-1, A(m, n-1)) if m > 0 and n > 0

ऑफबीट के रूप में गिना जा सकता है, यद्यपि खिलौना-ईश, पुनरावर्ती कार्य।

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