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


20

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

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

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

T(n)=T(ng(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) ,ลิมn2-T(n)=1และลิมn2+T(n)=2+LN2 ดังนั้นการกำหนดแผนที่ซ้ำที่สร้างขึ้นโดยn=12Limn2-T(n)=1limn2+T(n)=2+ln2หรือnn-nn ,T(n)จะมีความไม่ต่อเนื่องที่nหากต้นไม้ซ้ำของมันมี2แห่งในวิถีของมัน นั่นคือความไม่ต่อเนื่องมากมายมันอาจทำให้ฟังก์ชั่นของ Dirichlet วิ่งได้ด้วยเงิน หากเราไปถึงจุดที่เราเปรียบเทียบพฤติกรรมของฟังก์ชันกับตัวอย่างต้นแบบของฟังก์ชันที่ไม่มีการต่อเนื่องมันจะไม่น่าหัวเราะหรือไม่ที่จะอ้างว่ามันเป็น "smooth-ish"? ในทางปฏิบัติแล้วผลกระทบของความไม่ต่อเนื่องเหล่านี้ลดลงแบบไม่แสดงอาการจนถึงจุดที่กราฟของคุณดูเกือบจะราบรื่นเมื่อnnnnT(n)n2nมีแนวโน้มไปสู่อินฟินิตี้! ดังนั้นฉันเสนอให้เราใส่โกยของเราลงและมองไปทางอื่นในกรณีนี้ โดยเฉพาะอย่างยิ่งผมจะสมมติว่าในจุดสนใจใด ๆที่เป็นพอห่างไกลจากแหล่งกำเนิด, T ( n )เป็นอนุพันธ์หรืออย่างน้อยประมาณอนุพันธ์รอบละแวกบางnT(n)
  2. ฉันจะถือว่าท่าทางที่ราบรื่นยิ่งขึ้นเมื่ออยู่ห่างพอสมควร สมมติว่าα ( n )เป็นฟังก์ชั่น sublinear บางอย่างเช่นที่n > α ( n ) (ตัวอย่างเช่นn ) แล้วอนุพันธ์T ' ( ξ ( n - α ( n ) , n )ไม่แตกต่างกันอย่างมีนัยสำคัญเมื่อα ( n )ช้าพอสังหรณ์ใจเช่นเดียวกับnnα(n)n>α(n)nT'(ξ(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)nT(n)-T(n-n)n=T(n)+(n)
Tn-nn นอกจากนี้เมื่อ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)nkT(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)nT(n)=Θ(Σkn(k)k)n(x)xdx

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

(ΣknT(k)k)+F(n)
F(n)=n(x)xdx

nT(x)xdx

ΣkT(k)kn(x)xdx=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(ik1MinciFc(nci)+Mknck)
Once again, we can bound the Fc(nci) term by some constant to find that
T(n)=O(Fc(n)+nFc(nc)(Mnc+M2nc2++Mknck))
where k=logc(log(2)log(n)). Simplifying a bit and coalescing some of the Mnc terms together (in particular, we know that nck 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)=nklogclogn2MknckF(nck)F(n)=knf(k)kc
where
MkT(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)=nk#β(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.