Transcript
Page 1: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

การวเคราะหอลกอรทมการวเคราะหอลกอรทม

หวขอหวขอ การวเคราะหอลกอรทม

แบบทดลอง และแบบคณตวเคราะห

ร ร ส ฐ การนบจานวนการทางานของคาสงพนฐาน

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

สญกรณเชงเสนกากบ

การวเคราะหการทางาน แบบลาดบ แบบเลอกทา แบบวงวน แบบเรยกซา แบบลาดบ, แบบเลอกทา, แบบวงวน, แบบเรยกซา

ขนตอนการออกแบบอลกอรทมขนตอนการออกแบบอลกอรทม

เร ม

เรม

มปญหา

หาวธแกไข

ยอมรบ หมด ปรบขอกาหนดN YยอมรบN

ได ? หวง?ร นของปญหา

Y

ยอมรบได ?

จบ

Y

การวเคราะหอลกอรทมการวเคราะหอลกอรทม เพอศกษาประสทธภาพของอลกอรทม

เวลาการทางาน ปรมาณหนวยความจาทใชในการทางาน ปรมาณหนวยความจาทใชในการทางาน

จะเนนวเคราะหเฉพาะเวลาการทางาน

นรทางา

ลาการ

เวล

ปรมาณขอมล

Page 2: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

การวเคราะหอลกอรทมการวเคราะหอลกอรทม Mathematical Analysisy

Experimental analysisป ป โป แปลงอลกอรทมเปนโปรแกรม

สงทางานกบขอมลทดสอบ จบเวลาการทางาน บนทกผล บนทกผล วเคราะหหาความสมพนธของเวลาการทางานกบปรมาณขอมลเวลาการทางานกบปรมาณขอมล

Selection SortSelection Sort

selectionSort( d[1..n] ) {for (k = n; k > 1; k--) {maxI = 1for (i = 2; i <= k; i++)if (d[i] > d[maxI]) maxI = i

d[k] d[maxI]}

}

Selection Sort (Selection Sort (ภาษา ภาษา C)C)

void selectionSort(int d[] int n) {void selectionSort(int d[], int n) {int k, i;for (k = n - 1; k > 0; k--) {for (k = n 1; k > 0; k ) {int maxI = 1;for (i = 0; i <= k; i++)for (i 0; i < k; i++)if (d[i] > d[maxI]) maxI = i;

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

}}

เขยนโปรแกรมทดลองจบเวลาเขยนโปรแกรมทดลองจบเวลา#include <stdio.h>#include <stdlib.h>#include <windows.h>

int main(int argc char *argv[]) {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 (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 3: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

Selection Sort (Selection Sort (ภาษา ภาษา Java)Java)

static void selectionSort(int[] d) {static void selectionSort(int[] d) {for (int k = d.length-1; k > 0; k--) {int maxI = 1;int maxI = 1;for (int i = 0; i <= k; i++)if (d[i] > d[maxI]) maxI = i;if (d[i] > d[maxI]) maxI i;

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

}}}

เขยนโปรแกรมทดลองจบเวลาเขยนโปรแกรมทดลองจบเวลาpublic class TestSelectionSort {public static void main(String[] args) {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 k = 0; k < repeat; k++) {

for (int i = 0; i < n; i++) d[i] = i;long start = System.currentTimeMillis();g yselectionSort(d);sum += System.currentTimeMillis() - start;

}}System.out.printf("%d \t %f \n",

n, (double)sum/repeat);, ( ) p )}

} for (int i = 0; i < 10000; i++)l ti S t( i t[1])selectionSort(new int[1]);

สงทางาน สงทางาน + + บนทกผลบนทกผล ภาษา C : ใช GNU-C Compiler (3.4.2)p ( )

ภาษา Java : ใช Java 6 (build 1.6.0_14-b08)i t t d l d interpreted-only mode (option –Xint ตอนทางาน) n GNU C

Java(Native)

Java (interpret)

0 0 0 0 0 0 Compilation to native code(บงคบ compile ดวยการเรยก

0 000 )

0 0 0.0 0.02000 9.4 6.3 90.64000 39 25.0 359.4

เมทอดซา ๆ สก 10,000 ครง)

Lenovo X200

4000 39 25.0 359.46000 84.4 54.6 806.28000 151.6 98.5 1425.0 Lenovo X200

Intel CoreTM 2 DuoP8400 @ 2 26GHz

10000 237.5 156.2 2231.212000 343.7 220.4 3190.614000 467 2 300 0 4359 5P8400 @ 2.26GHz

3GB RamWi d XP

14000 467.2 300.0 4359.516000 610.9 393.7 5675.018000 773.5 500.0 7160.6Windows XP 18000 773.5 500.0 7160.620000 957.8 614.0 8862.3

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

Selection SortmSec.

8000

9000Selection Sort

t n2

6000

7000

GNU C

4000

5000Java

2000

3000

4000(Native)

Java (interpret)

0

1000

2000 (interpret)

0

ปรมาณขอมล

Page 4: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

ใชจานวนการทางานของคาสงแทนเวลาใชจานวนการทางานของคาสงแทนเวลา 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--) {gint 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;

}}

3counter += 3;int t = d[k]; d[k] = d[maxI]; d[maxI] = t;

}}}

เขยนโปรแกรมทดลองนบคาสงเขยนโปรแกรมทดลองนบคาสงpublic class TestSelectionSort {public static void main(String[] args) {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 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);, ( ) p )}

}

นบจานวนการทางานของคาสงนบจานวนการทางานของคาสง700000000

Selection Sort#operations

600000000Selection Sort

t n2

400000000

500000000

300000000counter

100000000

200000000

0

100000000

ปรมาณขอมล

นบเฉพาะคาสงตวแทนนบเฉพาะคาสงตวแทน static int counter = 0;static void selectionSort(int[] d) {for (int k = d.length-1; k > 0; k--) {gint 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 5: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

นบทกคาสง นบทกคาสง vs. vs. นบคาสงตวแทนนบคาสงตวแทน700000000

Selection Sort600000000

Selection Sortt n2

400000000

500000000

ll i300000000

all operations

l b t

100000000

200000000only barometer operation

0

100000000

0

2000

4000

6000

8000

1000

0

1200

0

1400

0

1600

0

1800

0

2000

0

Mathematical AnalysisMathematical Analysis ไมตองเขยนเปนโปรแกรม ไมตองส งทางานจรง ไมตองวาดกราฟ วเคราะหจากอลกอรทม

selectionSort( d[1 n] ) {selectionSort( d[1..n] ) {for (k = n; k > 1; k--) {maxI = 1maxI = 1for (i = 2; i <= k; i++)if (d[i] > d[maxI]) maxI = iif (d[i] > d[maxI]) maxI i

d[k] d[maxI]}}

}k 1

n

k

1 n

k 1

1n

j2

)1(

nn22

2 nn

k 2i 2

k 2

1j 2 22

คาสงตวแทนตองเปนคาสงพนฐานคาสงตวแทนตองเปนคาสงพนฐาน คาส งพนฐาน คอคาส งทฐ

ใชเวลาการทางานไมเกนคาคงตวคาหนง ใชเวลาการทางานไมแปรตามขนาดของ input ใชเวลาการทางานไมแปรตามขนาดของ input เปนคาสงพน ๆ เชน + - * / if เปรยบเทยบ return break...

selectionSort( d[1..n] ) {for ( k = n; k > 1; k-- ) {m = maxI(d, k)m maxI(d, k)d[k] d[m]

}}}

การวเคราะหอลกอรทมการวเคราะหอลกอรทม เวลาการทางานแปรตามจานวนการทางานของคาส ง

จานวนการทางานของคาส ง แปรตามจานวนการทางานของคาส งตวแทนจานวนการทางานของคาสงตวแทน

เพอความงาย เราวเคราะหอลกอรทมเชงเวลาดวย เพอความงาย เราวเครา หอลกอรทมเชงเวลาดวย การหาความสมพนธของ จานวนการทางานของคาสงตวแทนจานวนการทางานของคาสงตวแทน กบปรมาณขอมล

จานวนการทางานของคาสงตวแทน t n2ของคาสงตวแทน(เวลาการทางาน)

ปรมาณขอมล

Page 6: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

วดปรมาณขอมลขาเขาอยางไร วดปรมาณขอมลขาเขาอยางไร ?? ลาบาก : ถาวดจากขนาด (จานวนบต) ของ input

( ) p

งายขน : พจารณาวาขนาดของ input แปรตามคาอะไรของ inputอะไรของ input

ตวอยาง : sort( d[1..n] ) ตวอยาง : sort( d[1..n] ) input เปนอาเรยของจานวน n ชอง แตละจานวนมคาจากด (int ในจาวามคา 231 ถง 231 1) แตละจานวนมคาจากด (int ในจาวามคา –231 ถง 231 – 1) ดงนน n แทนปรมาณขอมล

ตวอยาง : shortestPath( V, E, w, s ) input เปนกราฟถวงนาหนก input เปนกราฟถวงนาหนก ขนาดของกราฟแปรตามจานวนปมและจานวนเสนเชอม

|V| + |E| ป ดงนน |V| + |E| แทนปรมาณขอมล

เปรยบเทยบผลการวเคราะหเปรยบเทยบผลการวเคราะหfor (i = 1; i <= n; i++)for (j = i+1; j <= n; j++)sum += cosine(d[i][j])*i;

)(1 ininnnnn n

)1( 22

1111 1

nnnn

iiii ij

222)(2n

nn n แบบใดเรวกวา ?2

11 11 nn

ii j

for (i = 1; i <= n; i++)for (j = 1; j <= n; j++)(j ; j ; j )sum += j;

เปรยบเทยบเวลาการทางานเปรยบเทยบเวลาการทางานfor (i = 1; i <= n; i++)for (j = i+1; j <= n; j++)sum += cosine(d[i][j])*i;

2 nn

จานวนการทางานของคาสง : นอยกวา

22 คาสงตวแทน : ใชเวลามากกวา

สรปลาบากวาแบบใดเรวกวา

2n จานวนการทางานของคาสง : มากกวา

สรปลาบากวาแบบใดเรวกวา

n จานวนการทางานของคาสง : มากกวาคาสงตวแทน : ใชเวลานอยกวา

for (i = 1; i <= n; i++)for (j = 1; j <= n; j++)(j ; j ; j )sum += j;

เปรยบเทยบอตราการเตบโตเปรยบเทยบอตราการเตบโต2 nn2

22nn

2nn

1020

100400

45190เท

เทา

เทา

4 4.224080

16006400

7803160

ทละ

2

ทละ

4

ทละ

4 44

4.114.05

160320640

25600102400409600

1272051040

204480มขนท

มขนท

มขนท

444

4.034.014 01640

1280409600

1638400204480818560เพ

เพม

เพม 4

44.014.00

สรปไดวาทงคมอตราการเตบโตเทากน

Page 7: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

เปรยบเทยบอตราการเตบโตเปรยบเทยบอตราการเตบโต2n

1000nn 10n

1020

100200

14า าา 2 4

60000

70000

10n โตชากวา n2/10004080

400800

1664

ะ 2 เท

ะ 4 เท

ะ 2 เท

22

4450000

60000 10n โตชากวา n /1000

160320640

160032006400

25610244096ข

นทละ

ขนทละ

ขนทละ 2

22

444

30000

40000

เมอ n มากพอควรn2/1000 จะมากกวา 10n640

12802560

64001280025600

40961638465536

เพมข

เพมข

เพมข

222

44410000

20000n2/1000 จะมากกวา 10n

25605120

2560051200

65536262144

22

440

10000

10 20 40 80 160 320 640 1280 256010 20 40 80 160 320 640 1280 2560

อตราการเตบโตอตราการเตบโต5E+17

4E+17

4.5E+17

n^nnn

3E+17

3.5E+17 n!

2^n2n

2E+17

2.5E+17

2 n

n^3

^2

n3

2

1E 17

1.5E+17

2E+17 n^2

n log n

n2

5E+16

1E+17 n

log n0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

อตราการเตบโตอตราการเตบโต1.4E+12

1.2E+12

!

8E+11

1E+12n!

2^n2n

3

6E+11

8E+11 n^3

n^2

n3

n2

4E+11n log n

n2E+11

n

log n

0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

อตราการเตบโตอตราการเตบโต35000

30000

20000

25000 2^n

n^3

2n

n3

15000

20000 n 3

n^2

l

n2

10000

n log n

n

5000 log n

0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Page 8: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

อตราการเตบโตอตราการเตบโต4000

3000

3500

2500

3000

n^3n3

2

2000n^2

n log n

n2

1000

1500n

logn

500

log n

0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

อตราการเตบโตอตราการเตบโต250

200

150 n^2n2

100

n 2

n log n

50

100 n

log n50

0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

อตราการเตบโตอตราการเตบโต20

16

18

12

14

8

10n log n

n

4

6

8log n

2

4

0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

ทบทวนสตรคณตศาสตรทใชบอยทบทวนสตรคณตศาสตรทใชบอย

)1( nnn

2)1(

1

nnk

k 1k

S = n + (n-1) + + 1Sn n + (n 1) + ... + 1Sn = 1 + 2 + ... n

2S = n(n+1)2Sn = n(n+1)Sn = n(n+1)/2

)21()1(

nnk

n)21(

23

kk

Page 9: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

ทบทวนสตรคณตศาสตรทใชบอยทบทวนสตรคณตศาสตรทใชบอย

bb lll a

baab logloglog

baba logloglog

log na = a log n

an bb na loglog bb na gg nba loglog an loglog abnloglog

n 2loglog 222

bba glog an bb loglog b

bn glog

nnn 2loglog 222

ทบทวนสตรคณตศาสตรทใชบอยทบทวนสตรคณตศาสตรทใชบอยจานวนเตม n หารดวย 2 (ปดเศษทง) กครง จงจะเทากบ 1จานวนเตม n หารดวย 2 (ปดเศษทง) กครง จงจ เทากบ 1

31 15 7 3 132 16 8 4 2 1

1kn 2k = n, log2 2k = log2 n, k = log2 n

32 16 8 4 2 1

2k 2 n, log2 2 log2 n, k log2 n

จานวน ตม หารดวย 3 (ปด ศษทง) กครง จงจะ ทากบ 1จานวนเตม n หารดวย 3 (ปดเศษทง) กครง จงจะเทากบ 1log3 nlog3 n

จานวนเตม n หารดวย 4 (ปดเศษทง) กครง จงจะเทากบ 1( )

log4 n

ทบทวนสตรคณตศาสตรทใชบอยทบทวนสตรคณตศาสตรทใชบอย11

xnnk 0 1 +1

10

x

xk

k 20 + 21 + ... + 2n = 2n+1 – 1

n

kxx )1( n

kn

k xxxk 0

)( kk 00nn

k

k

k

k xx00

1

kk 00

n

kn

j xx1

kj

xx01

1n 11 nx

ทบทวนสตรคณตศาสตรทใชบอยทบทวนสตรคณตศาสตรทใชบอย

k 1

xx

k

k

11

0| x | < 1

11

xxnn

k xk 11

10

x

xk xx

xk

110

n

k2

2 k 211

k

k

02

02

k

k 22

111

211

1

1 ตวอยาง

221 n

k 311 n

k0k 230

k

k

Page 10: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

สรปอกครงสรปอกครงan bb loglog 11

xnnkan bb na loglog

11

0

x

xxk

k

)1( nnk

n

k 121

k x

xk

k

11

0

| x | < 1baab logloglog

babaab

logloglog

logloglog

bab

logloglog

f(n) vs. g(n)f(n) vs. g(n)

( )f n0 f(n) โตชากวา g(n) f(n) ≺ g(n)

( )lim( )n

f ng n

f(n) โตเรวกวา g(n) f(n) ≻ g(n)( )g

c f(n) โตเทากบ g(n) f(n) ≍ g(n)

c คอคาคงตวทไมใช 0

f( ) ( )f(n) ≼ g(n) f(n) ≽ g(n)

f(n) โตไมเรวกวา g(n) f(n) โตไมชากวา g(n)f(n) โตไมเรวกวา g(n) f(n) โตไมชากวา g(n)

ตวอยางตวอยาง

)(10)(2nf 2

1000)(,10)( ngnnf 10n โตชากวา n2/1000

10lim2nn

n)()(lim

ngnf

n nn

10000lim

= 0

1000nn)(ngn nn

22 10)(,52)( nngnnnf 2n2 – 5n โตเทากบ 10n210)(,52)( nngnnnf

2 52 nn

2 52 nn 152

2n 5n โตเทากบ 10n

21052lim

nnn

n

22 105

102lim

nn

nn

n 51

105

102lim

nn

l'Hôpital'sl'Hôpital's RuleRule ถา f(n) และ g(n) เปนฟงกชนทหาอนพนธได โดยทf( ) g( )

)(lim,)(lim ngnfnn nn

และหาคาของ ได)(

)(limngnf

n

)(ngn

จะไดวา )(lim)(lim nfnf จะไดวา

)(lim

)(lim

ngng nn

Page 11: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

ตวอยางตวอยาง

( ) l ( )f log n โตชากวา n0 5( ) log ( )f n n g n n

loglim n lnlim n

log n โตชากวา n0.5

ใ limn n

1 ln n

limln10n n

สามารถแสดงใหเหนวา

1 lnlimln10 n

nn

1 1 n

(log n)100 โตชากวา n0.005

1 1lim

ln10 1 2n

nn

1 2limln10 n n

0

ตวอยางตวอยาง

l ≺ ≺ ≺ l ≺ 2 ≺ 3 ≺ 2n ≺ nlog n ≺ ≺ n ≺ n log n ≺ n2 ≺ n3 ≺ 2n ≺ nnn

n!log n5 = 5log n

n2, 10n2, 2n2 – 10n, 5n2 + 8

มอตราการเตบโตเทากนหมด

สญกรณเชงเสนกากบสญกรณเชงเสนกากบselectionSort( d[1..n] ) {f (k k > 1 k ) {for (k = n; k > 1; k--) {maxI = 1for (i 2; i < k; i++)for (i = 2; i <= k; i++)if (d[i] > d[maxI]) maxI = i

d[k] d[maxI]d[k] d[maxI]}

}}

n

k

n

1n )1( nn 2 nn

k 2i 2

1

k

k2

1

1j

j2

)1(

nn22nn

k 2 i 2 k 2 1j

= (n2 )Selection sort ใชเวลาเปน (n2 )

สญกรณเชงเสนกากบสญกรณเชงเสนกากบ

little – o little o

little – omega little omega

Big – O g

Big – Omega

Big – Theta

Asymptotic NotationsAsymptotic Notations

Page 12: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

little little -- oo

o(g(n)) = { f(n) | f(n) ≺ g(n) } โตชากวาo(g(n)) = { f(n) | f(n) ≺ g(n) } โตชากวา

n0.98 o(n)106 o(n)10 o(n)

( )log n o(n)

little little -- omegaomega

(g(n)) = { f(n) | f(n) ≻ g(n) } โตเรวกวา(g(n)) = { f(n) | f(n) ≻ g(n) } โตเรวกวา

n1.001 (n)n2 (n)n (n)

( )2n (n)

Big Big -- ThetaTheta

(g(n)) = { f(n) | f(n) ≍ g(n) } โตเทากน(g(n)) = { f(n) | f(n) ≍ g(n) } โตเทากน

10 log n (log n)2 + log n5 (log n)2 + log n (log n)

( )ln n (log n) 12ln/lnlog2

nn2lnlnln nn

Big Big -- OO

O(g(n)) = { f(n) | f(n) ≼ g(n) } โตไมเรวกวาO(g(n)) = { f(n) | f(n) ≼ g(n) } โตไมเรวกวา

32nln 3 O(n2) ln 3 < 1.099

n2 + 7n O(n2)n + 7n O(n )2log n O(n2)

Page 13: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

Big Big -- OmegaOmega

(g(n)) = { f(n) | f(n) ≽ g(n) } โตไมชากวา(g(n)) = { f(n) | f(n) ≽ g(n) } โตไมชากวา

10n3 + 5n (n log n)20n log n + 2n (n log n)

10n 5n (n log n)

( l )20n log n + 2n (n log n)

(n log n)nn

สญกรณเชงเสนกากบสญกรณเชงเสนกากบ

o(g(n)) = { f(n) | f(n) ≺ g(n) } โตชากวา o(g(n)) { f(n) | f(n) ≺ g(n) } โตชากวา

(g(n)) = { f(n) | f(n) ≻ g(n) } โตเรวกวา(g( )) { f( ) | f( ) g( ) }

(g(n)) = { f(n) | f(n) ≍ g(n) } โตเทากน

= O(g(n)) (g(n))

O(g(n)) = { f(n) | f(n) ≼ g(n) } โตไมเรวกวา

( ( )) ( ( )) = o(g(n)) (g(n))

(g(n)) = { f(n) | f(n) ≽ g(n) } โตไมชากวา (g(n)) = { f(n) | f(n) ≽ g(n) } โตไมชากวา

= (g(n)) (g(n))(g(n)) (g(n))

Big Big –– OO : : ขอบเขตบนขอบเขตบน O(g(n)) = { f(n) | f(n) ≼ g(n) }

O(g(n)) = { f(n) | มจานวน c > 0 และ n0 0

ททาให f(n) cg(n) เมอ n n0 }

g(n) เปนขอบเขตบนของ f(n) cg(n)

g(n)

g( ) f( )f (n)g(n)

f (n) O(g(n))

nn0

Big Big –– Omega : Omega : ขอบเขตลางขอบเขตลาง (g(n)) = { f(n) | f(n) ≽ g(n) }

(g(n)) = { f(n) | มจานวน c > 0 และ n0 0

ททาให f(n) cg(n) เมอ n n0 }

g(n) เปนขอบเขตลางของ f(n)f (n)

cg(n)g( ) f( )

f (n) (g(n))

nn0

Page 14: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

Big Big –– ThetaTheta : : ขอบเขตกระชบขอบเขตกระชบ (g(n)) = { f(n) | f(n) ≍ g(n) }

(g(n)) = { f(n) | มจานวน c1, c2 > 0 และ n0 0

ททาให c1g(n) f(n) c2g(n) เมอ n n0 }

g(n) เปนขอบเขตกระชบของ f(n) c2g(n)f (n)

c1g(n)g( ) f( ) 2g( )

1

f (n) (g(n))

nn0

สญกรณเชงเสนกากบสญกรณเชงเสนกากบ เขาใจพฤตกรรมเมอพารามเตอรมคามากฤ 5n3 – 2n2 – nlog n +7 ( n3 )

วเคราะหไดงาย

4

1n n

n n

1 n

2 2 3 2

1i ij

i j1 1

1

i

n1

= n2 = O(n2)

จดกลมฟงกชนตามอตราการเตบโต( ) ( l ) ( ) (1), ( log n ), ( n ), ...

วเคราะหงายขนดวย วเคราะหงายขนดวย , , , ,

1

k

kn i 1 2 3 4 5 6 7 8 9 10 11 12จงแสดงวา 1

1 2

k

ini 1 2 3 4 5 6 7 8 9 10 11 12

0 0 0 0 0 0 0 0 0 6 6 6

2 2

k kn ni n

knkn ni

4/

22/

21 12 2i i

n

k

ii 11 22

kn n

4/

1

k

in

i

n

1 4

1kn 1

4

kn

1O kn

4

1 kn

ตวอยางตวอยาง

จงแสดงวา

)(O2log

hnn

จงแสดงวา )(O

20nh

hh

ll

n

hh

n

hh

hnhn 22 log

0

log

0 22 hh 00 22

hnxxxh 11 2

0 2h

hnxxxx

h

11

0

1 1h

2 O( )n n 20

1

11x

hxh

h

21 xxhxh

22/112/1

21

hh

2

2/12/1

2 0 1 xh 0 2/112 h 2/1

Page 15: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

ตวอยาง ตวอยาง : log: log22 n!n!22

n! = n (n-1) ... 2 1 n n ... n n = nn

log2 n! log2 nn = n log2 n เมอ n 1ขอบเขตบน

n! = n (n-1) ... (n/2) (n/2-1) ... 2 1 n/2 n/2 ... n/2 1 ... 1 1ขอบเขต n/2 n/2 ... n/2 1 ... 1 1

(n/2)n/2

log n! (n/2) log (n/2)

ขอบเขตลาง

log2 n! (n/2) log2 (n/2) = (n/2) log2 n – (n/2)

0 4 l 25 0.4n log2 n เมอ n 25

0 4 l l ! l 250.4n log2 n log2 n! n log2 n เมอ n 25

log2 n! (n log n)

Harmonic Number : Harmonic Number : HHnn = = 11/k/k11

nn

88 11 dxn 1

12

12

dxxkk

88 11

nk

nk

ln11)1ln(1

213 1

4 15 1

6 17

18

12

1111 dxxkk

88

0 1 2 3 4 5 6 7 88ln118

1

k k11 8ln119ln

8

1

k k)(ln1 nk

n

12

13 1

98 11 dxk

1k1 kk

3 14 1

5 16 1

718 1

9

11 xkk

9ln18

0 1 2 3 4 5 6 7 8 99ln

1

k k

การเขยนฟงกชนในรปของ การเขยนฟงกชนในรปของ , , แบบงายๆแบบงายๆ ผลบวกของพจนหลายพจน เลอกพจนทโตเรวสด

ขอสงเกต cg(n) = (g(n)) เมอ c เปนคาคงตว cg(n) = (g(n)) เมอ c เปนคาคงตว loga n = (logb n) เพราะ loga n = (logab) logb n .

เชน ( ( )) ( )t n t n

เชน

aknk + ak-1nk-1 +...+ a0 = (nk)0.001n3 + 7000n2 – 11 = (n3) log n10 = 10(log n) = (log n) log2 n10 = 10(log2 n) = (log n) . 2( ) ( 1) / 2 ( )

n ni i n n n

1 1( ) ( ) ( )

i i

อตราการเตบโตอตราการเตบโต constant : ( 1 ) ( ) logarithmic : ( log n ) polylogarithmic : ( log c n ) c 1 polylogarithmic : ( log c n ) , c 1 sublinear : ( na ) , 0 < a < 1 linear : ( n ) quadratic : ( n2 )quad at c ( n ) polynomial : ( nc ) , c 1 exponential : ( n ) > 1 exponential : ( cn ) , c > 1

Page 16: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

การวเคราะหอลกอรทมการวเคราะหอลกอรทมการทางานแบบลาดบ

การเลอกทา

การทางานแบบวงวน

การทางานแบบเรยกซาการทางานแบบเรยกซา

การทางานแบบลาดบการทางานแบบลาดบ

( f1(n) )1( g1(n) )

h(n)( f2(n) )

h(n)( f2( ) )

( g2(n) )

h(n) O( f1(n) + f2(n) )h( ) ( ( ) ( ) )h(n) ( g1(n) + g2(n) )

การทางานแบบลาดบการทางานแบบลาดบ

( n2 )( n )

h(n)( n )

h(n)( )

( n )

h(n) O( n2 + n) = O( n2) h( ) ( ) ( )h(n) ( n + n) = ( n )

การทางานแบบลาดบการทางานแบบลาดบ

( n2 )( n2 )

h(n)( )

h(n)( n )

h(n) O( n2 )h( ) ( 2 )h(n) ( n2 )

Page 17: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

การทางานแบบลาดบการทางานแบบลาดบ

( n )( n )

h(n)( n2 )

h(n)( )

( 1 )

h(n) O( n2 )h( ) ( )h(n) ( n )

การเลอกทาการเลอกทา

f1(n)f1(n)

f2(n) f3(n)

max( f1(n)+ f2(n) , f1(n)+ f3(n) )

การทางานแบบวงวนการทางานแบบวงวน

for (k = 1; k <= n; k++) {for (k = 1; k <= n; k++) {P(k)

}}

P(k) ใชเวลา t(k)P(k) ใชเวลา t(k)

n

n

kt )(k 1

)(

ตวอยาง ตวอยาง : for: for

for (k = 1; k <= n; k++) {for (k = 1; k <= n; k++) {process( d, k )

}}

process(d,k) ใชเวลา ( k2 )process(d,k) ใชเวลา ( k )

n

2

nk 2

k

k1

2 )(

k

k1

2

6

)12)(1( nnn 6

)( 3n )(n

Page 18: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

ตวอยาง ตวอยาง : for: for

for (i = 1; i <= n; i++)for (i = 1; i <= n; i++)for (j = 1; j <= n; j++) sum += d[i][j]sum + d[i][j]

n n

n

i j1 1

)1(

i

n1

)(

n

n

2

i 1

)( 2n

ตวอยาง ตวอยาง : for: for

for (i = 1; i <= n; i++)for (i = 1; i <= n; i++)for (j = 1; j <= i; j++) sum += d[i][j]sum + d[i][j]

n i

)1( n

i)(

i j1 1

)1(

i

i1

)(

n

n

ii

1

)1(nn

i 1

)( 2n

2

)(n

ตวอยาง ตวอยาง : for: for

for (i = 2; i <= m-1; i++)for (i = 2; i <= m-1; i++)for (j = 3; j <= i; j++) sum += d[i][j]sum + d[i][j]

1

)1(m i

1

)(m

i

2 3

)1(i j

2

)(i

i

1m

1

2

m

ii

)(mim 2i

22

)(1

mii

)())(( 22 mmm

ตวอยาง ตวอยาง : Insertion Sort: Insertion SortinsertionSort( d[1..n] ) {for (k = 2; k <= n; k++) {t = d[k]f (j k 1 k 1 k ) {

(n)for (j = k-1; k >= 1; k--) {if (t >= d[j]) breakd[j+1] d[j] O(k)

n

d[j+1] = d[j]}d[j+1] t

( )k 2

d[j+1] = t}

} O(n2)}

kหาทแทรก

O(n )4,1,3,2,5

เรยงลาดบแลว ขอมลทเหลอ

k 1,4,3,2,51,3,4,2,51 2 3 4 5

ดนมาทางขวา 1,2,3,4,51,2,3,4,5

Page 19: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

ตวอยาง ตวอยาง : while: whilelog10( n ) {

0c = 0while (n > 1) {n n / 1043 nn = n / 10c++

}43 1

10 10log nn

}return c

} (log n)

i = 0 j = n

} (log n)

i = 0, j = nwhile ( i < j ) {i += 134i += 1j -= 1

} (n)3247

} ( )

ตวอยาง ตวอยาง : Binary Search: Binary SearchbinarySearch( d[1..n], x ) {

1000left = 1, right = nwhile ( left <= right ) {

1000500125mid = (left + right) / 2

if (x = d[mid]) return mid1256231if (x < d[mid])

right = mid - 1l

311571nelse

left = mid + 1}

731

1

2 2log n

}return -1;

} O(log n)10

}right – left + 1 คอจานวนขอมลในชวงทสนใจคน

O(log n)g

คาของ right – left + 1 คอ n ในรอบแรก ลดลงรอบละครง

ตวอยาง ตวอยาง : GCD: GCD

gcd(a b) { a bถา a > b gcd(a, b) {

while (b > 0) {t = a mod b

34 2121 1313 8

ถา a > b สามารถแสดงวา a mod b < a/2 t a mod b

a = bb = t

13 88 55 3

a mod b < a/2 เสมอ

}return a

5 33 22 1

แสดงวา ทางานเปน O(log n) } 2 1

1 0เปน O(log n)

ให a > b1. ถา b a/2, จะได a mod b < a/2 (เพราะ a mod b < b)2 b /2 ไ /b 2 /b2. ถา b > a/2, จะได a/b < 2 ดงนน a/b = 1

a mod b = a – b a/b = a – b /2 /2< a – a/2 = a/2

การทางานแบบเรยกซาการทางานแบบเรยกซา

recursive( ) {recursive( ... ) {if ( ... ) return ...

( )... (...)

recursive( ... )...

t (...) ++recursive( ... ) ... +

t (...)...

}( )

t (n) = t(...)+...+t(...) + (...)t (n) t(...) ... t(...) (...)

Page 20: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

ตวอยางตวอยาง : : การคนแบบทวภาคการคนแบบทวภาคbsearch( d[1..n], x, left, right ) {if (left > right) return -1mid = (left + right) / 2if ( d[ id]) idif (x = d[mid]) return midif (x < d[mid])

t b h( d l ft id 1)return bsearch( d, x, left, mid – 1)elsereturn bsearch( d x mid + 1 right )return bsearch( d, x, mid + 1, right )

}ให m = right – left + 1 คอจานวนขอมลในชวงทตองการคนให t(m) แทนเวลาการทางานในการเรยก bsearch ทชวงขอมล( )

ทตองการคนมจานวน m ตว จะไดวาt(m) = t(m/2) + (1) t(0) = (1)t(m) = t(m/2) + (1) , t(0) = (1)

tt((mm) = ) = tt((mm//22) + ) + ((11))(( )) (( )) (( ))

)1()(

mtt m)1(

2)(

tmt

m

k

k

1

1 12

)1(22 2

mtmt

mkm k

2

1

log12

)1(22 32

mtmt (2+log2m)(1)

22 32

...

( g2 ) ( )

t(m) = (log m)

mm

t(m) (log m)กรณหาไมพบ

)1(22 1

kkmtmt

กรณทวไป binary searchกรณทวไป binary searcht(m) = O(log m)(1)

ตวอยางตวอยาง : Tower of Hanoi: Tower of Hanoi

hanoi(n, a, b, c) {hanoi(n, a, b, c) {if (n == 0) returnhanoi(n - 1, a, c, b)( , , , )print("move ", n, a, "->", c) hanoi(n - 1, b, a, c)( , , , )

}

ให t(n) แทนเวลาการทางานของ hanoi(n, a, b, c) จะไดวา

( ) 2 ( 1) (1) (0) (1)t(n) = 2t(n – 1) + (1) , t(0) = (1)

t( ) (2n)t(n) = (2n)

tt((nn) = ) = 22tt((nn--11) + ) + ((11))(( )) (( )) (( ))t(n) = 2t(n – 1) + (1)

= 2(2t(n – 2) + (1)) + (1)= 4t(n – 2) + 2(1) + (1) 4t(n 2) + 2(1) + (1)= 4(2t(n – 3) + (1)) + 2(1) + (1)= 8t(n – 3) + 4(1) + 2(1) + (1)= 23t(n – 3) + 22(1) + 21(1) + 20(1)= 2 t(n – 3) + 2 (1) + 2 (1) + 2 (1)...= 2nt(n – n) + ... + 22(1) + 21(1) + 20(1)= (2n + + 22 + 21 + 20 )(1)= (2 + ... + 2 + 2 + 2 )(1)= (2n+1 – 1) (1)= (2n)

Page 21: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

ภาระจรง กบ การเรยกซาภาระจรง กบ การเรยกซาDQ( n ) {if (n = 0) returnfor (i=1; i<=n; i++) ภาระจรงfor (j=1; j<=n; j++)print( i )

f (i 1 i< 2 i++)for (i=1; i<=2; i++)DQ( n/2 )

}การเรยกซา

}

2t(n) = 2t(n/2) + n2 แทนภาระจรง

แทนการเรยกซา

ขนาดขอมล กบ ภาระจรงขนาดขอมล กบ ภาระจรง

t(n) = 2t(n/2) + n2 t(n) = 2t(n/2) + n2t(n) = 2t(n/2) + n2 t(n) = 2t(n/2) + n2

( )2n (n)2

n/2 n/2 (n/2)2 (n/2)2ภาระจรง

การเรยกซาทขอมลม ภาระจรง

สะสมทขอมลม

ขนาดเลกลง ๆ

t(n/2) = 2t(n/22)+(n/2)2

ขนาดของขอมลลดลง ๆขนาดของขอมลลดลง ๆt(n) = 2t(n/2) + n2( ) ( )

nขนาดของขอมลทลดลง เมอปญหาเลกลง n

n/2 n/2เมอปญหาเลกลง

n/22 n/22 n/22 n/22 log2 n

n/23 n/23 n/23 n/23 n/23 n/23 n/23 n/23

... ... ... ... ... ... ... ... (1) (1) (1) (1) (1) (1) (1) (1)

2t(n/2) = 2t(n/4) + (n/2)2

t(n/4) = 2t(n/8) + (n/4)2( ) ( ) ( ). . .

Recursion TreeRecursion Tree : : ตนไมแสดงภาระจรงตนไมแสดงภาระจรง

t(n) = 2t(n/2) + n2

(n)2

( ) ( )

n(n)2ภาระจรงททา ในแตละระดบ

(n)2/2

(n)n

n/2 n/2

( )

(n/2)2 (n/2)2

ในแตละระดบ

( )

(n)2/22n/22 n/22 n/22 n/22

( )

(n/22)2 (n/22)2 (n/22)2 (n/22)2

(n)2/23n/23 n/23 n/23 n/23 n/23 n/23 n/23 n/23(n/23)2 (n/23)2 (n/23)2 (n/23)2 (n/23)2 (n/23)2 (n/23)2 (n/23)2

... ... ... ... ... ... ... ... ...(1) (1) (1) (1) (1) (1) (1) (1)

n

kn2log 2

2 ( n2 )n

kn2log

2

21

xx

k

k

11

0 k 0 21 < 2

k 0 2xk 10

Page 22: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

Recursion TreeRecursion Tree : : ตวอยางตวอยางt(n) = 2t(n/2) + n

n

( ) ( )

n

n

n

n/2 n/2nn/22 n/22 n/22 n/22

n/23 n/23 n/23 n/23 n/23 n/23 n/23 n/23 n

... ... ... ... ... ... ... ... ...(1) (1) (1) (1) (1) (1) (1) (1)

nnnn

2

loglog

2

( n log n )k

20

g

( g )

Recursion TreeRecursion Tree : : ตวอยางตวอยางt(n) = 2t(n/2) + 111

xnnk

( ) ( )

1 11

1

0

x

xxk

k

1 1 2

1 1 1 1 4

1 1 1 1 1 1 1 1 8

... ... ... ... ... ... ... ... ...

nk

2l10

log

(1) (1) (1) (1) (1) (1) (1) (1)

n

k

k 2log10

02222

( n )12212 22 loglog1 nn

1212212

n

Recursion TreeRecursion Tree : : ตวอยางตวอยาง

(a+b) < 1t(n) = t(0.2n) + t(0.7n) + nt(n) = t(an) + t(bn) + nn n

(a+b) < 1( ) ( ) ( )t(n) t(an) t(bn) n

an bn (a+b)n

3 2b 2b b2 2b b2 b2 b3

a2n abn abn b2n (a+b)2n

(a+b)3na3n a2bn a2bn ab2n a2bn ab2n ab2n b3n... ... ... ... ... ... ... ... ...

(a+b)3n

n

kn

k bannbaloglog

)()(

(1) (1) (1) (1) (1) (1) (1) (1)

( n )

kk

bannba00

)()(

k 1 1 <

1

xx

k

k

10

1 < )(1 ba

T(n) = T(n) = 22T(n/T(n/33)+n)+n

ภาระจรงมากกวามากกวาการเรยกซา

nnnn k

312log

= (n)nnn

k3

32130

(n)

Page 23: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

T(n) = T(n) = 33T(n/T(n/33)+n)+n

ภาระจรงเทากบเทากบ

การเรยกซา

nnnnlog

log3

nnnk

30

log

= (n log n) (n log n)

T(n) = T(n) = 44T(n/T(n/33)+n)+n

134

34 33 log1log nkn

nn

1

34

34

3

3

log

log

n

nn

330k

33

4 4log3n 4

1

34 g3

nnn nn 4log3

34

)( 4log3n

ภาระจรงนอยกวานอยกวาการเรยกซา

Master Method Master Method ((แบบงายแบบงาย))t(n) = at(n/b) + (nd) a 1, b > 1,( ) ( ) ( )

d 0

cdc nnn if)( c = log a

dd

cdc nnnnnnn

nt if)log(if)(

)(c = logb a

ภาระจรง

cdd nnn if)( การเรยกซา

t(n) = t(n/2) + (1)t(n) = 2t(n/2) + n2

1 = n0 (log n)2 > 1 ( 2)

c = log21 = 0c = log 2 = 1t(n) = 2t(n/2) + n2

t(n) = 2t(n/2) + nn2 > n1 (n2)n = n1 (n log n)

c = log22 = 1c = log22 = 1( ) ( )

t(n) = 4t(n/2) + 1( g )

1 < n2 (n2) g2

c = log24 = 2

t(n) = 2t(n–1) + (1) t(n) = t(an) + t(bn) + n

Master MethodMaster Methodt(n) = at(n/b) + (nd) a 1, b > 1( ) ( ) ( ) ,

cdc nnn if)( c = logb a

dd

cdc nnnnnnn

nt if)log(if)(

)( cdd nnn if)(

t(n) = at(n/b) + f(n)

)()(if)log()()(if)(

)(

cc

cc

nnfnnnnfn

nt > 0

)()(if))(()()(if)log()(cnnfnf

nnfnnnt

f( /b) k f( ) k 1

a f(n/b) k f(n), k < 1, n n0

Page 24: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

Master Method : Master Method : ตวอยางตวอยางa 1, b > 1,

lt(n) = at(n/b) + f(n) c = logb a

)()(if)( cc nnfn

( ) ( / ) f( )

> 0

)()(if))(()()(if)log(

)()(if)()(

c

cc

ffnnfnnnnfn

nt

)()(if))(( cnnfnfa f(n/b) k f(n), k < 1, n n0

t(n) = 2t(n/2) + 1 c = log22 = 1, 1 = O(n1–) (n)

t(n) = t(n/2) + 1 c = log21 = 0, 1 = (n0) (log n)

t(n) = 3t(n/2) + n2 c = log23 , n2 log23 < 1.592 2 2

)( )3(log2 n

3(n/2)2 (3/4)n2, n 0 (n2)

Master Method : Master Method : ตวอยางตวอยางa 1, b > 1,

lt(n) = at(n/b) + f(n) c = logb a

)()(if)( cc nnfn

( ) ( / ) f( )

> 0

)()(if))(()()(if)log(

)()(if)()(

c

cc

ffnnfnnnnfn

nt

)()(if))(( cnnfnfa f(n/b) k f(n), k < 1, n n0

t(n) = 3t(n/4) + n log n c = log43 < 0.793

)(log )3(log4 nnn3((n/4) log (n/4)) (3/4) n log n, n 0 (n log n) (n log n)

Master Method : Master Method : ตวอยางตวอยางa 1, b > 1,

lt(n) = at(n/b) + f(n) c = logb a

)()(if)( cc nnfn

( ) ( / ) f( )

> 0

)()(if))(()()(if)log(

)()(if)()(

c

cc

ffnnfnnnnfn

nt

)()(if))(( cnnfnfa f(n/b) k f(n), k < 1, n n0

t(n) = 2t(n/2) + n log n c = log22 = 1n log n = O(n1–)n log n = (n)n log n = (n)n log n = (n1+) log n = o(n)ใช Master method ไมได ใชวธอน

tt((nn) = ) = 22tt((nn//22) + ) + n n log log nn(( )) (( )) ggn log n n log n

n/2 log n/2 n/2 log n/2 n log n/2

n log n/4n/4 log n/4 n/4 log n/4 n/4 log n/4 n/4 log n/4

... ... ... ... ... ... ... ... ...

n n2log

nk

2log(1) (1) (1) (1) (1) (1) (1) (1)

k

knn

02 2

log

k

knnn0

22 2loglog

nnnknn

22 loglog

2log( (l )2 )

kk 00 )log...21(log 2

22 nnnn

( n(log n)2 )

( l 2 ) 2/1logloglog 222

2 nnnnn( n log2 n )

Page 25: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

การวเคราะหอลกอรทมการวเคราะหอลกอรทม เวลาการทางานของอลกอรทม ขนกบ

ปรมาณขอมลขาเขา ป ปชาเมอปรมาณมาก เรวเมอปรมาณนอย

แตกมอลกอรทม ทใชเวลาคงตวไมขนกบปรมาณแตกมอลกอรทม ทใชเวลาคงตวไมขนกบปรมาณ

ลกษณะของขอมลขาเขาขอมลบางลกษณะ ใชเวลาทางานมากขอมลบางลกษณะ ใชเวลาทางานนอยขอมลบางลกษณะ ใชเวลาทางานนอยแตกมอลกอรทม ทลกษณะขอมลไมมผลตอเวลาการทางาน

การหาตวหมมากการหาตวหมมากhasMajority( d[1..n] ) {for (i = 1; i <= n; i++) {for (i = 1; i <= n; i++) {

c = 0;for (j = 1; j <= n; j++) if (d[i] == d[j]) c++if (c > n/2) return TRUE

}return FALSE

return FALSE}

ทางาน กรณไมม

ตวหมมาก

กรณมตวหมมากแตครงแรก

ไมใชตวหมมาก

าการท ตวหมมาก ไมใชตวหมมาก

เวลา กรณตวแรก

คอตวหมมาก

ปรมาณขอมล

เวลาการทางานขนกบลกษณะขอมลเวลาการทางานขนกบลกษณะขอมลseqSearch( d[1..n], x ) {for (k = 1; k <= n; k++) {if (d[k] = x) return k

}return -1

}

ทางาน

าการท

เวลา

พบตวแรกของอาเรย

ปรมาณขอมล

การคนแบบลาดบการคนแบบลาดบseqSearch( d[1..n], x ) {for (k = 1; k <= n; k++) {if (d[k] = x) return k

}return -1

}พบท d[1] เปรยบเทยบ 1 ครงพบท d[1] เปรยบเทยบ 1 ครง " d[2] " 2 ครง... ... ... ... ... ... ... ..." d[k] " k ครง

มขอมล n ตว ถาขอมลแตละตวมโอกาสถกคนเทา ๆ กน 1/nมขอมล n ตว, ถาขอมลแตละตวมโอกาสถกคนเทา ๆ กน 1/n

จานวนการเปรยบเทยบเฉลย =n

k1 1

nn

k1

)1(1 nn

จานวนการเปรยบเทยบเฉลย = k

kn1 2

k

kn 1

2n

Page 26: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

Insertion Sort : Best CaseInsertion Sort : Best CaseinsertionSort( d[1..n] ) {

for (k 2 k < n k++) {for (k = 2; k <= n; k++) {t = d[k]for (j = k-1; k >= 1; k--) {for (j k 1; k > 1; k ) {

if (t >= d[j]) breakd[j+1] = d[j]j j

}d[j+1] = t

1 3 5 8 9}} j k

1 3 5 8 9

กรณเรวสด : ขอมลเรยงลาดบ ทา k >= 1 ครงเดยวn

112

nn

k= (n)

2k

Insertion Sort : Worst CaseInsertion Sort : Worst CaseinsertionSort( d[1..n] ) {

for (k 2 k < n k++) {for (k = 2; k <= n; k++) {t = d[k]for (j = k-1; k >= 1; k--) {for (j k 1; k > 1; k ) {

if (t >= d[j]) breakd[j+1] = d[j]j j

}d[j+1] = t

8 9 5 3 1}} j k

8 9 5 3 1

กรณชาสด : ขอมลเรยงกลบลาดบ ทา k >= 1 k ครงn k 1 n

n

k

k

j2

1

01 = (n2)

n

kk

2k j2 0 k 2

Insertion Sort : Average CaseInsertion Sort : Average CaseinsertionSort( d[1..n] ) {

for (k 2 k < n k++) {for (k = 2; k <= n; k++) {t = d[k]for (j = k-1; k >= 1; k--) {for (j k 1; k > 1; k ) {

if (t >= d[j]) breakd[j+1] = d[j]กรณเฉลย : ทา k >= 1 1 2 k ครงj j

}d[j+1] = t

กรณเฉลย : ทา k >= 1 1,2, ..., k ครงดวยความนาจะเปน 1/k ในแตละกรณ

n

1 2 3 4 5 ? ? ?

n}}

n

kk

k2...211 1 2 3 5 4 ? ? ?

n

k

kkk2 2

)1(1

k 21 2 4 5 3 ? ? ?

k 2

n

k )1(21

3

2)2)(1(

21 nn

= (n2)1 3 4 5 2 ? ? ?

k 22 22

432

nn (n )2 3 4 5 1 ? ? ?4

การหาตวมากสดการหาตวมากสดmax( d[1..n] ) {max = d[1] d เรยงจากนอยไปมาก max = d[1]for (k = 2; k <= n; k++)

if (d[k] > max) max = d[k]max เปลยนคา n ครง

d เรยงจากมากไปนอยreturn max}

d เรยงจากมากไปนอย max เปลยนคา 1 ครง

ถา d เกบขอมลสม : ให C(n) แทนจานวนการเปลยน max เฉลยใน d[1..n]ให C(n) แทนจานวนการเปลยน max เฉลยใน d[1..n]ให C(n,k) " " " เมอ max คอ d[k]ถา max คอ d[k] d[k+1]...d[n] ไมมผลกบ maxถา max คอ d[k] d[k 1]...d[n] ไมมผลกบ maxC(n,k) ยอมเทากบ #การเปลยน max เพอหา max ใน k-1 ตวแรก ตามดวย การเปลยน max อกครงเมอเปรยบเทยบกบ d[k] C(n,k) = C(k –1) + 1

n 1

1 k n

n1

k

knCn

nC1

),(1)(

k

kCn 1

1)1(1

Page 27: การวเคราะหิ อ์ลกอรั ทิมึ การวิเคราะหิ ์อ์ัลกอรั ิทิึมึsomchai/2110327/2553/03-analysis.pdf ·

การหาคามากสดการหาคามากสด

nkCnC 1)1(1)(

kn 1)()(

)1()2()1(1 nCCCn )1()2()1( nCCCn

n

)1()2()1()( nCCCnnnC )()()()(

)2()2()1()1()1()1( nCCCnnCn

)1(1)1()1()( nCnCnnnC

1)1()( nnCnnC 1)1()( nnCnnC

)1(1)( nCnC )2(11 nC)()(

n)(

1nn111

( ln n )11

nn ( ln n )

การหาคามากสด การหาคามากสด : : การเปลยน การเปลยน maxmaxmax( d[1..n] ) {max = d[1]max = d[1]for (k = 2; k <= n; k++)

if (d[k] > max) max = d[k]return max

}

max

(n )

ลยน

mนการเปล

(log n )

จานวน

d เรยงจากมากไปนอย

(log n )

(1 )ปรมาณขอมล

(1 )

สรปสรป ศกษาประสทธภาพของอลกอรทม โดยไมตอง

เขยนโปรแกรมและส งทางานจรง

หาความสมพนธระหวางเวลาการทางานกบ หาความสมพนธระหวางเวลาการทางานกบปรมาณขอมล และ ลกษณะขอมล

หาอตราการเตบโตของเวลาการทางาน

แทนเวลาดวยจานวนการทางานของคาสงตวแทน

วเคราะหไดงายขนดวยสญกรณเชงเสนกากบ วเคราะหไดงายขนดวยสญกรณเชงเสนกากบ

ใชดในการเปรยบเทยบอลกอรทม

Prof. Donald KnuthProf. Donald Knuth Father of "Analysis of Algorithms"y g


Top Related