Tower of Hanoi.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
คำสั่งควบคุมในโปรแกรม Interactive C
Advertisements

Bansomdej Chaopraya Rajabhat University
สรุปคำสั่ง if(เงื่อนไข)
Chapter 8 : Logic Modeling & Data Modeling
การทำงานแบบเลือกทำ (Selection)
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงาน.
ครั้งที่ 12 การค้นหาข้อมูล (Searching)
ขอความคำสั่งควบคุม แบงเปนกลุมใหญ ๆ ได 2 กลุม คือ
สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)
โครงสร้างควบคุมและคำสั่งแบบเงื่อนไข
Data Structures and Algorithms
Data Structures and Algorithms
Lecture 13: ฟังก์ชันเรียกตัวเอง
Stack Holidays/seasonal content.
การเรียงลำดับและการค้นหาแบบง่าย
ลักษณะการทำงานของ Stack
Network Model แบบจำลอง OSI
บทที่ 4 การตัดสินใจในการเขียนโปรแกรม
หน่วยที่ 1 ระบบคอมพิวเตอร์
วิชา การออกแบบและพัฒนาซอฟต์แวร์
โปรแกรมย่อย : Pascal Procedure
ระบบเครือข่ายคอมพิวเตอร์
คำสั่งแบบมีเงื่อนไข IF Statement
การควบคุมทิศทางการทำงานของโปรแกรม
การเขียนผังงานแบบโครงสร้าง
ตัวอย่างการใช้คำสั่ง IF_THEN
Asst.Prof. Dr.Surasak Mungsing
MAT 231: คณิตศาสตร์ไม่ต่อเนื่อง (6) ทรี-ต้นไม้(Trees)
การวิเคราะห์ประสิทธิภาพของอัลกอริธึม (Performance Analysis)
Flowchart รูปแบบ If ซ้อน If ก็คือ การเอา If ไปไว้ใน If ทางฝั่ง True  โดยโครงสร้าง If ซ้อน If นั้นเอาไว้ใช้กับ กรณีตรวจสอบเงื่อนไขที่มากกว่า 2 กรณี เพราะเนื่องจาก.
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงานลักษณะของฟังก์ชั่นมีความรอบรัดสั้นกว่าแบบวนลูป.
คำสั่งควบคุมการทำงาน
Chapter 6 Decision Statement
โครงสร้างข้อมูลแบบคิว
คิว ลักษณะการทำงานของ Queue การดำเนินการของ Queue การตรวจสอบ Queue
สแตค(stack) โครงสร้างข้อมูลแบบ Stack - การสร้าง Stack
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
โครงสร้างแบบลำดับ คำสั่ง x คำสั่ง y.
คำสั่งควบคุมการทำงานของ ActionScripts
Modular Algorithm Function & Procedure By Nattapong Songneam
หลักการทำ Animation แบบง่ายๆ
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
Computer Programming for Engineers
Control Statements.
บทที่ 10 คำสั่งควบคุม OUTLINE 1. คำสั่งแบบเรียงลำดับ (Sequence)
ฟังก์ชัน.
หลักการเขียนโปรแกรม ( )
หลักการเขียนโปรแกรม ( )
กองซ้อน ยอดกองซ้อน (stack).
School of Information Communication Technology,
ศูนย์ประสานงานการรับส่งต่อผู้ป่วย
Recursive Method.
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
การแบ่งแยกและเอาชนะ Divide & Conquer
Wattanapong suttapak SE, ICT University of Phayao.
รายการ (Lis t) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong.
การประยุกต์ใช้ Stack การประยุกต์ใช้ Stack
BC322 : Computer Programing (ครั้งที่ 1)
หน่วยที่ 5 การเวียนเกิด
รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Recursion 1 Recursion Lecturers : Boontee Kruatrachue Room.
Recursion Lecturers : Boontee Kruatrachue Room no Kritawan Siriboon Room no. 913 Text : Data Structures & Algorithm.
การแสดงขั้นตอนวิธีด้วยรหัสเทียม (Pseudo-Code)
บทที่ 2 ขั้นตอนการทำงาน (Algorithm)
การควบคุมและตรวจสอบภายใน รองผู้ว่าการตรวจเงินแผ่นดิน
Problem Solving ขั้นตอนวิธีและการแก้ปัญหาสำหรับวิทยาการคอมพิวเตอร์
Recursion and Recurrence Relations
อุทธรณ์,ฎีกา.
狗隻的訓練 聖士提反女子中學附屬小學 孫晞庭.
การเขียนโปรแกรมด้วยภาษาไพทอน การโปรแกรมด้วยไพทอนเพื่อประยุกต์ใช้งาน
การสร้างผังงานโปรแกรม
ใบสำเนางานนำเสนอ:

Tower of Hanoi

เป้าหมาย & กติกา

เสาสำรอง (auxiliary) เสาต้นทาง (from) เสาปลายทาง (to)

Algorithm - Tower of Hanoi กรณี Base case : เมื่อ N=1(เหลือจานใบเดียวในเสา) ย้ายจากใบล่างสุดจากเสาต้นทาง ไปยัง เสาปลายทาง กรณี Recursive case : (มีจำนวน N จานในเสา) ย้าย N - 1 จาน จาก เสาต้นทาง ไปยัง เสาสำรอง ย้าย จานใบที่ N จาก เสาต้นทาง ไปยัง เสาปลายทาง ย้าย N – 1 จาน จาก เสาสำรอง ไปยัง เสาปลายทาง

Funtion moveDisks(N,frm,to,aux) Algorithm - Tower of Hanoi Funtion moveDisks(N,frm,to,aux) 1. if(N=1) then Move Disk 1 from frm -> to 2. Else { moveDisks(N-1,frm,aux,to) Move Disk N from frm -> to moveDisks(N-1,aux,to,frm) } 3.Return

N=1  Move Disk N from frm (A) -> to (C) A B C N=1  Move Disk N from frm (A) -> to (C)

N=1  Move Disk N from frm (A) -> to (C) A B C N=1  Move Disk N from frm (A) -> to (C)

กรณีเมื่อมีจานเดียว ( N = 2 ) 1 2 A B C N=2  moveDisks(2,A,C,B)

กรณีเมื่อมีจานเดียว ( N = 2 ) moveDisks(N,frm,to,aux) moveDisks(N-1,frm,aux,to) Move Disk N from frm -> to moveDisks(N-1,aux,to,frm) moveDisks(1,A,B,C) *Move Disk 1 from A -> B moveDisks(2,A,C,B) moveDisks(1,A,B,C) *Move Disk 2 from A -> C moveDisks(1,B,C,A) moveDisks(1,B,C,A) *Move Disk 1 from B -> C

กรณีเมื่อมีจานเดียว ( N = 2 ) ผลของโปรแกรม 1. Move Disk 1 from A -> B 2. Move Disk 2 from A -> C 3. Move Disk 1 from B -> C

N=1  1. Move Disk 1 from A -> B 2 1 A B C N=1  1. Move Disk 1 from A -> B

N=1  2. Move Disk 2 from A -> C A B C N=1  2. Move Disk 2 from A -> C

N=1  3. Move Disk 1 from B -> C 2 A B C N=1  3. Move Disk 1 from B -> C

กรณีเมื่อมีจานเดียว ( N = 3 ) 1 2 3 A B C

กรณีเมื่อมีจานเดียว ( N = 3 ) moveDisks(3,A,C,B) moveDisks(2,A,B,C) *Move Disk 2 from A -> C moveDisks(2,B,C,A)

กรณีเมื่อมีจานเดียว ( N = 3 ) moveDisks(2,A,C,B) moveDisks(1,A,B,C) *Move Disk 2 from A -> C moveDisks(1,B,C,A) moveDisks(3,A,C,B) moveDisks(2,A,B,C) *Move Disk 3 from A -> C moveDisks(2,B,C,A) moveDisks(2,B,C,A) moveDisks(1,A,B,C) *Move Disk 2 from A -> C moveDisks(1,B,C,A)

กรณีเมื่อมีจานเดียว ( N = 3 ) moveDisks(1,A,C,B) *Move Disk 1 from A -> C moveDisks(2,A,B,C) moveDisks(1,A,C,B) *Move Disk 2 from A -> B moveDisks(1,C,B,A) moveDisks(1,C,B,A) *Move Disk 1 from C -> B moveDisks(3,A,C,B) moveDisks(2,A,B,C) *Move Disk 3 from A -> C moveDisks(2,B,C,A) moveDisks(1,B,A,C) *Move Disk 1 from B -> A moveDisks(2,B,C,A) moveDisks(1,B,A,C) *Move Disk 2 from B -> C moveDisks(1,A,C,B) moveDisks(1,A,C,B) *Move Disk 1 from A -> C

กรณีเมื่อมีจานเดียว ( N = 3 ) ผลของโปรแกรม 1. Move Disk 1 from A -> C 2. Move Disk 2 from A -> B 3. Move Disk 1 from C -> B 4. Move Disk 3 from A -> C 5. Move Disk 1 from B -> A 6. Move Disk 2 from B -> C 7. Move Disk 1 from A -> C

A B C 2 3 1 กรณีเมื่อมีจานเดียว ( N = 3 ) 1. Move Disk 1 from A -> C

A B C 3 2 1 กรณีเมื่อมีจานเดียว ( N = 3 ) 2. Move Disk 2 from A -> B

A B C 1 3 2 กรณีเมื่อมีจานเดียว ( N = 3 ) 3. Move Disk 1 from C -> B

A B C 1 2 3 กรณีเมื่อมีจานเดียว ( N = 3 ) 4. Move Disk 3 from A -> C

A B C 1 2 3 กรณีเมื่อมีจานเดียว ( N = 3 ) 5. Move Disk 1 from B -> A

A B C 2 1 3 กรณีเมื่อมีจานเดียว ( N = 3 ) 6. Move Disk 2 from B -> C

A B C 1 2 3 กรณีเมื่อมีจานเดียว ( N = 3 ) 7. Move Disk 1 from A -> C

วิเคราะห์จำนวนครั้ง n=1 จำนวน 1 ครั้ง  21 -1 n=2 จำนวน 1 ครั้ง  21 -1 n=3 จำนวน 1 ครั้ง  21 -1 n=N จำนวน 1 ครั้ง  2N -1

PROGRAME

Thank for watch our presentation THE END Thank for watch our presentation