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