Zaawansowane algorytmy i struktury danych/Ćwiczenia 13: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 19: | Linia 19: | ||
Dany jest ciąg nawiasów okrągłych lub kwadratowych ''('' , '')'', ''['' , '']'', sprawdzić czy jest to ciąg poprawny nawiasowo w czasie log n | Dany jest ciąg nawiasów okrągłych lub kwadratowych ''('' , '')'', ''['' , '']'', sprawdzić 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-content" style="display:none"> | |||
Podobnie jak w zadaniu 1. | |||
</div> | |||
</div> | |||
Linia 29: | Linia 33: | ||
(ale mogą jednocześnie tę samą wartość). | (ale mogą jednocześnie tę samą wartość). | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' | |||
<div class="mw-collapsible-content" style="display:none"> | |||
<math> \max\{(\frac{n}{n^{\alpha}})^{1+\epsilon_k},\ \frac{n}{n^{\alpha}} | <math> \max\{(\frac{n}{n^{\alpha}})^{1+\epsilon_k},\ \frac{n}{n^{\alpha}} | ||
Linia 37: | Linia 41: | ||
gdzie <math> \alpha=\frac{1}{2^{k}+1} </math> | gdzie <math> \alpha=\frac{1}{2^{k}+1} </math> | ||
</div> | |||
</div> | |||
==Zadanie 4== | ==Zadanie 4== | ||
Linia 44: | Linia 50: | ||
(ale mogą jednocześnie tę samą wartość). | (ale mogą jednocześnie tę samą wartość). | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' | |||
<div class="mw-collapsible-content" style="display:none"> | |||
Dzielimy tablicę na kawałki długości <math> \sqrt{n} </math>. Z otrzymanymi kawałkami robimy to samo, aż | Dzielimy tablicę na kawałki długości <math> \sqrt{n} </math>. Z otrzymanymi kawałkami robimy to samo, aż | ||
długość będzie pewną stałą. | długość będzie pewną stałą. | ||
</div> | |||
</div> | |||
Linia 57: | Linia 64: | ||
<math> O(\frac{n}{\log n})</math> procesorów. | <math> O(\frac{n}{\log n})</math> procesorów. | ||
Rozwiązanie | <div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' | ||
<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> | |||
==Zadanie 6== | ==Zadanie 6== | ||
Linia 66: | Linia 75: | ||
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. | ||
Rozwiązanie | <div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' | ||
<div class="mw-collapsible-content" style="display:none"> | |||
<math> O(n \log n) </math> | <math> O(n \log n) </math> | ||
</div> | |||
</div> | |||
==Zadanie 7== | ==Zadanie 7== | ||
Linia 76: | Linia 86: | ||
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. | ||
Rozwiązanie | <div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' | ||
<div class="mw-collapsible-content" style="display:none"> | |||
<math> O(n ) </math> | <math> O(n ) </math> | ||
</div> | |||
</div> |
Wersja z 10:37, 11 wrz 2006
Zadanie 1
Dany jest ciąg nawiasów otwierających i zamykających jednego rodzaju: ( lub ). Sprawdzić 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 ( , ), [ , ], sprawdzić czy jest to ciąg poprawny nawiasowo w czasie log n z pracą liniową.
Zadanie 3
Uzasadnić dlaczego algorytm $A_{k+1}$ liczenia minimum w tablicy n-elementowej działa w czasie O(1) używając procesor"ow, gdzie Zakładamy, że dwa procesory nie mogą próbować wpisać jednocześnie dwie różne 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 dwie różne 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.