หน่วยที่ 5 การเวียนเกิด

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
อสมการเชิงเส้นตัวแปรเดียว
Advertisements

บทที่ 6 บทที่ 6 คำสั่งแก้ไขปัญหาแบบ เลือก (CONDITION)
คณิตศาสตร์พื้นฐาน ค ชั้นมัธยมศึกษาปีที่ 3 โดย ครูชำนาญ ยันต์ทอง
บทที่ 5 การควบคุมทิศทางการทำงานของโปรแกรม
Structure Programming การเขียนโปรแกรมเชิงโครงสร้าง
คณิตศาสตร์พื้นฐาน ค ชั้นมัธยมศึกษาปีที่ 3 โดย ครูชำนาญ ยันต์ทอง
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
สื่อการสอนด้วยโปรมแกรม “Microsoft Multipoint”
ชนิดของข้อมูล และการคำนวณทางคณิตศาสตร์
หน่วยการเรียนรู้ที่ 2 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
การเขียนโปรแกรมภาษาปาสคาล โดยใช้โครงสร้างหลักทั้ง 3 โครงสร้าง
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
การทดลองในวิชาฟิสิกส์
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
หน่วยที่ 2 Introduction to Algorithm Analysis
หน่วยที่ 6 แถวลำดับ (Array)
การจัดเก็บข้อมูลในแฟ้มข้อมูลธรรมดา นั้น อาจจำเป็นที่ใช้แต่ละคน จะต้องมีแฟ้มข้อมูลของตนไว้เป็นส่วนตัว จึง อาจเป็นเหตุให้มีการเก็บข้อมูล ชนิดเดียวกันไว้หลาย.
การเลือกข้อมูลจาก List การกำหนดเงื่อนไขการป้อนข้อมูลด้วย Data Validation การใส่ Comment / แสดง / แก้ไข / ลบ.
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
คำสั่งควบคุมการทำงาน
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
แรงแบ่งได้เป็น 2 ลักษณะ คือ 1. แรงสัมผัส ( contact force )
IP-Addressing and Subneting
Number system (Review)
องค์ประกอบและเทคนิคการทำงาน
IP-Addressing and Subneting
อนุกรมอนันต์และการลู่เข้า
สมการเชิงเส้น (Linear equation)
แล้วทำการเรียงลำดับข้อมูลใหม่โดยเรียงจากน้อยไปหามาก
รายการ(List) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
BC320 Introduction to Computer Programming
การบันทึกรายการค้าในสมุดบัญชี
START INPUT R = 1 R = R Yes R*R <=2 No R = R PROCESS
Multistage Cluster Sampling
DC Voltmeter.
บทที่ 1 ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์
บทที่ 1 โครงสร้างคอมพิวเตอร์พื้นฐาน
บทที่ 8 เงื่อนไขตัดสินใจ
เซต (SET) ประวัติย่อของวิชาเซต ความหมายของเซต การเขียนแทนเซต
Asst.Prof. Dr.Surasak Mungsing
ชุดที่ 1 ไป เมนูรอง.
คำสั่ง Create , Insert, Delete, Update
กำหนดกรอบระยะเวลาการขึ้นทะเบียนปี2556/57 1. ข้าว
พื้นฐานการออกแบบ กราฟิก หมายถึง ศิลปะแขนงหนึ่งซึ่งใช้การสื่อความหมาย ด้วยเส้น สัญลักษณ์ รูปวาด ภาพถ่าย กราฟ แผนภูมิ การ์ตูน ฯลฯ เพื่อให้สามารถสื่อความหมายของข้อมูลได้ถูกต้องตรง.
Data storage II Introduction to Computer Science ( )
Recursion and Recurrence Relations
บริษัท พัฒนาวิชาการ (2535) จำกัด
การวิเคราะห์ฟอลต์แบบไม่สมมาตร Unsymmetrical Fault Analysis
บทที่ 9 การทำซ้ำ (Loop).
2. ประโยคเงื่อนไข ข้อความที่ประกอบด้วย 2 ข้อความที่เชื่อมต่อกันด้วย ถ้า... แล้ว... เรียกข้อความในลักษณะเช่นนี้ว่า ประโยคเงื่อนไข - เรียกข้อความที่ตามหลัง.
เอกสารประกอบการสอน รายวิชา ประติมากรรมเพื่อการพาณิชย์ (Commercial Sculpture) โดย อาจารย์สันติสุข แหล่งสนาม ภาคการศึกษาที่ 2/2559.
บทที่ 2 ทฤษฎีบทพีทาโกรัส.
หน่วยที่ 6 อะเรย์ของอักขระ
บทที่ 9 การเรียงลำดับข้อมูล (Sorting)
บทที่ 7 การประมวลผลอาร์เรย์
บทที่ 6 เงินลงทุนในตราสารหนี้และตราสารทุน
ค่ารูรับแสง - F/Stop ค่ารูรับแสงที่มีค่าตัวเลขต่ำใกล้เคียง 1 มากเท่าไหร่ ค่าของรูรับแสงนั้นก็ยิ่งมีความกว้างมาก เพราะเราเปรียบเทียบค่าความสว่างที่ 1:1.
มัคคุเทศก์เป็นบุคคลที่มีความสำคัญต่ออุตสาหกรรมท่องเที่ยว ในฐานะเป็นผู้เชื่อมโยง ความเข้าใจอันดีให้เกิดขึ้นระหว่างนักท่องเที่ยวกับแหล่งท่องเที่ยวหรือสิ่งที่เขาสนใจ.
Chapter 3 : Array.
รูปนิสิต บทคัดย่อ ผลการทดลอง วัตถุประสงค์ วิธีการที่นำเสนอ บทนำ
ฟังก์ชันของโปรแกรม Computer Game Programming
แนวทางการออกแบบนิตยสาร
บทที่ 4 การจำลองข้อมูลและกระบวนการ (Data and Process Modeling)
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
Decision: Single and Double Selection (if and if-else statement)
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic.
บทที่ 7 การบัญชีภาษีมูลค่าเพิ่ม
กระดาษทำการ (หลักการและภาคปฏิบัติ)
การใช้ระบบสารสนเทศในการวิเคราะห์ข่าว
ใบสำเนางานนำเสนอ:

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

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

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

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

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

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

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

Fibonacci function ลำดับของไฟโบนักซีเป็นดังนี้ 0,1,1,2,3,5,8,13,… ลำดับของไฟโบนักซีเป็นดังนี้ 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) (Base case)

Fibonacci 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 F(0) = 0 F(1) = 1 F(2) = F(1) + F(0) = 1+0 = 1 … … …

Ackermann Function ถ้า m = 0 คำตอบของค่า A(0,n) = n+1 เป็นฟังก์ชั่นที่มีองค์ประกอบของเลขจำนวนเต็มบวก 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))

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) 3. if (m<>0) and (n<>0) then set ACKERMANN = ACKERMANN(m-1, ACKERMANN (m,n-1)) 4. RETURN

Ackermann Function แสดงวิธีการหาค่า 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

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

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(n-1,B,A,C)

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

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