โครงสร้างข้อมูลและอังกอลิทึม

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
อัลกอริทึม ITS101 2/2011.
Advertisements

Introduction to C Introduction to C.
แนวคิดในการเขียนโปรแกรม
การศึกษาและประยุกต์ใช้ขั้นตอนวิธีเชิง วิวัฒน์แบบหลายจุดประสงค์บนคลังข้อมูล เจเมทัล Study of Evolutionary Algorithm in Multi- objective on Library jMetal.
รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
การจำลองความคิด รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
การทำงานแบบเลือกทำ (Selection)
ลักษณะโครงสร้างของผังงาน
บทที่ ๖ หลักการแก้ปัญหาด้วยคอมพิวเตอร์
การเข้ารหัสลับกุญแจ สาธารณะสำหรับ สภาพแวดล้อมเคลื่อนที่ และไร้สาย นางสาวกิติยา จันทรุกขา นางสาวอรุณโรจน์ ชูสกุล COE อ. ที่ปรึกษา.
สาระที่ 4 พีชคณิต.
Register Allocation and Graph Coloring
Ordering and Liveness Analysis ลำดับและการวิเคราะห์บอกความ เป็นอยู่หรือความตาย.
Control structure part II
Lecture No. 3 ทบทวนทฤษฎีและแบบฝึกหัด
LAB # 4 Computer Programming 1 1. พิจารณาโปรแกรมต่อไปนี้
การแก้ปัญหาด้วยคอมพิวเตอร์
บทที่ 4 การตัดสินใจในการเขียนโปรแกรม
โครงสร้างภาษาซี.
หน่วยที่ 1 ระบบคอมพิวเตอร์
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
บทที่ 1. พื้นฐานความรู้ทั่วไป
การจำลองความคิด
Surachai Wachirahatthapong
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
การเขียนผังงานแบบโครงสร้าง
การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริธึม
ซอฟต์แวร์คอมพิวเตอร์ในการวิเคราะห์โครงสร้าง
ขั้นตอนวิธี (Algorithm)
ให้ประหยัดการใช้หน่วยความจำ (space) ด้วยความรวดเร็ว (time)
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงานลักษณะของฟังก์ชั่นมีความรอบรัดสั้นกว่าแบบวนลูป.
การเขียนโปรแกรมภาษาซี
บทที่ 4 อัลกอริทึมแบบเรียงลำดับ (Sequential Algorithm)
วิธีการทางคอมพิวเตอร์
การออกแบบและการวิเคราะห์อัลกอริทึม
ใบงานที่ 5 สัญลักษณ์ (Flowchart)
การเขียนผังงาน จุดประสงค์ 1.อธิบายความของผังงานได้
บทที่ 1 ซอฟต์แวร์.
Week 12 Engineering Problem 2
Week 12 Engineering Problem 2
2.1 วิธีแก้ปัญหาด้วยคอมพิวเตอร์ (Computer problem solving methods)
วิชา วิศวกรรมซอฟต์แวร์ (Software Engineering)
หลักการเขียนโปรแกรม ( )
Introduction : Principle of Programming
ใบงาน 1. ให้นักเรียนคัดลอกเนื้อหาและตัวอย่างเรื่อง การวิเคราะห์ปัญหาและการจำลองความคิดตั้งแต่สไลด์ที่ 2-11 ลงในสมุด (ถ้าไม่มีให้ทำในกระดาษสมุด1คู่) 2.
A Comparison on Quick and Bubble sort on large scale data
การเขียนโปรแกรมเบื้องต้น
คำสั่งรับค่าและฟังก์ชันทางคณิตศาสตร์
คำสั่งวนซ้ำ นายมาโนชญ์ แสงศิริ ครูผู้ช่วย โรงเรียนพิจิตรพิทยาคม
WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 4 analysis of algorithm efficiency.
บทที่ 7 การวิเคราะห์งานและการโปรแกรม แบบมีโครงสร้าง
หลักการและวิธีการแก้ปัญหาด้วยกระบวนการเทคโนโลยีสารสนเทศ
การเขียนซูโดโค้ด และการเขียนโฟลชาร์ต
การเขียนโปรแกรมคอมพิวเตอร์ 1
บทที่ 2 แนวคิดในการเขียนโปรแกรม. ขั้นตอนการ พัฒนาโปรแกรม ในการพัฒนาโปรแกรมมีขั้นตอนหลัก 5 ขั้นตอน ซึ่งไม่ว่าจะทำการพัฒนาโปรแกรม ครั้งใดจะต้องปฏิบัติตามขั้นตอนเหล่านี้
บทที่ 2 การวิเคราะห์อัลกอริทึม
กระบวนการทำงานและบุคลากร
บทที่ 1 ระบบคอมพิวเตอร์.
Introduction TO Discrete mathematics
หลักการเขียนโปรแกรมเบื้องต้น
Introduction ธนวัฒน์ แซ่เอียบ.
Data Structure and Algorithms
การจัดเรียงข้อมูล (sorting)
Flowchart การเขียนผังงาน.
การแบ่งแยกและเอาชนะ Divide & Conquer
การแบ่งแยกและเอาชนะ Divide & Conquer
Problem Analysis and Algorithm in Programming (การวิเคราะห์ปัญหา และการจำลองความคิดในการเขียนโปรแกรมคอมฯ)
Computer Program คือ ขั้นตอนการทำงาน ของคอมพิวเตอร์
การทำซ้ำ (for).
การเขียนซูโดโค้ด และการเขียนโฟลชาร์ต
ใบสำเนางานนำเสนอ:

โครงสร้างข้อมูลและอังกอลิทึม ตอน วิเคราะห์อัลกอริทึม อ.พิศิษฐ์ นาคใจ

Algorithm Analysis Software Develops Life Cycle การวัดประสิทธิภาพการทำงานของอังกอลิทึม ใช้หลักคณิตศาสตร์ในการวัดประสิทธิภาพ การเขียนโปรแกรม แบ่งออกเป็น 2 ลักษณะ 1. เขียนโปรแกรมแบบลูกทุ่ง 2. เขียนโปรแกรมแบบซับซ้อน (เมพ) อ.พิศิษฐ์ นาคใจ

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

ประสิทธิภาพเชิงเวลา การวัดประสิทธิภาพ วัดจาก เวลา และ เนื้อหน่วยความจำที่ให้ ประสิทธิภาพเชิงเวลา ประสิทธิภาพเชิงเนื้อที่ สำหรับการวัดเชิงเวลา จะเรียกว่า Running Time เขียนอยู่ในรูปของ ฟังก์ชันคณิตศาสตร์ แปลผันตามปัจจัย 2 ตัว ขนาดข้อมูลนำเข้า ชุดคำสั่งฅ Worst case คือค่าสูงสุดของการใช้เวลาในการแก้ปัญหาของอังกอริทึม Best case คือเวลาที่น้อยที่สุดในการแก้ปัญหาของอังกอริทึม อ.พิศิษฐ์ นาคใจ

การคำนวณ Running Time ในการหาความเร็วในการทำงานของโปรแกรมเรามักจะวัดจาก ลักษณะการเขียน Code มากกว่าที่จะวัดจากการรันโปรแกรมโดยตรง ในการหา Running Time จะเขียนอยู่ในรูปคณิตศาสตร์ คือ T(n) = ciC(n) โดยกำหนดให้ T(n) = Running Time ci = เวลาในการทำงานของชุดคำสั่ง จะคิดเป็น 1 หน่วยเวลา C(n) = จำนวนรอบในการทำงานของชุดคำสั่ง อ.พิศิษฐ์ นาคใจ

ตัวอย่างการคำนวณ ตัวอย่างที่1 ตัวอย่างที่2 ตัวอย่างที่3 Sum = N*N+1 int a = 1 while(a<=N){ a++; } while(a<N){ int b = 1; while(b<N){ b++; อ.พิศิษฐ์ นาคใจ

วิเคราะห์ตัวอย่างที่ 1 Sum = N*N+1 Code เวลาใช้ในการทำงาน จำนวนรอบการทำงาน Sum = N*N+1 c1 1 T(n) = c1(1) = c1 อ.พิศิษฐ์ นาคใจ

Code เวลาใช้ในการทำงาน จำนวนรอบการทำงาน วิเคราะห์ตัวอย่างที่ 2 for(int a = 1; a<=N; a++) Code เวลาใช้ในการทำงาน จำนวนรอบการทำงาน int a = 1 c1 1 while(a<=N){ c2 N+1 a++; } c3 N T(n) = c1(1) + c2(N+1) (c3)1 = c1(1) + c2(N+1) +(c3)(N) = 1+(N+1)+N คิด 1 หน่วยเวลา T(N) = 2N+2 อ.พิศิษฐ์ นาคใจ

Code เวลาใช้ในการทำงาน จำนวนรอบการทำงาน วิเคราะห์ตัวอย่างที่ 3 Code เวลาใช้ในการทำงาน จำนวนรอบการทำงาน int a = 1 c1 1 while(a<=N){ c2 N+1 int b = 1; c3 N while(b<=N){ c4 (N+1)N b++; c5 (N)(N) a++; }} c6 T(n) = c1(1)+c2(N+1)+c3(N)+c4(N+1)(N)+ c5(N)(N)+ c6(N) = 1+(N+1)+ (N)+(N+1)(N)+(N)(N)+ (N) = 2N2+4N+2 อ.พิศิษฐ์ นาคใจ

Big Oh อ่านว่า บิ๊กโอ เป็นสัญลักษณ์วัดประสิทธิภาพเชิงเวลาของอัลกอริทึมมีรูปแบบการเขียนคือ O(f(n)) คุณสมบัติของ Big oh f(n) = c แล้ว O(f(n)) = O(1) เมื่อ c เป็นค่าคงที่ f(n) = cg(n) แล้ว f(n) = O(g(n)) f(n) = ank แล้ว f(n) = O(nk) f(n) = logab แล้ว f(n) = O(logbb) อ.พิศิษฐ์ นาคใจ

ตัวอย่างคุณสมบัติที่ 1 และ 2 f(n) = 5n จาก f(n) = cg(n) แล้ว f(n) = O(g(n)) โดยที่ c เป็นค่าคงที่ในที่นี้คือ 5 ดังนั้น O(F(n)) คือ O(n) f(n) = 1 จาก f(n) = 1 แล้ว O(f(n)) = O(1) f(m) = Am จาก f(m) = cg(m) แล้ว f(m) = O(g(m)) โดยที่ c เป็นค่าคงที่ในที่นี้คือ A ดังนั้น O(f(m)) คือ O(m) อ.พิศิษฐ์ นาคใจ

นิยาม นิยาม ถ้า T1 = O(f(N)) และ T2 = O(g(N)) ดังนั้น T1* T2 = O(f(N)*g(N)) ตัวอย่างเช่น กำหนดให้ f(n) = 4n , g(n) = 2n , h(n) = f(n)*g(n) จงหา Big-ohของ แต่ละ Function O(f(n)) = O(4n) = O(n) O(g(n)) = O(2n) = O(n) O(h(n)) = O(10n2) = O(n2) อ.พิศิษฐ์ นาคใจ

นิยาม ต่อ นิยาม ให้ T1 = O(f(N)) และ T2 = O(g(N)) ดังนั้น T1+ T2 = max(O(f(N),g(N))) ตัวอย่างเช่น กำหนดให้ f(n) = n2 , g(n) = 2n , h(n) = f(n)+g(n) จงหา Big-ohของ แต่ละ Function O(f(n)) = O(n2) = O(n2) O(g(n)) = O(2n) = O(n) O(h(n)) = max(O(n2),O(2n) = O(n2) อ.พิศิษฐ์ นาคใจ

กิจกรรม ให้นักศึกษา ทำการเรียงไพ่ จากน้อยไปมาก A,2,3,…,J,Q,K วิธีการ ให้นักศึกษาหยิบไพ่ 1 ใบ แล้ววางลงบนที่ว่าง หยิบไพ่มาอีกใบ พิจารณาว่ามากกว่า ไพ่ใบสุดท้ายหรือไม่ 2.1 หากมากกว่าให้ว่างต่อจากไพ่ใบสุดท้าย 2.3 หากน้อยกว่าให้นักศึกษา ให้นักศึกษาขีด 1 ลงบนกระดาษ จากนั้นพิจารณาไพ่ใบถัดไป 3. ทำจนหมดไพ่ในมือ สับไพ่และทำซ้ำวิธีการเดิม 5 ครั้ง อ.พิศิษฐ์ นาคใจ

อัตราการเติบโตของ Big oh Algorithm 1 2 3 4 Time ( second ) O(n3) O(n2) O(n log n) O(n) (input size) n = 10 0.00103 0.00045 0.00066 0.00034 n = 100 0.47015 0.01112 0.00486 0.00063 n = 1,000 448.77 1.1233 0.05843 0.00333 n = 10,000 NA 111.13 0.68631 0.03042 n = 100,000 8.0113 0.29832 อ.พิศิษฐ์ นาคใจ

อัตราการเจริญของเวลาที่ใช้ ของอัลกอริทึมทั้ง 4 แบบ อัตราการเจริญของเวลาที่ใช้ ของอัลกอริทึมทั้ง 4 แบบ อ.พิศิษฐ์ นาคใจ

อัตราการเติบโต สัญลักษณ์ ชื่อฟังก์ชัน หมายเหตุ O(1) ค่าคงที่ O(logn) ลอการิทึม ลอการิทึมทุกฐานอยู่ในระดับเดียวกัน O(n) เชิงเส้น O(nlog(n)) แฟกทอเรียล O(n2) n ยกกำลัง 2 O(2n) 2 ยกกำลัง n อ.พิศิษฐ์ นาคใจ

อัตราการเติบโต อ.พิศิษฐ์ นาคใจ

เรียงไผ่ 2 6 5 9 สลับที่ = 2 จั่ว = 4 อ.พิศิษฐ์ นาคใจ

คำถามหลังกิจกรรม จำนวนครั้งที่น้อยที่สุดในการเรียงไผ่ จำนวนครั้งที่มากที่สุดในการเรียงไผ่ อ.พิศิษฐ์ นาคใจ

Quiz ให้นักศึกษาหยิบกระดาษ ½ แผ่น เขียนชื่อ รหัสนักศึกษา ให้ชัดเจน แล้วตอบว่าข้อใดถูกหรือผิด 1. O(n2+3) = O(n) 2. O(n+3) = O(1) 3. O(2n+3) = O(n) 4. O(n3+n2) = O(n3) 5. O(3log n)) = O(log n) อ.พิศิษฐ์ นาคใจ