ผลต่างระหว่างรุ่นของ "204512/บรรยาย 2"
LewCPE (คุย | มีส่วนร่วม) |
LewCPE (คุย | มีส่วนร่วม) |
||
แถว 57: | แถว 57: | ||
=== Merge Sort === | === Merge Sort === | ||
− | + | ||
+ | Merge Sort เป็นอัลกอลิธึ่มแบบ Devide-and-Conquer อีกอันหนึ่งที่ อาศัยการแบ่งข้อมูลออกเป็นส่วนเล็กๆ แล้วเรียงลำดับให้ถูกต้อง แล้วจึงนำข้อมูลที่เรียงแล้วกลับมาต่อกัน | ||
+ | |||
+ | กระบวนการทำ Merge Sort มีสามขั้นคือ | ||
+ | |||
+ | * การแบ่งส่วนข้อมูล ได้ทำได้ทันที | ||
+ | * การเรียงข้อมูล ที่แบ่งไปครึ่งๆ แล้ว ใช้เวลา <math>T(\frac{n}{2}) \,</math> | ||
+ | * การนำข้อมูลที่เรียงแล้วสองชุดมาต่อกันใช้เวลา <math>\mathcal{O}(n)</math> | ||
+ | |||
+ | โดยรวมแล้ว Merge Sort ใช้เวลาในการทำงาน <math>T(n) = T(\frac{n}{2}) + \mathcal{O}(n)</math> | ||
+ | |||
+ | หรือก็คือ <math>\mathcal{O}(n\log{n})</math> | ||
=== Fast Furier Transform === | === Fast Furier Transform === |
รุ่นแก้ไขเมื่อ 06:51, 20 มิถุนายน 2550
เนื้อหา
เกริ่นนำ
หลักการของ Divide and Conquer Algorithm ประกอบไปด้วย 3 ส่วนดังนี้
- 1.แตกย่อยปัญหาเป็นชิ้นเล็ก หลายชิ้น
- 2.ทำการแก้ปัญหาย่อยเหล่านี้ด้วยวิธีการที่คล้ายกัน
- 3.คำตอบสุดท้ายหาได้จากการสรุปคำตอบทั้งหมดของทุกปัญหาย่อย
ดังจะเห็นได้จากปัญหาทั้งในชีวิตประจำวัน และปัญหาทางทฤษฎีคอมพิวเตอร์ สามารถเปรียบเทียบกรรมวิธี Divide and Conquer Algorithm กับ Lagacy Algorithm ได้ว่ามีประสิทธิ์ภาพต่างกันมากน้อยเพียงใด ซึ่งวิธีที่เปรียบเทียบเป็นที่นิยมโดยทั่วไปคือการหา Big O Notation มาเปรียบเทียบกัน
การวิเคราะห์เปรียบเทียบ Algorithm โดยการหา Big O Notation
Definition 1
T of n is in Big-Oh of f of n iff there're constants and such that
for all
- เช่น
จะเห็นได้ว่า definition 1 เป็นจริงได้เมื่อ
โดยทั่วไปแล้ว Big-Oh คือการแสดง Upper Bound ของฟังก์ขั่น ขณะที่ Big-Omega () เป็นการแสดงถึง Lower Bound ของฟังก์ชั่น
ตัวอย่างปัญหา ที่ใช้กรรมวิธีแก้ไขแบบ Divide & Conquer
Multiplication
การคูณกันของ ที่เป็น binary number ขนาด n-bit สามารถแยกออกได้เป็น
- สามารถสังเกตได้ว่า ประกอบไปด้วยพจน์ที่คูณกัน 4 ชุด
นิยาม Function ของเวลาที่ใช้ในการคำนวณตัวเลข n-bit เป็น
จากภาพ Tree มีความสูง ทำให้ได้ว่า
Gauss ได้เสนอวิธีการคูณในอีกรูปแบบหนึ่งที่ใช้การคูณเพียงสามครั้งจาก ทำให้อัลกอลิธึ่มได้รับการปรับปรุงเป็น ซึ่งเมื่อคำนวณในรูปแบบเดียวกับ Tree ด้านบนโดยถือว่าแต่ละ node จะมีลูกอยู่ 3 ชุดแทนที่จะเป็น 4 ชุด เราจะได้ว่า
Merge Sort
Merge Sort เป็นอัลกอลิธึ่มแบบ Devide-and-Conquer อีกอันหนึ่งที่ อาศัยการแบ่งข้อมูลออกเป็นส่วนเล็กๆ แล้วเรียงลำดับให้ถูกต้อง แล้วจึงนำข้อมูลที่เรียงแล้วกลับมาต่อกัน
กระบวนการทำ Merge Sort มีสามขั้นคือ
- การแบ่งส่วนข้อมูล ได้ทำได้ทันที
- การเรียงข้อมูล ที่แบ่งไปครึ่งๆ แล้ว ใช้เวลา
- การนำข้อมูลที่เรียงแล้วสองชุดมาต่อกันใช้เวลา
โดยรวมแล้ว Merge Sort ใช้เวลาในการทำงาน
หรือก็คือ
Fast Furier Transform
แหล่งข้อมูลอื่น
อธิบายเรื่อง Big-O-Notation ของ Wiki Pedia