การแก้หารและพิชิต reccurences หากการแบ่งอัตราส่วนขึ้นอยู่กับ


20

มีวิธีการทั่วไปในการแก้ปัญหาการเกิดซ้ำของแบบฟอร์มหรือไม่:

T(n)=T(n−nc)+T(nc)+f(n)

สำหรับหรือมากกว่าโดยทั่วไปc<1

T(n)=T(n−g(n))+T(r(n))+f(n)

ที่g(n),r(n)มีบางฟังก์ชั่นย่อยเชิงเส้นของnn

ปรับปรุง : ฉันได้ผ่านการเชื่อมโยงที่ให้ไว้ด้านล่างและร่อนผ่านทั้งหมดนอกจากนี้ยังมีความสัมพันธ์ที่เกิดขึ้นอีกในบันทึกเจฟฟ์เอริก รูปแบบของการเกิดซ้ำนี้ไม่ได้กล่าวถึงทุกที่ วิธี Akkra-Bazi ใช้เฉพาะเมื่อการแบ่งเป็นเศษส่วน การอ้างอิงที่รุนแรงใด ๆ จะถูกตรวจสอบ


2
ลองสร้างฟังก์ชั่น
— saadtaame

1
วิธีการของAkra-Bazzi มีผลบังคับใช้หรือไม่? มันให้การประมาณO(⋅)เท่านั้น แต่นั่นอาจเพียงพอ
— vonbrand

4
เนื่องจากคุณไม่ได้พยายามอย่างมากที่จะแก้ปัญหาของคุณด้วยตัวเองเราจึงมีเวลาเหลือพอที่จะทำงานกับ ฉันจะแนะนำคุณไปยังคำถามอ้างอิงของเราซึ่งครอบคลุมปัญหาที่คล้ายกับของคุณโดยละเอียด โปรดทำงานผ่านคำถามที่เกี่ยวข้องที่ระบุไว้ที่นั่นลองแก้ไขปัญหาของคุณอีกครั้งและแก้ไขเพื่อรวมความพยายามของคุณพร้อมกับปัญหาเฉพาะที่คุณพบ
— Raphael

1
ตรวจสอบเอกสารประกอบคำบรรยายของ Tom Leighton เกี่ยวกับ "หมายเหตุเกี่ยวกับทฤษฎีบทต้นแบบที่ดีกว่าสำหรับการเกิดซ้ำแบบแบ่งและชนะ" ซึ่งมีอยู่ใน 'net บางทีคุณสามารถปรับหลักฐานของ Akra-Bazzi ในกรณีของคุณได้
— vonbrand

1
@EngrStudent สร้างฟังก์ชั่นถูกเสนอในความคิดเห็นแรก :)
— Raphael

คำตอบ:


6

สมมติว่าคุณมีการเกิดซ้ำ นั่นจะอยู่ในช่วงรีแอสทีบวก

T(n)={T(n-nค)+T(nค)+ฉ(n)n> 21มิฉะนั้น

เราจะทำอย่างไรกับฟังก์ชั่นนี้? ไม่มากถ้าเราใส่โครงสร้างบางอย่างลงไป ฉันมาจากพื้นหลังการวิเคราะห์เชิงตัวเลขซึ่งปูด้วยสูตรเชิงตัวเลขที่ใช้งานได้แม้ว่าปัญหาพื้นฐานจะไม่ราบรื่นพอ (ไม่สำคัญเรายังคงโยนวิธีของนิวตันในการแบ่งความแตกต่าง) หรือซับซ้อนเกินไปที่จะวิเคราะห์ (เรียงลำดับ ของชอบปัญหานี้) ปฏิกิริยาทางเดินอาหารของฉันที่มีต่อปัญหาเหล่านี้คือการทำให้สมมติฐานที่ทำด้วยมือบางอย่างข้ามนิ้วของเราและหวังว่าจะดีที่สุด ในกรณีนี้ดูเหมือนว่าจะให้ขอบเขตที่ค่อนข้างดี

โดยเฉพาะฉันต้องการตั้งสมมติฐานหลักสองข้อ หนึ่งในสมมติฐานเหล่านี้ไม่มีมูลความจริงมากไปกว่านี้ แต่เราจะไม่ไปไกลหากไม่มีมัน อีกคนมีสัญชาตญาณทางสายตาที่ค่อนข้างดีที่คุณสามารถหวังจะคร่ำครวญ แต่มันก็ยังคงเป็นคลื่นมือมากกว่าสิ่งอื่นใด

  1. ฉันจะสมมติว่าคือ "smooth-ish" มันค่อนข้างง่ายที่จะเห็นว่าT ( n )ไม่แตกต่างกันในทุกที่ ที่จริงแล้วมันไม่ได้ต่อเนื่องเนื่องจากสำหรับf ( n ) = log ( n )และc = 1T(n)T(n)ฉ(n)=เข้าสู่ระบบ⁡(n) ,ลิมn→2-T(n)=1และลิมn→2+T(n)=2+LN2 ดังนั้นการกำหนดแผนที่ซ้ำที่สร้างขึ้นโดยn↦√ค=12Limn→2-T(n)=1limn→2+T(n)=2+ln⁡2หรือn↦n- √n↦n ,T(n)จะมีความไม่ต่อเนื่องที่nหากต้นไม้ซ้ำของมันมี2แห่งในวิถีของมัน นั่นคือความไม่ต่อเนื่องมากมายมันอาจทำให้ฟังก์ชั่นของ Dirichlet วิ่งได้ด้วยเงิน หากเราไปถึงจุดที่เราเปรียบเทียบพฤติกรรมของฟังก์ชันกับตัวอย่างต้นแบบของฟังก์ชันที่ไม่มีการต่อเนื่องมันจะไม่น่าหัวเราะหรือไม่ที่จะอ้างว่ามันเป็น "smooth-ish"? ในทางปฏิบัติแล้วผลกระทบของความไม่ต่อเนื่องเหล่านี้ลดลงแบบไม่แสดงอาการจนถึงจุดที่กราฟของคุณดูเกือบจะราบรื่นเมื่อnn↦n−nT(n)n2nมีแนวโน้มไปสู่อินฟินิตี้! ดังนั้นฉันเสนอให้เราใส่โกยของเราลงและมองไปทางอื่นในกรณีนี้ โดยเฉพาะอย่างยิ่งผมจะสมมติว่าในจุดสนใจใด ๆที่เป็นพอห่างไกลจากแหล่งกำเนิด, T ( n )เป็นอนุพันธ์หรืออย่างน้อยประมาณอนุพันธ์รอบละแวกบางnT(n)
  2. ฉันจะถือว่าท่าทางที่ราบรื่นยิ่งขึ้นเมื่ออยู่ห่างพอสมควร สมมติว่าα ( n )เป็นฟังก์ชั่น sublinear บางอย่างเช่นที่n > α ( n ) (ตัวอย่างเช่นn ค ) แล้วอนุพันธ์T ' ( ξ ∈ ( n - α ( n ) , n )ไม่แตกต่างกันอย่างมีนัยสำคัญเมื่อα ( n )ช้าพอสังหรณ์ใจเช่นเดียวกับnnα(n)n>α(n)nคT'(ξ∈(n-α(n),n)α(n)nมีขนาดใหญ่ขึ้นขนาดสัมพัทธ์ของละแวกใกล้เคียงลดลง (เนื่องจากขนาดเป็นเพียงα ( n )ซึ่งเติบโตช้ากว่าnมาก) ในที่สุดขนาดของพื้นที่ใกล้เคียงนี้จะกลายเป็นไม่มีนัยสำคัญดังนั้น (เทียบกับn ) ว่าอัตราการเปลี่ยนแปลงของT ( n )ภายในพื้นที่ใกล้เคียงนี้ไม่เปลี่ยนแปลงทั้งหมดที่มาก(n-α(n),n)α(n)nnT(n)

ทีนี้, คุณสมบัติทั้งสองนี้ถูกสันนิษฐาน, และฉันไม่มีความคิดเลยว่าจะพิสูจน์ได้อย่างไรในวิธีที่เข้มงวด แต่อย่างที่ฉันบอกไปก่อนหน้านี้มาข้ามนิ้วของเราและหวังว่าจะดีที่สุด

เริ่มจากความสัมพันธ์ที่เกิดซ้ำกัน: ตอนนี้ผมจะคิดว่าTเป็นพอเรียบบนช่วงระหว่างn-nคและn การดึงดูดหนึ่งในเครื่องมือวิเคราะห์แบบคลาสสิกของเราค่าเฉลี่ย - ทฤษฎีบททำให้เรามี T(n)-T(n- n c )

T(n)=T(n-nค)+T(nค)+ฉ(n)T(n)-T(n-nค)=T(nค)+ฉ(n)nคT(n)-T(n-nค)nค=T(nค)+ฉ(n)
Tn-nคn นอกจากนี้เมื่อnมีขนาดใหญ่พอเราสันนิษฐานว่าT′(ξ)มีค่าใกล้เคียงกันตลอดช่วงเวลานี้และใช้ค่าของความแตกต่างอัน จำกัด ใด ๆ ภายในช่วงเวลานี้เช่นกัน นี่หมายความว่า T′(ξ)≈T(n)-T(n-ϵ)
T(n)-T(n-nค)nค=T'(ξ∈(n-nค,n)).
nT'(ξ) โดยเฉพาะใช้ϵ=1เพื่อให้ได้การประมาณความแตกต่างแบบแบ่งขั้นตอนหนึ่งขั้นตอน n c ( T ( n ) - T ( n - 1 ) )
T'(ξ)≈T(n)-T(n-ε)ε    ε<nค
ε=1 เราสามารถกล้องโทรทรรศน์นี้เพื่อรับ T(n)≈n∑kT(kc)
nค(T(n)-T(n-1))≈T(nค)+ฉ(n)T(n)-T(n-1)≈T(nค)+ฉ(n)nค
T(n)≈ΣknT(kค)kค+Σknฉ(k)kค

รบกวนเผยให้เห็นว่าT ( n )มีสองขั้นตอน asymptotic ขึ้นอยู่กับธรรมชาติของ asymptotic ฉ( Z )T(n)T(n)ฉ(Z)

ฉ(n)=โอ(nค)ฉnคT(n)=Θ(Σknฉ(k)kค)∫nฉ(x)xคdx

เมื่อไหร่ ฉ(n)=ω(nค)

(ΣknT(kค)kค)+Fค(n)
Fค(n)=∫nฉ(x)xคdx

∫nT(xค)xคdx

ΣkT(kค)kค≈∫nฉ(xค)xคdx=nT(ξ<nค)ξค
nT(nc)nc, which gives the approximation
T(n)≤nMT(nc)nc+Fc(n)
for some constant M that bounds the series.

Now, suppose that we have the iterated sequence (n,nc,nc2,nc3,…,nck) where nck<2, then we can use this sequence to telescope the above inequality to get:

(*)T(n)≤n(∑ik−1MinciFc(nci)+Mknck)
Once again, we can bound the Fc(nci) term by some constant to find that
T(n)=O(Fc(n)+nFc(nc)(Mn−c+M2n−c2+⋯+Mkn−ck))
where k=logc⁡(log⁡(2)log⁡(n)). Simplifying a bit and coalescing some of the Mn−c terms together (in particular, we know that n−ck is a constant), we get
T(n)=O(nkFc(n)Mk)

However, this bound is relatively loose, and you should refer to (*) whenever possible.

Be aware that in no way is this rigorous. I have not provided any support that this ought to work beyond some clumsy approximations. Nevertheless, if you just need a quick asymptotic guess for the sake of informal analysis, then you can actually see that this scheme works well (for large enough values of n, usually n>10 suffices) in practice.

Anyways, for all of the choices of c and f that I've tried, the following computation

T^(n)=n∑klogc⁡logn⁡2MknckF(nck)F(n)=∑knf(k)kc
where
M≈∑kT(kc)kcnT(nc)nc
seems to give good approximations. This technique also generalizes to recurrences of the form
T(n)=T(n−α(n))+T(β(n))+f(n)
which can be approximated with
T^(n)=n∑k#β(n)Mkαk(n)F(βk(n))F(n)=∑knf(k)α(k)
where αk(n)=α(⋯k(α(n))) and #β(n) denotes the number of elements of the sequence n,β(n),β(β(n)),…,β#β(n)(n) such that the last term is between 1 and 2.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.