Zaawansowane algorytmy i struktury danych/Ćwiczenia 13: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 3: | Linia 3: | ||
Dany jest ciąg nawiasów otwierających i zamykających jednego rodzaju: | Dany jest ciąg nawiasów otwierających i zamykających jednego rodzaju: | ||
( lub ). | ( lub ). Sprawdź, czy jest to ciąg poprawny nawiasowo w czasie log n | ||
z pracą liniową. | z pracą liniową. | ||
Linia 9: | Linia 9: | ||
<div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible-content" style="display:none"> | ||
Zastosuj algorytm na sumy prefiksowe, lewy nawias +1, prawy nawias -1. Sumy musza być nieujemne, a na końcu musi być zero. | |||
</div> | </div> | ||
</div> | </div> | ||
Linia 17: | Linia 17: | ||
=='''Zadanie 2'''== | =='''Zadanie 2'''== | ||
Dany jest ciąg nawiasów okrągłych lub kwadratowych | Dany jest ciąg nawiasów okrągłych lub kwadratowych "(" , ")", "[" , "]". Sprawdź, czy jest to ciąg poprawny nawiasowo w czasie log n | ||
z pracą liniową. | z pracą liniową. | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' | <div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' | ||
Linia 28: | Linia 28: | ||
==Zadanie 3== | ==Zadanie 3== | ||
Uzasadnij, dlaczego algorytm $A_{k+1}$ liczenia minimum w tablicy n-elementowej działa w czasie O(1) używając <math> P_{k+1}(n))</math> | |||
procesorów, gdzie <math> P_k(n)= n^{1+\epsilon_k}, \epsilon_k\ =\ \frac{1}{2^{k}-1} </math> | |||
Zakładamy, że dwa procesory nie mogą próbować wpisać jednocześnie | Zakładamy, że dwa procesory nie mogą próbować wpisać jednocześnie dwóch różnych wartości w to samo miejsce | ||
(ale mogą jednocześnie tę samą wartość). | (ale mogą jednocześnie tę samą wartość). | ||
Linia 46: | Linia 46: | ||
==Zadanie 4== | ==Zadanie 4== | ||
Oblicz na CRCW PRAM minimum w tablicy n-elementowej w czasie O(log log n) używając O(n / log log n) procesorów. | Oblicz na CRCW PRAM minimum w tablicy n-elementowej w czasie O(log log n), używając O(n / log log n) procesorów. | ||
Zakładamy, że dwa procesory nie mogą próbować wpisać jednocześnie | Zakładamy, że dwa procesory nie mogą próbować wpisać jednocześnie dwóch różnych wartości w to samo miejsce | ||
(ale mogą jednocześnie tę samą wartość). | (ale mogą jednocześnie tę samą wartość). | ||
Linia 61: | Linia 61: | ||
==Zadanie 5== | ==Zadanie 5== | ||
Zmień algorytm ParallelMerger tak aby scalał dwa ciągi w czasie logarytmicznym używając tylko | Zmień algorytm ParallelMerger, tak aby scalał dwa ciągi w czasie logarytmicznym, używając tylko | ||
<math> O(\frac{n}{\log n})</math> procesorów. | <math> O(\frac{n}{\log n})</math> procesorów. | ||
Linia 67: | Linia 67: | ||
<div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible-content" style="display:none"> | ||
Podziel ciągi które trzeba scalić na segmenty długości log n. | Podziel ciągi, które trzeba scalić, na segmenty długości log n. | ||
</div> | </div> | ||
</div> | </div> | ||
Linia 73: | Linia 73: | ||
==Zadanie 6== | ==Zadanie 6== | ||
Jaka jest asymptotycznie liczba operacji w układzie arytmetycznym odpowiadającym algorytmowi PrefSums1 | Jaka jest asymptotycznie liczba operacji w układzie arytmetycznym odpowiadającym algorytmowi PrefSums1? | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' | <div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' | ||
Linia 84: | Linia 84: | ||
==Zadanie 7== | ==Zadanie 7== | ||
Jaka jest asymptotycznie liczba operacji w układzie arytmetycznym odpowiadającym algorytmowi PrefSums2 | Jaka jest asymptotycznie liczba operacji w układzie arytmetycznym odpowiadającym algorytmowi PrefSums2? | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' | <div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' |
Wersja z 14:51, 25 wrz 2006
Zadanie 1
Dany jest ciąg nawiasów otwierających i zamykających jednego rodzaju: ( lub ). Sprawdź, czy jest to ciąg poprawny nawiasowo w czasie log n z pracą liniową.
Zadanie 2
Dany jest ciąg nawiasów okrągłych lub kwadratowych "(" , ")", "[" , "]". Sprawdź, czy jest to ciąg poprawny nawiasowo w czasie log n z pracą liniową.
Zadanie 3
Uzasadnij, dlaczego algorytm $A_{k+1}$ liczenia minimum w tablicy n-elementowej działa w czasie O(1) używając procesorów, gdzie Zakładamy, że dwa procesory nie mogą próbować wpisać jednocześnie dwóch różnych wartości w to samo miejsce (ale mogą jednocześnie tę samą wartość).
Zadanie 4
Oblicz na CRCW PRAM minimum w tablicy n-elementowej w czasie O(log log n), używając O(n / log log n) procesorów. Zakładamy, że dwa procesory nie mogą próbować wpisać jednocześnie dwóch różnych wartości w to samo miejsce (ale mogą jednocześnie tę samą wartość).
Zadanie 5
Zmień algorytm ParallelMerger, tak aby scalał dwa ciągi w czasie logarytmicznym, używając tylko procesorów.
Zadanie 6
Jaka jest asymptotycznie liczba operacji w układzie arytmetycznym odpowiadającym algorytmowi PrefSums1?
Zadanie 7
Jaka jest asymptotycznie liczba operacji w układzie arytmetycznym odpowiadającym algorytmowi PrefSums2?