Ignore:
Timestamp:
Aug 3, 2010, 11:35:14 PM (14 years ago)
Author:
Rick van der Zwet
Message:

Aanpassingen naar aanleiding van Verbeteringen en suggesties Hendrik Jan Hoogeboom

File:
1 edited

Legend:

Unmodified
Added
Removed
  • liacs/SCA2010/BDD/report.tex

    r167 r169  
    2424  \tikz[baseline=(C.base)]\node[draw,rectangle,rounded corners,inner sep=0.5pt](C) {$#1$};\!
    2525}
    26 \newcommand*\BDD{\emph{BDD}}
    27 \newcommand*\BDDs{\emph{BDDs}}
     26\newcommand*\BDD{\emph{BDD} }
     27\newcommand*\BDDs{\emph{BDDs} }
    2828
    2929\author{Rick van der Zwet, Universiteit Leiden}
     
    4242aanleiding van het vak Seminar Combinatorial Algorithms 2010~\cite{SCA2010}.
    4343\begin{figure}[htbp]
     44\caption{fig:samenvoegen}
    4445\begin{tikzpicture}[on grid]
    4546\tikzstyle{true}=[]
     
    169170ontbrekende laag van knopen heeft, waardoor knopen van alle niveaus beschikbaar
    170171zijn. Op het moment dat de $\diamond$ ingevuld gaat worden is het ook zaak om
    171 de bladeren (zie vergelijking~\ref{bladeren}) te vereenvoudigen} \end{figure}
     172de bladeren (zie vergelijking~\ref{bladeren}) te vereenvoudigen.} \end{figure}
    172173
    173174\section{Introductie BDD}
     
    180181\BDDs aan de basis staat van het uitdrukken van complexe systemen door
    181182middel van gecombineerde simpele functies. In Hoofdstuk~\ref{werking} zal deze
    182 techniek uitgelegd worden, het zogenoemde \emph{smelten} (\emph{melding}) dat
    183 in Hoofdstuk~\ref{voorbeeld} toegepast zal worden in een concreet voorbeelden.
     183techniek uitgelegd worden, het zogenoemde \emph{smelten} (\emph{melding}), dat
     184in Hoofdstuk~\ref{voorbeeld} toegepast zal worden in voorbeelden.
    184185
    185186\section{Samenvoegen van \BDD}
    186187\label{werking}
    187 De term voor het samenvoegen van \BDD structuren zullen we smelten
     188De term voor het samenvoegen van \BDD structuren zullen we \emph{smelten}
    188189(\emph{melding}) noemen. Het werkt volgens de volgende principes.  Men neme
    189190twee knopen $\alpha = (v,l,h)$ en $\alpha' = (v',l',h')$. De knoop $\alpha
    190 \diamond \alpha'$, de ``\emph{emulsie}'' (\emph{meld}) van $\alpha$ en
    191 $\alpha'$, is dan als volgt gedefinieerd als $\alpha$ en $\alpha'$ niet beiden
    192 bladeren (\emph{sinks}) zijn:
     191\diamond \alpha'$, het resultaat van de \emph{smelt} actie, de
     192``\emph{emulsie}'' (\emph{meld}) van $\alpha$ en $\alpha'$, is dan als volgt
     193gedefinieerd als $\alpha$ en $\alpha'$ niet beide bladeren (\emph{sinks})
     194zijn:
    193195\begin{equation}
    194196\label{melt-eq}
     
    197199(v, l \diamond l', h \diamond h'), & \mathrm{als~} v = v'; \\
    198200(v, l \diamond \alpha', h \diamond \alpha'), & \mathrm{als~} v < v'; \\
    199 (v, \alpha \diamond l', \alpha \diamond h'), & \mathrm{als~} v > v'. \\
     201(v', \alpha \diamond l', \alpha \diamond h'), & \mathrm{als~} v > v'. \\
    200202\end{array} \right.
    201203\end{equation}
     204Als we deze recursieve formule gebruiken op de wortels van twee \BDDs $f$ en
     205$g$, vinden we een diagram dat het paar $(f,g)$ representeert.
    202206
    203207De oplettende lezer zal zien dan als je Formule~\ref{melt-eq} toepast op de
    204208bladeren er door samenvoegen van de bladeren ---zie bijvoorbeeld
    205 voorbeeld in Hoofstuk~\ref{voorbeeldSamenvoegen}--- in plaats van de twee bladeren
     209voorbeeld in Figuur~\ref{fig:samenvoegen}--- in plaats van de twee bladeren
    206210$\top$ en $\bot$, er nu vier bladeren mogelijk zijn:
    207211\begin{equation}
     
    213217Om er weer een ``valide'' \BDD van te maken zullen deze bladeren vervangen
    214218worden door het uitgerekende blad. Als bijvoorbeeld de $\diamond$ operatie
    215 bedoelt is voor een \emph{EN} operatie, wordt de blad-rij in~\ref{bladeren}
     219bedoelt is voor een \emph{EN} operatie, wordt de blad-rij in~(\ref{bladeren})
    216220vervangen door de rij $\bot, \bot, \bot, \top$. Nu is het zaak het \BDD
    217221te vereenvoudigen, om zo duplicaat-bladeren te snoeien (\emph{pruning}).
     
    232236\diamond \alpha'$ in rij $\alpha$ en column $\alpha'$. (b) Vervang de bladeren
    233237(zie Formule~\ref{bladeren}) door $\bot$ en $\top$, en (c) voer het algoritme
    234 $R$\footnote{Algoritme $R$ wordt niet in deze samenvatting behandeld; de
    235 vak-website~\cite{SCA2010} heeft een referentie naar algoritme $R$
    236 \url{http://www.liacs.nl/~kosters/semcom/tomb.pdf} welke behandeld wordt
    237 door Tom.} op $f \diamond g$. Op het eerste gezicht lijkt algoritme $R$ er ongeveer
     238$R$\footnote{Algoritme $R$ wordt niet in deze samenvatting behandeld; zie de
     239vak-website~\cite{SCA2010} waar het algoritme $R$ behandeld wordt door Tom.} op
     240$f \diamond g$. Op het eerste gezicht lijkt algoritme $R$ er ongeveer
    238241$B(f)B(g)$ operaties over te doen, maar doordat je onbereikbare knopen niet
    239242hoeft te evalueren zal je uitkomen op $B(f \diamond g)$.
     
    252255\label{voorbeeldSamenvoegen}
    253256Het volgende voorbeeld is een uitwerking van opgave 60~\cite[p.~130]{DK2009}
    254 de offi\"{e}le uitwerking is te vinden op \cite[p~.195]{DK2009}
     257de offici\"{e}le uitwerking is te vinden op \cite[p.~195]{DK2009}
    255258\\ \\
    256259Voorgaande aan de uitwerking is het belangrijk te weten wat een \emph{QDD} (aka
    257260\emph{quasi-BDD}~\cite[p.~102-103]{DK2009}) is. Elke functie heeft een unieke
    258261\emph{QDD} welke lijkt op een \BDD echter is de start-knoop altijd
    259 \circled{1} en elke \circled{k} knoop bestaat for $k < n$ takken naar twee
     262\circled{1} en elke \circled{k} knoop heeft (voor $k < n$) takken naar twee
    260263\squared{k+1} knopen. Wat in het kort wilt zeggen dat elk pad van de
    261264start-knoop naar de bladeren een lengte heeft van $n$. Om dat mogelijk te maken
    262265mogen de \emph{HOOG} en \emph{LAAG} takken van een \emph{QDD} gelijk zijn. Let
    263 wel op dat reductie toegepast moet worden.
     266wel op dat reductie toegepast moet worden op tweetallen knopen waarvan de
     267\emph{HOOG} en \emph{LAAG} pointers gelijk zijn.
    264268\\ \\
    265269Neem aan dat $f(x_{1},\dots,x_{n})$ en $g(x_{1},\dots,x_{n})$ de respectieve
    266270\emph{profielen} (\emph{profiles})~\cite[p.~101]{DK2009}
    267 $(b_{0},\dots,b_{n})$ ---waar $b_{k}$ met $0 \le k < n$ de knopen zijn die splitsen
     271$(b_{0},\dots,b_{n})$ ---waar $b_{k}$ met $0 \le k < n$ de knopen zijn. Die splitsen
    268272op variable $f(x_{k+1})$ en $b_{n}$ het aantal bladeren is--- en
    269273$(b'_{0},\dots,b_{n})$ hebben, en de respectieve \emph{quasi-profielen}
     
    272276de \emph{QDD} van $f$ is--- en $(q'_{0},\dots,q'_{n})$. 
    273277
    274 Om te laten zijn dat de gesmolten $f \diamond g$ het aantal knopen
     278Om te laten zien dat de gesmolten $f \diamond g$ het aantal knopen
    275279\begin{equation}
    276280\label{eq:knopen}
     
    279283bevat moet gekeken worden naar het aantal \emph{beads}~\cite[p.~72]{DK2009} dat
    280284mogelijkerwijs gemaakt kan worden van de functies $f$ en $g$. 
    281 Voor een willikeurige functie $n$ met als profiel $(b_{0},\dots,b_{n})$ en
    282 quasi-profiel $(q_{0},\dots,q_{n})$ geldt dat $B(q_{0},\dots,q_{n}) \geq
    283 B(b_{0},\dots,b_{n})$. En tevens dan $(b_{0},\dots,b_{n}) \subseteq
    284 (q_{0},\dots,q_{n})$. Hieruit volgt dat een geen-bead zich bevindt in
     285Voor een willekeurige functie $f$ met als profiel $(b_{0},\dots,b_{n})$ en
     286quasi-profiel $(q_{0},\dots,q_{n})$ geldt dat $B(b_{0},\dots,b_{n}) \leq
     287B(q_{0},\dots,q_{n})$. En tevens dan $(b_{0},\dots,b_{n}) \subseteq
     288(q_{0},\dots,q_{n})$. Hieruit volgt dat een niet-bead zich bevindt in
    285289$(q_{0},\dots,q_{n}) - (b_{0},\dots,b_{n})$.
    286290
    287291Elke bead van de orde $n - j$ in het geordende paar $(f,g)$ zal zich
    288292bevinden in een van de volgende groepen; (a) de standaard-combinatie van de
    289 $b_{j}b_{j}'$ geordende beats van $(f,g)$ of (b) de gegenereerde reeks van een
    290 (bead,geen-bead) of (geen-bead, bead) $b_{j}(q_{j}' - b_{j}') + (q_{j} -
     293$b_{j}b_{j}'$ geordende beads van $(f,g)$ of (b) de gegenereerde reeks van een
     294(bead,niet-bead) of (niet-bead, bead) $b_{j}(q_{j}' - b_{j}') + (q_{j} -
    291295b{j})b_{j}'$.
    292296
     
    298302\label{voorbeeldPlakken}
    299303Het volgende voorbeeld is een uitwerking van opgave 63~\cite[p.~131]{DK2009}
    300 de offi\"{e}le uitwerking is te vinden op \cite[p.~195]{DK2009}.
     304de offici\"{e}le uitwerking is te vinden op \cite[p.~195]{DK2009}.
     305
     306De $2^{m}$-weg multiplexer $M_{m}(y_{1},\dots,y_{m};y_{m+1},\dots,y_{m+2^{m}})$
     307geeft bij input $y_{1},\dots,y_{m}$ de waarde van variable $y_{m+k}$ waarbij $k$
     308het getal is gerepresenteerd door $y_{1},\dots,y_{m}$,
     309zie~\cite[7.1.2-(31)]{DK2009-0}. Hiermee defineren we $\oplus$
     310de binary operator \emph{XOR} en $n = 2m + 2^{m}$.
    301311
    302312\begin{equation}
     
    307317\label{eq:opgave63}
    308318\end{equation}
    309 In Vergelijking~\ref{eq:opgave63} zijn $f$ en $g$ gedefinieerd, waarbij $\oplus$
    310 de binary operator \emph{XOR} is en $n = 2m + 2^{m}$.
    311319
    312320Dan is $B(f) = 2^{m+2}-1 \approx 4n$, $B(g) = 2^{m+1}-2^{m} \approx 3n$ en $B(g
     
    315323daarna met sommering van deze tot de antwoorden te komen. Als eerste moet
    316324opgemerkt worden dat zowel $f$ als $g$ $2^m$-weg
    317 multiplexers~\cite[7.1.2-(31)]{DK2009-0} zijn voor welke de profielen zijn
    318 $(1,2,2,\dots,2^{m-1},2^{m-1},2^m,1,1,\dots,1.2)$ respectievelijk
    319 $(0,1,2,2,\dots,2^{m-1},2^{m-1},1,1,\dots,1,2$. Dit optellen en afschatten wordt
     325multiplexers zijn voor welke de profielen zijn
     326$(1,2,2,\dots,2^{m-1},2^{m-1},2^m,1,1,\dots,1,2)$ respectievelijk \\
     327$(0,1,2,2,\dots,2^{m-1},2^{m-1},1,1,\dots,1,2)$. Dit optellen en afschatten wordt
    320328(zie ook~\cite[p.~82]{DK2009}) $B(f) = 2^{m+2} - 1 \approx 4n$ en $B(g) =
    3213292^{m+1} - 1 \approx 3n$. \\
    322330\\
    323 De bereking $B(f \land g)$ wordt aanzienlijk moeilijker. We constateren eerst
    324 dat er een unieke oplossing bestaat ---de oplossing kan aan een uniek getal
    325 gekoppeld worden---
     331De bereking $B(f \land g)$ (de werking van de multiplexer) wordt aanzienlijk
     332moeilijker en zal daarom aangestipt worden. We constateren eerst dat er een
     333unieke oplossing bestaat ---de oplossing kan aan een uniek getal
     334gekoppeld worden namelijk de invoer---
    326335in de vorm van $x_1 \dots
    327336x_{2m}$ als je $((x_1 \oplus x_2)(x_3 \oplus x_4) \dots (x_{2m-1} \oplus
    328337x_{2m}))_{2} = p,((x_2 \oplus x_3) \dots (x_{2m-2} \oplus x_{2m-1})x_{2m})_{2}
    329338= q$, waar $0 \leq p, q \le 2^m$ en $p=q$ dan en slechts als $x_1 = x_3 = \dots
    330 = 2_{2m-1} = 0$.  Dit zorgt dat  het eerste deel ---het stuk voor de punt
     339= x_{2m-1} = 0$.  Dit zorgt dat  het eerste deel ---het stuk voor de punt
    331340komma--- van het profiel van $f \land g$ geschreven kan worden als $(1, 2, 4,\dots,
    3323412^{2m-2}, 2^{2m-1} - 2^{m-1})$.
Note: See TracChangeset for help on using the changeset viewer.