exercises/solutions/sol04.tex
author Eugen Sawin <sawine@me73.com>
Thu, 31 May 2012 01:17:45 +0200
changeset 13 5fef2580e445
parent 12 exercises/solutions/sol03.tex@7db450445696
child 14 5c6d1fbfd37a
permissions -rw-r--r--
First exercise completed.
sawine@9
     1
\documentclass[a4paper, 10pt, pagesize, smallheadings]{article}
sawine@9
     2
\usepackage{graphicx}
sawine@9
     3
%\usepackage[latin1]{inputenc}
sawine@9
     4
\usepackage{amsmath, amsthm, amssymb}
sawine@9
     5
\usepackage{typearea}
sawine@9
     6
\usepackage{algorithm}
sawine@9
     7
\usepackage{algorithmic}
sawine@9
     8
\usepackage{fullpage}
sawine@9
     9
\usepackage{mathtools}
sawine@9
    10
\usepackage[all]{xy}
sawine@9
    11
\usepackage{tikz}
sawine@9
    12
\usepackage{tikz-qtree}
sawine@9
    13
\usetikzlibrary{decorations.pathmorphing} % noisy shapes
sawine@9
    14
\usetikzlibrary{fit}					% fitting shapes to coordinates
sawine@9
    15
\usetikzlibrary{backgrounds}	% drawin
sawine@9
    16
\usetikzlibrary{shapes,snakes}
sawine@9
    17
\addtolength{\voffset}{-20pt}
sawine@13
    18
\title{CSP Exercise 04 Solution}
sawine@9
    19
\author{Eugen Sawin}
sawine@9
    20
\renewcommand{\familydefault}{\sfdefault}
sawine@9
    21
\newcommand{\R}{\mathcal{R}}
sawine@13
    22
\newcommand{\N}{\mathbb{N}}
sawine@9
    23
sawine@9
    24
%\include{pythonlisting}
sawine@9
    25
sawine@9
    26
\pagestyle{empty}
sawine@9
    27
\begin{document}
sawine@9
    28
\maketitle
sawine@9
    29
sawine@13
    30
\section*{Exercise 4.1}
sawine@13
    31
(a) The zebra problem is the constraint network $N=\langle V,D,C\rangle$ with
sawine@9
    32
\begin{align*}
sawine@13
    33
  V=&(english,spanish,ukrainian,norwegian,japanese,\\
sawine@13
    34
    &red,green,ivory,yellow,blue\\
sawine@13
    35
    &dog,snail,fox,horse,zebra\\
sawine@13
    36
    &coffee,tea,milk,juice,water\\
sawine@13
    37
    &oldgold,kools,chesterfield,lucky,parliament)\\
sawine@13
    38
  D=&(D_v)_{v\in V}\text{ where } D_v=\left\{\begin{array}{l l}
sawine@13
    39
                                               \{1\} & v = norwegian\\
sawine@13
    40
                                               \{3\} & v = milk\\
sawine@13
    41
                                   \{1, 2, 3, 4, 5\} & otherwise\\
sawine@13
    42
                                             \end{array} \right.\\
sawine@13
    43
  R_{eq}=&\{(a,a)\mid a\in \N\}\\
sawine@13
    44
  R_{next}=&\{(a,b)\mid a,b\in\N, |a-b| = 1\}\\
sawine@13
    45
  R_{rightof}=&\{(a+1,a)\mid a\in \N\}\\
sawine@13
    46
  C=&\{R_{v_1, v_2\in\{english,spanish,ukrainian,norwegian,japanese\}}=(D_{v_1}\times D_{v_j})\setminus R_{eq},\\
sawine@13
    47
    &R_{v_1, v_2\in\{red,green,ivory,yellow,blue\}}=(D_{v_1}\times D_{v_j})\setminus R_{eq},\\
sawine@13
    48
    &R_{v_1, v_2\in\{dog,snail,fox,horse,zebra\}}=(D_{v_1}\times D_{v_j})\setminus R_{eq},\\
sawine@13
    49
    &R_{v_1, v_2\in\{coffee,tea,milk,juice,water\}}=(D_{v_1}\times D_{v_j})\setminus R_{eq},\\
sawine@13
    50
    &R_{v_1, v_2\in\{oldgold,kools,chesterfield,lucky,parliament\}}=(D_{v_1}\times D_{v_j})\setminus R_{eq},\\
sawine@13
    51
    &R_{english, red}=(D_{english}\times D_{red}) \cap R_{eq},\\
sawine@13
    52
    &R_{spanish, dog}=(D_{spanish}\times D_{dog}) \cap R_{eq},\\
sawine@13
    53
    &R_{coffee, green}=(D_{coffee}\times D_{green}) \cap R_{eq},\\
sawine@13
    54
    &R_{ukrainian, tea}=(D_{ukrainian}\times D_{tea}) \cap R_{eq},\\
sawine@13
    55
    &R_{oldgold, snail}=(D_{oldgold}\times D_{snail}) \cap R_{eq},\\
sawine@13
    56
    &R_{kool, yellow}=(D_{kool}\times D_{yellow}) \cap R_{eq},\\
sawine@13
    57
    &R_{lucky, juice}=(D_{lucky}\times D_{juice}) \cap R_{eq},\\
sawine@13
    58
    &R_{japanese, parliament}=(D_{japanese}\times D_{parliament}) \cap R_{eq},\\
sawine@13
    59
    &R_{chesterfield, fox}=(D_{chesterfield}\times D_{fox}) \cap R_{next},\\
sawine@13
    60
    &R_{yellow, horse}=(D_{yellow}\times D_{horse}) \cap R_{next},\\
sawine@13
    61
    &R_{norwegian, blue}=(D_{norwegian}\times D_{blue}) \cap R_{next},\\
sawine@13
    62
    &R_{green, ivory}=(D_{green}\times D_{ivory}) \cap R_{rightof}\}
sawine@9
    63
\end{align*}
sawine@13
    64
To answer the questions, the Norwegian drinks water and the Japanese owns the zebra. I have added the corresponding problem file in XCSP2.1 format to my project repository \emph{(xcsp2\_examples/zebra.xml)}.\\\\
sawine@13
    65
(b) See figure 1 (names are abbreviated).
sawine@9
    66
\begin{figure}[h]
sawine@9
    67
\centering
sawine@9
    68
\tikzstyle{var}=[circle,
sawine@9
    69
  draw=black!100,
sawine@9
    70
  fill=black!0]
sawine@9
    71
\begin{tikzpicture}[>=latex,text height=1.5ex,text depth=0.25ex]
sawine@13
    72
  \matrix[row sep=1.1cm,column sep=0.7cm] {    
sawine@13
    73
    \node(eng)[var]{$eng$}; &\node(spa)[var]{$spa$}; &\node(ukr)[var]{$ukr$}; &\node(nor)[var]{$nor$}; &\node(jap)[var]{$jap$};\\
sawine@13
    74
  \node(red)[var]{$red$}; &\node(gre)[var]{$gre$}; &\node(ivo)[var]{$ivo$}; &\node(yel)[var]{$yel$}; &\node(blu)[var]{$blu$};\\
sawine@13
    75
  \node(dog)[var]{$dog$}; &\node(sna)[var]{$sna$}; &\node(fox)[var]{$fox$}; &\node(hor)[var]{$hor$}; &\node(zeb)[var]{$zeb$};\\
sawine@13
    76
  \node(cof)[var]{$cof$}; &\node(tea)[var]{$tea$}; &\node(mil)[var]{$mil$}; &\node(jui)[var]{$jui$}; &\node(wat)[var]{$wat$};\\
sawine@13
    77
  \node(old)[var]{$old$}; &\node(koo)[var]{$koo$}; &\node(che)[var]{$che$}; &\node(luc)[var]{$luc$}; &\node(par)[var]{$par$};\\
sawine@9
    78
  };
sawine@9
    79
  \path[-]
sawine@13
    80
  (eng) edge (red)
sawine@13
    81
  (spa) edge[bend right=60] (dog)
sawine@13
    82
  (cof) edge (gre)
sawine@13
    83
  (ukr) edge (tea)
sawine@13
    84
  (old) edge (sna)
sawine@13
    85
  (koo) edge (yel)
sawine@13
    86
  (luc) edge (jui)
sawine@13
    87
  (jap) edge[bend left] (par)
sawine@13
    88
  (che) edge[bend left] (fox)
sawine@13
    89
  (yel) edge (hor)
sawine@13
    90
  (nor) edge (blu)
sawine@13
    91
  (gre) edge (ivo)
sawine@13
    92
sawine@13
    93
  (eng) edge (spa)
sawine@13
    94
  (eng) edge[bend left] (ukr)
sawine@13
    95
  (eng) edge[bend left] (nor)
sawine@13
    96
  (eng) edge[bend left] (jap)
sawine@13
    97
  (spa) edge (ukr)
sawine@13
    98
  (spa) edge[bend right] (nor)
sawine@13
    99
  (spa) edge[bend right] (jap)
sawine@13
   100
  (ukr) edge (nor)
sawine@13
   101
  (ukr) edge[bend left] (jap)
sawine@13
   102
  (nor) edge (jap)
sawine@13
   103
sawine@13
   104
  (red) edge (gre)
sawine@13
   105
  (red) edge[bend left] (ivo)
sawine@13
   106
  (red) edge[bend left] (yel)
sawine@13
   107
  (red) edge[bend left] (blu)
sawine@13
   108
  (gre) edge (ivo)
sawine@13
   109
  (gre) edge[bend right] (yel)
sawine@13
   110
  (gre) edge[bend right] (blu)
sawine@13
   111
  (ivo) edge (yel)
sawine@13
   112
  (ivo) edge[bend left] (blu)
sawine@13
   113
  (yel) edge (blu)
sawine@13
   114
  
sawine@13
   115
  (dog) edge (sna)
sawine@13
   116
  (dog) edge[bend left] (fox)
sawine@13
   117
  (dog) edge[bend left] (hor)
sawine@13
   118
  (dog) edge[bend left] (zeb)
sawine@13
   119
  (sna) edge (fox)
sawine@13
   120
  (sna) edge[bend right] (hor)
sawine@13
   121
  (sna) edge[bend right] (zeb)
sawine@13
   122
  (fox) edge (hor)
sawine@13
   123
  (fox) edge[bend left] (zeb)
sawine@13
   124
  (hor) edge (zeb)
sawine@13
   125
sawine@13
   126
  (cof) edge (tea)
sawine@13
   127
  (cof) edge[bend left] (mil)
sawine@13
   128
  (cof) edge[bend left] (jui)
sawine@13
   129
  (cof) edge[bend left] (wat)
sawine@13
   130
  (tea) edge (mil)
sawine@13
   131
  (tea) edge[bend right] (jui)
sawine@13
   132
  (tea) edge[bend right] (wat)
sawine@13
   133
  (mil) edge (jui)
sawine@13
   134
  (mil) edge[bend left] (wat)
sawine@13
   135
  (jui) edge (wat)
sawine@13
   136
sawine@13
   137
  (old) edge (koo)
sawine@13
   138
  (old) edge[bend left] (che)
sawine@13
   139
  (old) edge[bend left] (luc)
sawine@13
   140
  (old) edge[bend left] (par)
sawine@13
   141
  (koo) edge (che)
sawine@13
   142
  (koo) edge[bend right] (luc)
sawine@13
   143
  (koo) edge[bend right] (par)
sawine@13
   144
  (che) edge (luc)
sawine@13
   145
  (che) edge[bend left] (par)
sawine@13
   146
  (luc) edge (par)
sawine@9
   147
  ;      
sawine@9
   148
\end{tikzpicture}
sawine@13
   149
\caption{(3.1b) primal constraint graph of $N$}
sawine@9
   150
\end{figure}\\
sawine@13
   151
(c) No, $N$ is not arc-consistent. We provide the arc-consistent constraint network $N^c=\langle V, D^c, C\rangle$ with
sawine@13
   152
\begin{align*}
sawine@13
   153
  D^c_{v}=\left\{
sawine@13
   154
    \begin{array}{l l}
sawine@13
   155
      \{1\} & v = norwegian\\
sawine@13
   156
      \{3\} & v = milk\\
sawine@13
   157
      \{2\} & v = blue\\
sawine@13
   158
      \{3,4\} & v = ivory\\
sawine@13
   159
      \{4,5\} & v \in \{coffee,green\}\\
sawine@13
   160
      \{2,3,4\} & v = horse\\
sawine@13
   161
      \{3,4,5\} & v \in \{english,red\}\\
sawine@13
   162
      \{2,4,5\} & v \in \{ukrainian,tea\}\\
sawine@13
   163
      \{2,3,4,5\} & v \in \{spanish,japanese,dog,parliament\}\\
sawine@13
   164
      \{1,2,4,5\} & v \in \{juice,water,lucky\}\\
sawine@13
   165
      \{1,3,4,5\} & v \in \{yellow,kool\}\\
sawine@13
   166
      \{1, 2, 3, 4, 5\} & otherwise\\
sawine@13
   167
    \end{array} \right.\\
sawine@13
   168
\end{align*}
sawine@13
   169
That makes 32 domain values less and one hour less of my life. My solver spent full 1.5ms on this task. I'm glad we have the power to build machines for doing such tedious work instead of doing it by hand.
sawine@9
   170
\end{document}