การวเคราะหิ อ์ลกอรั ทิมึ...

27
การวิเคราะห์อัลกอริทึม การวิเคราะห์อัลกอริทึม หัวข้อ หัวข้อ การวิเคราะห์อัลกอริทึม แบบทดลอง และแบบคณิตวิเคราะห์ กานบจานวนกาทางานของคางพนาน ตราการเต บโตของฟงก อตราการเตบโตของฟงกชน ญกรณ์เช งเส นกํากับ การวิเคราะห์การทํางาน แบบลาดแบบเลอกทแบบวงวน แบบเรยกซ แบบลาดบ, แบบเลอกทา, แบบวงวน, แบบเรยกซา ขั้นตอนการออกแบบอัลกอริทึม ขั้นตอนการออกแบบอัลกอริทึม เร เรม ปัญหา หาวิธีแก้ไข ยอมรับ หมด บข้อกําหN Y ยอมร N ได้ ? หวัง? ของปัญหา Y ยอมรบ ได้ ? จบ Y การวิเคราะห์อัลกอริทึม การวิเคราะห์อัลกอริทึม เพื่อศ กษาประส ทธิภาพของอัลกอริทึม เวลาการทํางาน ปร มาณหนวยความจาทใช ในการทางาน ปรมาณหนวยความจาทใชในการทางาน จะเน้นวิเคราะห์เฉพาะเวลาการทํางาน ทํางา ากาเวปริมาณข้อมูล

Upload: others

Post on 01-Jan-2020

2 views

Category:

Documents


0 download

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