47 - Distribuované a paralelní algoritmy - algoritmy nad seznamy, stromy a grafy Flashcards

1
Q

Algoritmy nad seznamy

A

Algoritmy pracují s vázaným seznamem.
- Každý prvek má hodnotu v_i a ukazatel na následníka Succ[i]

Můžou být asi i různě provázané? ((každý prvek má následníka nebo předchůdce i následníka). Každý prvek tak má hodnotu a případné ukazatele)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Seznamy -

Predecessor computing

A

Výpočet předchůdce v seznamu. Má konstantní čas.

for i = 1 to n do in parallel:
Pred[Succ[i]] = i

aneb jsem předchůdce mého následníka!

Vlastnosti
• t(n)=O(c)
• p(n)=n
• c(n)=O(n)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Seznamy - List ranking a parallel suffix sum

A

LIST RANKING (sekvenčně; v paralelním prostředí - path doubling)

princip – nalezení pořadí (rank) prvků seznamu (vzdálenost od konce seznamu);
• topologie – lineární pole n procesorů;
• algoritmus – používá se technika postupného zdvojování cesty;

hodnota poslední prvku nastavena na 0 (smyčka)

Princip algoritmu

1. V prvním kroku se dá všem (kromě posledního prvku) rank=1.
2. Poté se v log⁡n  krocích udělá, že rank každého prvku je vlastní rank+rank následníka - A také se změní pole následníků. Jelikož se sčítají ranky, tak současný následník je změněn na následník následníka.

Vlastnosti
• t(n)=O(log⁡n )
• p(n)=n
• c(n)=O(n∗log⁡n), což NENÍ optimální

PARALLEL SUFFIX SUM - to samé jako LIST RANKING avšak vzdálenost je ohodnocená, né 1

Vypočítává součet suffixů (podobně jako suma prefixů) seznamu.
• Suffix – podseznam mezi prvkem a koncem seznamu
• Vstupy -
○ Pole hodnot V
○ Binární asociativní operátor ⊕

Na konci musíme upravit hodnotu posledního prvku na neutrální prvek k operaci ⊕

Vlastnosti
• t(n)=O(log⁡n )
• p(n)=n
• c(n)=O(n∗log⁡n)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Seznamy - Vylepšení list ranking a suffix sum - Random Mating a Optimal List Ranking - OPTIMÁLNÍ

A

Random mating -> Optimalizovaný algoritmus list ranking.
Princip algoritmu
• Každý procesor si hodí korunou a přiřadí si pohlaví (male/female).
○ Hází se v každé iteraci.

Pokud je procesor female a jeho následník je male, pak se prvek přeskočí (jump over) a procesor se uvolní.

Optimal list ranking
- Je to simulace Random Mating a řeší to, že u RM se část procesorů fláká, což způsobuje neefektivitu.
Princip algoritmu
• Požadavek: pevný počet stále pracujících procesorů
• Simulace algoritmu Random Mate pomocí n/log⁡n procesorů, každý procesor vykonává práci log⁡n procesorů
○ Každý procesor má zásobník prvků o velikosti log⁡n právě proto, aby mohl vykonávat simulaci Rand. mating
• Každý procesor se pokouší přeskočit (jump over) následníka prvku na vrcholu zásobníku
• Pokud je vrchol zásobníku přeskočen, procesor se zabývá dalším prvkem na zásobníku

Vlastnosti
• t(n)=O(log⁡n )
• p(n)=n/log⁡n
• c(n)=O(n), je optimální

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Algoritmy nad stromy, binární strom a eulerova cesta

A

Binární strom je abstraktní datová struktura, kde mezi sebou existují vazby

  • otce (index i)
  • levého syna (2i)
  • pravého (2i+1) syna

Speciálním případem průchodu binárním stromem je preorder (root, left, right), inorder (left, root, right) a postorder (left, right, root)

Eulerovský tah = průchod stromem ve kterém se každá hrana projde právě jednou (jednou tam a jednou zpátky)

Eulerovský graf

  • Strom (tree) je obecně orientovaný graf, který tvoří uspořádaná dvojice uzlů (vertices) a hran (edges) 𝑇 = 𝑉, 𝐸 .
  • Eulerovský graf je takový, který vznikne z normálního nahrazením neorientovaných hran vždy dvojící hran orientovaných.

Eulerova cesta

  • Eulerova cesta je obecný případ průchodu stromem, kdy jím procestuje eulerovskou kružnicí.
  • Kořen stromu je uzel stromu, ze kterého se rozhodneme eulerovskou kružnicí procházet - místo, kde přerušujeme eulerovskou cestu.

Seznam sousednosti (adjacency list)

  • slouží k reprezentaci stromu v podobě grafu pro eulerovský cyklus
  • pro každý uzel je přiřazen lineárně vázaný seznam, každý prvek seznamu je dvojice hrana/opačná hrana (e, eR, NÁSLEDNÍK)

v1: (e1,e3,nil) => Etour(e3)=e1
v2: (e2,e4,nil) => Etour(e4)=e2
v3: (e3,e1, -)->(e4,e2, -)->(e5,e6,nil) => Etour(e1)=e4, Etour(e2)=e5, Etour(e6)=e3
v4: (e6,e5,nil) => Etour(e5)=e6

  • Algoritmus pro každou hranu e najde položku (,e,) v seznamu sousednosti. Pokud má tato položka následníka (en,,), jeho dopředná hrana en bude následnickou hranou v eulerově cyklu (Etour(e)=en)

Kořen stromu = vznikne tak, že se v jednom bodě (kořeni) Eulerovský cyklus přeruší.

Pozice hran
- vezmeme graf v podobě seznamu souslednosti
-> převedeme na Eulerovský cyklus
-> provedeme List ranking na cyklus (rank = opačné pořadí hran v cyklu)
-> Pořadí získáme paralelním vypočtením 2n-2-rank (n je počet vrcholů)
t(n) = O(log n) (nejhorší závislost má suma suffixů, ostatní jsou konstantní)

Eulerův cyklus prochází každou (neorientovanou) hranou stromu dvakrát - poprvé při zanořování po hraně do podstromu a podruhé při návratu z tohoto podstromu. Porovnáním indexů orientovaných hran v eulerově cyklu tak jde zjistit která z hran (odpovídajících jediné hraně stromu) je dopředná (směřuje dolů - má nižší index) a která zpětná (směřuje nahoru - má vyšší index).

Dopředná hrana (od rodiče k potomkovi - má nižší index než jí opačná) - position(e) < position (eR)
Zpětná hrana (od potomka k rodiči - má vyšší index než jí opačná) - position(e) > position (eR)

Počet následníků vrcholu - Počet dopředných hran v segmentu Eulerovského tahu, počínajícím i končícím ve vrcholu
Úroveň vrcholu - rozdíl dopředných a zpětných hran na cestě z kořene k vrcholu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Seznamy - List coloring a ruling set

A

List coloring = je obarvení seznamu tak, aby sousedé neměli stejnou barvu. k-obarvení může použít k různých barev.

2log(n) coloring

  • využívá index procesoru k určení barvy.
  • Hodnota k je index nejnižšího bitu indexu, ve kterém se sousedé liší, barva je pak C = 2k + ID[k]

Ruling set
k-ruling set = množina nesousedících vrcholů, mezera mezi nimiž je široká maximálně k
2k-ruling set z k-coloring = vybere prvek do ruling set tehdy, když jeho barva je nižší než barva předchůdce a následníka (hledáme lokální minima)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Tree Contraction

A

!!! Některé operace nad stromem se nedají provést efektivně pouze pomocí Eulerovy cesty !!!

Každý list obsahuje operand a nelistový operátor
Tree contraction strom se postupně zmenšuje až do jediného uzlu, tedy výsledku
(obecně: • Technika tree contraction je systematický způsob jak (pomocí operací RAKE a COMPRESS) zmenšovat strom až do velikosti jednoho vrcholu.
!!! Například paralelní vyhodnocení aritmetického výrazu uloženého v binárním stromu.)

Algoritmus tree contraction

  • opakovaně aplikujeme RAKE a tím zmenšujeme strom
  • snažíme se aplikovat pro co nejvíce listů paralelně
  • nelze aplikovat operaci RAKE na vrcholy jež ve stromu sousedí (mají spol rodiče)
  • Jak určit uzly na které lze aplikovat?

jinak:
- Při Tree contraction se řeší paralelní vyhodnocení aritmetického výrazu uloženého ve formě stromu, kde každý list obsahuje operand a každý uzel operátor
- Tato technika opakovaně zmenšuje strom, až do velikosti jednoho vrcholu, a to tím, že spojuje listy do rodičovského uzlu.
- Používá se právě operace RAKE v co největší míře (musí se ohlídat, aby nebyla RAKE aplikována současně na vrcholy, jejichž rodiče ve stromě sousedí).

RAKE OPERACE

  • Operace redukuje počet listů v BINÁRNÍM stromě v jednom kroku na polovinu (Rake step joins every left leaf (L) of binary (B) nodes to the parent (U is unary node))
    1. Odstraní u a parent(u) ze stromu T.
    2. Připojí soused(u) k parent(parent(u))

1) Označíme listy zleva doprava;
2) Krajní se vyřadí (zůstanou jako poslední, až bude strom redukován na 2 listy a kořen);
3) Nejprve se volá RAKE na liché a pak na sudé listy takto upraveného seznamu vrcholů;
4) Redukce stromu za t(n) = O(log n).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Algoritmus Tree search

A

Poslání hodnoty do všech uzlů, pokud nalezeno vrací 1, jinak 0

Vyhledávání v neseřazené posloupnosti
Stromová architektura s 2n-1 procesory
Algoritmus
1. Kořen načte hledanou hodnotu x a předá ji synům … až se dostane ke všem listům
2. Listy obsahují seznam prvků, ve kterých se vyhledává (každý list jeden). Všechny listy paralelně porovnávají x a xi, výsledek je 0 nebo 1.
3. Hodnoty všech listů se předají kořenu - každý ne list spočte logické or svých synů a výsledek zašle otci.
Kořen dostane 0 - nenalezeno, 1- nalezeno

Analýza
Krok (1) má složitost O(log n), krok (2) má konstantní složitost, krok (3) má O(log n).
t(n) = O(log n)
p(n) = 2.n-1
c(n) = t(n).p(n) = O(n.log n) → což není optimální

How well did you know this?
1
Not at all
2
3
4
5
Perfectly