Recursion and recurrence relations
Download
1 / 35

Recursion and Recurrence Relations - PowerPoint PPT Presentation


  • 285 Views
  • Uploaded on

Recursion and Recurrence Relations. Recursive Definitions. การเรียกซ้ำ( Recursion ) เป็นหลักการที่เกี่ยวข้องอย่างใกล้ชิดกับการอุปนัยเชิงคณิตศาสตร์( mathematical induction )

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Recursion and Recurrence Relations' - arne


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Recursion and recurrence relations

Recursion and Recurrence Relations

Faculty of Informatics, Burapha University


Recursive definitions
Recursive Definitions

การเรียกซ้ำ(Recursion)เป็นหลักการที่เกี่ยวข้องอย่างใกล้ชิดกับการอุปนัยเชิงคณิตศาสตร์(mathematical induction)

ในการอุปนัย เราพิสูจน์ว่าฟังก์ชันข้อความ(predicate) Pเป็นจริง สำหรับสมาชิกทุกตัวของเซตอนันต์ใดๆโดยพิสูจน์ค่าความจริงของpredicateสำหรับสมาชิกจำนวนมาก ในรูปของสมาชิกที่มีขนาดเล็กกว่า

ในการนิยามแบบเรียกซ้ำ(recursive definitions) เรานิยามฟังก์ชั่น ฟังก์ชั่นข้อความ เซต หรือโครงสร้างอื่นๆบนโดเมนหรือเอกภพสัมพัทธ์ใดๆในรูปของสมาชิกที่มีขนาดเล็กกว่า

การเรียกซ้ำเป็นรูปแบบทั่วไปในการนิยามวัตถุใดๆ ในรูปของตัวมันเอง

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

2

2


Recursively defined functions
Recursively Defined Functions

ตัวอย่าง เช่น:

ลำดับ {an} ของยกกำลังสอง 1,2,4,8,… นิยามโดย

an = 2nเมื่อn = 0, 1, 2, …

และ สามารถนิยามแบบเรียกซ้ำได้ดังนี้:

a0 = 1

an = 2an-1เมื่อn = 0, 1, 2, …

จากตัวอย่าง จะเห็นได้ชัดว่า อุปนัย และการเรียกซ้ำนั้นมีหลักการคล้ายคลึงกัน

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

3

3


Recursively defined functions1
Recursively Defined Functions

เราสามารถใช้วิธีต่อไปนี้ ในการนิยามฟังก์ชั่นใดๆที่มีโดเมนเป็นจำนวนนับ:

ขั้นพื้นฐาน(Base case):กำหนดค่าของฟังก์ชั่นเมื่อ pre-image เป็นศูนย์(หาว่าค่าf(0)=?)

ขั้นเรียกซ้ำ(Recursion):สร้างกฎสำหรับหาค่าฟังก์ชั่นเมื่อ pre-image เป็นจำนวนเต็มใดๆ จากค่าของฟังก์ชั่นที่มีค่า pre-image เป็นจำนวนเต็มที่น้อยกว่า

การนิยามดังกล่าวข้างต้น เรียกว่า การเรียกซ้ำ(recursive) หรือการนิยามเชิงอุปนัย(inductive definition)

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

4

4


Recursively defined functions2
Recursively Defined Functions

ตัวอย่าง เช่น:

f(0) = 3

f(n) = 2f(n-1) + 3

f(0) = 3

f(1) = 2  f(0) + 3 = 23 + 3 = 9

f(2) = 2  f(1) + 3 = 29 + 3 = 21

f(3) = 2  f(2) + 3 = 221 + 3 = 45

f(4) = 2  f(3) + 3 = 245 + 3 = 93

จงหาf(5), f(6), f(7), f(8)

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

5

5


Recursive definition of factorial
Recursive definition of Factorial

กำหนดนิยามเชิงอุปนัย(แบบเรียกซ้ำ) ของฟังก์ชั่นแฟคทอเรียล ดังนี้,F(n) :≡n! :≡ = 12…n

Base case: F(0) :≡ 1

Recursive part: F(n) = (n)  F(n-1)

F(0) = 1

F(1) = 1  F(0) = 11 = 1

F(2) = 2  F(1) = 21 = 2

F(3) = 3  F(2) = 32 = 6

F(4) = 4  F(3) = 46 = 24

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

6

6


Examples
Examples

จงเขียนนิยามแบบเรียกซ้ำของ:

i+n (iเป็นจำนวนเต็ม, nเป็นจำนวนนับ) โดยใช้รูปแบบ s(i) = i+1

a·n (aเป็นจำนวนจริง, nเป็นจำนวนนับ) โดยใช้การบวก

an(aเป็นจำนวนจริง, nเป็นจำนวนนับ) โดยใช้การคูณ

(สำหรับอนุกรมของจำนวน {ai})

(สำหรับอนุกรมของจำนวน {ai})

(สำหรับอนุกรมของเซต{Si})

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

7

7


I n i n s i i 1
i+n (iเป็นจำนวนเต็ม, nเป็นจำนวนนับ)โดยใช้รูปแบบ S(i) = i+1

ชุดลำดับของ i+n ได้แก่ i+0, i+1, i+2, i+3,…

Base case คือ S(0) = i

Recursive part คือ S(n) = S(n-1)+1

จะได้ว่า S(0) = i

S(1) = S(0) +1 = i+1

S(2) = S(1) +1 = (i+1)+1 = i+2

S(3) = S(2) +1 = (i+2)+1 = i+3 …

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

8


0 i n a i a i
0≤i≤nai (สำหรับอนุกรมของจำนวน {ai})

  • Base case คือ

  • Recursive part คือ

  • จะได้ว่า

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

9


The fibonacci series
The Fibonacci Series

อนุกรมไฟโบแนซซี(Fibonacci series)fn≥0นิยามโดย:f0 :≡ 0, f1 :≡ 1, fn≥2 :≡ fn−1 + fn−2

f(0) = 0

f(1) = 1

f(2) = f(1) + f(0) = 1 + 0 = 1

f(3) = f(2) + f(1) = 1 + 1 = 2

f(4) = f(3) + f(2) = 2 + 1 = 3

.

.

.

f(4)

f(3)

f(2)

f(2)

f(0)

f(1)

f(1)

f(1)

f(0)

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

10

10


Recursive euclid s algorithm
Recursive Euclid’s Algorithm

proceduregcd(a,bN,nonnegative integer with a>b)ifb = 0 thenreturn aelse returngcd(b,amodb)

สังเกตว่าอัลกอริธึมแบบเรียกซ้ำจะทำให้เขียนโปรแกรมได้สั้นกว่าง่ายกว่าและง่ายต่อการทำความเข้าใจมากกว่า

แต่การเขียนโปรแกรมแบบเรียกซ้ำจะใช้พื้นที่ในหน่วยความจำที่เรียกว่าสแตก(stack)มากกว่าการเขียนโปรแกรมแบบวนลูป

สำหรับอัลกอริธึมแบบเรียกซ้ำ(Recursive)ใดๆ จะมีอัลกอริธึมแบบวนลูป(Iterative)ที่สมมูล(ให้ผลลัพธ์ที่เหมือนกัน)กันเสมอ

อย่างไรก็ตาม อัลกอริธึมแบบวนลูปมักจะมีประสิทธิภาพมากกว่าในแง่ของการใช้พื้นที่และเวลาที่น้อยกว่าอัลกอริธึมแบบเรียกซ้ำ

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

11

11


Recursive fibonacci algorithm
Recursive Fibonacci Algorithm

procedurefibo(n: nonnegative integer)

if n  1 then

returnn

else

returnfibo(n – 1) + fibo(n – 2)

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

12

12


Iterative fibonacci algorithm
Iterative Fibonacci Algorithm

procedure iterative_fibo(n: nonnegative integer)

if n = 0 theny := 0

else

begin

x := 0

y := 1

fori := 1 to n-1

begin

z := x + y

x : = y

y := z

end

end{y is the n-th Fibonacci number}

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

13

13


Recursive algorithms
Recursive Algorithms

ตัวอย่าง: อัลกอริธึมสำหรับการคำนวณค่าan

procedurepower(a≠0: real, nN)

ifn = 0 then return 1elsereturna · power(a, n−1)

จงเขียนอัลกอริธึมคำนวณค่าanเดียวกันนี้แบบเรียกซ้ำ

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

14

14


Recurrence relations

Recurrence Relations

Faculty of Informatics, Burapha University

ภาควิชาวิทยาการคอมพิวเตอร์ ม.บูรพา

15

15


Recurrence relations1
Recurrence Relations

  • ความสัมพันธ์เวียนเกิด(recurrence relation)ของลำดับ{an}คือสมการที่แสดงanในรูปของสมาชิกก่อนหน้าa0, …, an−1ของลำดับนั้นๆสำหรับทุกค่าn≥n0

    • จะเห็นว่า ความสัมพันธ์เวียนเกิดนั้นนิยามได้เช่นเดียวกับ การนิยามแบบเรียกซ้ำแตกต่างกันที่ไม่มีกรณีพื้นฐาน(base cases)

  • เราสามารถใช้ ลำดับใดๆที่ไม่อยู่ในรูปของการเรียกซ้ำ เป็นผลเฉลยของความสัมพันธ์เวียนเกิดที่กำหนดได้ หากลำดับดังกล่าวสอดคล้องกับนิยามของการเวียนเกิด

    • ความสัมพันธ์เวียนเกิดหนึ่งๆ อาจมีผลเฉลยได้มากกว่าหนึ่งผลเฉลย

Faculty of Informatics, Burapha University


Recurrence relation example
Recurrence Relation Example

  • พิจารณาความสัมพันธ์เวียนเกิด

    an = 2an−1 − an−2 (n≥2)

  • ลำดับต่อไปนี้เป็นผลเฉลยของความสัมพันธ์ข้างต้นหรือไม่?an = 3nan = 2n

    an = 5

Yes

No

Yes

Faculty of Informatics, Burapha University


Recurrence relations2
Recurrence Relations

ตัวอย่าง:พิจารณาความสัมพันธ์เวียนเกิดan = 2an-1 – an-2 for n = 2, 3, 4, …

  • ลำดับ {an} เมื่อ an=3n เป็นผลเฉลยของความสัมพันธ์เวียนเกิดที่กำหนดหรือไม่?

    สำหรับ n  2 จะได้ว่า2an-1 – an-2 = 2(3(n – 1)) – 3(n – 2) = 3n = an

  • ดังนั้น {an} เมื่อ an=3n เป็นผลเฉลยของความสัมพันธ์เวียนเกิดที่กำหนด

  • ลำดับ {an} เมื่อ an=5 เป็นผลเฉลยของความสัมพันธ์เวียนเกิดข้างต้นหรือไม่?

  • เมื่อ n  2 จะได้ว่า2an-1 – an-2 = 25 - 5 = 5 = an

  • ดังนั้น {an} เมื่อ an=5 เป็นผลเฉลยของความสัมพันธ์เวียนเกิดข้างต้น

Faculty of Informatics, Burapha University


Modeling with recurrence relations
Modeling with Recurrence Relations

ตัวอย่าง:

  • นายภักดี ฝากเงิน 10,000 บาทไว้ในบัญชีออมทรัพย์ ที่ให้ดอกเบี้ย 5% ต่อปี สะสมไว้เป็นเงินฝากต่อไปทุกปี เมื่อเวลาผ่านไป 30 ปีเงินในบัญชีเงินฝากของนายภักดีจะเป็นเท่าไร?

    วิธีทำ:

  • ให้ Pnแทนจำนวนเงินในบัญชีหลังจากเวลาผ่านไป n ปี

  • จงเขียน Pnในรูปของ Pn-1?

Faculty of Informatics, Burapha University


Modeling with recurrence relations1
Modeling with Recurrence Relations

  • เราสามารถเขียนความสัมพันธ์เวียนเกิดของ Pn ในรูปของ Pn-1 ได้ดังนี้:

    Pn = Pn-1 + 0.05Pn-1 = 1.05Pn-1

    เงื่อนไขเริ่มต้น คือ P0 = 10,000 ดังนั้น จะได้ว่า:

    P1 = 1.05P0

    P2 = 1.05P1 = (1.05)2P0

    P3 = 1.05P2 = (1.05)3P0

    Pn = 1.05Pn-1 = (1.05)nP0

  • จะเห็นว่า ได้สูตรสำหรับคำนวณค่า Pnสำหรับจำนวนนับ n ใดๆได้ โดยไม่จำเป็นต้องทำการคำนวณเรียกซ้ำหลายครั้ง

Faculty of Informatics, Burapha University


Modeling with recurrence relations2
Modeling with Recurrence Relations

จึงสามารถใช้สูตรที่หาได้คำนวณหา P30ภายใต้เงื่อนไขเริ่มต้น

P0 = 10,000:

P30 = (1.05)3010,000 = 43,219.42

ดังนั้นเมื่อผ่านไป 30 ปี เงินฝากในบัญชีจะมีเงินทั้งหมด 43,219.42 บาท

Faculty of Informatics, Burapha University

21


Example applications and solving compound interest rr
Example Applications and Solving Compound Interest RR

  • ความสัมพันธ์เวียนเกิดของการฝากเงินธนาคารที่อัตราดอกเบี้ยP% ต่อช่วงเวลาที่กำหนด:

    Mn = Mn−1 + (P/100)Mn−1

  • Mn = Mn−1 + (P/100)Mn−1

    = (1 + P/100) Mn−1

    = rMn−1(ให้r = 1 + P/100)

    = r (rMn−2)

    = r·r·(rMn−3) …เช่นนี้ไปเรื่อยๆ…

    = rnM0

Faculty of Informatics, Burapha University


Modeling with recurrence relations3
Modeling with Recurrence Relations

  • ความสัมพันธ์เวียนเกิดที่เป็นที่รู้จักกันดีอันหนึ่งในกลุ่ม นักคณิตศาสตร์ คือ ปัญหาของ Leonard diPisa ซึ่งรู้จักกันในนาม Fibonacci โดยFibonacci ได้ตั้งปัญหาในหนังสือ Liber abaci ราว ๆ คริสตศตวรรษที่13 ดังนี้

    “กระต่ายแรกเกิดเพศผู้และเพศเมียคู่หนึ่งถูกนําไปปล่อยไว้ที่เกาะแห่งหนึ่ง อยากทราบว่าจะมีกระต่ายทั้งหมดกี่คู่ เมื่อเวลาผ่านไป n เดือน โดยมีข้อสมมติว่า เมื่อกระต่ายทั้งสองมีอายุครบ 2 เดือนจึงจะสามารถให้กําเนิดกระต่ายเพศผู้และเพศเมียอีก 1 คู่ และเมื่อจุดเริ่มต้นบนเกาะนั้นไม่มีกระต่ายอยู่เลย”

Faculty of Informatics, Burapha University


Modeling with recurrence relations4
Modeling with Recurrence Relations

กระต่ายที่เกิดใหม่

กระต่ายที่มีอยู่เดิม

Faculty of Informatics, Burapha University


Modeling with recurrence relations5
Modeling with Recurrence Relations

กําหนดให้fnเป็นจํานวนคู่ของกระต่าย เมื่อตอนต้นเดือนที่ n

สังเกตจากภาพที่ 1 จะเห็นว่า จํานวนกระต่ายเมื่อต้นเดือนที่ 3 เท่ากับจํานวน

กระต่ายเมื่อต้นเดือนที่ 2 บวกกับจํานวนกระต่ายเมื่อต้นเดือนที่ 1 และจํานวน

กระต่ายเมื่อต้นเดือนที่ 4 เท่ากับจํานวนกระต่ายเมื่อต้น เดือนที่ 3 บวกกับจํานวน

กระต่ายเมื่อต้นเดือนที่ 2 เป็นเช่นนี้เรื่อย ๆ ไป ดังนั้น

fn = fn-1 + fn-2

ถ้าเรากําหนด f0 = 0 และเราทราบว่า f1 = 1 แล้วสมการข้างต้น สําหรับ n  2

ดังนั้น f2 = f1 + f0 = 2

f3 = f2 + f1 = 3

f4 = f3 + f2 = 5

f5 = f4 + f3 = 8

Faculty of Informatics, Burapha University


Modeling with recurrence relations6
Modeling with Recurrence Relations

ตัวอย่าง:

  • ให้ anแทนจำนวนบิตสตริงยาว n ที่ไม่มีเลข 0 ติดกัน(ในที่นี้จะเรียกว่า“สตริงที่ถูกต้อง”)จงเขียนความสัมพันธ์เวียนเกิด และกำหนดเงื่อนไขเริ่มต้นสำหรับลำดับ {an}

    วิธีทำ:

  • แนวคิด: จำนวนของสตริงที่ถูกต้อง หาได้จากจำนวนของสตริงที่ถูกต้องที่ลงท้ายด้วยเลข 1 หนึ่งตัว บวกกับจำนวนของสตริงที่ถูกต้องที่ลงท้ายด้วยเลข 0 หนึ่งตัว

Faculty of Informatics, Burapha University


Modeling with recurrence relations7
Modeling with Recurrence Relations

  • สมมติให้ n  3, เพื่อกำหนดให้สตริงยาวอย่างน้อย 3 บิต

    กรณีที่ 1

  • สมมติต่อไปอีกว่า เราทราบว่ามีบิตสตริงที่ถูกต้องจำนวน an-1ที่ยาว(n – 1)

    ดังนั้นมีกี่บิตสตริงที่ยาว n ที่ลงท้ายด้วยเลข 1 หนึ่งตัว?

  • ตอบจะมีสตริงดังกล่าวจำนวนan-1สตริง, ซึ่งก็คือเซตของสตริงที่ถูกต้องที่ยาว(n – 1)และสตริงเหล่านั้นต่อท้ายด้วยเลข1หนึ่งตัว

  • สังเกตว่า:เมื่อใดก็ตามที่เราเพิ่มเลข 1หนึ่งตัวต่อท้ายสตริงที่ถูกต้อง สตริงที่ได้ก็ยังคงเป็นสตริงที่ถูกต้องเช่นเดิม

Faculty of Informatics, Burapha University


Modeling with recurrence relations8
Modeling with Recurrence Relations

กรณีที่ 2

สิ่งที่เราจำเป็นต้องทราบต่อไปคือ: มีสตริงที่ถูกต้องที่ยาวnและลงท้ายด้วยเลข 0หนึ่งตัวกี่บิตสตริง?

  • สตริงที่ถูกต้องที่ยาว nซึ่งลงท้ายด้วยเลข0หนึ่งตัว ต้องมีเลข 1ในบิตที่(n – 1) (ไม่เช่นนั้นสตริงเหล่านั้นจะลงท้ายด้วย 00 ซึ่งจะเป็นสตริงที่ไม่ถูกต้อง)

  • และมีบิตสตริงที่ถูกต้องที่ยาว(n – 1)ซึ่งลงท้ายด้วยเลข 1 หนึ่งตัวกี่บิตสตริง?

  • เราทราบอยู่แล้วว่ามีan-1สตริงที่ยาว nซึ่งลงท้ายด้วยเลข 1 หนึ่งตัว(จากกรณีที่ 1)

  • ดังนั้น มี an-2บิตสตริงที่ยาว(n – 1) ซึ่งลงท้ายด้วยเลข 1 หนึ่งตัว

Faculty of Informatics, Burapha University


Modeling with recurrence relations9
Modeling with Recurrence Relations

  • ดังนั้นมีสตริงที่ถูกต้องจำนวนan-2ที่ยาวnซึ่งลงท้ายด้วยเลข 0 หนึ่งตัว(สตริงที่ถูกต้องทั้งหมดที่ยาว (n – 2) และต่อท้ายด้วยเลข 10 )

  • ดังที่กล่าวแล้วข้างต้น จำนวนของสตริงที่ถูกต้อง คือจำนวนของบิตสตริงที่ถูกต้องที่ลงท้ายด้วยเลข1หนึ่งตัวบวกกับจำนวนของสตริงที่ถูกต้องที่ลงท้ายด้วยเลข0 หนึ่งตัว

  • ดังนั้นจึงได้ความสัมพันธ์เวียนเกิด ดังนี้:

    an = an-1 + an-2

Faculty of Informatics, Burapha University


Modeling with recurrence relations10
Modeling with Recurrence Relations

  • เงื่อนไขเริ่มต้นคืออะไร?

  • a1 = 2 (0 และ 1)

  • a2 = 3 (01, 10, และ 11)

  • a3 = a2 + a1 = 3 + 2 = 5

  • a4 = a3 + a2 = 5 + 3 = 8

  • a5 = a4 + a3 = 8 + 5 = 13

  • ลำดับเหล่านี้เป็นไปตามความสัมพันธ์เวียนเกิดของ Fibonacci sequence

  • เพราะ a1 = f3และ a2 = f4, จะได้ว่า an = fn+2

Faculty of Informatics, Burapha University


Tower of hanoi example
Tower of Hanoi Example

  • นิยายปรัมปราเกี่ยวกับหอคอยแห่งฮานอยเล่าว่าพระที่ประจําอยู่ในหอคอยแห่งฮานอยประกาศว่า ถ้าท่านจะย้ายแผ่นทองคําจํานวน 64 แผ่น ที่เรียงอยู่ที่เสาต้นหนึ่งโดยมีแผ่นทองคำขนาดใหญ่อยู่ด้านล่างและแผ่นทองที่มีขนาดเล็กกว่าอยู่ด้านบน ไปยังวางเรียงไว้ที่เสาอีกต้นหนึ่งในลักษณะเดียวกัน โดยในการย้ายแผ่นทองคํา 1 แผ่น ใช้เวลา 1 วินาที แล้วเมื่อท่านย้ายแผ่นทองคําจากเสาต้นที่ 1 ไปยังเสาต้นอื่นเสร็จสิ้น โลกก็จะแตกสลายไปแล้ว

Faculty of Informatics, Burapha University


Tower of hanoi example1
Tower of Hanoi Example

  • ปัญหา: ย้ายแผ่นดิสก์จากหลักที่ 1 ไปยังหลักที่ 2

    • กฎ: (a) แต่ละครั้งย้ายได้เพียงแผ่นเดียว

    • (b) แผ่นดิสก์ที่ใหญ่กว่าจะอยู่บนแผ่นที่เล็กกว่าไม่ได้

หลัก #1

หลัก #2

หลัก #3

Faculty of Informatics, Burapha University


Hanoi recurrence relation
Hanoi Recurrence Relation

  • ให้Hn= จำนวนครั้งของการย้ายแผ่นดิสก์ nแผ่น

    วิธีการย้ายแผ่นดิสก์:

  • ย้ายแผ่นดิสก์n−1แผ่นที่อยู่ด้านบนไปยังหลักอื่นๆ (มีการย้ายแผ่นHn−1ครั้ง)

  • ย้ายแผ่นดิสก์ที่อยู่ด้านล่าง(ย้าย 1 ครั้ง)

  • ย้ายแผ่นดิสก์n−1แผ่นที่อยู่ด้านบน(ที่ย้ายไปไว้ยังหลักอื่น)ไปไว้บนแผ่นที่อยู่ด้านล่าง (มีการย้ายแผ่นHn−1ครั้ง)

  • สังเกตว่า:Hn = 2Hn−1 + 1

    • จำนวนครั้งของการย้ายแผ่นดิสก์สามารถอธิบายได้ด้วยความสัมพันธ์เวียนเกิด

Faculty of Informatics, Burapha University


Solving tower of hanoi rr
Solving Tower of Hanoi RR

Hn = 2 Hn−1 + 1

= 2 (2 Hn−2 + 1) + 1 = 22 Hn−2 + 2 + 1

= 22(2 Hn−3 + 1) + 2 + 1 = 23Hn−3 + 22 + 2 + 1

= 2n−1H1 + 2n−2 + … + 2 + 1

= 2n−1 + 2n−2 + … + 2 + 1 (เพราะH1 = 1)

=

= 2n − 1

Faculty of Informatics, Burapha University


Solving tower of hanoi rr1
Solving Tower of Hanoi RR

  • จะได้ว่า จํานวนครั้งของการย้ายแผ่นทองคําจํานวน 64 แผ่น

    H64 = 264- 1 = 18,446,774,073,709,551,615

  • ซึ่งถ้าย้าย 1 แผ่นใช้เวลา 1 วินาที แล้วจะใช้เวลาทั้งหมดมากกว่า 500 พันล้านปีทีเดียว

Faculty of Informatics, Burapha University


ad