ADS2 Jiří Kalvoda: Cvičení 9
Also available as: PDF Markdown
Informace k cv. jsou na https://kam.mff.cuni.cz/~jirikalvoda/vyuka/25z/ads2.
Hradlové sítě
Úloha 1 (Enumerace): Jak vypadají všechny booleovské funkce dvou proměnných s jedním bitem výstupu?
Úloha 2 (Úplnost): Dokažte, že každou booleovskou funkci dvou proměnných lze vyjádřit pomocí hradel and, or a not. Proto lze každý booleovský obvod s nejvýše dvouvstupovými hradly upravit tak, aby používal pouze tyto tři typy hradel. Jeho hloubka přitom vzroste pouze konstanta-krát.
Úloha 3 (Minimalismus): A co pomocí nějaké dvojice z hradel and, or a not? Nebo dokonce jen pomocí jednoho z nich? Rozeberte všechny podmnožiny těchto tří hradel a určete (konstrukce nebo důkaz neexistence), jestli pomocí ní lze vyjádřit všechny funkce. Pokud s žádnou jednoprvkovou podmnožinou neuspějete, jde použít nějaké jiné hradlo?
Úloha 4 (Třídění vkládáním): Jak by vypadala komparátorová síť pro třídění vkládáním? Jak se bude její průběh výpočtu lišit od paralelního bublinkového třídění?
Úloha 5 (Maximum): Navrhněte komparátorovou síť, která dostane-li prvků a vydá takovou permutaci, v níž bude poslední hodnota největší.
Úloha 6 (Zatřízení): Sestrojte komparátorovou síť, která dostane -prvkovou setříděnou posloupnost a jeden prvek navíc, vydá setříděnou permutaci.
Úloha 7 (Nula-jedničkový princip): Dokažte, že když komparátorová síť třídí všechny vstupy, ji postačí otestovat na všech posloupnostech nul a jedniček.
Úloha 8 (Batcherovo třídění): Stejné složitosti paralelního třídění lze také dosáhnout následujícím rekurzivním algoritmem pro slévání setříděných posloupností:
Bmerge:
- Vstup: Setřízené posloupnosti
- Je-li , vyřešíme triviálně.
- BMerge
- BMerge
- Výstup:
Pomocí předchozího cvičení dokažte, že tato procedura funguje. Zapište tento algoritmus ve formě třídicí sítě.