The Postal Owl

Logged in: Santa Claus (home)   

Algoritmy a datové struktury 2

Back to the course

3. Série - 3. úkol (Porovnávání)

Deadline: 2022-12-01 14:00 (35 days ago)

Tomáš Domes — 2022-11-21 14:55 (45 days ago) — reply

3. *Porovnávání:* Sestrojte hradlovou síť hloubky $\mathcal{O}(\log n)$, která porovná dvě $n$-bitová čísla $x$ a $y$
a vydá jedničku, pokud $x < y$ (v opačném případě vydá nulu).

Tomáš Domes — 2022-11-29 00:12 (37 days ago) — reply

Doplnění: Pro jednoduchost můžete předpokládat, že jsou obě čísla kladná. Na složitosti úlohy to ale v podstatě nic nemění.

Santa Claus — 2022-11-29 00:26 (37 days ago) — editreply

Řekněme, že daný obvod umíme postavit pro vstup délky n. Pak ho ale umíme postavit i pro vstup délky $\frac{n}2$, a sice takto:

Vstup délky $2n$ rozdělíme jednoduše po bitech na horní (h) a dolní (d) polovinu. Podíváme se na obě poloviny zvlášť:

Triviálně platí

$y > x \iff y_h > x_h$ nebo $(y_h \nless x_h$ a $y_d > x_d)$

Pro $\nless$ můžeme použít naše hradlo. Celý tento výrok je složen z AND, OR a $<$, hradla, která máme k dispozici. 

Hloubku tím zvětšíme o konstantu, pouze jedno AND hradlo a výstup přivedeme do OR hradla. $h(n + 1) = h(n) + 2$, $2 \in O(\log(n))$,  $h(n) \in O(\log(n))$ plyne z předpokladu.

Nyní ale musíme dokončit naše induktivní hradlo pro případ $n = 1$. To je ale jednoduché, aby $a < b$, musí platit $a = 0, b = 1$. Ostatní kombinace nuly a jedničny dávají nepravdu. Jedna negace a jeden AND $AND(NOT(a),b)$, je hradlo hloubky 2.

Nakonec se hodí zmínit, že vstupy, které nelze rozdělovat napůl až do dosažení jedničky, můžeme jednoduše doplnit nulami zleva.

Tomáš Domes — modified 2022-11-29 00:54 (37 days ago) — reply

To je správně! Akorát úplně na začátku máš nějaký překlep ohledně těch $n$ a $n/2$, máš je asi nějak přehozené.

Tomáš Domes — 2022-12-12 16:18 (24 days ago) — reply

Points: 7.00

New post (You can use Markdown with KaTeX math here)

Preview: