ALG#0

ALG#0



230


Rozdział 9. Zaawansowane techniki programowania

Koszt wyliczenia jednego elementu macierzy C, mając na uwadze ilość wykonywanych operacji mnożenia (przyjmijmy rozsądnie, że to one są tu ^najkosztowniejsze’'), jest równy oczywiście N. Ponieważ wszystkich elementów jest .V, to koszt całkowity wyniesie AT, czyli program należy do 0(N)\

Algorytm jest bardzo kosztowny, ale wydawało się to przez długi czas tak nieuniknione, że praktycznie wszyscy się z tym pogodzili. W roku 1968 Volker Strassen sprawił jednakże wszystkim sporą niespodziankę, wynajdując algorytm bazujący na idei „dziel-i-rządź”, który był lepszy niż wydawałoby się „nienaruszalne” 0(N)S.

Oznaczmy elementy macierzy A. B i C' w sposób następujący:

A.

4/

X

V

c„

C12

A.

a22

A

b21

_Qi

C22,

Nie jest trudno wykazać, że prawdziwe są następujące równości:

61| — AuBn+AnB2i,

Cj2 = A„BI22B22,

— /4,| 5| i+zł,,

C22 = A2iBI2+A22B22.

Podejście polegające na podziale każdej z matryc A i B na 4 równe części (zakładając oczywiście, że W jest potęgą liczby 2...) i wykonanie mnożenia matryc mniejszego rzędu wydaje się bezpośrednim zastosowaniem techniki „dziel-i-rządź”. Ponieważ jednak podział nie oszczędza nam pracy (w dalszym ciągu jesteśmy zmuszeni do zrobienia dokładnie tego samego, co algorytm iteracyjny), to na pewno nie otrzymamy tu efektywniejszego algorytmu. Stwierdzenie to nie jest poparte obliczeniami. ale zapewniam, że jest prawdziwe.

Spójrzmy teraz jak V. Strassen zoptymalizował mnożenie macierzy. Zasadnicza idea jego metody polega na wprowadzeniu dodatkowych „zmiennych”, będących matrycami rzędu —: P, Q, R, S, T, U, V, służących do zapamiętania wy-

2

ników następujących obliczeń’:

’ Obok równań są zaznaczone operacje arytmetyczne wymagane do wyliczenia danej równości.


Wyszukiwarka

Podobne podstrony:
ALG 6 226 Rozdział 9. Zaawansowane techniki programowaniaĆwicz. 9-1 Proszę wyprowadzić wzory tłumacz
ALG 8 228 Rozdział 9. Zaawansowane techniki programowania • funkcja KOMB polega na najzwyklejszym po
ALG#2 232 Rozdział 9. Zaawansowane techniki programowania I 9 pozornie całą żądaną pamięć, faktyczni
ALG#4 234 Rozdział 9. Zaawansowane techniki programowania problemu. Mimo iź wersje iteracyjne i reku
ALG#6 236 Rozdział 9. Zaawansowane techniki programowania części plecaka przeznaczonej na sery y ’ w
ALG$0 240 Rozdział 9. Zaawansowane techniki programowania „programu wanie dynamiczne " •
ALG$2 242 Rozdział 9, Zaawansowane techniki programowania miejscach), chociaż w zoptymalizowanej wer
ALG 3 Rozdział 9Zaawansowane techniki programowania Rozdziały poprzednie (szczególnie 2 i 5) dostarc
ALG 4 224Rozdział 9. Zaawansowane techniki programowania Należy zdawać sobie bowiem sprawę z lego, i
ALG#8 238Rozdział 9. Zaawansowane techniki programowania if(i <n) X[i]=Z/W[i]; I void main() I do
Księgarnia PWN: Joe Celko - SQL. Zaawansowane techniki programowaniaSpis treści O
12 SQL. Zaawansowane techniki programowania 28.    Drzewa i hierarchie w języku
14 SQL. Zaawansowane techniki programowania 33. Optymalizowanie języka
4 SQL. Zaawansowane techniki programowania 2.
6 SQL. Zaawansowane techniki programowania 7.4.    Numery
SQL. Zaawansowane techniki programowania 17.2.6.    Złączenia zewnętrzne i funkcje
10 SQL. Zaawansowane techniki programowania 22. Tabele
IMG34 (6) 139 Rozdział XII. Technika pracy materiałami do wypełnieńAplikacja kompozytu do ubytku -

więcej podobnych podstron