9752256902

9752256902



multiply(a, b)

n *— max(\a\, |b|)    (* |x| oznacza długość liczby x *)

if n jest małe then pomnóż a i b klasycznym algorytmem return obliczony iloczyn

P«“ L«/2J

ai *— [a/2pJ; ao *— a mod 2P <- |6/2PJ; b0 «- 6 mod 22 <— multiply(ao, bo) y *— multiply(ai + ao, 61 + bo) x «— multiply(ai, &i); return 22px + 2p(y - x - 2) + 2


Fakt 2 Złożoność czasowa powyższego algorytmu wynosi 0(nlog3).

DOWÓD: (Zakładamy, źe a i 6 są liczbami n - bitowymi i n jest potęgą liczby 2.)

Wystarczy pokazać, źe czas działania algorytmu wyraża się wzorem:

r( s    k    dla n = 1

K }    \ 3T(n/2) + @(n) dla n > 1

Jedyną wątpliwość może budzić fakt, źe wskutek przeniesienia liczby ai + ao i 61 + 60 mogą być (n/2) + 1-bitowe. W takiej sytuacji ai + ao zapisujemy w postaci a'2n^ + a",b\ + bo w postaci b'2n/2 + b", gdzie a' i b' są bitami z pozycji (n/2) + 1 liczb a i b, a a"b" są złożone z pozostałych bitów. Obliczenie y możemy teraz przedstawić jako:

(ai + ao)(i>i + 60) = a!b'2n + (a'b” + a"b') 2n/2 + a"b"

Jedynym składnikiem wymagającym rekurencyjnego wywołania jest a"b" (obydwa czynniki są n/2-bitowe). Pozostałe mnożenia wykonujemy w czasie 0(n), ponieważ jednym z czynników jest pojedynczy bit (a' lub ł/) lub potęga liczby 2.

Tak więc przypadek, gdy podczas obliczania y występuje przeniesienie przy dodawaniu, zwiększa złożoność jedynie o pewną stałą, nie zmieniając klasy złożoności algorytmu. □

10.2.1 Podział na więcej części

Pokażemy teraz, źe powyższą metodę można uogólnić. Niech kM będzie dowolną stałą. Liczby a i b przedstawiamy jako

k—1    k—1

a = 2 Oj ■ 2*■/*    b=Y,b‘-2<n/t

i=0    i=0

gdzie wszystkie aj oraz bi są liczbami co najwyżej n/A;-bitowymi. Naszym zadaniem jest policzenie liczb co, c\,..., C2k takich, źe dla j = 0,..., 2k:

j

Cj — O-rbj-r-r=0

18



Wyszukiwarka

Podobne podstrony:
procedurę mergesort(T[l..n]) if n jest małe then insert(T) X[l-


procedurę Quicksort(T[l..n]) if n jest małe then insert(T) else wybierz element dzielący x (* n
skanuj0016 (54) -3- 9.2 Stwierdzenie, że trójkąt ABC jest równoboczny, oznaczenie długości jego b
11057697?7143642006094?699344568156901 o Sztuczny mięsień o długości nominalnej L= lOOGmm jest obcią
Algorytm porównywania liczb: 1.    Jeżeli liczby są różnej długości, to większą jest
Mikrobilogia zywności6 Próba reduktazowa z błękitem metylowym. Jest to pośrednia metoda oznaczania
dim(F) = Lx M, gdzie M oznacza długość (liczbę próbek) realizacji sygnałów x(n) i d(n). Macierz F je
skanuj0063 (46) Wszystkie węzły sieci są końcami wektorów ua--vb przy czym u i v oznaczają dowolne l
O KLEJNOCIE STARODAWNYM 0    którym Długosz pisze, że jest właśnie w Polsce nabyty u
O KLEJNOCIEJUNOSZA alus BARAN, 0    którym Długosz powieda, że jest w Polsce nabyty,
img096 96 7.8. Rozwiązywanie problemu komiwojażera oznacza długość wybranej drogi; przy obliczaniu w
img165 (5) rujcmy klejem jedynie na krawędziach oznaczonych kropkami na rysunku. Jest to konieczne w

więcej podobnych podstron