19
Algoritam za množenje ulančanih matrica Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Algoritam za množenje ulančanih matrica

Alen Kosanović Prirodoslovno-matematički fakultet

Matematički odsjek

Page 2: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

O problemu (1)

• Neka je 𝐴1, 𝐴2, … , 𝐴𝑛 niz ulančanih matrica duljine 𝑛 ∈ 𝑵 , gdje su dimenzije matrice 𝐴𝑖 redom 𝑚𝑖−1 𝑥 𝑚𝑖 , 0 ≤ 𝑖 ≤ 𝑛 .

• Prisjetimo se da je množenje matrica asocijativno: A(BC) = (AB)C

• Postavlja se pitanje koji je redoslijed za množenje matrica optimalan.

• Uvjerimo se da je redoslijed bitan!

Page 3: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

O problemu (2)

((AB)C)D = 100×30×20 + 100×20×3 + 100x3x10 = 69.000

(A(BC))D = 30×20×3 + 100x30x3 + 100×3×10 = 13.800

(AB)(CD) = 100x30x20 + 20x3x10 + 100x20x10 = 80.600

A((BC)D) = 30×20×3 + 30x3x10 + 100x30x10 = 32.700

A(B(CD)) = 20x3x10 + 30x20x10 + 100x30x10 = 36.600

100 x 30 30 x 20 20 x 3 3 x 10

*Matrice u primjeru osobno sam odabrao.

Page 4: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

O rješenju (3)

• Problem možemo ilustrirati binarnim stablom:

A B

C

D

A B C D

((AB)C)D (AB)(CD)

Page 5: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Pristup problemu dinamičkim programiranjem (1)

• 𝑛 – duljina našeg lanca

• Za 1 ≤ 𝑖 ≤ 𝑗 ≤ 𝑛, 𝐿(𝑖, 𝑗) = lanac 𝐴𝑖 , … , 𝐴𝑗

• Za lanac 𝐿(𝑖, 𝑗) definiramo:

– 𝐶(𝑖, 𝑗): =optimalni broj operacija za zadani lanac

– 𝐾(𝑖, 𝑗)≔𝑘 td 𝑖 ≤ 𝑘 < 𝑗 i 𝐶(𝑖, 𝑘) + 𝐶(𝑘 + 1, 𝑗) = 𝐶(𝑖, 𝑗) (predstavlja indeks na kojem je najbolje „presjeći” lanac)

• 𝑇1 = 𝐶 𝑖, 𝑗 : 1 ≤ 𝑖 ≤ 𝑗 ≤ 𝑛

• 𝑇2 = {𝐾 𝑖, 𝑗 : 1 ≤ 𝑖 ≤ 𝑗 ≤ 𝑛}

Page 6: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Pristup problemu dinamičkim programiranjem (2)

i\j 1 2 3 4

1 0

2 0

3 0

4 0

i\j 1 2 3 4

1

2

3

4

T1 T2

Lanac duljine 1. A, B, C, D. Množenja nema stoga je cijena 0. Sjecanja lanca nema pa ništa ne upisujemo u drugu tablicu.

Page 7: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Pristup problemu dinamičkim programiranjem (3)

i\j 1 2 3 4

1 0 60.000

2 0 1.800

3 0 600

4 0

i\j 1 2 3 4

1 1

2 2

3 3

4

T1 T2

Lanac duljine 2. AB, BC, CD. Obično množenje matrica. Lanac je moguće presjeći samo na prvoj matrici.

Page 8: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Pristup problemu dinamičkim programiranjem (4)

i\j 1 2 3 4

1 0 60.000 10.800

2 0 1.800 2.700

3 0 600

4 0

i\j 1 2 3 4

1 1 1

2 2 3

3 3

4

T1 T2

Lanac duljine 3. 1. ABC

1. A|BC = 1.800 + 9.000 = 10.800 <- Sječemo na 1. matrici 2. AB|C = 60.000 + 6.000 = 66.000

2. BCD 1. B|CD = 600 + 6.000 = 6.600 2. BC|D = 1.800 + 900 = 2.700 <- Sječemo na 3. matrici

Page 9: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Pristup problemu dinamičkim programiranjem (5)

i\j 1 2 3 4

1 0 60.000 10.800 13.800

2 0 1.800 2.700

3 0 600

4 0

i\j 1 2 3 4

1 1 1 3

2 2 3

3 3

4

T1 T2

Lanac duljine 4. 1. ABCD

1. A|BCD = 2.700 + 30.000 = 32.700 2. AB|CD = 60.000 + 600 + 20.000 = 80.600 3. ABC|D = 10.800 + 3.000 = 13.800 <- Sječemo na 3. mjestu

Page 10: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Pseudokod

for i = 1 to n: 𝐶(𝑖, 𝑖) = 0

for s = 1 to n – 1:

for i = 1 to n – s

j = i + s

𝐶(𝑖, 𝑗) = min {𝐶(𝑖, 𝑘) + 𝐶(𝑘 + 1, 𝑗) + 𝑚𝑖−1𝑚𝑘𝑚𝑗: 𝑖 ≤ 𝑘 < 𝑗}

return 𝐶(1, 𝑛)

Page 11: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Složenost

• Za računanje tablica potrebne su 2 for-petlje za prolazak čitavog gornjeg trokuta i 1 for-petlja za traženje minimuma.

• Složenost: 𝑶(𝑛3).

• Ipak, konačan broj operacija je nešto bolji i može se dobiti sumiranjem:

• 𝑛𝑖=1 𝑛−𝑠

𝑠=1 1𝑗+𝑠𝑘=𝑖 = … ≈

𝑛3

3

Page 12: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Rezultati testiranja (1)

• Vršena su 3 testiranja:

1. Usporedba klasičnog i dinamičkog algoritma „Veliki lanci, manje matrice” (lanci duljina 50 – 1000, matrice dimenzija između 10 i 100).

2. „Veliki lanci, manje matrice” (lanci duljina 50 – 1000, matrice dimenzija između 10 i 100).

3. Trajanje samog algoritma računanja optimalnog redoslijeda (lanci duljina 100 – 2500).

Page 13: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Rezultati testiranja (2)

• Tesitranje je vršeno na kompjutoru s procesorom Intel Core i5-3570k CPU @ 3.40GHz.

• Algoritam je implementiran u programskom jeziku Java. Izvorni kod i rezultati zapisani su na eng. jeziku.

• Za svaki lanac uzeta je populacija od 20 matrica čije su dimenzije odabrane nasumično. Korišten je algoritam za nasumično biranje brojeva koji dolazi zajedno s Java SDK. Detalji.

Page 14: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Rezultati testiranja (3)

Chain Length Classic Dynamic Difference

450 0,02 0,07 -0,05

450 0,09 0,08 0,01

450 0,02 0,05 -0,03

450 0,06 0,05 0,01

450 0,09 0,06 0,03

450 0,09 0,05 0,04

450 0,05 0,05 0,00

450 0,04 0,05 -0,01

450 0,10 0,05 0,05

450 0,02 0,05 -0,03

450 0,02 0,05 -0,03

450 0,09 0,05 0,04

450 0,12 0,05 0,07

450 0,06 0,05 0,01

450 0,06 0,05 0,01

450 0,02 0,05 -0,03

450 0,05 0,05 0,00

450 0,02 0,17 -0,15

450 0,02 0,05 -0,03

450 0,03 0,04 -0,01

AVG 0,05 0,06 -0,01

Chain Length Classic Dynamic Difference

1000 0,10 1,60 -1,50

1000 0,16 1,78 -1,62

1000 0,14 1,79 -1,65

1000 0,25 1,73 -1,48

1000 0,15 1,60 -1,45

1000 0,21 1,77 -1,56

1000 0,17 1,82 -1,65

1000 0,18 1,83 -1,65

1000 0,21 1,93 -1,72

1000 0,08 1,93 -1,85

1000 0,24 1,41 -1,17

1000 0,18 1,48 -1,30

1000 0,13 1,51 -1,38

1000 0,23 1,38 -1,15

1000 0,23 1,27 -1,04

1000 0,20 1,28 -1,08

1000 0,08 2,01 -1,93

1000 0,04 2,01 -1,97

1000 0,17 1,93 -1,76

1000 0,25 1,90 -1,65

AVG 0,17 1,70 -1,53

Test 1, usporedba klasičnog i dinamičkog algoritma. Mjerna jedinica: sekunde Matrice duljina: od 10 do 1000, duljine lanaca: od 450 do 1000.

Primjećujemo da za zadane parametre našeg problema, naš algoritam prestaje biti efikasan za lanac duljine 450.

Page 15: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Rezultati testiranja (4) Test 2, usporedba klasičnog i dinamičkog algoritma. Mjerna jedinica: sekunde Matrice duljina: od 100 do 1000, duljine lanaca: od 3 do 30.

Primjećujemo da dinamičkim računanjem drastično povećavamo efikasnost.

0

5

10

15

20

25

30

35

40

0 5 10 15 20 25 30 35

Tim

e/s

Chain Length

Comparison of Algorithms

Classic Dynamic

Chain Length Classic Dynamic Difference

3 3,24 2,35 0,88

6 6,99 1,96 5,03

9 8,30 2,96 5,34

12 18,15 3,97 14,18

15 23,04 3,17 19,86

18 24,69 4,65 20,04

21 35,53 5,65 29,88

24 27,91 5,54 22,37

27 29,30 5,40 23,90

30 31,49 6,58 24,91

Navedene vrijednosti u 2. i 3. koloni su aritmetičke sredine rezultata.

Page 16: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Rezultati testiranja (5) Test 3, trajanje algoritma nalaženja najboljeg redoslijeda množenja. Duljine lanca: 50 – 2500.

y = 3E-09x3 - 3E-07x2 - 0,001x + 0,2524

-5

0

5

10

15

20

25

30

35

40

45

0 500 1000 1500 2000 2500 3000

Ch

ain

Le

ng

th

Time/s

Algoritam pronalaska optimalnog redoslijeda množenja

Page 17: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Zaključak (1)

Kada se isplati računati redoslijed množenja?

• U većini slučajeva netrivijalnih lanaca – DA.

• Za slučajeve velikih matrica, promjena može biti drastična.

• S druge strane, cijena samog algoritma dosta je niska, tako da ga se isplati koristiti čak i kod lanaca razumnih duljina, manjih matrica.

Page 18: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Zaključak (2)

Kada se ne isplati računati redoslijed množenja?

• Ukoliko nam problem nalaže da ćemo često množiti lanac matrica čija duljina prelazi veličinu trostruko većoj od dimenzija matrica.

• Ukoliko nam je problem toliko jednostavan, da pisanje samog koda oduzima više resursa.

Page 19: Algoritam za množenje ulančanih matricaweb.studenti.math.pmf.unizg.hr/~kosani/materijali/OAA... · 2013-11-24 · Algoritam za množenje ulančanih matrica Alen Kosanović ... Matrice

Literatura

• Algorithms by S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani

• http://en.wikipedia.org/