- Timestamp:
- Jul 27, 2010, 11:20:34 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
liacs/SCA2010/BDD/report.tex
r164 r165 204 204 \end{equation} 205 205 Om er weer een ``valide'' \emph{BDD} van te maken zullen deze bladeren vervangen 206 worden door het uitgerekende blad. Door bijvoorbeeld voor de $\diamond$ operatie een207 \emph{EN} operatie te nemen, wordt de blad-rij in~\ref{bladeren} vervangen door de rij 208 $\bot, \bot, \bot, \top$. Nu is het zaak het \emph{BDD} te vereenvoudigen, om zo 209 duplicaat-bladeren te snoeien (\emph{pruning}).206 worden door het uitgerekende blad. Als bijvoorbeeld de $\diamond$ operatie 207 bedoelt is voor een \emph{EN} operatie, wordt de blad-rij in~\ref{bladeren} 208 vervangen door de rij $\bot, \bot, \bot, \top$. Nu is het zaak het \emph{BDD} 209 te vereenvoudigen, om zo duplicaat-bladeren te snoeien (\emph{pruning}). 210 210 211 211 De kracht van deze aanpak zit hem in de generieke $\diamond$ … … 213 213 het eind van de rit. De gegeneerde gesmolten \emph{BDD} is geldig voor alle. 214 214 215 Kijkend naar de limieten moet geoordeeld worden kan hetzelfde altijd bereikt 216 worden door in het slechte geval de \emph{BDD}s achter elkaar te plakken welke 217 dan in dit geval $B(f)B(g)$ knopen oplevert. Voorbeeld~\ref{voorbeeldPlakken} 218 is hier een geval van. In het meer algemene geval geldt meestal $B(f) + B(g)$. 219 Deze grenzen worden in voorbeeld~\ref{voorbeeldSamenvoegen} aangescherpt.215 Door de \emph{BDD}s achter elkaar te plakken kan met maximaal $B(f)B(g)$ knopen 216 een \emph{BDD} voor $f \diamond g$ gerealiseerd worden. 217 Hoofdstuk~\ref{voorbeeldPlakken} is hier een voorbeeld van. In het meer algemene 218 geval geldt meestal $B(f) + B(g)$ als bovengrens. Deze grenzen worden in 219 Hoofdstuk~\ref{voorbeeldSamenvoegen} aangescherpt. 220 220 221 221 Het smelten ligt aan de basis van de daadwerkelijke synthese. Een simpele 222 variant kan gemaakt worden met algoritme $R$. Maak eerst een reeks van 223 alle knopen $\alpha$ in $B(f)$ en $\alpha'$ in $B(g)$ met knoop $\alpha 224 \diamond \alpha'$ in rij $\alpha$ en column $\alpha'$. Vervang de bladeren 225 (\ref{bladeren}) door $\bot$ en $\top$. En voor algoritme $R$ uit op $f \diamond 226 g$. Op het eerste gezicht lijkt algoritme $R$ er ongeveer $B(f)B(g)$ over te 227 doen, maar doordat je onbereikbare knopen niet hoeft te evalueren zal je 228 uitkomen op $B(f \diamond g)$. 229 230 Deze 'truc' zorgt ervoor dat de tijd binnen de perken blijft, maar er is dan 231 nog niets gezegd over de hoeveelheid geheugen er nodig is. Omdat er nu 222 impementatie kan gemaakt worden met algoritme $R$. (a) Maak eerst een reeks van 223 alle knopen $\alpha$ in $f$ en $\alpha'$ in $g$ met knoop $\alpha 224 \diamond \alpha'$ in rij $\alpha$ en column $\alpha'$. (b) Vervang de bladeren 225 (zie Formule~\ref{bladeren}) door $\bot$ en $\top$, en (c) voer het algoritme 226 $R$\footnote{Algoritme $R$ wordt niet in deze samenvatting behandeld; de 227 vak-website~\cite[SCA2010] heeft een referentie naar algoritme $R$ 228 ---\url{http://www.liacs.nl/~kosters/semcom/tomb.pdf}--- welke behandeld wordt 229 door Tom.} op $f \diamond g$. Op het eerste gezicht lijkt algoritme $R$ er ongeveer 230 $B(f)B(g)$ operaties over te doen, maar doordat je onbereikbare knopen niet 231 hoeft te evalueren zal je uitkomen op $B(f \diamond g)$. 232 233 Deze ``truc'' zorgt ervoor dat de tijd binnen de perken blijft, maar er is dan 234 nog niets gezegd over de hoeveelheid geheugen die nodig is. Omdat er nu 232 235 $B(f)B(g)$ knopen in geheugen gehouden moet wordt zal dit problemen opleveren 233 bij kleine en grotere algoritmen. Om deze efficiëntie aan te pakken is 234 algoritme $S$ \footnote{Algoritme $S$ wordt niet in deze samenvatting gehandeld 235 de vak-website~\cite{SCA2010} heeft een verwijzing van de samenvatting van dit 236 algoritme} ontworpen. 236 bij kleine en grotere bomen. Om deze effici\"{e}ntie aan te pakken is 237 algoritme $S$\footnote{Algoritme $S$ wordt niet in deze samenvatting behandeld; 238 het boek~\cite[p.~90-92]{DK2009} gaat hier echter uitvoerig op in.} ontworpen. 237 239 238 240 … … 241 243 \subsection{Product groei in synthese van \emph{BDD}} 242 244 \label{voorbeeldSamenvoegen} 243 Het volgende voorbeeld is een uitwerking van opgave 60~\cite[p g.130]{DK2009}244 de offi\"{e}le uitwerking is te vinden op pagina 195~\cite{DK2009}245 246 Neem aan dat $f(x_{1}, dots,x_{n})$ en $g(x_{1},dots,x_{n})$ de respectieve247 \emph{profielen} (\emph{profiles})~\cite[p g 101]{DK2009} $(b_{0},dots,b_{n})$ en248 $(b'_{0}, dots,b_{n})$ hebben. En de respectieve \emph{quasi-profielen}249 (\emph{quasi-profiles})~\cite[p g 103]{DK2009} $(q_{0},dots,q_{n})$ en250 $(q'_{0}, dots,q'_{n})$. Om te laten zijn dat de gesmolten $f \diamond g$ het251 aantal knopen van$B(f \diamond g) \leq245 Het volgende voorbeeld is een uitwerking van opgave 60~\cite[p.~130]{DK2009} 246 de offi\"{e}le uitwerking is te vinden op \cite[p~.195]{DK2009} 247 248 Neem aan dat $f(x_{1},\dots,x_{n})$ en $g(x_{1},\dots,x_{n})$ de respectieve 249 \emph{profielen} (\emph{profiles})~\cite[p.~101]{DK2009} $(b_{0},\dots,b_{n})$ en 250 $(b'_{0},\dots,b_{n})$ hebben, en de respectieve \emph{quasi-profielen} 251 (\emph{quasi-profiles})~\cite[p.~103]{DK2009} $(q_{0},\dots,q_{n})$ en 252 $(q'_{0},\dots,q'_{n})$. Om te laten zijn dat de gesmolten $f \diamond g$ het 253 aantal knopen $B(f \diamond g) \leq 252 254 \sum^{n}_{j=0}(q_{j}b'_{j}+b_{j}q'_{j}-b_{j}b'_{j})$ bevat moet gekeken worden 253 aan het aantal \emph{beads}~\cite[pg 72]{DK2009} dat mogelijkerwijs gemaakt 254 kunnen worden van de functies $f$ en $g$. 255 256 Elke bead van de orde $n - j$ van het geordende paar $(f,g)$ zal binnen de 257 standaard combinatie vallen de $b_{j}b_{j}'$ geordende beats van $(f,g)$. 258 vallen of is er eentje uit een meer speciaal gegenereerde reeks van een 255 naar het aantal \emph{beads}~\cite[p.~72]{DK2009} dat mogelijkerwijs gemaakt 256 kan worden van de functies $f$ en $g$. 257 258 Hierbij geldt dan voor een willikeurige functie $n$ met als profiel 259 $(b_{0},\dots,b_{n})$ en quasi-profiel $(q_{0},\dots,q_{n})$ dat 260 $B(q_{0},\dots,q_{n}) \geq B(b_{0},\dots,b_{n})$. En tevens dan 261 $(b_{0},\dots,b_{n}) \subseteq (q_{0},\dots,q_{n})$. Hieruit volgt dat een 262 geen-bead zich bevindt in $(q_{0},\dots,q_{n}) \setminus (b_{0},\dots,b_{n})$. 263 264 Elke bead \beta van de orde $n - j$ in het geordende paar $(f,g)$ zal zich 265 bevinden in een van de volgende groepen; (a) de standaard-combinatie van de 266 $b_{j}b_{j}'$ geordende beats van $(f,g)$ of (b) de gegenereerde reeks van een 259 267 (bead,geen-bead) of (geen-bead, bead) $b_{j}(q_{j}' - b_{j}') + (q_{j} - 260 b{j})b_{j}'$. Zie hierbij dat van een functie het $B(quasi-profiel) \geq 261 B(profiel)$. En dat alle in het profiel altijd in het quasi-profiel zit. Er dus 262 de geen-bead kan beschrijven als de rest van de quasi-profiel minus profiel. 268 b{j})b_{j}'$. 263 269 264 270 Dit bij elkaar optellen levert op $b_{j}b_{j}' + b_{j}(q_{j}' - b_{j}') + … … 271 277 de offi\"{e}le uitwerking is te vinden op pagina 195~\cite{DK2009} 272 278 273 Laat $f(x_{1}, dots,x_{n}) = M_{m}(x_{1} \oplus x_{2},x_{3} \oplus274 x_{4}, dots,x_{2m-1} \oplus x_{2m};x_{2m+1},dots,x_{n})$ en $g(x_{1},dots,x_{n}) =275 M_{m}(x_{2} \oplus x_{3}, dots,x_{2m-2} \oplus x_{2m-1},x_{2m};\overline276 x_{2m+1}, dots,\overline x_{n})$ waar $n = 2m + 2^{m}$.279 Laat $f(x_{1},\dots,x_{n}) = M_{m}(x_{1} \oplus x_{2},x_{3} \oplus 280 x_{4},\dots,x_{2m-1} \oplus x_{2m};x_{2m+1},\dots,x_{n})$ en $g(x_{1},\dots,x_{n}) = 281 M_{m}(x_{2} \oplus x_{3},\dots,x_{2m-2} \oplus x_{2m-1},x_{2m};\overline 282 x_{2m+1},\dots,\overline x_{n})$ waar $n = 2m + 2^{m}$. 277 283 278 284 Dan is $B(f) = 2^{m+2}-1 \approx 4n$, $B(g) = 2^{m+1}-2^{m} \approx 3n$ en $B(g … … 283 289 multiplexers~\cite[7.1.2-(31)]{DK2009-0} zijn voor welke de profielen zijn 284 290 $(1,2,2,\dots,2^{m-1},2^{m-1},2^m,1,1,\dots,1.2)$ respectievelijk 285 $(0,1,2,2,\dots,2^{m-1},2^{m-1},1,1, dots,1,2$. Dit optellen en afschatten wordt291 $(0,1,2,2,\dots,2^{m-1},2^{m-1},1,1,\dots,1,2$. Dit optellen en afschatten wordt 286 292 (zie ook~\cite[pg 82]{DK2009}) $B(f) = 2^{m+2} - 1 \approx 4n$ en $B(g) = 287 293 2^{m+1} - 1 \approx 3n$ \\
Note:
See TracChangeset
for help on using the changeset viewer.