Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 03: ขั้นตอนวิธีและการวิเคราะห์ขั้นตอนวิธี Dr.Surasak.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Array ธนวัฒน์ แซ่ เอียบ. The concept of array อาเรย์ : กลุ่มของข้อมูลที่มีชนิดเดียวกันและถูก จัดเก็บเรียงลำดับต่อเนื่องกัน ตัวแปร x สามารถจัดเก็บค่ามากกว่า.
Advertisements

เฉลยใบงานที่ 1 องค์ประกอบและหลักการทำงานของคอมพิวเตอร์
คอมพิวเตอร์ช่วยสอน (CAI)
1 Search & Sort Search & Sort วรวิทย์ พูลสวัสดิ์.
เทคนิคการตรวจสอบภายใน
หน่วยการเรียนรู้ที่ 2 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
วิธีการสอนแบบกระบวนการเสนอ ด้วยข้อมูลมีความแตกต่าง โดย นางสาวธนภรณ์ นาวินวิจิต วิทยาลัยเทคโนโลยีเมืองชล บริหารธุรกิจ (M-BAC)
การเขียนโปรแกรมภาษาปาสคาล โดยใช้โครงสร้างหลักทั้ง 3 โครงสร้าง
หน่วยที่ 2 Introduction to Algorithm Analysis
หน่วยที่ 5 การเวียนเกิด
การวิเคราะห์ขั้นตอนวิธีการแก้ปัญหา
หน่วยที่ 6 แถวลำดับ (Array)
การประเมินผลโครงการ คปสอ.คลองใหญ่.
เรื่อง หลักการเขียนโปรแกรม เบื้องต้น จัดทำโดย นางสาวชาดา ศักดิ์บุญญารัตน์
การพัฒนาบทเรียนคอมพิวเตอร์ช่วยสอน เรื่อง หลักการทำงานของคอมพิวเตอร์ วิชาคอมพิวเตอร์พื้นฐาน สำหรับนักเรียนชั้นมัธยมศึกษาปีที่ 1 โรงเรียนเฉลิมราชประชาอุทิศ.
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
หน่วยที่ 1 ปริมาณทางฟิสิกส์ และเวกเตอร์
Material requirements planning (MRP) systems
การตรวจสอบคุณภาพเครื่องมือ
สถิติเบื้องต้นสำหรับการวิเคราะห์ข้อมูล
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การทำ Normalization 14/11/61.
การประยุกต์ Logic Gates ภาค 2
โครงสร้างข้อมูลและอัลกอริทึมเบื้องต้น
บทที่ 1 สถาปัตยกรรมของระบบฐานข้อมูล (Database Architecture)
ACCOUNTING FOR INVENTORY
แล้วทำการเรียงลำดับข้อมูลใหม่โดยเรียงจากน้อยไปหามาก
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
BC320 Introduction to Computer Programming
.:: ทรงปัญญา ศรัทธาธรรม นำสังคม .::
START INPUT R = 1 R = R Yes R*R <=2 No R = R PROCESS
โครงสร้างภาษา C Arduino
QUEUE คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ.
กลุ่มคำและประโยค ภาษาไทย ม. ๓
ประเภทแผ่นโปร่งใส (แผ่นใส) รายวิชา ออปแอมป์และลิเนียร์ไอซี
Asst.Prof. Dr.Surasak Mungsing
Dr.Surasak Mungsing CSE 221/ICT221 Analysis and Design of Algorithms Lecture 04: Time complexity analysis in form of Big-Oh.
บทที่ 8 การควบคุมโครงการ
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 04: การวิเคราะห์หาความซับซ้อนด้านเวลา ในรูป.
บทที่ 3 แฟ้มข้อมูลและฐานข้อมูล
.:: ทรงปัญญา ศรัทธาธรรม นำสังคม .::
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
กำหนดกรอบระยะเวลาการขึ้นทะเบียนปี2556/57 1. ข้าว
Data storage II Introduction to Computer Science ( )
บริษัท พัฒนาวิชาการ (2535) จำกัด
SMS News Distribute Service
วัฏจักรหิน วัฏจักรหิน : วัดวาอาราม หินงามบ้านเรา
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
วิธีการสุ่มตัวอย่าง วิธีการสุ่มตัวอย่างมี 2 วิธี
Data Structures and Algorithms 2/2561
BASIC STATISTICS MEAN / MODE / MEDIAN / SD / CV.
บทที่ 9 การเรียงลำดับข้อมูล (Sorting)
บทที่ 7 การประมวลผลอาร์เรย์
บทที่ 8 การแก้ไขข้อผิดพลาดโปรแกรม(Debugging)
การวิเคราะห์และออกแบบขั้นตอนวิธี
2 โครงสร้างข้อมูลแบบสแตก (STACK).
บทที่ 2 โครงสร้างข้อมูลแบบแถวลำดับหรืออาร์เรย์ (Array)
การจัดบล๊อคและบัฟเฟอร์ (Blocking and Buffering)
Array: One Dimension Programming I 9.
การเติบโตของฟังก์ชัน (Growth of Functions)
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
การกระจายอายุของบุคลากร วิทยาลัยดุริยางคศิลป์
โครงการถ่ายทอดเทคโนโลยีถนนรีไซเคิลเพื่อลดขยะพลาสติกใน 4 ภูมิภาค
ทายสิอะไรเอ่ย ? กลม เขียวเปรี้ยว เฉลย ทายสิอะไรเอ่ย ? ขาว มันจืด เฉลย.
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic.
กำหนดการเชิงเส้น : การแก้ปัญหาด้วยวิธีกราฟ
Class Diagram.
ใบสำเนางานนำเสนอ:

Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 03: ขั้นตอนวิธีและการวิเคราะห์ขั้นตอนวิธี Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th Sep-19

ความหมายของ Algorithm วิธีการทำงานให้สำเร็จ Recipe for getting things done successfully "Recipe" – ลำดับการทำงานที่ได้กำหนดขั้นตอนไว้อย่างดี "things" – ปัญหาด้านการคำนวณที่ระบุความสัมพันธ์ของ input/output "done" – ภายในเวลาและขั้นตอนการทำงานที่แน่นอน "successfully" – อย่างถูกต้อง วิธีการพิเศษของการแก้ปัญหาบางประเภท Any special method of solving a certain kind of problem (Webster Dictionary) 23-Sep-19

ความหมายของ Program โปรแกรมคือการแสดงข้อความของ algorithm ในรูปแบบของภาษาโปรแกรม ชุดของคำสั่งที่คอมพิวเตอร์ใช้ในการคำนวณเพื่อแก้ปัญหา 23-Sep-19

ตัวอย่างปัญหา ปัญหา: ข้อมูลนำเข้าคือชุดของตัวเลขจำนวนเต็มที่เก็บอยู่ใน array ให้หาจำนวนที่มีค่าน้อยที่สุด 23-Sep-19

ปัญหา ข้อมูลนำเข้าคือชุดของตัวเลขจำนวนเต็มที่เก็บอยู่ใน array ให้หาจำนวนที่มีค่าน้อยที่สุด Algorithm A 23-Sep-19

Algorithm B (ใช้ two temporary arrays) copy the input a to array t1; assign n  size of input; While n > 1 For i  1 to n /2 t2[ i ]  min (t1 [ 2*i ], t1[ 2*i + 1] ); copy array t2 to t1; n n/2; 3. Output t2[1]; 23-Sep-19

Algorithm C Sort the input in increasing order. Return the first element of the sorted data. 8 9 5 6 11 34 7 20 black box Sorting 5 6 7 8 9 11 20 34 23-Sep-19

แต่ละข้อมูล ทดสอบว่าเป็นข้อมูลที่มีค่าน้อยที่สุดหรือไม่ Algorithm D แต่ละข้อมูล ทดสอบว่าเป็นข้อมูลที่มีค่าน้อยที่สุดหรือไม่ 23-Sep-19

ขั้นตอนวิธีใดดีกว่ากัน? ขั้นตอนวิธีทั้งหมดทำงานได้ถูกต้อง แต่อันไหนดีที่สุด? วัดจาก running time (number of operations needed) วัดจากปริมาณหน่วยความจำที่ใช้ (amount of memory used) หมายเหตุ ระยะเวลาที่ใช้ในการทำงานของอัลกอริธึมจะเพิ่มขึ้นเมื่อจำนวนข้อมูลนำเข้าเพิ่มขึ้น Sep-19

ความถูกต้อง หรือ ประสิทธิภาพการทำงาน ? Correctness: ความสามารถที่จะทำการคำนวณได้อย่างถูกต้องในทุกรณี Efficiency: ทรัพยากรที่จำเป็นต้องใช้สำหรับทำงานของ algorithm Time: จำนวนครั้ง Space: ปริมาณหน่วยความจำ Measurement “model”: กรณีที่แย่ที่สุด (Worst case) กรณีโดยเฉลี่ย (Average case) กรณีที่ดีที่สุด (Best case) 23-Sep-19

Time vs. Size of Input Input Size Measurement parameterized by the size of the input. The algorithms A,B,C are implemented and run in a PC. Algorithms D is implemented and run in a supercomputer. Input Size 23-Sep-19

What is Algorithm Analysis? พิจารณาระยะเวลาที่ใช้ในการทำงานของขั้นตอนอย่างไร? ดูจากเทคนิคที่สามารถลดเวลาการทำงานของขั้นตอนวิธีได้อย่างมาก (Techniques that drastically reduce the running time of an algorithm) ดูจากกรอบการทำงานทางคณิตศาสตร์ที่บ่งชี้ระยะเวลาที่ต้องใช้ในทำงานของขั้นตอนวิธี (A mathematical framework that more rigorously describes the running time of an algorithm) 23-Sep-19

ระยะเวลาที่ต้องใช้สำหรับการทำงานกับข้อมูลขนาดเล็ก 23-Sep-19

ระยะเวลาที่ต้องใช้สำหรับการทำงานกับข้อมูลปานกลาง 23-Sep-19

Asymptotic Performance ขั้นตอนวิธีจะทำงานได้ดีเพียงใดเมื่อทำงานกับข้อมูลที่มีขนาดใหญ่มาก ? เวลาที่ใช้ในการทำงาน (Running time) ความต้องการใช้หน่วยความจำ (Memory/storage requirements) Bandwidth/power requirements/logic gates/etc. 23-Sep-19

Analysis Worst case Average case บอกถึงระยะเวลาที่ใช้ในการทำงานกรณีนานที่สุด เป็นการรับประกันว่าจะไม่ใช้เวลานานกว่านี้ Average case บอกถึงเวลาการทำงานโดยเฉลี่ยในกรณีทั่วๆไป มีประโยชน์มาก แต่ต้องใช้อย่างระมัดระวังกับคำว่า ‘เฉลี่ย’ Random (equally likely) inputs Real-life inputs 23-Sep-19

อัตราการเติบโตของฟังก์ชัน 23-Sep-19

สัญญกรณ์เชิงเส้นกำกับ (Asymptotic Notation) ถ้า n คือจำนวน records ที่เราต้องการเรียงลำดับด้วย Algorithm หนึ่งซึ่งใช้เวลาในการทำงานเป็นฟังก์ชันของ n คือ f(n) อยากทราบว่าจะใช้เวลาในการจัดเรียง records นานเท่าไร ? จะเกิดอะไรขึ้นถ้า n มีค่าใหญ่ เราสนใจค่าในย่านที่ n มีขนาดใหญ่ ค่าของฟังชันจะถูกตรึงไว้อย่างไรหรือไม่? (Will f stay bounded?) ค่าของฟังก์ชันจะเติบโตเป็นเชิงเส้นหรือไม่ (Will f grow linearly?) ค่าของฟังก์ชันจะเติบโตเป็น exponential หรือไม่ (Will f grow exponentially?) เป้าหมายของเราคือพิจารณาว่าฟังก์ชันมีอัตราการเติบโตอย่างไรเมื่อ n มีขนาดใหญ่ขึ้น 23-Sep-19

การจัดประเภทของฟังก์ชันตามอัตราการเติบโต asymptotic growth rate, asymptotic order, or order of functions เป็นการเปรียบเทียบและจัดประเภทของฟังชันโดยละเว้นการพิจารณาค่าตัวแปรคงที่ (constant factors) และข้อมูลขนาดเล็ก (small inputs) The Sets big oh O(g), big theta (g), big omega (g) (g): กลุ่มฟังก์ชันที่มีอัตราการเติบโตอย่างน้อยเท่ากับของ g g (g): กลุ่มฟังก์ชันที่มีอัตราการเติบโตเท่ากับของ g O(g): กลุ่มฟังก์ชันที่มีอัตราการเติบโตไม่เร็วไปกว่าของ g 23-Sep-19

Classifying functions by their Asymptotic Growth Rates O(g(n)), Big-Oh of g of n, the Asymptotic Upper Bound; Q(g(n)), Theta of g of n, the Asymptotic Tight Bound; and W(g(n)), Omega of g of n, the Asymptotic Lower Bound. 23-Sep-19

ตัวอย่าง Example: f(n) = n2 - 5n + 13. จำนวนคงที่ 13 ไม่เปลี่ยนแปลงเมื่อ n มีขนาดใหญ่ขึ้น ดังนั้นจึงไม่มีนัยสำคัญในการพิจารณา เทอมที่มี order ต่ำคือ -5n ไม่ส่งผลกระทบต่อค่าของฟังก์ชันมากนักเมื่อเปรียบเทียบกับเทอมใน order ของ n2. ดังนั้นสมารถกล่าวได้ว่า f(n) = O(n2) . ถาม : f(n) = O(g(n)) มีความหมายว่าอย่างไร? ตอบ: หมายความว่าขนาดของฟังก์ชัน f อยู่ใน order เดียวกันกับฟังก์ชัน g (f is the same order of magnitude as g) 23-Sep-19

ความหมายของ Big O ถาม : f1(n) = O(1) มีความหมายว่าอย่างไร? ตอบ : f1(n) = O(1) หมายความว่าหลังจากผ่านค่า n ไปจำนวนหนึ่งค่าของ f1 จะถูกตรึงให้อยู่บนหรือล่างของค่าคงที่หนึ่ง ถาม : f2(n) = O(n log n) มีความหมายว่าอย่างไร? ตอบ : f2(n) = O(n lg n) หมายความว่า หลังจากผ่านค่า n ไปจำนวนหนึ่งค่าของ f2 จะถูกตรึงให้อยู่บนหรือล่างของค่าคงที่หนึ่งคูณด้วย n log n. หรือกล่าวอีกอย่างหนึ่งว่า f2 มีขนาดอยู่ใน order เดียวกันกับ n log n. โดยทั่วไปแล้ว f(n) = O(g(n)) หมายความว่า f(n) เป็นสมาชิกของกลุ่มฟังก์ชัน O(g(n)) ซึ่ง O(g(n)) คือกลุ่มฟังชันที่มีขนาดอยู่ใน order เดียวกัน 23-Sep-19

คำถามท้ายบท ขั้นตอนวิธีและโปรแกรมคอมพิวเตอร์แตกต่างกันอย่างไร? ประสิทธิภาพการทำงานของ Algorithm ขึ้นอยู่กับปัจจัยอะไรบ้าง? เราวัดประสิทธิภาพการทำงานของ Algorithm กันอย่างไร? Big O, Big Theta, Big Omega คืออะไร? ให้ลำดับอัตราการเติบโตของฟังก์ชันจากน้อยไปมาก 23-Sep-19

การวิเคราะห์หาความซับซ้อนด้านเวลา ในรูปแบบของ Big-Oh Next Lecture: การวิเคราะห์หาความซับซ้อนด้านเวลา ในรูปแบบของ Big-Oh 23-Sep-19