Sayı dizileri için nüks ilişkilerini çözme veya yaklaşık değerleme


89

Bilgisayar bilimlerinde, yinelemeli olarak tanımlanmış bir sayı dizisi için kapalı bir form bulan tekrarlama ilişkilerini çözmemiz gerekir . Çalışma süreleri düşünüldüğünde, çoğunlukla dizinin asimptotik büyümesiyle ilgileniyoruz .

Örnekler

  1. Aşağı doğru adım bir kuyruk-özyinelemeli fonksiyon zamanı dan olan vücut zaman alır :0nf(n)

    T(0)=0T(n+1)=T(n)+f(n)

  2. Fibonaci serisi :

    F0=0F1=1Fn+2=Fn+Fn+1

  3. Sayısı Dyck kelime ile parantez çiftleri:n

    C0=1Cn+1=i=0nCiCni

  4. uzunluk listelerinde mergesort çalışma zamanı tekrarı :n

    T(1)=T(0)=0T(n)=T(n/2)+T(n/2)+n1

Nüks ilişkilerini çözme yöntemleri nelerdir? Arıyoruz

  • genel yöntemler ve
  • önemli bir alt sınıf için yöntemler

Hem de

  • hassas çözümler üreten yöntemler ve
  • asimptotik büyümeyi sağlayan (sınırlayan) yöntemler.

Bunun bir referans soru olması gerekiyordu. Lütfen yöntem başına bir cevap gönderin ve genel bir tanımın yanı sıra açıklayıcı bir örnek de verin.


9
Bu notlar yardımcı olabilir. (Ama hayır, onları cevaplara
çevirmeyeceğim

Yanıtlar:


35

Tam Tarihin Sınırlı Tarihe Dönüştürülmesi

Bu, herhangi bir tamsayıdaki değerin tüm küçük tamsayılardaki değerlere bağlı olduğu durumlarda nüksetmelerin çözümünde ilk adımdır . Örneğin, yinelemenin olduğunu düşünün randomize quicksort analizinde . (Burada, , rastgele seçilen pivotun sırasıdır.) Herhangi bir tamsayısı için, değeri, olan tüm bağlıdır . Bu formun yinelenmelerine tam tarih yinelemeleri denir .knT(n)T(k)k<n

T(n)=n+1nk=1n(T(k1)+T(nk))
knT(n)T(k)k<n

Bu yinelemeyi çözmek için, sınırlı bir geçmiş yinelemesine dönüştürebiliriz, burada yalnızca sabit bir önceki değer sayısına bağlıdır. Ancak, ilk olarak, ortak terimleri toplamak ve sinir bozucu fraksiyonları ortadan kaldırmak için nüksü biraz kolaylaştırmaya yardımcı olur. Şimdi sınırlı geçmiş yinelemeye dönüştürmek için , , çıkarma ve taşma terimlerinin tekrarını yazıyoruz: n T ( n )T(n) t(n-1) ( n - 1 ) , T ( n - 1 )

nT(n)=n2+2k=1n1T(k)
T(n1)
(n1)T(n1)=(n1)2+2k=1n2T(k)nT(n)(n1)T(n1)=(2n1)+2T(n1)nT(n)=(2n1)+(n+1)T(n1)T(n)n+1=2n1n(n+1)+T(n1)n

Şimdi, eğer tanımlarsak ve fraksiyonunu daha basit asimptotik form , çok daha basit bir tekrarlama elde ettik. Bir toplama içine bu nüks genişletilmesi hemen bize veren , olan inci harmonik sayısı . sonucuna vardık .2 n - 1t(n)=T(n)/(n+1) Θ(1/n)t(n)=Θ(1/n)+t(n-1). t(n)=Θ(Hn)=Θ(logn)Hnn2n1n(n+1)Θ(1/n)

t(n)=Θ(1/n)+t(n1).
t(n)=Θ(Hn)=Θ(logn)HnnT(n)=Θ(nlogn)

1
Eğer için kesin bir çözüm istiyorsanız , bu da zor değil (burada), biraz sıkıcıysa; elde ederiz . Aslında, beni bu yüzden tam değişkenini tercih ediyorum. Landau terimlerinin sinir bozucu toplamları . T ( n ) = 2 ( n + 1 ) H n + ( T ( 0 ) - 3 ) n + T ( 0 )TT(n)=2(n+1)Hn+(T(0)3)n+T(0)i=1nΘ(1/i)=Θ(Hn)
Raphael

Aslında, (indüktif olarak) , burada ) olduğunu gözlemlemek yeterlidir. . Aslında, bu numarayı daha başlangıçta kullandım, bir diziyi basit ile ayırmak için zamanını değiştirdiğimde . Bu tamamen standart bir gösterimdir. t ( n ) = 1 / n + t ( n - 1 ) Θ ( n ) nT(n)/(n+1)=Θ(t(n))t(n)=1/n+t(n1)Θ(n)n
JeffE

28

İşlev Oluşturma

Her sayı dizisi üretici işlevine karşılık gelir . Genellikle katsayıları (seri elemanları) toparlamak için tekrardan rahatça elde edilebilir.

Bu cevap, tam bir örnek ile genel ansatz, özel bir durum için bir kısayol ve asimptotik (bu şekilde kesin sonuç alınamamış olsa bile) bu yöntemi kullanma hakkında bazı notlar içermektedir.

Yöntem

Let sayı dizisidir. Sonra resmi güç serileri(an)nN

A(z)=n=0anzn

olan sıradan üreten fonksiyon arasında ¹ . serisinin genişlemesindeki katsayılar diziye eşittir, yani . Örneğin, ünlü Katalanca sayılar in normal üretici işlevi A ( z ) [ z n ] A ( z ) = a n C n(an)nNA(z)[zn]A(z)=an Cn

C(z)=114z2z .

tanımı aynı zamanda bir nüksü çözmek için bizim ansatz'ımızdır. Bu, doğrusal yinelenmeler için en iyisidir, bu nedenle sadelik uğruna formun tekrarlandığını varsayalımA

a0=c0ak1=ck1an=f(n)+i=1kbiani,nk

Bazı sabit için ve her bir fonksiyonu bağımsız . Şimdi ansatz'a hem çapaları hem de özyinelemeli kısmı ekledik, f ( n ) : NK bir ib1,,bkRf(n):NNai

A(z)=n=0anzn=c0z0+c1z1++ck1zk1+n=k[f(n)+(i=1kbiani)]zn

Toplam manipülasyon mekaniği, formal güç serilerinin özellikleri ve bilinen kimlikleri ² kullanılarak, en son sağ taraf tipik olarak cinsinden kapalı formlara getirilmelidir . Oluşan denklem (genellikle) için çözülebilir . Sonucun seri genişlemesi (kolayca elde edilebilir, bilinir veya başka türlü yaklaşılabilir) esasen çözümdür.A ( z )A(z)A(z)

Wilf'in kitabında [3] ve GKP'de [4] iyi tanıtımlar bulunabilir. Gelişmiş malzeme Flajolet ve Sedgewick [5] tarafından toplanmıştır.

Örnek

Düşünmek

a0=1a1=2an=5n+3an12an2,n>1

Biz hesaplıyoruz:

A(z)=n=0anzn=1+2z+n=2[3an12an2+5n]zn=1+2z+3n=2an1zn2n=2an2zn+5n=2nzn=1+2z+3zn=1anzn2z2n=0anzn+5n=2nzn=1+2z+3z(A(z)a0)2z2A(z)+5(z(1z)2z)=16z+(3z2z2)A(z)+5z(1z)2

Bu çözer

A(z)=13z+13z26z3(12z)(1z)3=1612z51z5(1z)25(1z)3=16n=02nzn5n=0zn5n=0(n+1)zn5n=0(n+1)(n+2)2zn

Şimdi nihayet okuyabiliriz

an=162n55(n+1)52(n+1)(n+2)=2n+452n2252n15

Alıştıktan sonra , bunun tamamen mekanik olduğunu fark edersiniz. Aslında, bilgisayar cebiri tüm bunları sizin için birçok durumda yapabilir. İşin yararı, tekrarlama daha karmaşık olsa bile, mekanik hala kalır (az ya da çok). Daha ilgili, daha az mekanik bir örnek için buraya bakın .

Ayrıca, genel tekniklerin ayrıca, aranan nesnelerin karmaşık sayılar veya hatta polinomlar olması durumunda da işe yaradığını unutmayın.

Kısayol

Doğrusal ve homojen yinelenmeler için, yani formdaki gibi

a0=c0ak1=ck1an=i=1kbiani,nk

Yukarıdakiler her seferinde aynı şekilde devam eder. Yukarıdaki hesaplamayı sembolik olarak yaparak, aşağıdaki lemmayı bulabiliriz . İzin Vermek

zkb1zk1b2zk2bk

olması karakteristik polynomal (tekrarlama). Ayrıca, , sırasıyla olan bahsedilen polinomun (ikili olarak farklı) sıfırlarını . Daha sonra, istenen katsayı,r ıλ1,,λlri

an=i=1lj=1ribi,jnj1λin

bilinmeyen ile . Karakteristik polinom derecesi vardır olarak , tam olarak orada yani (kompleks) sıfırlar toplamı . Bu nedenle, eksik katsayılar, lineer denklem sisteminin, yukarıdaki formülü herhangi bir ile (örneğin, çapalar) eşitleyerek elde edilen denklemleriyle çözülmesiyle belirlenebilir . k k r i k k k a nbi,jkkrikkkan

asimptotikler

için kapalı bir forma ulaşmak genellikle kolay kısımdır. Üretme işlevlerinde ifade etmenin, (örnekte olduğu gibi) katsayılarının hızla zorlaştığını biliyoruz. Örnekler yukarıdan ve soruda bahsedilen Dyck kelimelerinin sayısı için olanlardan biridir.C ( z )A(z)C(z)

Kişi, katsayılara asimptotik elde etmek için karmaşık analiz makinelerini, özellikle tekillik analizini kullanabilir; buzzwords, Darboux'un metodunu ve eyer-nokta metodunu içerir. Bunlar kalıntı teoremi ve Cauchy'nin integral formülüne dayanır . Detaylar için [6] 'ya bakınız.


  1. Benzer şeyleri üstel , Dirichlet ve diğer bazı üretken fonksiyonlarla yapabilirsiniz. Hangisi en iyi sonuç verir, eldeki diziye ve özellikle gerekli kapalı formları bulup bulmamaya bağlıdır.
  2. Örneğin, TCS Cheat Sheet veya [3] 'den.
  3. generatingfunctionology by H. Wilf (1994, 2nd ed.) - bedava indirebilirsiniz.
  4. RL Graham, DE Knuth ve O. Patashnik tarafından Beton Matematiği (1994, 2. baskı.)
  5. Algoritmaların R. Sedgewick ve P. Flajolet tarafından Analizi'ne Giriş (2. baskı, 2013) - ücretsiz indirilebilir
  6. Analitik Kombinatorik P. Flajolet ve R. Sedgewick (2009) - ücretsiz indirilebilir

21

Master Teoremi

Ana teoremi sözde çözeltileri için asimptotikler verir ele bölmek ve bu (yerine sabitler uzak kesme) orantılı parçalar içine parametre bölmek şekildedir, yineleme. Bunlar tipik olarak analiz yaparken (özyinelemeli) bölme ve ele geçirme algoritmalarını, dolayısıyla adı alırken ortaya çıkar. Teorem popülerdir çünkü uygulanması genellikle inanılmaz derecede kolaydır. Öte yandan, yalnızca aşağıdaki formun tekrarlanmasına uygulanabilir:

T(n)=aT(nb)+f(n)

ile . Üç vaka vara1,b>1

  1. fO(nlogb(a)ε)

    bazı ;ε>0

  2. fΘ(nlogbalogkn) ,

    bazı ;k0

  3. fΩ(nlogb(a)+ε)

    bazı veε>0

    af(nb)cf(n)

    Bazı ve .n c<1n

bu asimptotik anlamına gelir

  1. TΘ(nlogba) ,
  2. TΘ(nlogbalogk+1n) ve
  3. TΘ(f) ,

sırasıyla. Temel durumların burada belirtilmediğini veya kullanılmadığını unutmayın; Bu sadece asemptotik davranışı araştırdığımızı düşünürsek mantıklı . Sessizce bazı sabitler olduklarını varsayıyoruz (başka ne olabilirler. Görmediğimiz sabitlerin önemi yoktur, hepsi kaybolur .Θ

Örnekler

  1. Yinelenme düşünün

    T(n)=4T(n3)+n .

    İle ve - unutmayın o durumda bir bkz ile uygulanır . Bu nedenle, .b = 3 günlük b bir 1.26 ε = 0.25 , T Θ ( n log 3 4 ) = Θ ( n 1.261 ... )f(n)=n,a=4b=3logba1.26ε=0.25TΘ(nlog34)=Θ(n1.261)

  2. Yinelenme düşünün

    T(n)=2T(n/2)+n .

    İle ve - dikkat iki ile geçerli olduğunu durumda görmek . Bu nedenle, .b = 2 log b a = 1 k = 0 T Θ ( n log n )f(n)=n,a=2b=2logba=1k=0TΘ(nlogn)

  3. Yinelenme düşünün

    T(n)=3T(n4)+n .

    İle ve - unutmayın o durumda üç bkz ile uygulanır ve . Bu nedenle, .b = 4 günlük b bir 0.79 ε = 0.2 c = 1 T İçeride ISTV melerin RWMAIWi'nin ( n )f(n)=n,a=3b=4logba0.79ε=0.2c=1TΘ(n)

  4. Yinelenme düşünün

    T(n)=16T(n4)+n!

    Burada , ve- birçok standart örnekte polinom olacaktır , ancak bu bir kural değildir. Biz ve dava üç tekrar geçerlidir. Bu durumda, herhangi bir ve olarak seçebiliriz tümü için . Dolayısıyla .b = 4 f ( n ) = n ! f günlüğü b a = 2a=16b=4f(n)=n!flogba=2c > 0 n ! Ω ( n k ) k T Θ ( n ! )εc>0n!Ω(nk)kTΘ(n!)

daha fazla okuma

  • Master teoreminin hiçbir vakasının geçerli olmaması mümkündür. Örneğin, alt sorunlar eşit boyutta olmayabilir veya daha karmaşık bir forma sahip olabilir. Master teoreminin bazı uzantıları vardır, örneğin Akra-Bazzi [1] veya Roura [2]. Kesikli nüksler için çalışan bir versiyon bile vardır (yani özyinelemeli parametrelerde döşemeler ve tavanlar kullanılır) ve daha net sonuçlar sağlar [3].

  • Genellikle, Master teoremini uygulamadan önce, şekillendirdiğiniz gerçek yineleme ilişkisine masaj yapmanız gerekir. Asimptotiği koruyan yaygın dönüşümler arasında olduğu varsayılarak, düşme zemin ve tavanlar sayılabilir . Burada bir şeyleri kırmamaya özen gösterin; Ayrıntılar için [4] bölüm 4.6 ve bu soruya bakın.n=bk


  1. M. Akra ve L. Bazzi (1998) tarafından Lineer Yineleme Denklemlerinin Çözümü Üzerine
  2. Bölünmüş ve fethedilen nüksler için geliştirilmiş bir ana teorem, S. Roura (1997) tarafından
    geliştirilmiştir. Diğer gelişmiş ana teoremleri ifade eder.
  3. Kesikli bölünme ve yinelemeleri fethetmek için master teoremi M. Drmota ve W. Szpankowski (2011) tarafından yapılmıştır.
  4. Algoritma giriş Cormen ve diğ. (2009, 3. baskı)

Bu aptalca bir soru olabilir ama çoğu zaman zihinsel modeli a'nın b'ye eşit olmadığı durumlarda tutamıyorum, nedenini bilmiyorum ama sezgiyle her zaman ikisinin de her zaman aynı olması gerektiğini hissediyorum, sorunu bir yerde bölüyoruz. iki eşit (neredeyse) yarı ve her biri n / 2 örneği. Ayrıca, eğer algoritmayı üç eşit parçaya bölersek, girişler yine a ve b'yi eşit yapan üç eşit parçaya bölünmelidir. Bu yanlış sezgiyi nasıl kırabilirim?
CodeYogi

17

Tahmin ve Kanıtla

Ya da " " tekniği olarak adlandırmayı seviyorum . Her türlü kimliğe uygulanabilir. Fikir basit:

Çözümü tahmin edin ve doğruluğunu ispatlayın.

Bu, popüler bir yöntemdir, tartışmasızdır, çünkü genellikle biraz yaratıcılık ve / veya deneyim gerektirir (gösteriş yapmak için iyidir) ancak az sayıda mekanik (zarif görünüyor). Buradaki sanat iyi, eğitimli tahminler yapmak; ispat (bizim durumumuzda) genellikle az çok basit bir indüksiyondur.

Nükslere uygulandığında, "tahmin etme" tipik olarak

  • genişleyen birkaç kez tekrarını,
  • endam çapa ve
  • Ara için kalıbı tahmin etme ( ).

Basit bir örnek

s0=s1=s2=1sn=5sn3+6n2

tanımını birkaç kez genişletelim :sn

sn=5sn3+6=5(5sn6+6)+6=5(5(5sn9+6)+6)+6 =5(5(5(51n÷3 times+6)+6)+6)+6n÷3 times

Burada, kalıbın tespit edilmesi kolaydır ve bizi hak talebine yönlendirir:

sn=5n3+6i=0n315i=525n364

Şimdi kimliği indüksiyonla kanıtlıyoruz. For , biz ilgili bir değere takarak doğruluğunu kurabilir. Kimliğini varsayarsak herkes için geçerlidir keyfi ancak sabit için şu hesaplamayın n n 3n{0,1,2}nnn3

sn+3=5sn+6=5(525n364)+6=525n3+164=525n+3364

bu indüksiyon gücü ile kimliği kanıtlar.

Bunu daha fazla ilgili yinelemelerde kullanmaya çalışırsanız, bu yöntemin en önemli dezavantajıyla hızlı bir şekilde karşılaşırsınız: kalıbı görmek zor olabilir veya hoş bir kapalı forma dönüştürmek zor olabilir .

asimptotikler

Bu yöntemi asimptotik için de kullanmak mümkündür. Bunu birlikte uyanık olun sabitlerini tahmin etmek zorunda olmalı olarak Landau semboller için bir sınır oluşturur sabiti herkes için sabit faktör indüksiyon sırasında değiştiremezsiniz yani.n

Örneğin, ¹ durumu için basitleştirilmiş Mergesort çalışma zamanı tekrarını düşünün :n=2k

T(1)=T(0)=0T(n)=2T(n/2)+n1n1

Bu tahmin olduğu sabit ile , yani . Bunu üzerinde indüksiyon yaparak kanıtlıyoruz ; endüktif adım şöyle görünür:c = 1 T ( n ) n log n kT(n)O(nlogn)c=1T(n)nlognk

T(n)=2T(n/2)+n12n2logn2+n1=nlognnlog2+n1<nlogn


  1. Düşmeyen doğal diziler için, her sonsuz dizinin orijinal dizilimiyle aynı asimptotik büyümeye sahip olması gerekir.

15

Akra-Bazzi yöntemi

Akra-Bazzi yöntemi : formunun tekrar eden asimptotikler veren Bu, olağan bölünme-fethetme yinelemelerini kapsar, aynı zamanda bölünmenin eşit olmadığı durumları da kapsar. "Fudge terimleri" , örneğin kesin olarak ortaya bölümlere hitap edebilir. Uygulanabilirlik koşulları: h i

T(x)=1ikaiT(bix+hi(x))+g(x)for xx0
hi(x)
  • Nüksün devam etmesi için yeterli temel vaka var
  • ve tüm sabitlerdirb benaibi
  • Hepsi için ,iai>0
  • Tüm ,i0<bi<1
  • c x |g(x)|=O(xc) bir sabit için olarakcx
  • Tüm ,| h i ( x ) | = 0 ( x / ( log x ) 2 )i|hi(x)|=O(x/(logx)2)
  • x0 bir sabittir

Not , ve testere dişi fonksiyonu değiştirilmesi, 0 ve 1 arasında olduğu (veya olarak) koşulları .{ u } = u - u b ı x b ı xbix=bix{bix}{u}=uubixh ibixhi

bulun : Ardından in gibi asimptotik davranışı şöyle verilir: ile "kadar büyük", yani orada böylece tüm için .1 i k a i b p i = 1 T ( x ) x T ( x ) = Θ ( x p ( 1 + x x 1 g ( u )p

1ikaibip=1
T(x)xx1k1>0g(x/2)k1g(x)x
T(x)=Θ(xp(1+x1xg(u)up+1du))
x1k1>0
(2)g(x/2)k1g(x)
x>x1

Örnek A

Örnek olarak, için özyinelemeyi seçin ; burada : Koşullar yerine , : Şansın alacağı gibi, . Böylece biz var: T ( 0 ) = T ( 1 ) = T ( 2 ) = T ( 3 ) = T ( 4 ) = 17 T ( n ) = 9 , T ( N / 5 ) + T ( 4 N / 5 ) + 3 n log nn5T(0)=T(1)=T(2)=T(3)=T(4)=17

T(n)=9T(n/5)+T(4n/5)+3nlogn
9 (pp=2, T(n)=Θ(n-2(1+ n 3 3
9(15)p+(45)p=1
p=2
T(n)=Θ(n2(1+3n3uloguu3du))=Θ(n2)

ile beri biz yerine getirmek hepsi için . İntegral , alt sınır olarak gibi diğer sabitleri kullansak bile, yakınsadığı için bunları kullanmanın yasal olduğunu; fark kaybolur .(2)x31k112(1log2log3)(2)x31Θ

Örnek B

Başka bir örnek için aşağıdaki gibidir : Elimizde , kontrol edin. Tek bir , olduğunu kontrol . Varsayarsak gerçekten ve / veya , zımni da göz atın. Yani ihtiyacımız var: Böylece , ve: , T ( n ) = 4 , T ( n / 2 ) + , n 2 / lg , n g ( n ) = n- 2 / ln n = O ( n, 2 ) bir 1 = 4 b 1 = 1 / 2 N / 2 n / 2 n / 2 saatn2

T(n)=4T(n/2)+n2/lgn
g(n)=n2/lnn=O(n2)a1=4b1=1/2n/2n/2n/2hi(n)
a1b1p=4(1/2)p=1
p=2
T(n)=Θ(n2(1+2nu2duu3lnu))=Θ(n2(1+2nduulnu))=Θ(n2lnlnn)
Yukarıdakilere benzer bir numara uyguluyoruz İntegralin alt sınırı, sadece kullanırız çünkü integral için birleşmez .21

( Cebir ile maxima yardımı minnetle kabul edilir)


1
Orijinal kağıdı kontrol ettim. İntegralin alt sınırında teknik kısıtlamaları vardır; Versiyonunuz (Mehlhorn tarafından yapılan ankete atıfta bulunuluyor mu?) Açıkça integralin birleşmesini gerektirir. Orijinal durumun kontrolünün daha kolay olduğunu düşündüğüm için, ifadeyi ve örnekleri buna göre değiştirdim, lütfen kontrol edin.
Raphael

1
Ayrıca, orijinal kağıt, ile birlikte sürüm ; Bu Leighton'un el yazmasından alınmıştır? Bunun için hakemli bir referansınız var mı? 1998 tarihli makalede Akra ve Bazzi tarafından verilen sürüme geçmeli miyiz? hi
Raphael

1
Teoremde tutarsızlık gibi görünen her şeyi karıştırdım . Belki cevabı biliyorsundur?
Raphael

11

Toplamı

Sıklıkla biri monoton olduğu formunun tekrarı ile karşılaşır . Bu durumda, genişletebilir ve bu yüzden, bir başlangıç değeri verilir tahmin etmek için, biz toplamı tahmin etmek gerekir .

T(n)=T(n1)+f(n),
f(n)
T(n)=T(c)+m=c+1nf(m),
T(c)T(n)f(c+1)++f(m)

Azalmayanf(n)

Tüm monoton bir azalmayan aşikar sınırları vardır Bu bağlar, bazı işlevler için sıkı bu anlamda en mümkündür: sabit işlevleri için üst sınır ve bir basamak fonksiyonları (alt sınır için ve için ). Ancak, çoğu durumda bu tahminler pek yardımcı değildir. Örneğin, olduğunda, alt sınır ve üst sınır , bu nedenle birbirlerinden oldukça uzaktırlar.f(n)

f(n)m=c+1nf(m)(nc)f(n).
f(m)=1mnf(m)=0m<nf(m)=mn(nc)n

bütünleşme

Bütünleştirme ile daha iyi bir tahmin verilir: İçin , bu sırada şartlar alt Özetle doğru değerini verir: Ne zaman biz açıkça toplamını hesaplayabilirsiniz, ancak birçok durumda açık hesaplama zordur. Örneğin, arasında İlkel olan ve böylece

cnf(x)dxm=c+1nf(m)c+1n+1f(x)dx.
f(m)=m
12n212c2m=c+1nm12(n+1)212(c+1)2.
f(m)=mf(m)=mlogmf(1/2)x2logx(1/4)x2
m=c+1nmlogm=12n2logn±Θ(n2).

Euler-Maclaurin formülünün daha iyi tahminlerini verir. Bu formül, örneğin Stirling'in formülünün güçlü biçimlerini kanıtlamak için, toplamı log'unu tahmin ederek kullanılabilir .logn!=m=1nlogm

Sigara artanf(n)

Bazı durumlarda , artmayan monotondur. Önemsiz tahminler ve integral tahminler Bir örnek olarak, için kullanılarak elde ettiğimiz f(n)

f(1)m=c+1nf(m)(nc)f(1),
c+1n+1f(x)dxm=c+1nf(m)cnf(x)dx.
f(m)=1/mf(m)=logm
m=c+1n1m=logn±Θ(1).

Bu cevap, nükslerin çözülmesiyle daha az ilgilenir, daha ziyade, nükslerin çözülmesinde yararlı olabilir ); teknik Riemann toplamlarının ikilidir . Aynı zamanda, örneğin, diğer formları ile birlikte çalışması gerekir sabiti ? T(nd)d
Raphael

Doğru, de bu şekilde çözülebilir. T(n)=cT(nd)+f(n)
Yuval Filmus

9

Sedgewick ve Flajolet, analitik kombinatorikte kapsamlı bir çalışma gerçekleştirmiştir ; bu, nükslerin üretici işlevler ve karmaşık analizlerin bir kombinasyonu kullanılarak asimptotik olarak çözülmesine olanak sağlar. Çalışmaları birçok yinelemenin otomatik olarak çözülmesine izin verir ve bazı bilgisayar cebir sistemlerinde uygulanmıştır.

Konuyla ilgili bu ders kitabı Flajolet ve Sedgewick tarafından yazılmıştır ve mükemmel bir referanstır. Analizi Algoritma uygulamalar yönelikse bir miktar daha basit fuar, olan bu metin Sedgewick'e ve Flajolet tarafından.

Bu yardımcı olur umarım!


4
Bu güzel bir referans, ancak yöntemleri erişilebilir bir şekilde toplamak istiyoruz. Belirli bir yöntemi ayrıntılı olarak sunabilir misiniz?
Raphael

9

Bunun gibi garip bir tekrarlama ile karşılaştığınız zamanlar olabilir: Benim gibiyseniz, Master Teoremini kullanamayacağınızı fark edersiniz ve sonra düşünebilirsiniz, " hmmm ... belki bir yineleme ağacı analizi işe yarayabilir. " Öyleyse ağacın iğrenç bir şekilde hızlı büyümeye başladığını fark edersiniz. İnternette biraz arama yaptıktan sonra Akra-Bazzi yönteminin işe yarayacağını göreceksiniz! Öyleyse gerçekten araştırmaya başlıyorsunuz ve tüm matematiği gerçekten yapmak istemediğinizi anlıyorsunuz. Bu noktaya kadar benim gibi olsaydın, daha kolay bir yol olduğunu bilmek heyecanlı olacaksın.

T(n)={cn<72T(n5)+4T(n7)+cnn7


Düzensiz Bölünmüş Teorem Bölüm 1

Let ve pozitif sabitler olmak.ck

Sonra olacak şekilde pozitif sabitler olsun .{a1,a2,,ak}1kai<1

Ayrıca, formun yinelenmesini sağlamalıyız (yukarıdaki örneğindeki gibi):

T(n)c0<n<max{a11,a21,,ak1}T(n)cn+T(a1n)+T(a2n)+T(akn)nmax{a11,a21,,ak1}

İddia

Sonra olduğunu iddia ediyorum, burada bir sabittir (örneğin asimptotik olarak doğrusal) ve:T(n)bnb

b=c1(1kai)

İndüksiyonla Kanıt

Temel :n<max{a11,a21,,ak1}T(n)c<b<bn

İndüksiyon : Herhangi için de geçerlidir varsayalım , biz o zaman varn<n

T(n)cn+T(a1n)+T(a2n)++T(akn)cn+ba1n+ba2n++bakncn+ba1n+ba2n++bakn=cn+bn1kai=cncn1kai1(1kai)+cn1kai1(1kai)=cn1(1kai)=bn

Sonra alırsak .T(n)bnT(n)=O(n)

Örnek

T(n)={cn<72T(n5)+4T(n7)+cnn7
Önce özyinelemeli aramaların içindeki katsayıların bir taneden daha az olduğunu doğrularız:
1>1kai=15+15+17+17+17+17=25+47=3435

Daha sonra, temel durumun katsayıların daha az olduğunu doğruladık:

n<max{a11,a21,,ak1}=max{5,5,7,7,7,7}=7

Bu koşullar yerine , biliyoruz ki burada , aşağıdakilere eşittir: Bu nedenle: T(n)bnb

b=c1(1kai)=c13435=35c
T(n)35cnT(n)cnT(n)=Θ(n)


Düzensiz Bölünme Teoremi Bölüm 2

Benzer şekilde olduğunda bir sınırlama kanıtlayabiliriz . Kanıt aynı formatın çoğunu izleyecektir:1k=1

ve , olacak şekilde pozitif sabitler olsun .ckk>1

Sonra olacak şekilde pozitif sabitler olsun .{a1,a2,,ak}1kai=1

Ayrıca, formun yinelenmesini sağlamalıyız (yukarıdaki örneğindeki gibi):

T(n)c0<n<max{a11,a21,,ak1}T(n)cn+T(a1n)+T(a2n)+T(akn)nmax{a11,a21,,ak1}

İddia

Sonra İstem (seçtiğimiz tabanı için yineleme ağacının dal sayısı olacaktır) burada ve sabitleri (asimptotik linearithmic olan ) öyle ki:T(n)αnlogkn+βnlogkkαβ

β=c
ve
α=c1kailogkai1

İndüksiyonla Kanıt

Temel :n<max{a11,a21,,ak1}T(n)c=β<αnlogkn+βn

İndüksiyon : Herhangi için de geçerlidir varsayalım , biz o zaman varn<n

T(n)cn+T(a1n)+T(a2n)++T(akn)cn+1k(αainlogkain+βain)=cn+αn1k(ailogkain)+βn1kai=cn+αn1k(ailogknai1)+βn=cn+αn1k(ai(logknlogkai1))+βn=cn+αn1kailogknαn1kailogkai1+βn=αn1kailogkn+βn=αnlogkn+βn

Sonra .T(n)αnlogkn+βnT(n)=O(nlogn)

Örnek

Önceki örnekte sadece küçük bir bit kullandığımızı değiştirelim:

T(n)={cn<352T(n5)+4T(n7)+T(n35)+cnn35

Önce özyinelemeli aramaların içindeki katsayıların birleştiğini doğrularız:

1=1kai=15+15+17+17+17+17+135=25+47+135=3535

Daha sonra, temel durumun katsayıların daha az olduğunu doğruladık:

n<max{a11,a21,,ak1}=max{5,5,7,7,7,7,35}=35

Bu şartlar sağlandığında, biliyoruz ki burada ve şuna eşit bir sabittir: Bu nedenle: T(n)αnlogn+βnβ=cα

b=c1kailogkai1=c2log755+4log777+log735351.048c
T(n)1.048cnlog7n+cnT(n)=O(nlogn)


6

Bu gönderiyi tekrar kontrol ettikten sonra, bunun henüz burada olmadığına şaşırdım.

Domain Dönüşümü / Değişkenlerin Değişimi

Nükslerle uğraşırken, özyinelemenin ne kadar derine gideceği belli değilse etki alanınızı değiştirebilmek bazen yararlı olabilir.

Örneğin, aşağıdaki tekrarı al:

T(n)=T(22loglogn)+logloglogn

Bunu nasıl çözebiliriz? Diziyi genişletebiliriz, ancak bunun çok hızlı olacağına söz veriyorum. Bunun yerine, girişimizin her aramada nasıl değiştiğini düşünelim.

İlk önce:

  1. n , sonra
  2. 22loglogn , ardından
  3. 22loglog(22loglogn) , vb.

Bir alan adı dönüşümünün amacı, nüksümüzü eşdeğer bir öyle ki yukarıdaki geçişler yerine, basitçe .S(k)k,k1,k2,

Örneğin, verirsek, yukarıdaki yinelememiz için elde ettiğimiz şey budur: Sonra şunu tekrar yazabiliriz: Sonra tüm yapmanız gereken dönüştürmek olduğunu geri almak için: n=2222k

T(2222k)=T(22loglog2222k)+logloglog(2222k)=T(2222k1)+2k
T(k)=T(k1)+2k=i=1k2k=2k+11
kn
T(n)=2(loglogloglogn)+11=O(logloglogn)


Bu örnekle artık amacımızı görebiliriz.

Varsayıyorum Bazı sabitler için ve ve işlevleri .

T(n)={h(1)n=1aT(f(n))+h(n)otherwise
af(n)h(n)

Şimdi, ve fonksiyonlarını bulmaya çalışıyoruz, öyle ki g(k)=nf(g(k))=g(k1)

T(g(k))=aT(f(g(k)))+h(g(k))=aT(g(k1))+h(g(k))

Daha genel olarak, burada , , , zamanlarının tekrarlanan uygulamasıdır . (örneğin, ). Bu, nin' yineleme 'fonksiyonu olarak işlev görmesine izin verecektir . Özyinelemede derinliğinde yapılan işin sadece .f(i)(n)=g(ki)f(i)(n)fnif(2)(n)=f(f(n))g(k)ih(g(ki))

O zaman bunu kolayca böylece O zaman sadece endişelenmeliyiz özetliyor tüm verilen bir baz halinde üzere. Yani, S(k)=T(g(k))

S(k)=aS(k1)+h(g(k))
h(g(k))k
S(k)=i=g1(1)kakih(g(i))

Biz belirleyebiliyorsa bir kapalı form için fonksiyonu, o zaman belirleyebilir olarak S(k)=γ(k)γT(n)

T(n)=γ(g1(n))

Sonra bunu , yukarıdaki diğer yöntemlerden biriyle bağlamak için kullanıyoruz . Açıkça bu yöntemi biraz belirtime göre değiştirebilirsiniz, ancak genel olarak yi basit bir özyinelemeye dönüştürmek için bir yineleme fonksiyonu bulmaya çalışıyorsunuz .T(n)g(k)T(n)

Bu noktada yi belirlemenin kesin bir yolunu bilmiyorum , ancak daha netleşirse (veya herhangi bir yorumcunun bazı önerileri varsa!) Düşünmeye ve güncellemeye devam edeceğim. Daha önce işlevlerimi geçmişte deneme yanılma yoluyla buldum örnekler için buraya , buraya , buraya ve buraya bakın).g(k)g(k)


1
, ve / veya ilgili herhangi bir kısıtlama var mı? Çünkü özellikle soruyorum benzer folklor ikame hileler Landau notasyonu söz konusu olduğunda bazen varsa bana endişe yapar başarısız gerçekten her zaman doğru cevap. fghγg1
Raphael

@Raphael, bu tamamen emin değilim kısmı. Eşdeğerliği sağlamak için sağlamamız gerektiğini düşündüğüm birkaç şey var. 1) Özyineleme derinliği aynıdır, bu ve sağlanabilir . 2) her bir özyineleme düzeyinde yapılan iş, ve sonra tarafından uygulandığını düşündüğüm aynı şeydir . Bunun temel fikri, yi bir toplam, yani . den dönüşüm % 100 emin değilim (bir kanıtım yok), ama bunun neden olacağını göremiyorum yanlış. Düşünceler? f(g(k))=g(k1)g(k)=ng(k)=nh(g(k))=h(n)T(n)i=ckh(g(i))γ(k)γ(g1(n))
ryan

@Raphael , yerine nın ardından daha düz olması gerektiğini düşünebilirsiniz. ileri, ileriye doğru. Kanıtlamak kolaydır Bence sadece toplamda denklik gösterirseniz. Muhtemelen burada Landau notasyonu ile komik bir belaya girersiniz, fakat Landau'yu bunun dışında bırakıp yalnızca kesin bir eşitlikle sıkışırsanız, bunun iyi olması gerektiğini düşünüyorum. S(k)=γ(k)ΘT(n)=γ(g1(n))
ryan

@Raphael Ben sadece eşitlik kullanmak için düzenledi, bu yüzden landau notasyonu bu kadar karışık olmamalıdır. Ayrıca biraz daha genelleştirildi. Hangi hatta bir fonksiyon kullanmak için biraz daha genelleme olabilir sabit olmayan . Sonra toplamda yerine , sadece . β(n)aakiβ(g(i))
ryan

5

Basit yinelenme ilişkileri için işe yarayan bir yaklaşım daha var: Wolfram Alpha'dan sizin için yinelemeyi çözmesini isteyin .

Örneğin, f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2)Wolfram Alpha'ya yazmayı deneyin . Fibonacci sayılarıyla bağlantılı bir çözüm bulacaksınız. Ya denemek f(1)=1, f(n)=f(n-1)+nya f(1)=1, f(n)=2*f(n-1)+3*nya f(n)=f(n-1) + 2 f(n-2), f(1)=1, f(2)=3diğer örnekler için. Bununla birlikte, uyarılmalıdır: Wolfram Alpha bazı çok basit yinelemeleri çözebilir, ancak daha karmaşık olanlar için ayrılır.

Bu yaklaşım, böcek ya da özellik olarak görülebilen herhangi bir düşünceye duyulan ihtiyacı önler.


3
Ben do bu sitenin amacı açıklamak olacağını düşünüyorum nasıl bilgisayar cebir onun kör kullanımını savunmak değil, böyle şeyler yapar. Fakat araçlar şunlardır biri muhtemelen her zaman ( "pratikte" olarak) zamanı "israf" önce onları denemek gerektiğini kullanışlı, böylece aslında yararlıdır.
Raphael

Kendi tecrübelerime göre, bilgisayar cebirini "zor" veya "kolay" olanların hiçbir anlamı olmadan kullanmaya çalışmak sizi çok uzağa götürmez. Özellikle algoritma analizlerinde bazı masajlara ihtiyaç duyulabilir. Nükslerini kendin çözmeyi bilmeden bunu nasıl yaptığını bilmiyorum. (. Bu sitenin amacı gelince, görüş çoklu nokta vardır Gerçek: şimdiye kadar, "Bunun için yararlıdır birileri " bir yazı haklı göstermek için yeterli değildi.)
Raphael

5

Master teoreminin 2. durumu, genellikle belirtildiği gibi, sadece formundaki nüksleri ele alır , ki burada için . Bir alınan aşağıdaki teoremi, sadaka Jeffrey Leon, negatif için cevap verir :T(n)=aT(n/b)+f(n)f(n)=Θ(nlogablogkn)k0k

uygun bir temel durumla tekrarlandığını düşünün .T(n)=aT(n/b)+f(n)

  1. Eğer için sonra .f(n)=O(nlogbalogc1n)c<0T(n)=Θ(nlogba)

  2. Eğer için , sonra .f(n)=Θ(nlogbalogc1n)c=0T(n)=Θ(nlogbaloglogn)

  3. Eğer için , sonra ).f(n)=Θ(nlogbalogc1n)c>0T(n)=Θ(nlogbalogcn

Kanıt, şimdi çizdiğimiz gibi tekrarlanan yer değiştirme yöntemini kullanır. Farz edelim ki ve . Sonra gücü için , Şimdi davaları tek tek ele alalım. Tüm , seri toplar ve böylece . Tüm , toplam harmonik toplamıdır ve bu yüzdenf(n)=nlogbalogbc1nT(1)=0nb

T(n)=i=0logbn1ai(nbi)logbalogbc1(nbi)=i=0logbn1nlogba(logbni)c1=nlogbaj=1logbnjc1.
c<0j=0jc1T(n)=Θ(nlogba)c=0Hlogbn=log(logbn)+O(1)T(n)=Θ(nlogbaloglogn) . olduğunda , toplamı bir integral kullanarak yaklaşık değerlendirebiliriz: ve böylece .c>0T(n)=Θ(nlogbalogcn)
j=1logbn0logbnxc1dx=xcc|0logbn=logbcnc,
T(n)=Θ(nlogbalogcn)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.