Lista 7 - Instytut Sterowania i Systemów Informatycznych

Transkrypt

Lista 7 - Instytut Sterowania i Systemów Informatycznych
Uniwersytet Zielonogórski
Instytut Sterowania i Systemów Informatycznych
Teoretyczne Podstawy Informatyki
Lista 7 – Złożoność algorytmów równoległych
1
Wprowadzenie
Model obliczeń równoległych stał się powodem dość głębokich zmian w teorii oraz w praktyce
obliczeń wykonywanych za pomocą komputerów. Niestety przez długi czas maszyny równoległe nie były dostępne dla szerokiego ogółu. Obecnie dostępność maszyn równoległych które
można tworzyć niemal w zaciszu domowym spowodowała, że problem obliczeń równoległych
stał się bardzo aktualny. Okazało się również iż dostępność maszyn równoległych a dokładniej
sprzętu zdolnego do wykonywana tego rodzaju obliczeń niestety nie pociąga za sobą rozwoju
algorytmów.
Do trudnych problemów zawsze należy podchodzić w sposób indywidualny. Ponieważ brakuje ogólnych metod tworzenia algorytmów równoległych. Istnieje kilka modeli obliczeń równoległych. Jednym z najbardziej popularnych jest następujący: zakładamy, że komputer składa się z
wielu niezależnych procesorów. Każdy wykonuje własny kod i komunikacja pomiędzy procesorami następuje synchroniczne, czyli w ściśle określonych momentach czasu. Można też powiedzieć
i początkowo poszczególne procesory wykonują czynności niezależne lecz później po wymianie
informacji zadania jakie są wykonywane mogą zależeć od aktualnie wykonanych czynności. Ten
model maszyny równoległej jest najłatwiejszy w teoretycznych rozważaniach, jednak należy
pamiętać iż w praktyce dla maszyn o dużej liczbie procesorów jest najtrudniejszy modelem do
implementacji sprzętowej.
1.1
Klasa PT/WT
Klasa PT/WT(f (n), g(n)) to klasa wszystkich języków L ⊆ {0, 1}∗ dla których istnieje jednostajna rodzina sieci C rozstrzygająca język L w czasie równoległym O(f (n)) ale wykonuje
pracę O(g(n)).
1.2
PRAM – równoległa maszyna o dostępie swobodnym
Wiadomo, że program dla maszyny RAM jest skończonym ciągiem Π = (π1 , π2 , . . . , πn ) instrukcji typu: READ, ADD, LOAD, JUMP i etc. Instrukcje te wykorzystują zawartość rejestrów –
inaczej mówiąc komórek pamięci. Rejestr zero został nazwany akumulatorem o którym można
powiedzieć iż przechowuje wynik ostatniej operacji choć są dopuszczalne pewne odstępstwa.
W każdym kroku maszyna RAM wykonuje instrukcję wskazywaną przez licznik rozkazów κ.
Istnieje też rejestr wejściowy I = (i1 , i2 , . . . , in ) oraz rejestr wyjściowy O = (o1 , o2 , . . . , on ).
Model maszyny RAM można uogólnić w następujący sposób: program PRAM (ang. parallel
random access machine) jest ciągiem P = (Π1 , Π2 , . . . , Πq ) q programów maszyn RAM. Zakładamy, że każda maszyna wykonuje własny program, posiada własny licznik rozkazów oraz
własny akumulator. Można założyć że akumulatorem i-tej maszyny jest rejestr o numerze i.
Oznacza to iż pamięć maszyny PRAM jest wspólna dla wszystkich poszczególnym maszyn
1
RAM. Zakładamy też, że każda maszyna RAM może czytać i pisać akumulatorach innych
maszyn RAM.
Liczba maszyn q w maszynie PRAM nie jest stała ale opisana przez funkcję q(m,n) gdzie
m oznacza liczbą elementów na wejściu I oraz od całkowitej długości tych elementów n = `(I).
Pozwala to na określenie postaci konfiguracji maszyny PRAM a jest to następująca krotka:
(κ1 , κ2 , κ3 , . . . , κq(m,n) , R), gdzie κi to poszczególne liczniki instrukcji dla poszczególnych maszyn
RAM a R to opis całej dostępnej pamięci.
Istotnym problem jest sytuacja kiedy kilka maszyn RAM próbuje zapisać wartość do jednej
komórki. Można założyć iż jeśli kilka maszyn próbuje zapisać daną to wygra maszyna która
posiada np.: najmniejszy indeks.
Ponieważ problem zapisu jest bardzo ważny to istnieje kilka różnych typów maszyn w zależności od sposobu realizacji zapisu oraz odczytu danych można wyróżnić cztery podstawowe
typy:
• EREW – algorytmy z wyłącznym odczytem i wyłącznym zapisem
• CREW – algorytmy z jednoczesnym odczytem i wyłącznym zapisem
• ERCW – algorytmy z wyłącznym odczytem i jednoczesnym zapisem
• CRCW – algorytmy z jednoczesnym odczytem i jednoczesnym zapisem
1.3
Problemy NP-zupełne i równoległość
Zasadnicze pytanie związane z algorytmami równoległymi brzmi następująco: czy algorytmy
równoległe będą w stanie rozwiązać w efektywnym czasie (w czasie wielomianowym) problemy
np-zupełne. Niestety tak nie jest ponieważ złożoność algorytmu równoległego w sensie pracy
jest opisana przez następujące trywialne równanie:
W = Tpar · Cproc
gdzie W to całkowita praca a Tpar to czas wielomianowy oraz Cproc liczba procesorów.
Ponieważ najszybszy algorytm sekwencyjny dla problemu NP-zupełnego wymaga czasu wykładniczego, to niestety w dowolnym algorytmie równoległym konieczne jest aby dostępna było
wykładnicza ilość czasu bądź liczby procesorów.
Naturalnie stosowanie komputerów równoległych pozwala na rozwiązywanie coraz większych
przykładów problemów NP-zupełnych dotychczas nie były dostępne dla komputerów sekwencyjnych o jednym procesorze.
1.4
Klasa NC
Klasa NC to klasa wszystkich problemów rozwiązywanych w polilogarytmicznym czasie równoległym przy całkowitej pracy wielomianowej:
NC = PT/WK(logk n, nk )
Intuicyjnie można rozumieć iż klasa NC to problemy które można efektywnie rozwiązać w sensie
czasu oraz ilości zastosowanych procesorów. Odpowiada ona klasie P w tradycyjnym modelu
obliczeniowym.
2
Klasę NC można uogólnić w następujący sposób:
NCj = PT/WK(logj n, nk )
W ten sposób czas równoległy jest funkcją O(logj n), a wolny parametr k oznacza iż dopuszczamy pracę która będzie dowolnym wielomianem. W ten sposób NCj stanowi potencjalną
hierarchię klas złożoności a zatem wydaje się zupełnie naturalne iż N C ⊆ P . Naturalnie przez
analogię do problemu P=NP można postawić pytanie czy NC=P? Okazuje się iż zachodzi tu
analogiczna sytuacja jak w przypadku problemów NP-zupełnych nadal nie udało się skonstruować algorytmów dla klasy NC dla prostych aby nie powiedzieć trywialnych problemów z klasy
P np.: maksymalny przepływ w grafie.
2
Zadania
1. Podać sposób realizacji mnożenia macierzy w czasie liniowym.
2. Podać alg. mnożenia macierzy który działa w czasie polilogarytmicznym.
3. Przedstawić problem List-Rank oraz przeprowadzić analizę złożoności obliczeniowej dla
rozwiązania równoległego.
4. Przedstawić alg. FAST-MAX i wyznaczyć jego złożoność obliczeniową dla maszyny CRCW.
5. Podać w jaki sposób obliczyć alternatywę n-bitów na CRCW PRAM w czasie O(1) na
O(n) procesorach oraz w czasie O(log n) na O(n) procesorach za pomocą CREW PRAM.
6. Udowodnić twierdzenie:
Twierdzenie 1 Algorytm p-procesorowy typu CRCW może być co najwyżej O(lg p) razy
szybszy od najszybszego p-procesorowego algorytmu typu EREW, gdy rozwiązuje ten sam
problem.
7. Udowodnić „Twierdzenie Brenta”:
Twierdzenie 2 Każdy układ kombinacyjny o rozmiarze n, głębokości d i ograniczonym
przez stałą stopniu wejściowym (liczba wejść jest stała) można symulować na p-procesorowej maszynie CREW PRAM w czasie O(n/p + d)
8. Przedstawić algorytm który znajdzie wartość maksymalną w tablicy za pomocą n1+ε
procesorów na maszynie równoległej w czasie O(1).
9. Udowodnić twierdzenie:
Twierdzenie 3 Jeżeli L ⊆ {0, 1}∗ jest w PT/WT(f (n), g(n)), to istnieje jednostajna
maszyna PRAM, która oblicza odpowiednią funkcję FL odwzorowującą {0, 1}∗ w {0, 1} w
czasie równoległym O(f (n)) na O( fg(n)
) procesorach.
(n)
10. Udowodnić twierdzenie:
0
Twierdzenie 4 Jeżeli język L redukuje się do L ∈ N C, to L ∈ N C.
3
3
Dalsze informacje
Poniższe pozycje odnoszą się do wszystkich list z ćwiczeniami z przedmiotu teoretyczne podstawy informatyki.
Literatura
[1]
David Harel: Rzecz o istocie informatyki Algorytmika, Edycja polska Wydanie drugie
Wydawnictwa Naukowo-Techniczne 2000
[2]
Tomasz Bilski, Krzysztof Chmiel, Janusz Stokłosa: Zbiór zadań ze złożoności obliczeniowej algorytmów. Politechnika Poznańska 1992
[3]
Janusz Stokłosa: Zadania ze złożoności obliczeniowej algorytmów, Politechnika Poznańska 1989
[4]
L. Banachowski, Antoni Kreczmar: Elementy analizy algorytmów, Wydawnictwa
Naukowo-Techniczne 1982
[5]
John E.Hopcroft, Jeffrey D.Ullman: Wprowadzenie do teorii automatów, języków i obliczeń. Wydawnictwo Naukowe PWN 2003
[6]
Mordechai Ben-Ari: Logika matematyczna w informatyce, Wydawnictwa NaukowoTechniczne 2005
[7]
Christos H.Papadimitriou: Złożoność obliczeniowa, Wydawnictwa Naukowo-Techniczne
2002
[8]
R.L. Graham, D.E. Knuth, O.Patashnik: Matematyka konkretna,Wydawnictwo Naukowe PWN 2002
[9]
Kenneth A.Ross, Charles R.B.Wright: Matematyka dyskretna, Wydawnictwo Naukowe
PWN 2000
[10]
Piotr Wróblewski,: Algorytmy struktury danych i techniki programowania, Helion 1997
[11]
Materiały ze strony dr inż. Janusza Majewskiego dotyczące przedmiotu „Automaty i
języki formalne”.
4