บทที่ 2 การวิเคราะห์อัลกอริทึม

108
บบบบบ 2 บบบบบ บบบบบบบบบบบบบบ บบบ

Upload: dominic-rutledge

Post on 03-Jan-2016

39 views

Category:

Documents


0 download

DESCRIPTION

บทที่ 2 การวิเคราะห์อัลกอริทึม. หัวข้อ. การวิเคราะห์อัลกอริทึม แบบทดลอง และ แบบคณิตวิเคราะห์ การนับจำนวนการทำงานของคำสั่งพื้นฐาน อัตราการเติบโตของฟังก์ชัน สัญกรณ์ เชิงเส้นกำกับ การวิเคราะห์การทำงาน แบบลำดับ, แบบเลือกทำ, แบบวงวน, แบบเรียกซ้ำ. ขั้นตอนการออกแบบอัลกอริทึม. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: บทที่  2 การวิเคราะห์อัลกอริทึม

บทท�� 2 การวิเคราะห์�อั�ลกอัรท�ม

Page 2: บทที่  2 การวิเคราะห์อัลกอริทึม

2 ห์�วิข้�อั

การวิเคราะห์�อั�ลกอัรท�ม แบบทดลอัง และแบบคณิตวิเคราะห์�

การนั�บจำ�านัวินัการท�างานัข้อังค�าสั่��งพื้ !นัฐานั อั�ตราการเตบโตข้อังฟั%งก�ชั�นั สั่�ญกรณิ�เชังเสั่�นัก�าก�บ การวิเคราะห์�การท�างานั

แบบล�าด�บ, แบบเล อักท�า, แบบวิงวินั, แบบเร�ยกซ้ำ�!า

Page 3: บทที่  2 การวิเคราะห์อัลกอริทึม

3 ข้�!นัตอันัการอัอักแบบอั�ลกอัรท�ม

Page 4: บทที่  2 การวิเคราะห์อัลกอริทึม

4 จำ*ดประสั่งค�ข้อังการวิเคราะห์�อั�ลกอัรท�ม

เพื้ �อัศึ�กษาประสั่ทธิภาพื้ข้อังอั�ลกอัรท�ม เวิลาการท�างานั ปรมาณิห์นั0วิยควิามจำ�าท��ใชั�ในัการท�างานั

Page 5: บทที่  2 การวิเคราะห์อัลกอริทึม

5 ประเภทการวิเคราะห์�อั�ลกอัรท�ม

Mathematical Analysis Experimental Analysis

แปลงเป2นัโค�ด สั่��งท�างานัก�บข้�อัม3ลทดสั่อับ จำ�บเวิลาการท�างานั บ�นัท�กผล วิเคราะห์�ควิามสั่�มพื้�นัธิ�ระห์วิ0างเวิลาการท�างานัก�บ

ปรมาณิข้�อัม3ล ม�กเป2นัร3ปแบบฟั%งก�ชั�นัทางคณิตศึาสั่ตร�

Page 6: บทที่  2 การวิเคราะห์อัลกอริทึม

6 SelectionSort

selectionSort(d[1..n]){

for (k = n; k > 1; k--) {

maxI=1

for (i = 2; i <= k; i++)

if (d[i] > d[maxI]) maxI = i

d[k]d[maxI]

}

}

Page 7: บทที่  2 การวิเคราะห์อัลกอริทึม

7 Selection Sort ( ภาษา C)

void selectionSort(int d[], int n) {

int k, i;

for (k = n - 1; k > 0; k--) {

int maxI =1;

for (i = 0; i <= k; i++)

if (d[i]> d[maxI]) maxI = i;

int t = d[k];

d[k] = d[maxI];

d[maxI] = t;

}

}

Page 8: บทที่  2 การวิเคราะห์อัลกอริทึม

8

#include <stdio.h>

#include <stdlib.h>

#include <windows.h>

int main(int argc, char *argv[]) {

int i, k, n, repeat = 10;

for( n = 0; n<=20000; n+=2000) {

int *d = malloc( n * sizeof(int) );

long sum = 0;

for (k=0; k<repeat; k++) {

for (i=0; i<n; i++) d[i] = i;

long start = GetTickCount();

selectionSort(d, n);

sum += GetTickCount() - start;

}

printf("%d \t %f \n", n, (float)sum/repeat);

}

system("PAUSE"); return 0;

}

Page 9: บทที่  2 การวิเคราะห์อัลกอริทึม

9 Selection Sort ( ภาษาJava)

Page 10: บทที่  2 การวิเคราะห์อัลกอริทึม

10

public class TestSelectionSort {

public static void main(String[] args) {

int repeat = 10;

for (int n = 0; n <= 20000; n += 2000) {

int[]d = new int[n];

long sum = 0;

for (int k = 0; k < repeat; k++) {

for (int i = 0; i <n;i++) d[i] = i; {

long start = System.currentTimeMillis();

selectionSort(d);

sum += System currentTimeMillis() - start;

}

System.out.printf("%d \t %f \n", (double)sum/repeat);

}

}

Page 11: บทที่  2 การวิเคราะห์อัลกอริทึม

11

public class TestSelectionSort {

public static void main(String[] args) {

int repeat = 10;

for (int n = 0; n <= 20000; n += 2000) {

int[]d = new int[n];

long sum = 0;

for (int k = 0; k < repeat; k++) {

for (int i = 0; i <n;i++) d[i] = i; {

long start = System.currentTimeMillis();

selectionSort(d);

sum += System currentTimeMillis() - start;

}

System.out.printf("%d \t %f \n", (double)sum/repeat);

}

}

for (int i = 0; i < 10000; i++)selectionSort(new int[1]);

Page 12: บทที่  2 การวิเคราะห์อัลกอริทึม

12 สั่��งท�างานั พื้ร�อัมบ�นัท�กผล ภาษา C : ใชั�GNU-C Compiler (3.4.2) ภาษา Java : ใชั� Java 6 (build 1.6.0_14-b08)

Interpreted-only mode (option –Xint ตอันัท�างานั)

Compilation to native code ( บ�งค�บ compile

ด�วิยการเร�ยกเมท5อัดวิ�!า ๆ สั่�ก 10 000 คร�!ง) Intel Core 2 Duo

P8400 2.26GhzRam 3GBWindows XP

Page 13: บทที่  2 การวิเคราะห์อัลกอริทึม

13 เปร�ยบเท�ยบเวิลาการท�างานั

22.1×10−6 𝑛

2

2 .38×10− 6 𝑛

2

1 .54×10− 6𝑛

2

Page 14: บทที่  2 การวิเคราะห์อัลกอริทึม

14 ใชั�จำ�านัวินัการท�างานัข้อังค�าสั่��งแทนัเวิลาstatic int counter= 0;

static void selectionSort(int[] d) {

counter = 1+d.length +d.length-1;

for (int k = d.length-1; k > 0; k--) {

int maxI =1;

counter += 2 + k+2 + k+1;

for (int i = 0; i <= k; i++) {

counter += 1;

if (d[i] > d[maxI]) {

maxI=i; counter+=1;

}

}

counter += 3;

int t = d[k]; d[k] = d[maxI]; d[maxI] = t;

}

}

Page 15: บทที่  2 การวิเคราะห์อัลกอริทึม

15 เข้�ยนัโปรแกรมทดลอังนั�บค�าสั่��งpublic class TestSelectionSort {

public static void main(String[] args) {

int repeat = 10;

for (int n = 0; n <= 20000; n += 2000) {

int[]d = new int[n];

long sum = 0;

for (int k = 0; k < repeat; k++) {

for (int i = 0; i <n;i++) d[i] = i;;

counter = 0;

selectionSort(d);

sum += counter;

}

System.out.printf("%d \t %f \n", n, (double)sum/repeat);

}

}

Page 16: บทที่  2 การวิเคราะห์อัลกอริทึม

16 นั�บจำ�านัวินัการท�างานัข้อังค�าสั่��ง

Page 17: บทที่  2 การวิเคราะห์อัลกอริทึม

17 นั�บเฉพื้าะค�าสั่��งต�วิแทนัstatic intcounter= 0;

static voidselectionSort(int[] d) {

for (int k = d.length-1; k > 0; k--) {

int maxI =1;

for (int i = 0; i <= k; i++) {

counter += 1;

if (d[i] > d[maxI]) {

maxI = i;

}

}

int t d[k]; d[k] = d[maxI]; d[maxI]=t;

}

}

Page 18: บทที่  2 การวิเคราะห์อัลกอริทึม

18 นั�บท*กค�าสั่��ง VS. นั�บค�าสั่��งต�วิแทนั

Page 19: บทที่  2 การวิเคราะห์อัลกอริทึม

19 Mathematical Analysis

ไม0ต�อังเข้�ยนัเป2นัโปรแกรม ไม0ต�อังสั่��งท�างานัจำรง ไม0ต�อังวิาดกราฟั วิเคราะห์�จำากอั�ลกอัรท�ม จำะได�

เป2นัฟั%งก�ชั��นั

1∑𝑖=2

𝑘

Page 20: บทที่  2 การวิเคราะห์อัลกอริทึม

20 นั�บท*กค�าสั่��ง VS. นั�บค�าสั่��งต�วิแทนั

Page 21: บทที่  2 การวิเคราะห์อัลกอริทึม

21 ค�าสั่��งต�วิแทนัต�อังเป2นัค�าสั่��งพื้ !นัฐานั ค�าสั่��งพื้ !นัฐานั ค อัค�าสั่��งท��

ใชั�เวิลาการท�างานัไม0เกนัค0าคงท��ค0าห์นั��ง ใชั�เวิลาการท�างานัไม0แปรตามข้นัาดข้อัง

input เชั0นั + - * / if เปร�ยบเท�ยบ return

break …

Page 22: บทที่  2 การวิเคราะห์อัลกอริทึม

22 การวิเคราะห์�อั�ลกอัรท�ม เวิลาการท�างานั แปรตามจำ�านัวินัการท�างานัข้อังค�าสั่��ง

จำ�านัวินัการท�างานัข้อังค�าสั่��ง แปรตามจำ�านัวินัการท�างานัข้อังค�าสั่��งต�วิแทนั

เพื้ �อัควิามง0าย เราวิเคราะห์�อั�ลกอัรท�มเชังเวิลาด�วิยการห์าควิามสั่�มพื้�นัธิ�ข้อัง จำ�านัวินัการท�างานัข้อังค�าสั่��งต�วิแทนั ปรมาณิข้�อัม3ล

Page 23: บทที่  2 การวิเคราะห์อัลกอริทึม

23 วิ�ดปรมาณิข้�อัม3ลข้าเข้�า พื้จำารณิาวิ0า ข้นัาดข้อัง input แปรตามค0าอัะไรข้อัง

input ต�วิอัย0าง: sort(d[1…n])

Input เป2นัอัาเรย�จำ�านัวินั n ชั0อัง แต0ละจำ�านัวินัม�ค0าจำ�าก�ด ด�งนั�!นั n แทนัปรมาณิข้�อัม3ล

ต�วิอัย0าง:shortestPath( V, E, w, s ) Input เป2นักราฟัถ่0วิงนั�!าห์นั�ก ข้นัาดข้อังกราฟั แปรตามจำ�านัวินัปมและจำ�านัวินัเสั่�นัเชั �อัม ด�!งนั�!นั |V|+|E| แทนัปรมาณิข้อังข้�อัม3ล

Page 24: บทที่  2 การวิเคราะห์อัลกอริทึม

24 เปร�ยบเท�ยบผลการวิเคราะห์�

Page 25: บทที่  2 การวิเคราะห์อัลกอริทึม

25 เปร�ยบเท�ยบเวิลาการท�างานั

Page 26: บทที่  2 การวิเคราะห์อัลกอริทึม

26 เปร�ยบเท�ยบอั�ตราการเตบโต

Page 27: บทที่  2 การวิเคราะห์อัลกอริทึม

27

Page 28: บทที่  2 การวิเคราะห์อัลกอริทึม

28 อั�ตราการเตบโต

Page 29: บทที่  2 การวิเคราะห์อัลกอริทึม

29

Page 30: บทที่  2 การวิเคราะห์อัลกอริทึม

30

Page 31: บทที่  2 การวิเคราะห์อัลกอริทึม

31

Page 32: บทที่  2 การวิเคราะห์อัลกอริทึม

32

Page 33: บทที่  2 การวิเคราะห์อัลกอริทึม

33

Page 34: บทที่  2 การวิเคราะห์อัลกอริทึม

34 ทบทวินัสั่3ตรคณิตศึาสั่ตร�

Page 35: บทที่  2 การวิเคราะห์อัลกอริทึม

35

Page 36: บทที่  2 การวิเคราะห์อัลกอริทึม

36

Page 37: บทที่  2 การวิเคราะห์อัลกอริทึม

37

Page 38: บทที่  2 การวิเคราะห์อัลกอริทึม

38

Page 39: บทที่  2 การวิเคราะห์อัลกอริทึม

39

Page 40: บทที่  2 การวิเคราะห์อัลกอริทึม

40 อั�ตราการเต�บโตขอังฟั�งก�ชั�น

Page 41: บทที่  2 การวิเคราะห์อัลกอริทึม

41 f(n) vs. g(n)

ใครโตเร5วิกวิ0าก�นั ให์�ด3ท��พื้ฤตกรรม ตอันัท��ค0า n เยอัะๆ วิ0าใครนั�าห์นั�า

ใคร

ค อั ค0าคงต�วิท��ไม0ใชั0 0

𝒇 (𝒏 )≺𝒈 (𝒏 )

𝒇 (𝒏 )≻𝒈 (𝒏 )𝒇 (𝒏 )≍𝒈 (𝒏 )

𝒇 (𝒏 ) โตไม่�เร�วกว�า𝒈 (𝒏)

𝒇 (𝒏 ) โตไม่�ชั�ากว�า𝒈 (𝒏 )

𝒇 (𝒏 )≼𝒈 (𝒏 )

𝒇 (𝒏 )≽𝒈 (𝒏 )

Page 42: บทที่  2 การวิเคราะห์อัลกอริทึม

42 ต�วิอัย0าง

=

=

=

สั่ร*ปได�วิ0า

Page 43: บทที่  2 การวิเคราะห์อัลกอริทึม

43

=

=

=

=

สั่ร*ปได�วิ0า โตเท0าก�บ

Page 44: บทที่  2 การวิเคราะห์อัลกอริทึม

44 L'Hôpital's rule

ถ่�า และ เป2นัฟั%งก�ชั�นัท��ห์าอันั*พื้�นัธิ�ได� โดยท��

, และห์าค0าข้อัง

จำะได�วิ0า

Page 45: บทที่  2 การวิเคราะห์อัลกอริทึม

45

Page 46: บทที่  2 การวิเคราะห์อัลกอริทึม

46 เร�ยงล�าด�บฟั%งก�ชั�นัตามการเตบโต

𝑛 !

Page 47: บทที่  2 การวิเคราะห์อัลกอริทึม

47

Page 48: บทที่  2 การวิเคราะห์อัลกอริทึม

48 สั่�ญกรณิ�เชังเสั่�นัก�าก�บ

Page 49: บทที่  2 การวิเคราะห์อัลกอริทึม

49 สั่�ญกรณิ�เชังเสั่�นัก�าก�บ(Asymptotic Notations)

• little-o

• little – omega

• Big – O

• Big – Omega

• Big - Theta

Page 50: บทที่  2 การวิเคราะห์อัลกอริทึม

50 little-o

Page 51: บทที่  2 การวิเคราะห์อัลกอริทึม

51 little – omega

Page 52: บทที่  2 การวิเคราะห์อัลกอริทึม

52 Big - Theta

Page 53: บทที่  2 การวิเคราะห์อัลกอริทึม

53 Big – O

Page 54: บทที่  2 การวิเคราะห์อัลกอริทึม

54 Big – Omega

Page 55: บทที่  2 การวิเคราะห์อัลกอริทึม

55 สั่ร*ป

Page 56: บทที่  2 การวิเคราะห์อัลกอริทึม

56 Big – O : ข้อับเข้ตบนั

Page 57: บทที่  2 การวิเคราะห์อัลกอริทึม

57 Big-Omega : ข้อับเข้ตล0าง

Page 58: บทที่  2 การวิเคราะห์อัลกอริทึม

58 Big – Theta : ข้อับเข้ตกระชั�บ

Page 59: บทที่  2 การวิเคราะห์อัลกอริทึม

59 จำ*ดประสั่งค�การใชั�สั่�ญกรณิ�เชังเสั่�นัก�าก�บ

เข้�าใจำพื้ฤตกรรมเม �อัพื้ารามเตอัร�ม�ค0ามาก

วิเคราะห์�ได�ง0าย

จำ�ดกล*0มฟั%งก�ชั�นัตาอั�ตราการเตบโต

Page 60: บทที่  2 การวิเคราะห์อัลกอริทึม

60 วิเคราะห์�ด�วิย จำงแสั่ดงวิ0า

Page 61: บทที่  2 การวิเคราะห์อัลกอริทึม

61

หาอัน�พั�นธ์�

Page 62: บทที่  2 การวิเคราะห์อัลกอริทึม

62 ต�วิอัย0าง

Page 63: บทที่  2 การวิเคราะห์อัลกอริทึม

63 การเข้�ยนัฟั%งก�ชั�นัในัร3ปข้อัง ผลบวิกข้อังพื้จำนั�ห์ลายพื้จำนั� เล อักพื้จำนั�ท��โตเร5วิสั่*ด ข้�อัสั่�งเกต

เชั0นั

Page 64: บทที่  2 การวิเคราะห์อัลกอริทึม

64 อั�ตราการเตบโต

Page 65: บทที่  2 การวิเคราะห์อัลกอริทึม

65 การวิเคราะห์�อั�ลกอัรท�ม

การท�างานัแบบล�าด�บ เล อักท�า ท�าซ้ำ�!าเป2นัวิงวินั ท�าซ้ำ�!าแบบเร�ยกซ้ำ�!า

Page 66: บทที่  2 การวิเคราะห์อัลกอริทึม

66 การท�างานัแบบล�าด�บ

Page 67: บทที่  2 การวิเคราะห์อัลกอริทึม

67

Page 68: บทที่  2 การวิเคราะห์อัลกอริทึม

68

Page 69: บทที่  2 การวิเคราะห์อัลกอริทึม

69

Page 70: บทที่  2 การวิเคราะห์อัลกอริทึม

70 การเล อักท�า

Page 71: บทที่  2 การวิเคราะห์อัลกอริทึม

71 การท�างานัแบบวิงวินั

Page 72: บทที่  2 การวิเคราะห์อัลกอริทึม

72

Page 73: บทที่  2 การวิเคราะห์อัลกอริทึม

73

Page 74: บทที่  2 การวิเคราะห์อัลกอริทึม

74

Page 75: บทที่  2 การวิเคราะห์อัลกอริทึม

75

Page 76: บทที่  2 การวิเคราะห์อัลกอริทึม

76 ต�วิอัย0าง Insertion Sort

Page 77: บทที่  2 การวิเคราะห์อัลกอริทึม

77 ต�วิอัย0าง while

Page 78: บทที่  2 การวิเคราะห์อัลกอริทึม

78

Page 79: บทที่  2 การวิเคราะห์อัลกอริทึม

79 การท�างานัแบบเร�ยกซ้ำ�!า

Page 80: บทที่  2 การวิเคราะห์อัลกอริทึม

80 ต�วิอัย0าง การค�นัห์าแบบทวิภาค

Page 81: บทที่  2 การวิเคราะห์อัลกอริทึม

81 t(m) = t(n/2) +

Page 82: บทที่  2 การวิเคราะห์อัลกอริทึม

82 ต�วิอัย0าง: Tower of Hanoi

Page 83: บทที่  2 การวิเคราะห์อัลกอริทึม

83 dki

Page 84: บทที่  2 การวิเคราะห์อัลกอริทึม

84 ต�นัไม�แทนัภาระจำรงข้อังการเร�ยกซ้ำ�!า

Page 85: บทที่  2 การวิเคราะห์อัลกอริทึม

85 ข้นัาดข้�อัม3ล ก�บ ภาระจำรง

Page 86: บทที่  2 การวิเคราะห์อัลกอริทึม

86

Page 87: บทที่  2 การวิเคราะห์อัลกอริทึม

87

Page 88: บทที่  2 การวิเคราะห์อัลกอริทึม

88

Page 89: บทที่  2 การวิเคราะห์อัลกอริทึม

89

Page 90: บทที่  2 การวิเคราะห์อัลกอริทึม

90

Page 91: บทที่  2 การวิเคราะห์อัลกอริทึม

91

Page 92: บทที่  2 การวิเคราะห์อัลกอริทึม

92

Page 93: บทที่  2 การวิเคราะห์อัลกอริทึม

93

Page 94: บทที่  2 การวิเคราะห์อัลกอริทึม

94

Page 95: บทที่  2 การวิเคราะห์อัลกอริทึม

95

Page 96: บทที่  2 การวิเคราะห์อัลกอริทึม

96

Page 97: บทที่  2 การวิเคราะห์อัลกอริทึม

97

Page 98: บทที่  2 การวิเคราะห์อัลกอริทึม

98

Page 99: บทที่  2 การวิเคราะห์อัลกอริทึม

99

Page 100: บทที่  2 การวิเคราะห์อัลกอริทึม

100

Page 101: บทที่  2 การวิเคราะห์อัลกอริทึม

101

Page 102: บทที่  2 การวิเคราะห์อัลกอริทึม

102

Page 103: บทที่  2 การวิเคราะห์อัลกอริทึม

103

Page 104: บทที่  2 การวิเคราะห์อัลกอริทึม

104

Page 105: บทที่  2 การวิเคราะห์อัลกอริทึม

105

Page 106: บทที่  2 การวิเคราะห์อัลกอริทึม

106

Page 107: บทที่  2 การวิเคราะห์อัลกอริทึม

107

Page 108: บทที่  2 การวิเคราะห์อัลกอริทึม

108