slajdy
Transkrypt
slajdy
Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Algorytmy Równoległe i Rozproszone Część II - Sieci porównujące Sieci bitoniczne Sieć MergeSort Strona główna Łukasz Kuszner pokój 209, WETI http://kaims.eti.pg.gda.pl/∼kuszner/ [email protected] Oficjalna strona wykładu http://kaims.eti.pg.gda.pl/∼kuszner/ARiR/ Wykład 15 godzin, Projekt 15 godzin 2017 Strona tytułowa JJ II J I Strona 1 z 22 Powrót Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Sieć MergeSort 1. Sieci porównujące Strona główna Sieć porównująca składa się tylko z przewodów i komparatorów. x y x0 = min{x, y} y 0 = max{x, y} Zakładamy, że komparator działa w czasie O(1), to znaczy czas pomiędzy pojawieniem się danych na wejściu (na rysunku po lewej stronie), a pojawieniem się wyników na wyjściu (na rysunku po prawej stronie) jest stały. Przyjmujemy, że sieć ma n wejść a1 , a2 , . . . , an i n wyjść b1 , b2 , . . . , bn , a graf sieci jest acykliczny. Strona tytułowa JJ II J I Strona 2 z 22 Powrót Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Sieć MergeSort Strona główna Strona tytułowa Głębokość sieci Wejście sieci ma głębokość 0. Jeśli wejścia komparatora mają głębokość dx i dy , to wyjście ma głębokość max(dx , dy ) + 1. Głębokość sieci definiujemy jako największą głębokość wyjścia. JJ II J I Strona 3 z 22 Powrót Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Sieć MergeSort Przykład a1 Strona główna a01 Strona tytułowa a2 a02 a3 a03 JJ II J I Strona 4 z 22 a4 a04 Powrót Powyższa sieć porównująca ma głębokość 3. Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące 2. Zasada zero-jedynkowa Lemat 1 Jeśli sieć porównująca dla ciągu wejściowego a = (a1 , a2 , . . . , an ) wyznacza ciąg wyjściowy b = (b1 , b2 , . . . , bn ), to dla dowolnej funkcji niemalejącej ta sama sieć z ciągiem wejściowym f (a) = (f (a1 ), f (a2 ), . . . , f (an )) wyznacza ciąg wyjściowy f (b) = (f (b1 ), f (b2 ), . . . , f (bn )). Ćwiczenie 1 Przeprowadź pełny dowód lematu 1. Wskazówka 1: Rozważ pojedynczy komparator. Z monotoniczności f wynika, że max{f (x), f (y)} = f (max{x, y}) i min{f (x), f (y)} = f (min{x, y}) Wskazówka 2: Zastosuj indukcję na głębokość sieci. Wskazówka 3: zob. Cormen str. 718 Sieci bitoniczne Sieć MergeSort Strona główna Strona tytułowa JJ II J I Strona 5 z 22 Powrót Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Twierdzenie 2 (Zasada zero-jedynkowa) Jeśli sieć porównująca o n wejściach sortuje poprawnie wszystkie 2n ciągi zer i jedynek, to sortuje poprawnie dowolne ciągi liczb. Dowód: Dowód nie wprost. Przypuśćmy, że sieć sortuje poprawnie wszystkie ciągi zer i jedynek, ale istnieje ciąg liczb a = (a1 , a2 , . . . , an ), dla którego wynik nie jest posortowany poprawnie. Istnieją elementy ai , aj takie, że ai < aj oraz w ciągu wyjściowym aj występuje przed ai . Niech f (x) = 0, jeśli x ¬ ai i f (x) = 1, jeśli x > ai . Funkcja f jest niemalejąca. Z lematu 1 wnioskujemy, że jeśli na wejściu znajduje się ciąg f (a) = (f (a1 ), f (a2 ), . . . , f (an )), to na wyjściu wartość f (aj ) = 1 znajduje się przed f (ai ) = 0, sprzeczność z założeniem o poprawnym sortowaniu ciągów zero-jedynkowych. Sieć MergeSort Strona główna Strona tytułowa JJ II J I Strona 6 z 22 Powrót Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące 3. Sieci sortujące Sieć sortująca, to sieć porównująca, której ciąg wyjściowy jest niemalejący dla każdego ciągu wejściowego. Głębokość identyfikujemy z czasem potrzebnym na posortowanie wszystkich elementów. Ćwiczenie 2 Wykaż, że sieć sortująca o n wejściach ma głębokość co najmniej lg n. Sieci bitoniczne Sieć MergeSort Strona główna Strona tytułowa JJ II J I Strona 7 z 22 Powrót Przykład Rozpatrzmy rodzinę sieci opartych na algorytmie sortowania przez wstawianie. Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Sieć MergeSort Przykład Strona główna a1 b1 a2 b2 a3 b3 a4 b4 a5 b5 a6 b6 Strona tytułowa JJ II J I Strona 8 z 22 Powrót a7 b7 Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Sieć MergeSort Przykład Strona główna a1 b1 a2 b2 a3 b3 a4 b4 a5 b5 a6 b6 Strona tytułowa JJ II J I Strona 9 z 22 Powrót a7 b7 Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Sieć MergeSort Przykład Strona główna a1 b1 a2 b2 a3 b3 a4 b4 a5 b5 a6 b6 Strona tytułowa JJ II J I Strona 10 z 22 Powrót a7 b7 Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Sieć MergeSort Przykład Strona główna a1 b1 a2 b2 a3 b3 a4 b4 a5 b5 a6 b6 Strona tytułowa JJ II J I Strona 11 z 22 Powrót a7 b7 Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Sieć MergeSort Przykład Strona główna a1 b1 a2 b2 a3 b3 a4 b4 a5 b5 a6 b6 Strona tytułowa JJ II J I Strona 12 z 22 Powrót a7 b7 Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Przykład a1 Sieć MergeSort b1 a2 b2 a3 b3 a4 b4 a5 b5 a6 b6 a7 b7 Strona główna Strona tytułowa JJ II J I Strona 13 z 22 Powrót Ćwiczenie 3 Full Screen Jaka jest głębokość takiej sieci w zależności od liczby wejść? Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne 4. Bitoniczne sieci sortujące Sieć MergeSort Strona główna Ciągiem bitonicznym nazywamy ciąg, który można przeciąć na dwie części: pierwszą niemalejącą i drugą nierosnącą lub pierwszą nierosnącą i drugą niemalejącą. Zero-jedynkowe ciągi bitoniczne mają postać 0i 1j 0k albo 1i 0j 1k . b1 Elementem półczyszczącym a1 b2 (Half-Cleaner[n]), dla n pa- a2 b3 rzystych nazywamy sieć po- a3 b4 równującą o głębokości 1 zło- a4 b5 żoną z n/2 komparatorów, z a5 b6 których każdy łączy wejście o a6 b7 numerze i z wejściem i + n/2, a7 a8 b8 dla i = 1, 2, . . . n/2. Strona tytułowa JJ II J I Strona 14 z 22 Powrót Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieć sortującą ciągi bitoniczne B[n] budujemy w następujący sposób. Dla n = 1 sieć jest pusta, dla n = 2 sieć składa się z jednego komparatora, natomiast dla n > 2 sieć wygląda w sposób następujący: Sieci sortujące Sieci bitoniczne Sieć MergeSort Strona główna Strona tytułowa B[n/2] Half-Cleaner[n] JJ II J I Strona 15 z 22 Powrót B[n/2] Full Screen Zamknij Koniec Sieci porównujące Ćwiczenie 4 Zasada zero-jedynkowa Narysuj sieć B[8]. Sieci bitoniczne Sieci sortujące Sieć MergeSort Ćwiczenie 5 Jak skonstruować sieć bitoniczną, gdy n nie jest potęgą 2? Strona główna Strona tytułowa Ćwiczenie 6 JJ II Uzasadnij, że jeśli każdy element jednego z dwóch zerojedynkowych ciągów bitonicznych jest nie większy niż każdy element drugiego ciągu, to jeden z ciągów składa się z samych 0, albo z samych 1. J I Strona 16 z 22 Powrót Ćwiczenie 7 Przeczytaj ze zrozumieniem pełen dowód poprawności działania sieci B[n], (Cormen str. 721) i odtwórz go nie zaglądając do książki. Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Sieć MergeSort 5. Sieć sortująca o głębokości log2 n Pokażemy teraz jak skonstruować sieć opartą na algorytmie mergesort. Do tego celu użyjemy pokazanych wcześniej sieci bitonicznych i sieci scalających. Konstrukcja sieci scalającej dwa posortowane ciągi w jeden opiera się na prostej obserwacji: jeśli w jednym z dwóch posortowanych ciągów odwrócimy porządek, to otrzymamy ciąg bitoniczny, a ciągi bitoniczne umiemy już sortować. Strona główna Strona tytułowa JJ II J I Strona 17 z 22 Powrót Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Sieć MergeSort Poniższy rysunek przedstawia jak odwrócić porządek jednego z ciągów na wejściu sieci bitoniczej. Strona główna Strona tytułowa JJ II J I Strona 18 z 22 Powrót Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Schemat sieci scalającej MERGER[n] Sieć MergeSort Strona główna B[n/2] Strona tytułowa JJ II J I Strona 19 z 22 B[n/2] Powrót Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Mając już wszystkie potrzebne elementy możemy zbudować sieć sortującą SORTER[n] Sieć MergeSort Strona główna Strona tytułowa SORT ER[n/2] MERGER[n] SORT ER[n/2] JJ II J I Strona 20 z 22 Powrót Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Sieć MergeSort Ćwiczenie 8 Narysuj sieć SORTER[8]. Ćwiczenie 9 Wykaż, że głębokość sieci SORTER[n] jest Θ(log2 (n)). Strona główna Strona tytułowa JJ II J I Strona 21 z 22 Ćwiczenie 10 Powrót Wykaż, że głębokość sieci SORTER[n] jest równa lg n(lg n+1)/2. Full Screen Zamknij Koniec Sieci porównujące Zasada zero-jedynkowa Sieci sortujące Sieci bitoniczne Sieć MergeSort Strona główna Strona tytułowa JJ II J I Strona 22 z 22 Powrót Full Screen Zamknij Koniec