From: Mart Lubbers Date: Thu, 21 Apr 2016 20:30:12 +0000 (+0200) Subject: small typos and strange long lines X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=e77120aab007ba7ea921aa29a1f6671dfd501f10;p=mc1516pa.git small typos and strange long lines --- diff --git a/report2/implementation.tex b/report2/implementation.tex index 3f4ee6a..273bef9 100644 --- a/report2/implementation.tex +++ b/report2/implementation.tex @@ -9,8 +9,9 @@ Let $T=\{free,box,target,agent,targetagent,targetbox\}$ be the set of possible states of a tile. Tiles are numbered and thus a sokoban screen is the set $F$ containing a $x_i\in T$ for every tile. We introduce a function $ord(x, y)$ that returns the tile number for a given $x$ and $y$ coordinate and a function -$iord(i)$ that does the reverse. To encode the state we introduce an encoding function that encodes each screen tile as a unique combination of boolean variables: - +$iord(i)$ that does the reverse. To encode the state we introduce an encoding +function that encodes each screen tile as a unique combination of boolean +variables: $$encode(t)=\begin{cases} 001 & \text{if }t=free\\ 010 & \text{if }t=box\\ @@ -23,7 +24,18 @@ $$encode(t)=\begin{cases} This means that the encoding of a screen takes $3*|F|$ variables. \subsection{Transition encoding} -We generate transition relations for four possible move directions of an agent, for all screen tiles. There are three type of transition relations, namely: a one-tile relation (changes only one tile), a two-tile relation (changes only two tiles) and a three-tile relation (transforms three tiles per transition simultaneously). In order to generate transition relations, we iterate through a screen and for each tile we check neighbouring space with the purpose of generating only the relevant relations. For example, if we concider a tile in the top-left corner, there is no need to generate one or two-tiled transition relations which can transform tiles to the left or to the right of that given tile. For each possible direction of agent movement, we define a $\delta$ and a $\gamma$ variables which represent the change in coordinate values respectively for the next position and the position next to the next postition. +We generate transition relations for four possible move directions of an agent, +for all screen tiles. There are three type of transition relations, namely: a +one-tile relation (changes only one tile), a two-tile relation (changes only +two tiles) and a three-tile relation (transforms three tiles per transition +simultaneously). In order to generate transition relations, we iterate through +a screen and for each tile we check neighbouring space with the purpose of +generating only the relevant relations. For example, if we concider a tile in +the top-left corner, there is no need to generate one or two-tiled transition +relations which can transform tiles to the left or to the right of that given +tile. For each possible direction of agent movement, we define a $\delta$ and a +$\gamma$ variables which represent the change in coordinate values respectively +for the next position and the position next to the next postition. $$\delta_{(x,y)}(m)=\begin{cases} (x-1, y) & \text{if } m = left\\ (x+1, y) & \text{if } m = right\\ @@ -37,10 +49,11 @@ $$\delta_{(x,y)}(m)=\begin{cases} (x, y-2) & \text{if } m = up\\ \end{cases}$$ -We define the following tile update functions: $next(i_1)$, $next'(i_1,i_2)$ $next''(i_1, i_2, i_3)$ where $i_1$ contains -the agent and $i_2$ and $i_3$ are adjacent to it in some direction. +We define the following tile update functions: $next(i_1)$, $next'(i_1,i_2)$ +$next''(i_1, i_2, i_3)$ where $i_1$ contains the agent and $i_2$ and $i_3$ are +adjacent to it in some direction. -$$next'(i_1, i_2)=\left\{\begin{array}{lp{2pt}l} +$$next(i_1)=\left\{\begin{array}{lp{2pt}l} (agent) & \text{if } & i_1=agent\\ (targetagent) & \text{if } & i_1=targetagent\\ \end{array}\right.$$ @@ -117,9 +130,12 @@ results in the second representation in Listing~\ref{lst:toy}. \lstinputlisting[label={lst:toy},caption={Example screen}]{toy.screen} -\subsubsection{Encoding} To encode the screen the tiles are numbered from left to right from top to -bottom (in a convenient coordinate-like manner). In order to translate the initial screen into BDD representation, we iterate through a screen's tiles. We use even BDD variable identifiers to represent states (screens). For convenient BDD creation, we use sylvan cubes.As an example we can consider the following bdd shown in +bottom (in a convenient coordinate-like manner). In order to translate the +initial screen into BDD representation, we iterate through a screen's tiles. We +use even BDD variable identifiers to represent states (screens). For convenient +BDD creation, we use sylvan cubes.As an example we can consider the following +bdd shown in Figure~\ref{fig:toy}. Variables $0, 2, 4$ represent $i_1$, $6, 8, 10$ represent $i_2$ and lastly $12, 14, 16$ represents $i_3$. \begin{figure}[p] @@ -139,18 +155,18 @@ the BDD shown in Figure~\ref{fig:toy2}. \end{figure} Finally encoding the transitions already results in a long list of complicated -BDDs that each encode a possible move in all possible directions. In transition relations, even BDD variable identifiers act as state filters, whereas even variable identifiers act as new values. Each transition changes only a limited subset of the screen variables. In this -example there is only one move possible in the first state, thus all moves -except for the one move result in a relative product that is empty. For example -the sub-BDD that encodes the first position only looks is visualized in -Figure~\ref{fig:toy3}. The only satisfying assignment is that $0, 2, 4$ hold -the values $1, 0, 1$ thus encoding man and the variables $1, 3, 5$ holding the -values $0, 0, 1$ thus encoding free. +BDDs that each encode a possible move in all possible directions. In transition +relations, even BDD variable identifiers act as state filters, whereas even +variable identifiers act as new values. Each transition changes only a limited +subset of the screen variables. In this example there is only one move possible +in the first state, thus all moves except for the one move result in a relative +product that is empty. For example the sub-BDD that encodes the first position +only looks is visualized in Figure~\ref{fig:toy3}. The only satisfying +assignment is that $0, 2, 4$ hold the values $1, 0, 1$ thus encoding man and +the variables $1, 3, 5$ holding the values $0, 0, 1$ thus encoding free. \begin{figure}[p] \centering \includegraphics[width=.8\textwidth]{toy3.png} \caption{Sub-BDD of a move~\label{fig:toy3}} \end{figure} - -\subsubsection{Results}