9752256901

9752256901



procedurę Quicksort(T[l..n]) if n jest małe then insert(T) else

wybierz element dzielący x

(* niech k równa się liczbie elementów tablicy T nie większych od x*) przestaw elementy tablicy T tak, że V,<fc T[i] < Quicksort(T[l..fc]); Quicksort(T[(fc + l)..n]);


Analizie złożoności algorytmu Quicksort poświęcimy oddzielny wykład. Wówczas omówimy także sposoby implementacji kroku 1.

10.2 Mnożenie bardzo dużych liczb.

Problem:

Dane:    liczby naturalne a i b

komentarz: liczby a i b są długie.

Wynik: iloczyn a ■ b

Dla prostoty opisu przyjmijmy, że obydwie liczby mają tę samą długość (równą n = 2k). Narzucający się algorytm oparty na strategii Dziel i Zwyciężaj polega na podziale n-bitowych czynników na części n/2-bitowe, a następnie odpowiednim wymnoźeniu tych części.

Niech a = a\ ■ 2S + ao i b = bi ■ 2S + bo, gdzie s = n/2; 0 < oi,ao,6i,6o < 2S. Iloczyn a ■ b możemy teraz zapisać jako

ab = C2 • 22s + ci • 2S + cq, gdzie C2 = ai&i; c\ = ao&i + aibo; co = ao&o-

Jak widać jedno mnożenie liczb n-bitowych można zredukować do czterech mnożeń liczb n/2-bitowych, dwóch mnożeń przez potęgę liczby 2 i trzech dodawań. Zarówno dodawania jak i mnożenia przez potęgę liczby 2 można wykonać w czasie liniowym. Taka redukcja nie prowadzi jednak do szybszego algorytmu - czas działania wyraża się wzorem T(n) = AT {n/2) + 0(n), którego rozwiązaniem jest T(ń) = 0(n2). Aby uzyskać szybszy algorytm musimy potrafić obliczać współczynniki C2,ci,cq przy użyciu trzech mnożeń liczb n/2-bitowych. Uzyskujemy to przez zastąpienie dwóch mnożeń podczas obliczania C\ jednym mnożeniem i dwoma odejmowaniami:

ci — (ai + ao)(&i + bo) — co — C2-

17



Wyszukiwarka

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


multiply(a, b) n *— max(a,
74 (177) 110 Turbo Pascal • Ćwiczenia praktyczne else if Zmienna-wartosc2 then dzialanie2 else
00483 ?a0a2174ee321f03b6f4c5f28194bec 489An Algorithm and a Graphical Approach for Short Run Proces
Zadania if A[fromY,tooV] then Jest Droga eke INieMaDrogi; end; Jaka jest minimalna wartoś
Zadanie 7Zadanie 7 Niech f (x, y) będzie w pewnym języku zdefiniowana jako { if y>0 then x + &quo
ROZDZIAŁ 2. PROGRAMOWANIE W JĘZYKU POWŁOKI SH if ciąg_komend_l then ciąg_komend_2 {else
odstawowe instrukcje sterujące w języku Java if (wyrażenie) then instrukcja; else instrukcja; if
011 5 end; if noweDzialanie-tak then begin liczba:=drugaLiczba; end else begin if działanie-plus t
Zdj?cie0613 spożycie pochodnych ropy naftowej spożycie detergentów Płukanie żołądka. Procedura ta ni
skanuj0021 5 14 t ftfwwmw aftmnrmrnm
programstr6 Program if er=false then Przepl(Hl); end; if (k- n ) or (k-N ) then halt; end; {PROGRAM
page0027 niema w nim zupełnego zwolnienia mięśni—lecz przeciwnie jest małe ich podniecenie, skutkiem
IMG@16 Kompetencje TK 1)    kontrola norm; szczególną procedurą kontroli norm je
3
img05301 48 terą, a wielkie u jest takie: U, takie o jest małe, a wielkie o jest

więcej podobnych podstron