การแบ่งแยกและเอาชนะ Divide & Conquer

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โปรแกรมฝึกหัด การเลื่อนและคลิกเมาส์
Advertisements

DSP 6 The Fast Fourier Transform (FFT) การแปลงฟูริเยร์แบบเร็ว
อัลกอริทึม ITS101 2/2011.
วิธีการตั้งค่าและทดสอบ เครื่องคอมพิวเตอร์ก่อนใช้งาน
Proprietary and Confidential © Astadia, Inc. | 1.
วิชา องค์ประกอบศิลป์สำหรับคอมพิวเตอร์ รหัส
การศึกษาและประยุกต์ใช้ขั้นตอนวิธีเชิง วิวัฒน์แบบหลายจุดประสงค์บนคลังข้อมูล เจเมทัล Study of Evolutionary Algorithm in Multi- objective on Library jMetal.
Chapter 2 Root of Nonlinear Functions
DSP 6 The Fast Fourier Transform (FFT) การแปลงฟูริเยร์แบบเร็ว
EEET0485 Digital Signal Processing Asst.Prof. Peerapol Yuvapoositanon DSP3-1 ผศ.ดร. พีระพล ยุวภูษิตานนท์ ภาควิชา วิศวกรรมอิเล็กทรอนิกส์ DSP 6 The Fast.
นางสาวกิติยา จันทรุกขา นางสาวอรุณโรจน์ ชูสกุล
ชื่อสมบัติของการเท่ากัน
โครงการแลกเปลี่ยนเรียนรู้ เกี่ยวกับระเบียบกระทรวงการคลัง
การใช้งานโปรแกรม Excel เบื้องต้น
AVL Tree.
การจัดเก็บข้อมูลตามตัวบ่งชี้ สกอ. และ สมศ.
เนื้อหา ประเภทของโปรแกรมภาษา ขั้นตอนการพัฒนาโปรแกรม
NUMBER SYSTEM เลขฐานสิบ (Decimal Number) เลขฐานสอง (Binary Number)
(เฟส 1 ระยะทดลองใช้งาน อรม.อร.)
Use Case Diagram.
กลุ่มสาระการเรียนรู้ คณิตศาสตร์ โรงเรียนบ้านหนองกุง อำเภอนาเชือก
C Programming Lecture no. 6: Function.
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
A.5 Solving Equations การแก้สมการ.
กระบวนการคิดทางคณิตศาสตร์
บทที่ 8 ระบบบัญชีสินทรัพย์ถาวร
ขั้นตอนวิธี (Algorithm)
Asst.Prof. Dr.Surasak Mungsing
CSC201 Analysis and Design of Algorithms Greedy, Divide and Conquer
การแปลงภาพสีเทาให้เป็นภาพขาวดำ
Searching.
การเขียนรายงานการใช้เอกสารประกอบการสอน
Kampol chanchoengpan it สถาปัตยกรรมคอมพิวเตอร์ Arithmetic and Logic Unit 1.
บทที่ 2 อาร์เรย์ อาร์เรย์ คือ ชุดของตัวแปรเดียวกัน ซึ่งสมาชิกของอาร์เรย์จะเป็นตัวแปรพื้นฐาน จำนวนสมาชิกในอาร์เรย์มีขนานแน่นอน และสมาชิกของอาร์เรย์แต้ละตัว.
เครื่องมือช่วยในการจับประเด็น รวบรวมความคิดให้เป็นหมวดหมู่
แนวทางการปฏิบัติโครงการจูงมือ น้องน้อยบนดอยสูง 1.
โครงสร้างข้อมูลแบบคิว
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ณัฏฐวุฒิ เอี่ยมอินทร์
สัปดาห์ที่ 7 การแปลงลาปลาซ The Laplace Transform.
บทที่ 3 การวิเคราะห์ Analysis.
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)
การดำเนินการทดสอบทางการศึกษาแห่งชาติ (O-NET)
วิชา วิศวกรรมซอฟต์แวร์ (Software Engineering)
ค21201 คณิตศาสตร์เพิ่มเติม 1
ความหมายของวิทยาศาสตร์
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
School of Information Communication Technology,
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
Recursive Method.
โครงสร้างข้อมูล Queues
จำนวนจริง จำนวนอตรรกยะ จำนวนตรรกยะ เศษส่วน จำนวนเต็ม จำนวนเต็มบวก
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
การค้นในปริภูมิสถานะ
สื่อการสอนด้วยโปรมแกรม “Microsoft Multipoint”
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
อัลกอริทึมแบบละโมบ.
โครงสร้างข้อมูลและอังกอลิทึม
บทที่ 5 Function. Function Function เป็นการแบ่งโค้ดโปรแกรมออกเป็นส่วนย่อยๆ เพื่อทำงานบางอย่าง - โค้ดโปรแกรมเรียงต่อกันยาว - สามารถเรียกใช้ Function ซ้ำได้
การจัดเรียงข้อมูล (sorting)
โครงสร้างข้อมูลแบบ สแตก (stack)
การค้นในปริภูมิสถานะ
กำหนดการพลวัต (Dynamic programming)
Week 13 Basic Algorithm 2 (Searching)
การแบ่งแยกและเอาชนะ Divide & Conquer
โครงการเทคนิคและเทคโนโลยีสนับสนุนงานตรวจสอบ “Risk & Control” จัดโดย สำนักงานตรวจสอบภายใน จุฬาฯ วันที่ 22 กรกฎาคม 2553.
ใบสำเนางานนำเสนอ:

การแบ่งแยกและเอาชนะ Divide & Conquer

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

หัวข้อ โครงของอัลกอริทึมแบบ Divide & Conquer ตัวอย่าง Binary search Modular exponentiation Karatsuba integer multiplication Strassen matrix multiplication Merge sort Quick sort Quick select Closet point Min + Max Celebrity problem

โครงของอัลกอริทึมแบบ Divide & Conquer

Divide – Conquer - Combine DQ ( P) { if ( P is trivial ) return Solve ( P ) Divide P into P1, P2, … , Pk for ( i =1to k ) Si = DQ ( Pi ) S = Combine ( S1, S2, …, Sk) return S }

Binary Search

Binary Search input : x และ 𝐷=< 𝑑 1 , 𝑑 2 , 𝑑 3 ,…, 𝑑 𝑛 > 𝑑 1 ≤ 𝑑 2 ≤𝑑 3 ≤…≤ 𝑑 𝑛 x และ 𝑑 𝑖 เป็นจำนวนจริง output : ค่า k ที่ 𝑑 𝑘 =𝑥 ถ้าหาไม่พบ คืน -1

Binary Search bsearch( d[1…n], x, left, right ) { if ( left > right ) return -1 mid = (𝑙𝑒𝑓𝑡+𝑟𝑖𝑔ℎ𝑡)/2 if ( x == d[mid] ) return mid if ( x < d[mid]) return bsearch( d, x, left, mid – 1) else return bsearch( d, x, mid + 1, right) }

บางครั้งใช้ binary search ดีกว่า

Modular exponentiation

2 60 𝑚𝑜𝑑 10=? แสดงโดยการใช้เครื่องคิดเลขให้ดูก่อน

𝑎 𝑘 𝑚𝑜𝑑 𝑚

การคำนวณ 𝑎 𝑘 𝑚𝑜𝑑 𝑚

การคูณหารเลขขนาดใหญ่ไม่ใช่ Θ(1)

การหาค่า Fibonacci

Karatsuba integer multiplication

A x B : คูณได้เร็วกว่า Θ( 𝑛 2 )

A x B

A x B อีกแบบ

A x B : Karatsuba (1962)

เปรียบเทียบเวลาการทำงาน

Strassen matrix multiplication

A x B : การคูณเมทริกซ์ MatrixMult( A[1..n][1..n], B[1..n][1..n] ){ C = new array[1..n][1..n] for ( i = 1; i <= n; i++ ) { for(j= 1; j<= n; j++){ C[i][j] = 0 for ( k = 1; k <= n; k++ ) { C[i][j] += A[i][k] * B[k][j] } return C n

A x B : Divide & Conquer

A x B : Divide & Conquer

A x B : Strassen (1969)

Master Method (ตีความ)

Merge Sort

Merge Sort

Merge Sort

Merge Sort

Merge

Merge : #cmps

Merge Sort : ถ้าแบ่ง 30 - 70

Quick Sort

Quick Sort

Quick Sort

Partition (การแบ่งส่วน)

Quick Sort

Quick Sort : กรณีเร็วสุด

Quick Sort : กรณีช้าสุด

Quick Sort : กรณีเฉลี่ย

Quick Sort : กรณีเฉลี่ย

Quick Sort : เวลาการทำงาน

เวลาการทำงาน

เวลา / n log n