งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

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

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "โครงสร้างข้อมูล เป็นหนึ่งในความรู้พื้นฐานของการศึกษาทาง วิทยาการคอมพิวเตอร์ เรียนเกี่ยวกับการ จัดเก็บ ข้อมูลอย่างมีระเบียบ และ จัดการ ข้อมูลอย่างมีระบบ."— ใบสำเนางานนำเสนอ:

1 โครงสร้างข้อมูล เป็นหนึ่งในความรู้พื้นฐานของการศึกษาทาง วิทยาการคอมพิวเตอร์ เรียนเกี่ยวกับการ จัดเก็บ ข้อมูลอย่างมีระเบียบ และ จัดการ ข้อมูลอย่างมีระบบ – แปลงแนวคิดนี้ออกมาเป็นโปรแกรมที่ใช้งานจริงได้ เพื่อให้การประมวลผลมีประสิทธิภาพ ให้ประหยัดการ ใช้ หน่วยความจำ (space) ด้วยความ รวดเร็ว (time)

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

3 ความสำคัญของการเรียนโครงสร้าง ข้อมูล 1. นักศึกษาได้รู้จักโครงสร้างข้อมูลที่ใช้ใน ปัจจุบัน – ประโยชน์ในแต่ละแบบ (Benefit) – ค่าใช้จ่ายในแต่ละแบบ (Cost) 2. นักศึกษาสามารถเลือกใช้โครงสร้างข้อมูลได้ เหมาะสมกับงาน – นำมาใช้กับงานได้เลย ไม่ต้องคิดใหม่ – ดัดแปลงจากของที่มีอยู่ให้เข้ากับงานของตน – ออกแบบโครงสร้างข้อมูลใหม่ให้เข้ากับงานของ ตน เลือกเป็น ใช้เป็น สร้างเป็น

4 ความสำคัญของการเรียนโครงสร้าง ข้อมูล ไม่มีโครงสร้างข้อมูลใดที่ใช้ได้ดีกับทุกงาน ดังนั้นเราเรียนเพื่อจะได้รู้ว่าโครงสร้างข้อมูล แบบไหนเหมาะกับงานประเภทไหน – รู้การเรียกใช้การดำเนินการต่าง ๆ ที่เกี่ยวกับ โครงสร้างข้อมูลนี้ได้ เช่น search, insert, update, delete – รู้เงื่อนไขที่เกี่ยวข้อง – แปลงแนวคิดการจัดเก็บและจัดการข้อมูลออกเป็น โปรแกรมได้ เลือกเป็น ใช้เป็น สร้างเป็น

5 ตัวอย่าง ต้องการเก็บคะแนนของนักศึกษา 5 คน ซึ่งเป็น เลขจำนวนเต็ม วิธีที่ 1 : จัดเก็บโดยใช้โครงสร้างข้อมูลแบบ เส้นตรง – Unsorted list – Sorted list วิธีที่ 2 : จัดเก็บโดยใช้โครงสร้างข้อมูลแบบต้นไม้ – General Tree – Binary Tree – Heap Implementation ทำได้ 2 แบบคือ 1.Array Implementation 2.Linked List Implementation อธิบาย บน กระดา น

6 เคยถามตัวเองบ้างไหมว่า เราจะใช้เวลาในการประมวลผลเงินเดือนของ พนักงานในปริษัทของเราเท่าไหร่ ? เราควรจะซื้อโปรแกรมในการคำนวณเงินเดือน ของพนักงานในปริษัทของเราจากบริษัท ABC หรือ ควรซื้อจากบริษัท XYZ? โปรแกรมใช้เวลาในการประมวลผลนานมาก เป็นเพราะการออกแบบขั้นตอนวิธีไม่ดีหรือว่า เป็นเพราะปัญหาที่แก้เป็นปัญหาที่ยาก เทคนิคพื้นฐานในการวิเคราะห์อัลกอลิทึม (Algorithm Analysis) อัลกอลิทึม คือชุดของคำสั่งซึ่งใช้ในการแก้ปัญหา

7 7 Algorithm Efficiency There are often many approaches (algorithms) to solve a problem. How do we choose between them? At the heart of computer program design are two (sometimes conflicting) goals. 1.To design an algorithm that is easy to understand, code, debug. 2.To design an algorithm that makes efficient use of the computer’s resources.

8 8 Algorithm Efficiency (cont) Goal (1) is the concern of Software Engineering. Goal (2) is the concern of data structures and algorithm analysis. When goal (2) is important, how do we measure an algorithm’s cost?

9 9 How to Measure Efficiency? 1.Empirical comparison (run programs) 2.Asymptotic Algorithm Analysis Critical resources: Factors affecting running time: For most algorithms, running time depends on “size” of the input. Running time is expressed as T(n) for some function T on input size n.

10 การเปรียบเทียบประสิทธิภาพ การวิเคราะห์เชิงเส้นกำกับ (asymptotic algorithm analysis) – ช่วยประเมินประสิทธิภาพทางด้านเวลาที่ใช้ในการ ทำงานของโปรแกรม – เป็นการวิเคราะห์ที่ไม่ยาก – คำนึงถึงปัจจัยที่ส่งผลต่อเวลาของโปรแกรมมากสุด – ใช้ในกรณีที่มีข้อมูลจำนวน มาก – ได้เห็นอัตราการเติบโตของ ฟังก์ชัน เวลา การ ทำงาน กับ จำนวนข้อมูล

11 11 Growth Rate The growth rate for an algorithm is the rate at which the cost (running time) of the algorithm grows as the size of its input grows.

12 12 Growth Rate Graph T(n) Input size n x1000 Input size n

13 ขั้นตอนการพัฒนาโปรแกรมในการ แก้ปัญหาหนึ่งๆ การแก้ปัญหาด้านคอมพิวเตอร์หนึ่งๆ เหมือนกับการ แก้ปัญหาใดๆ – สามารถหาวิธีแก้ (solution) ได้หลายแบบ – ในทางคอมพิวเตอร์เราเรียกว่าเรามีขั้นตอนวิธีในการ แก้ปัญหานี้ได้หลายแบบ เช่น นายจ้างของเราต้องการวิธีในการค้นหาข้อมูลจาก รายการข้อมูลตัวเลขราคาสินค้าจำนวน ตัว เรา และเพื่อนร่วมงานได้เสนอแนวทางในการแก้ปัญหานี้แก่ นายจ้าง  ออกแบบอัลกอริทึมมาแก้ (5 อัน )  ทำการ วิเคราะห์ประสิทธิภาพของอัลกอริทึมแต่ละอัน  หา Growth rate ของอัลกอริทึมแต่ละอัน  เปรียบเทียบ Growth rate และทำการเลือก Growth rate ที่มีอัตราการเติบโตน้อยสุด

14 14 Big O Notation หรือ อันดับขนาด (Order of Magnitude) – หมายถึงปริมาณที่เครื่องคอมพิวเตอร์ทำไม่ขึ้นกับ ขนาดของโปรแกรมหรือ จำนวนบรรทัดของโปรแกรม – เป็นฟังก์ชันที่ได้จากการประมาณค่าทาง คณิตศาสตร์ซึ่งเป็นฟังก์ชันที่สัมพันธ์กับขนาดของ ปัญหา ให้ข้อมูลในการเปรียบเทียบอัลกอลิทึม List[1] = 0; List[2] = 0; : List [1000] = 0; Algorithm 1 For(i=1;i<=n;i=i+1) List [i] = 0; Algorithm 2 Algorithm 1 และ Algorithm 2 มี อันดับขนาดคือ O(n)

15 15 Examples of Growth Rate (1) for (i=1; i<=1000; i=i+1) 1000 times >; for (i=1; i<=1000; i=i+2) 500 times >; for (i=1; i<1000; i=i*2) 10 times >; for (i=1000; i>=1; i=i/2) 10 times >;

16 16 Examples (2) for (j=1; j<=10; j=j+1) 10 times for (i=1; i<=10; i=i+1) 10 iterations >; 100 iterations for (j=1; j<=10; j=j+1) 10 iterations for (i=1; i<=10; i=i*2) log 2 10 iterations >; 10*log 2 10 iterations for (j=1; j<=10; j=j+1) 10 times for (i=1; i<=j; i=i+1) ( 10+1)/2 times >; 55 iterations

17 17 Example: Input Size = n for (i=1; i<=n; i=i+1) T(n) = n >; for (i=1; i<=n; i=i+2) T(n) = n/2 >; for (i=1; i; T(n) for (i=n; i>=1; i=i/2) >;

18 18 Examples (2) for (j=1; j<=n; j=j+1) for (i=1; i<=n; i=i+1) >; for (j=1; j<=n; j=j+1) for (i=1; i<=n; i=i*2) >; for (j=1; j<=n; j=j+1) for (i=1; i<=j; i=i+1) >;

19 19 Examples (3) // Find largest value int largest(int array[], int n) { int currlarge = 0; // Largest value seen for (int i=1; i

20 Time Complexity Best Case Time Complexity – เวลาที่ดีสุด (minimum time) ที่ algorithm ใช้ในการ ประมวลผลสำหรับข้อมูลนำเข้าขนาด n Worst Case Time Complexity – เวลาที่มากสุด (maximum time) ที่ algorithm ใช้ในการ ประมวลผลสำหรับข้อมูลนำเข้าขนาด n – รับประกันเวลาได้ว่า algorithm ที่ใช้จะไม่ใช้เวลาเกินนี้ – ใช้ใน time-critical software application Average Case Time Complexity – เวลาที่เฉลี่ย (average time) ที่ algorithm ใช้ในการ ประมวลผลสำหรับข้อมูลนำเข้าขนาด n – Need assumption about inputs’ distribution

21 21 Best, Worst, Average Cases Sequential search for K in an array of n integers: Begin at first element in array and look at each element in turn until K is found Best case: Worst case: Average case:

22 22 Which Analysis to Use? While average time appears to be the fairest measure, it may be difficult to determine. When is the worst case time important?

23 23 Big-O Notation Big-oh notation represents the growth rate. It's useful to be able to estimate the cpu or memory resources an algorithm requires. Example: If T(n) = 3n 2 then T(n) is in O(n 2 ). Wish tightest upper bound: While T(n) = 3n 2 is in O(n 3 ), we prefer O(n 2 ).

24 24 Big-Oh Examples Example 1: Finding value X in an array T(n) is in O(n). Example 2: T(n) = c 1 n 2 + c 2 n T(n) is in O(n 2 ). Example 3: T(n) = c. We say this is in O(1).

25 25 Running Time Examples (1) Example 1: O(1) a = b; This assignment takes constant time, so it is O(1). Example 2: O(n) sum = 0; for (i=1; i<=n; i++) O(n) sum += n;

26 26 Running Time Examples (2) Example 3: O(n 2 ) sum = 0; O(1) for (j=1; j<=n; j++) O(n 2 ) for (i=1; i<=j; i++) sum++; for (k=0; k

27 27 Running Time Examples (3) Example 4: O(n 2 ) sum1 = 0; O(1) for (i=1; i<=n; i++) O(n 2 ) for (j=1; j<=n; j++) sum1++; sum2 = 0; O(1) for (i=1; i<=n; i++) O(n 2 ) for (j=1; j<=i; j++) sum2++; sum is n 2. sum is (n+1)(n)/2.

28 Running Time Examples (4) Example 5: O(nlogn) sum1 = 0; for (k=1; k<=n; k*=2) O(logn) for (j=1; j<=n; j++) O(n) sum1++; sum2 = 0; for (k=1; k<=n; k*=2) O(n) for (j=1; j<=k; j++) sum2++; Second loop is  2 k for k = 0 to log n. First loop is  n for k = 1 to log n.

29 29 Algorithm Efficiency Constant O(1) การข้าถึงสมาชิกตัวที่ i ใน แถวลำดับ Logarithmic O(logn) การค้นหาแบบ Binary Search LinearO(n) การค้นหาแบบ Sequential Search Linear logarithmicO(n(logn)) การจัดเรียงแบบ Merge Sort Quadratic O(n 2 ) การจัดเรียงแบบธรรมดา

30 30 Algorithm Efficiency Assumes instruction speed of one microsecond and 10 instructions in loop. EfficiencyBig-OIterationsEst. Time Logarithmic Linear O(logn) O(n) 14 10,000 Microseconds.1 seconds Linear logarithmic Quadratic O(n(logn)) O(n 2 ) 140,000 10, seconds min. Polynomial O(n k )10,000 k Hours Exponential O(c n )2 10,000 Intractable Factorial O(n!)10,000!Intractable

31 31 Faster Computer or Algorithm? What happens when we buy a computer 10 times faster? T(n)T(n)nn’n’Changen’/n 10n1,00010,000n’ = 10n10 20n5005,000n’ = 10n10 5n log n2501,842  10 n < n’ < 10n n22n n’ =  10n n2n 1316n’ = n Old machine can run 10,000 basic operations/hour. New machine can run 100,000 basic operations/hour. Algorithm ที่มี growth rate ที่สูงจะใช้เวลามากในการ แก้ปัญหาข้อมูลนำเข้าที่มีขนาดเล็กและแม้ว่าจะเพิ่ม ความเร็วของเครื่องคอมพิวเตอร์ก็ไม่ได้ช่วยอะไรให้ดี ขึ้น


ดาวน์โหลด ppt โครงสร้างข้อมูล เป็นหนึ่งในความรู้พื้นฐานของการศึกษาทาง วิทยาการคอมพิวเตอร์ เรียนเกี่ยวกับการ จัดเก็บ ข้อมูลอย่างมีระเบียบ และ จัดการ ข้อมูลอย่างมีระบบ.

งานนำเสนอที่คล้ายกัน


Ads by Google