Problem nawiasowania ciągu macierzy - Google

Problem nawiasowania ciągu macierzy

Z Wikipedii

Skocz do: nawigacji, szukaj

Problem nawiasowania ciągu macierzy - jest problemem znalezienia takiego nawiasowania ciągu macierzy \! A_0 A_1 \cdots A_n, by zminimalizować koszt poszczególnych mnożeń. Nawiasowanie takie nazywa się optymalnym. Mówimy, że iloczyn macierzy \! A_0\cdot A_1\cdot \cdots \cdot A_n ma ustalone nawiasowanie, jeżeli tworzy go pojedyncza macierz, lub iloczyn dwóch iloczynów macierzy o ustalonym nawiasowaniu.

Spis treści

[edytuj] Przykład ustalonych nawiasowań

Niech \! A_0 A_1 A_2 A_3 A_4 będzie ciągiem macierzy. Ich iloczyn ma następujące ustalone nawiasowania:

\! (((A_0 \cdot A_1) \cdot A_2)\cdot A_3)
\! ((A_0 \cdot (A_1 \cdot A_2))\cdot A_3)
\! ((A_0 \cdot A_1)\cdot (A_2\cdot A_3))
\! ((A_0 \cdot ((A_1\cdot A_2\cdot) A_3))
\! (A_0 \cdot (A_1\cdot (A_2\cdot A_3)))

[edytuj] Nawiasowanie a koszt obliczenia iloczynu macierzy

Łatwo przekonać się, że wybór nawiasowania może mieć znaczący wynik na liczbę operacji potrzebnych do obliczenia iloczynu macierzy - koszt pomnożenia dwóch macierzy, o wymiarach odpowiednio a × b i b × c wynosi \! O(a\cdot b\cdot c) (dokładnie - wymaga \! a\cdot b\cdot c mnożeń skalarnych)

Niech dane będą trzy macierze \! A_0 A_1 A_2 o rozmiarach odpowiednio 2 × 20, 20 × 1 i 1 × 10. Dla nawiasowania \! ((A_0\cdot A_1)\cdot A_2) koszt iloczynu wyniesie:

\! 2\cdot 20 \cdot 1\ =\ 40 (koszt obliczenia \! A_0\cdot A_1\ = \ A^{'}) + \! 2\cdot 1 \cdot 10\ =\ 20 (koszt obliczenia \! A^{'}\cdot A_2). Razem: \! 60

Dla tych samych macierzy, ale nawiasowania \! (A_0\cdot (A_1\cdot A_2)) koszt mnożenia wyniesie:

\! 20 \cdot 1 \cdot 10 mnożeń dla \! A_1\cdot A_2 plus \! 2\cdot 1\cdot 10 mnożeń skalarnych

co daje łącznie \! 220 mnożeń skalarnych potrzebnych do pomnożenia wyniku przez \! A_0. Oszczędność nawiasowania pierwszego jest oczywista.

[edytuj] Własność optymalnej podstruktury

Można wykazać, że problem nawiasowania macierzy wykazuje własność optymalnej podstruktury.

[edytuj] Dowód

Załóżmy, że dla optymalnego nawiasowania macierzy \! A_i A_{i+1} \cdots A_j występuje podział między \! A_p i \! A_{p+1}, oraz, niewprost, że dla tego nawiasowania nawiasowanie \! A_i A_{i+1} \cdots A_p nie jest optymalne. Wówczas można by w nawiasowaniu \! A_i A_{i+1} \cdots A_j "podmienić" nawiasowanie \! A_i A_{i+1} \cdots A_p na optymalne, w wyniku czego otrzymalibyśmy nowe nawiasowanie \! A_i A_{i+1} \cdots A_j, lepsze od optymalnego - sprzeczność.

[edytuj] Rozwiązanie problemu nawiasowania macierzy

Problem nawiasowania ciągu macierzy można łatwo rozwiązać stosując algorytm dynamiczny. Definiujemy koszt optymalnego nawiasowania jako funkcję optymalnych rozwiązań podproblemów.

Niech \! k[i][j] oznacza minimalny koszt wymnożenia macierzy \! A_i A_{i+1} \cdots A_j \! k[i][j] Może być zdefiniowane następująco:

  • \! k[i][i] - nawiasowanie tylko jednej macierzy - \! k[i][i]\ =\ 0
  • \! k[i][j] - nawiasowanie to musi wyznaczać punkt podziału p, taki, że (zgodnie z podpunktem o własności optymalnego nawiasowania) \! A_i \cdots A_p i \! A_{p+1} \cdots A_j są optymalnymi rozwiązaniami podproblemów. Wtedy \! k[i][j] jest równe sumie minimalnych kosztów obliczenia \! A_i \cdots A_p i \! A_{p+1} \cdots A_j plus koszt pomnożenia macierzy wynikowych tych podrozwiązań:
\! k[i][j]\ =\ min_{i\le k <j} \{m[i][k]\ +\ m[k+1][j]\ +\ a_{i-1}\cdot b_k \cdot c_j\}

Ekstremalnie niebezpieczny Ike
Huragan Ike, który z czwartej kategorii osłabł do trzeciej, znów przybiera na sile i ponownie staje się huraganem czwartej kategorii - poinformowało Narodowe Centrum Huraganów w USA.
Obama i McCain przestaną walczyć. W rocznicę 11 września
Tego dnia odłożą na bok politykę, wyborcze topory i walkę o głosy Amerykanów. Przynajmniej obaj zgodnie tak twierdzą. Republikanin John McCain i demokrata Barack Obama we wspólnym oświadczeniu ogłosili, że 11 września, w rocznicę zamachów na World Trade Center, staną obok siebie w "strefie zero".
Rosja do NATO: albo my, albo Gruzja
- Jeśli NATO przyjmie dla Gruzji plan na rzecz członkostwa (tzw. MAP), Rosja zerwie wszelką współpracę i kontakty z sojuszem - oświadczył stały przedstawiciel Rosji przy Pakcie Północnoatlantyckim Dmitrij Rogozin w wywiadzie dla francuskiego "Le Monde". Amerykanie odpowiadają: rozszerzenie NATO będzie kontynuowane.
Steinbach: Niemcy niewolniczo pracowali dla Polaków
- Miliony Niemców było zmuszanych przed wypędzeniem do pracy przymusowej - nie tylko dla Związku Radzieckiego, ale także dla Polski, Czechosłowacji i Jugosławii - stwierdziła szefowa Związku Wypędzonych Erika Steinbach. - Ta wypowiedź jest skandaliczna - ocenił w TVN24 poseł Paweł Zalewski.
UE obiecuje zniesienie sankcji wobec Białorusi
Po ociepleniu stosunków na linii USA-Białoruś, nad zniesieniem sankcji wobec Mińska - na wniosek Polski - zastanawia się też Unia Europejska. - Unia Europejska podejmie pozytywne decyzje w sprawie Białorusi, by odpowiedzieć na zwolnienie przez reżim wszystkich więźniów politycznych - mówił w Awinionie wysoki przedstawiciel ds. polityki zagranicznej UE Javier Solana. - Odnotowujemy pozytywną ewolucję władz białoruskich w niektórych sprawach - mówi szef polskiej dyplomacji Radosław Sikorski.
Linki: Strona gwna