slajdy
Transkrypt
slajdy
Motywacja Miary algorytmów Model - wstęp PRAM - założenia Algorytmy Równoległe i Rozproszone Część IV - Model PRAM Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Łukasz Kuszner pokój 209, WETI http://kaims.eti.pg.gda.pl/∼kuszner/ [email protected] Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa Oficjalna strona wykładu http://kaims.eti.pg.gda.pl/∼kuszner/ARiR/ Wykład 15 godzin, Projekt 15 godzin 2017 JJ II J I Strona 1 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach 1. Powody rozwoju systemów równoległych i rozproszonych Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie • wymiana informacji, • współdzielenie zasobów, Strona główna Strona tytułowa • zwiększanie niezawodności poprzez powielanie, JJ II • zwiększanie wydajności poprzez zrównoleglanie, J I • upraszczanie konstrukcji poprzez specjalizację. Strona 2 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Wymiana informacji Cykl Eulera Floyd-Warshall Konieczność wymiany informacji pociąga za sobą konieczność budowy systemów, które taką wymianę umożliwiają. W powszechnym użyciu jest wiele takich systemów jak choćby globalna sieć Internet, sieci telefonii stacjonarnej i komórkowej, wewnętrzne sieci komputerowe dużych korporacji przemysłowych, wojskowe i cywilne systemy wczesnego ostrzegania, systemy nawigacji satelitarnej i inne. Sortowanie Strona główna Strona tytułowa JJ II J I Strona 3 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Współdzielenie zasobów Wytworzenie, a później utrzymanie niektórych zasobów może być bardzo kosztowne. Konieczne staje się więc współdzielenie ich przez wielu użytkowników. W takim wypadku dla ułatwienia dostępu i uregulowania zasad korzystania z zasobów powstają często rozproszone systemy dostępu i kontroli. Jako przykłady można tu podać np.: teleskop kosmiczny Hubble’a, a w mniejszej skali ploter lub drukarkę współdzieloną przez kilku użytkowników. Zasobami mogą być też dane, lub moc obliczeniowa superkomputerów. Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 4 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Zwiększanie niezawodności poprzez powielanie Systemy rozproszone mogą być potencjalnie bardziej niezawodne. O ile awaria lub zniszczenie samodzielnie działającego komputera uniemożliwa pracę całego systemu, o tyle awaria systemu rozproszonego może być zneutralizowana poprzez zastąpienie niesprawnego elementu poprzez inne działające równolegle. Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 5 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Zwiększanie wydajności poprzez zrównoleglanie Cykl Eulera Floyd-Warshall W systemach masowej obsługi powielenie jednostek wykonujących to samo zadanie powoduje wzrost wydajności. Przykładem tutaj mogą być komputery odpowiadające na zapytania kierowane do baz danych. Również w innego rodzaju systemach jeśli tylko realizowane zadania mogą być dzielone na mniejsze części, to możemy przyspieszyć obsługę poprzez zrównoleglenie pewnych operacji. Sortowanie Strona główna Strona tytułowa JJ II J I Strona 6 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Upraszczanie konstrukcji poprzez specjalizację Konstrukcja systemów komputerowych może być bardzo złożona. Podobnie jak klasyczna modularyzacja podział systemu na kooperujące części może zaowocować zmniejszeniem złożoności pojedynczych elementów i zarazem uproszczeniem konstrukcji całego systemu. Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 7 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów 2. Jakość algorytmów równoległych • Czas obliczeń (złożoność algorytmu) Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna • Liczba potrzebnych procesorów. Strona tytułowa • Przyjęty model obliczeń • Przyspieszenie JJ II J I • Efektywność Strona 8 z 45 • Skalowalność Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Przyspieszenie Obliczenia w drzewach Rozważmy problem, dla którego sekwencyjny algorytm wymaga czasu Ts . Dysponujemy algorytmem, który działa w czasie Tp przy użyciu P procesorów. Cykl Eulera Pointer jumping Floyd-Warshall Sortowanie Strona główna Speedup = Efficiency = Ts Tp Ts P Tp Strona tytułowa JJ II J I Strona 9 z 45 W jaki sposób obliczamy czasy Ts i Tp ? Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Przyspieszenie względne (Relative Speedup) Cykl Eulera Floyd-Warshall Niech A będzie algorytmem równoległym. Ts RelativeSpeedup(n, p) = Tp • Ts=Czas rozwiązania problemu P na jednym procesorze • Tp=Czas rozwiązania problemu P na p procesorach Sortowanie Strona główna Strona tytułowa JJ II J I Strona 10 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Przyspieszenie rzeczywiste (Real Speedup) Niech A będzie algorytmem równoległym. Ts RealSpeedup(n, p) = Tp • Ts=Czas rozwiązania problemu najlepszym znanym algorytmem sekwencyjnym, • Tp=Czas rozwiązania problemu P na p procesorach. W obu wypadkach mierzymy czas na maszynie równoległej. Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 11 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Przyspieszenie bezwzględne (Absolute Speedup) Pointer jumping Cykl Eulera Floyd-Warshall Niech A będzie algorytmem równoległem. Ts AbsoluteSpeedup(n, p) = Tp • Ts=Czas rozwiązania problemu najlepszym znanym algorytmem sekwencyjnym na najszybszym znanym procesorze, • Tp=Czas rozwiązania problemu P na p procesorach. Sortowanie Strona główna Strona tytułowa JJ II J I Strona 12 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Asymptotyczne przyspieszenie rzeczywiste (Asymptotic Real Speedup) Niech S(n) będzie złożonością obliczeniową najlepszego algorytmu sekwencyjnego, a A algorytmem równoległym i PA (n) jego złożonością bez ograniczenia na liczbę procesorów. AsymptoticRealSpeedup(n, p) = S(n) P (n) Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 13 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Cost Normalized Speedup Sortowanie Strona główna CNS(n, p) = Speedup(n, p) koszt systemu równoległego koszt systemu sekwencyjnego Strona tytułowa JJ II J I Strona 14 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Efektywność Pointer jumping Cykl Eulera Efektywność jest miarą ściśle związaną z przyspieszeniem. Ogólnie można zapisać Speedup(n, p) Efficiency(n, p) = , p gdzie n jest rozmiarem problemu, a p jest liczbą użytych procesorów. W zależności od tego jaką przyjmiemy miarę przyspieszenia uzyskamy różne miary efektywności. Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 15 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Skalowalność Strona główna Intuicyjnie system/algorytm jest skalowalny, jeśli efektywność maleje wolno wraz ze wzrostem rozmiaru problemu i liczby procesorów. Strona tytułowa JJ II J I Strona 16 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia 3. Model - wstęp Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach W modelu przetwarzania sekwencyjnego kluczową rolę pełni model maszyny RAM (random access machine). Każda taka maszyna składa się z ustalonego programu, jednostki obliczeniowej, taśmy (tylko do odczytu) z danymi wejściowymi, taśmy (tylko do zapisu) na wynik działania programu oraz nieograniczonej pamięci o dostępie swobodnym. Ponadto każda komórka pamięci jest w stanie zapamiętać liczbę całkowitą o nieograniczonym zakresie. Jednostka obliczeniowa nie jest skomplikowana – pozwala na wykonywanie najprostszych instrukcji takich jak: kopiowanie komórek pamięci, porównania i skoki warunkowe, podstawowe operacje arytmetyczne itp. Ustalony program użytkownika składa się z ciągu takich instrukcji. Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 17 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Miarą złożoności programów dla maszyny RAM są typowo czas działania mierzony liczbą wykonanych instrukcji i zużycie pamięci mierzone liczbą wykorzystywanych komórek. Żeby uchronić ten model przed zniekształceniami zabronione jest generowanie bardzo dużych liczb w krótkim czasie. Np. zabrania się generowania liczb o niewielomianowej długości zapisu w wielomianowym czasie. Można to osiągnąć albo przez uważny dobór zestawu instrukcji, albo przerzucając odpowiedzialność na „twórców algorytmów” dla danego modelu. W ten sposób otrzymujemy gamę równoważnych modeli dla obliczeń sekwencyjnych. Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 18 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Naturalnym uogólnieniem modelu RAM (ang. random access machine) jest dodanie większej liczby jednostek obliczeniowych. Ideę maszyny PRAM (ang. parallel random access machine) może ilustrować poniższy schemat: Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Pamięć współdzielona Strona główna Strona tytułowa JJ II J I Strona 19 z 45 Powrót P1 P2 Pn Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta 4. PRAM - założenia Kilka przykładów Obliczenia w drzewach • Pamięć jest wspólna dla wszystkich procesorów. Pointer jumping • Każdy procesor jest maszyną typu RAM. Floyd-Warshall • Wszystkie procesory działają synchronicznie. • Czas działania mierzymy liczbą dostępów do pamięci współdzielonej. • Zużycie pamięci liczymy liczbą użytych komórek. • Dodatkowym parametrem jest liczba użytych procesorów. Tu zakładamy, że w wielomianowym czasie można użyć „tylko” wielomianowej liczby procesorów. Cykl Eulera Sortowanie Strona główna Strona tytułowa JJ II J I Strona 20 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Uwagi do założeń Obliczenia w drzewach Pointer jumping • Ostatni punkt założeń można rozwiązać np. w taki sposób, że procesor P1 oblicza potrzebną liczbę procesorów, a następnie włącza je wpisując liczbę do odpowiedniego rejestru. Cykl Eulera Floyd-Warshall Sortowanie Strona główna • Liczenie dostępów do pamięci ma taki sens praktyczny, że zwykle wszelkie operacje typu komunikacyjnego zabierają znacznie więcej czasu niż obliczenia lokalne. • Wadą założenia o jednostkowym czasie dostępu jest występowanie w rzeczywistych systemach równoległych mechanizmów komunikacji o bardzo zróżnicowanej wydajności. Strona tytułowa JJ II J I Strona 21 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Dostęp do pamięci Istnieje kilka sposobów modelowania równoległego dostępu do pamięci współdzielonej. We wszystkich modelach zakładamy oddzielenie operacji zapisu i odczytu. Przyjmujemy, że maszyna PRAM działa w cyklu składającym się z: • (jeśli potrzeba) czytaj z pamięci współdzielonej, Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa • (jeśli potrzeba) wykonaj obliczenia lokalne, JJ II • (jeśli potrzeba) pisz do pamięci współdzielonej. J I W ten sposób zakładamy, że nie ma konfliktów typu: jednoczesny zapis/odczyt. Strona 22 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Pozostają jednak konflikty typu: jednoczesny zapis/zapis i odczyt/odczyt. Generalnie możliwości są następujące: • maszyna EREW-PRAM: (ang. exclusive read exclusive write) nie dopuszcza się konfliktów żadnego rodzaju, • maszyna CREW-PRAM: (ang. concurrent read exclusive write) dopuszcza się konflikty typu jednoczesny odczyt, • maszyna ERCW-PRAM: (ang. exclusive read concurrent write) dopuszcza się konflikty typu jednoczesny zapis, Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa • maszyna CRCW-PRAM: (ang. concurrent read concurrent JJ II write) dopuszcza się zarówno konflikty typu jednoczesny odczyt jak i jednoczesny zapis. J I Strona 23 z 45 Przy czym w przypadku dopuszczenia jednoczesnego odczytu (CREW, CRCW) zakładamy, że wszystkie procesory przeczytają żądaną komórkę pamięci. W przypadku dopuszczenia jednoczesnego zapisu sytuacja jest bardziej złożona. Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Rozwiązywanie konfliktów typu jednoczesny zapis Cykl Eulera Floyd-Warshall • ECR (equality conflict resolution) - jednoczesny zapis się powiedzie, jeśli wszystkie procesory próbują zapisać to samo. • PCR (priority conflict resolution) - zapis udaje się tylko procesorowi o najwyższym priorytecie. • ACR (arbitrary conflict resolution) - jednemu z procesorów Sortowanie Strona główna Strona tytułowa JJ II J I zapis się powiedzie. Strona 24 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach 5. Twierdzenie Brenta Pointer jumping Cykl Eulera Floyd-Warshall Twierdzenie 1 Każdy układ kombinacyjny o rozmiarze n, głębokości d i stopniu wejściowym bramek ograniczonym przez stałą da się symulować na p-procesorowej maszynie CREW-PRAM w czasie O(n/p + d). Ćwiczenie 1 Uzasadnij twierdzenie Brenta (zob. Cormen str 793). Sortowanie Strona główna Strona tytułowa JJ II J I Strona 25 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów 6. Kilka przykładów Model - wstęp PRAM - założenia Twierdzenie Brenta Algorytm 1: Iloczyn skalarny 1: for i = 1 to n in parallel do 2: ci = ai ∗ bi 3: end for 4: p = n/2 5: while p > 0 do 6: for i = 1 to p in parallel do 7: ci = ci + ci+p 8: end for 9: p = p/2 10: end while We: Tablice współrzędnych a[1 : n] i b[1 : n] Wy: Liczba będąca iloczynem skalarnym wektorów a i b. Model: EREW PRAM. Czas O(lg n) i O(n) procesorów. Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 26 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Algorytm 2: Koniunkcja logiczna 1 1: result=TRUE 2: for i = 1 to n in parallel do 3: if A[i]==FALSE then 4: result=FALSE 5: end if 6: end for We: Tablica wartości logicznych A[1 : n]. Wy: result Model: ERCW PRAM. Czas O(1) i O(n) procesorów. Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 27 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Algorytm 3: Koniunkcja logiczna 2 1: result=FALSE 2: for i = 1 to n in parallel do 3: result=A[i] 4: end for Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna We: Tablica wartości logicznych A[1 : n]. Wy: result Model: ERCW-ECR PRAM. Czas O(1) i O(n) procesorów. Ćwiczenie 2 Strona tytułowa JJ II J I Strona 28 z 45 Powrót Uzasadnij poprawność powyższych algorytmów. Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp 7. Obliczenia w drzewie binarnym PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Algorytm 4: Koniunkcja logiczna 3 1: p = n/2 2: while p > 0 do 3: for i = 1 to p in parallel do 4: A[i] = A[2i − 1]A[2i] 5: end for 6: p = p/2 7: end while We: Tablica wartości logicznych A[1 : n]. Wy: result Model: EREW PRAM. Czas O(lg n) i O(n) procesorów. Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 29 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów 8. Pointer jumping Pointer jumping (przeskakiwanie) pozwala na tworzenie równoległych algorytmów dla list. Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Przykład Problem list-ranking – obliczanie odległości obiektu od końca listy. Niech A będzie tablicą obiektów, a Link[i] = j oznacza, że element j następuje w liście po elemencie i. Jeśli Link[i] = 0, to nie ma kolejnego elementu, i jest elementem ostatnim. Przez Head oznaczymy pierwszy element na liście. Strona tytułowa JJ II J I Strona 30 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp Algorytm 5: List Ranking 1: for i = 1 to n in parallel do 2: Rank[i]=1 3: Next[i]=Link[i] 4: end for 5: for j = 1 to dlg ne do 6: for i = 1 to n in parallel do 7: if N ext[i] 6= 0 then 8: Rank[i]+ = Rank[N ext[i]] 9: N ext[i] = N ext[N ext[i]] 10: end if 11: end for 12: end for We: Tablice A[1 : n], Link[1 : n]. Wy: Rank[1:n] Model: EREW PRAM. Czas O(lg n) i O(n) procesorów. PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 31 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Na rysunku znajdują się procesory oznaczone prostokątami w kolejności wskazywanej przez Link. Strzałki obrazują wartość N ext, a liczby wpisane w każdy prostokąt wartości Rank. Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall 1 1 1 1 1 1 1 Sortowanie Strona główna Strona tytułowa 2 2 2 2 2 2 1 JJ II J I Strona 32 z 45 Powrót 4 4 4 4 3 2 1 Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping 9. Metoda cyklu Eulera Cykl Eulera Floyd-Warshall Sortowanie Niech G = (V, E) spójny graf prosty. Możemy utworzyć graf G0 o tym samym zbiorze wierzchołków V oraz zbiorze krawędzi E 0 otrzymanym przez zastąpienie każdej nieskierowanej krawędzi E 3 e = {u, v} poprzez dwie krawędzie skierowane (u, v) i (v, u). Fakt 2 Otrzymany w ten sposób graf jest Eulerowski. Strona główna Strona tytułowa JJ II J I Strona 33 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Rozważmy teraz drzewo T . Zaczniemy od znalezienia cyklu Eulera w T 0 = (V, E 0 ). Niech v ∈ V będzie wierzchołkiem w T , a N (v) = {u0 , u1 , u2 , . . . , udeg(v)−1 } listą sąsiadów. Istotne jest, że dla każdego wierzchołka v zbiór sąsiadów N (v) musi być uporządkowany. Dla każdej krawędzi (ui , v) definiujemy następnik succ(ui , v) = (v, ui+1(mod deg(v)) ) Fakt 3 Tak zdefiniowana funkcja succ – (następnik) definiuje cykl Eulera w T 0 . Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 34 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Przykład Model - wstęp Zakładając kolejność sąsiadów: 1 : {2}, 2 : {1, 3, 4}, 3 : {2}, 6 4 : {2, 5}, 5 5 : {4, 6, 7, 8}, 6 : {5}, 7 : {5}, 4 8 : {5, 9, 10}, 9 : {8}, 2 10 : {8, 11}, 11 : {10}, PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach 9 Pointer jumping 11 8 Cykl Eulera Floyd-Warshall Sortowanie Strona główna 7 1 10 Strona tytułowa JJ II J I Strona 35 z 45 3 Powrót Full Screen Na tym rysunku uzyskamy cykl: 1, 2, 3, 2, 4, 5, 6, 5, 7, 5, 8, 9, 8, 10, 11, 10, 8, 5, 4, 2, 1 Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Mając krawędzie drzewa ułożone w cykl możemy stosować metody typu „pointer jumping” dla drzew. Otrzymujemy w ten sposób metodę konstruowania algorytmów przy użyciu O(n) procesorów i logarytmicznym czasie działania. Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa Ćwiczenie 3 Zaprojektuj efektywny algorytm równoległy obliczania sumy wszystkich elementów zapamiętanych w strukturze drzewiastej. JJ II J I Strona 36 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Kolejność Postorder We: Drzewo T = (V, E) z korzeniem r wyróżnionym poprzez relację p, gdzie p(u) = v - oznacza v jest rodzicem u w drzewie T oraz Cykl Eulera w T w formie relacji succ. Wy: Dla każdego wierzchołka jego numer w kolejności Postorder post(v). Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 37 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Algorytm 6: Kolejność Postorder 1: for każda krawędź (u, v) in parallel do 2: if u = p(v) then 3: krawędź ma wagę w(u, v) = 0 4: else 5: krawędź ma wagę w(u, v) = 1 6: end if 7: end for 8: Znajdź sumę wag na krawędziach stosując „pointer jumping” 9: for każdy wierzchołek (v) in parallel do 10: post(v) = suma prefiksowa wag w na łuku (v, p(v)). 11: end for Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 38 z 45 Powrót Model: CREW PRAM, czas O(log n) i O(m) procesorów. Full Screen Zamknij Koniec Motywacja Przykład w(4, 2) = 0, w(2, 1) = 0, w(1, 2) = 1, w(2, 4) = 1, w(4, 3) = 0, w(3, 4) = 1, w(4, 5) = 0, w(5, 6) = 0, w(6, 5) = 1, w(5, 7) = 0, w(7, 5) = 1, w(5, 8) = 0, w(8, 10) = 0, w(10, 11) = 0, Miary algorytmów w(11, 10) = 1, w(10, 8) = 1, w(8, 5) = 1, Model - wstęp w(5, 9) = 0, w(9, 5) = 1, w(5, 4) = 1 PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping 4 Cykl Eulera Floyd-Warshall Sortowanie 5 2 Strona główna 3 Strona tytułowa 1 6 7 8 9 JJ II J I Strona 39 z 45 10 Powrót Full Screen 11 Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Ćwiczenie 4 Strona główna Zaprojektuj algorytm typu EREW PRAM, który w czasie O(log n) oblicza rozmiary poddrzew o korzeniach we wszystkich węzłach drzewa binarnego. Strona tytułowa JJ II J I Strona 40 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach 10. Algorytm Floyda-Warshalla Pointer jumping Cykl Eulera Floyd-Warshall Rozważmy graf G = (V, E), w którym z każdą krawędzią skojarzono nieujemną wagę wij . Uzupełniając przekątną zerami: wii = 0 i pozostałe wagi wartością nieskończoność: wij = ∞ (jeśli nie ma krawędzi z i do j) otrzymamy macierz wag W = (wij ). Algorytm Floyda-Warshalla pozwala obliczyć długość najkrótszej ścieżki z i do j, jak też i jej przebieg. Odtworzenie każdej ścieżki umożliwi macierz (pij ), w której element pij pokazuje wierzchołek poprzedni w stosunku do j w najkrótszej ścieżce z i do j. Sortowanie Strona główna Strona tytułowa JJ II J I Strona 41 z 45 Powrót Full Screen Zamknij Koniec Motywacja Algorytm 7: Floyd-Warshall 1: for i = 1 to n in parallel do 2: for j = 1 to n in parallel do 3: dij = wij 4: pij = i 5: end for 6: end for 7: for k = 1 to n do 8: for każda para i, j, gdzie 0 < i, j ¬ n i i, j 6= k in parallel do 9: if dij > dik + dkj then 10: dij = dik + dkj 11: pij = pkj 12: end if 13: end for 14: end for We: Graf w postaci macierzy wag wij Wy: Macierze dij i Pij Model: CREW PRAM. Czas O(n) i O(n2 ) procesorów. Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 42 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Ćwiczenie 5 Zaprojektuj algorytm typu CREW PRAM, który w czasie O(n) znajdzie przechodnie domknięcie relacji binarnej. Strona główna Strona tytułowa JJ II J I Strona 43 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall 11. Sortowanie przez ranking Sortowanie Strona główna Czas O(log n) i O(n2 ) procesorów. We: Wektor do posortowania X = [x1 , . . . xn ] Model: CREW PRAM. Strona tytułowa JJ II J I Strona 44 z 45 Powrót Full Screen Zamknij Koniec Motywacja Miary algorytmów Model - wstęp PRAM - założenia Twierdzenie Brenta Algorytm 8: Sortowanie przez ranking 1: for każda para i, j, gdzie 0 < i, j ¬ n in parallel do 2: if xi > xj then 3: cij = 1 4: else 5: cij = 0 6: end if 7: end for 8: for i = 1 to n in parallel do P 9: policz ri = nj=1 cij 10: end for 11: for i = 1 to n in parallel do 12: ustaw element i na pozycji ri w tablicy wynikowej 13: end for Kilka przykładów Obliczenia w drzewach Pointer jumping Cykl Eulera Floyd-Warshall Sortowanie Strona główna Strona tytułowa JJ II J I Strona 45 z 45 Powrót Full Screen Zamknij Koniec