small typos and strange long lines
authorMart Lubbers <mart@martlubbers.net>
Thu, 21 Apr 2016 20:30:12 +0000 (22:30 +0200)
committerMart Lubbers <mart@martlubbers.net>
Thu, 21 Apr 2016 20:30:12 +0000 (22:30 +0200)
report2/implementation.tex

index 3f4ee6a..273bef9 100644 (file)
@@ -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}