ALG#2
232 Rozdział 9. Zaawansowane techniki programowania I 9
pozornie całą żądaną pamięć, faktycznie operuje jej „stronami”, które dosyla I mu w miarę potrzeb system operacyjny, sprawa może wyglądać już trochę gorzej. Drugim istotnym powodem spadku efektywności algorytmu dla dużych (praktycznie występujących) wartości N, jest kumulacja wielokrotnych wywołali rekurencyjnych i wzrastającej „zauważalności” roli operacji dodawania i odejmowania. Z wymienionych wyżej względów algorytm V. Strassena należy raczej traktować jako ciekawy wynik teoretyczny , o niepodważalnych walorach edukacyjnych!
9.1.3.Mnożenie liczb całkowitych
Kolejny przykład jest również natury obliczeniowej: zajmiemy się mnożeniem liczb całkowitych.
Mnożenie dw'óch liczb całkowitych X i Z, których reprezentacja wewnętrzna ma rozmiar /V-hitów, jest operacją klasy OfN2). Zakładamy, że mnożenie jest wykonywane klasycznie, tak jak nas tego nauczono w szkole podstawowej (sumujemy „w słupku” N wyników iloczynów cząstkow'ych. każdy z nich jest klasy O(n)).
Metoda „dziel-i-rządź” w przypadku mnożenia liczb całkowitych może być zastosowana po dokonaniu następującej obserwacji:
,v
X = [A B] = A *2y + B,
Y = [C D] = C *22 A-D.
A i B oraz C i D oznaczają odpowiednio „połówki” reprezentacji binarnych liczb X i Y. Iloczyn X*Y może być zapisany jako:
w v
XY=AC-22 +(AD+ BC)-22 + BI).
Jeśli założymy, że A'jest potęgą liczby 2 (co jest generalnie prawdą we współczesnych komputerach), to możemy wyrazić złożoność obliczeniową programu przez:
T(V = 1,
T(N) = 4rfy V cN.
W równaniach tych zaznaczamy wpływ czterech kosztownych operacji mnożenia plus pewien proporcjonalny do N koszt związany z dodawaniami i przesu-
Wyszukiwarka
Podobne podstrony:
ALG 6 226 Rozdział 9. Zaawansowane techniki programowaniaĆwicz. 9-1 Proszę wyprowadzić wzory tłumaczALG 8 228 Rozdział 9. Zaawansowane techniki programowania • funkcja KOMB polega na najzwyklejszym poALG#0 230 Rozdział 9. Zaawansowane techniki programowania Koszt wyliczenia jednego elementu macierzyALG#4 234 Rozdział 9. Zaawansowane techniki programowania problemu. Mimo iź wersje iteracyjne i rekuALG#6 236 Rozdział 9. Zaawansowane techniki programowania części plecaka przeznaczonej na sery y ’ wALG$0 240 Rozdział 9. Zaawansowane techniki programowania „programu wanie dynamiczne " •ALG$2 242 Rozdział 9, Zaawansowane techniki programowania miejscach), chociaż w zoptymalizowanej werALG 3 Rozdział 9Zaawansowane techniki programowania Rozdziały poprzednie (szczególnie 2 i 5) dostarcALG 4 224Rozdział 9. Zaawansowane techniki programowania Należy zdawać sobie bowiem sprawę z lego, iALG#8 238Rozdział 9. Zaawansowane techniki programowania if(i <n) X[i]=Z/W[i]; I void main() I doKsięgarnia PWN: Joe Celko - SQL. Zaawansowane techniki programowaniaSpis treści O12 SQL. Zaawansowane techniki programowania 28. Drzewa i hierarchie w języku14 SQL. Zaawansowane techniki programowania 33. Optymalizowanie języka4 SQL. Zaawansowane techniki programowania 2.6 SQL. Zaawansowane techniki programowania 7.4. NumerySQL. Zaawansowane techniki programowania 17.2.6. Złączenia zewnętrzne i funkcje10 SQL. Zaawansowane techniki programowania 22. Tabeleassembler?86? 6 192 7. Wybrane techniki programowania to wydzielony fragment pamięci operacyjnej (ALG6 36 Rozdział 2. Rekurencja każemy. W rozdziale 9 zostanie omówiona ciekawa technika programowanwięcej podobnych podstron