Zaawansowane algorytmy i struktury danych/Ćwiczenia 13: Różnice pomiędzy wersjami
Nie podano opisu zmian |
m Zastępowanie tekstu – „<math> ” na „<math>” |
||
(Nie pokazano 21 wersji utworzonych przez 3 użytkowników) | |||
Linia 1: | Linia 1: | ||
Zadanie | == Zadanie 1 == | ||
{{kotwica|zadanie 2|}} | |||
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ą. | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' | |||
<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> | |||
gdzie <math> \alpha=\frac{1}{2^{k}+1} </math> | |||
=='''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ą. | |||
<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> | |||
==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 dwóch różnych wartości w to samo miejsce | |||
(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}} | |||
\times (n^{\alpha})^{1+\epsilon_k}\}= O(P_{k+1}(n))</math> | |||
gdzie <math>\alpha=\frac{1}{2^{k}+1}</math> | |||
</div> | |||
</div> | |||
==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ść). | |||
<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ż | |||
długość będzie pewną stałą. | |||
</div> | |||
</div> | |||
==Zadanie 5== | |||
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. | |||
<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. | |||
</div> | |||
</div> | |||
==Zadanie 6== | |||
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-content" style="display:none"> | |||
<math>O(n \log n)</math> | |||
</div> | |||
</div> | |||
==Zadanie 7== | |||
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-content" style="display:none"> | |||
<math>O(n )</math> | |||
</div> | |||
</div> |
Aktualna wersja na dzień 22:18, 11 wrz 2023
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?