Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

KIV/PRO Cvičení 8 10. 11. 2014. Násobení matic Najděte nejúčinnější způsob, jak vynásobit matice M 1, M 2,...,M n, kde matice M i má r i-1 řádek a r i.

Podobné prezentace


Prezentace na téma: "KIV/PRO Cvičení 8 10. 11. 2014. Násobení matic Najděte nejúčinnější způsob, jak vynásobit matice M 1, M 2,...,M n, kde matice M i má r i-1 řádek a r i."— Transkript prezentace:

1 KIV/PRO Cvičení

2 Násobení matic Najděte nejúčinnější způsob, jak vynásobit matice M 1, M 2,...,M n, kde matice M i má r i-1 řádek a r i sloupců Poznámky: – Měnit pořadí nelze, není komutativní – Sdružovat lze, je asociativní  Vhodné pro DP – Výsledné počty operací se mohou dramaticky lišit podle užitých závorek

3 Příklad Vynásobte M = M 1 x M 2 x M 3 x M 4, kde M 1 (10,20), M 2 (20,50), M 3 (50,1), M 4 (1,100) Násobení M=M 1 x(M 2 xM 3 xM 4 ) operací M=(M 1 x(M 2 xM 3 ))xM operací Exponenciální počet řazení, nutno napřed všechny n-1 násobení, pak n-2, až (n-1)! řazení Lze pomocí DP v O (n 3 )

4 Řešení přes DP Nechť m i,j = min.cena výpočtu M i x... x M j – m i,j = min i≤k

5 Matrix multiplication (n, r, m) for i := 1 to n do m[i,i] := 0; for length := 1 to n-1 do for i := 1 to n-length do begin j := i + length; m[i,j] := min i≤k

6 K našemu příkladu... Napřed zjistíme, co stojí násobení 2 matic M 1 xM 2, M 2 xM 3, M 3 xM 4 m 1,2 = min(m 1,1 + m 2,2 + r 0 r 1 r 2 ) m 2,3 = min(m 2,2 + m 3,3 + r 1 r 2 r 3 ) m 3,4 = min(m 3,3 + m 4,4 + r 2 r 3 r 4 ) lengthijk

7 K našemu příkladu... Pak zjistíme, co stojí násobení 3 matic M 1 xM 2 xM 3, M 2 xM 3 xM 4 M 1 xM 2 xM 3 : je lepší cesta přes M 1 x(M 2 xM 3 ) nebo (M 1 xM 2 )xM 3 )? – m 1,3 = min(m 1,1 + m 2,3 + r 0 r 1 r 3, m 1,2 + m 3,3 + r 0 r 2 r 3 ) – m 1,3 = min(1200, 10500) = 1200 lengthijk 2131, , x

8 K našemu příkladu... Pak zjistíme, co stojí násobení 3 matic M 1 xM 2 xM 3, M 2 xM 3 xM 4 M 2 xM 3 xM 4 : je lepší cesta přes M 2 x(M 3 xM 4 ) nebo (M 2 xM 3 )xM 4 )? – m 2,4 = min(m 2,2 + m 3,4 + r 1 r 2 r 4, m 2,3 + m 4,4 + r 1 r 3 r 4 ) – m 2,4 = min( x10 3, x10 3 ) = = 3x10 3 lengthijk 2131, , x

9 K našemu příkladu... Nakonec zjistíme cenu násobení 4 matic (už víme, jak nejlépe vynásobit dvojice a trojice) – m 1,4 = min (m 1,1 + m 2,4 + r 0 r 1 r 4, m 1,2 + m 3,4 + r 0 r 2 r 4, m 1,3 + m 4,4 + r 0 r 3 r 4 ) – m 1,4 = min (3x x10 3, x x10 4, ) = 2200 lengthijk 3141, 2, x x

10 K našemu příkladu... Nejmenší cena 2200, pokud použiju m 1,3 a pro získání m 1,3 použiju m 2,3 Nejvhodnější násobení tedy: (M 1 x (M 2 x M 3 )) x M 4 Kontrola: M(10,20) x M(20,50) x M(50,1) x x M(1,100) = M(10,20) x M(20,1) x x M(1,100) = M(10,1) x M(1,100) = M(10,100) = 2200 operací x x


Stáhnout ppt "KIV/PRO Cvičení 8 10. 11. 2014. Násobení matic Najděte nejúčinnější způsob, jak vynásobit matice M 1, M 2,...,M n, kde matice M i má r i-1 řádek a r i."

Podobné prezentace


Reklamy Google