資料結構與演算法 ( 上 )

72
2008 Fall Semester 2008 Fall Semester Data Structures and Algorithms (I) Data Structures and Algorithms (I) 1 資資資資資資資資 ( 資 ) 呂呂(Hsueh-I Lu) http://www.csie.ntu.edu.tw/~hil/

Upload: early

Post on 18-Mar-2016

79 views

Category:

Documents


2 download

DESCRIPTION

資料結構與演算法 ( 上 ). 呂學一 (Hsueh-I Lu) http://www.csie.ntu.edu.tw/~hil/. Outline of this slide. Dynamic programming Fibonacci sequence Stamp problem Sequence alignment Matrix multiplication. Leornardo Fibonacci 1170-1250. Old hens never die … They just lay eggs!. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 11

資料結構與演算法 ( 上 )

呂學一 (Hsueh-I Lu)http://www.csie.ntu.edu.tw/~hil/

Page 2: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 22

Outline of this slideOutline of this slide Dynamic programming

– Fibonacci sequence– Stamp problem– Sequence alignment– Matrix multiplication

Page 3: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 33

Leornardo FibonacciLeornardo Fibonacci1170-1250 1170-1250

Page 4: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 44

Old hens never die …Old hens never die …They just lay eggs!They just lay eggs! At the beginning of Day 1, there is a hen. Each hen lays an egg every 24 hours. Each egg takes 24 hours to become a hen. F(n) = the number of hens at the end of

day n. Give an algorithm to compute F(n).

Page 5: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 55

Day 1Day 1

Page 6: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 66

Day 2Day 2

Page 7: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 77

Day 3Day 3

Page 8: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 88

Day 4Day 4

Page 9: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 99

Day 5Day 5

Page 10: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 1010

E(n) = the number of E(n) = the number of eggs at the end of Day eggs at the end of Day nn E(n) = ? F(n) = ?

Page 11: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 1111

The recurrence The recurrence relationrelation

F (n) = F (n ¡ 1) +E (n ¡ 1)= F (n ¡ 1) +F (n ¡ 2):

F (n) = F (n ¡ 1) +E (n ¡ 1)= F (n ¡ 1) +F (n ¡ 2):

F (1) = F (2) = 1.

Page 12: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 1212

The recursive The recursive algorithmalgorithmint F (n) fif (n · 2)return 1;

elsereturn F (n ¡ 1) +F (n ¡ 2);

g

int F (n) fif (n · 2)return 1;

elsereturn F (n ¡ 1) +F (n ¡ 2);

g

Page 13: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 1313

Very Inefficient!Very Inefficient!F(8)

F(7) F(6)

F(6) F(5) F(5) F(4)

F(5) F(4) F(4) F(3) F(4) F(3) F(3) F(2)

1:61800365 = 1:89303571£ 10761:6180030 = 1859325:9

It takes ­ ((1:618)n) time to compute F (n) using therecursivealgorithm.

Page 14: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 1414

Dynamic-Programming Dynamic-Programming ApproachApproachint F (n) flet F [1]= 1;let F [2]= 1;for i = 3 to n dolet F [i]= F [i ¡ 1]+F [i ¡ 2];

return F [n];g

int F (n) flet F [1]= 1;let F [2]= 1;for i = 3 to n dolet F [i]= F [i ¡ 1]+F [i ¡ 2];

return F [n];g

The DP-algorithm takes only O(n) time

and space!

Page 15: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 1515

IllustrationIllustration

n 1 2 3 4 5 6 7

F[n] 1 1 2 3 5 8 13

Page 16: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 1616

Dynamic ProgrammingDynamic Programming A clever way to implement recursion:

– Using storage to avoid unnecessarily duplicated efforts.

– 讓走過的留下痕跡

Page 17: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 1717

QuestionQuestion 有沒有可能維持線性的時間,卻將空間降低到 O(1)?

Page 18: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 1818

Another example

Choosing stamps

Page 19: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 1919

The problemThe problem If the postage is n, what is the minimum

number of stamps to cover the postage?

Page 20: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 2020

A recursive algorithmA recursive algorithmint stamp(n) fif (n == 0) return 0;if (n < 0) return 1 ;if (n 2 f2;5;8;14g) return 1;let n2 = stamp(n ¡ 2);let n5 = stamp(n ¡ 5);let n8 = stamp(n ¡ 8);let n14 = stamp(n ¡ 14);return 1+min(n2;n5;n8;n14);

g

int stamp(n) fif (n == 0) return 0;if (n < 0) return 1 ;if (n 2 f2;5;8;14g) return 1;let n2 = stamp(n ¡ 2);let n5 = stamp(n ¡ 5);let n8 = stamp(n ¡ 8);let n14 = stamp(n ¡ 14);return 1+min(n2;n5;n8;n14);

g

Page 21: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 2121

The DP-versionThe DP-versionint stamp(n) flet S[0]= 0;for i = ¡ 1 to ¡ 13 dolet S[i]= 1 ;

for i = 1 to n dolet S[i]= 1+min(S[i ¡ 2];S[i ¡ 5];S[i ¡ 8];S[i ¡ 14]);

return S[n];g

int stamp(n) flet S[0]= 0;for i = ¡ 1 to ¡ 13 dolet S[i]= 1 ;

for i = 1 to n dolet S[i]= 1+min(S[i ¡ 2];S[i ¡ 5];S[i ¡ 8];S[i ¡ 14]);

return S[n];g

The DP-algorithm takes only O(n) time

and space!

Page 22: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 2222

IllustrationIllustration0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4

0 * 1 * 2 1 3 2 1 3 2 4 3 2 1 3 2 4 3 2 4 3 2 4 3

Page 23: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 2323

QuestionQuestion 剛剛只是問幾張郵票 . 如果我們想要知道最少張郵票的貼法,究竟是每一種面額的郵票各幾張,應該如何處理?需要額外再花空間嗎?

Page 24: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 2424

Sequence Alignment

Page 25: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 2525

Aligning two stringsAligning two strings A = attgatcctag B = acttagtccttcgc

A → a-ttga-tcc-tag- B → actt-agtccttcgc

gapgapgapgapgap

Page 26: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 2626

Measuring an Measuring an alignmentalignment

a t g c -a 2 -2 -2 -2 -1t -2 2 -2 -2 -1g -2 -2 2 -2 -1c -2 -2 -2 2 -1- -1 -1 -1 -1 -1

Scoring matrix

Page 27: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 2727

Other scoring matricesOther scoring matrices

a t g c -a 5 -4 -4 -4 -4t -4 5 -4 -4 -4g -4 -4 5 -4 -4c -4 -4 -4 5 -4- -4 -4 -4 -4 -4

BLAST matrix Transition/Transversion matrix

a t g c -a 0 5 5 1 -1t 5 0 1 5 -1g 5 1 0 5 -1c 1 5 5 0 -1- -1 -1 -1 -1 -1

Page 28: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 2828

Scoring matrix is an Scoring matrix is an artart Log odds matrix

– score[i, j] = log (q(i, j) / p(i) p(j)). PAM matrix

– Point accepted mutations BLOSOM matrix

– Block substitution matrix– Steven Henikoff and Jorja G. Henikoff (1992).

Other specialized scoring matrices– Domenico Bordo and Patrick Argos (1991). – Jean-Michael Claverie (JCB 1993). – Lee F. Kowlakowski and Kenneth A. Rice (Nature 1994)

Page 29: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 2929

Scoring an Scoring an alignmentalignment

a – t t g a – t c c – t a g - c c t t – a g t c c t t c g c -2-1+2+2-1+2-1+2+2+2-1+2-2+2-1

score = 7

a t g c -a 2 -2 -2 -2 -1t -2 2 -2 -2 -1g -2 -2 2 -2 -1c -2 -2 -2 2 -1- -1 -1 -1 -1 -1

Page 30: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 3030

String alignment String alignment problemproblem Input:

– two strings A and B; and– a scoring table 分 .

Output: – an alignment of A and B that has the

maximum score with respect to 分 .

Page 31: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 3131

Q: Any naïve methods?Q: Any naïve methods? A = attgatcctag B = ccttagtccttcgc

分 a t g c -a 2 -2 -2 -2 -1t -2 2 -2 -2 -1g -2 -2 2 -2 -1c -2 -2 -2 2 -1- -1 -1 -1 -1 -1

Page 32: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 3232

Q: Is there a recursive Q: Is there a recursive method?method? A = attgatcctag B = ccttagtccttcgc

分 a t g c -a 2 -2 -2 -2 -1t -2 2 -2 -2 -1g -2 -2 2 -2 -1c -2 -2 -2 2 -1- -1 -1 -1 -1 -1

Page 33: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 3333

Yes, but very Yes, but very inefficient!inefficient!int align(m;n) fif (m= n = 0) return 0;let x = y = z = 1 ;if (m> 0 and n > 0)let x = align(m¡ 1;n ¡ 1) +Score[A[m];B[n]];

if (m> 0)let y = align(m¡ 1;n) +Score[A[m];¡ ];

if (n > 0)let z = align(m;n ¡ 1) +Score[¡ ;B[n]];

return max(x;y;z);g

Page 34: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 3434

Alignment graphAlignment graph

a

a

t

t

g

c gc t t a t c

Page 35: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 3535

ObservationsObservations Each alignment

corresponds to a maximal path on the alignment graph.

The score of an alignment is the score of its corresponding maximal path.

a

a

t

t

g

c gc t t a t c

c c t t - a g t ca - t t g a - - -

前無古人後無來者

Page 36: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 3636

Score of edgesScore of edges

A[i]

B[j]分 [-, B[j]]

分 [A[i], -] 分 [A[i], B[j]]

Page 37: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 3737

The graph problem

Finding a maximal path with maximum score on the alignment graph (a directed acyclic graph)

Page 38: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 3838

IdeaIdea For each i = 0, 1,

…, |A| and each j = 0, 1,…, |B|, let 點[i, j] keep the maximum score of aligning A[1…i] and B[1…j].

A[i]

B[j]0

0

1 j |B|

1

i

|A|

Page 39: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 3939

An observationAn observation

點 [i, j] = the maximum of – 點 [i-1, j-1] + 分 [A[i],

B[j]]– 點 [i-1, j] + 分 [A[i], -]– 點 [i, j-1] + 分 [-, B[j]]點 [i, j-1] 點 [i, j]

點 [i-1, j-1] 點 [i-1, j]

分 [-, B[j]]

分 [A[i], -]分 [A[i], B[j]]

Page 40: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 4040

For exampleFor example

0 -1 -2 -3 -4 -5 -6 -7 -8

-3 -4 -5 -2 1 0 -1 -2 -3

-1 -2 -3 -4 -5 -2 -3 -4 -5

-2 -3 -4 -1 -2 -3 -4 -1 -2

-4 -5 -6 -3 0 -1 2 1 0

-5 -6 -7 -4 -1 2 1 0 -1

a

a

t

t

g

c gc t t a t c 分 a t g c -a 2 -2 -2 -2 -1t -2 2 -2 -2 -1g -2 -2 2 -2 -1c -2 -2 -2 2 -1- -1 -1 -1 -1 -1

Page 41: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 4141

The DP-version.The DP-version.int align(m;n) flet C[0;0]= 0;for i = 1 to m let C[i;0]= C[i ¡ 1;0]+Score[A[i]; ¡ ];for j = 1 to n let C[0; j ]= C[0; j ¡ 1]+ScoreS[¡ ;B [j ]];for i = 1 to mfor j = 1 to n flet x = C[i ¡ 1; j ¡ 1]+Score[A[i];B [j ]];let y = C[i ¡ 1; j ]+Score[A[i]; ¡ ];let z = C[i; j ¡ 1]+Score[¡ ;B[j ]];let C[i; j ] = max(x;y;z);

greturn C[m;n];

g

Page 42: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 4242

ComplexityComplexity Space = O(|A|×|B|).

– Each node keeps a score and a pointer, and thus requires only O(1) space.

Time = O(|A|×|B|). – The content of each node can be obtained

from those of at most three nodes in O(1) time.

Page 43: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 4343

QuestionQuestion 剛剛只是算出最佳的成績 . 如果我們想要知道得到這個最佳成績的

alignment 應該如何處理?需要額外再花空間嗎?

Page 44: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 4444

For exampleFor example

0 -1 -2 -3 -4 -5 -6 -7 -8

-3 -4 -5 -2 1 0 -1 -2 -3

-1 -2 -3 -4 -5 -2 -3 -4 -5

-2 -3 -4 -1 -2 -3 -4 -1 -2

-4 -5 -6 -3 0 -1 2 1 0

-5 -6 -7 -4 -1 2 1 0 -1

a

a

t

t

g

c gc t t a t c 分 a t g c -a 2 -2 -2 -2 -1t -2 2 -2 -2 -1g -2 -2 2 -2 -1c -2 -2 -2 2 -1- -1 -1 -1 -1 -1

回顧來時徑

Page 45: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 4545

ComplexityComplexity Space = O(|A|×|B|).

– Each node keeps a score and a pointer, and thus requires only O(1) space.

Time = O(|A|×|B|). – The content of each node can be obtained

from those of at most three nodes in O(1) time.

Page 46: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 4646

Application 1

Longest common subsequence

Page 47: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 4747

SubsequenceSubsequence

For any indices 1 ≤ i1 < i2 < … <ik ≤ |A|, A[i1] A[i2] A[i3]…A[ik] is a subsequence of A.

For example, A = 0 1 1 0 1 0 1– 0 1 1 1, 0 0 0, and 1 0 1 0 1 are subsequences

of A.– 0 1 0 1 1 0 is not a subsequence of A.

Page 48: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 4848

Longest Common Longest Common SubsequenceSubsequence

Input: two strings A and B Output: a longest string C that is a

subsequence of both A and B.

Any naïve algorithm?

Page 49: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 4949

It’s an alignment It’s an alignment problem…problem… …with respect to the following scoring

matrix:

分 a t g c -a 1 0 0 0 0t 0 1 0 0 0g 0 0 1 0 0c 0 0 0 1 0- 0 0 0 0 0

Page 50: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 5050

Why?Why? Each alignment with score k corresponds

to a common subsequence of length k.

0 1 1 – 1 0 - - 0 1 1 - - 1 0 1 1 0 1 0 – 1 1 0 1 1 0 1 1

Page 51: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 5151

Application 2

Edit distance between two strings

Page 52: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 5252

Edit operationsEdit operations Inserting a character at position i Deleting a character at position i Replacing a character at position i by a

new character

Page 53: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 5353

Edit distanceEdit distance The edit distance between two strings A

and B is the minimum number of edit operations required to turn A into B.

Page 54: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 5454

The edit distance The edit distance problemproblem Input: two strings A and B Output: the edit distance of A and B.

Any naïve algorithm?

Page 55: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 5555

It’s an alignment It’s an alignment problem…problem… …with respect to the following scoring

matrix:

分 a t g c -a 0 -1 -1 -1 -1t -1 0 -1 -1 -1g -1 -1 0 -1 -1c -1 -1 -1 0 -1- -1 -1 -1 -1 -1

Page 56: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 5656

Why?Why? Each alignment with score -k corresponds

to a sequence of k edit operations that turns A into B.

0 1 1 – 1 0 - - 0 1 1 - - 1 0 1 1 0 1 0 – 1 1 0 -1 -1-1 -1-1-1 -1

d r i i i d i

Page 57: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 5757

Matrix multiplication

Page 58: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 5858

Multiplying two Multiplying two matricesmatricesLet A bea p£ qmatrix. Let B bea q£ r matrix. Then theproduct A £ B of A and B is thep£ r matrix M such that

M [i; j ]=X

1· k· qA[i;k]¢B[k;j ]

holds for all indices i and j with 1· i · p and 1· j · r.

It takesO(pqr) timeto obtain A £ B fromA and B. (Why?)

Page 59: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 5959

IllustrationIllustration

=

Page 60: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 6060

IllustrationIllustration

=

Page 61: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 6161

IllustrationIllustration

=

Page 62: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 6262

Multiplying 3 matricesMultiplying 3 matrices

A £ B £ C = (A £ B) £ C= A £ (B £ C):

The time required by obtaining A £ B £ C could be affectedby which twomatricesmultiply ¯rst.

Page 63: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 6363

An exampleAn example

==

n £ 1 1£ n n £ n

n £ n n £ n n £ n

£(n3)£ (n2)

Theoverall time is

£(n2)+£(n3) = £(n3):

Page 64: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 6464

An exampleAn example

==

n £ 1 1£ n n £ n

n £ n

£(n2)

n £ 1

£(n2)

1£ n

Theoverall time is

£(n2)+£(n2) = £(n2):

Page 65: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 6565

The problemThe problem

F Input: A sequence 0; 1; : : : ; n of positive integers,whereI i ¡ 1 is thenumber of rows of matrix M i , andI i is thenumber of columns of matrix M i .

F Output: An order of performing those n ¡ 1 matrixmultiplications in theminimumnumber of operationsto obtain theproduct

M1 £ M2 £ ¢¢¢£ Mn:

Page 66: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 6666

IllustrationIllustration

0

1

1

2 3

3

4

4

5

5

6

0

6

2

Page 67: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 6767

Any naïve algorithm?Any naïve algorithm?

Page 68: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 6868

C(i,j)C(i,j)

Let C(i; j ) be the minimum number of operationsrequired to obtain theproduct

M i £ M i+1 £ ¢¢¢£ M j :

Clearly, theminimumnumber of operations requiredto obtain the product of all n matrices is exactlyC(1;n).

Page 69: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 6969

RecurrenceRecurrence

C(i; j )

=( 0 if i ¸ j

mini · k<j

(C(i;k) +C(k+1;j ) + i ¡ 1 k j ) otherwise:

Page 70: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 7070

Dynamic programmingDynamic programming

C 1 2 3 4 5 6 … n

1 0

2 0

3 0

4 0

5 0

6 0

: 0

n 0

如何找出矩陣相乘的順序?

Page 71: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 7171

ComplexityComplexity

F Timecomplexity: O(n3).F Spacecomplexity: O(n2).

I Can this be reduced to o(n2)?

Page 72: 資料結構與演算法 ( 上 )

2008 Fall Semester2008 Fall Semester Data Structures and Algorithms (I)Data Structures and Algorithms (I) 7272

Have a wonderful weekend!!

See you next time