งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

1 หน่วยที่ 5 การเวียนเกิด กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "1 หน่วยที่ 5 การเวียนเกิด กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี"— ใบสำเนางานนำเสนอ:

1 1 หน่วยที่ 5 การเวียนเกิด กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี

2 2 การเรียกตัวเอง (Recursion Algorithm ) การเรียกตัวเอง (Recursion) คือขบวนการเฉพาะที่ใช้สำหรับ ปัญหาบางอย่าง ซึ่งใช้หลักการแบ่งวิธีการแก้ปัญหาออกเป็น วิธีย่อยๆ 2 ส่วนหรือมากกว่า ซึ่งแต่ละวิธีอาจอยู่ในรูปแบบใด รูปแบบหนึ่งใน 2 รูปแบบดังนี้ Base case คือวิธีที่สามารถสรุปหาคำตอบในลักษณะ ธรรมดา เช่น คำตอบอาจเป็นค่าคงที่ที่กำหนดไว้แล้ว หรือคำตอบนั้นอาจได้มาจากการคำนวณโดยตรง เป็น ต้น Recursive cases คือวิธีการหาคำตอบซึ่งจะต้องทำด้วย วิธีการทำซ้ำหลักการเดิมที่ใช้แก้ปัญหา

3 3 เมื่อผ่านกรรมวิธีแก้ปัญหาแบบเรียกตัวเองแล้ว ปัญหา จะถูกแบ่งออกเป็นส่วนย่อย ๆ จำนวนมาก ซ้อนกันเป็น ชั้น ๆ แต่ละชั้นใช้วิธีการแก้ปัญหาแบบเดียวกัน จนกระทั่งกลายเป็นปัญหาย่อยเล็กที่สุดที่สามารถหา คำตอบได้ด้วยกรณีของ base case แล้ว จะทำให้ สามารถหาคำตอบย้อนกลับของปัญหากรณีของ recursive case ที่ใหญ่ขึ้นเรื่อย ๆ จนได้คำตอบของ ปัญหาทั้งหมด การเรียกตัวเอง (Recursion Algorithm )

4 4 Main คำตอบ 2 Proc 4 Proc 2 Proc 5 คำตอบ 1Proc 3 Proc 1 การเรียกตัวเองทางอ้อม Proc1 เรียกใช้ Proc3 Proc3 เรียกฝช้ Proc5 Proc5 เรียกใช้ Proc1 การเรียกตัวเองโดยตรง Proc4 เรียกใช้ Proc4

5 5 Factorial function n factorial (n!) คือผลคูณของเลขจำนวนเต็มบวกตั้งแต่ 1 ถึง n เช่น 3! = 1*2*3 4! = 1*2*3*4 n! = 1*2*3*4* … *(n-2)*(n-1)*n หรือ n! = n*(n-1)*(n-2)* … *4*3*2*1 และกำหนดให้ 0!=1

6 6 เราสามารถกำหนดให้ 4! เป็นแบบรีเคอร์ซีฟ ได้ดังนี้ 4!=4*3! 3!=3*2! 2!=2*1! 1!=1*0! 0!=1 1!=1*1=1 2!=2*1=2 3!=3*2=6 4!=4*6=24 Factorial function

7 7 สรุปได้ว่า n!=n*(n-1)! (n-1)!=(n-1)*(n-2)! (n-2)!=(n-2)*(n-3)! ……… 0!=1 ดังนั้น เราจึงสามารถหาคำตอบของ n! ได้เป็น 2 กรณีคือ 1. ถ้า n มีค่าเท่ากับ 0 คำตอบที่ได้คือ n!=1 (base case) 2. ถ้า n มีค่ามากกว่า 0 คำตอบที่ได้คือ n!=n*(n-1)! (recursive case) Factorial function

8 8 Function FACTORIAL(n) 1. if n = 0 then set FACTORIAL = 1 else 2. set FACTORIAL = n * FACTORIAL (n-1) 3. RETURN อัลกอริทึมการหาค่า n!

9 9 ลำดับของไฟโบนักซีเป็นดังนี้ 0,1,1,2,3,5,8,13, … กำหนดให้ Fib(0)=0 และ Fib(1)=1 การคำนวณแต่ละเทอม ของผลบวกของเลขไฟโบนักซีก่อนหน้าสองตัวทำได้ดัง ตัวอย่างต่อไปนี้ Fib(3)=Fib(2)+Fib(1)=1+1=2 Fib(6)=Fib(5)+Fib(4)=5+3=8 ดังนั้น ลำดับของไฟโบนักซีสามารถกำหนดได้ดังนี้ Fib(0)=0 Fib(1)=1 Fib(n)=Fib(n-1)+Fib(n-2) สำหรับ n>=2 (Recursive case) Fibonacci function (Base case)

10 10 Function FIBONACCI(n) 1. if (n=0) or (n=1) then set FIBONACCI = n else 2. set FIBONACCI = FIBONACCI(n-1)+FIBONACCI(n-2) 3. RETURN Fibonacci function อัลกอริทึมการหาค่า Fibonacci ของ n

11 11 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(5) = F(4) + F(3) = 3+2 = 5 F(6) = F(5) + F(4) = 5+3 = 8 ……… Fibonacci function

12 12 Ackermann Function เป็นฟังก์ชั่นที่มีองค์ประกอบของเลขจำนวนเต็มบวก 2 ตัว คือ m,n โดยที่ m,n มีค่าตั้งแต่ 0,1,2, … การหาคำตอบใช้เทคนิค BackTracking คือถ้าต้องการหาค่าของ ข้อมูลตัวใด จะต้องค้นหาข้อมูลตัวอื่นที่มีความเกี่ยวเนื่องกับข้อมูล ตัวนั้นทั้งหมดให้ได้ก่อน โดยเงื่อนไขการหาคำตอบมีดังนี้ ถ้า m = 0 คำตอบของค่า A(0,n) = n+1 ถ้า m  0 แต่ n = 0 ; A(m,0) = A(m-1,1) ถ้า m  0 และ n  0 ; A(m,n) = A(m-1,A(m,n-1))

13 13 Ackermann Function Function ACKERMANN(m,n) 1. if m = 0 then set ACKERMANN = n+1 else 2.if (m<>0) and (n=0) then set ACKERMANN = ACKERMANN(m-1,1) else 3.if (m<>0) and (n<>0) then set ACKERMANN = ACKERMANN(m-1, ACKERMANN (m,n-1)) 4. RETURN

14 14 แสดงวิธีการหาค่า Ackermann Function ของ A(1,3) A(1,3) = A(0,A(1,2)) A(1,2)=A(0,A(1,1)) A(1,1)=A(0,A(1,0)) A(1,0)=A(0,1) A(0,1)=1+1=2 A(1,0)=2 A(1,1)=A(0,2)=2+1=3 A(1,2)=A(0,3)=3+1=4 A(1,3)=A(0,4)=4+1=5 Ackermann Function

15 15 Tower of Hanoi หอคอยฮานอย (Tower of Hanoi) คือ ปัญหาของการย้ายแผ่นจาน ขนาดต่างๆ จากหลักหนึ่ง ไปยังอีก หลักหนึ่ง โดยมีหลักสำหรับวางซ้อน จานอยู่ 3 หลัก ( สมมติให้เป็นหลัก A,B,C) โดยกำหนดเงื่อนไขในการ เคลื่อนย้ายแผ่นจานดังนี้

16 16 Tower of Hanoi เคลื่อนย้ายจานได้ครั้งละ 1 แผ่น ที่อยู่ด้าน บนสุดเท่านั้น แผ่นใหญ่ไม่สามารถซ้อนทับแผ่นเล็กได้ กรณี n=1 ถ้าต้องการย้ายจานจาก หลัก A ไปหลัก C อาจเขียนในรูปคำสั่งได้เป็น Tower_Move(1,A,B,C) ดังนั้น กรณีที่ n =2,3,4, … จะต้องทำ 3 ขั้นตอนต่อเนื่อง คือ Tower_Move(n-1,A,C,B) Tower_Move(1,A,B,C) Tower_Move(n-1,B,A,C)

17 17 Tower of Hanoi Function TOWER_MOVE(n,A,B,C) 1. if n = 1 then Move A to C and RETURN 2. TOWER_MOVE(n-1,A,C,B) 3. Move A to C 4. TOWER_MOVE(n-1,B,A,C) 5. RETURN

18 18 แบบฝึกหัด  จงแสดงกรรมวิธีคำนวณหาค่าของ 8! ด้วยวิธีเรียกตัวเอง  จงแสดงกรรมวิธีการหาค่าอนุกรม Fibonacci  จงแสดงกรรมวิธีหาค่า Ackermann Function ของ A(3,5)  จงแสดงขั้นตอนการเคลื่อนย้าย แผ่นจานในปัญหาหอคอยฮานอย เมื่อกำหนดให้ n=4


ดาวน์โหลด ppt 1 หน่วยที่ 5 การเวียนเกิด กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี

งานนำเสนอที่คล้ายกัน


Ads by Google