2 %%Creator: dvips 5.55 Copyright 1986, 1994 Radical Eye Software
4 %%CreationDate: Thu Jun 13 23:50:30 1996
7 %%BoundingBox: 0 0 612 792
9 %DVIPSCommandLine: dvips aphidacc
10 %DVIPSParameters: dpi=300, comments removed
11 %DVIPSSource: TeX output 1996.06.13:2350
12 %%BeginProcSet: tex.pro
13 /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
14 /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
15 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
16 ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
17 isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
18 hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
19 TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
20 forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
21 /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
22 /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
23 /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
24 string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
25 end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
26 /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
27 N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
28 length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
29 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
30 get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
31 dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
32 /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
33 /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
34 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
35 setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
36 .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}
37 if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
38 length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
39 cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
40 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
41 add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
42 userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
43 known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
44 /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
45 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
46 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
47 {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
48 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
49 ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
50 RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
51 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
52 round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
53 rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
54 {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
55 B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
56 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{
57 p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
58 a}B /bos{/SS save N}B /eos{SS restore}B end
60 %%BeginProcSet: special.pro
61 TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N
62 /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen
63 false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B
64 /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit
65 div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{
66 /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{
67 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B
68 /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale
69 true def end /@MacSetUp{userdict /md known{userdict /md get type
70 /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup
71 length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{}
72 N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath
73 clippath mark{transform{itransform moveto}}{transform{itransform lineto}
74 }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{
75 itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{
76 closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39
77 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N
78 /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1
79 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get
80 ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
81 not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0
82 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR
83 pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1
84 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg
85 TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg
86 sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr
87 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add
88 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp
89 {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72
90 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray}
91 N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict
92 maxlength dict begin /magscale false def normalscale currentpoint TR
93 /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
94 /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx
95 psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy
96 scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR
97 /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{
98 psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
99 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
100 moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict
101 begin /SpecialSave save N gsave normalscale currentpoint TR
102 @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial
103 {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
104 closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
105 sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
106 }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
107 CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
108 lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath
109 }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{
110 end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin}
111 N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{
112 /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX
113 SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X
114 /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad
115 yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end
117 TeXDict begin 40258431 52099146 1000 300 300
118 (/usr/maligne2/grad/brock/Writing/aphid/aphidacc.dvi)
119 @start /Fa 6 112 df<00FC100383300E00B01C0070380030300030700010600010E000
120 10E00000E00000E00000E00000E00000E000106000107000103000203800201C00400E00
121 8003830000FC0014177E961A>67 D<FC1F80300600300600300600300600300600300600
122 3006003FFE00300600300600300600300600300600300600300600FC1F8011117F9014>
123 104 D<FF181818181818181818181818181818FF08117F900A>I<FC0F80300600300C00
124 30180030200030400030800031800032C000346000382000303000301800300C00300600
125 300600FC0F8011117F9015>107 D<F00F803807003802002C0200260200230200230200
126 21820020C200206200206200203200201A00200E00200E00700600F8020011117F9014>
127 110 D<03F0000C0C00180600300300600180400080C000C0C000C0C000C0C000C0C000C0
128 6001806001803003001806000C0C0003F00012117F9015>I E /Fb
129 1 111 df<30F8590C4E0C9C0C980C180C180C30183019303130316032601C100D7F8C15>
130 110 D E /Fc 49 122 df<000FF000007FFC0001F80E0003E01F0007C03F000F803F000F
131 803F000F801E000F800C000F8000000F8000000F8000000F800000FFFFFF00FFFFFF000F
132 801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F
133 801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F007F
134 F0FFE07FF0FFE01B237FA21F>12 D<3803807C07C0FE0FE0FF0FF0FF0FF07F07F03B03B0
135 0300300300300700700600600600600C00C01C01C018018070070020020014117EA21D>
136 34 D<387CFEFEFE7C3807077C8610>46 D<00180000780001F800FFF800FFF80001F800
137 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800
138 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800
139 7FFFE07FFFE013207C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE
140 03F8FE01F87C01F83803F80003F80003F00003F00007E00007C0000F80001F00003E0000
141 380000700000E01801C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FF
142 FFF015207D9F1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F8
143 1F03F00003F00003E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC
144 3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E
145 9F1C>I<0000E00001E00003E00003E00007E0000FE0001FE0001FE00037E00077E000E7
146 E001C7E00187E00307E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFEFFFF
147 FE0007E00007E00007E00007E00007E00007E00007E000FFFE00FFFE17207E9F1C>I<10
148 00201E01E01FFFC01FFF801FFF001FFE001FF8001BC00018000018000018000018000019
149 FC001FFF001E0FC01807E01803E00003F00003F00003F80003F83803F87C03F8FE03F8FE
150 03F8FC03F0FC03F07007E03007C01C1F800FFF0003F80015207D9F1C>I<001F8000FFE0
151 03F07007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFFE0
152 FD80F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C
153 3E007C1E00F80F00F00783E003FFC000FF0017207E9F1C>I<6000007800007FFFFE7FFF
154 FE7FFFFC7FFFF87FFFF87FFFF0E00060E000C0C00180C00300C00300000600000C00001C
155 0000180000380000780000780000F00000F00000F00001F00001F00001F00003F00003F0
156 0003F00003F00003F00003F00003F00001E00017227DA11C>I<00FE0003FFC00703E00E
157 00F01C00F01C00783C00783E00783F00783F80783FE0F01FF9E01FFFC00FFF8007FFC003
158 FFE007FFF01E7FF83C1FFC7807FC7801FEF000FEF0003EF0001EF0001EF0001CF8001C78
159 00383C00381F01F00FFFC001FF0017207E9F1C>I<000070000000007000000000F80000
160 0000F800000000F800000001FC00000001FC00000003FE00000003FE00000003FE000000
161 06FF000000067F0000000E7F8000000C3F8000000C3F800000183FC00000181FC0000038
162 1FE00000300FE00000300FE00000600FF000006007F00000E007F80000FFFFF80000FFFF
163 F800018001FC00018001FC00038001FE00030000FE00030000FE000600007F000600007F
164 00FFE00FFFF8FFE00FFFF825227EA12A>65 D<FFFFFF8000FFFFFFE00007F001F80007F0
165 00FC0007F0007E0007F0007E0007F0007F0007F0007F0007F0007F0007F0007F0007F000
166 7F0007F0007E0007F000FE0007F000FC0007F003F80007FFFFF00007FFFFF00007F001FC
167 0007F0007E0007F0003F0007F0003F8007F0001F8007F0001FC007F0001FC007F0001FC0
168 07F0001FC007F0001FC007F0001FC007F0003F8007F0003F8007F0007F0007F001FE00FF
169 FFFFF800FFFFFFC00022227EA128>I<0003FE0080001FFF818000FF01E38001F8003F80
170 03E0001F8007C0000F800F800007801F800007803F000003803F000003807F000001807E
171 000001807E00000180FE00000000FE00000000FE00000000FE00000000FE00000000FE00
172 000000FE00000000FE000000007E000000007E000001807F000001803F000001803F0000
173 03801F800003000F8000030007C000060003F0000C0001F800380000FF00F000001FFFC0
174 000003FE000021227DA128>I<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F000
175 3F0007F0001F8007F0000FC007F00007E007F00007E007F00007F007F00003F007F00003
176 F007F00003F007F00003F807F00003F807F00003F807F00003F807F00003F807F00003F8
177 07F00003F807F00003F807F00003F807F00003F007F00003F007F00003F007F00007E007
178 F00007E007F0000FC007F0001F8007F0003F0007F0007E0007F003FC00FFFFFFF000FFFF
179 FF800025227EA12B>I<FFFFFFF8FFFFFFF807F001F807F0007807F0003807F0001807F0
180 001C07F0001C07F0000C07F0000C07F0180C07F0180C07F0180007F0180007F0380007F0
181 780007FFF80007FFF80007F0780007F0380007F0180007F0180007F0180007F0180007F0
182 000007F0000007F0000007F0000007F0000007F0000007F0000007F00000FFFFE000FFFF
183 E0001E227EA123>70 D<FFFF83FFFEFFFF83FFFE07F0001FC007F0001FC007F0001FC007
184 F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0
185 001FC007F0001FC007F0001FC007FFFFFFC007FFFFFFC007F0001FC007F0001FC007F000
186 1FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001F
187 C007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC0FFFF83FFFEFFFF83FFFE
188 27227EA12C>72 D<FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003
189 F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
190 F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800FFFFE0FF
191 FFE013227FA115>I<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F000
192 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
193 0007F0000007F0000007F0000007F0000007F0000007F0001807F0001807F0001807F000
194 1807F0003807F0003807F0007007F0007007F000F007F001F007F007F0FFFFFFF0FFFFFF
195 F01D227EA122>76 D<FFF000000FFFFFF800001FFF07F800001FE006FC000037E006FC00
196 0037E006FC000037E0067E000067E0067E000067E0063F0000C7E0063F0000C7E0061F80
197 0187E0061F800187E0060FC00307E0060FC00307E0060FC00307E00607E00607E00607E0
198 0607E00603F00C07E00603F00C07E00601F81807E00601F81807E00601F81807E00600FC
199 3007E00600FC3007E006007E6007E006007E6007E006003FC007E006003FC007E006001F
200 8007E006001F8007E006001F8007E006000F0007E0FFF00F00FFFFFFF00600FFFF30227E
201 A135>I<0007FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E001F80
202 003F001F80003F003F00001F803F00001F807F00001FC07E00000FC07E00000FC0FE0000
203 0FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000F
204 E0FE00000FE07E00000FC07F00001FC07F00001FC03F00001F803F80003F801F80003F00
205 0FC0007E0007E000FC0003F001F80000FC07E000003FFF80000007FC000023227DA12A>
206 79 D<FFFFFF00FFFFFFE007F007F007F001FC07F000FC07F0007E07F0007E07F0007F07
207 F0007F07F0007F07F0007F07F0007F07F0007E07F0007E07F000FC07F001FC07F007F007
208 FFFFE007FFFF0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
209 F0000007F0000007F0000007F0000007F0000007F00000FFFF8000FFFF800020227EA126
210 >I<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC000CFC0000FF
211 0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F00003F00
212 003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA1
213 1F>83 D<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E003
214 F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F8
215 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800
216 000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
217 0003F800000003F800000003F800000003F8000003FFFFF80003FFFFF80022227EA127>
218 I<FFFF803FFCFFFF803FFC07F000018007F000018007F000018007F000018007F0000180
219 07F000018007F000018007F000018007F000018007F000018007F000018007F000018007
220 F000018007F000018007F000018007F000018007F000018007F000018007F000018007F0
221 00018007F000018007F000018007F000018007F000018003F000030003F800030001F800
222 060000FC000E00007E001C00003F80F800000FFFE0000001FF000026227EA12B>I<FFFF
223 800FFEFFFF800FFE07F00000C007F80000C003F800018003F800018001FC00030001FC00
224 030001FE00070000FE00060000FF000600007F000C00007F800C00003F801800003F8018
225 00003FC03800001FC03000001FE03000000FE06000000FF060000007F0C0000007F0C000
226 0007F9C0000003F980000003FD80000001FF00000001FF00000000FE00000000FE000000
227 00FE000000007C000000007C00000000380000000038000027227FA12A>I<FFFF0FFFF0
228 1FFEFFFF0FFFF01FFE0FF000FF0000E007F0007F0000C007F0007F0000C003F8007F8001
229 8003F8003F80018003FC003F80038001FC003FC0030001FC003FC0030000FE007FE00600
230 00FE006FE0060000FF006FE00600007F00C7F00C00007F00C7F00C00007F80C7F81C0000
231 3F8183F81800003F8183F81800001FC383FC3000001FC301FC3000001FE301FC3000000F
232 E600FE6000000FE600FE6000000FF600FFE0000007FC007FC0000007FC007FC0000003FC
233 007F80000003F8003F80000003F8003F80000001F0001F00000001F0001F00000000F000
234 1E00000000E0000E00000000E0000E000037227FA13A>I<0400400E00E0180180380380
235 300300600600600600E00E00C00C00C00C00DC0DC0FE0FE0FF0FF0FF0FF07F07F03E03E0
236 1C01C014117AA21D>92 D<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F000
237 01F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81F
238 F87F07E03F18167E951B>97 D<FF000000FF0000001F0000001F0000001F0000001F0000
239 001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0FE0001F3FF8
240 001FF07C001F801E001F001F001F000F801F000F801F000FC01F000FC01F000FC01F000F
241 C01F000FC01F000FC01F000FC01F000FC01F000F801F001F801F801F001FC03E001EE07C
242 001C3FF800180FC0001A237EA21F>I<00FF8007FFE00F83F01F03F03E03F07E03F07C01
243 E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00007E00003E00301F00
244 600FC0E007FF8000FE0014167E9519>I<0001FE000001FE0000003E0000003E0000003E
245 0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0001FC3E
246 0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E
247 00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE
248 000F83BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C
249 00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E
250 00181F00300FC07003FFC000FF0015167E951A>I<003F8000FFC001E3E003C7E007C7E0
251 0F87E00F83C00F80000F80000F80000F80000F80000F8000FFFC00FFFC000F80000F8000
252 0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000
253 0F80000F80000F80000F80007FF8007FF80013237FA211>I<03FC1E0FFF7F1F0F8F3E07
254 CF3C03C07C03E07C03E07C03E07C03E07C03E03C03C03E07C01F0F801FFF0013FC003000
255 003000003800003FFF801FFFF00FFFF81FFFFC3800FC70003EF0001EF0001EF0001EF000
256 1E78003C7C007C3F01F80FFFE001FF0018217E951C>I<FF000000FF0000001F0000001F
257 0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F
258 0000001F07E0001F1FF8001F307C001F403C001F803E001F803E001F003E001F003E001F
259 003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
260 003E001F003E001F003E00FFE1FFC0FFE1FFC01A237EA21F>I<1C003E007F007F007F00
261 3E001C000000000000000000000000000000FF00FF001F001F001F001F001F001F001F00
262 1F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I<FF00FF
263 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
264 001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B237EA210
265 >108 D<FF07F007F000FF1FFC1FFC001F303E303E001F403E403E001F801F801F001F80
266 1F801F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
267 1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
268 1F001F001F001F001F001F001F001F00FFE0FFE0FFE0FFE0FFE0FFE02B167E9530>I<FF
269 07E000FF1FF8001F307C001F403C001F803E001F803E001F003E001F003E001F003E001F
270 003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
271 003E001F003E00FFE1FFC0FFE1FFC01A167E951F>I<00FE0007FFC00F83E01E00F03E00
272 F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C00
273 7C3E00F81F01F00F83E007FFC000FE0017167E951C>I<FF0FE000FF3FF8001FF07C001F
274 803E001F001F001F001F801F001F801F000FC01F000FC01F000FC01F000FC01F000FC01F
275 000FC01F000FC01F000FC01F001F801F001F801F803F001FC03E001FE0FC001F3FF8001F
276 0FC0001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F000000FF
277 E00000FFE000001A207E951F>I<FE1F00FE3FC01E67E01EC7E01E87E01E87E01F83C01F
278 00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F
279 0000FFF000FFF00013167E9517>114 D<0FF3003FFF00781F00600700E00300E00300F0
280 0300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E00380E00380F0
281 0700FC0E00EFFC00C7F00011167E9516>I<018000018000018000018000038000038000
282 0780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F8000
283 0F80000F80000F80000F80000F80000F81800F81800F81800F81800F81800F830007C300
284 03FE0000F80011207F9F16>I<FF01FE00FF01FE001F003E001F003E001F003E001F003E
285 001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E
286 001F003E001F003E001F007E001F00FE000F81BE0007FF3FC001FC3FC01A167E951F>I<
287 FFE01FE0FFE01FE00F8006000F8006000FC00E0007C00C0007E01C0003E0180003E01800
288 01F0300001F0300000F8600000F86000007CC000007CC000007FC000003F8000003F8000
289 001F0000001F0000000E0000000E00001B167F951E>I<FFE7FF07F8FFE7FF07F81F0078
290 00C00F807801800F807C01800F807C018007C07E030007C0DE030007E0DE070003E0DF06
291 0003E18F060001F18F0C0001F38F8C0001FB079C0000FB07D80000FE03D800007E03F000
292 007E03F000007C01F000003C01E000003800E000001800C00025167F9528>I<FFE01FE0
293 FFE01FE00F8006000F8006000FC00E0007C00C0007E01C0003E0180003E0180001F03000
294 01F0300000F8600000F86000007CC000007CC000007FC000003F8000003F8000001F0000
295 001F0000000E0000000E0000000C0000000C00000018000078180000FC380000FC300000
296 FC60000069C000007F8000001F0000001B207F951E>121 D E /Fd
297 1 49 df<040E0E1C1C1C38383070706060C0C0070F7F8F0A>48 D
298 E /Fe 59 123 df<0387000387000387000387000387000387007FFFC0FFFFE0FFFFE007
299 0E00070E00070E000E1C000E1C000E1C000E1C00FFFFE0FFFFE07FFFC01C38001C38001C
300 38001C38001C38001C380013197F9816>35 D<03800007E0000FE0001E70001C70001C70
301 001C70001C77E01CE7E01DE7E00FC7000F8E000F0E001E0E003F1C007F1C00739C00E3F8
302 00E1F800E0F1C0E0F1C071F9C07FFFC03F9F801E070013197F9816>38
303 D<00E001E0038007000E001C001C0038003800700070007000E000E000E000E000E000E0
304 00E000E000E000700070007000380038001C001C000E000700038001E000E00B217A9C16
305 >40 D<C000E000700038001C000E000E000700070003800380038001C001C001C001C001
306 C001C001C001C001C0038003800380070007000E000E001C0038007000E000C0000A217B
307 9C16>I<01C00001C00001C00001C00071C700F9CF807FFF001FFC0007F00007F0001FFC
308 007FFF00F9CF8071C70001C00001C00001C00001C00011127E9516>I<01C00001C00001
309 C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8001C00001C00001C00001
310 C00001C00001C00001C00001C00011137E9516>I<387C7E7E3E0E1E1C78F060070B7984
311 16>I<70F8F8F8700505788416>46 D<01800380038007800F807F80FF80738003800380
312 0380038003800380038003800380038003800380038003807FF87FFC7FF80E197C9816>
313 49 D<07E0001FF8003FFC00783E00E00700F00780F00380600380000380000380000700
314 000700000E00001C0000380000700000E00001C0000380000F00001E03803803807FFF80
315 FFFF807FFF8011197E9816>I<00E00001F00001F00001B00001B00003B80003B80003B8
316 00031800071C00071C00071C00071C00071C000E0E000E0E000FFE000FFE001FFF001C07
317 001C07001C07007F1FC0FF1FE07F1FC013197F9816>65 D<7FF800FFFE007FFF001C0F00
318 1C07801C03801C03801C03801C07801C07001FFF001FFE001FFE001C1F001C03801C03C0
319 1C01C01C01C01C01C01C01C01C03C01C07807FFF80FFFF007FFC0012197F9816>I<01F1
320 8007FB800FFF801F0F803C0780380380700380700380F00000E00000E00000E00000E000
321 00E00000E00000E00000F000007003807003803803803C07001F0F000FFE0007FC0001F0
322 0011197E9816>I<7FF800FFFE007FFF001C0F001C07801C03C01C01C01C01C01C01E01C
323 00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C
324 0F807FFF00FFFE007FF8001319809816>I<7FFFC0FFFFC07FFFC01C01C01C01C01C01C0
325 1C01C01C00001C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00E0
326 1C00E01C00E01C00E01C00E07FFFE0FFFFE07FFFE013197F9816>I<FFFFE0FFFFE0FFFF
327 E01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001FFC001FFC001FFC001C1C
328 001C1C001C00001C00001C00001C00001C00001C0000FF8000FFC000FF800013197F9816
329 >I<03E30007FF000FFF001E1F003C0F00380700700700700700F00000E00000E00000E0
330 0000E00000E03F80E07FC0E03F80F00700700700700700380F003C0F001E1F000FFF0007
331 F70003E70012197E9816>I<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C0700
332 1C07001C07001FFF001FFF001FFF001C07001C07001C07001C07001C07001C07001C0700
333 1C07001C07007F1FC0FFBFE07F1FC013197F9816>I<FFFEFFFEFFFE0380038003800380
334 038003800380038003800380038003800380038003800380038003800380FFFEFFFEFFFE
335 0F197D9816>I<7F0FE0FF8FF07F0FE01C07801C0F001C0E001C1C001C3C001C78001CF0
336 001CE0001DF0001FF0001FF8001F38001E1C001C1C001C0E001C0E001C07001C07001C03
337 807F07E0FF8FF07F07E01419809816>75 D<FFC000FFC000FFC0001C00001C00001C0000
338 1C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0040
339 1C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE013197F9816>I<FC07E0FE0FE0FE0F
340 E03A0B803B1B803B1B803B1B803B1B803B1B803BBB8039B38039B38039B38039B38039F3
341 8038E38038E380380380380380380380380380380380FE0FE0FE0FE0FE0FE013197F9816
342 >I<7E1FC0FF3FE07F1FC01D07001D87001D87001D87001DC7001DC7001CC7001CC7001C
343 E7001CE7001CE7001C67001C67001C77001C77001C37001C37001C37001C17007F1F00FF
344 9F007F0F0013197F9816>I<1FFC003FFE007FFF00780F00F00780E00380E00380E00380
345 E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780
346 F00780780F007FFF003FFE001FFC0011197E9816>I<7FF800FFFE007FFF001C0F801C03
347 801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FF8001C00001C00
348 001C00001C00001C00001C00001C00007F0000FF80007F000012197F9816>I<7FE000FF
349 F8007FFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E001FFC001FF8001F
350 FC001C1C001C0E001C0E001C0E001C0E001C0E201C0E701C0E707F07E0FF87E07F03C014
351 197F9816>82 D<07E3001FFF003FFF00781F00F00700E00700E00700E00000F000007800
352 003F80001FF00007FC0000FE00000F00000700000380000380600380E00380E00700F80F
353 00FFFE00FFFC00C7F00011197E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0
354 E0E000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
355 E00000E00000E00000E00007FC000FFE0007FC0013197F9816>I<7F07F0FF8FF87F07F0
356 1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C0
357 1C01C01C01C01C01C01C01C00E03800E038007070007FF0003FE0000F8001519809816>
358 I<FE0FE0FF1FE0FE0FE03803801C07001C07001C07001C07000E0E000E0E000E0E000E0E
359 00060C00071C00071C00071C00071C0003180003B80003B80003B80001B00001F00001F0
360 0000E00013197F9816>I<7F1F807F3F807F1F800E1E000E1C00073C0007380003B80003
361 F00001F00001E00000E00001E00001F00003F00003B80007B800071C00071C000E0E000E
362 0E001C07007F1FC0FF1FE07F1FC013197F9816>88 D<FE0FE0FF1FE0FE0FE01C07001C07
363 000E0E000E0E00071C00071C00071C0003B80003B80001F00001F00000E00000E00000E0
364 0000E00000E00000E00000E00000E00003F80007FC0003F80013197F9816>I<7FFF80FF
365 FF80FFFF80E00700E00F00E01E00E01C00003C0000780000700000F00001E00001C00003
366 C0000780000700000F00001E03801C03803C0380780380700380FFFF80FFFF80FFFF8011
367 197E9816>I<FFF0FFF0FFF0E000E000E000E000E000E000E000E000E000E000E000E000
368 E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFF0FFF0FFF00C20
369 789C16>I<FFF0FFF0FFF000700070007000700070007000700070007000700070007000
370 700070007000700070007000700070007000700070007000700070FFF0FFF0FFF00C207F
371 9C16>93 D<1FE0003FF0007FF800783C00300E00000E00000E0003FE001FFE003E0E0070
372 0E00E00E00E00E00E00E00783E007FFFE03FE7E00F83E013127E9116>97
373 D<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF000FFF800F83C00F00
374 E00E00E00E00700E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF
375 00063C001419809816>I<03F80FFC1FFE3C1E780C7000E000E000E000E000E000F00070
376 0778073E0E1FFC0FF803F010127D9116>I<003F00007F00003F00000700000700000700
377 00070003C7000FF7001FFF003C1F00780F00700700E00700E00700E00700E00700E00700
378 E00700700F00700F003C1F001FFFE00FE7F007C7E014197F9816>I<03E00FF81FFC3C1E
379 780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03F010127D9116>I<00
380 1F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF0001C00001C00001
381 C00001C00001C00001C00001C00001C00001C00001C00001C00001C0003FFE007FFF003F
382 FE0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E00380E00380E00380E00380E00
383 1C1C000FF8001FF0001BE0003800001800001FFC001FFF003FFF807803C0E000E0E000E0
384 E000E0E000E07001C07C07C03FFF800FFE0003F800131C7F9116>I<7E0000FE00007E00
385 000E00000E00000E00000E00000E3C000EFE000FFF000F87800F03800E03800E03800E03
386 800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816
387 >I<018003C003C0018000000000000000007FC07FC07FC001C001C001C001C001C001C0
388 01C001C001C001C001C001C07FFFFFFF7FFF101A7D9916>I<7E0000FE00007E00000E00
389 000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E78000EF0000FF0
390 000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCFF07F87F01419809816>107
391 D<FFC000FFC000FFC00001C00001C00001C00001C00001C00001C00001C00001C00001C0
392 0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF
393 80FFFF8011197E9816>I<F9C380FFEFC0FFFFE03C78E03C78E03870E03870E03870E038
394 70E03870E03870E03870E03870E03870E03870E0FE7CF8FE7CF8FE3C781512809116>I<
395 7E3C00FEFE007FFF000F87800F03800E03800E03800E03800E03800E03800E03800E0380
396 0E03800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E0000FF8001FFC003C1E
397 00780F00700700E00380E00380E00380E00380E00380F00780700700780F003C1E001FFC
398 000FF80003E00011127E9116>I<7E3E00FEFF007FFF800F83C00F00E00E00E00E00700E
399 00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF000E3C000E00000E
400 00000E00000E00000E00000E00007FC000FFE0007FC000141B809116>I<FF0FC0FF3FE0
401 FF7FE007F04007C000078000078000070000070000070000070000070000070000070000
402 070000FFFC00FFFC00FFFC0013127F9116>114 D<0FEC3FFC7FFCF03CE01CE01C70007F
403 801FF007F8003C600EE00EF00EF81EFFFCFFF8C7E00F127D9116>I<0300000700000700
404 000700000700007FFF00FFFF00FFFF000700000700000700000700000700000700000700
405 0007010007038007038007038007870003FE0001FC0000F80011177F9616>I<7E1F80FE
406 3F807E1F800E03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E
407 03800E0F800FFFF007FBF803E3F01512809116>I<7F1FC0FF1FE07F1FC01C07001E0F00
408 0E0E000E0E000E0E00071C00071C00071C00071C0003B80003B80003B80001F00001F000
409 00E00013127F9116>I<FF1FE0FFBFE0FF1FE038038038038038038038038038E38019F3
410 0019F30019B3001DB7001DB7001DB7001DB7000F1E000F1E000F1E0013127F9116>I<7F
411 1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E00001E00001F00003B80007
412 3C00071C000E0E007F1FC0FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1FC01C0700
413 0E07000E0E000E0E00070E00071C00071C00039C00039C0003980001B80001B80000F000
414 00F00000F00000E00000E00000E00001C00079C0007BC0007F80003F00003C0000131B7F
415 9116>I<3FFFC07FFFC07FFFC0700780700F00701E00003C0000780001F00003E0000780
416 000F00001E01C03C01C07801C0FFFFC0FFFFC0FFFFC012127F9116>I
417 E /Ff 2 13 df<0007E00000003838000000E00C004001C00E0040038007008007000780
418 800F000780801E000381003E0003C1003C0003C2007C0003C2007C0003C400F80003C400
419 F80003C800F80003D000F80003D000F80003E000F00003C000F00003C000F00003C00078
420 0003C00078000FC000380011C1001C0061C2000E0380E60001FC003800221A7E9926>11
421 D<000003F80000000C0C0000003006000000400700000080038000010003800002000380
422 000400038000040007800008000780000800078000100007000010000F000020000E0000
423 20001C00002000380000403FF000004040E00000403F300000400038000080001C000080
424 001E000080001E000080001E000100001F000100001F000100001F000100001F00020000
425 3E000200003E000200003E000200003C000600007C000600007800060000F800060000F0
426 00090001E000090003C000088007800008400E000010303C0000100FE000001000000000
427 100000000020000000002000000000200000000020000000004000000000400000000040
428 0000000040000000008000000000800000000021367FA922>I E
429 /Fg 37 122 df<00FCF807839C0E079C1C07081C07001C07001C07001C07001C0700FFFF
430 E01C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07
431 00FF1FE01617809615>11 D<60C0F1E0F1E070E01020102020402040408040800B0A7F96
432 12>34 D<0102040C1818303070606060E0E0E0E0E0E0E0E0E0E060606070303018180C04
433 020108227D980E>40 D<8040203018180C0C0E060606070707070707070707070606060E
434 0C0C18183020408008227E980E>I<60F0F070101020204040040A7D830A>44
435 D<FF80FF80090280870C>I<60F0F06004047D830A>I<001000003800003800003800005C
436 00005C00005C00008E00008E00008E0001070001070003078002038002038007FFC00401
437 C00401C00800E00800E01800E03800F0FE03FE17177F961A>65 D<FFE00E000E000E000E
438 000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FF
439 E00B177F960D>73 D<FE0003F81E0003C0170005C0170005C0170005C0138009C0138009
440 C011C011C011C011C011C011C010E021C010E021C0107041C0107041C0107041C0103881
441 C0103881C0101D01C0101D01C0100E01C0100E01C0380E01C0FE040FF81D177F9620>77
442 D<0FC4302C601C400CC004C004C004E00070007F003FE00FF801FC001C000E0006800680
443 068006C004E008D81087E00F177E9614>83 D<7FFFF86038184038084038088038048038
444 048038040038000038000038000038000038000038000038000038000038000038000038
445 0000380000380000380000380007FFC016177F9619>I<204020404080408081008100E1
446 C0F1E0F1E060C00B0A7B9612>92 D<1FC0386038301038003803F81E3830387038E039E0
447 39E07970FF1F1E100E7F8D12>97 D<FC00001C00001C00001C00001C00001C00001C0000
448 1C00001C00001CF8001F06001C03001C03801C01801C01C01C01C01C01C01C01C01C0180
449 1C03801C03001B0E0010F8001217809614>I<07F01838303870106000E000E000E000E0
450 00600070083008183007C00D0E7F8D10>I<007E00000E00000E00000E00000E00000E00
451 000E00000E00000E0007CE001C3E00300E00700E00600E00E00E00E00E00E00E00E00E00
452 600E00700E00301E00182E0007CFC012177F9614>I<0FC0186030307038E018FFF8E000
453 E000E000600070083010183007C00D0E7F8D10>I<03E006700E701C201C001C001C001C
454 001C00FF801C001C001C001C001C001C001C001C001C001C001C001C00FF800C1780960B
455 >I<0F9E18E33060707070707070306018C02F80200060003FE03FF83FFC600EC006C006
456 C006600C38380FE010157F8D12>I<FC00001C00001C00001C00001C00001C00001C0000
457 1C00001C00001C7C001D8E001E07001C07001C07001C07001C07001C07001C07001C0700
458 1C07001C07001C0700FF9FE01317809614>I<183C3C1800000000007C1C1C1C1C1C1C1C
459 1C1C1C1C1CFF081780960A>I<FC00001C00001C00001C00001C00001C00001C00001C00
460 001C00001C3F801C1C001C18001C20001C40001CC0001FE0001CF0001C70001C78001C3C
461 001C1E001C1E00FF3FC01217809613>107 D<FC001C001C001C001C001C001C001C001C
462 001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091780960A>I<
463 FC7C1F001D8E63801E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0
464 1C0701C01C0701C01C0701C01C0701C0FF9FE7F81D0E808D1E>I<FC7C001D8E001E0700
465 1C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF9FE0130E80
466 8D14>I<07C018303018600C600CE00EE00EE00EE00EE00E701C3018183007C00F0E7F8D
467 12>I<FCF8001F0E001C03001C03801C01801C01C01C01C01C01C01C01C01C01801C0380
468 1C07001F0E001CF8001C00001C00001C00001C00001C0000FF80001214808D14>I<07C2
469 001C2600381E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E001C2E
470 0007CE00000E00000E00000E00000E00000E00007FC012147F8D13>I<FCF01D381E381C
471 101C001C001C001C001C001C001C001C001C00FF800D0E808D0E>I<1F4060C0C040C040
472 E000FF007F801FC001E080608060C060E0C09F000B0E7F8D0E>I<080008000800180018
473 003800FF80380038003800380038003800380038403840384038401C800F000A147F930E
474 >I<FC3F001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C
475 0F000E170003E7E0130E808D14>I<FE1F3C0E3C0C1C081C080E100E100720072003C003
476 C003C001800180100E7F8D13>I<FCFE7C3838383838101C3C201C3C201C4C200E4E400E
477 4E400E8640078780078780070380030300030300160E7F8D19>I<FE3F3C181C100E2007
478 4007C0038001C002E004F008701838383CFC7F100E7F8D13>I<FE1F3C0E3C0C1C081C08
479 0E100E100720072003C003C003C00180018001000100E200E200A400780010147F8D13>
480 I E /Fh 4 53 df<0C003C00CC000C000C000C000C000C000C000C000C000C000C000C00
481 0C00FF8009107E8F0F>49 D<1F00618040C08060C0600060006000C00180030006000C00
482 102020207FC0FFC00B107F8F0F>I<1F00218060C060C000C0008001800F000080004000
483 60C060C060804060801F000B107F8F0F>I<0300030007000F000B001300330023004300
484 C300FFE003000300030003001FE00B107F8F0F>I E /Fi 4 53 df<0C001C00EC000C00
485 0C000C000C000C000C000C000C000C000C000C000C000C000C000C00FFC00A137D9211>
486 49 D<1F0060C06060F070F030603000700070006000C001C00180020004000810101020
487 207FE0FFE00C137E9211>I<0FC030707038703870380038003000E00FC0007000380018
488 001C601CF01CF018E03860701FC00E137F9211>I<006000E000E00160026006600C6008
489 60106020606060C060FFFC0060006000600060006003FC0E137F9211>I
490 E /Fj 19 123 df<000FE0200070186001C00460030003E0060001E00E0000E01C000060
491 38000060380000207800002070000020F0000000F0000000F0000000F0000000F0000000
492 F0000000F0000000F0000000700000207800002038000020380000201C0000400E000040
493 060000800300010001C0060000701800000FE0001B1E7D9C21>67
494 D<FFF00FF80F0007C00F0003000F0002000F0004000F0008000F0010000F0060000F0080
495 000F0100000F0200000F0700000F0F80000F1780000F23C0000F43E0000F81E0000F00F0
496 000F00F8000F0078000F003C000F001E000F001F000F000F000F0007800F0007C00F0007
497 E0FFF03FFC1E1C7D9B23>75 D<FFFFE0000F0078000F001C000F000E000F0007000F0007
498 800F0007800F0007800F0007800F0007800F0007000F000E000F001C000F0078000FFFE0
499 000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
500 000F0000000F0000000F000000FFF00000191C7D9B1F>80 D<7FFFFFC0700F01C0600F00
501 C0400F0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F00
502 00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
503 00000F0000000F0000000F0000000F0000000F0000001F800003FFFC001B1C7D9B21>84
504 D<7FFFFC7C00787000786000F06001E04001E04003C0400780400780000F00001E00001E
505 00003C0000780000780000F00001E00001E00403C0040780040780040F000C1E00081E00
506 083C00187800387800F8FFFFF8161C7D9B1C>90 D<00200000700000700000700000B800
507 00B80000B800011C00011C00011C00020E00020E0004070004070007FF00080380080380
508 0803801801C03803C0FE0FF815157F9419>97 D<FFFF801C03801C00801C00801C00401C
509 00401C10401C10001C10001C30001FF0001C30001C10001C10201C10201C00201C00601C
510 00401C00C01C01C0FFFFC013157F9417>101 D<00FC200782600E01E01C00E038006078
511 0020700020F00020F00000F00000F00000F00FF8F000E0F000E07000E07800E03800E01C
512 00E00E00E007836000FC2015157E941B>103 D<FF8FF81C01C01C01C01C01C01C01C01C
513 01C01C01C01C01C01C01C01C01C01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C
514 01C01C01C01C01C0FF8FF815157F9419>I<FF801C001C001C001C001C001C001C001C00
515 1C001C001C001C001C001C001C001C001C001C001C00FF8009157F940D>I<FF83F81C01
516 E01C01801C01001C02001C04001C08001C10001C30001C70001CB8001D1C001E1C001C0E
517 001C07001C07801C03801C01C01C01E01C01F0FF83FC16157F941A>107
518 D<FC03F81E00E01E004017004013804013C04011C04010E040107040107040103840101C
519 40101C40100E401007401007C01003C01001C01000C03800C0FE004015157F9419>110
520 D<01F800070E000C03001C03803801C07801E07000E0F000F0F000F0F000F0F000F0F000
521 F0F000F0F000F07000E07801E03801C01C03801E0780070E0001F80014157E941A>I<FF
522 F8001C0E001C07801C03801C03C01C03C01C03C01C03801C07801C0E001FF8001C1C001C
523 0E001C07001C07001C07001C07801C07841C07C41C03CCFF80F816157F9419>114
524 D<FF83F81C00E01C00401C00401C00401C00401C00401C00401C00401C00401C00401C00
525 401C00401C00401C00401C00400C00C00E008006010003860000FC0015157F9419>117
526 D<FF0FF87E3C01E03C3801C0181C02E0101C02E0101C02E0100E0470200E0470200E0470
527 2007083840070838400708384003901C8003901C8003901C8001E00F0001E00F0001E00F
528 0000C0060000C0060000C006001F157F9423>119 D<FF87F01E03800E03000F02000704
529 0003840003C80001D00000F00000F00000700000780000BC00011C00010E00020F000407
530 000403800C03C03C03C0FE07F815157F9419>I<FF80FE1E00780E00200F004007004003
531 808003C18001C10000E20000E200007400007C0000380000380000380000380000380000
532 380000380000380001FF001715809419>I<FFFEF01CC01CC0388038807080E000E001C0
533 01C00380070007000E020E021C02380238067006701EFFFE0F157E9415>I
534 E /Fk 3 16 df<FFFFFF80FFFFFF8019027D8A20>0 D<01800180018001804182F18F39
535 9C0FF003C003C00FF0399CF18F4182018001800180018010127E9215>3
536 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C010107E
537 9115>15 D E /Fl 60 123 df<0001FC3C00060E67000C0EC7001C0DC6001C01C0003801
538 C0003803800038038000380380003803800070038007FFFFF80070070000700700007007
539 0000E0070000E00E0000E00E0000E00E0000E00E0001C00E0001C01C0001C01C0001C01C
540 0001C01C0003801C00038038000380380003803800030038000700300007007000060060
541 00C6606000E470C000C8618000703E00002025819C19>11 D<0001FC000703000C03001C
542 07001C0300180000380000380000380000380000700007FFFC00701C00701C00701C00E0
543 3800E03800E03800E03800E07001C07001C07001C07001C0E201C0E201C0E20380E40380
544 64038038038000030000070000060000C60000E40000CC00007000001825819C17>I<E0
545 E0E070301018080508749C15>18 D<03070E1C3860C0800808729C15>I<183C3C3C0404
546 080810204080060C779C0D>39 D<00030006000800180030006000C000C0018003000300
547 060006000C000C001C0018001800380030003000700070006000600060006000E000E000
548 E000E000E0006000600060006000600020003000100008000800102A7B9E11>I<001000
549 100008000C00040006000600060006000600070007000700070007000600060006000600
550 0E000E000C000C001C001800180038003000300060006000C000C001800300030006000C
551 00180010006000C000102A809E11>I<183878380808101020404080050C7D830D>44
552 D<FFC0FFC0FFC00A037D890F>I<3078F06005047C830D>I<003C0000C600018300030300
553 0603000603800E03800C03801C03801C0300380700380700380700380700700E00700E00
554 700E00700E00E01C00E01C00E01C00E03800E03800E03000C06000E0600060C000718000
555 1E0000111D7B9B15>48 D<00020006000C001C007C039C00380038003800380070007000
556 70007000E000E000E000E001C001C001C001C003800380038003800780FFF00F1C7C9B15
557 >I<003E0000C1800101800200C00400C00440C00841C00841C00841C008838007038000
558 0700000E0001F800003800000C00000C00000E00000E00000E00000E00700E00E01C0080
559 1C0080380080300040600021C0001F0000121D7C9B15>51 D<001E000061000081800180
560 800300C00300C006018006018006018007030007860003CC0003F00001F000037800063C
561 00081E00180E00300E00600600600600600600C00C00C00C00C0180060100060200030C0
562 000F0000121D7C9B15>56 D<003C0000C6000183000303000603000E03000C03801C0380
563 1C03001C0300380700380700380700380F00380E00181E00181E000C6C00079C00001C00
564 001800003800003000006000E0C000E0C0008180008600007C0000111D7B9B15>I<060F
565 0F06000000000000000000003078F06008127C910D>I<00001800000018000000380000
566 00380000007800000078000000B8000001B800000138000002380000023C0000041C0000
567 041C0000081C0000181C0000101C0000201C0000201C00007FFC0000401C0000801C0001
568 801C0001001C0002001C0002001C0004000E000C000E001C001E00FF00FFC01A1D7E9C1F
569 >65 D<01FFFE00003C0780003803C0003801C0003801C0003801C0007001C0007003C000
570 7003C00070078000E0070000E00E0000E03C0000FFF80001C01C0001C00E0001C00F0001
571 C00F0003800F0003800F0003800F0003800F0007001E0007001C0007003C00070078000E
572 01E000FFFF80001A1C7D9B1D>I<0003F020001E0C60003002E000E003C001C001C00380
573 01C0070000C00E0000801E0000801C0000803C0000803C00000078000000780000007800
574 0000F0000000F0000000F0000000F0000000F0000400F0000400F0000400F00008007000
575 08007000100038002000180040000C0180000706000001F800001B1E7A9C1E>I<01FFFE
576 00003C0780003801C0003801C0003800E0003800E0007000F00070007000700070007000
577 F000E000F000E000F000E000F000E000F001C001E001C001E001C001E001C001C0038003
578 C003800380038007800380070007000E0007001C0007003800070070000E01C000FFFF00
579 001C1C7D9B1F>I<01FFFFE0003C00E00038006000380040003800400038004000700040
580 00700040007020400070200000E0400000E0400000E0C00000FFC00001C0800001C08000
581 01C0800001C0800003810100038001000380020003800200070004000700040007000C00
582 070018000E007800FFFFF0001B1C7D9B1C>I<01FFFFC0003C01C0003800C00038008000
583 380080003800800070008000700080007020800070200000E0400000E0400000E0C00000
584 FFC00001C0800001C0800001C0800001C080000381000003800000038000000380000007
585 0000000700000007000000070000000F000000FFF000001A1C7D9B1B>I<01FFCFFE003C
586 01E0003801C0003801C0003801C0003801C00070038000700380007003800070038000E0
587 070000E0070000E0070000FFFF0001C00E0001C00E0001C00E0001C00E0003801C000380
588 1C0003801C0003801C00070038000700380007003800070038000F007800FFE7FF001F1C
589 7D9B1F>72 D<01FFC0003C00003800003800003800003800007000007000007000007000
590 00E00000E00000E00000E00001C00001C00001C00001C000038000038000038000038000
591 0700000700000700000700000F0000FFE000121C7E9B10>I<007FF00007800007000007
592 00000700000700000E00000E00000E00000E00001C00001C00001C00001C000038000038
593 0000380000380000700000700000700000700060E000E0E000C0C00081C0008380004700
594 003C0000141D7B9B16>I<01FFE0003C0000380000380000380000380000700000700000
595 700000700000E00000E00000E00000E00001C00001C00001C00001C00003800803800803
596 80080380100700100700300700600700E00E03C0FFFFC0151C7D9B1A>76
597 D<01FE0007F8003E000780002E000F00002E001700002E001700002E002700004E002E00
598 004E004E00004E004E00004E008E00008E011C00008E011C00008E021C00008E021C0001
599 070438000107043800010708380001071038000207107000020720700002072070000207
600 407000040740E000040780E000040700E0000C0700E0001C0601E000FF861FFC00251C7D
601 9B25>I<01FC03FE001C0070003C0060002E0040002E0040002E00400047008000470080
602 00470080004380800083810000838100008181000081C1000101C2000101C2000100E200
603 0100E2000200E4000200740002007400020074000400380004003800040038000C001800
604 1C001000FF8010001F1C7D9B1F>I<0007F000001C1C0000700E0000E0070001C0038003
605 800380070003800E0003C01E0003C01C0003C03C0003C03C0003C0780003C0780003C078
606 0003C0F0000780F0000780F0000780F0000F00F0000F00F0000E00F0001E00F0003C0070
607 003800700070007800E0003801C0001C0380000E0E000003F800001A1E7A9C20>I<01FF
608 FC00003C070000380380003801C0003801C0003801C0007003C0007003C0007003C00070
609 038000E0078000E0070000E00E0000E0380001FFE00001C0000001C0000001C000000380
610 0000038000000380000003800000070000000700000007000000070000000F000000FFE0
611 00001A1C7D9B1C>I<01FFF800003C0E0000380700003803800038038000380380007007
612 80007007800070078000700F0000E00E0000E01C0000E0700000FFC00001C0C00001C060
613 0001C0700001C07000038070000380700003807000038070000700F0000700F0400700F0
614 400700F0800F007880FFE0790000001E001A1D7D9B1E>82 D<000F8400304C00403C0080
615 1801001803001803001806001006001006000007000007000003E00003FC0001FF00007F
616 800007C00001C00001C00000C00000C02000C02000C0600180600180600300600200F004
617 00CC180083E000161E7D9C17>I<1FFFFFC01C0701C0300E00C0200E0080600E0080400E
618 0080401C0080801C0080801C0080001C0000003800000038000000380000003800000070
619 000000700000007000000070000000E0000000E0000000E0000000E0000001C0000001C0
620 000001C0000001C0000003C000007FFE00001A1C799B1E>I<FF83FF0FF03C007001C038
621 007001803800F001003800F0020038017002003801700400380270040038027008001C04
622 7008001C047010001C087010001C087020001C107020001C107040001C207040001C2070
623 80001C407180001C407100001C807200001D807200001D007400001E007400001E007800
624 001C007800001C00700000180070000018006000001000600000241D779B29>87
625 D<FFC00FE00E0007800E0006000F00040007000800070018000780100003802000038040
626 0003C0800001C1800001C1000001E2000000E4000000EC000000F8000000700000007000
627 0000E0000000E0000000E0000000E0000001C0000001C0000001C0000001C00000038000
628 003FF800001B1C789B1F>89 D<03CC063C0C3C181C3838303870387038E070E070E070E0
629 70E0E2C0E2C0E261E462643C380F127B9115>97 D<3F00070007000E000E000E000E001C
630 001C001C001C0039C03E60383038307038703870387038E070E070E070E060E0E0C0C0C1
631 C0618063003C000D1D7B9C13>I<01F007080C08181C3838300070007000E000E000E000
632 E000E000E008E010602030C01F000E127B9113>I<001F80000380000380000700000700
633 000700000700000E00000E00000E00000E0003DC00063C000C3C00181C00383800303800
634 703800703800E07000E07000E07000E07000E0E200C0E200C0E20061E4006264003C3800
635 111D7B9C15>I<01E007100C1018083810701070607F80E000E000E000E000E000E00860
636 10602030C01F000D127B9113>I<0003C0000670000C70001C60001C00001C0000380000
637 380000380000380000380003FF8000700000700000700000700000700000E00000E00000
638 E00000E00000E00001C00001C00001C00001C00001C00003800003800003800003000003
639 0000070000C60000E60000CC00007800001425819C0D>I<00F3018F030F06070E0E0C0E
640 1C0E1C0E381C381C381C381C383830383038187818F00F700070007000E000E0C0C0E1C0
641 C3007E00101A7D9113>I<0FC00001C00001C00003800003800003800003800007000007
642 00000700000700000E78000E8C000F0E000E0E001C0E001C0E001C0E001C0E00381C0038
643 1C00381C00383800703880703880707080707100E03200601C00111D7D9C15>I<018003
644 80010000000000000000000000000000001C002600470047008E008E000E001C001C001C
645 0038003800710071007100720072003C00091C7C9B0D>I<0FC00001C00001C000038000
646 0380000380000380000700000700000700000700000E0F000E11000E23800E43801C8300
647 1C80001D00001E00003F800039C00038E00038E00070E20070E20070E20070E400E06400
648 603800111D7D9C13>107 D<1F800380038007000700070007000E000E000E000E001C00
649 1C001C001C0038003800380038007000700070007000E400E400E400E40068003800091D
650 7C9C0B>I<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380
651 E01C0701C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C03
652 20300C01C01D127C9122>I<3C3C002646004687004707008E07008E07000E07000E0700
653 1C0E001C0E001C0E001C1C00381C40381C40383840383880701900300E0012127C9117>
654 I<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030E06060C031801E
655 000F127B9115>I<07870004D98008E0C008E0C011C0E011C0E001C0E001C0E00381C003
656 81C00381C00381800703800703000707000706000E8C000E70000E00000E00001C00001C
657 00001C00001C00003C0000FF8000131A7F9115>I<03C4062C0C3C181C38383038703870
658 38E070E070E070E070E0E0C0E0C0E061E063C03DC001C001C0038003800380038007803F
659 F00E1A7B9113>I<3C3C26C2468747078E068E000E000E001C001C001C001C0038003800
660 380038007000300010127C9112>I<01F006080C080C1C18181C001F001FC00FF007F000
661 7800386030E030C030806060C01F000E127D9111>I<00C001C001C001C0038003800380
662 0380FFE00700070007000E000E000E000E001C001C001C001C0038403840384038801900
663 0E000B1A7D990E>I<1E0300270700470700470700870E00870E000E0E000E0E001C1C00
664 1C1C001C1C001C1C003838803838801838801839001C5900078E0011127C9116>I<1E06
665 270E470E4706870287020E020E021C041C041C041C0818083808181018200C4007800F12
666 7C9113>I<1E01832703874703874703838707018707010E07010E07011C0E021C0E021C
667 0E021C0E04180C04181C04181C081C1C100C263007C3C018127C911C>I<070E00199100
668 10E38020E38041C30041C00001C00001C000038000038000038000038000070200670200
669 E70400CB04008B080070F00011127D9113>I<1E03270747074707870E870E0E0E0E0E1C
670 1C1C1C1C1C1C1C38383838183818381C7007F00070007000E0E0C0E1C0818047003C0010
671 1A7C9114>I<038207C20FEC083810080010002000400080010002000400080810083830
672 67F043E081C00F127D9111>I E /Fm 5 111 df<00F000030C000E06041C070438070830
673 0708700790700790E003A0E003A0E003C0E00380E00380E00380600780601B883061900F
674 80E016127E911B>11 D<0001F000061800080C00100C00200E00400E00800E00801C0100
675 1C010018010038020FF00210C0020FE00200300400300400300400380400380800700800
676 700800700800E01800E01800C0140180140300230E0020F8002000002000004000004000
677 0040000040000080000080000017257F9C17>I<60F0F06004047C830C>58
678 D<0007E00000E00000E00001C00001C00001C00001C000038000038000038000038001E7
679 000717000C0F00180F00380E00300E00700E00700E00E01C00E01C00E01C00E01C00E038
680 80E03880E038806078803199001E0E00131D7E9C16>100 D<381F004E61804681C04701
681 C08F01C08E01C00E01C00E01C01C03801C03801C03801C0700380710380710380E10380E
682 2070064030038014127E9119>110 D E /Fn 84 128 df<007E1F0001C1B1800303E3C0
683 0703C3C00E03C1800E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC00
684 0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000
685 0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F87FC001A1D809C
686 18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E00000E00
687 00FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
688 C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C007
689 03C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E
690 01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
691 01C07FCFF8151D809C17>I<003F07E00001C09C18000380F018000701F03C000E01E03C
692 000E00E018000E00E000000E00E000000E00E000000E00E000000E00E00000FFFFFFFC00
693 0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E
694 00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00
695 E01C000E00E01C007FC7FCFF80211D809C23>I<1C1C3C3870C0800607779C15>19
696 D<6060F0F0F8F86868080808080808101010102020404080800D0C7F9C15>34
697 D<0F0000C0188000C030600380703807006027FB00E0100600E0100C00E0100C00E01018
698 00E0101800E0103000E0106000602060007020C00030418000188180000F0303C0000606
699 2000060C10000C1C08001818080018380400303804006038040060380400C0380400C038
700 04018038040300180803001C0806000C100C000620040003C01E217E9E23>37
701 D<60F0F8680808081010204080050C7C9C0C>39 D<004000800100020006000C000C0018
702 001800300030007000600060006000E000E000E000E000E000E000E000E000E000E000E0
703 00E000600060006000700030003000180018000C000C00060002000100008000400A2A7D
704 9E10>I<800040002000100018000C000C000600060003000300038001800180018001C0
705 01C001C001C001C001C001C001C001C001C001C001C00180018001800380030003000600
706 06000C000C00180010002000400080000A2A7E9E10>I<00060000000600000006000000
707 060000000600000006000000060000000600000006000000060000000600000006000000
708 060000FFFFFFE0FFFFFFE000060000000600000006000000060000000600000006000000
709 0600000006000000060000000600000006000000060000000600001B1C7E9720>43
710 D<60F0F0701010101020204080040C7C830C>I<FFE0FFE00B0280890E>I<60F0F0600404
711 7C830C>I<00010003000600060006000C000C000C001800180018003000300030006000
712 6000C000C000C0018001800180030003000300060006000C000C000C0018001800180030
713 0030003000600060006000C000C00010297E9E15>I<03C00C301818300C300C700E6006
714 6006E007E007E007E007E007E007E007E007E007E007E007E007E00760066006700E300C
715 300C18180C3007E0101D7E9B15>I<030007003F00C70007000700070007000700070007
716 000700070007000700070007000700070007000700070007000700070007000F80FFF80D
717 1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C
718 00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07E018
719 30201C201C781E780E781E381E001C001C00180030006007E00030001C001C000E000F00
720 0F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15>I<000C00000C00001C0000
721 3C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C0030
722 1C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C00001C0001
723 FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E02430281830
724 1C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D7E9B15
725 >I<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007
726 E007E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<4000007FFF
727 807FFF007FFF0040020080040080040080080000100000100000200000600000400000C0
728 0000C00001C0000180000180000380000380000380000380000780000780000780000780
729 00078000078000030000111D7E9B15>I<03E00C301008200C2006600660066006700678
730 0C3E083FB01FE007F007F818FC307E601E600FC007C003C003C003C00360026004300C1C
731 1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007E007
732 6007700F300F18170C2707C700060006000E300C780C78187010203030C00F80101D7E9B
733 15>I<60F0F0600000000000000000000060F0F06004127C910C>I<60F0F0600000000000
734 000000000060F0F0701010101020204080041A7C910C>I<7FFFFFC0FFFFFFE000000000
735 00000000000000000000000000000000000000000000000000000000FFFFFFE07FFFFFC0
736 1B0C7E8F20>61 D<0FE03038401CE00EF00EF00EF00E000C001C0030006000C000800180
737 0100010001000100010001000000000000000000000003000780078003000F1D7E9C14>
738 63 D<000600000006000000060000000F0000000F0000000F0000001780000017800000
739 1780000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F00001
740 80F8000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C
741 001F001E001F00FF80FFF01C1D7F9C1F>65 D<FFFFC00F00F00F00380F003C0F001C0F00
742 1E0F001E0F001E0F001E0F001C0F003C0F00780F01F00FFFE00F00780F003C0F001E0F00
743 0E0F000F0F000F0F000F0F000F0F000F0F001E0F001E0F003C0F0078FFFFE0181C7E9B1D
744 >I<001F808000E0618001801980070007800E0003801C0003801C000180380001807800
745 00807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F000
746 0000F0000000700000807800008078000080380000801C0001001C0001000E0002000700
747 04000180080000E03000001FC000191E7E9C1E>I<FFFFC0000F00F0000F003C000F000E
748 000F0007000F0007000F0003800F0003C00F0001C00F0001C00F0001E00F0001E00F0001
749 E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C00F0003C00F0003
750 800F0007800F0007000F000E000F001C000F007000FFFFC0001B1C7E9B20>I<FFFFFC0F
751 003C0F000C0F00040F00040F00060F00020F00020F02020F02000F02000F02000F06000F
752 FE000F06000F02000F02000F02000F02010F00010F00020F00020F00020F00060F00060F
753 000C0F003CFFFFFC181C7E9B1C>I<FFFFF80F00780F00180F00080F00080F000C0F0004
754 0F00040F02040F02000F02000F02000F06000FFE000F06000F02000F02000F02000F0200
755 0F00000F00000F00000F00000F00000F00000F00000F8000FFF800161C7E9B1B>I<001F
756 808000E0618001801980070007800E0003801C0003801C00018038000180780000807800
757 008070000080F0000000F0000000F0000000F0000000F0000000F0000000F000FFF0F000
758 0F80700007807800078078000780380007801C0007801C0007800E00078007000B800180
759 118000E06080001F80001C1E7E9C21>I<FFF3FFC00F003C000F003C000F003C000F003C
760 000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC
761 000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
762 000F003C000F003C000F003C000F003C00FFF3FFC01A1C7E9B1F>I<FFF00F000F000F00
763 0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
764 0F000F000F000F000F00FFF00C1C7F9B0F>I<1FFF00F800780078007800780078007800
765 780078007800780078007800780078007800780078007800787078F878F878F878F0F040
766 E021C01F00101D7F9B15>I<FFF03FE00F000F000F000C000F0008000F0010000F002000
767 0F0040000F0080000F0100000F0200000F0400000F0E00000F1F00000F2F00000F278000
768 0F4780000F83C0000F01E0000F01E0000F00F0000F00F8000F0078000F003C000F003C00
769 0F001E000F001F000F001F80FFF07FF01C1C7E9B20>I<FFF8000F80000F00000F00000F
770 00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
771 00000F00000F00080F00080F00080F00180F00180F00100F00300F00700F01F0FFFFF015
772 1C7E9B1A>I<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC0017800
773 09E002780009E002780008F004780008F004780008F00478000878087800087808780008
774 78087800083C107800083C107800083C107800081E207800081E207800081E207800080F
775 407800080F40780008078078000807807800080780780008030078001C03007800FF8307
776 FF80211C7E9B26>I<FF007FC00F800E000F8004000BC0040009E0040009E0040008F004
777 0008F8040008780400083C0400083C0400081E0400080F0400080F0400080784000807C4
778 000803C4000801E4000801E4000800F40008007C0008007C0008003C0008003C0008001C
779 0008000C001C000C00FF8004001A1C7E9B1F>I<003F800000E0E0000380380007001C00
780 0E000E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0
781 F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0
782 380003803C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C
783 20>I<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C
784 0F003C0F00780F00E00FFF800F00000F00000F00000F00000F00000F00000F00000F0000
785 0F00000F00000F00000F0000FFF000171C7E9B1C>I<003F800000E0E000038038000700
786 1C000E000E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F000
787 01E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C07800
788 03C0380003803C0E07801C1107000E208E0007205C0003A0780000F0E020003FE0200000
789 602000003060000038E000003FC000003FC000001F8000000F001B257E9C20>I<FFFF00
790 000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E000F001C
791 000F003C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F0078000F0078
792 000F0078000F0078000F0078000F0078000F0078100F0078100F0038100F003C20FFF01C
793 20000007C01C1D7E9B1F>I<07E0801C1980300580700380600180E00180E00080E00080
794 E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C0
795 0001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>
796 I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F00
797 20000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
798 00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F80
799 0003FFFC001B1C7F9B1E>I<FFF07FC00F000E000F0004000F0004000F0004000F000400
800 0F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F000400
801 0F0004000F0004000F0004000F0004000F0004000F0004000F0004000700080007800800
802 038010000180100000C020000070C000001F00001A1D7E9B1F>I<FFE00FF01F0003C00F
803 0001800F0001000F800300078002000780020003C0040003C0040003C0040001E0080001
804 E0080001F0080000F0100000F0100000F830000078200000782000003C4000003C400000
805 3C4000001E8000001E8000001F8000000F0000000F00000006000000060000000600001C
806 1D7F9B1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F001F0010
807 07801F00200780278020078027802003C027804003C043C04003C043C04003E043C04001
808 E081E08001E081E08001E081E08000F100F10000F100F10000F100F100007900FA00007A
809 007A00007A007A00003E007C00003C003C00003C003C00003C003C000018001800001800
810 18000018001800281D7F9B2B>I<FFF007FC0F8001E00780008007C0018003C0010003E0
811 020001F0020000F0040000F8040000780800007C1800003C1000001E2000001F2000000F
812 4000000FC000000780000007800000078000000780000007800000078000000780000007
813 8000000780000007800000078000007FF8001E1C809B1F>89 D<FEFEC0C0C0C0C0C0C0C0
814 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07297C9E0C
815 >91 D<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>I<FEFE
816 060606060606060606060606060606060606060606060606060606060606060606060606
817 06FEFE0729809E0C>I<1FC000307000783800781C00301C00001C00001C0001FC000F1C
818 00381C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E9115>97
819 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C
820 001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C00
821 C01C01C01C01801E030019060010F800131D7F9C17>I<07E00C301878307870306000E0
822 00E000E000E000E000E00060007004300418080C3007C00E127E9112>I<003F00000700
823 00070000070000070000070000070000070000070000070000070003E7000C1700180F00
824 300700700700600700E00700E00700E00700E00700E00700E00700600700700700300700
825 180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000
826 E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E
827 000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E
828 000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C
829 00381C00381C001818001C38000C300013C0001000003000001800001FF8001FFF001FFF
830 803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215>I<FC
831 00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C001C
832 87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
833 03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C00180000000000000000
834 00000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C
835 001C001C00FF80091D7F9C0C>I<00C001E001E000C00000000000000000000000000000
836 0FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
837 00E000E000E060E0F0C0F1C061803E000B25839C0D>I<FC00001C00001C00001C00001C
838 00001C00001C00001C00001C00001C00001C00001C3FC01C0F001C0C001C08001C10001C
839 20001C40001CE0001DE0001E70001C78001C38001C3C001C1C001C0E001C0F001C0F80FF
840 9FE0131D7F9C16>I<FC001C001C001C001C001C001C001C001C001C001C001C001C001C
841 001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C
842 >I<FC7E07E0001C838838001D019018001E01E01C001C01C01C001C01C01C001C01C01C
843 001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00
844 1C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<FC7C001C87001D0300
845 1E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
846 1C03801C0380FF9FF014127F9117>I<03F0000E1C00180600300300700380600180E001
847 C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F0001212
848 7F9115>I<FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C
849 00E01C00E01C01C01C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C
850 00001C00001C0000FF8000131A7F9117>I<03C1000C3300180B00300F00700700700700
851 E00700E00700E00700E00700E00700E00700600700700700300F00180F000C370007C700
852 000700000700000700000700000700000700000700003FE0131A7E9116>I<FCE01D301E
853 781E781C301C001C001C001C001C001C001C001C001C001C001C001C00FFC00D127F9110
854 >I<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D060
855 8FC00D127F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C
856 001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910>I<FC1F801C
857 03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
858 03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C01001C01000E0200
859 0E020007040007040007040003880003880003D80001D00001D00000E00000E00000E000
860 00400013127F9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B
861 82000E1182000711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C0
862 700001803000008020001B127F911E>I<7F8FF00F03800F030007020003840001C80001
863 D80000F00000700000780000F800009C00010E00020E000607000403801E07C0FF0FF815
864 12809116>I<FF07E03C03801C01001C01000E02000E0200070400070400070400038800
865 03880003D80001D00001D00000E00000E00000E000004000004000008000008000F08000
866 F10000F300006600003C0000131A7F9116>I<7FFC70386038407040F040E041C003C003
867 8007000F040E041C043C0C380870087038FFF80E127F9112>I<FFFFF01401808B15>I<60
868 60F0F0F0F060600C047C9C15>127 D E /Fo 38 121 df<000E00001E00007E0007FE00
869 FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
870 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
871 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277B
872 A622>49 D<00FF800003FFF0000FFFFC001F03FE003800FF007C007F80FE003FC0FF003F
873 C0FF003FE0FF001FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F
874 8000007F000000FE000000FC000001F8000003F0000003E00000078000000F0000001E00
875 00003C00E0007000E000E000E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFF
876 C07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC00
877 0F81FE001F00FF003F80FF003F807F803F807F803F807F801F807F800F007F800000FF00
878 0000FF000000FE000001FC000001F8000007F00000FFC00000FFF0000001FC0000007E00
879 00007F0000007F8000003FC000003FC000003FE000003FE03C003FE07E003FE0FF003FE0
880 FF003FE0FF003FC0FF007FC07E007F807C007F003F01FE001FFFFC0007FFF00000FF8000
881 1B277DA622>I<00000E0000001E0000003E0000007E000000FE000000FE000001FE0000
882 03FE0000077E00000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001
883 C07E0003807E0007007E000E007E000E007E001C007E0038007E0070007E00E0007E00FF
884 FFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000FE0000
885 00FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622>I<0C0003000F803F000FFF
886 FE000FFFFC000FFFF8000FFFF0000FFFE0000FFFC0000FFE00000E0000000E0000000E00
887 00000E0000000E0000000E0000000E7FC0000FFFF8000F80FC000E003E000C003F000000
888 1F8000001FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE00
889 1FE0FE001FC0FC001FC078003F8078003F803C007F001F01FE000FFFF80003FFF00000FF
890 80001B277DA622>I<0007F000003FFC0000FFFE0001FC0F0003F01F8007E03F800FC03F
891 801FC03F801F803F803F801F003F8000007F0000007F0000007F000000FF000000FF0FC0
892 00FF3FF800FF707C00FFC03E00FFC03F00FF801F80FF801FC0FF001FC0FF001FE0FF001F
893 E0FF001FE07F001FE07F001FE07F001FE07F001FE03F001FE03F001FC01F801FC01F803F
894 800FC03F0007E07E0003FFFC0000FFF000003FC0001B277DA622>I<0000038000000000
895 07C00000000007C0000000000FE0000000000FE0000000000FE0000000001FF000000000
896 1FF0000000003FF8000000003FF8000000003FF80000000073FC0000000073FC00000000
897 F3FE00000000E1FE00000000E1FE00000001C0FF00000001C0FF00000003C0FF80000003
898 807F80000007807FC0000007003FC0000007003FC000000E003FE000000E001FE000001E
899 001FF000001C000FF000001FFFFFF000003FFFFFF800003FFFFFF80000780007FC000070
900 0003FC0000700003FC0000E00001FE0000E00001FE0001E00001FF0001C00000FF0001C0
901 0000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE2F297EA834>65
902 D<00003FF001800003FFFE0380000FFFFF8780003FF007DF8000FF8001FF8001FE00007F
903 8003FC00003F8007F000001F800FF000000F801FE0000007801FE0000007803FC0000007
904 803FC0000003807FC0000003807F80000003807F8000000000FF8000000000FF80000000
905 00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
906 00FF80000000007F80000000007F80000000007FC0000003803FC0000003803FC0000003
907 801FE0000003801FE0000007000FF00000070007F000000E0003FC00001E0001FE00003C
908 0000FF8000F800003FF007E000000FFFFFC0000003FFFF000000003FF8000029297CA832
909 >67 D<FFFFFFF80000FFFFFFFF8000FFFFFFFFE00003FC001FF80003FC0007FC0003FC00
910 01FE0003FC0000FF0003FC00007F8003FC00003FC003FC00001FC003FC00001FE003FC00
911 001FE003FC00000FF003FC00000FF003FC00000FF003FC00000FF003FC00000FF803FC00
912 000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00
913 000FF803FC00000FF803FC00000FF803FC00000FF003FC00000FF003FC00000FF003FC00
914 001FE003FC00001FE003FC00001FC003FC00003FC003FC00007F8003FC00007F0003FC00
915 01FE0003FC0003FC0003FC001FF800FFFFFFFFE000FFFFFFFF8000FFFFFFFC00002D297D
916 A835>I<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007F003FC0001F003FC
917 0001F003FC0000F003FC00007003FC00007003FC00007003FC01C07803FC01C03803FC01
918 C03803FC01C03803FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC0
919 0003FC0FC00003FC03C00003FC03C00003FC01C00E03FC01C00E03FC01C00E03FC01C01C
920 03FC00001C03FC00001C03FC00001C03FC00003C03FC00003803FC00007803FC0000F803
921 FC0001F803FC0003F803FC001FF8FFFFFFFFF0FFFFFFFFF0FFFFFFFFF027297DA82D>I<
922 FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003FC000FE003FC0003E003FC0001E003
923 FC0001E003FC0000E003FC0000E003FC0000E003FC0000F003FC03807003FC03807003FC
924 03807003FC03800003FC07800003FC07800003FC1F800003FFFF800003FFFF800003FFFF
925 800003FC1F800003FC07800003FC07800003FC03800003FC03800003FC03800003FC0380
926 0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
927 03FC00000003FC000000FFFFFC0000FFFFFC0000FFFFFC000024297DA82B>I<FFFFF01F
928 FFFEFFFFF01FFFFEFFFFF01FFFFE03FC00007F8003FC00007F8003FC00007F8003FC0000
929 7F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC0000
930 7F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FFFFFF
931 FF8003FFFFFFFF8003FFFFFFFF8003FC00007F8003FC00007F8003FC00007F8003FC0000
932 7F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC0000
933 7F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC0000
934 7F8003FC00007F80FFFFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE2F297DA836>72
935 D<FFFFFCFFFFFCFFFFFC01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
936 0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
937 0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
938 0001FE0001FE00FFFFFCFFFFFCFFFFFC16297EA81A>I<FFFFFFF800FFFFFFFF00FFFFFF
939 FFC003FC003FE003FC000FF003FC0007F803FC0007FC03FC0003FC03FC0003FE03FC0003
940 FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FC03FC0007FC
941 03FC0007F803FC000FF003FC003FE003FFFFFF8003FFFFFE0003FC00000003FC00000003
942 FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
943 00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000FFFFF0
944 0000FFFFF00000FFFFF0000027297DA82F>80 D<FFFFFFE00000FFFFFFFE0000FFFFFFFF
945 800003FC007FE00003FC000FF00003FC0007F80003FC0007FC0003FC0003FC0003FC0003
946 FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003
947 FC0003FC0007F80003FC0007F80003FC001FE00003FC007FC00003FFFFFE000003FFFFF0
948 000003FC00FC000003FC007F000003FC003F800003FC003F800003FC001FC00003FC001F
949 E00003FC001FE00003FC001FE00003FC001FE00003FC001FE00003FC001FF00003FC001F
950 F00003FC001FF00003FC001FF00703FC001FF80703FC000FF80703FC0007F80EFFFFF003
951 FE1CFFFFF001FFF8FFFFF0003FF030297DA834>82 D<7FFFFFFFFFC07FFFFFFFFFC07FFF
952 FFFFFFC07F803FC03FC07E003FC007C078003FC003C078003FC003C070003FC001C0F000
953 3FC001E0F0003FC001E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E0E000
954 3FC000E000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000
955 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000
956 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000
957 3FC0000000003FC0000000003FC0000000003FC0000000003FC00000007FFFFFE000007F
958 FFFFE000007FFFFFE0002B287EA730>84 D<FFFFE07FFFF007FFF0FFFFE07FFFF007FFF0
959 FFFFE07FFFF007FFF003FC0001FE00001C0003FC0001FE00001C0001FE0001FF00003800
960 01FE0000FF0000380001FF0000FF0000780000FF0000FF8000700000FF0000FF80007000
961 00FF8000FF8000F000007F8001FFC000E000007F8001FFC000E000003FC003FFE001C000
962 003FC0039FE001C000003FE0039FE003C000001FE0070FF0038000001FE0070FF0038000
963 001FF00F0FF0078000000FF00E07F8070000000FF00E07F80700000007F81E07FC0E0000
964 0007F81C03FC0E00000007FC1C03FC1E00000003FC3801FE1C00000003FC3801FE1C0000
965 0001FE7801FF3800000001FE7000FF3800000001FE7000FF3800000000FFF000FFF00000
966 0000FFE0007FF000000000FFE0007FF0000000007FC0003FE0000000007FC0003FE00000
967 00003FC0003FC0000000003F80001FC0000000003F80001FC0000000001F80001F800000
968 00001F00000F80000000001F00000F80000000000E00000700000044297FA847>87
969 D<01FF800007FFF0000F81F8001FC07E001FC07E001FC03F000F803F8007003F8000003F
970 8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F803F803F803F003F807F003F
971 80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC03
972 FC1E1B7E9A21>97 D<001FF80000FFFE0003F01F0007E03F800FC03F801F803F803F801F
973 007F800E007F0000007F000000FF000000FF000000FF000000FF000000FF000000FF0000
974 00FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003F01E
975 0000FFFC00001FE0001A1B7E9A1F>99 D<00003FF80000003FF80000003FF800000003F8
976 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800
977 000003F800000003F800000003F800000003F800001FE3F80000FFFBF80003F03FF80007
978 E00FF8000FC007F8001F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF00
979 03F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003
980 F8007F0003F8007F0003F8003F8003F8001F8003F8000F8007F80007C00FF80003F03BFF
981 8000FFF3FF80003FC3FF80212A7EA926>I<003FE00001FFF80003F07E0007C01F000F80
982 1F801F800F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFF
983 FFE0FF000000FF000000FF0000007F0000007F0000007F0000003F8000E01F8000E00FC0
984 01C007E0038003F81F0000FFFE00001FF0001B1B7E9A20>I<0007F0003FFC00FE3E01F8
985 7F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFF
986 C0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
987 0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF
988 807FFF807FFF80182A7EA915>I<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C383F00
989 7E107F007F007F007F007F007F007F007F007F007F007F007F003F007E001F007C001F80
990 FC000FC1F8001FFFE00018FF800038000000380000003C0000003E0000003FFFF8001FFF
991 FF001FFFFF800FFFFFC007FFFFE01FFFFFF03E0007F07C0001F8F80000F8F80000F8F800
992 00F8F80000F87C0001F03C0001E01F0007C00FC01F8003FFFE00007FF0001E287E9A22>
993 I<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE0000000
994 0FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
995 E00000000FE07F00000FE1FFC0000FE787E0000FEE03F0000FF803F0000FF803F8000FF0
996 03F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
997 F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
998 000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80212A7DA926
999 >I<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0
1000 FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
1001 0FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I<FFE00000FFE00000FFE000000F
1002 E000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000F
1003 E000000FE000000FE000000FE01FFC0FE01FFC0FE01FFC0FE007800FE00F000FE01E000F
1004 E03C000FE078000FE0E0000FE3C0000FE7C0000FEFE0000FFFE0000FFFF0000FF3F8000F
1005 E3F8000FC1FC000FC0FE000FC07F000FC07F000FC03F800FC01FC00FC00FC00FC00FE0FF
1006 FC3FFEFFFC3FFEFFFC3FFE1F2A7EA924>107 D<FFE0FFE0FFE00FE00FE00FE00FE00FE0
1007 0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
1008 0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7DA9
1009 14>I<FFC07F800FF000FFC1FFE03FFC00FFC383F0707E000FC603F8C07F000FCC01F980
1010 3F000FD801FF003F800FF001FE003F800FF001FE003F800FE001FC003F800FE001FC003F
1011 800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F80
1012 0FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800F
1013 E001FC003F800FE001FC003F800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE
1014 1FFFC3FFF8FFFE1FFFC3FFF8351B7D9A3A>I<FFC07F0000FFC1FFC000FFC787E0000FCE
1015 03F0000FD803F0000FD803F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003
1016 F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
1017 000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800FFFE3FFF80
1018 FFFE3FFF80FFFE3FFF80211B7D9A26>I<003FE00001FFFC0003F07E000FC01F801F800F
1019 C03F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007
1020 F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800F
1021 C00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>I<FFE1FE0000FFE7FF8000FFFE
1022 07E0000FF803F0000FF001F8000FE000FC000FE000FE000FE000FF000FE0007F000FE000
1023 7F000FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F
1024 800FE0007F000FE000FF000FE000FF000FE000FE000FE001FC000FF001F8000FF803F000
1025 0FFE0FE0000FE7FF80000FE1FC00000FE00000000FE00000000FE00000000FE00000000F
1026 E00000000FE00000000FE00000000FE00000000FE0000000FFFE000000FFFE000000FFFE
1027 00000021277E9A26>I<FFC1F0FFC7FCFFCE3E0FD87F0FD87F0FF07F0FF03E0FF01C0FE0
1028 000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0
1029 000FE0000FE0000FE000FFFF00FFFF00FFFF00181B7E9A1C>114
1030 D<03FE300FFFF01E03F03800F0700070F00070F00070F80070FC0000FFE0007FFE007FFF
1031 803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF0003CF00038F80038FC00
1032 70FF01E0F7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000
1033 F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007F00007
1034 F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807F03807F03807
1035 F03807F03807F03803F03803F87001F86000FFC0001F8015267FA51B>I<FFE03FF800FF
1036 E03FF800FFE03FF8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
1037 03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
1038 F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE007F80007E007F8
1039 0007E00FF80003F03BFF8001FFF3FF80003FC3FF80211B7D9A26>I<FFFE03FF80FFFE03
1040 FF80FFFE03FF8007F000700007F000700007F800F00003F800E00003FC01E00001FC01C0
1041 0001FC01C00000FE03800000FE038000007F070000007F070000007F8F0000003F8E0000
1042 003FDE0000001FDC0000001FDC0000000FF80000000FF80000000FF800000007F0000000
1043 07F000000003E000000003E000000001C00000211B7F9A24>I<FFFE7FFC0FFEFFFE7FFC
1044 0FFEFFFE7FFC0FFE0FE007E000E007F003F001C007F003F001C007F807F803C003F807F8
1045 038003F807F8038001FC0EFC070001FC0EFC070001FE1EFC0F0000FE1C7E0E0000FE1C7E
1046 0E0000FF383F1E00007F383F1C00007F783F3C00003FF01FB800003FF01FB800003FF01F
1047 F800001FE00FF000001FE00FF000000FC007E000000FC007E000000FC007E00000078003
1048 C00000078003C0002F1B7F9A32>I<FFFC0FFF00FFFC0FFF00FFFC0FFF0007F003C00003
1049 F807800001FC07800000FE0F000000FF1E0000007F3C0000003FF80000001FF00000000F
1050 F00000000FF000000007F000000007F80000000FFC0000001FFE0000001EFE0000003C7F
1051 000000783F800000F01FC00001E01FE00001C00FE00003C007F000FFF01FFF80FFF01FFF
1052 80FFF01FFF80211B7F9A24>I E /Fp 1 49 df<081C1C3838383070706060C0C0060D7E
1053 8D09>48 D E /Fq 3 101 df<03E0000638101C1820381C20300E20700E40600E40E00E
1054 80E00E80E00F00E00E00C00E00E00E00603E0020C6401F038014107E8F19>11
1055 D<0007800018600020600040700080700080700100700100700200E00200C0023F800223
1056 00043F800401C00400C00401C00801C00801C00801C0080180180380180300180700140E
1057 0022180021F00020000020000040000040000040000040000080000014217F9916>I<00
1058 3F000700070007000E000E000E000E001C001C039C0C5C1838383830387038E070E070E0
1059 70E070C0E2C0E2C0E2E1E262643C38101A7E9914>100 D E /Fr
1060 7 117 df<00030000000780000007800000078000000FC000000FC000001BE000001BE0
1061 00001BE0000031F0000031F0000060F8000060F80000E0FC0000C07C0000C07C0001803E
1062 0001FFFE0003FFFF0003001F0003001F0006000F8006000F800E000FC0FFC07FFCFFC07F
1063 FC1E1A7F9921>65 D<0FF0001C3C003E1E003E0E003E0F001C0F00000F0000FF000FCF00
1064 3E0F007C0F00F80F00F80F00F80F00F817007C27E01FC3E013117F9015>97
1065 D<FE0000FE00001E00001E00001E00001E00001E00001E00001E00001E7F001FC3C01F00
1066 E01E00F01E00781E00781E007C1E007C1E007C1E007C1E007C1E00781E00781E00F01F00
1067 E01D83C0187F00161A7F9919>I<03FC000F0E001C1F003C1F00781F00780E00F80000F8
1068 0000F80000F80000F800007800007800003C01801C03000F060003FC0011117F9014>I<
1069 FC78FC9C1D3E1D3E1E3E1E1C1E001E001E001E001E001E001E001E001E00FFC0FFC00F11
1070 7F9012>114 D<1FB020704030C030C030F000FF807FE03FF807F8003CC00CC00CE00CE0
1071 08F830CFE00E117F9011>I<06000600060006000E000E001E003FF0FFF01E001E001E00
1072 1E001E001E001E001E001E181E181E181E181E180F3003E00D187F9711>I
1073 E /Fs 46 122 df<00FC7C0183C607078E0607040E07000E07000E07000E07000E07000E
1074 0700FFFFF00E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E
1075 07000E07000E07000E07007F0FF0171A809916>11 D<00FC000182000703000607000E02
1076 000E00000E00000E00000E00000E0000FFFF000E07000E07000E07000E07000E07000E07
1077 000E07000E07000E07000E07000E07000E07000E07000E07007F0FE0131A809915>I<00
1078 7E1F8001C170400703C060060380E00E0380400E0380000E0380000E0380000E0380000E
1079 038000FFFFFFE00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E
1080 0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E07F8FE3FC1E1A809920
1081 >14 D<00800100020004000C00080018003000300030006000600060006000E000E000E0
1082 00E000E000E000E000E000E000E0006000600060006000300030003000180008000C0004
1083 0002000100008009267D9B0F>40 D<8000400020001000180008000C0006000600060003
1084 000300030003000380038003800380038003800380038003800380030003000300030006
1085 00060006000C0008001800100020004000800009267E9B0F>I<60F0F070101010202040
1086 80040B7D830B>44 D<FFC0FFC00A0280880D>I<60F0F06004047D830B>I<03000700FF00
1087 070007000700070007000700070007000700070007000700070007000700070007000700
1088 07000700FFF00C187D9713>49 D<0F80106020304038803CC01CE01C401C003C00380038
1089 0070006000C001800100020004040804100430083FF87FF8FFF80E187E9713>I<01E006
1090 100C1818383038300070006000E000E7C0E860F030F018E018E01CE01CE01C601C601C70
1091 1830183030186007C00E187E9713>54 D<000C0000000C0000000C0000001E0000001E00
1092 00003F000000270000002700000043800000438000004380000081C0000081C0000081C0
1093 000100E0000100E00001FFE000020070000200700006007800040038000400380008001C
1094 0008001C001C001E00FF00FFC01A1A7F991D>65 D<003F0201C0C603002E0E001E1C000E
1095 1C0006380006780002700002700002F00000F00000F00000F00000F00000F00000700002
1096 7000027800023800041C00041C00080E000803003001C0C0003F00171A7E991C>67
1097 D<FFFF000E01C00E00E00E00300E00380E001C0E001C0E000E0E000E0E000F0E000F0E00
1098 0F0E000F0E000F0E000F0E000F0E000F0E000E0E000E0E001E0E001C0E00380E00380E00
1099 700E01C0FFFF00181A7E991D>I<FFFFF00E00700E00300E00100E00180E00080E00080E
1100 00080E04000E04000E04000E0C000FFC000E0C000E04000E04000E04000E00040E00040E
1101 00080E00080E00080E00180E00380E0070FFFFF0161A7E991A>I<003F020001C0C60003
1102 002E000E001E001C000E001C00060038000600780002007000020070000200F0000000F0
1103 000000F0000000F0000000F0000000F001FFC070000E0070000E0078000E0038000E001C
1104 000E001C000E000E000E000300160001C06600003F82001A1A7E991E>71
1105 D<FFE7FF0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
1106 700FFFF00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
1107 700E0070FFE7FF181A7E991D>I<FFE00E000E000E000E000E000E000E000E000E000E00
1108 0E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B1A7F990E>
1109 I<FFFF000E03C00E00E00E00700E00700E00780E00780E00780E00780E00700E00700E00
1110 E00E03C00FFF000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
1111 000E0000FFE000151A7E991A>80 D<0FC21836200E6006C006C002C002C002E00070007E
1112 003FE01FF807FC003E000E00070003800380038003C002C006E004D81887E0101A7E9915
1113 >83 D<7FFFFF00701C0700401C0100401C0100C01C0180801C0080801C0080801C008000
1114 1C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C000000
1115 1C0000001C0000001C0000001C0000001C0000001C0000001C0000001C000003FFE00019
1116 1A7F991C>I<FFE1FF0E00380E00100E00100E00100E00100E00100E00100E00100E0010
1117 0E00100E00100E00100E00100E00100E00100E00100E00100E00100E0010060020070020
1118 03004001804000C180003E00181A7E991D>I<3F8070C070E020700070007007F01C7030
1119 707070E070E071E071E0F171FB1E3C10107E8F13>97 D<FC00001C00001C00001C00001C
1120 00001C00001C00001C00001C00001C00001CF8001F0E001E07001C03801C01801C01C01C
1121 01C01C01C01C01C01C01C01C01C01C03801C03001E07001B0C0010F000121A7F9915>I<
1122 07F80C1C381C30087000E000E000E000E000E000E0007000300438080C1807E00E107F8F
1123 11>I<007E00000E00000E00000E00000E00000E00000E00000E00000E00000E0003CE00
1124 0C3E00380E00300E00700E00E00E00E00E00E00E00E00E00E00E00E00E00600E00700E00
1125 381E001C2E0007CFC0121A7F9915>I<07C01C3030187018600CE00CFFFCE000E000E000
1126 E0006000300438080C1807E00E107F8F11>I<01F0031807380E100E000E000E000E000E
1127 000E00FFC00E000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00D
1128 1A80990C>I<0FCE187330307038703870387038303018602FC02000600070003FF03FFC
1129 1FFE600FC003C003C003C0036006381C07E010187F8F13>I<FC00001C00001C00001C00
1130 001C00001C00001C00001C00001C00001C00001CF8001D0C001E0E001E0E001C0E001C0E
1131 001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00FF9FC0121A7F9915
1132 >I<18003C003C001800000000000000000000000000FC001C001C001C001C001C001C00
1133 1C001C001C001C001C001C001C001C00FF80091A80990A>I<FC00001C00001C00001C00
1134 001C00001C00001C00001C00001C00001C00001C3F801C1E001C18001C10001C20001C40
1135 001DC0001FE0001CE0001C70001C78001C38001C1C001C1E001C1F00FF3FC0121A7F9914
1136 >107 D<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1137 1C001C001C001C001C001C001C001C001C00FF80091A80990A>I<FC7C1F001D8E63801E
1138 0781C01E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C
1139 0701C01C0701C01C0701C01C0701C0FF9FE7F81D107F8F20>I<FCF8001D0C001E0E001E
1140 0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00FF
1141 9FC012107F8F15>I<07E01C38300C700E6006E007E007E007E007E007E0076006700E38
1142 1C1C3807E010107F8F13>I<FCF8001F0E001E07001C03801C03801C01C01C01C01C01C0
1143 1C01C01C01C01C01C01C03801C03001E07001F0C001CF0001C00001C00001C00001C0000
1144 1C00001C0000FF800012177F8F15>I<03C2000C2600381E00300E00700E00E00E00E00E
1145 00E00E00E00E00E00E00E00E00700E00700E00381E001C2E0007CE00000E00000E00000E
1146 00000E00000E00000E00007FC012177F8F14>I<FCE01D701E701E201C001C001C001C00
1147 1C001C001C001C001C001C001C00FFC00C107F8F0F>I<1F2060E04020C020C020F0007F
1148 003FC01FE000F080708030C030C020F0408F800C107F8F0F>I<0400040004000C000C00
1149 1C003C00FFC01C001C001C001C001C001C001C001C001C201C201C201C201C200E400380
1150 0B177F960F>I<FC7E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E
1151 001C0E001C0E001C0E001C1E000C2E0007CFC012107F8F15>I<FF1F803C06001C04001C
1152 04001E0C000E08000E080007100007100007900003A00003A00001C00001C00001C00000
1153 800011107F8F14>I<FF3F9F803C0E0700380E06001C1604001C1704001E170C000E2308
1154 000E2388000F239800074190000741D00003C1E0000380E0000380E0000180C000010040
1155 0019107F8F1C>I<FF3F803C1C001C18000E100007200007600003C00001C00001E00003
1156 E000027000043800083800181C00381E00FC3FC012107F8F14>I<FF1F803C06001C0400
1157 1C04001E0C000E08000E080007100007100007900003A00003A00001C00001C00001C000
1158 008000008000010000010000E10000E20000E4000078000011177F8F14>I
1159 E /Ft 16 118 df<70F8F8F0E005057A840F>46 D<0000FE000007018000180060002000
1160 100040001000800008010000040201F00404070804080C040210180202103003C2206001
1161 C220E0038240C0038241C0038241C003828380070483800704838007048380070483800E
1162 0883800E0881801E0881802E1080C04E2080618E60403E07804000000020000000200000
1163 00100000E00C00078003007C0000FF80001F2379A225>64 D<00F8C00185C00705C00E03
1164 800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E10F01C
1165 20701C20703C20305C40308C400F078014157B9419>97 D<03C03F800380038003800700
1166 0700070007000E000E000E000E001C001CF81D0C1E0E3C0638073807380F700F700F700F
1167 700FE01EE01EE01EE03CE038E038607060E031C01F0010237BA216>I<007E0001C10003
1168 01800703800E07801C07803C0000380000780000780000780000F00000F00000F00000F0
1169 0000F00100700100700200300C001830000FC00011157B9416>I<00F803840E021C023C
1170 0238027804F018FFE0F000F000E000E000E000E000E002E0026004701830600F800F157A
1171 9416>101 D<00F0000FE00000E00000E00000E00001C00001C00001C00001C000038000
1172 038000038000038000070000071F0007218007C0C00F00E00F00E00E00E00E00E01C01C0
1173 1C01C01C01C01C01C0380380380380380380380704700708700E08700E10700610E00620
1174 6003C016237DA219>104 D<0000E00001E00001E00000C0000000000000000000000000
1175 000000000000000000000000001E00002300004380008380008380010380010380000700
1176 000700000700000700000E00000E00000E00000E00001C00001C00001C00001C00003800
1177 00380000380000380000700000700000700070E000F0C000F180006300003C0000132B82
1178 A00F>106 D<00F0000FE00000E00000E00000E00001C00001C00001C00001C000038000
1179 0380000380000380000700000701E0070210070C700E10F00E10F00E20600E40001D8000
1180 1E00001FC0001C7000383800383800381C00381C20703840703840703840701880E01880
1181 600F0014237DA216>I<01E01FC001C001C001C003800380038003800700070007000700
1182 0E000E000E000E001C001C001C001C0038003800380038007000700070007100E200E200
1183 E200E200640038000B237CA20C>I<1C0F002631C04740C08780E08780E08700E08700E0
1184 0E01C00E01C00E01C00E01C01C03801C03801C03801C0704380708380E08380E10380610
1185 7006203003C016157B941B>110 D<007E0001C3000381800701C00E01C01C01E03C01E0
1186 3801E07801E07801E07801E0F003C0F003C0F00380F00780700700700E00700C00301800
1187 18700007C00013157B9419>I<1C1F002620804741C08783C08703C08701808700000E00
1188 000E00000E00000E00001C00001C00001C00001C00003800003800003800003800007000
1189 0030000012157B9415>114 D<00FC000183000200800401800C03800C03000C00000F00
1190 000FF00007FC0003FE00003E00000F00000700700700F00600F00600E004004008002030
1191 001FC00011157D9414>I<00C001C001C001C001C003800380038003800700FFF8070007
1192 000E000E000E000E001C001C001C001C003800380038003810702070207040708031001E
1193 000D1F7C9E10>I<1E00602300E04380E04381C08381C08701C08701C00703800E03800E
1194 03800E03801C07001C07001C07001C07081C0E10180E101C0E101C1E200C262007C3C015
1195 157B941A>I E /Fu 24 118 df<001F83E000706E3000C07C780180F8780380F0780700
1196 70000700700007007000070070000700700007007000070070000700700007007000FFFF
1197 FFC007007000070070000700700007007000070070000700700007007000070070000700
1198 700007007000070070000700700007007000070070000700700007007000070070000700
1199 7000070078007FE3FF801D2380A21C>11 D<70F8FCFC7404040404080810102040060F7C
1200 840E>44 D<70F8F8F87005057C840E>46 D<008003800F80F38003800380038003800380
1201 038003800380038003800380038003800380038003800380038003800380038003800380
1202 038003800380038007C0FFFE0F217CA018>49 D<03F8000C1E001007002007804007C078
1203 07C07803C07807C03807C0000780000780000700000F00000E0000380003F000001C0000
1204 0F000007800007800003C00003C00003E02003E07003E0F803E0F803E0F003C04003C040
1205 0780200780100F000C1C0003F00013227EA018>51 D<007E0001C1000300800601C00E03
1206 C01C03C0180180380000380000780000700000700000F0F800F30C00F40600F40300F803
1207 80F801C0F001C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801C03801
1208 C01803801C03000C0600070C0001F00013227EA018>54 D<01F000060C000C0600180700
1209 380380700380700380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E0
1210 7003E03803E01805E00C05E00619E003E1E00001C00001C00001C0000380000380300300
1211 780700780600700C002018001030000FC00013227EA018>57 D<FFFFF8000F800E000780
1212 0780078003C0078003E0078001E0078001F0078001F0078001F0078001F0078001F00780
1213 01E0078003E0078007C007800F8007803E0007FFFE0007800780078003C0078001E00780
1214 01F0078000F0078000F8078000F8078000F8078000F8078000F8078000F8078001F00780
1215 01F0078003E0078007C00F800F00FFFFFC001D227EA123>66 D<0007F008003C0C1800E0
1216 021801C001B8038000F8070000780F0000381E0000381E0000183C0000183C0000187C00
1217 00087800000878000008F8000000F8000000F8000000F8000000F8000000F8000000F800
1218 0000F8001FFF780000F8780000787C0000783C0000783C0000781E0000781E0000780F00
1219 007807000078038000B801C000B800E00318003C0C080007F00020247DA226>71
1220 D<03FFF0001F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
1221 00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
1222 00000F00000F00700F00F80F00F80F00F80E00F01E00401C0020380018700007C0001423
1223 7EA119>74 D<FFC00003FF0FC00003F007C00003E005E00005E005E00005E004F00009E0
1224 04F00009E004F00009E004780011E004780011E004780011E0043C0021E0043C0021E004
1225 3C0021E0041E0041E0041E0041E0040F0081E0040F0081E0040F0081E004078101E00407
1226 8101E004078101E00403C201E00403C201E00401E401E00401E401E00401E401E00400F8
1227 01E00400F801E00400F801E004007001E00E007001E01F007003F0FFE0203FFF28227EA1
1228 2D>77 D<03F0200C0C601802603001E07000E0600060E00060E00060E00020E00020E000
1229 20F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E00000
1230 F00000F0000070800070800070800070800070C00060C00060E000C0F000C0C80180C607
1231 0081FC0014247DA21B>83 D<0FE0001838003C0C003C0E00180700000700000700000700
1232 00FF0007C7001E07003C0700780700700700F00708F00708F00708F00F087817083C2390
1233 0FC1E015157E9418>97 D<01FE000703000C07801C0780380300780000700000F00000F0
1234 0000F00000F00000F00000F00000F000007000007800403800401C00800C010007060001
1235 F80012157E9416>99 D<01FC000707000C03801C01C03801C07801E07000E0F000E0FFFF
1236 E0F00000F00000F00000F00000F000007000007800203800201C00400E008007030000FC
1237 0013157F9416>101 D<00007001F198071E180E0E181C07001C07003C07803C07803C07
1238 803C07801C07001C07000E0E000F1C0019F0001000001000001800001800001FFE000FFF
1239 C00FFFE03800F0600030400018C00018C00018C000186000306000303800E00E038003FE
1240 0015217F9518>103 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00
1241 000E00000E00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00700E00
1242 700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
1243 700E0070FFE7FF18237FA21B>I<1C001E003E001E001C00000000000000000000000000
1244 000000000E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E00
1245 0E000E000E000E00FFC00A227FA10E>I<0E0000FE00001E00000E00000E00000E00000E
1246 00000E00000E00000E00000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E
1247 02000E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E
1248 01C00E01E00E00F00E00F8FFE3FE17237FA21A>107 D<0E1F80FE60C01E80E00F00700F
1249 00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E
1250 00700E00700E00700E0070FFE7FF18157F941B>110 D<01FC000707000C01801800C038
1251 00E0700070700070F00078F00078F00078F00078F00078F00078F000787000707800F038
1252 00E01C01C00E038007070001FC0015157F9418>I<0E3CFE461E8F0F0F0F060F000E000E
1253 000E000E000E000E000E000E000E000E000E000E000E000F00FFF010157F9413>114
1254 D<02000200020002000600060006000E001E003E00FFF80E000E000E000E000E000E000E
1255 000E000E000E000E000E040E040E040E040E040E040708030801F00E1F7F9E13>116
1256 D<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E00700E00
1257 700E00700E00700E00700E00700E00F00E00F006017003827800FC7F18157F941B>I
1258 E /Fv 15 115 df<FFFF80FFFF80FFFF8011037F9016>45 D<0000030000000000030000
1259 0000000300000000000780000000000780000000000FC0000000000FC0000000000FC000
1260 00000017E00000000013E00000000013E00000000023F00000000021F00000000021F000
1261 00000040F80000000040F80000000040F800000000807C00000000807C00000001807E00
1262 000001003E00000001003E00000002003F00000002001F00000002001F00000004000F80
1263 000004000F80000004000F800000080007C00000080007C00000180007E000001FFFFFE0
1264 00001FFFFFE00000200003F00000200001F00000200001F00000400001F80000400000F8
1265 0000400000F800008000007C00008000007C00008000007C00010000003E00010000003E
1266 00030000003F00030000001F00070000001F001F8000003F80FFE00003FFFCFFE00003FF
1267 FC2E327EB132>65 D<FFFFFFE00000FFFFFFFC000007E0007F000003E0000F800003E000
1268 03C00003E00001E00003E00000F00003E00000780003E000003C0003E000001E0003E000
1269 001E0003E000000F0003E000000F0003E000000F8003E00000078003E0000007C003E000
1270 0007C003E0000003C003E0000003C003E0000003E003E0000003E003E0000003E003E000
1271 0003E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003E003E000
1272 0003E003E0000003E003E0000003C003E0000003C003E0000007C003E0000007C003E000
1273 00078003E00000078003E000000F8003E000000F0003E000001F0003E000001E0003E000
1274 003C0003E00000780003E00000F80003E00001F00003E00003E00003E0000F800007E000
1275 3F0000FFFFFFFC0000FFFFFFE000002B317CB033>68 D<00001FE000800000FFFC018000
1276 07F00F0180000F80018380003E0000C38000780000278000F00000178001E000000F8003
1277 C000000F800780000007800780000003800F00000003801F00000001801E00000001803E
1278 00000001803C00000001803C00000000807C00000000807C0000000080780000000000F8
1279 0000000000F80000000000F80000000000F80000000000F80000000000F80000000000F8
1280 0000000000F80000000000F80000000000F80000000000F800000FFFFC7800000FFFFC7C
1281 0000001FC07C0000000F803C0000000F803C0000000F803E0000000F801E0000000F801F
1282 0000000F800F0000000F80078000000F8007C000000F8003C000000F8001E000000F8000
1283 F000001780007C00001780003E00006380000F8000C3800007F00781800000FFFE008000
1284 001FF000002E337CB134>71 D<FFFF807FFFC0FFFF807FFFC007F00003F80003E00001F0
1285 0003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F0
1286 0003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F0
1287 0003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F0
1288 0003E00001F00003FFFFFFF00003FFFFFFF00003E00001F00003E00001F00003E00001F0
1289 0003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F0
1290 0003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F0
1291 0003E00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F0
1292 0007F00003F800FFFF807FFFC0FFFF807FFFC02A317CB032>I<FFFF80FFFF8007F00003
1293 E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
1294 E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
1295 E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
1296 E00003E00003E00003E00003E00003E00003E00007F000FFFF80FFFF8011317DB017>I<
1297 FFFFFFC000FFFFFFF80007E0007E0003E0001F0003E000078003E00003C003E00001E003
1298 E00001F003E00001F003E00000F003E00000F803E00000F803E00000F803E00000F803E0
1299 0000F803E00000F803E00000F003E00001F003E00001E003E00003E003E00003C003E000
1300 078003E0001F0003E0007C0003FFFFF00003E000000003E000000003E000000003E00000
1301 0003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
1302 03E000000003E000000003E000000003E000000003E000000003E000000003E000000003
1303 E000000003E000000003E000000007F0000000FFFF800000FFFF80000025317CB02D>80
1304 D<007F802001FFE02007C078600F001C601E0006E03C0003E0380001E0780000E0700000
1305 E070000060F0000060F0000060F0000020F0000020F0000020F8000020F80000007C0000
1306 007E0000003F0000003FC000001FF800000FFF800007FFF80003FFFC0000FFFF00000FFF
1307 800000FFC000001FE0000007E0000003F0000001F0000000F0000000F8000000F8800000
1308 7880000078800000788000007880000078C0000078C0000070E00000F0E00000E0F00000
1309 E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D337CB125>83
1310 D<7FFFFFFFFFE07FFFFFFFFFE07E000F8007E078000F8001E070000F8000E060000F8000
1311 6040000F80002040000F800020C0000F800030C0000F80003080000F80001080000F8000
1312 1080000F80001080000F80001080000F80001080000F80001000000F80000000000F8000
1313 0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000
1314 0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000
1315 0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000
1316 0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000
1317 0000000F80000000000F80000000000F80000000000F80000000001FC00000000FFFFF80
1318 00000FFFFF80002C317EB030>I<00FE00000303C0000C00E00010007000100038003C00
1319 3C003E001C003E001E003E001E0008001E0000001E0000001E0000001E00000FFE0000FC
1320 1E0003E01E000F801E001F001E003E001E003C001E007C001E00F8001E04F8001E04F800
1321 1E04F8003E04F8003E0478003E047C005E043E008F080F0307F003FC03E01E1F7D9E21>
1322 97 D<003F8000E0600380180700040F00041E001E1C003E3C003E7C003E7C0008780000
1323 F80000F80000F80000F80000F80000F80000F80000F80000F800007800007C00007C0000
1324 3C00011E00011E00020F000207000403801800E060003F80181F7D9E1D>99
1325 D<003F800000E0E0000380380007003C000E001E001E001E001C000F003C000F007C000F
1326 0078000F8078000780F8000780F8000780FFFFFF80F8000000F8000000F8000000F80000
1327 00F8000000F8000000780000007C0000003C0000003C0000801E0000800E0001000F0002
1328 000780020001C00C0000F03000001FC000191F7E9E1D>101 D<0780000000FF80000000
1329 FF800000000F800000000780000000078000000007800000000780000000078000000007
1330 800000000780000000078000000007800000000780000000078000000007800000000780
1331 000000078000000007800000000780FE00000783078000078C03C000079001E00007A001
1332 E00007A000F00007C000F00007C000F000078000F000078000F000078000F000078000F0
1333 00078000F000078000F000078000F000078000F000078000F000078000F000078000F000
1334 078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
1335 8000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF8021327EB125>104
1336 D<0780FE001FC000FF83078060F000FF8C03C18078000F9001E2003C0007A001E4003C00
1337 07A000F4001E0007C000F8001E0007C000F8001E00078000F0001E00078000F0001E0007
1338 8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780
1339 00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
1340 F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
1341 001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83
1342 FFF0341F7E9E38>109 D<0783E0FF8C18FF907C0F907C07A07C07C03807C00007C00007
1343 C00007800007800007800007800007800007800007800007800007800007800007800007
1344 80000780000780000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E
1348 %%Feature: *Resolution 300dpi
1353 1 0 bop 591 369 a Fv(APHID)22 b(Game-T)-6 b(ree)22 b(Searc)n(h)516
1355 (erta.c)n(a)504 548 y Fu(Jonathan)i(Sc)o(hae\013er,)d
1357 (Computing)h(Science)797 664 y(Univ)o(ersit)o(y)h(of)d(Alb)q(erta)727
1358 722 y(Edmon)o(ton,)i(Alb)q(erta)g(T6G)f(2H1)911 780 y(Canada)828
1359 878 y Fu(June)k(13,)f(1996)890 1017 y Fr(Abstract)161
1360 1073 y Fs(This)g(pap)q(er)h(in)o(tro)q(duces)g(the)e(APHID)g(\(Async)o
1361 (hronous)j(P)o(arallel)f(Hierarc)o(hical)h(Iterativ)o(e)e(Deep)q
1362 (ening\))i(game-)104 1118 y(tree)13 b(searc)o(h)g(algorithm.)19
1363 b(An)13 b(APHID)g(searc)o(h)h(is)f(con)o(trolled)j(b)o(y)d(a)g(master)g
1364 (and)h(a)f(series)h(of)f(sla)o(v)o(e)h(pro)q(cessors.)k(The)104
1365 1164 y(master)d(searc)o(hes)g(the)g(\014rst)g Fq(d)551
1366 1148 y Fp(0)576 1164 y Fs(ply)h(of)e(the)h(game-tree)g(rep)q(eatedly)m
1367 (.)24 b(The)14 b(sla)o(v)o(es)i(are)f(resp)q(onsible)i(for)e(the)g(b)q
1368 (ottom)104 1210 y(plies)k(of)f(the)f(game-tree.)32 b(The)17
1369 b(sla)o(v)o(es)i(async)o(hronously)i(read)d(w)o(ork)g(lists)h(from)e
1370 (the)h(master)g(and)g(return)h(score)104 1255 y(information)g(to)d(the)
1371 h(master.)29 b(The)17 b(master)g(uses)g(the)g(returned)h(score)f
1372 (information)i(to)e(generate)g(appro)o(ximate)104 1301
1373 y(minimax)e(v)n(alues,)f(un)o(til)g(all)h(of)d(the)i(required)g(score)f
1374 (information)j(is)d(a)o(v)n(ailable.)161 1346 y(APHID)e(has)g(b)q(een)g
1375 (programmed)g(as)g(an)g(easy)g(to)f(implemen)o(t,)j(game-indep)q(enden)
1376 o(t)g Fq(\013\014)f Fs(library)m(,)g(and)f(w)o(as)g(imple-)104
1377 1392 y(men)o(ted)g(in)o(to)h(a)g(c)o(hess)f(program)h(with)g(one)f(da)o
1378 (y)h(of)f(programming)i(e\013ort.)k(APHID)11 b(yields)i(reasonable)g(p)
1379 q(erformance)104 1438 y(on)e(a)h(net)o(w)o(ork)f(of)g(w)o(orkstations,)
1380 i(an)f(arc)o(hitecture)h(where)e(it)h(is)g(extremely)g(di\016cult)h(to)
1381 f(use)f(a)h(shared)g(transp)q(osition)104 1483 y(table)i(e\013fectiv)o
1382 (ely)m(.)0 1619 y Fo(1)69 b(In)n(tro)r(duction)0 1722
1383 y Fn(The)18 b(alpha-b)q(eta)f(\()p Fm(\013\014)r Fn(\))h(minim)o(ax)c
1384 (tree)19 b(searc)o(h)f(algorithm)d(has)j(pro)o(v)o(en)f(to)g(b)q(e)h(a)
1385 f(di\016cult)g(algorithm)e(to)i(parallelize.)0 1785 y(Although)e(sim)o
1386 (ulations)e(predict)k(excellen)o(t)f(parallel)f(p)q(erformance,)g(man)o
1387 (y)f(of)h(these)i(results)g(are)f(based)h(on)e(an)h(unrea-)0
1388 1847 y(sonable)c(set)h(of)e(assumptions.)17 b(In)12 b(practice,)h(kno)o
1389 (wing)e(where)i(to)f(initiate)f(parallel)g(activit)o(y)g(is)h
1390 (di\016cult)g(since)h(the)f(result)0 1909 y(of)18 b(searc)o(hing)g(one)
1391 h(no)q(de)f(at)g(a)g(branc)o(h)h(ma)o(y)d(ob)o(viate)i(the)h(parallel)e
1392 (w)o(ork)g(of)h(the)h(other)g(branc)o(hes)g(\(a)f(so-called)g
1393 Fl(cut-)0 1972 y(o\013)p Fn(\).)h(In)14 b(real-w)o(orld)f(implemen)o
1394 (tations,)d(suc)o(h)15 b(as)f(for)g(high-p)q(erformance)f(c)o(hess,)i
1395 (c)o(hec)o(k)o(ers)h(and)d(Othello)h(game-pla)o(ying)0
1396 2034 y(programs,)e(the)j(programs)d(su\013er)k(from)c(three)j(ma)r(jor)
1397 d(sources)k(of)d(parallel)g(ine\016ciency:)62 2121 y
1398 Fk(\017)21 b Fl(Synchr)n(onization)15 b(Overhe)n(ad)p
1399 Fn(:)i(The)d(searc)o(h)g(t)o(ypically)d(has)i(man)o(y)e(sync)o
1400 (hronization)i(p)q(oin)o(ts)f(that)h(result)h(in)e(a)h(high)104
1401 2184 y(p)q(ercen)o(tage)i(of)f(pro)q(cessor)h(idle)f(time.)62
1402 2275 y Fk(\017)21 b Fl(Communic)n(ation)f(Overhe)n(ad)p
1403 Fn(:)29 b(Pro)q(cesses)22 b(m)o(ust)c(comm)o(unicate)f(information)f(b)
1404 q(et)o(w)o(een)21 b(them;)f(the)g(impact)e(of)104 2338
1405 y(comm)o(unicatio)o(n)11 b(dep)q(ends)16 b(on)d(the)i(frequency)g(of)e
1406 (messages)h(and)g(the)g(comm)o(unication)d(latency)m(.)62
1407 2429 y Fk(\017)21 b Fl(Se)n(ar)n(ch)c(Overhe)n(ad)p Fn(:)22
1408 b(Searc)o(h)16 b(trees)i(are)e(really)f(directed)i(graphs.)24
1409 b(W)m(ork)15 b(p)q(erformed)g(on)h(one)g(pro)q(cessor)h(ma)o(y)d(b)q(e)
1410 104 2491 y(useful)d(to)g(the)g(computations)f(of)g(another)i(pro)q
1411 (cessor.)18 b(If)11 b(this)g(information)d(is)j(not)g(a)o(v)n(ailable,)
1412 e(unnecessary)k(searc)o(h)104 2554 y(ma)o(y)f(b)q(e)i(done.)0
1413 2641 y(These)h(o)o(v)o(erheads)f(are)g(not)f(indep)q(enden)o(t)i(of)d
1414 (eac)o(h)i(other.)19 b(F)m(or)13 b(example,)f(increased)i(comm)o
1415 (unication)c(can)k(help)f(reduce)0 2704 y(the)j(searc)o(h)h(o)o(v)o
1416 (erhead.)23 b(Reducing)15 b(the)h(n)o(um)o(b)q(er)f(of)f(sync)o
1417 (hronization)i(p)q(oin)o(ts)f(can)h(increase)g(the)g(searc)o(h)h(o)o(v)
1418 o(erhead.)23 b(In)965 2828 y(1)p eop
1420 2 1 bop 0 195 a Fn(practice,)14 b(the)h(righ)o(t)e(balance)h(b)q(et)o
1421 (w)o(een)h(these)g(sources)h(of)d(program)f(ine\016ciency)i(is)g
1422 (di\016cult)f(to)h(\014nd,)f(and)h(one)g(usually)0 257
1423 y(p)q(erforms)f(man)o(y)f(exp)q(erimen)o(ts)j(to)e(\014nd)h(the)h(righ)
1424 o(t)e(trade-o\013s)i(to)f(maxim)o(ize)d(p)q(erformance.)62
1425 320 y(Man)o(y)i(parallel)g Fm(\013\014)j Fn(algorithms)11
1426 b(ha)o(v)o(e)j(app)q(eared)g(in)f(the)i(literature)f([1)o(,)f(2,)g(3,)g
1427 (9,)g(13)o(,)g(22].)k(The)d(PV-Split)g(algorithm)0 382
1428 y(recognized)19 b(that)f(some)f(no)q(des)h(exist)h(in)e(the)h(searc)o
1429 (h)h(tree)g(where,)h(ha)o(ving)d(searc)o(hed)i(the)g(\014rst)f(branc)o
1430 (h)g(sequen)o(tially)m(,)0 444 y(the)f(remaining)e(branc)o(hes)i(can)g
1431 (b)q(e)g(searc)o(hed)h(in)e(parallel)g([16)o(].)25 b(Initiating)15
1432 b(parallelism)f(along)h(the)i(b)q(est)h(line)e(of)g(pla)o(y)m(,)0
1433 506 y(the)h Fl(princip)n(al)f(variation)p Fn(,)g(w)o(as)g(e\013ectiv)o
1434 (e)h(for)f(a)f(small)f(n)o(um)o(b)q(er)h(of)h(pro)q(cessors,)i
1435 (although)d(v)n(ariations)g(on)h(this)g(sc)o(heme)0 569
1436 y(seemed)e(limited)e(to)i(sp)q(eedups)i(of)d(less)h(than)g(8)g([21)o
1437 (].)62 631 y(The)e(idea)f(can)h(b)q(e)g(generalized)g(to)g(other)g(no)q
1438 (des)g(in)f(the)h(tree.)18 b(A)o(t)12 b(no)q(des)g(where)h(the)f
1439 (\014rst)g(branc)o(h)g(has)g(b)q(een)g(searc)o(hed)0
1440 693 y(and)17 b(no)g(cut-o\013)h(o)q(ccurs,)h(the)e(rest)i(can)e(lik)o
1441 (ely)f(b)q(e)i(searc)o(hed)h(in)e(parallel.)26 b(It)18
1442 b(is)f(a)g(trade-o\013)g({)g(increased)i(parallelism)0
1443 756 y(v)o(ersus)c(additional)d(searc)o(h)k(o)o(v)o(erhead,)e(since)g
1444 (one)h(of)e(these)j(parallel)d(tasks)h(could)g(cause)h(a)f(cuto\013.)19
1445 b(This)14 b(idea)g(has)g(b)q(een)0 818 y(tried)e(b)o(y)g(a)f(n)o(um)o
1446 (b)q(er)h(of)f(researc)o(hers)k([6)o(,)c(7,)g(10].)17
1447 b(The)12 b(b)q(est-kno)o(wn)g(instance)h(of)e(this)h(t)o(yp)q(e)h(of)e
1448 (algorithm)e(is)j(called)f Fl(Y)m(oung)0 880 y(Br)n(others)k(Wait)f
1449 Fn(\(YBW\))h(and)f(w)o(as)g(implemen)o(ted)e(b)o(y)i(F)m(eldmann)e(in)i
1450 (the)h Fj(Zugzw)l(ang)f Fn(c)o(hess)i(program)d([5)o(].)19
1451 b(F)m(eldmann)0 942 y(ac)o(hiev)o(ed)f(a)f(344-fold)f(sp)q(eedup)j
1452 (using)e(YBW)h(on)f(1024)g(pro)q(cessors.)31 b(V)m(ariations)16
1453 b(of)h(this)h(algorithm)d(ha)o(v)o(e)i(app)q(eared)0
1454 1005 y(with)d(comparable)e(exp)q(erimen)o(tal)h(results,)i(suc)o(h)f
1455 (as)g(Jam)o(b)q(oree)g(searc)o(h)h([12)o(])e(and)h(ABD)o(AD)o(A)g([24)o
1456 (].)62 1067 y(This)20 b(class)f(of)g(algorithms)e(cannot)j(ac)o(hiev)o
1457 (e)g(a)f(linear)g(sp)q(eedup)i(primarily)c(due)i(to)h(sync)o
1458 (hronization)f(o)o(v)o(erhead;)0 1129 y(the)c(searc)o(h)h(tree)g(ma)o
1459 (y)d(ha)o(v)o(e)i(thousands)g(of)f(sync)o(hronization)h(p)q(oin)o(ts)g
1460 (and)f(there)j(are)e(n)o(umerous)f(o)q(ccasions)h(where)h(the)0
1461 1191 y(pro)q(cesses)i(are)e(starv)o(ed)h(for)e(w)o(ork.)23
1462 b(The)16 b(algorithms)e(ha)o(v)o(e)h(lo)o(w)g(searc)o(h)i(o)o(v)o
1463 (erhead,)f(but)f(this)h(is)g(primarily)d(due)j(to)f(the)0
1464 1254 y(implemen)o(tatio)o(n)c(of)j(a)f(globally)f(shared)j(transp)q
1465 (osition)e(table)h([8].)62 1316 y(This)g(pap)q(er)h(in)o(tro)q(duces)h
1466 (the)f(Async)o(hronous)g(P)o(arallel)e(Hierarc)o(hical)h(Iterativ)o(e)h
1467 (Deep)q(ening)g(\(APHID)1723 1301 y Fi(1)1742 1316 y
1468 Fn(\))f(game-tree)0 1378 y(searc)o(h)i(algorithm.)k(The)c(algorithm)d
1469 (represen)o(ts)18 b(a)d(departure)i(from)c(the)j(approac)o(hes)g(used)h
1470 (in)d(practice.)24 b(In)15 b(con)o(trast)0 1440 y(to)d(other)h(sc)o
1471 (hemes,)g(APHID)g(de\014nes)h(a)e(fron)o(tier)h(\(a)f(\014xed)h(n)o(um)
1472 o(b)q(er)f(of)f(mo)o(v)o(es)h(a)o(w)o(a)o(y)f(from)g(the)i(ro)q(ot)f
1473 (of)g(the)h(searc)o(h)h(tree\),)0 1503 y(and)d(all)g(no)q(des)h(at)f
1474 (the)h(fron)o(tier)g(are)f(done)h(in)f(parallel.)16 b(Eac)o(h)c(w)o
1475 (ork)o(er)g(pro)q(cess)h(is)e(assigned)h(an)f(equal)g(n)o(um)o(b)q(er)g
1476 (of)g(fron)o(tier)0 1565 y(no)q(des)i(to)f(searc)o(h.)19
1477 b(The)13 b(w)o(ork)o(ers)g(con)o(tin)o(ually)d(searc)o(h)k(these)g(no)q
1478 (des)f(deep)q(er)h(and)e(deep)q(er,)i(nev)o(er)f(ha)o(ving)f(to)g(sync)
1479 o(hronize)0 1627 y(with)j(a)g(con)o(trolling)f(master)h(pro)q(cess.)24
1480 b(The)16 b(master)f(pro)q(cess)i(rep)q(eatedly)f(searc)o(hes)i(to)d
1481 (the)h(fron)o(tier)f(to)g(get)h(the)g(latest)0 1689 y(searc)o(h)g
1482 (results.)k(In)15 b(this)f(w)o(a)o(y)m(,)f(there)j(is)e(e\013ectiv)o
1483 (ely)i(no)e(idle)g(time;)f(searc)o(h)i(ine\016ciencies)h(are)f
1484 (primarily)d(due)j(to)f(searc)o(h)0 1752 y(o)o(v)o(erhead.)29
1485 b(APHID's)18 b(p)q(erformance)f(do)q(es)h(not)g(rely)f(on)h(the)g
1486 (implemen)o(tati)o(on)d(of)i(a)g(global)f(shared)i(memory)m(,)d(whic)o
1487 (h)0 1814 y(mak)o(es)f(the)i(algorithm)d(suitable)i(for)g(lo)q
1488 (osely-coupled)f(arc)o(hitectures)k(\(suc)o(h)e(as)f(a)g(net)o(w)o(ork)
1489 h(of)e(w)o(orkstations\),)h(as)h(w)o(ell)0 1876 y(as)e(tigh)o
1490 (tly-coupled)f(arc)o(hitectures.)62 1939 y(Unlik)o(e)f(most)f(parallel)
1491 g Fm(\013\014)k Fn(algorithms,)9 b(APHID)k(is)f(designed)h(to)f(\014t)g
1492 (in)o(to)g(a)g(sequen)o(tial)g Fm(\013\014)j Fn(structure.)k(APHID)13
1493 b(has)0 2001 y(b)q(een)i(implemen)o(ted)e(as)h(a)g(game-indep)q(enden)o
1494 (t)g(library)g(of)f(routines.)20 b(These,)c(com)o(bined)d(with)h
1495 (application-dep)q(enden)o(t)0 2063 y(routines)d(that)f(the)g(user)h
1496 (supplies,)g(allo)o(w)d(a)i(sequen)o(tial)g Fm(\013\014)j
1497 Fn(program)8 b(to)i(b)q(e)h(easily)e(con)o(v)o(erted)i(to)f(a)g
1498 (parallel)f Fm(\013\014)j Fn(program.)0 2125 y(Although)i(most)f
1499 (parallel)g Fm(\013\014)j Fn(programs)d(tak)o(e)h(mon)o(ths)f(to)h(dev)
1500 o(elop,)g(the)h(game-indep)q(enden)o(t)f(library)g(allo)o(ws)e(users)k
1501 (to)0 2188 y(in)o(tegrate)e(parallelism)d(in)o(to)j(their)g
1502 (application)e(with)i(only)f(a)h(few)g(hours)g(of)f(w)o(ork.)62
1503 2250 y(This)j(pap)q(er)h(discusses)i(the)e(APHID)f(algorithm,)e(its)i
1504 (application-indep)q(enden)o(t)g(in)o(terface)h(and)f(the)h(p)q
1505 (erformance)0 2312 y(of)12 b(the)h(APHID)g(algorithm.)i(The)f(pap)q(er)
1506 f(is)g(organized)f(in)o(to)g(\014v)o(e)h(sections.)19
1507 b(Section)13 b(2)g(is)f(a)h(brief)f(summary)e(of)j(previous)0
1508 2374 y(w)o(ork)18 b(in)g(parallel)f(game-tree)h(searc)o(h.)33
1509 b(Section)19 b(3)f(is)g(primarily)e(concerned)21 b(with)d(the)h
1510 (details)f(of)g(ho)o(w)g(the)h(APHID)0 2437 y(algorithm)d(op)q(erates,)
1511 21 b(and)e(ho)o(w)g(the)g(library)f(in)o(tegrates)i(with)f(an)f
1512 (existing)h(sequen)o(tial)g Fm(\013\014)i Fn(algorithm.)31
1513 b(Section)19 b(4)0 2499 y(describ)q(es)h(the)e(preliminary)d(results)k
1514 (of)e(in)o(tegrating)g(the)h(library)f(in)o(to)g(a)g(c)o(hess)i
1515 (program,)d(and)i(Section)g(5)f(describ)q(es)0 2561 y(some)c(of)g(the)i
1516 (researc)o(h)h(directions)e(that)g(w)o(e)g(are)g(curren)o(tly)h(w)o
1517 (orking)e(on.)p 0 2596 780 2 v 46 2623 a Fh(1)64 2634
1518 y Fg(An)e(aphid)f(is)i(a)f(soft-b)q(o)q(died)e(insect)h(that)g(suc)o
1519 (ks)h(the)g(sap)g(from)f(plan)o(ts.)965 2828 y Fn(2)p
1522 3 2 bop 0 195 a Fo(2)69 b(Previous)23 b(W)-6 b(ork)24
1523 b(on)g(P)n(arallel)d Ff(\013\014)26 b Fo(Algorithms)0
1524 298 y Fn(The)14 b(idea)g(b)q(ehind)g(the)g(PV-Split)g(algorithm)d(has)j
1525 (pro)o(v)o(en)g(to)g(b)q(e)g(a)g(fundamen)o(tal)d(building)i(blo)q(c)o
1526 (k)g(in)h(dev)o(eloping)f(high-)0 361 y(p)q(erformance)i(parallel)e
1527 (game-tree)h(algorithms)f([16)o(].)20 b(Simply)12 b(stated,)k(the)f
1528 (\014rst)g(mo)o(v)o(e)f(at)g(a)h(principal)e(v)n(ariation)h(no)q(de)0
1529 423 y(m)o(ust)19 b(b)q(e)h(completely)f(ev)n(aluated)g(b)q(efore)i(the)
1530 f(subsequen)o(t)i(mo)o(v)o(es)c(can)i(b)q(e)g(handed)h(out)e(to)h
1531 (other)g(pro)q(cessors)i(and)0 485 y(ev)n(aluated)13
1532 b(in)h(parallel.)i(P)o(arallelism)c(o)q(ccurs)j(only)e(at)g(the)h
1533 Fe(PV)g Fn(no)q(des,)g(and)f(the)h(nature)h(of)e(the)h(algorithm)d
1534 (ensures)16 b(that)0 548 y(an)10 b(accurate)i(searc)o(h)g(windo)o(w)e
1535 (is)g(determined)h(b)q(efore)g(allo)q(cating)e(w)o(ork)i(to)f(the)h
1536 (sla)o(v)o(es)g(in)f(parallel,)g(whic)o(h)g(reduces)j(searc)o(h)0
1537 610 y(o)o(v)o(erhead.)18 b(Although)c(it)f(is)h(easy)g(to)g(con)o(trol)
1538 f(the)i(PV-Split)e(algorithm)e(since)k(only)e(one)h Fe(PV)f
1539 Fn(no)q(de)h(can)g(b)q(e)h(ev)n(aluated)e(in)0 672 y(parallel)h(at)g(a)
1540 h(giv)o(en)f(momen)o(t)e(in)i(time,)f(a)i(di\013eren)o(t)h(approac)o(h)
1541 e(is)h(needed)h(if)e(y)o(ou)g(ha)o(v)o(e)h(more)f(pro)q(cessors)j(than)
1542 d(mo)o(v)o(es)0 734 y(at)g(the)g(curren)o(t)i Fe(PV)d
1543 Fn(no)q(de.)62 797 y(Newb)q(orn's)k(UIDP)m(ABS)f(algorithm)d([17)o(])i
1544 (w)o(as)h(the)g(\014rst)g(attempt)f(to)h(async)o(hronously)g(start)g
1545 (the)g(next)h(lev)o(el)e(of)g(an)0 859 y(iterativ)o(ely)e(deep)q(ened)k
1546 (searc)o(h)e(instead)f(of)g(sync)o(hronizing)g(at)g(the)g(ro)q(ot)g(of)
1547 g(the)h(game-tree.)j(The)c(mo)o(v)o(es)f(from)f(the)j(ro)q(ot)0
1548 921 y(p)q(osition)d(are)h(partitioned)f(among)f(the)i(pro)q(cessors,)i
1549 (and)d(the)i(pro)q(cessors)g(searc)o(h)g(their)f(o)o(wn)g(subset)h(of)e
1550 (the)h(mo)o(v)o(es)e(with)0 983 y(iterativ)o(e)k(deep)q(ening.)21
1551 b(Eac)o(h)15 b(pro)q(cessor)h(is)f(giv)o(en)f(the)h(same)f(initial)e
1552 (windo)o(w,)i(but)h(some)e(of)h(the)i(pro)q(cessors)g(ma)o(y)d(ha)o(v)o
1553 (e)0 1046 y(c)o(hanged)g(their)h(windo)o(ws,)e(based)i(on)f(the)g
1554 (searc)o(h)i(results)f(of)e(their)i(mo)o(v)o(es.)i(The)e(UIDP)m(ABS)f
1555 (algorithm)d(then)k(com)o(bines)0 1108 y(the)f(results)h(once)g(a)e
1556 (predetermined)h(time)f(limit)e(has)j(b)q(een)h(reac)o(hed.)k(The)c
1557 (APHID)f(algorithm)d(uses)j(the)h(basic)f(concept)0 1170
1558 y(of)g(ho)o(w)h(to)f(implemen)o(t)f(async)o(hronous)i(searc)o(h)h(from)
1559 d(UIDP)m(ABS,)i(as)g(w)o(e)g(shall)f(see)i(in)f(Section)g(3.)62
1560 1232 y(The)f(Y)m(oung)f(Brothers)i(W)m(ait)c(\(YBW\))j(algorithm)d
1561 (extends)k(PV-Split)d(to)h(state)i(that)e(the)h(other)g(mo)o(v)o(es)e
1562 (\(the)i(\\y)o(oung)0 1295 y(brothers"\))19 b(can)e(b)q(e)h(searc)o
1563 (hed)h(in)e(parallel)f(only)g(if)h(the)h(\014rst)g(mo)o(v)o(e)e(of)g(a)
1564 h(no)q(de)h(has)g(b)q(een)g(completely)e(searc)o(hed)j(and)0
1565 1357 y(has)d(not)g(caused)h(the)g Fm(\013\014)h Fn(windo)o(w)d(to)h(b)q
1566 (e)h(cut)f(o\013)g([5)o(].)24 b(This)16 b(is)g(alw)o(a)o(ys)f(true)i
1567 (at)f Fe(PV)f Fn(no)q(des,)i(and)f(is)g(generally)f(true)i(at)0
1568 1419 y Fe(ALL)c Fn(no)q(des,)i(assuming)e(w)o(e)h(start)h(with)f(an)g
1569 (in\014nite)f(searc)o(h)j(windo)o(w)d(at)h(the)h(ro)q(ot)f(p)q
1570 (osition.)k(Th)o(us,)c(there)i(are)e(m)o(ultiple)0 1482
1571 y(p)q(oten)o(tial)e(parallel)g(no)q(des)i(at)f(an)o(y)f(giv)o(en)g
1572 (time)g(when)h(searc)o(hing)h(the)f(tree.)19 b(Ho)o(w)o(ev)o(er,)13
1573 b(the)h(searc)o(h)g(is)f(still)f(sync)o(hronized)0 1544
1574 y(in)f(the)i(same)e(w)o(a)o(y)g(that)g(PV-Split)h(is)f(sync)o
1575 (hronized.)19 b(Un)o(til)11 b(a)g(searc)o(h)i(of)e(all)g(c)o(hildren)h
1576 (of)f(a)h(giv)o(en)f Fe(PV)g Fn(no)q(de)h(is)g(completed,)0
1577 1606 y(the)i(other)h(c)o(hildren)f(of)f(the)i Fe(PV)e
1578 Fn(no)q(de's)h(paren)o(t)h(cannot)f(b)q(e)g(searc)o(hed.)62
1579 1668 y(Although)i(the)i Fl(synchr)n(onization)g(overhe)n(ad)f
1580 Fn(in)f(YBW)h(is)g(a)f(lot)g(smaller)f(than)i(in)f(PV-Split,)h(w)o(ork)
1581 o(ers)g(still)f(searc)o(h)0 1731 y(for)e(a)h(pro)q(cessor)h(that)f(has)
1582 g(w)o(ork)g(to)f(do)h(\(according)g(to)f(the)i(YBW)e(criterion\))i(b)o
1583 (y)e(sending)h(a)g(message)f(to)h(a)f(pro)q(cessor)0
1584 1793 y(at)f(random.)j(This)e(dynamic)d(load-balancing)h(metho)q(d,)g
1585 (\\w)o(ork-stealing")g([12)o(],)g(is)h(e\013ectiv)o(e)i(in)e(balancing)
1586 f(the)i(share)h(of)0 1855 y(w)o(ork)f(done)g(on)f(eac)o(h)i(pro)q
1587 (cessor,)g(but)f(p)q(erio)q(dically)f(imp)q(oses)g(a)h(hea)o(vy)g(comm)
1588 o(unicati)o(on)d(load.)62 1917 y(In)h(the)g(implemen)o(tatio)o(n)d(of)i
1589 Fj(Zugzw)l(ang)h Fn(presen)o(ted)i(in)d(F)m(eldmann's)e(thesis)k([5)o
1590 (],)e(a)g(distributed)i(transp)q(osition)e(table)0 1980
1591 y(w)o(as)g(implemen)o(ted)e(with)j(message)f(passing)g(across)h(a)f
1592 (series)i(of)e(T)m(ransputers)i(to)e(impro)o(v)o(e)f(the)i(results)g
1593 (of)f(the)h(algorithm.)0 2042 y(On)j(a)g(system)f(with)h(a)f(lo)o(w)g
1594 (CPU)h(cycle)h(to)e(message)h(latency)g(ratio,)f(this)h(t)o(yp)q(e)g
1595 (of)f(distributed)i(transp)q(osition)e(table)h(is)0 2104
1596 y(practical)f(and)f(is)h(useful)g(in)g(con)o(trolling)e(the)j(searc)o
1597 (h)g(o)o(v)o(erhead.)62 2166 y(Da)o(vid's)k Fm(\013\014)r
1598 Fk(\003)i Fn(framew)o(ork)e(uses)j(a)e(global)f(transp)q(osition)h
1599 (table)h(to)f(con)o(trol)g(where)i(the)f(pro)q(cessors)i(should)d(b)q
1600 (e)0 2229 y(searc)o(hing)g([4].)35 b(By)20 b(adding)f(a)h(\014eld)g(to)
1601 g(the)g(global)f(transp)q(osition)g(table)h(to)g(indicate)g(the)g(n)o
1602 (um)o(b)q(er)f(of)h(pro)q(cessors)0 2291 y(searc)o(hing)15
1603 b(that)f(no)q(de,)g(eac)o(h)g(pro)q(cessor)i(can)e(pretend)i(it)d(is)h
1604 (searc)o(hing)h(the)f(tree)i(sequen)o(tially)m(,)c(and)i(mak)o(e)f
1605 (decisions)h(on)0 2353 y(where)h(to)f(searc)o(h)h(based)f(on)g(the)g(n)
1606 o(um)o(b)q(er)f(of)g(pro)q(cessors)j(searc)o(hing)e(the)h(c)o(hildren)f
1607 (of)f(the)h(no)q(de.)19 b(When)14 b(an)o(y)f(pro)q(cessor)0
1608 2416 y(generates)j(a)e(v)n(alue)g(for)f(the)i(ro)q(ot)g(p)q(osition,)e
1609 (the)i(searc)o(h)g(is)f(\014nished.)20 b(Unfortunately)m(,)13
1610 b(Da)o(vid's)g(metho)q(d)h(of)f(con)o(trolling)0 2478
1611 y(where)h(the)f(pro)q(cessors)i(should)e(b)q(e)h(searc)o(hing)f(w)o(as)
1612 g(ine\016cien)o(t,)f(and)h(the)g(sc)o(heme)g(w)o(as)g(hamp)q(ered)g(b)o
1613 (y)f(the)i(use)g(of)e(half)g(of)0 2540 y(the)h(T)m(ransputers)g(as)f
1614 (transp)q(osition)g(table)g(storage)g(units,)g(limiting)d(the)j(sp)q
1615 (eedup)i(rep)q(orted)f(to)f(6.5)f(on)h(16)f(T)m(ransputers.)0
1616 2602 y(Regrettably)m(,)i(no)h(w)o(ork)f(is)h(rep)q(orted)h(that)f
1617 (addresses)i(these)g(shortcomings.)62 2665 y(W)m(eill)h([24)o(])g
1618 (recognized)j(that)e(the)h(YBW)f(criterion)h(could)f(b)q(e)h(used)g(in)
1619 f(conjunction)g(with)g(the)h Fm(\013\014)r Fk(\003)f
1620 Fn(framew)o(ork.)965 2828 y(3)p eop
1622 4 3 bop 0 195 a Fn(W)m(eill)14 b(sho)o(w)o(ed)h(the)h(com)o(bination,)d
1623 (ABD)o(AD)o(A,)h(yields)i(comparable)e(p)q(erformance)h(to)g(a)g(YBW)g
1624 (implemen)o(tation)d(on)j(a)0 257 y(CM-5.)k(On)14 b(16)g(pro)q
1625 (cessors,)i(ABD)o(AD)o(A)e(yielded)g(an)g(10-fold)f(sp)q(eedup)j(for)e
1626 (a)g(c)o(hess)h(program,)d(while)i(YBW)h(generated)0
1627 320 y(a)f(sp)q(eedup)h(of)e(just)h(under)h(8.)62 382
1628 y(Unfortunately)m(,)j(neither)g(of)f(these)i(sc)o(heduling)f(metho)q
1629 (ds)f(deal)g(adequately)h(with)f(arc)o(hitectures)j(that)d(ha)o(v)o(e)h
1630 (high)0 444 y(CPU)e(cycle/message)f(latency)h(ratios,)f(suc)o(h)h(as)g
1631 (a)f(net)o(w)o(ork)g(of)g(w)o(orkstations.)23 b(Using)15
1632 b(YBW)g(on)g(a)h(system)f(with)g(only)0 506 y(transp)q(osition)i
1633 (tables)g(lo)q(cal)g(to)g(eac)o(h)g(pro)q(cess)i(will)d(yield)g(large)h
1634 (searc)o(h)i(o)o(v)o(erheads,)f(since)g(there)g(is)f(no)g(guaran)o(tee)
1635 h(of)0 569 y(where)12 b(a)f(giv)o(en)f(no)q(de)i(will)d(end)j(up)f
1636 (when)g(w)o(e)g(use)h(the)g(c)o(haotic)f(w)o(ork-stealing)f(sc)o
1637 (heduler)i(in)f(com)o(bination)d(with)j(iterativ)o(e)0
1638 631 y(deep)q(ening.)18 b(Using)12 b(ABD)o(AD)o(A)g(is)g(infeasible)g
1639 (since)g(the)h(system)f(requires)h(a)f(shared)h(transp)q(osition)f
1640 (table,)g(whic)o(h)g(w)o(ould)0 693 y(b)q(e)j(extremely)e(slo)o(w)g(on)
1641 h(a)g(parallel)e(arc)o(hitecture)k(with)e(a)f(high)g(CPU)i
1642 (cycle/message)f(latency)g(ratio.)0 831 y Fo(3)69 b(The)23
1643 b(APHID)f(Algorithm)0 934 y Fn(Y)m(oung)12 b(Brothers)i(W)m(ait)d(and)h
1644 (other)h(algorithms)e(su\013er)i(from)e(three)j(serious)f(problems.)k
1645 (First,)12 b(the)i(n)o(umerous)d(sync)o(hro-)0 996 y(nization)k(p)q
1646 (oin)o(ts)h(result)h(in)f(idle)f(time.)24 b(This)16 b(suggests)h(that)f
1647 (a)g(new)g(algorithm)e(m)o(ust)h(striv)o(e)h(to)g(reduce)i(or)e
1648 (eliminate)0 1058 y(sync)o(hronization)c(altogether.)18
1649 b(Second,)13 b(the)g(c)o(haotic)g(nature)g(of)f(a)g(w)o(ork-stealing)f
1650 (sc)o(heduler)j(requires)g(algorithms)c(suc)o(h)0 1121
1651 y(as)15 b(YBW)g(and)g(Jam)o(b)q(oree)f(to)h(use)h(a)e(shared)i(transp)q
1652 (osition)f(table)g(to)f(ac)o(hiev)o(e)i(reasonable)f(p)q(erformance.)21
1653 b(Algorithms)0 1183 y(based)13 b(on)f(the)i Fm(\013\014)r
1654 Fk(\003)e Fn(framew)o(ork)f(require)j(a)e(shared)h(transp)q(osition)g
1655 (table)f(to)g(function.)18 b(Third,)12 b(the)h(program)e(ma)o(y)f
1656 (initi-)0 1245 y(ate)i(parallelism)e(at)h(no)q(des)i(whic)o(h)f(are)g
1657 (b)q(etter)i(done)e(sequen)o(tially)m(.)17 b(F)m(or)11
1658 b(example,)g(ha)o(ving)g(searc)o(hed)i(the)g(\014rst)g(branc)o(h)f(at)0
1659 1307 y(a)i(no)q(de)h(and)f(not)g(ac)o(hiev)o(ed)h(a)f(cut-o\013,)h(Y)m
1660 (oung)e(Brothers)j(W)m(ait)d(\(in)i(its)f(simplest)f(form\))g(p)q
1661 (ermits)h(all)f(of)h(the)h(remaining)0 1370 y(branc)o(hes)f(to)f(b)q(e)
1662 g(searc)o(hed)i(in)d(parallel.)17 b(Ho)o(w)o(ev)o(er,)c(if)f(the)h
1663 (second)h(branc)o(h)f(causes)h(a)f(cuto\013,)g(then)h(all)d(the)j
1664 (parallel)d(w)o(ork)0 1432 y(done)18 b(on)f(the)h(third)g(\(and)f
1665 (subsequen)o(t\))j(branc)o(hes)e(has)g(b)q(een)h(w)o(asted.)29
1666 b(This)18 b(suggests)g(parallelism)d(should)j(only)e(b)q(e)0
1667 1494 y(initiated)d(at)h(no)q(des)g(where)i(there)f(is)e(a)h(v)o(ery)g
1668 (high)f(probabilit)o(y)g(that)h(all)e(branc)o(hes)k(m)o(ust)c(b)q(e)j
1669 (considered.)62 1557 y(This)f(section)h(in)o(tro)q(duces)g(the)f(Async)
1670 o(hronous)h(P)o(arallel)e(Hierarc)o(hical)h(Iterativ)o(e)g(Deep)q
1671 (ening)h(\(APHID\))f(game-tree)0 1619 y(searc)o(hing)i(algorithm.)21
1672 b(APHID)15 b(has)h(b)q(een)h(designed)f(to)g(address)h(the)f(ab)q(o)o
1673 (v)o(e)f(three)i(issues.)25 b(The)16 b(algorithm)d(is)i(asyn-)0
1674 1681 y(c)o(hronous)g(in)f(nature;)h(it)e(remo)o(v)o(es)h(all)f(sync)o
1675 (hronization)i(p)q(oin)o(ts)f(from)e(the)j Fm(\013\014)i
1676 Fn(searc)o(h)e(and)g(from)d(iterativ)o(e)i(deep)q(ening.)0
1677 1743 y(Also,)f(parallelism)e(is)j(only)f(applied)g(at)h(no)q(des)g
1678 (that)g(ha)o(v)o(e)g(a)f(high)g(probabilit)o(y)g(of)g(needing)h
1679 (parallelism.)h(The)f(top)g(plies)0 1806 y(of)k(a)g(game-tree)g(\(near)
1680 g(the)h(ro)q(ot\))g(v)n(ary)f(infrequen)o(tly)g(b)q(et)o(w)o(een)h
1681 (steps)h(of)e(iterativ)o(e)g(deep)q(ening)h([19)o(].)31
1682 b(This)18 b(relativ)o(e)0 1868 y(in)o(v)n(ariance)13
1683 b(of)g(the)i(top)f(p)q(ortion)f(of)h(the)g(game-tree)g(is)f(exploited)h
1684 (b)o(y)g(the)g(APHID)g(algorithm.)62 1930 y(In)e(its)f(simplest)g
1685 (form,)f(APHID)i(can)g(b)q(e)g(view)o(ed)g(as)f(a)h(master/sla)o(v)o(e)
1686 e(program)g(although,)h(as)h(discussed)h(later,)e(it)h(can)0
1687 1992 y(b)q(e)k(generalized)g(to)g(a)f(hierarc)o(hical)g(pro)q(cessor)i
1688 (tree.)24 b(F)m(or)15 b(a)g(depth)i Fm(d)e Fn(searc)o(h,)h(the)g
1689 (master)f(is)g(resp)q(onsible)i(for)e(the)h(top)0 2055
1690 y Fm(d)22 2040 y Fd(0)47 2055 y Fn(ply)d(of)g(the)i(tree,)f(and)g(the)g
1691 (remaining)e Fm(d)d Fk(\000)g Fm(d)770 2040 y Fd(0)795
1692 2055 y Fn(ply)k(are)h(searc)o(hed)i(in)d(parallel)f(b)o(y)i(the)g(sla)o
1693 (v)o(es.)k(Figure)c(1)g(sho)o(ws)g(where)0 2117 y(parallel)f
1694 (activities)g(o)q(ccur)j(in)d(APHID)h(and)g(YBW.)g(Eac)o(h)g(lo)q
1695 (cation)f(mark)o(ed)g(with)g(an)h Fe(x)g Fn(sho)o(ws)g(where)h(the)g
1696 (parallelism)0 2179 y(t)o(ypically)10 b(tak)o(es)h(place.)17
1697 b(Although)11 b(more)f(w)o(ork)h(could)g(b)q(e)g(generated)i(in)d(YBW,)
1698 h(eac)o(h)h Fe(x)e Fn(represen)o(ts)k(a)d(p)q(oten)o(tially)f(costly)0
1699 2241 y(sync)o(hronization)16 b(p)q(oin)o(t.)25 b(The)17
1700 b(parallelism)c(is)j(more)g(constrained)h(in)f(APHID)g(and,)g(hence,)i
1701 (is)e(more)g(lik)o(ely)f(to)h(su\013er)0 2304 y(from)c(load)h(im)o
1702 (balances)f(than)i(other)h(dynamic)d(sc)o(heduling)i(routines)g(\(suc)o
1703 (h)h(as)f(YBW,)g(Jam)o(b)q(oree,)f(or)h Fm(\013\014)r
1704 Fk(\003)p Fn(\).)0 2420 y Fc(3.1)56 b(Op)r(eration)17
1705 b(of)i(the)f(Master)h(in)f(APHID)0 2509 y Fn(The)d(master)e(is)h(resp)q
1706 (onsible)i(for)d(searc)o(hing)i(the)g(top)f Fm(d)892
1707 2494 y Fd(0)918 2509 y Fn(ply)f(of)h(the)h(tree.)20 b(It)14
1708 b(rep)q(eatedly)h(tra)o(v)o(erses)h(this)f(tree)g(un)o(til)e(the)0
1709 2571 y(correct)g(minim)o(ax)8 b(v)n(alue)j(has)g(b)q(een)i(determined.)
1710 k(The)12 b(master)f(is)g(executing)h(a)f(normal)e Fm(\013\014)14
1711 b Fn(searc)o(h,)e(with)f(the)h(exception)0 2634 y(that)j(APHID)f
1712 (enforces)i(an)f(arti\014cial)e(searc)o(h)j(horizon)e(at)h
1713 Fm(d)973 2618 y Fd(0)999 2634 y Fn(ply)f(from)e(the)k(ro)q(ot.)k(Eac)o
1714 (h)15 b(leaf)e(no)q(de)i(in)g(the)g(master's)f Fm(d)1939
1715 2618 y Fd(0)965 2828 y Fn(4)p eop
1718 16766447 9472573 9669918 31246336 22892052 38679674 startTexFig
1720 %%BeginDocument: draw1b.ps
1725 /IdrawDict 52 dict def
1729 dup dup findfont dup length dict begin
1730 { 1 index /FID ne { def }{ pop pop } ifelse } forall
1731 /Encoding ISOLatin1Encoding def
1732 currentdict end definefont
1735 /ISOLatin1Encoding [
1736 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1737 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1738 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1739 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1740 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
1741 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
1742 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
1743 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
1744 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
1745 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
1746 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
1747 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1748 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1749 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
1750 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
1751 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
1752 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
1753 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
1754 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
1755 /guillemotright/onequarter/onehalf/threequarters/questiondown
1756 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
1757 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
1758 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
1759 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
1760 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
1761 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
1762 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
1763 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
1764 /yacute/thorn/ydieresis
1766 /Times-Roman reencodeISO def
1767 /Helvetica reencodeISO def
1770 /numGraphicParameters 17 def
1771 /stringLimit 65535 def
1775 numGraphicParameters dict begin
1784 dup type /nulltype eq {
1786 false /brushRightArrow idef
1787 false /brushLeftArrow idef
1788 true /brushNone idef
1790 /brushDashOffset idef
1791 /brushDashArray idef
1792 0 ne /brushRightArrow idef
1793 0 ne /brushLeftArrow idef
1795 false /brushNone idef
1817 dup type /nulltype eq {
1818 pop true /patternNone idef
1821 /patternGrayLevel idef
1824 /patternGrayLevel idef
1826 false /patternNone idef
1835 0 0 0 0 0 0 1 1 true subspline
1837 0 0 0 0 1 1 2 2 false subspline
1840 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
1842 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
1844 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
1845 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
1846 brushNone not { istroke } if
1848 n 2 sub dup n 1 sub dup rightarrow
1851 } dup 0 4 dict put def
1856 patternNone not { ifill } if
1857 brushNone not { istroke } if
1865 n 1 sub dup 0 0 1 1 2 2 true subspline
1868 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
1870 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
1871 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
1872 patternNone not { ifill } if
1873 brushNone not { istroke } if
1878 } dup 0 4 dict put def
1887 patternNone not { ifill } if
1888 brushNone not { istroke } if
1890 } dup 0 1 dict put def
1896 x 0 get y 0 get moveto
1897 x 1 get y 1 get lineto
1898 brushNone not { istroke } if
1902 } dup 0 4 dict put def
1909 x 0 get y 0 get moveto
1912 x i get y i get lineto
1914 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
1915 brushNone not { istroke } if
1917 n 2 sub dup n 1 sub dup rightarrow
1920 } dup 0 4 dict put def
1929 patternNone not { ifill } if
1930 brushNone not { istroke } if
1945 patternNone not { ifill } if
1946 brushNone not { istroke } if
1948 } dup 0 4 dict put def
1955 dup where { pop pop pop } { exch def } ifelse
1961 patternGrayLevel -1 ne {
1962 fgred bgred fgred sub patternGrayLevel mul add
1963 fggreen bggreen fggreen sub patternGrayLevel mul add
1964 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
1968 originalCTM setmatrix
1969 pathbbox /t exch def /r exch def /b exch def /l exch def
1970 /w r l sub ceiling cvi def
1971 /h t b sub ceiling cvi def
1972 /imageByteWidth w 8 div ceiling cvi def
1974 bgred bggreen bgblue setrgbcolor
1976 fgred fggreen fgblue setrgbcolor
1978 l b translate w h scale
1979 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
1984 } dup 0 8 dict put def
1988 brushDashOffset -1 eq {
1992 brushDashArray brushDashOffset setdash
1993 fgred fggreen fgblue setrgbcolor
1995 brushWidth setlinewidth
1996 originalCTM setmatrix
2004 fgred fggreen fgblue setrgbcolor
2005 /fontDict printFont printSize scalefont dup setfont def
2006 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
2007 transform exch pop def
2008 /vertoffset 1 printSize sub descender sub def {
2009 0 vertoffset moveto show
2010 /vertoffset vertoffset printSize sub def
2014 } dup 0 3 dict put def
2017 /patternByteLength patternString length def
2018 /patternHeight patternByteLength 8 mul sqrt cvi def
2019 /patternWidth patternHeight def
2020 /patternByteWidth patternWidth 8 idiv def
2021 /imageByteMaxLength imageByteWidth imageHeight mul
2022 stringLimit patternByteWidth sub min def
2023 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
2024 patternHeight mul patternHeight max def
2025 /imageHeight imageHeight imageMaxHeight sub store
2026 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
2027 0 1 imageMaxHeight 1 sub {
2029 /patternRow y patternByteWidth mul patternByteLength mod def
2030 /patternRowString patternString patternRow patternByteWidth getinterval def
2031 /imageRow y imageByteWidth mul def
2032 0 patternByteWidth imageByteWidth 1 sub {
2034 imageString imageRow x add patternRowString putinterval
2039 } dup 0 12 dict put def
2042 dup 3 2 roll dup 4 3 roll lt { exch } if pop
2046 dup 3 2 roll dup 4 3 roll gt { exch } if pop
2058 } dup 0 4 dict put def
2066 x0 2 mul x1 add 3 div
2067 y0 2 mul y1 add 3 div
2069 } dup 0 4 dict put def
2073 /movetoNeeded exch def
2074 y exch get /y3 exch def
2075 x exch get /x3 exch def
2076 y exch get /y2 exch def
2077 x exch get /x2 exch def
2078 y exch get /y1 exch def
2079 x exch get /x1 exch def
2080 y exch get /y0 exch def
2081 x exch get /x0 exch def
2082 x1 y1 x2 y2 thirdpoint
2085 x2 y2 x1 y1 thirdpoint
2088 x1 y1 x0 y0 thirdpoint
2092 x2 y2 x3 y3 thirdpoint
2096 movetoNeeded { p0x p0y moveto } if
2097 p1x p1y p2x p2y p3x p3y curveto
2099 } dup 0 17 dict put def
2113 fgred fggreen fgblue setrgbcolor
2114 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
2118 dup 3 -1 roll dup 4 1 roll exch
2122 exch dup 3 1 roll exch lineto
2125 bgred bggreen bgblue setrgbcolor
2131 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
2137 transform originalCTM itransform
2140 transform originalCTM itransform
2143 /dy tipy taily sub def
2144 /dx tipx tailx sub def
2145 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
2147 originalCTM setmatrix
2151 arrowHeight neg arrowWidth 2 div moveto
2153 arrowHeight neg arrowWidth 2 div neg lineto
2155 originalCTM setmatrix
2156 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
2158 /padtail brushWidth 2 div def
2162 arrowHeight padtip add padtail add arrowHeight div dup scale
2167 originalCTM setmatrix
2175 } dup 0 9 dict put def
2179 arrowHeight neg arrowWidth 2 div moveto
2181 arrowHeight neg arrowWidth 2 div neg lineto
2186 y exch get /taily exch def
2187 x exch get /tailx exch def
2188 y exch get /tipy exch def
2189 x exch get /tipx exch def
2190 brushLeftArrow { tipx tipy tailx taily arrowhead } if
2192 } dup 0 4 dict put def
2196 y exch get /tipy exch def
2197 x exch get /tipx exch def
2198 y exch get /taily exch def
2199 x exch get /tailx exch def
2200 brushRightArrow { tipx tipy tailx taily arrowhead } if
2202 } dup 0 4 dict put def
2205 %I Idraw 10 Grid 3 3
2215 [ 0.799705 0 0 0.799705 0 0 ] concat
2216 /originalCTM matrix currentmatrix def
2227 [ 1 -0 -0 1 122 296 ] concat
2242 [ 1 -0 -0 1 122 296 ] concat
2244 117 437 162 332 Line
2257 [ 1 0 0 1 271 296 ] concat
2272 [ 1 0 0 1 271 296 ] concat
2274 117 437 162 332 Line
2281 %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-*
2284 [ 1 0 0 1 217 609 ] concat
2299 [ 1 0 0 1 26.5 123.5 ] concat
2310 [ 1 -0 -0 1 122 296 ] concat
2325 [ 1 -0 -0 1 122 296 ] concat
2341 [ 1 0 0 1 30.5 123 ] concat
2352 [ 1 -0 -0 1 122 296 ] concat
2367 [ 1 -0 -0 1 122 296 ] concat
2383 [ 1 0 0 1 33.5 123 ] concat
2394 [ 1 -0 -0 1 122 296 ] concat
2409 [ 1 -0 -0 1 122 296 ] concat
2425 [ 1 0 0 1 37.5 123 ] concat
2436 [ 1 -0 -0 1 122 296 ] concat
2451 [ 1 -0 -0 1 122 296 ] concat
2467 [ 1 0 0 1 42 123.5 ] concat
2478 [ 1 -0 -0 1 122 296 ] concat
2493 [ 1 -0 -0 1 122 296 ] concat
2509 [ 1 0 0 1 45 123.5 ] concat
2520 [ 1 -0 -0 1 122 296 ] concat
2535 [ 1 -0 -0 1 122 296 ] concat
2551 [ 1 0 0 1 49 123.5 ] concat
2562 [ 1 -0 -0 1 122 296 ] concat
2577 [ 1 -0 -0 1 122 296 ] concat
2593 [ 1 0 0 1 52.5 123.5 ] concat
2604 [ 1 -0 -0 1 122 296 ] concat
2619 [ 1 -0 -0 1 122 296 ] concat
2635 [ 1 0 0 1 56 123.5 ] concat
2646 [ 1 -0 -0 1 122 296 ] concat
2661 [ 1 -0 -0 1 122 296 ] concat
2677 [ 1 0 0 1 60 123.5 ] concat
2688 [ 1 -0 -0 1 122 296 ] concat
2703 [ 1 -0 -0 1 122 296 ] concat
2719 [ 1 0 0 1 22.5 123.5 ] concat
2730 [ 1 -0 -0 1 122 296 ] concat
2745 [ 1 -0 -0 1 122 296 ] concat
2761 [ 1 0 0 1 159 96 ] concat
2772 [ 1 -0 -0 1 122 296 ] concat
2787 [ 1 -0 -0 1 122 296 ] concat
2803 [ 1 0 0 1 162.5 104 ] concat
2814 [ 1 -0 -0 1 122 296 ] concat
2829 [ 1 -0 -0 1 122 296 ] concat
2845 [ 1 0 0 1 166 110.5 ] concat
2856 [ 1 -0 -0 1 122 296 ] concat
2871 [ 1 -0 -0 1 122 296 ] concat
2887 [ 1 0 0 1 170.5 118.5 ] concat
2898 [ 1 -0 -0 1 122 296 ] concat
2913 [ 1 -0 -0 1 122 296 ] concat
2929 [ 1 0 0 1 174 126.5 ] concat
2940 [ 1 -0 -0 1 122 296 ] concat
2955 [ 1 -0 -0 1 122 296 ] concat
2971 [ 1 0 0 1 177 134 ] concat
2982 [ 1 -0 -0 1 122 296 ] concat
2997 [ 1 -0 -0 1 122 296 ] concat
3013 [ 1 0 0 1 181 141 ] concat
3024 [ 1 -0 -0 1 122 296 ] concat
3039 [ 1 -0 -0 1 122 296 ] concat
3055 [ 1 0 0 1 185 149 ] concat
3066 [ 1 -0 -0 1 122 296 ] concat
3081 [ 1 -0 -0 1 122 296 ] concat
3097 [ 1 0 0 1 188.5 156 ] concat
3108 [ 1 -0 -0 1 122 296 ] concat
3123 [ 1 -0 -0 1 122 296 ] concat
3139 [ 1 0 0 1 191.5 164 ] concat
3150 [ 1 -0 -0 1 122 296 ] concat
3165 [ 1 -0 -0 1 122 296 ] concat
3181 [ 1 0 0 1 156 88.5 ] concat
3192 [ 1 -0 -0 1 122 296 ] concat
3207 [ 1 -0 -0 1 122 296 ] concat
3223 [ 1 0 0 1 151.5 80 ] concat
3234 [ 1 -0 -0 1 122 296 ] concat
3249 [ 1 -0 -0 1 122 296 ] concat
3265 [ 1 0 0 1 148 72.5 ] concat
3276 [ 1 -0 -0 1 122 296 ] concat
3291 [ 1 -0 -0 1 122 296 ] concat
3307 [ 1 0 0 1 192 149 ] concat
3318 [ 1 -0 -0 1 122 296 ] concat
3333 [ 1 -0 -0 1 122 296 ] concat
3349 [ 1 0 0 1 195.5 149 ] concat
3360 [ 1 -0 -0 1 122 296 ] concat
3375 [ 1 -0 -0 1 122 296 ] concat
3391 [ 1 0 0 1 198.5 149 ] concat
3402 [ 1 -0 -0 1 122 296 ] concat
3417 [ 1 -0 -0 1 122 296 ] concat
3433 [ 1 0 0 1 191 135 ] concat
3444 [ 1 -0 -0 1 122 296 ] concat
3459 [ 1 -0 -0 1 122 296 ] concat
3475 [ 1 0 0 1 195 135 ] concat
3486 [ 1 -0 -0 1 122 296 ] concat
3501 [ 1 -0 -0 1 122 296 ] concat
3517 [ 1 0 0 1 199 135 ] concat
3528 [ 1 -0 -0 1 122 296 ] concat
3543 [ 1 -0 -0 1 122 296 ] concat
3559 [ 1 0 0 1 203.5 135 ] concat
3570 [ 1 -0 -0 1 122 296 ] concat
3585 [ 1 -0 -0 1 122 296 ] concat
3601 [ 1 0 0 1 187 141 ] concat
3612 [ 1 -0 -0 1 122 296 ] concat
3627 [ 1 -0 -0 1 122 296 ] concat
3643 [ 1 0 0 1 190 141 ] concat
3654 [ 1 -0 -0 1 122 296 ] concat
3669 [ 1 -0 -0 1 122 296 ] concat
3685 [ 1 0 0 1 181 126.5 ] concat
3696 [ 1 -0 -0 1 122 296 ] concat
3711 [ 1 -0 -0 1 122 296 ] concat
3727 [ 1 0 0 1 185 126.5 ] concat
3738 [ 1 -0 -0 1 122 296 ] concat
3753 [ 1 -0 -0 1 122 296 ] concat
3769 [ 1 0 0 1 189 127 ] concat
3780 [ 1 -0 -0 1 122 296 ] concat
3795 [ 1 -0 -0 1 122 296 ] concat
3811 [ 1 0 0 1 188.5 118.5 ] concat
3822 [ 1 -0 -0 1 122 296 ] concat
3837 [ 1 -0 -0 1 122 296 ] concat
3853 [ 1 0 0 1 192.5 118.5 ] concat
3864 [ 1 -0 -0 1 122 296 ] concat
3879 [ 1 -0 -0 1 122 296 ] concat
3895 [ 1 0 0 1 196.5 118.5 ] concat
3906 [ 1 -0 -0 1 122 296 ] concat
3921 [ 1 -0 -0 1 122 296 ] concat
3937 [ 1 0 0 1 204.5 118.5 ] concat
3948 [ 1 -0 -0 1 122 296 ] concat
3963 [ 1 -0 -0 1 122 296 ] concat
3979 [ 1 0 0 1 178 110.5 ] concat
3990 [ 1 -0 -0 1 122 296 ] concat
4005 [ 1 -0 -0 1 122 296 ] concat
4021 [ 1 0 0 1 199 110.5 ] concat
4032 [ 1 -0 -0 1 122 296 ] concat
4047 [ 1 -0 -0 1 122 296 ] concat
4063 [ 1 0 0 1 213.5 111 ] concat
4074 [ 1 -0 -0 1 122 296 ] concat
4089 [ 1 -0 -0 1 122 296 ] concat
4105 [ 1 0 0 1 184 96 ] concat
4116 [ 1 -0 -0 1 122 296 ] concat
4131 [ 1 -0 -0 1 122 296 ] concat
4147 [ 1 0 0 1 208 95.5 ] concat
4158 [ 1 -0 -0 1 122 296 ] concat
4173 [ 1 -0 -0 1 122 296 ] concat
4189 [ 1 0 0 1 194 156 ] concat
4200 [ 1 -0 -0 1 122 296 ] concat
4215 [ 1 -0 -0 1 122 296 ] concat
4230 [ 1 0 0 1 -36.5 92.5 ] concat
4241 [ 0.5 -0 -0 0.5 174 494 ] concat
4256 [ 0.5 -0 -0 0.5 174 494 ] concat
4271 [ 0.5 -0 -0 0.5 174 494 ] concat
4286 [ 0.5 -0 -0 0.5 174 494 ] concat
4301 [ 0.5 -0 -0 0.5 174 494 ] concat
4316 [ 0.5 -0 -0 0.5 174 494 ] concat
4318 180 116 196 100 Line
4331 [ 0.5 -0 -0 0.5 174 494 ] concat
4333 196 100 212 116 Line
4346 [ 0.5 -0 -0 0.5 174 494 ] concat
4348 212 116 228 116 Line
4361 [ 0.5 -0 -0 0.5 174 494 ] concat
4363 228 116 244 100 Line
4376 [ 0.5 -0 -0 0.5 174 494 ] concat
4378 244 100 260 116 Line
4391 [ 0.5 -0 -0 0.5 174 494 ] concat
4393 260 116 276 100 Line
4406 [ 0.5 -0 -0 0.5 174 494 ] concat
4421 [ 1 0 0 1 112.5 93 ] concat
4432 [ 0.5 -0 -0 0.5 174 494 ] concat
4447 [ 0.5 -0 -0 0.5 174 494 ] concat
4462 [ 0.5 -0 -0 0.5 174 494 ] concat
4477 [ 0.5 -0 -0 0.5 174 494 ] concat
4492 [ 0.5 -0 -0 0.5 174 494 ] concat
4507 [ 0.5 -0 -0 0.5 174 494 ] concat
4509 180 116 196 100 Line
4522 [ 0.5 -0 -0 0.5 174 494 ] concat
4524 196 100 212 116 Line
4537 [ 0.5 -0 -0 0.5 174 494 ] concat
4539 212 116 228 116 Line
4552 [ 0.5 -0 -0 0.5 174 494 ] concat
4554 228 116 244 100 Line
4567 [ 0.5 -0 -0 0.5 174 494 ] concat
4569 244 100 260 116 Line
4582 [ 0.5 -0 -0 0.5 174 494 ] concat
4584 260 116 276 100 Line
4597 [ 0.5 -0 -0 0.5 174 494 ] concat
4614 [ 0.5 -0 -0 0.5 226 494 ] concat
4616 136 476 160 476 Line
4629 [ 0.5 -0 -0 0.5 244 596 ] concat
4631 136 272 160 272 Line
4644 [ 0.5 -0 -0 0.5 226 497 ] concat
4646 136 296 160 296 Line
4659 [ 0.5 -0 -0 0.5 244 554 ] concat
4661 136 272 160 272 Line
4668 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
4671 [ 1 0 0 1 297 692 ] concat
4681 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
4684 [ 1 0 0 1 313.5 716 ] concat
4700 [ 0.5 -0 -0 0.5 200 494 ] concat
4702 200 374 200 308 Line
4715 [ 0.5 -0 -0 0.5 200 494 ] concat
4717 200 404 200 470 Line
4730 [ 0.5 -0 -0 0.5 200 494 ] concat
4732 236 452 236 470 Line
4745 [ 0.5 -0 -0 0.5 200 494 ] concat
4747 236 422 236 398 Line
4754 %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-*
4757 [ 1 0 0 1 373 608 ] concat
4773 334 845 a Fn(Figure)14 b(1:)k(Lo)q(cation)13 b(of)h(P)o(arallelism)d
4774 (in)i(T)o(ypical)g(APHID)h(and)g(YBW)g(Searc)o(h)0 978
4775 y(ply)e(game-tree)f(is)h(b)q(eing)g(async)o(hronously)h(searc)o(hed)g
4776 (b)o(y)f(the)h(sla)o(v)o(es.)18 b(Before)13 b(describing)f(ho)o(w)g
4777 (the)h(master)e(kno)o(ws)h(when)0 1040 y(the)i Fm(d)g
4778 Fn(ply)f(searc)o(h)i(is)f(complete,)f(w)o(e)h(m)o(ust)f(\014rst)h
4779 (describ)q(e)i(ho)o(w)e(the)g(master)f(searc)o(hes)j(the)f
4780 Fm(d)1491 1025 y Fd(0)1516 1040 y Fn(ply)e(tree.)62 1102
4781 y(When)k(the)g(master)f(reac)o(hes)i(a)f(leaf)f(of)f(the)j
4782 Fm(d)810 1087 y Fd(0)837 1102 y Fn(ply)e(tree,)i(it)f(uses)g(a)g
4783 (reliable)f(or)g(appro)o(ximate)f(v)n(alue)h(for)g(the)h(leaf,)0
4784 1164 y(dep)q(ending)g(on)f(the)h(information)d(a)o(v)n(ailable.)24
4785 b(If)16 b(a)g Fm(d)10 b Fk(\000)i Fm(d)938 1149 y Fd(0)965
4786 1164 y Fn(ply)k(searc)o(h)i(result)f(is)g(a)o(v)n(ailable)d(from)g(the)
4787 k(sla)o(v)o(e,)e(that)g(will)0 1227 y(b)q(e)g(used.)22
4788 b(\(In)15 b(the)h(curren)o(t)g(implemen)o(tation,)11
4789 b(w)o(e)16 b(do)e(not)h(use)h(deep)q(er)h(ply)e(v)n(alues,)f(ev)o(en)i
4790 (if)e(they)h(are)h(a)o(v)n(ailable.)j(This)0 1289 y(will)12
4791 b(b)q(e)h(discussed)i(in)e(Section)g(4.\))18 b(Ho)o(w)o(ev)o(er,)13
4792 b(if)f(the)i Fm(d)7 b Fk(\000)h Fm(d)949 1274 y Fd(0)973
4793 1289 y Fn(ply)k(result)i(is)f(not)g(a)o(v)n(ailable,)d(then)k(the)g
4794 (algorithm)c(uses)k(the)0 1351 y(\\b)q(est)h(a)o(v)n(ailable")d(ply)h
4795 (result)i(that)g(had)e(b)q(een)j(returned)g(b)o(y)e(the)g(sla)o(v)o(e)g
4796 (to)g(generate)i(a)d(guessed)j(minim)o(ax)11 b(v)n(alue)1826
4797 1336 y Fi(2)1844 1351 y Fn(.)19 b(An)o(y)0 1413 y(no)q(de)14
4798 b(where)h(w)o(e)f(are)h(forced)f(to)g(guess)h(are)f(mark)o(ed)f(as)h
4799 Fl(unc)n(ertain)p Fn(.)62 1476 y(As)g(v)n(alues)g(get)g(bac)o(k)o(ed)g
4800 (up)f(the)h(tree,)h(the)f(master)f(main)o(tains)e(a)j(coun)o(t)g(of)f
4801 (ho)o(w)g(man)o(y)f(uncertain)i(no)q(des)g(ha)o(v)o(e)g(b)q(een)0
4802 1538 y(visited)d(in)f(a)h(pass)h(of)e(the)i(tree.)18
4803 b(As)11 b(long)g(as)g(the)g(score)h(at)f(an)o(y)g(of)f(the)i(lea)o(v)o
4804 (es)f(is)g(uncertain,)h(the)f(master)g(m)o(ust)f(do)h(another)0
4805 1600 y(pass)j(of)g(the)g(tree.)19 b(Once)c(the)g(master)e(has)h(a)f
4806 (reliable)h(v)n(alue)f(for)g(all)g(the)h(lea)o(v)o(es)g(in)g(its)g
4807 Fm(d)1423 1585 y Fd(0)1448 1600 y Fn(ply)f(tree,)h(the)h(searc)o(h)g
4808 (of)e(the)h Fm(d)0 1662 y Fn(ply)h(tree)h(is)f(complete.)22
4809 b(The)16 b(con)o(trolling)d(program)h(w)o(ould)h(then)h(pro)q(ceed)g
4810 (to)f(the)h(next)g(iteration)f(b)o(y)g(incremen)o(ting)f
4811 Fm(d)0 1725 y Fn(and)g(asking)f(the)h(master)g(to)g(searc)o(h)h(the)f
4812 (tree)h(again.)62 1787 y(Note)e(that)f(this)g(de\014nition)f(of)h(the)g
4813 (master)g(solv)o(es)g(one)g(of)g(the)g(problems)f(that)h(some)f
4814 (algorithms)f(ha)o(v)o(e)i(with)g(resp)q(ect)0 1849 y(to)k
4815 (initializing)d(parallelism)g(to)q(o)j(quic)o(kly)f(at)g(a)h(p)q(oten)o
4816 (tial)f Fe(CUT)g Fn(no)q(de.)24 b(By)17 b(using)e(the)i(guessed)g
4817 (scores)g(when)g(accurate)0 1912 y(information)9 b(is)j(not)f(a)o(v)n
4818 (ailable,)f(the)i(APHID)g(algorithm)e(automatically)e(determines)k(if)f
4819 (a)h(subsequen)o(t)i(c)o(hild)d(is)h(lik)o(ely)e(to)0
4820 1974 y(generate)15 b(a)f(cuto\013)g(at)g(a)f(failed)g
4821 Fe(CUT)g Fn(no)q(de.)19 b(If)13 b(it)h(seems)g(lik)o(ely)e(that)i(a)g
4822 (c)o(hild)f(will)f(generate)j(a)f(cuto\013)g(based)h(on)e(guessed)0
4823 2036 y(v)n(alues,)e(the)g(c)o(hildren)g(of)f(the)h(failed)e
4824 Fe(CUT)h Fn(no)q(de)h(are)g(ev)n(aluated)g(sequen)o(tially)m(.)16
4825 b(If)10 b(it)g(seems)h(unlik)o(ely)e(that)i(the)g(no)q(de)g(will)e(b)q
4826 (e)0 2098 y(cut)j(o\013)g(due)h(to)e(lo)o(w)g(minima)o(x)e(v)n(alues,)j
4827 (the)g(searc)o(h)h(w)o(ould)e(con)o(tin)o(ue)h(for)g(a)f(promising)f
4828 (no)q(de)i(at)g(that)g(branc)o(h)g(in)g(parallel.)0 2161
4829 y(This)j(is)g(all)f(handled)i(automatically)c(b)o(y)j(the)h
4830 Fm(\013\014)i Fn(routine.)k(The)16 b(handling)e(of)h(a)g(h)o(yp)q
4831 (othesized)h Fe(CUT)f Fn(no)q(de)h(is)f(stronger)0 2223
4832 y(than)g(the)g(equiv)n(alen)o(t)f(scenario)i(in)e(the)h(YBW)g
4833 (algorithm,)d(whic)o(h)j(ignores)g(previous)g(score)h(information)c(a)o
4834 (v)n(ailable)g(for)0 2285 y(some)f(branc)o(hes)i(of)f(the)h(failed)e
4835 Fe(CUT)g Fn(no)q(de.)18 b(In)12 b(the)h(full)d(v)o(ersion)j(of)e(YBW,)h
4836 (application-dep)q(enden)o(t)g(information)d(is)j(used)0
4837 2347 y(to)i(do)f(what)h(APHID)g(handles)g(automatically)d(with)j(the)g
4838 Fm(\013\014)i Fn(searc)o(h)f(windo)o(w.)62 2410 y(The)g(sla)o(v)o(es)g
4839 (are)g(resp)q(onsible)g(for)f(setting)h(their)g(o)o(wn)f(searc)o(h)i
4840 (windo)o(ws,)e(based)h(on)f(information)e(from)h(the)i(master.)0
4841 2472 y(Sometimes,)10 b(the)j(information)d(returned)k(b)o(y)e(the)h
4842 (sla)o(v)o(e)f(ma)o(y)f(not)h(b)q(e)h(useful)g(to)f(the)h(master.)k(F)m
4843 (or)12 b(example,)f(a)i(sla)o(v)o(e)f(can)0 2534 y(tell)h(the)i(master)
4844 e(that)h(the)g(score)h(of)f(a)f(giv)o(en)g(no)q(de)i(is)e(less)i(than)f
4845 (30,)e(but)i(the)h(master)e(ma)o(y)f(w)o(an)o(t)h(to)h(kno)o(w)f(if)g
4846 (the)i(score)p 0 2569 780 2 v 46 2596 a Fh(2)64 2607
4847 y Fg(Man)o(y)d(game-tree)f(searc)o(h)h(programs)e(exhibit)i(an)g
4848 (e\013ect)g(based)g(on)h(the)g(parit)o(y)e(of)i(the)g(searc)o(h)f
4849 (depth)f(\(o)q(dd)h(or)h(ev)o(en)f(n)o(um)o(b)q(er)g(of)g(ply\).)0
4850 2647 y(Scores)d(are)g(stable)g(when)h(y)o(ou)f(lo)q(ok)h(at)f(results)g
4851 (from)g(the)h(o)q(dd)f(plies)g(only)m(,)h(or)g(ev)o(en)f(plies)g(only)m
4852 (,)g(but)h(are)f(sometimes)f(unstable)g(when)i(y)o(ou)f(mix)0
4853 2686 y(the)i(t)o(w)o(o.)k(Th)o(us,)c(w)o(e)h(use)f(the)g(largest)f(ply)
4854 h(v)n(alue)f(with)h(the)g(same)f(parit)o(y)m(,)g(instead)g(of)h(alw)o
4855 (a)o(ys)g(using)f(the)h(largest)f(ply)h(v)n(alue)f(a)o(v)n(ailable.)965
4859 25575945 23681433 8420065 17234821 28417720 35653713 startTexFig
4861 %%BeginDocument: draw2.ps
4866 /IdrawDict 51 dict def
4870 dup dup findfont dup length dict begin
4871 { 1 index /FID ne { def }{ pop pop } ifelse } forall
4872 /Encoding ISOLatin1Encoding def
4873 currentdict end definefont
4876 /ISOLatin1Encoding [
4877 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
4878 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
4879 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
4880 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
4881 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
4882 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
4883 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
4884 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
4885 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
4886 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
4887 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
4888 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
4889 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
4890 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
4891 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
4892 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
4893 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
4894 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
4895 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
4896 /guillemotright/onequarter/onehalf/threequarters/questiondown
4897 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
4898 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
4899 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
4900 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
4901 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
4902 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
4903 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
4904 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
4905 /yacute/thorn/ydieresis
4907 /Helvetica reencodeISO def
4910 /numGraphicParameters 17 def
4911 /stringLimit 65535 def
4915 numGraphicParameters dict begin
4924 dup type /nulltype eq {
4926 false /brushRightArrow idef
4927 false /brushLeftArrow idef
4928 true /brushNone idef
4930 /brushDashOffset idef
4931 /brushDashArray idef
4932 0 ne /brushRightArrow idef
4933 0 ne /brushLeftArrow idef
4935 false /brushNone idef
4957 dup type /nulltype eq {
4958 pop true /patternNone idef
4961 /patternGrayLevel idef
4964 /patternGrayLevel idef
4966 false /patternNone idef
4975 0 0 0 0 0 0 1 1 true subspline
4977 0 0 0 0 1 1 2 2 false subspline
4980 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
4982 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
4984 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
4985 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
4986 brushNone not { istroke } if
4988 n 2 sub dup n 1 sub dup rightarrow
4991 } dup 0 4 dict put def
4996 patternNone not { ifill } if
4997 brushNone not { istroke } if
5005 n 1 sub dup 0 0 1 1 2 2 true subspline
5008 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
5010 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
5011 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
5012 patternNone not { ifill } if
5013 brushNone not { istroke } if
5018 } dup 0 4 dict put def
5027 patternNone not { ifill } if
5028 brushNone not { istroke } if
5030 } dup 0 1 dict put def
5036 x 0 get y 0 get moveto
5037 x 1 get y 1 get lineto
5038 brushNone not { istroke } if
5042 } dup 0 4 dict put def
5049 x 0 get y 0 get moveto
5052 x i get y i get lineto
5054 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
5055 brushNone not { istroke } if
5057 n 2 sub dup n 1 sub dup rightarrow
5060 } dup 0 4 dict put def
5069 patternNone not { ifill } if
5070 brushNone not { istroke } if
5085 patternNone not { ifill } if
5086 brushNone not { istroke } if
5088 } dup 0 4 dict put def
5095 dup where { pop pop pop } { exch def } ifelse
5101 patternGrayLevel -1 ne {
5102 fgred bgred fgred sub patternGrayLevel mul add
5103 fggreen bggreen fggreen sub patternGrayLevel mul add
5104 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
5108 originalCTM setmatrix
5109 pathbbox /t exch def /r exch def /b exch def /l exch def
5110 /w r l sub ceiling cvi def
5111 /h t b sub ceiling cvi def
5112 /imageByteWidth w 8 div ceiling cvi def
5114 bgred bggreen bgblue setrgbcolor
5116 fgred fggreen fgblue setrgbcolor
5118 l b translate w h scale
5119 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
5124 } dup 0 8 dict put def
5128 brushDashOffset -1 eq {
5132 brushDashArray brushDashOffset setdash
5133 fgred fggreen fgblue setrgbcolor
5135 brushWidth setlinewidth
5136 originalCTM setmatrix
5144 fgred fggreen fgblue setrgbcolor
5145 /fontDict printFont printSize scalefont dup setfont def
5146 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
5147 transform exch pop def
5148 /vertoffset 1 printSize sub descender sub def {
5149 0 vertoffset moveto show
5150 /vertoffset vertoffset printSize sub def
5154 } dup 0 3 dict put def
5157 /patternByteLength patternString length def
5158 /patternHeight patternByteLength 8 mul sqrt cvi def
5159 /patternWidth patternHeight def
5160 /patternByteWidth patternWidth 8 idiv def
5161 /imageByteMaxLength imageByteWidth imageHeight mul
5162 stringLimit patternByteWidth sub min def
5163 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
5164 patternHeight mul patternHeight max def
5165 /imageHeight imageHeight imageMaxHeight sub store
5166 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
5167 0 1 imageMaxHeight 1 sub {
5169 /patternRow y patternByteWidth mul patternByteLength mod def
5170 /patternRowString patternString patternRow patternByteWidth getinterval def
5171 /imageRow y imageByteWidth mul def
5172 0 patternByteWidth imageByteWidth 1 sub {
5174 imageString imageRow x add patternRowString putinterval
5179 } dup 0 12 dict put def
5182 dup 3 2 roll dup 4 3 roll lt { exch } if pop
5186 dup 3 2 roll dup 4 3 roll gt { exch } if pop
5198 } dup 0 4 dict put def
5206 x0 2 mul x1 add 3 div
5207 y0 2 mul y1 add 3 div
5209 } dup 0 4 dict put def
5213 /movetoNeeded exch def
5214 y exch get /y3 exch def
5215 x exch get /x3 exch def
5216 y exch get /y2 exch def
5217 x exch get /x2 exch def
5218 y exch get /y1 exch def
5219 x exch get /x1 exch def
5220 y exch get /y0 exch def
5221 x exch get /x0 exch def
5222 x1 y1 x2 y2 thirdpoint
5225 x2 y2 x1 y1 thirdpoint
5228 x1 y1 x0 y0 thirdpoint
5232 x2 y2 x3 y3 thirdpoint
5236 movetoNeeded { p0x p0y moveto } if
5237 p1x p1y p2x p2y p3x p3y curveto
5239 } dup 0 17 dict put def
5253 fgred fggreen fgblue setrgbcolor
5254 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
5258 dup 3 -1 roll dup 4 1 roll exch
5262 exch dup 3 1 roll exch lineto
5265 bgred bggreen bgblue setrgbcolor
5271 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
5277 transform originalCTM itransform
5280 transform originalCTM itransform
5283 /dy tipy taily sub def
5284 /dx tipx tailx sub def
5285 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
5287 originalCTM setmatrix
5291 arrowHeight neg arrowWidth 2 div moveto
5293 arrowHeight neg arrowWidth 2 div neg lineto
5295 originalCTM setmatrix
5296 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
5298 /padtail brushWidth 2 div def
5302 arrowHeight padtip add padtail add arrowHeight div dup scale
5307 originalCTM setmatrix
5315 } dup 0 9 dict put def
5319 arrowHeight neg arrowWidth 2 div moveto
5321 arrowHeight neg arrowWidth 2 div neg lineto
5326 y exch get /taily exch def
5327 x exch get /tailx exch def
5328 y exch get /tipy exch def
5329 x exch get /tipx exch def
5330 brushLeftArrow { tipx tipy tailx taily arrowhead } if
5332 } dup 0 4 dict put def
5336 y exch get /tipy exch def
5337 x exch get /tipx exch def
5338 y exch get /taily exch def
5339 x exch get /tailx exch def
5340 brushRightArrow { tipx tipy tailx taily arrowhead } if
5342 } dup 0 4 dict put def
5345 %I Idraw 10 Grid 6 6
5355 [ 0.799705 0 0 0.799705 0 0 ] concat
5356 /originalCTM matrix currentmatrix def
5365 [ 1 0 0 1 5.99997 0 ] concat
5370 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5373 [ 1 0 0 1 342 674 ] concat
5387 [ 1 0 0 1 8 26 ] concat
5392 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5395 [ 1 0 0 1 315 543.5 ] concat
5411 [ 0.5 -0 -0 0.5 278 428 ] concat
5425 [ 1 0 0 1 -4 26 ] concat
5436 [ 0.5 -0 -0 0.5 278 428 ] concat
5444 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5447 [ 1 0 0 1 339 543.5 ] concat
5463 [ 1 0 0 1 -10 26 ] concat
5474 [ 0.5 -0 -0 0.5 278 428 ] concat
5482 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5485 [ 1 0 0 1 357 544 ] concat
5501 [ 1 0 0 1 -16 26 ] concat
5512 [ 0.5 -0 -0 0.5 278 428 ] concat
5520 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5523 [ 1 0 0 1 375 544 ] concat
5539 [ 1 0 0 1 -22 26 ] concat
5550 [ 0.5 -0 -0 0.5 278 428 ] concat
5558 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5561 [ 1 0 0 1 393 544 ] concat
5577 [ 1 0 0 1 104 26 ] concat
5588 [ 0.5 -0 -0 0.5 278 428 ] concat
5596 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5599 [ 1 0 0 1 291 543.5 ] concat
5615 [ 1 0 0 1 -28 26 ] concat
5626 [ 0.5 -0 -0 0.5 278 428 ] concat
5634 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5637 [ 1 0 0 1 411 544 ] concat
5655 [ 0.5 -0 -0 0.5 278 428 ] concat
5670 [ 0.5 -0 -0 0.5 278 428 ] concat
5685 [ 0.5 -0 -0 0.5 278 428 ] concat
5687 164 452 272 260 Line
5698 [ 1 0 0 1 -71.5 99 ] concat
5709 [ 0.5 -0 -0 0.5 278 428 ] concat
5717 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5720 [ 1 0 0 1 428.5 544 ] concat
5732 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5735 [ 1 0 0 1 284 612.5 ] concat
5751 [ 0.5 -0 -0 0.5 226 395 ] concat
5753 148 518 100 518 Line
5766 [ 0.5 -0 -0 0.5 226 395 ] concat
5768 148 326 100 326 Line
5781 [ 0.5 -0 -0 0.5 226 395 ] concat
5783 124 446 124 506 Line
5796 [ 0.5 -0 -0 0.5 226 395 ] concat
5798 124 410 124 338 Line
5811 [ 1 0 0 1 18 -24 ] concat
5822 [ 0.5 -0 -0 0.5 278 428 ] concat
5830 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5833 [ 1 0 0 1 339 543.5 ] concat
5849 [ 1 0 0 1 84 -24 ] concat
5860 [ 0.5 -0 -0 0.5 278 428 ] concat
5868 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5871 [ 1 0 0 1 357 544 ] concat
5887 [ 1 0 0 1 -108 -24 ] concat
5898 [ 0.5 -0 -0 0.5 278 428 ] concat
5906 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5909 [ 1 0 0 1 375 544 ] concat
5925 [ 1 0 0 1 0 -24 ] concat
5936 [ 0.5 -0 -0 0.5 278 428 ] concat
5944 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5947 [ 1 0 0 1 393 544 ] concat
5963 [ 1 0 0 1 66 -24 ] concat
5974 [ 0.5 -0 -0 0.5 278 428 ] concat
5982 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
5985 [ 1 0 0 1 411 544 ] concat
6001 [ 1 0 0 1 -84 -24 ] concat
6006 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6009 [ 1 0 0 1 315 543.5 ] concat
6025 [ 0.5 -0 -0 0.5 278 428 ] concat
6039 [ 1 0 0 1 12 -24 ] concat
6050 [ 0.5 -0 -0 0.5 278 428 ] concat
6058 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6061 [ 1 0 0 1 291 543.5 ] concat
6079 [ 0.458861 0 0 0.489848 235.544 397.7 ] concat
6081 232 170 388 266 Rect
6093 [ 0.815325 0 0 0.489848 236.845 397.7 ] concat
6095 232 170 364 266 Rect
6107 [ 1.21519 0 0 0.046875 83.0438 492.703 ] concat
6109 100 241 376 241 Line
6116 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6119 [ 1 0 0 1 162 515 ] concat
6129 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6132 [ 1 0 0 1 162 503 ] concat
6142 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6145 [ 1 0 0 1 222 497 ] concat
6155 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6158 [ 1 0 0 1 258 497 ] concat
6168 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6171 [ 1 0 0 1 297.5 497 ] concat
6187 [ 0.5 0 0 0.5 148 395 ] concat
6189 136 170 352 266 Rect
6195 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6198 [ 1 0 0 1 348 497 ] concat
6208 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6211 [ 1 0 0 1 468 497 ] concat
6227 [ 1 0 0 1 130 131 ] concat
6242 [ 1 0 0 1 130 131 ] concat
6244 140 331 170 235 Line
6257 [ 1 0 0 1 130 131 ] concat
6272 [ 1 0 0 1 130 131 ] concat
6274 110 229 116 217 Line
6287 [ 1 0 0 1 130 131 ] concat
6289 116 217 122 247 Line
6302 [ 1 0 0 1 130 131 ] concat
6304 122 247 140 235 Line
6317 [ 1 0 0 1 130 131 ] concat
6319 140 235 146 247 Line
6332 [ 1 0 0 1 130 131 ] concat
6334 146 247 152 229 Line
6347 [ 1 0 0 1 130 131 ] concat
6349 152 229 158 247 Line
6362 [ 1 0 0 1 130 131 ] concat
6364 158 247 170 235 Line
6377 [ 0.5 0 0 0.5 234 263 ] concat
6379 288 398 204 194 Line
6392 [ 0.5 0 0 0.5 234 263 ] concat
6394 204 194 240 218 Line
6407 [ 0.5 0 0 0.5 234 263 ] concat
6409 240 218 252 230 Line
6422 [ 0.5 0 0 0.5 234 263 ] concat
6424 252 230 264 218 Line
6437 [ 0.5 0 0 0.5 234 263 ] concat
6439 264 218 276 182 Line
6452 [ 0.5 0 0 0.5 234 263 ] concat
6454 276 182 288 206 Line
6467 [ 0.5 0 0 0.5 234 263 ] concat
6469 288 206 300 230 Line
6482 [ 0.5 0 0 0.5 234 263 ] concat
6484 300 230 312 206 Line
6497 [ 0.5 0 0 0.5 234 263 ] concat
6499 312 206 324 230 Line
6512 [ 0.5 0 0 0.5 234 263 ] concat
6514 288 398 348 230 Line
6527 [ 0.5 0 0 0.5 234 263 ] concat
6529 324 230 348 230 Line
6542 [ 0.5 0 0 0.5 338 230 ] concat
6544 188 248 212 284 Line
6557 [ 0.5 0 0 0.5 338 230 ] concat
6559 212 284 236 248 Line
6572 [ 0.5 0 0 0.5 338 230 ] concat
6574 236 248 248 296 Line
6587 [ 0.5 0 0 0.5 338 230 ] concat
6589 248 296 272 260 Line
6602 [ 0.5 0 0 0.5 338 230 ] concat
6604 272 260 284 296 Line
6617 [ 0.5 0 0 0.5 338 230 ] concat
6619 284 296 308 272 Line
6632 [ 0.5 0 0 0.5 338 230 ] concat
6634 308 272 320 296 Line
6647 [ 0.5 0 0 0.5 338 230 ] concat
6649 260 464 320 296 Line
6662 [ 0.5 0 0 0.5 338 230 ] concat
6664 260 464 188 248 Line
6671 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6674 [ 1 0 0 1 246 341 ] concat
6684 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6687 [ 1 0 0 1 354 341 ] concat
6697 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6700 [ 1 0 0 1 444 341 ] concat
6714 [ 1 0 0 1 35.5 -97.5 ] concat
6725 [ 0.5 -0 -0 0.5 278 428 ] concat
6733 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6736 [ 1 0 0 1 339 543.5 ] concat
6752 [ 1 0 0 1 54 -97 ] concat
6763 [ 0.5 -0 -0 0.5 278 428 ] concat
6771 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6774 [ 1 0 0 1 411 544 ] concat
6790 [ 1 0 0 1 -24.5 -99 ] concat
6801 [ 0.5 -0 -0 0.5 278 428 ] concat
6809 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6812 [ 1 0 0 1 291 543.5 ] concat
6830 [ 0.5 0 0 0.5 130 296 ] concat
6832 100 320 148 320 Line
6845 [ 0.5 0 0 0.5 130 296 ] concat
6847 100 164 148 164 Line
6854 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6857 [ 1 0 0 1 180.5 421.5 ] concat
6873 [ 0.5 0 0 0.5 130 296 ] concat
6875 124 224 124 176 Line
6888 [ 0.5 0 0 0.5 130 296 ] concat
6890 124 260 124 308 Line
6897 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6900 [ 1 0 0 1 384 497 ] concat
6914 [ 1 0 0 1 60 -36 ] concat
6925 [ 0.5 -0 -0 0.5 278 362 ] concat
6933 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6936 [ 1 0 0 1 453 555.5 ] concat
6948 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6951 [ 1 0 0 1 504 497 ] concat
6961 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6964 [ 1 0 0 1 432 497 ] concat
6980 488 1745 a Fn(Figure)14 b(2:)k(A)c(Snapshot)g(of)f(APHID)i(Searc)o(h)f
6981 (In)g(Op)q(eration)0 1878 y(is)f(in)g(b)q(et)o(w)o(een)i(-5)e(and)g(5.)
6982 18 b(In)13 b(this)h(case,)g(a)f(\\bad)g(b)q(ound")h(searc)o(h)g(is)f
6983 (generated,)i(and)e(the)h(searc)o(h)h(windo)o(w)d(parameters,)0
6984 1940 y Fm(\013)j Fn(and)f Fm(\014)r Fn(,)h(m)o(ust)f(b)q(e)i(comm)o
6985 (unicated)c(to)j(the)h(sla)o(v)o(e)e(pro)q(cessor.)23
6986 b(An)o(y)15 b(no)q(des)g(where)h(w)o(e)f(are)h(w)o(aiting)d(for)i
6987 (\\bad)f(b)q(ound")0 2002 y(information)f(are)k(considered)g(as)f
6988 (uncertain)h(b)o(y)f(the)g(master,)g(ev)o(en)h(though)f(w)o(e)g(ha)o(v)
6989 o(e)g(a)g(score)h(b)q(ound)f(for)g(the)h Fm(d)10 b Fk(\000)h
6990 Fm(d)1939 1987 y Fd(0)0 2064 y Fn(ply)k(searc)o(h.)25
6991 b(Ev)o(en)o(tually)m(,)14 b(the)j(sla)o(v)o(e)e(will)f(return)j(up)q
6992 (dated)f(information)d(that)j(is)f(consisten)o(t)i(with)f(b)q(oth)g
6993 (the)g(original)0 2127 y(information)11 b(and)j(the)g(searc)o(h)h
6994 (windo)o(w)e(requested)824 2112 y Fi(3)845 2127 y Fn(.)0
6995 2243 y Fc(3.2)56 b(The)18 b(APHID)h(T)-5 b(able)0 2332
6996 y Fn(If)15 b(a)f(leaf)h(no)q(de)g(is)g(visited)g(b)o(y)g(the)g(master)g
6997 (for)g(the)g(\014rst)h(time,)d(it)i(is)g(statically)f(allo)q(cated)h
6998 (to)f(a)h(sla)o(v)o(e)g(pro)q(cessor.)23 b(This)0 2394
6999 y(information)14 b(is)j(recorded)h(in)f(a)f(table,)i(the)f
7000 Fl(APHID)h(table)p Fn(,)f(that)g(is)g(shared)h(b)o(y)e(all)g(pro)q
7001 (cessors.)29 b(Figure)17 b(2)g(sho)o(ws)g(an)0 2456 y(example)c(of)g
7002 (ho)o(w)g(the)i(APHID)f(table)g(w)o(ould)f(b)q(e)h(organized)g(at)g(a)f
7003 (giv)o(en)h(p)q(oin)o(t)f(in)h(time.)62 2519 y(The)h(APHID)f(table)g
7004 (is)g(partitioned)g(in)o(to)g(t)o(w)o(o)f(parts:)20 b(one)14
7005 b(whic)o(h)g(only)g(the)g(master)g(can)g(write)h(to,)f(and)g(one)g
7006 (whic)o(h)p 0 2553 780 2 v 46 2580 a Fh(3)64 2592 y Fg(It)f(ma)o(y)g
7007 (happ)q(en)f(that)h(the)g(original)f(searc)o(h)g(and)h(the)h(\\bad)e(b)
7008 q(ound")g(searc)o(h)h(are)g(inconsisten)o(t)e(with)j(one)f(another,)f
7009 (through)g(the)h(use)0 2631 y(of)h(searc)o(h)e(extensions)f(that)i(ma)o
7010 (y)g(or)h(ma)o(y)f(not)g(b)q(e)g(triggered)f(based)g(on)i(the)f(searc)o
7011 (h)g(windo)o(w)g(used.)22 b(In)13 b(this)h(case,)f(the)g(searc)o(h)g
7012 (explicitly)0 2671 y(requested)c(b)o(y)i(the)g(master)f(o)o(v)o
7013 (errides)f(the)i(informatio)o(n)e(that)h(had)h(b)q(een)f(previously)f
7014 (stored.)965 2828 y Fn(6)p eop
7016 7 6 bop 0 195 a Fn(only)14 b(the)h(sla)o(v)o(e)g(that)f(has)h(b)q(een)h
7017 (assigned)f(that)g(piece)h(of)e(w)o(ork)g(can)h(write)g(to.)21
7018 b(An)o(y)14 b(attempt)g(to)h(write)g(in)o(to)f(the)h(table)0
7019 257 y(generates)k(a)e(message)g(that)g(informs)f(the)i(sla)o(v)o(e)f
7020 (or)g(the)h(master)f(pro)q(cess)i(of)e(the)h(up)q(date)g(to)f(the)h
7021 (information.)26 b(The)0 320 y(master)13 b(and)f(sla)o(v)o(e)h(only)f
7022 (read)i(their)f(lo)q(cal)f(copies)i(of)e(the)i(information;)c(there)k
7023 (are)f(no)g(explicit)g(messages)g(sen)o(t)h(b)q(et)o(w)o(een)0
7024 382 y(the)g(master)g(and)g(the)g(sla)o(v)o(e)g(asking)f(for)g
7025 (information.)62 444 y(The)g(master's)f(half)f(of)h(the)h(table)f(is)h
7026 (illustrated)f(ab)q(o)o(v)o(e)g(the)h(dotted)g(line)f(in)g(Figure)g(2.)
7027 17 b(F)m(or)12 b(eac)o(h)h(leaf)f(that)g(has)h(b)q(een)0
7028 506 y(visited)h(b)o(y)f(the)h(master,)f(there)i(is)f(an)f(en)o(try)i
7029 (in)e(the)h(APHID)g(table.)k(Information)11 b(main)o(tained)h(on)h(the)
7030 i(lea)o(v)o(es)e(includes)0 569 y(the)g(mo)o(v)o(es)e(required)j(to)e
7031 (generate)i(the)f(leaf)f(p)q(ositions)g(from)f(the)i(ro)q(ot)g
7032 Fe(R)p Fn(,)f(the)h(appro)o(ximate)e(lo)q(cation)g(of)h(the)h(leaf)f
7033 (in)g(the)0 631 y(tree)k(\(whic)o(h)e(is)g(used)h(b)o(y)g(the)f(sla)o
7034 (v)o(e)g(to)h(prioritize)f(w)o(ork\),)g(whether)h(this)g(leaf)f(w)o(as)
7035 g(touc)o(hed)h(on)f(the)h(last)f(pass)h(that)f(the)0
7036 693 y(master)f(executed,)j(and)d(the)i(n)o(um)o(b)q(er)e(of)g(the)i
7037 (sla)o(v)o(e)e(that)h(the)h(leaf)e(w)o(as)h(allo)q(cated)f(to.)62
7038 756 y(In)h(our)f(example,)f(w)o(e)i(can)g(see)g(that)g(the)g(same)f(n)o
7039 (um)o(b)q(er)f(of)h(lea)o(v)o(es)h(ha)o(v)o(e)f(b)q(een)i(allo)q(cated)
7040 e(to)g(eac)o(h)h(sla)o(v)o(e.)k(Note)c(that)0 818 y(there)i(is)f(an)g
7041 (additional)f(leaf,)g(8,)h(that)g(is)g(not)g(represen)o(ted)j(in)c(the)
7042 i(master's)f Fm(d)1286 803 y Fd(0)1312 818 y Fn(ply)f(searc)o(h)j
7043 (tree.)23 b(This)15 b(leaf)f(no)q(de)i(has)0 880 y(b)q(een)f(visited)g
7044 (on)f(a)g(previous)h(pass)g(of)e(the)i Fm(d)723 865 y
7045 Fd(0)749 880 y Fn(ply)f(searc)o(h)h(tree,)g(and)g(w)o(as)f(not)g(touc)o
7046 (hed)h(on)f(the)h(latest)g(pass.)20 b(Ho)o(w)o(ev)o(er,)0
7047 942 y(the)14 b(information)c(that)k(the)g(sla)o(v)o(e)f(has)g
7048 (generated)i(ma)o(y)c(b)q(e)j(needed)h(in)e(a)g(later)g(pass)h(of)f
7049 (the)h(tree)g(and)f(is)h(not)f(deleted)h(b)o(y)0 1005
7050 y(the)g(master.)k(Lea)o(v)o(es)c(are)g(initially)e(allo)q(cated)h(to)h
7051 (the)g(sla)o(v)o(es)g(in)f(a)h(round-robin)f(manner,)f(and)i(ma)o(y)e
7052 (mo)o(v)o(e)g(due)i(to)g(load)0 1067 y(balancing)g(\(as)h(describ)q(ed)
7053 i(in)e(Section)h(3.4\).)k(Although)15 b(there)i(ma)o(y)c(b)q(e)i(b)q
7054 (etter)i(metho)q(ds)e(of)f(allo)q(cating)g(lea)o(v)o(es,)h(it)g(has)0
7055 1129 y(b)q(een)f(found)f(that)h(this)f(is)g(a)g(reasonable)h(metho)q(d)
7056 f(of)f(initially)f(balancing)h(the)i(load)f(on)g(a)g(small)e(n)o(um)o
7057 (b)q(er)h(of)h(pro)q(cessors.)62 1191 y(The)j(sla)o(v)o(e's)e(part)h
7058 (of)g(the)g(table,)g(illustrated)f(b)o(y)h(the)h(area)f(b)q(elo)o(w)f
7059 (the)i(dotted)g(line,)e(con)o(tains)h(information)d(on)i(the)0
7060 1254 y(result)f(of)e(searc)o(hing)i(the)g(p)q(osition)e(to)h(v)n
7061 (arious)f(depths)j(of)d(searc)o(h.)19 b(The)12 b(\\b)q(est")h
7062 (information)c(and)j(the)h(ply)e(to)h(whic)o(h)g(the)0
7063 1316 y(leaf)j(w)o(as)g(examined)f(is)i(giv)o(en)f(underneath)h(eac)o(h)
7064 g(leaf)f(no)q(de)h(in)f(the)h(tree.)24 b(F)m(or)15 b(leaf)g(1,)g(the)h
7065 (score)h(returned)g(is)e(-1)g(with)0 1378 y(a)f(searc)o(h)h(depth)f(of)
7066 g(4.)j(Leaf)d(3)g(illustrates)g(that)g(the)g(score)h(information)c
7067 (returned)16 b(b)o(y)e(the)g(sla)o(v)o(e)g(is)f(not)h(necessarily)h(an)
7068 0 1440 y(exact)h(n)o(um)o(b)q(er.)k(The)15 b(sla)o(v)o(es)g(main)o
7069 (tain)d(an)j(upp)q(er)h(b)q(ound)e(and)h(a)g(lo)o(w)o(er)f(b)q(ound)h
7070 (on)g(the)g(score)h(for)f(eac)o(h)g(ply)g(of)f(searc)o(h)0
7071 1503 y(depth.)19 b(The)14 b(score)h(is)f(kno)o(wn)f(to)h(b)q(e)h(exact)
7072 f(when)h(the)f(upp)q(er)h(and)f(lo)o(w)o(er)f(b)q(ounds)i(are)f(the)g
7073 (same.)0 1618 y Fc(3.3)56 b(Op)r(eration)17 b(of)i(Sla)n(v)n(e)g(in)f
7074 (APHID)0 1707 y Fn(A)c(sla)o(v)o(e)f(pro)q(cess)i(essen)o(tially)e
7075 (executes)j(the)e(same)e(co)q(de)j(that)e(a)g(sequen)o(tial)h
7076 Fm(\013\014)i Fn(searc)o(her)f(w)o(ould.)i(The)d(pro)q(cess)h(simply)0
7077 1770 y(rep)q(eats)g(the)g(follo)o(wing)c(three)k(steps)h(un)o(til)d
7078 (the)h(master)g(tells)f(it)h(that)g(the)g(searc)o(h)h(is)f(complete:)51
7079 1862 y(1.)20 b(Lo)q(ok)13 b(in)h(its)f(p)q(ortion)h(of)f(its)h(lo)q
7080 (cal)f(cop)o(y)h(of)f(the)i(APHID)f(table,)f(and)h(\014nd)g(the)g
7081 (highest)h(priorit)o(y)e(no)q(de)h(to)g(searc)o(h.)51
7082 1956 y(2.)20 b(Execute)15 b(the)g(searc)o(h.)51 2051
7083 y(3.)20 b(Rep)q(ort)14 b(the)g(result)h(bac)o(k)f(to)g(the)g(master)g
7084 (\(getting)f(an)h(up)q(date)h(to)e(its)h(APHID)g(table)g(in)g
7085 (return\).)62 2143 y(The)19 b(w)o(ork)e(selection)i(criterion)f(is)g
7086 (primarily)d(based)k(on)f(the)g(depth)h(to)f(whic)o(h)f(the)i(sla)o(v)o
7087 (e)f(has)g(already)f(searc)o(hed)0 2205 y(a)h(no)q(de.)31
7088 b(As)18 b(w)o(e)g(can)h(see)g(for)e(Sla)o(v)o(e)h(1)g(in)f(Figure)h(2,)
7089 h(lea)o(v)o(es)f(1,)g(4)g(and)g(7)f(ha)o(v)o(e)h(b)q(een)h(searc)o(hed)
7090 h(to)e(4,)g(3)g(and)g(0)f(ply)m(,)0 2268 y(resp)q(ectiv)o(ely)m(.)i(Th)
7091 o(us,)14 b(Sla)o(v)o(e)f(1)g(is)h(attempting)e(to)i(searc)o(h)h(leaf)e
7092 (7)h(to)f(1)h(ply)m(,)e(and)i(will)e(con)o(tin)o(ue)i(to)g(searc)o(h)h
7093 (leaf)e(7)h(up)g(to)f(3)0 2330 y(ply)g(b)o(y)h(using)g(iterativ)o(e)f
7094 (deep)q(ening,)i(if)e(no)h(new)g(w)o(ork)f(arriv)o(es)i(from)d(the)i
7095 (master.)62 2392 y(The)c(secondary)h(criterion)f(is)g(the)g(lo)q
7096 (cation)f(of)g(the)h(no)q(de)h(within)d(the)j(master's)e(game-tree.)16
7097 b(This)10 b(secondary)h(criterion)0 2455 y(is)f(necessary)j(since)e(it)
7098 f(is)g(usually)g(b)q(ene\014cial)h(to)f(generate)i(the)f(results)h(in)e
7099 (a)g(left)g(to)g(righ)o(t)g(order)h(for)g(the)g(master.)16
7100 b(Children)0 2517 y(of)e(no)q(des)h(are)g(usually)f(considered)h(in)g
7101 (a)f(b)q(est-to-w)o(orst)h(ordering,)f(implying)e(that)i(the)h
7102 (left-most)e(branc)o(hes)j(at)e(a)h(no)q(de)0 2579 y(ha)o(v)o(e)g(a)g
7103 (higher)g(probabilit)o(y)e(of)i(b)q(eing)g(useful)g(than)g(the)h(righ)o
7104 (t-most)d(ones.)22 b(F)m(or)15 b(Sla)o(v)o(e)f(2)h(in)g(Figure)g(2,)f
7105 (lea)o(v)o(es)i(2)e(and)h(5)0 2641 y(ha)o(v)o(e)f(b)q(oth)h(b)q(een)g
7106 (searc)o(hed)h(to)e(5)g(ply)m(,)f(but)h(leaf)g(2)g(is)g(b)q(eing)h
7107 (searc)o(hed)g(in)f(the)h(sla)o(v)o(e)f(to)g(6)g(ply)g(since)h(it)f(is)
7108 g(further)h(left)f(in)0 2704 y(the)g(tree)i(than)d(leaf)h(5.)965
7111 8 7 bop 62 195 a Fn(A)14 b(no)q(de)h(that)f(has)g(a)f(priorit)o(y)h(of)
7112 f(zero)i(\(b)q(ecause)h(it)d(is)h(no)g(longer)f(part)i(of)e(the)h
7113 (master's)g(tree\))h(will)e(not)h(b)q(e)g(selected)0
7114 257 y(for)d(further)i(searc)o(h.)18 b(F)m(or)11 b(Sla)o(v)o(e)g(3,)h(w)
7115 o(e)g(notice)g(that)f(Leaf)h(8)f(w)o(ould)g(b)q(e)h(searc)o(hed)i(if)c
7116 (it)i(had)f(b)q(een)i(touc)o(hed)f(b)o(y)g(the)g(master.)0
7117 320 y(Leaf)i(8)f(is)h(ignored)g(b)o(y)f(the)i(sc)o(heduling)f
7118 (algorithm)d(b)q(ecause)16 b(it)d(is)h(not)g(curren)o(tly)h(part)f(of)f
7119 (the)h(master's)g(tree.)62 382 y(Before)19 b(a)f(searc)o(h)h(can)f(b)q
7120 (e)h(executed,)h(an)e Fm(\013\014)i Fn(searc)o(h)f(windo)o(w)e(m)o(ust)
7121 g(b)q(e)i(generated)g(b)o(y)f(the)g(sla)o(v)o(e.)30 b(The)18
7122 b(master)0 444 y(con)o(tin)o(ually)f(advises)j(the)f(sla)o(v)o(es)g(of)
7123 g(the)g(leaf)s('s)f(lo)q(cation)h(within)f(the)h(master's)g(tree,)i
7124 (and)d(the)i(h)o(yp)q(othetical)f(v)n(alue)0 506 y(of)e(the)g(ro)q(ot)h
7125 (of)e(the)i(master's)f(tree.)29 b(Although)17 b(the)h(width)f(of)f(the)
7126 i(searc)o(h)g(windo)o(w)f(is)g(application-dep)q(enden)o(t,)h(one)0
7127 569 y(normally)12 b(w)o(an)o(ts)i(to)g(cen)o(ter)i(the)f(windo)o(w)f
7128 (around)g(this)h(h)o(yp)q(othesized)g(ro)q(ot)g(v)n(alue,)e(plus)h(or)h
7129 (min)o(us)d(a)j(factor)f(to)g(re\015ect)0 631 y(the)g(uncertain)o(t)o
7130 (y)h(in)e(it.)62 693 y(There)19 b(are)e(three)h(t)o(yp)q(es)g(of)f(up)q
7131 (date)h(messages)f(that)g(a)g(sla)o(v)o(e)g(receiv)o(es)h(from)e(the)h
7132 (master:)24 b(a)17 b(new)h(piece)g(of)e(w)o(ork)0 756
7133 y(has)g(b)q(een)h(added)f(to)f(the)i(sla)o(v)o(e)e(pro)q(cessor's)j
7134 (APHID)e(table,)f(the)i(lo)q(cation)d(of)h(a)h(leaf)f(no)q(de)h(within)
7135 f(the)i(master's)e(tree)0 818 y(has)g(c)o(hanged)h(\(c)o(hanging)e(the)
7136 i(secondary)g(w)o(ork)e(sc)o(heduling)i(criterion\),)f(and)g(a)g
7137 (noti\014cation)f(of)g(a)h(\\bad)g(b)q(ound")f(on)h(a)0
7138 880 y(no)q(de.)21 b(The)15 b(bad)g(b)q(ound)g(message)f(alerts)i(the)f
7139 (sla)o(v)o(e)f(that)h(a)g(p)q(osition's)f(searc)o(h)i(information)c(is)
7140 i(not)h(su\016cien)o(t)g(to)g(sa)o(v)o(e)0 942 y(the)g(no)q(de)h(from)d
7141 (b)q(eing)h(uncertain.)22 b(In)15 b(this)g(case,)g(the)h(sla)o(v)o(e)e
7142 (m)o(ust)g(re-searc)o(h)i(the)g(no)q(de)f(with)f(the)i
7143 Fm(\013\014)h Fn(searc)o(h)f(windo)o(w)0 1005 y(sen)o(t)f(b)o(y)e(the)i
7144 (master)e(to)h(the)g(ply)g(requested.)62 1067 y(As)19
7145 b(a)g(p)q(erformance)f(impro)o(v)o(emen)o(t,)f(w)o(e)i(w)o(an)o(t)f(to)
7146 h(force)g(the)g(sla)o(v)o(e)f(to)h(alw)o(a)o(ys)f(w)o(ork)g(on)g(no)q
7147 (des)i(for)e(the)h(curren)o(t)0 1129 y(searc)o(h)c(depth)f(of)f(the)h
7148 (master.)j(When)d(all)e(the)i(sla)o(v)o(e's)f(w)o(ork)h(has)f(b)q(een)i
7149 (searc)o(hed)g(to)e(the)h(required)h(depth,)f(rather)g(than)0
7150 1191 y(b)q(ecoming)g(idle,)g(it)g(starts)i(re-searc)o(hing)g(its)e(w)o
7151 (ork)h(an)f(additional)f(ply)i(deep)q(er,)h(in)e(an)o(ticipation)g(of)g
7152 (the)h(next)g(iteration)0 1254 y(\(depth)g Fm(d)9 b Fn(+)h(1\).)19
7153 b(When)14 b(this)g(is)g(happ)q(ening,)g(the)h(sla)o(v)o(e)f(routinely)g
7154 (c)o(hec)o(ks)h(the)g(comm)o(unicatio)o(n)d(c)o(hannel)i(for)g
7155 (messages)0 1316 y(from)c(the)i(master.)17 b(If)11 b(the)h(sla)o(v)o(e)
7156 f(receiv)o(es)i(a)e(new)h(piece)h(of)d(w)o(ork)i(to)f(do)g(at)g
7157 Fm(d)t Fk(\000)t Fm(d)1269 1301 y Fd(0)1293 1316 y Fn(ply)g(or)g(less,)
7158 h(the)g(searc)o(h)h(is)e(immediately)0 1378 y(ab)q(orted)j(and)g(con)o
7159 (trol)g(is)g(returned)h(to)f(the)g(sla)o(v)o(e's)g(sc)o(heduling)g
7160 (algorithm.)0 1494 y Fc(3.4)56 b(Load)18 b(Balancing)0
7161 1583 y Fn(Although)c(the)g(master)g(attemps)g(to)g(giv)o(e)g(an)g
7162 (equal)f(amoun)o(t)g(of)g(w)o(ork)h(to)g(eac)o(h)h(sla)o(v)o(e)f(in)g
7163 (APHID,)g(neither)h(the)f(master)0 1646 y(nor)h(the)h(sla)o(v)o(e)e
7164 (can)i(predict)g(the)f(amoun)o(t)f(of)g(e\013ort)i(required)g(to)f
7165 (complete)f(a)h Fm(d)9 b Fk(\000)i Fm(d)1377 1631 y Fd(0)1403
7166 1646 y Fn(ply)j(searc)o(h)j(for)d(a)h(giv)o(en)g(piece)h(of)0
7167 1708 y(w)o(ork.)i(In)13 b(games)f(suc)o(h)i(as)f(c)o(hess,)i(there)f
7168 (are)g(no)f(completely)f(reliable)h(indicators)g(of)g(the)h
7169 (\\e\013ort")f(required)i(for)d(a)h(giv)o(en)0 1770 y(searc)o(h.)19
7170 b(Th)o(us,)14 b(load)f(im)o(balances)f(can)i(o)q(ccur)h(based)g(on)e
7171 (the)i(allo)q(cation)d(of)h(w)o(ork)h(to)g(sla)o(v)o(es.)62
7172 1833 y(The)j(master)g(kno)o(ws)f(all)g(of)g(the)i(information)13
7173 b(ab)q(out)k(ho)o(w)g(man)o(y)d(uncertain)k(no)q(des)g(it)e(is)h(w)o
7174 (aiting)e(for)h(from)f(eac)o(h)0 1895 y(sla)o(v)o(e.)24
7175 b(Th)o(us,)16 b(the)g(master)g(has)g(information)d(on)i(when)i(to)e(mo)
7176 o(v)o(e)g(lea)o(v)o(es)h(from)e(the)i Fm(d)1405 1880
7177 y Fd(0)1432 1895 y Fn(ply)g(tree)h(from)d(an)i Fl(overworke)n(d)0
7178 1957 y(slave)f Fn(\(a)g(sla)o(v)o(e)g(with)g(a)g(large)h(n)o(um)o(b)q
7179 (er)e(of)h(uncertain)h(no)q(des\))g(to)f(an)g Fl(underworke)n(d)i
7180 (slave)e Fn(\(a)g(sla)o(v)o(e)g(with)g(no)g(uncertain)0
7181 2019 y(no)q(des\).)24 b(This)15 b(yields)g(a)g(tradeo\013)h(b)q(et)o(w)
7182 o(een)h(faster)f(con)o(v)o(ergence)h(for)e(a)h(giv)o(en)f(ply)f(searc)o
7183 (h)j(of)e(the)h(tree)h(and)e(additional)0 2082 y(searc)o(h)g(o)o(v)o
7184 (erhead,)f(as)g(discussed)h(in)f(Section)g(4.)0 2198
7185 y Fc(3.5)56 b(Implem)o(en)n(tation)0 2287 y Fn(The)17
7186 b(APHID)f(algorithm)e(has)j(b)q(een)g(written)g(as)g(an)f
7187 (application-indep)q(enden)o(t)g(library)g(of)f(C)i(routines.)26
7188 b(The)17 b(library)0 2349 y(w)o(as)12 b(written)g(to)f(pro)o(vide)h
7189 (minim)o(al)c(in)o(terv)o(en)o(tion)j(in)o(to)g(a)h(w)o(orking)e(v)o
7190 (ersion)i(of)f(sequen)o(tial)h Fm(\013\014)i Fn(\(or)e(its)f(common)e
7191 (v)n(arian)o(ts:)0 2411 y(NegaScout[18,)k(20)o(])g(and)g(Principal)g(V)
7192 m(ariation)f(Searc)o(h)i(\(PVS\))g([16)o(]\).)k(Since)c(the)g(library)e
7193 (is)i(application-indep)q(enden)o(t,)0 2474 y(a)c(p)q(oten)o(tial)g
7194 (user)i(m)o(ust)e(write)g(a)h(few)f(application-dep)q(enden)o(t)h
7195 (routines)g(\(suc)o(h)h(as)f(mo)o(v)o(e)d(format,)h(ho)o(w)i(to)f(mak)o
7196 (e/unmak)o(e)0 2536 y(mo)o(v)o(es,)j(p)q(osition)i(format,)e(setting)i
7197 (a)g(windo)o(w)f(for)g(a)h(sla)o(v)o(e's)f(searc)o(h,)i
7198 Fl(etc)p Fn(.\).)21 b(APHID's)15 b(message)g(passing)g(w)o(as)f
7199 (written)0 2598 y(using)g(PVM)g([23)o(])f(to)h(allo)o(w)e(for)i(the)g
7200 (maxim)o(um)9 b(p)q(ortabilit)o(y)k(among)e(a)o(v)n(ailable)h(hardw)o
7201 (are.)62 2660 y(T)m(o)h(parallelize)f(a)i(sequen)o(tial)f
7202 Fm(\013\014)j Fn(program,)11 b(the)j(user)g(mo)q(di\014es)f(his)g(or)g
7203 (her)h(searc)o(h)h(routine)f(as)f(sho)o(wn)g(in)g(Figure)h(3.)965
7206 9 8 bop 0 195 a Fn(The)15 b(APHID)f(c)o(hanges)h(are)f(mark)o(ed)f(b)o
7207 (y)h(shading,)f(and)h(easily)g(\014t)g(in)o(to)g(standard)g
7208 Fm(\013\014)j Fn(framew)o(orks.)g(This)d(one)h(piece)g(of)0
7209 257 y(co)q(de)g(functions)f(as)g(the)g(searc)o(h)h(algorithm)c(for)j(b)
7210 q(oth)g(the)g(master)g(and)g(the)g(sla)o(v)o(e)g(pro)q(cesses.)62
7211 320 y(There)i(are)f(a)g(few)f(additional)f(calls)i(that)f(ha)o(v)o(e)h
7212 (to)f(b)q(e)i(added)f(to)f(the)i(iterativ)o(e)e(deep)q(ening)i(routine)
7213 f(that)g(calls)f Fm(\013\014)r Fn(,)0 382 y(outlined)f(in)h(Figure)g
7214 (4.)62 444 y(Initially)m(,)c(it)i(w)o(as)g(an)o(ticipated)g(that)h(all)
7215 e(users)j(w)o(ould)d(w)o(an)o(t)h(to)h(searc)o(h)g(in)f(parallel)f
7216 (from)g(the)i(ro)q(ot)f(of)g(the)h(game)e(tree.)0 506
7217 y(Ho)o(w)o(ev)o(er,)i(there)i(are)e(some)f(programs)g(that)h(wish)g(to)
7218 g(handle)g(the)h(ro)q(ot)f(of)f(the)i(game)d(tree)k(in)d(a)h
7219 (di\013eren)o(t)h(w)o(a)o(y)e(than)h(the)0 569 y(other)j(lea)o(v)o(es)f
7220 (of)f(the)i(searc)o(h)g(tree)g(\(b)o(y)f(adding)f(calls)h(to)g(the)g
7221 (time-con)o(trol)f(mec)o(hanism,)e(and)j(sp)q(ecial)g(handling)f(of)g
7222 (the)0 631 y Fm(\013\014)19 b Fn(searc)o(h)f(windo)o(w\).)25
7223 b(APHID)17 b(has)g(b)q(een)h(generalized)f(to)g(in)o(tegrate)g(with)f
7224 (this)h(st)o(yle)g(of)f(searc)o(hing)h(the)g(game)e(tree;)0
7225 693 y(Figure)e(5)f(illustrates)g(the)h(c)o(hanges)g(necessary)m(.)20
7226 b(The)12 b(only)g(signi\014can)o(t)g(c)o(hange)h(from)d(Figure)j(4)f
7227 (is)g(the)h(addition)f(of)g(a)g(call)0 756 y(to)i Fe(aphid)p
7228 164 756 14 2 v 14 w(intnode)p 332 756 V 15 w(premove)p
7229 Fn(.)62 818 y(There)h(are)g(t)o(w)o(o)e(calls)g(that)h(are)h(inserted)g
7230 (in)o(to)e(the)i(main)c(program,)h(whic)o(h)i(are)g(illustrated)g(in)f
7231 (Figure)h(6.)62 880 y(A)k(brief)g(explanation)f(of)g(the)i(parameters)f
7232 (and)g(function)f(of)h(eac)o(h)g(of)g(these)h Fe(aphid)p
7233 1461 880 V 33 w Fn(routines)f(can)g(b)q(e)h(found)e(in)0
7234 942 y(App)q(endix)d(A.)0 1080 y Fo(4)69 b(Exp)r(erimen)n(ts)0
7235 1183 y Fn(The)12 b(APHID)f(game-indep)q(enden)o(t)h(library)e(w)o(as)i
7236 (inserted)g(in)o(to)f Fj(TheTurk)h Fn(c)o(hess)h(program,)d(written)i
7237 (b)o(y)f(Yngvi)g(Bjorns-)0 1245 y(son)16 b(and)g(Andreas)h(Junghanns)g
7238 (at)f(the)h(Univ)o(ersit)o(y)f(of)f(Alb)q(erta.)25 b(With)16
7239 b(less)h(than)f(one)g(da)o(y)g(of)f(programming)e(e\013ort,)0
7240 1307 y(w)o(e)j(had)g(a)g(running)f(parallel)g(program)g(based)h(on)g
7241 (the)g(APHID)h(algorithm)c(that)j(could)g(run)g(on)g(a)f(series)j(of)d
7242 (w)o(orksta-)0 1370 y(tions.)i(Along)11 b(with)h(the)h(additional)d
7243 (calls)h(added)i(to)e(PVS,)h(the)h(iterativ)o(e)f(deep)q(ening)h
7244 (routine,)f(and)g(the)g(main)e(program,)0 1432 y(roughly)15
7245 b(100)g(lines)h(of)f(co)q(de)i(w)o(ere)g(de\014ned)g(for)e(the)i
7246 Fe(aphid)p 970 1432 V 14 w(stub)p 1072 1432 V 31 w Fn(routines,)g
7247 (whose)f(purp)q(ose)h(is)f(brie\015y)g(describ)q(ed)h(in)0
7248 1494 y(App)q(endix)d(A.)62 1557 y(T)m(o)j(test)h(the)g(algorithm,)d
7249 Fj(TheTurk)j Fn(w)o(as)g(programmed)c(to)k(searc)o(h)g(the)g(24)f
7250 (Bratk)o(o-Kop)q(ec)h(p)q(ositions)f([11)o(])g(to)g(a)0
7251 1619 y(depth)e(of)e Fm(d)e Fn(=)h(8)h(ply)m(,)g(with)g(the)i(master)e
7252 (con)o(trolling)g(the)h(top)g Fm(d)1031 1604 y Fd(0)1054
7253 1619 y Fn(=)e(3)h(ply)h(of)f(the)h(tree.)62 1681 y(P)o(arallel)e(tests)
7254 i(w)o(ere)f(run)g(on)g(4,)f(8,)g(12)g(and)h(16)f(w)o(orkstations)g(on)h
7255 (a)f(net)o(w)o(ork)h(of)f(SUN)h(4s.)18 b(One)13 b(w)o(orkstation)f(in)g
7256 (eac)o(h)0 1743 y(exp)q(erimen)o(t)i(w)o(as)g(completely)f(o)q(ccupied)
7257 i(b)o(y)e(the)i Fe(master)e Fn(pro)q(cess,)i(while)f(the)g(other)h(w)o
7258 (orkstations)f(eac)o(h)g(ran)g(a)g Fe(slave)0 1806 y
7259 Fn(pro)q(cess.)20 b(On)14 b(the)h(a)o(v)n(ailable)c(hardw)o(are,)j
7260 Fj(TheTurk)h Fn(visits)e(appro)o(ximately)f(2500)g(no)q(des)j(p)q(er)g
7261 (second.)62 1868 y(P)o(arallel)c(and)h(sequen)o(tial)g(algorithms)e
7262 (are)i(notoriously)g(p)q(o)q(or)g(when)g(it)g(comes)g(to)g(exact)g(con)
7263 o(v)o(ergence)i(when)f(the)f(full)0 1930 y(v)o(ersion)i(of)f(the)i
7264 (program)d(is)i(used)h([14)o(].)i(F)m(or)d(example,)e(di\013eren)o(t)j
7265 (searc)o(h)g(windo)o(ws)e(cause)i(di\013eren)o(t)g(searc)o(h)g
7266 (extensions)0 1992 y(to)h(b)q(e)g(turned)h(on,)f(causing)g(di\013eren)o
7267 (t)h(alpha-b)q(eta)e(results.)25 b(Th)o(us,)17 b(all)d(searc)o(h)k
7268 (extensions)f(and)e(n)o(ull)g(mo)o(v)o(e)f(searc)o(hing)0
7269 2055 y(w)o(ere)20 b(turned)g(o\013)f(for)g(this)g(exp)q(erimen)o(t.)34
7270 b(Since)20 b(some)e(w)o(ork)h(could)g(b)q(e)h(ev)n(aluated)f(to)g
7271 Fm(d)12 b Fn(+)h(1-ply)18 b(b)q(efore)i(the)g Fm(d)p
7272 Fn(-ply)0 2117 y(result)d(is)f(\014nished,)g(w)o(e)h(also)e(forced)i
7273 (the)f(transp)q(osition)g(table)g(to)g(rep)q(ort)h(only)e(transp)q
7274 (osition)h(table)g(scores)i(that)e(had)0 2179 y(b)q(een)g(searc)o(hed)h
7275 (to)d(the)i(exact)f(depth)h(\(as)f(in)g(Figure)g(3\).)21
7276 b(Quiescence)c(searc)o(h)f(w)o(as)f(left)g(in)f Fj(TheTurk)i
7277 Fn(to)e(prev)o(en)o(t)i(the)0 2241 y(ev)n(aluations)d(from)f(b)q(eing)i
7278 (signi\014can)o(tly)f(unstable.)62 2304 y(Although)g(this)f(list)h(of)f
7279 (c)o(hanges)i(is)e(incomplete)g(to)h(guaran)o(tee)g(the)h(same)e(minim)
7280 o(ax)d(v)n(alue)k(is)f(returned)j(b)o(y)d(b)q(oth)h(the)0
7281 2366 y(sequen)o(tial)g(and)g(parallel)f(programs,)g(this)h(list)g
7282 (constitutes)i(the)f(c)o(hanges)g(made)e(to)h Fj(TheTurk)h
7283 Fn(without)f(doing)f(serious)0 2428 y(damage)f(to)h(the)h(p)q
7284 (erformance)g(of)e(the)j(program.)h(In)e(the)g(v)o(ersion)g(tested,)h
7285 (o)o(v)o(er)e(90\045)g(of)f(the)j(parallel)d(searc)o(hes)j(returned)0
7286 2491 y(the)g(same)e(minim)o(ax)e(v)n(alue)j(as)g(the)h(sequen)o(tial)f
7287 (searc)o(h,)h(and)f(the)h(principal)e(v)n(ariation)g(w)o(as)h(correct)i
7288 (for)e(all)e(but)j(1)f(of)f(the)0 2553 y(96)h(searc)o(hes)j(executed)g
7289 (in)d(parallel.)62 2615 y(Figure)e(7)f(illustrates)h(the)g(a)o(v)o
7290 (erage)g(sp)q(eedups)i(for)d(5)g(to)h(8)f(ply)g(searc)o(hes,)j(whic)o
7291 (h)e(are)g(the)g(searc)o(hes)i(that)d(w)o(ere)i(executed)0
7292 2677 y(in)h(parallel.)k(The)e(graph)e(sho)o(ws)i(that)f(as)f(the)i
7293 (depth)g(of)e(the)h(searc)o(h)h(increases,)g(so)f(do)q(es)h(the)g(sp)q
7294 (eedup.)965 2828 y(9)p eop
7297 15582380 33154007 1184071 3025960 24010342 51178209 startTexFig
7299 %%BeginDocument: code4.ps
7304 /IdrawDict 51 dict def
7308 dup dup findfont dup length dict begin
7309 { 1 index /FID ne { def }{ pop pop } ifelse } forall
7310 /Encoding ISOLatin1Encoding def
7311 currentdict end definefont
7314 /ISOLatin1Encoding [
7315 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
7316 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
7317 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
7318 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
7319 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
7320 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
7321 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
7322 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
7323 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
7324 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
7325 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
7326 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
7327 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
7328 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
7329 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
7330 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
7331 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
7332 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
7333 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
7334 /guillemotright/onequarter/onehalf/threequarters/questiondown
7335 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
7336 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
7337 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
7338 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
7339 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
7340 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
7341 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
7342 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
7343 /yacute/thorn/ydieresis
7345 /Courier reencodeISO def
7348 /numGraphicParameters 17 def
7349 /stringLimit 65535 def
7353 numGraphicParameters dict begin
7362 dup type /nulltype eq {
7364 false /brushRightArrow idef
7365 false /brushLeftArrow idef
7366 true /brushNone idef
7368 /brushDashOffset idef
7369 /brushDashArray idef
7370 0 ne /brushRightArrow idef
7371 0 ne /brushLeftArrow idef
7373 false /brushNone idef
7395 dup type /nulltype eq {
7396 pop true /patternNone idef
7399 /patternGrayLevel idef
7402 /patternGrayLevel idef
7404 false /patternNone idef
7413 0 0 0 0 0 0 1 1 true subspline
7415 0 0 0 0 1 1 2 2 false subspline
7418 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
7420 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
7422 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
7423 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
7424 brushNone not { istroke } if
7426 n 2 sub dup n 1 sub dup rightarrow
7429 } dup 0 4 dict put def
7434 patternNone not { ifill } if
7435 brushNone not { istroke } if
7443 n 1 sub dup 0 0 1 1 2 2 true subspline
7446 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
7448 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
7449 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
7450 patternNone not { ifill } if
7451 brushNone not { istroke } if
7456 } dup 0 4 dict put def
7465 patternNone not { ifill } if
7466 brushNone not { istroke } if
7468 } dup 0 1 dict put def
7474 x 0 get y 0 get moveto
7475 x 1 get y 1 get lineto
7476 brushNone not { istroke } if
7480 } dup 0 4 dict put def
7487 x 0 get y 0 get moveto
7490 x i get y i get lineto
7492 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
7493 brushNone not { istroke } if
7495 n 2 sub dup n 1 sub dup rightarrow
7498 } dup 0 4 dict put def
7507 patternNone not { ifill } if
7508 brushNone not { istroke } if
7523 patternNone not { ifill } if
7524 brushNone not { istroke } if
7526 } dup 0 4 dict put def
7533 dup where { pop pop pop } { exch def } ifelse
7539 patternGrayLevel -1 ne {
7540 fgred bgred fgred sub patternGrayLevel mul add
7541 fggreen bggreen fggreen sub patternGrayLevel mul add
7542 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
7546 originalCTM setmatrix
7547 pathbbox /t exch def /r exch def /b exch def /l exch def
7548 /w r l sub ceiling cvi def
7549 /h t b sub ceiling cvi def
7550 /imageByteWidth w 8 div ceiling cvi def
7552 bgred bggreen bgblue setrgbcolor
7554 fgred fggreen fgblue setrgbcolor
7556 l b translate w h scale
7557 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
7562 } dup 0 8 dict put def
7566 brushDashOffset -1 eq {
7570 brushDashArray brushDashOffset setdash
7571 fgred fggreen fgblue setrgbcolor
7573 brushWidth setlinewidth
7574 originalCTM setmatrix
7582 fgred fggreen fgblue setrgbcolor
7583 /fontDict printFont printSize scalefont dup setfont def
7584 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
7585 transform exch pop def
7586 /vertoffset 1 printSize sub descender sub def {
7587 0 vertoffset moveto show
7588 /vertoffset vertoffset printSize sub def
7592 } dup 0 3 dict put def
7595 /patternByteLength patternString length def
7596 /patternHeight patternByteLength 8 mul sqrt cvi def
7597 /patternWidth patternHeight def
7598 /patternByteWidth patternWidth 8 idiv def
7599 /imageByteMaxLength imageByteWidth imageHeight mul
7600 stringLimit patternByteWidth sub min def
7601 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
7602 patternHeight mul patternHeight max def
7603 /imageHeight imageHeight imageMaxHeight sub store
7604 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
7605 0 1 imageMaxHeight 1 sub {
7607 /patternRow y patternByteWidth mul patternByteLength mod def
7608 /patternRowString patternString patternRow patternByteWidth getinterval def
7609 /imageRow y imageByteWidth mul def
7610 0 patternByteWidth imageByteWidth 1 sub {
7612 imageString imageRow x add patternRowString putinterval
7617 } dup 0 12 dict put def
7620 dup 3 2 roll dup 4 3 roll lt { exch } if pop
7624 dup 3 2 roll dup 4 3 roll gt { exch } if pop
7636 } dup 0 4 dict put def
7644 x0 2 mul x1 add 3 div
7645 y0 2 mul y1 add 3 div
7647 } dup 0 4 dict put def
7651 /movetoNeeded exch def
7652 y exch get /y3 exch def
7653 x exch get /x3 exch def
7654 y exch get /y2 exch def
7655 x exch get /x2 exch def
7656 y exch get /y1 exch def
7657 x exch get /x1 exch def
7658 y exch get /y0 exch def
7659 x exch get /x0 exch def
7660 x1 y1 x2 y2 thirdpoint
7663 x2 y2 x1 y1 thirdpoint
7666 x1 y1 x0 y0 thirdpoint
7670 x2 y2 x3 y3 thirdpoint
7674 movetoNeeded { p0x p0y moveto } if
7675 p1x p1y p2x p2y p3x p3y curveto
7677 } dup 0 17 dict put def
7691 fgred fggreen fgblue setrgbcolor
7692 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
7696 dup 3 -1 roll dup 4 1 roll exch
7700 exch dup 3 1 roll exch lineto
7703 bgred bggreen bgblue setrgbcolor
7709 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
7715 transform originalCTM itransform
7718 transform originalCTM itransform
7721 /dy tipy taily sub def
7722 /dx tipx tailx sub def
7723 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
7725 originalCTM setmatrix
7729 arrowHeight neg arrowWidth 2 div moveto
7731 arrowHeight neg arrowWidth 2 div neg lineto
7733 originalCTM setmatrix
7734 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
7736 /padtail brushWidth 2 div def
7740 arrowHeight padtip add padtail add arrowHeight div dup scale
7745 originalCTM setmatrix
7753 } dup 0 9 dict put def
7757 arrowHeight neg arrowWidth 2 div moveto
7759 arrowHeight neg arrowWidth 2 div neg lineto
7764 y exch get /taily exch def
7765 x exch get /tailx exch def
7766 y exch get /tipy exch def
7767 x exch get /tipx exch def
7768 brushLeftArrow { tipx tipy tailx taily arrowhead } if
7770 } dup 0 4 dict put def
7774 y exch get /tipy exch def
7775 x exch get /tipx exch def
7776 y exch get /taily exch def
7777 x exch get /tailx exch def
7778 brushRightArrow { tipx tipy tailx taily arrowhead } if
7780 } dup 0 4 dict put def
7783 %I Idraw 10 Grid 6 6
7793 [ 0.799705 0 0 0.799705 0 0 ] concat
7794 /originalCTM matrix currentmatrix def
7805 [ 0.99763 -0 -0 3.92857 18.0284 -414.643 ] concat
7819 [ 0.99763 -0 -0 3.07143 18.0284 -128.357 ] concat
7833 [ 1 -0 -0 1 18 477 ] concat
7847 [ 1 -0 -0 1 18 -57 ] concat
7861 [ 1 -0 -0 1 18 -27 ] concat
7875 [ 1 -0 -0 1 18 177 ] concat
7889 [ 1 -0 -0 1 18 219 ] concat
7903 [ 1 -0 -0 1 18 81 ] concat
7911 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
7914 [ 1 0 0 1 42 957 ] concat
7917 (int PVS\(p, alpha, beta, depth, plytogo\))
7924 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
7927 [ 1 0 0 1 42 945 ] concat
7937 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
7940 [ 1 0 0 1 42 933 ] concat
7950 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
7953 [ 1 0 0 1 42 921 ] concat
7956 (int depth, plytogo;)
7963 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
7966 [ 1 0 0 1 42 909 ] concat
7976 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
7979 [ 1 0 0 1 72 873 ] concat
7982 (int h_length; /* ply position previously searched to */)
7989 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
7992 [ 1 0 0 1 72 897 ] concat
7995 (char *p_hash; /* pointer to hash value */)
8002 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8005 [ 1 0 0 1 72 885 ] concat
8008 (char *p_key; /* pointer to hash table "lock" */)
8015 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8018 [ 1 0 0 1 72 861 ] concat
8021 (int h_score; /* score for h_length ply */)
8028 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8031 [ 1 0 0 1 72 849 ] concat
8034 (int h_flag; /* VALID, LBOUND or UBOUND */)
8041 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8044 [ 1 0 0 1 72 837 ] concat
8047 (move *h_move; /* recommended move for h_length ply */)
8054 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8057 [ 1 0 0 1 72 825 ] concat
8060 (int width; /* number of moves in move list */)
8067 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8070 [ 1 0 0 1 72 813 ] concat
8073 (int i; /* move counter */)
8080 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8083 [ 1 0 0 1 72 801 ] concat
8086 (int value; /* score of child PVS call */)
8093 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8096 [ 1 0 0 1 72 783 ] concat
8099 (/* Generate hash value and key for this position */)
8106 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8109 [ 1 0 0 1 72 771 ] concat
8112 (generate_hash\(p, p_hash, p_key\);)
8119 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8122 [ 1 0 0 1 72 759 ] concat
8125 (/* Fetch information from local transposition table */)
8132 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8135 [ 1 0 0 1 72 747 ] concat
8138 (retrieve\(p_hash, p_kley, h_length, h_score, h_flag, h_move\);)
8145 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8148 [ 1 0 0 1 72 729 ] concat
8151 (/* If we have searched position deep enough, use score info */)
8158 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8161 [ 1 0 0 1 96 705 ] concat
8164 (if \(flag == VALID\) { return\(h_score\); })
8171 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8174 [ 1 0 0 1 96 669 ] concat
8177 (if \(alpha >= beta\) { return\(h_score\); })
8184 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8187 [ 1 0 0 1 72 657 ] concat
8197 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8200 [ 1 0 0 1 72 639 ] concat
8203 (/* Evaluate position if at bottom of the tree */)
8210 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8213 [ 1 0 0 1 72 591 ] concat
8223 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8226 [ 1 0 0 1 72 573 ] concat
8229 (/* Generate move list, evaluate position if no moves */)
8236 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8239 [ 1 0 0 1 72 549 ] concat
8242 (if \(width == 0\) { return\(evaluate\(p\)\); })
8249 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8252 [ 1 0 0 1 72 501 ] concat
8262 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8265 [ 1 0 0 1 96 681 ] concat
8268 (if \(flag == UBOUND\) { beta = min\(beta,h_score\); })
8275 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8278 [ 1 0 0 1 96 693 ] concat
8281 (if \(flag == LBOUND\) { alpha = max\(alpha,h_score\); })
8288 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8291 [ 1 0 0 1 72 483 ] concat
8294 (score = -INFINITY;)
8301 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8304 [ 1 0 0 1 72 471 ] concat
8307 (lower = alpha; upper = beta;)
8314 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8317 [ 1 0 0 1 72 441 ] concat
8320 (/* Loop through moves in move list */)
8327 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8330 [ 1 0 0 1 72 429 ] concat
8333 (for\(i=1; \(i <= width && score <= beta\); i++ \) {)
8340 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8343 [ 1 0 0 1 96 405 ] concat
8346 (make_move\(p, move[i]\);)
8353 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8356 [ 1 0 0 1 96 387 ] concat
8359 (value = -PVS\(p, -upper, -lower, depth+1, plytogo-1\);)
8366 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8369 [ 1 0 0 1 96 375 ] concat
8372 (if \(value > score && i > 1\) {)
8379 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8382 [ 1 0 0 1 120 363 ] concat
8385 (value = -PVS\(p, -beta, -value, depth+1, plytogo-1\);)
8392 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8395 [ 1 0 0 1 96 351 ] concat
8405 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8408 [ 1 0 0 1 96 333 ] concat
8411 (unmake_move\(p,move[i]\);)
8418 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8421 [ 1 0 0 1 96 309 ] concat
8424 (if \(value > score\) {)
8431 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8434 [ 1 0 0 1 120 297 ] concat
8444 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8447 [ 1 0 0 1 120 285 ] concat
8450 (move_opt = move[i];)
8457 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8460 [ 1 0 0 1 96 273 ] concat
8470 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8473 [ 1 0 0 1 96 255 ] concat
8476 (/* Set bounds for next search */)
8483 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8486 [ 1 0 0 1 96 243 ] concat
8489 (lower = max\(alpha, score\); upper = lower+1;)
8496 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8499 [ 1 0 0 1 72 231 ] concat
8502 (} /* for all moves */)
8509 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8512 [ 1 0 0 1 72 195 ] concat
8515 (/* Write information into local trans. table */)
8522 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8525 [ 1 0 0 1 72 171 ] concat
8535 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8538 [ 1 0 0 1 72 561 ] concat
8541 (width = generate\(p, h_move\);)
8548 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8551 [ 1 0 0 1 72 159 ] concat
8554 (if \(score <= alpha\) { h_flag = UBOUND; })
8561 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8564 [ 1 0 0 1 72 147 ] concat
8567 (if \(score >= beta\) { h_flag = LBOUND; })
8574 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8577 [ 1 0 0 1 72 135 ] concat
8580 (if \(h_length <= plytogo\) {)
8587 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8590 [ 1 0 0 1 96 123 ] concat
8593 (store\(p_hash, p_key, plytogo, score, h_flag, move_opt\);)
8600 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8603 [ 1 0 0 1 72 111 ] concat
8613 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8616 [ 1 0 0 1 72 99 ] concat
8626 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8629 [ 1 0 0 1 48 87 ] concat
8632 (} /* function PVS */)
8645 [ 2 -0 -0 2 -190 -34 ] concat
8653 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8656 [ 1 0 0 1 72 627 ] concat
8659 (if \(plytogo <= 0\) { return\(evaluate\(p\)\); })
8666 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8669 [ 1 0 0 1 72 717 ] concat
8672 (if \(aphid_master\(\) == FALSE && h_length == plytogo\) {)
8679 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8682 [ 1 0 0 1 72 615 ] concat
8685 (if \(aphid_horizon\(depth\)\) {)
8692 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8695 [ 1 0 0 1 72 537 ] concat
8698 (if \(aphid_checkalarm\(\) != FALSE\) {)
8705 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8708 [ 1 0 0 1 72 459 ] concat
8711 (aphid_intnode_start\(depth, p_hash, p_key\);)
8718 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8721 [ 1 0 0 1 96 417 ] concat
8724 (aphid_intnode_move\(depth, &\(move[i]\)\);)
8731 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8734 [ 1 0 0 1 96 321 ] concat
8737 (aphid_intnode_update\(depth, value\);)
8744 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8747 [ 1 0 0 1 72 213 ] concat
8750 (if \(score >= beta\) { aphid_intnode_fixbound\(depth\); })
8757 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8760 [ 1 0 0 1 72 183 ] concat
8763 (aphid_intnode_end\(depth, &score\);)
8770 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8773 [ 1 0 0 1 96 525 ] concat
8776 (terminate_search = TRUE;)
8783 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8786 [ 1 0 0 1 96 603 ] concat
8789 (return\(aphid_eval_leaf\(alpha,beta,depth,p_hash,p_key\)\);)
8796 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
8799 [ 1 0 0 1 96 513 ] concat
8802 (return\(0\); /* Should exit PVS quickly when alarm on */)
8815 390 2520 a Fn(Figure)14 b(3:)j(Ho)o(w)d(APHID)g(Mo)q(di\014es)g(A)g(T)
8816 o(ypical)f(PVS)h(Implemen)o(tation)954 2828 y(10)p eop
8819 16292818 4736286 1184071 44665815 23615651 51178209 startTexFig
8821 %%BeginDocument: code5.ps
8826 /IdrawDict 51 dict def
8830 dup dup findfont dup length dict begin
8831 { 1 index /FID ne { def }{ pop pop } ifelse } forall
8832 /Encoding ISOLatin1Encoding def
8833 currentdict end definefont
8836 /ISOLatin1Encoding [
8837 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
8838 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
8839 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
8840 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
8841 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
8842 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
8843 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
8844 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
8845 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
8846 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
8847 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
8848 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
8849 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
8850 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
8851 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
8852 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
8853 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
8854 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
8855 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
8856 /guillemotright/onequarter/onehalf/threequarters/questiondown
8857 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
8858 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
8859 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
8860 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
8861 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
8862 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
8863 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
8864 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
8865 /yacute/thorn/ydieresis
8867 /Courier reencodeISO def
8870 /numGraphicParameters 17 def
8871 /stringLimit 65535 def
8875 numGraphicParameters dict begin
8884 dup type /nulltype eq {
8886 false /brushRightArrow idef
8887 false /brushLeftArrow idef
8888 true /brushNone idef
8890 /brushDashOffset idef
8891 /brushDashArray idef
8892 0 ne /brushRightArrow idef
8893 0 ne /brushLeftArrow idef
8895 false /brushNone idef
8917 dup type /nulltype eq {
8918 pop true /patternNone idef
8921 /patternGrayLevel idef
8924 /patternGrayLevel idef
8926 false /patternNone idef
8935 0 0 0 0 0 0 1 1 true subspline
8937 0 0 0 0 1 1 2 2 false subspline
8940 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
8942 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
8944 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
8945 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
8946 brushNone not { istroke } if
8948 n 2 sub dup n 1 sub dup rightarrow
8951 } dup 0 4 dict put def
8956 patternNone not { ifill } if
8957 brushNone not { istroke } if
8965 n 1 sub dup 0 0 1 1 2 2 true subspline
8968 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
8970 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
8971 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
8972 patternNone not { ifill } if
8973 brushNone not { istroke } if
8978 } dup 0 4 dict put def
8987 patternNone not { ifill } if
8988 brushNone not { istroke } if
8990 } dup 0 1 dict put def
8996 x 0 get y 0 get moveto
8997 x 1 get y 1 get lineto
8998 brushNone not { istroke } if
9002 } dup 0 4 dict put def
9009 x 0 get y 0 get moveto
9012 x i get y i get lineto
9014 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
9015 brushNone not { istroke } if
9017 n 2 sub dup n 1 sub dup rightarrow
9020 } dup 0 4 dict put def
9029 patternNone not { ifill } if
9030 brushNone not { istroke } if
9045 patternNone not { ifill } if
9046 brushNone not { istroke } if
9048 } dup 0 4 dict put def
9055 dup where { pop pop pop } { exch def } ifelse
9061 patternGrayLevel -1 ne {
9062 fgred bgred fgred sub patternGrayLevel mul add
9063 fggreen bggreen fggreen sub patternGrayLevel mul add
9064 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
9068 originalCTM setmatrix
9069 pathbbox /t exch def /r exch def /b exch def /l exch def
9070 /w r l sub ceiling cvi def
9071 /h t b sub ceiling cvi def
9072 /imageByteWidth w 8 div ceiling cvi def
9074 bgred bggreen bgblue setrgbcolor
9076 fgred fggreen fgblue setrgbcolor
9078 l b translate w h scale
9079 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
9084 } dup 0 8 dict put def
9088 brushDashOffset -1 eq {
9092 brushDashArray brushDashOffset setdash
9093 fgred fggreen fgblue setrgbcolor
9095 brushWidth setlinewidth
9096 originalCTM setmatrix
9104 fgred fggreen fgblue setrgbcolor
9105 /fontDict printFont printSize scalefont dup setfont def
9106 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
9107 transform exch pop def
9108 /vertoffset 1 printSize sub descender sub def {
9109 0 vertoffset moveto show
9110 /vertoffset vertoffset printSize sub def
9114 } dup 0 3 dict put def
9117 /patternByteLength patternString length def
9118 /patternHeight patternByteLength 8 mul sqrt cvi def
9119 /patternWidth patternHeight def
9120 /patternByteWidth patternWidth 8 idiv def
9121 /imageByteMaxLength imageByteWidth imageHeight mul
9122 stringLimit patternByteWidth sub min def
9123 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
9124 patternHeight mul patternHeight max def
9125 /imageHeight imageHeight imageMaxHeight sub store
9126 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
9127 0 1 imageMaxHeight 1 sub {
9129 /patternRow y patternByteWidth mul patternByteLength mod def
9130 /patternRowString patternString patternRow patternByteWidth getinterval def
9131 /imageRow y imageByteWidth mul def
9132 0 patternByteWidth imageByteWidth 1 sub {
9134 imageString imageRow x add patternRowString putinterval
9139 } dup 0 12 dict put def
9142 dup 3 2 roll dup 4 3 roll lt { exch } if pop
9146 dup 3 2 roll dup 4 3 roll gt { exch } if pop
9158 } dup 0 4 dict put def
9166 x0 2 mul x1 add 3 div
9167 y0 2 mul y1 add 3 div
9169 } dup 0 4 dict put def
9173 /movetoNeeded exch def
9174 y exch get /y3 exch def
9175 x exch get /x3 exch def
9176 y exch get /y2 exch def
9177 x exch get /x2 exch def
9178 y exch get /y1 exch def
9179 x exch get /x1 exch def
9180 y exch get /y0 exch def
9181 x exch get /x0 exch def
9182 x1 y1 x2 y2 thirdpoint
9185 x2 y2 x1 y1 thirdpoint
9188 x1 y1 x0 y0 thirdpoint
9192 x2 y2 x3 y3 thirdpoint
9196 movetoNeeded { p0x p0y moveto } if
9197 p1x p1y p2x p2y p3x p3y curveto
9199 } dup 0 17 dict put def
9213 fgred fggreen fgblue setrgbcolor
9214 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
9218 dup 3 -1 roll dup 4 1 roll exch
9222 exch dup 3 1 roll exch lineto
9225 bgred bggreen bgblue setrgbcolor
9231 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
9237 transform originalCTM itransform
9240 transform originalCTM itransform
9243 /dy tipy taily sub def
9244 /dx tipx tailx sub def
9245 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
9247 originalCTM setmatrix
9251 arrowHeight neg arrowWidth 2 div moveto
9253 arrowHeight neg arrowWidth 2 div neg lineto
9255 originalCTM setmatrix
9256 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
9258 /padtail brushWidth 2 div def
9262 arrowHeight padtip add padtail add arrowHeight div dup scale
9267 originalCTM setmatrix
9275 } dup 0 9 dict put def
9279 arrowHeight neg arrowWidth 2 div moveto
9281 arrowHeight neg arrowWidth 2 div neg lineto
9286 y exch get /taily exch def
9287 x exch get /tailx exch def
9288 y exch get /tipy exch def
9289 x exch get /tipx exch def
9290 brushLeftArrow { tipx tipy tailx taily arrowhead } if
9292 } dup 0 4 dict put def
9296 y exch get /tipy exch def
9297 x exch get /tipx exch def
9298 y exch get /taily exch def
9299 x exch get /tailx exch def
9300 brushRightArrow { tipx tipy tailx taily arrowhead } if
9302 } dup 0 4 dict put def
9305 %I Idraw 10 Grid 8 8
9315 [ 0.799705 0 0 0.799705 0 0 ] concat
9316 /originalCTM matrix currentmatrix def
9327 [ 1 -0 -0 1 -125 612 ] concat
9329 155 342 563 354 Rect
9335 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
9338 [ 1 0 0 1 36 951 ] concat
9341 (for\(plytogo=1;\(plytogo <= MAXDEPTH && done == FALSE\); plytogo++\) {)
9348 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
9351 [ 1 0 0 1 60 939 ] concat
9354 (/* Set up search */)
9367 [ 1.00951 -0 -0 1.12603 -126.417 566.628 ] concat
9369 149 252 569 360 Rect
9375 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
9378 [ 1 0 0 1 36 963 ] concat
9381 (aphid_initsearch\(MAXDEPTH\);)
9394 [ 1 0 0 1 -125 596 ] concat
9396 155 294 563 318 Rect
9408 [ 1 0 0 1 -125 596 ] concat
9410 155 258 563 270 Rect
9416 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
9419 [ 1 0 0 1 60 887 ] concat
9422 (/* Print out results of search */)
9429 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
9432 [ 1 0 0 1 36 875 ] concat
9442 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
9445 [ 1 0 0 1 60 911 ] concat
9448 (/* Call to aphid_rootsearch replaces call to PVS */)
9455 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
9458 [ 1 0 0 1 60 899 ] concat
9461 (score = aphid_rootsearch\(0,plytogo,guess-eps,guess+eps\);)
9468 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
9471 [ 1 0 0 1 36 863 ] concat
9474 (aphid_endsearch\(\);)
9481 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
9484 [ 1 0 0 1 61 925 ] concat
9487 (/* Search at root around value \(guess\) with small error \(eps\) */)
9500 385 579 a Fn(Figure)14 b(4:)k(Ho)o(w)c(APHID)g(Mo)q(di\014es)g(the)g
9501 (Iterativ)o(e)h(Deep)q(ening)f(Routine)465 689 y
9502 16117604 19418804 1184071 24405032 23549870 51178209 startTexFig
9505 %%BeginDocument: code6.ps
9510 /IdrawDict 51 dict def
9514 dup dup findfont dup length dict begin
9515 { 1 index /FID ne { def }{ pop pop } ifelse } forall
9516 /Encoding ISOLatin1Encoding def
9517 currentdict end definefont
9520 /ISOLatin1Encoding [
9521 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
9522 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
9523 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
9524 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
9525 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
9526 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
9527 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
9528 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
9529 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
9530 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
9531 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
9532 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
9533 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
9534 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
9535 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
9536 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
9537 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
9538 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
9539 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
9540 /guillemotright/onequarter/onehalf/threequarters/questiondown
9541 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
9542 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
9543 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
9544 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
9545 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
9546 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
9547 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
9548 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
9549 /yacute/thorn/ydieresis
9551 /Courier reencodeISO def
9554 /numGraphicParameters 17 def
9555 /stringLimit 65535 def
9559 numGraphicParameters dict begin
9568 dup type /nulltype eq {
9570 false /brushRightArrow idef
9571 false /brushLeftArrow idef
9572 true /brushNone idef
9574 /brushDashOffset idef
9575 /brushDashArray idef
9576 0 ne /brushRightArrow idef
9577 0 ne /brushLeftArrow idef
9579 false /brushNone idef
9601 dup type /nulltype eq {
9602 pop true /patternNone idef
9605 /patternGrayLevel idef
9608 /patternGrayLevel idef
9610 false /patternNone idef
9619 0 0 0 0 0 0 1 1 true subspline
9621 0 0 0 0 1 1 2 2 false subspline
9624 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
9626 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
9628 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
9629 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
9630 brushNone not { istroke } if
9632 n 2 sub dup n 1 sub dup rightarrow
9635 } dup 0 4 dict put def
9640 patternNone not { ifill } if
9641 brushNone not { istroke } if
9649 n 1 sub dup 0 0 1 1 2 2 true subspline
9652 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
9654 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
9655 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
9656 patternNone not { ifill } if
9657 brushNone not { istroke } if
9662 } dup 0 4 dict put def
9671 patternNone not { ifill } if
9672 brushNone not { istroke } if
9674 } dup 0 1 dict put def
9680 x 0 get y 0 get moveto
9681 x 1 get y 1 get lineto
9682 brushNone not { istroke } if
9686 } dup 0 4 dict put def
9693 x 0 get y 0 get moveto
9696 x i get y i get lineto
9698 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
9699 brushNone not { istroke } if
9701 n 2 sub dup n 1 sub dup rightarrow
9704 } dup 0 4 dict put def
9713 patternNone not { ifill } if
9714 brushNone not { istroke } if
9729 patternNone not { ifill } if
9730 brushNone not { istroke } if
9732 } dup 0 4 dict put def
9739 dup where { pop pop pop } { exch def } ifelse
9745 patternGrayLevel -1 ne {
9746 fgred bgred fgred sub patternGrayLevel mul add
9747 fggreen bggreen fggreen sub patternGrayLevel mul add
9748 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
9752 originalCTM setmatrix
9753 pathbbox /t exch def /r exch def /b exch def /l exch def
9754 /w r l sub ceiling cvi def
9755 /h t b sub ceiling cvi def
9756 /imageByteWidth w 8 div ceiling cvi def
9758 bgred bggreen bgblue setrgbcolor
9760 fgred fggreen fgblue setrgbcolor
9762 l b translate w h scale
9763 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
9768 } dup 0 8 dict put def
9772 brushDashOffset -1 eq {
9776 brushDashArray brushDashOffset setdash
9777 fgred fggreen fgblue setrgbcolor
9779 brushWidth setlinewidth
9780 originalCTM setmatrix
9788 fgred fggreen fgblue setrgbcolor
9789 /fontDict printFont printSize scalefont dup setfont def
9790 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
9791 transform exch pop def
9792 /vertoffset 1 printSize sub descender sub def {
9793 0 vertoffset moveto show
9794 /vertoffset vertoffset printSize sub def
9798 } dup 0 3 dict put def
9801 /patternByteLength patternString length def
9802 /patternHeight patternByteLength 8 mul sqrt cvi def
9803 /patternWidth patternHeight def
9804 /patternByteWidth patternWidth 8 idiv def
9805 /imageByteMaxLength imageByteWidth imageHeight mul
9806 stringLimit patternByteWidth sub min def
9807 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
9808 patternHeight mul patternHeight max def
9809 /imageHeight imageHeight imageMaxHeight sub store
9810 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
9811 0 1 imageMaxHeight 1 sub {
9813 /patternRow y patternByteWidth mul patternByteLength mod def
9814 /patternRowString patternString patternRow patternByteWidth getinterval def
9815 /imageRow y imageByteWidth mul def
9816 0 patternByteWidth imageByteWidth 1 sub {
9818 imageString imageRow x add patternRowString putinterval
9823 } dup 0 12 dict put def
9826 dup 3 2 roll dup 4 3 roll lt { exch } if pop
9830 dup 3 2 roll dup 4 3 roll gt { exch } if pop
9842 } dup 0 4 dict put def
9850 x0 2 mul x1 add 3 div
9851 y0 2 mul y1 add 3 div
9853 } dup 0 4 dict put def
9857 /movetoNeeded exch def
9858 y exch get /y3 exch def
9859 x exch get /x3 exch def
9860 y exch get /y2 exch def
9861 x exch get /x2 exch def
9862 y exch get /y1 exch def
9863 x exch get /x1 exch def
9864 y exch get /y0 exch def
9865 x exch get /x0 exch def
9866 x1 y1 x2 y2 thirdpoint
9869 x2 y2 x1 y1 thirdpoint
9872 x1 y1 x0 y0 thirdpoint
9876 x2 y2 x3 y3 thirdpoint
9880 movetoNeeded { p0x p0y moveto } if
9881 p1x p1y p2x p2y p3x p3y curveto
9883 } dup 0 17 dict put def
9897 fgred fggreen fgblue setrgbcolor
9898 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
9902 dup 3 -1 roll dup 4 1 roll exch
9906 exch dup 3 1 roll exch lineto
9909 bgred bggreen bgblue setrgbcolor
9915 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
9921 transform originalCTM itransform
9924 transform originalCTM itransform
9927 /dy tipy taily sub def
9928 /dx tipx tailx sub def
9929 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
9931 originalCTM setmatrix
9935 arrowHeight neg arrowWidth 2 div moveto
9937 arrowHeight neg arrowWidth 2 div neg lineto
9939 originalCTM setmatrix
9940 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
9942 /padtail brushWidth 2 div def
9946 arrowHeight padtip add padtail add arrowHeight div dup scale
9951 originalCTM setmatrix
9959 } dup 0 9 dict put def
9963 arrowHeight neg arrowWidth 2 div moveto
9965 arrowHeight neg arrowWidth 2 div neg lineto
9970 y exch get /taily exch def
9971 x exch get /tailx exch def
9972 y exch get /tipy exch def
9973 x exch get /tipx exch def
9974 brushLeftArrow { tipx tipy tailx taily arrowhead } if
9976 } dup 0 4 dict put def
9980 y exch get /tipy exch def
9981 x exch get /tipx exch def
9982 y exch get /taily exch def
9983 x exch get /tailx exch def
9984 brushRightArrow { tipx tipy tailx taily arrowhead } if
9986 } dup 0 4 dict put def
9989 %I Idraw 10 Grid 8 8
9999 [ 0.799705 0 0 0.799705 0 0 ] concat
10000 /originalCTM matrix currentmatrix def
10011 [ 1 -0 -0 1 -125 559 ] concat
10013 155 173 563 197 Rect
10025 [ 1 -0 -0 1 -125 559 ] concat
10027 155 209 563 221 Rect
10039 [ 1 -0 -0 1 -125 559 ] concat
10041 155 323 563 335 Rect
10053 [ 1 -0 -0 1 -125 612 ] concat
10055 155 342 563 354 Rect
10061 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10064 [ 1 0 0 1 36 951 ] concat
10067 (for\(plytogo=1;\(plytogo <= MAXDEPTH && done == FALSE\); plytogo++\) {)
10074 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10077 [ 1 0 0 1 36 903 ] concat
10093 [ 1.00711 -0 -0 4.68604 -126.059 -714.975 ] concat
10095 149 252 569 360 Rect
10101 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10104 [ 1 0 0 1 60 915 ] concat
10107 (/* Print out results of search */)
10114 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10117 [ 1 0 0 1 60 927 ] concat
10120 (score = ROOT_PVS\(root_pos,guess-eps,guess+eps,0,plytogo\);)
10127 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10130 [ 1 0 0 1 36 867 ] concat
10133 (ROOT_PVS\(root_pos, alpha, beta, depth, plytogo\))
10140 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10143 [ 1 0 0 1 36 855 ] concat
10153 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10156 [ 1 0 0 1 36 843 ] concat
10166 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10169 [ 1 0 0 1 60 831 ] concat
10179 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10182 [ 1 0 0 1 60 819 ] concat
10185 (/* Search PV Move */)
10192 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10195 [ 1 0 0 1 60 807 ] concat
10205 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10208 [ 1 0 0 1 36 789 ] concat
10211 (search_best_move:)
10218 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10221 [ 1 0 0 1 60 765 ] concat
10224 (make_move\(p,bestmove\);)
10231 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10234 [ 1 0 0 1 60 729 ] concat
10237 (unmake_move\(p,bestmove\);)
10244 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10247 [ 1 0 0 1 36 963 ] concat
10250 (aphid_initsearch\(MAXDEPTH\);)
10257 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10260 [ 1 0 0 1 36 891 ] concat
10263 (aphid_endsearch\(\);)
10270 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10273 [ 1 0 0 1 60 777 ] concat
10276 (aphid_intnode_premove\(depth, &bestmove\);)
10283 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10286 [ 1 0 0 1 60 753 ] concat
10289 (/* aphid_rootsearch replaces typical call to PVS */)
10296 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10299 [ 1 0 0 1 60 939 ] concat
10302 (/* Set up search with small window \(eps\) around guess */)
10309 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10312 [ 1 0 0 1 60 741 ] concat
10315 (oldscore = -aphid_rootsearch\(depth+1,plytogo-1,-beta,-lower\);)
10328 [ 1 0 0 1 -125 437 ] concat
10330 155 159 563 183 Rect
10342 [ 1 0 0 1 -125 437 ] concat
10344 155 207 563 219 Rect
10350 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10353 [ 1 0 0 1 84 641 ] concat
10356 (make_move\(p,move[i]\);)
10363 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10366 [ 1 0 0 1 84 629 ] concat
10369 (/* Check if move beats PV move by more than delta */)
10376 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10379 [ 1 0 0 1 60 581 ] concat
10389 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10392 [ 1 0 0 1 84 539 ] concat
10395 (bestmove = move[i];)
10402 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10405 [ 1 0 0 1 84 527 ] concat
10408 (lower = newscore;)
10415 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10418 [ 1 0 0 1 60 503 ] concat
10428 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10431 [ 1 0 0 1 60 491 ] concat
10441 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10444 [ 1 0 0 1 36 479 ] concat
10447 (} /* function ROOT_PVS */)
10454 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10457 [ 1 0 0 1 84 653 ] concat
10460 (aphid_intnode_premove\(depth,&move[i]\);)
10467 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10470 [ 1 0 0 1 84 593 ] concat
10473 (unmake_move\(p,move[i]\);)
10480 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10483 [ 1 0 0 1 210 605 ] concat
10486 (-oldscore-delta-1, -oldscore-delta\);)
10493 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10496 [ 1 0 0 1 84 617 ] concat
10499 (newscore = -aphid_rootsearch\(depth+1, plytogo-1,)
10506 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10509 [ 1 0 0 1 84 515 ] concat
10512 (if \(newscore < beta\) { goto search_best_move; })
10519 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10522 [ 1 0 0 1 84 551 ] concat
10525 (/* set new best move and score and research \(if necc.\) */)
10532 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10535 [ 1 0 0 1 60 665 ] concat
10538 (for\(i=2;\(i<=width && newscore <= oldscore+delta; i++\) {)
10545 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10548 [ 1 0 0 1 60 677 ] concat
10551 (newscore = oldscore;)
10558 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10561 [ 1 0 0 1 60 563 ] concat
10564 (if \(newscore > oldscore+delta\) {)
10571 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10574 [ 1 0 0 1 60 711 ] concat
10577 (/* Search other moves at root, and only switch if move beats */)
10584 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
10587 [ 1 0 0 1 59 698 ] concat
10590 (/* PV score \(oldscore\) by a small margin \(delta\) */)
10603 222 2010 a Fn(Figure)g(5:)k(Ho)o(w)c(APHID)g(Mo)q(di\014es)g(Sp)q
10604 (ecial)g(Handling)e(Of)i(The)h(Ro)q(ot)e(Of)h(The)g(Game)e(T)m(ree)489
10606 15345567 7104430 1447198 41639854 22102671 51178209 startTexFig
10608 %%BeginDocument: code7.ps
10610 /arrowHeight 10 def
10613 /IdrawDict 51 dict def
10617 dup dup findfont dup length dict begin
10618 { 1 index /FID ne { def }{ pop pop } ifelse } forall
10619 /Encoding ISOLatin1Encoding def
10620 currentdict end definefont
10623 /ISOLatin1Encoding [
10624 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
10625 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
10626 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
10627 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
10628 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
10629 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
10630 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
10631 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
10632 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
10633 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
10634 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
10635 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
10636 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
10637 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
10638 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
10639 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
10640 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
10641 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
10642 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
10643 /guillemotright/onequarter/onehalf/threequarters/questiondown
10644 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
10645 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
10646 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
10647 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
10648 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
10649 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
10650 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
10651 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
10652 /yacute/thorn/ydieresis
10654 /Courier reencodeISO def
10657 /numGraphicParameters 17 def
10658 /stringLimit 65535 def
10662 numGraphicParameters dict begin
10671 dup type /nulltype eq {
10673 false /brushRightArrow idef
10674 false /brushLeftArrow idef
10675 true /brushNone idef
10677 /brushDashOffset idef
10678 /brushDashArray idef
10679 0 ne /brushRightArrow idef
10680 0 ne /brushLeftArrow idef
10682 false /brushNone idef
10704 dup type /nulltype eq {
10705 pop true /patternNone idef
10708 /patternGrayLevel idef
10709 /patternString idef
10711 /patternGrayLevel idef
10713 false /patternNone idef
10722 0 0 0 0 0 0 1 1 true subspline
10724 0 0 0 0 1 1 2 2 false subspline
10727 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
10729 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
10731 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
10732 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
10733 brushNone not { istroke } if
10735 n 2 sub dup n 1 sub dup rightarrow
10738 } dup 0 4 dict put def
10743 patternNone not { ifill } if
10744 brushNone not { istroke } if
10752 n 1 sub dup 0 0 1 1 2 2 true subspline
10755 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
10757 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
10758 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
10759 patternNone not { ifill } if
10760 brushNone not { istroke } if
10765 } dup 0 4 dict put def
10774 patternNone not { ifill } if
10775 brushNone not { istroke } if
10777 } dup 0 1 dict put def
10783 x 0 get y 0 get moveto
10784 x 1 get y 1 get lineto
10785 brushNone not { istroke } if
10789 } dup 0 4 dict put def
10796 x 0 get y 0 get moveto
10799 x i get y i get lineto
10801 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
10802 brushNone not { istroke } if
10804 n 2 sub dup n 1 sub dup rightarrow
10807 } dup 0 4 dict put def
10816 patternNone not { ifill } if
10817 brushNone not { istroke } if
10832 patternNone not { ifill } if
10833 brushNone not { istroke } if
10835 } dup 0 4 dict put def
10842 dup where { pop pop pop } { exch def } ifelse
10848 patternGrayLevel -1 ne {
10849 fgred bgred fgred sub patternGrayLevel mul add
10850 fggreen bggreen fggreen sub patternGrayLevel mul add
10851 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
10855 originalCTM setmatrix
10856 pathbbox /t exch def /r exch def /b exch def /l exch def
10857 /w r l sub ceiling cvi def
10858 /h t b sub ceiling cvi def
10859 /imageByteWidth w 8 div ceiling cvi def
10861 bgred bggreen bgblue setrgbcolor
10863 fgred fggreen fgblue setrgbcolor
10864 w 0 gt h 0 gt and {
10865 l b translate w h scale
10866 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
10871 } dup 0 8 dict put def
10875 brushDashOffset -1 eq {
10879 brushDashArray brushDashOffset setdash
10880 fgred fggreen fgblue setrgbcolor
10882 brushWidth setlinewidth
10883 originalCTM setmatrix
10891 fgred fggreen fgblue setrgbcolor
10892 /fontDict printFont printSize scalefont dup setfont def
10893 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
10894 transform exch pop def
10895 /vertoffset 1 printSize sub descender sub def {
10896 0 vertoffset moveto show
10897 /vertoffset vertoffset printSize sub def
10901 } dup 0 3 dict put def
10904 /patternByteLength patternString length def
10905 /patternHeight patternByteLength 8 mul sqrt cvi def
10906 /patternWidth patternHeight def
10907 /patternByteWidth patternWidth 8 idiv def
10908 /imageByteMaxLength imageByteWidth imageHeight mul
10909 stringLimit patternByteWidth sub min def
10910 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
10911 patternHeight mul patternHeight max def
10912 /imageHeight imageHeight imageMaxHeight sub store
10913 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
10914 0 1 imageMaxHeight 1 sub {
10916 /patternRow y patternByteWidth mul patternByteLength mod def
10917 /patternRowString patternString patternRow patternByteWidth getinterval def
10918 /imageRow y imageByteWidth mul def
10919 0 patternByteWidth imageByteWidth 1 sub {
10921 imageString imageRow x add patternRowString putinterval
10926 } dup 0 12 dict put def
10929 dup 3 2 roll dup 4 3 roll lt { exch } if pop
10933 dup 3 2 roll dup 4 3 roll gt { exch } if pop
10945 } dup 0 4 dict put def
10953 x0 2 mul x1 add 3 div
10954 y0 2 mul y1 add 3 div
10956 } dup 0 4 dict put def
10960 /movetoNeeded exch def
10961 y exch get /y3 exch def
10962 x exch get /x3 exch def
10963 y exch get /y2 exch def
10964 x exch get /x2 exch def
10965 y exch get /y1 exch def
10966 x exch get /x1 exch def
10967 y exch get /y0 exch def
10968 x exch get /x0 exch def
10969 x1 y1 x2 y2 thirdpoint
10972 x2 y2 x1 y1 thirdpoint
10975 x1 y1 x0 y0 thirdpoint
10979 x2 y2 x3 y3 thirdpoint
10983 movetoNeeded { p0x p0y moveto } if
10984 p1x p1y p2x p2y p3x p3y curveto
10986 } dup 0 17 dict put def
11000 fgred fggreen fgblue setrgbcolor
11001 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
11005 dup 3 -1 roll dup 4 1 roll exch
11009 exch dup 3 1 roll exch lineto
11012 bgred bggreen bgblue setrgbcolor
11018 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
11024 transform originalCTM itransform
11027 transform originalCTM itransform
11030 /dy tipy taily sub def
11031 /dx tipx tailx sub def
11032 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
11034 originalCTM setmatrix
11035 tipx tipy translate
11038 arrowHeight neg arrowWidth 2 div moveto
11040 arrowHeight neg arrowWidth 2 div neg lineto
11042 originalCTM setmatrix
11043 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
11045 /padtail brushWidth 2 div def
11046 tipx tipy translate
11049 arrowHeight padtip add padtail add arrowHeight div dup scale
11054 originalCTM setmatrix
11055 tipx tipy translate
11062 } dup 0 9 dict put def
11066 arrowHeight neg arrowWidth 2 div moveto
11068 arrowHeight neg arrowWidth 2 div neg lineto
11073 y exch get /taily exch def
11074 x exch get /tailx exch def
11075 y exch get /tipy exch def
11076 x exch get /tipx exch def
11077 brushLeftArrow { tipx tipy tailx taily arrowhead } if
11079 } dup 0 4 dict put def
11083 y exch get /tipy exch def
11084 x exch get /tipx exch def
11085 y exch get /taily exch def
11086 x exch get /tailx exch def
11087 brushRightArrow { tipx tipy tailx taily arrowhead } if
11089 } dup 0 4 dict put def
11092 %I Idraw 10 Grid 8 8
11102 [ 0.799705 0 0 0.799705 0 0 ] concat
11103 /originalCTM matrix currentmatrix def
11114 [ 1 -0 -0 1 -125 612 ] concat
11116 161 216 539 228 Rect
11128 [ 1 -0 -0 1 -125 612 ] concat
11130 161 276 539 288 Rect
11136 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
11139 [ 1 0 0 1 42 963 ] concat
11142 (int main\(argc, argv\))
11149 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
11152 [ 1 0 0 1 42 951 ] concat
11162 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
11165 [ 1 0 0 1 42 939 ] concat
11175 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
11178 [ 1 0 0 1 42 927 ] concat
11188 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
11191 [ 1 0 0 1 72 915 ] concat
11194 (/* Initialization required by any process in system */)
11201 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
11204 [ 1 0 0 1 72 867 ] concat
11207 (/* Initialization required only by the master process */)
11214 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
11217 [ 1 0 0 1 72 825 ] concat
11227 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
11230 [ 1 0 0 1 42 813 ] concat
11240 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
11243 [ 1 0 0 1 72 855 ] concat
11259 [ 0.997449 -0 -0 0.962766 -124.605 625.404 ] concat
11261 155 174 545 360 Rect
11267 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
11270 [ 1 0 0 1 72 885 ] concat
11273 (/* Only the absolute master process gets here */)
11280 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
11283 [ 1 0 0 1 72 897 ] concat
11286 (aphid_startup\(argv\);)
11293 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
11296 [ 1 0 0 1 72 837 ] concat
11312 503 2661 a Fn(Figure)i(6:)k(Ho)o(w)13 b(APHID)h(Mo)q(di\014es)h(The)f
11313 (Main)f(Program)954 2828 y(11)p eop
11315 12 11 bop 336 154 a
11316 20176580 14208860 3289088 3289088 50651955 36443095 startTexFig
11318 %%BeginDocument: graph5.ps
11319 /gnudict 40 dict def
11323 /gnulinewidth 5.000 def
11328 /M {moveto} bind def
11329 /L {lineto} bind def
11330 /R {rmoveto} bind def
11331 /V {rlineto} bind def
11332 /vpt2 vpt 2 mul def
11333 /hpt2 hpt 2 mul def
11334 /Lshow { currentpoint stroke M
11335 0 vshift R show } def
11336 /Rshow { currentpoint stroke M
11337 dup stringwidth pop neg vshift R show } def
11338 /Cshow { currentpoint stroke M
11339 dup stringwidth pop -2 div vshift R show } def
11340 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
11341 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
11342 /BL { stroke gnulinewidth 2 mul setlinewidth } def
11343 /AL { stroke gnulinewidth 2 div setlinewidth } def
11344 /PL { stroke gnulinewidth setlinewidth } def
11345 /LTb { BL [] 0 0 0 DL } def
11346 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
11347 /LT0 { PL [] 0 1 0 DL } def
11348 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
11349 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
11350 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
11351 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
11352 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
11353 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
11354 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
11355 /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def
11356 /P { stroke [] 0 setdash
11357 currentlinewidth 2 div sub M
11358 0 currentlinewidth V stroke } def
11359 /D { stroke [] 0 setdash 2 copy vpt add M
11360 hpt neg vpt neg V hpt vpt neg V
11361 hpt vpt V hpt neg vpt V closepath stroke
11363 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
11364 currentpoint stroke M
11365 hpt neg vpt neg R hpt2 0 V stroke
11367 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
11368 0 vpt2 neg V hpt2 0 V 0 vpt2 V
11369 hpt2 neg 0 V closepath stroke
11371 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
11372 hpt2 vpt2 neg V currentpoint stroke M
11373 hpt2 neg 0 R hpt2 vpt2 V stroke } def
11374 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
11375 hpt neg vpt -1.62 mul V
11377 hpt neg vpt 1.62 mul V closepath stroke
11379 /S { 2 copy A C} def
11386 /Helvetica findfont 140 scalefont setfont
11484 currentpoint gsave translate 90 rotate 0 0 M
11488 (Number of Processors) Cshow
11552 394 1145 a Fn(Figure)14 b(7:)j(Sp)q(eedups)f(at)e(V)m(arious)f(Depths)
11553 i(for)e(APHID)h(in)g Fj(TheTurk)62 1278 y Fn(The)f(24)f(p)q(ositions)g
11554 (ha)o(v)o(e)h(b)q(een)g(sorted)h(b)o(y)e(the)h(size)g(of)f(the)h
11555 (sequen)o(tial)g(searc)o(h)g(tree,)h(and)e(divided)g(in)o(to)g(three)i
11556 (groups)0 1340 y(of)f(equal)h(size.)19 b(Figure)14 b(8)f(illustrates)h
11557 (the)h(a)o(v)o(erage)f(sp)q(eedup)h(at)f(8)f(ply)h(for)f(eac)o(h)i
11558 (third)f(of)f(the)h(complete)g(test)h(set.)62 1402 y(The)f(o)o(v)o
11559 (erheads)g(in)f(the)g(algorithm)e(are)j(illustrated)f(in)f(Figure)i(9)f
11560 (as)g(p)q(ercen)o(tages)i(of)e(the)h(sequen)o(tial)f(time)f(required)0
11561 1464 y(to)18 b(searc)o(h)i(all)d(24)h(p)q(ositions.)31
11562 b(The)19 b Fl(total)g(overhe)n(ad)f Fn(represen)o(ts)j(the)e
11563 (additional)e(computing)g(time)g(required)i(b)o(y)f(the)0
11564 1527 y(parallel)13 b(algorithm)e(to)j(ac)o(hiev)o(e)g(the)g(same)f
11565 (result:)486 1638 y(total)c(o)o(v)o(erhead)j(=)801 1610
11566 y(\(parallel)d(time)17 b Fk(\003)h Fn(n\))9 b Fk(\000)h
11567 Fn(sequen)o(tial)f(time)p 801 1629 658 2 v 995 1667 a(sequen)o(tial)g
11568 (time)0 1749 y(where)15 b Fm(n)f Fn(is)g(the)g(n)o(um)o(b)q(er)f(of)g
11569 (pro)q(cessors.)21 b(The)14 b(total)f(o)o(v)o(erhead)h(is)g(also)f(a)h
11570 (sum)f(of)g(the)i(four)e(o)o(v)o(erheads:)78 1853 y(total)8
11571 b(o)o(v)o(erhead)k(=)g(master)d(o)o(v)o(erhead)g(+)h(parallelization)d
11572 (o)o(v)o(erhead)j(+)f(sp)q(eculativ)o(e)h(searc)o(h)h(+)e(searc)o(h)i
11573 (o)o(v)o(erhead)p Fm(:)62 1957 y Fn(The)17 b Fl(master)f(overhe)n(ad)h
11574 Fn(is)f(the)g(appro)o(ximate)e(p)q(enalt)o(y)i(incurred)h(b)o(y)f(ha)o
11575 (ving)f(a)h(single)g(pro)q(cessor)h(b)q(eing)f(allo)q(cated)0
11576 2019 y(completely)d(to)g(the)i(handling)e(of)g(the)h(master.)k(This)c
11577 (is)f(not)h(simply)1123 2003 y Fi(1)p 1121 2010 21 2
11578 v 1121 2034 a Fb(n)1147 2019 y Fn(,)f(but)h(is)g(the)g(time)f(tak)o(en)
11579 h(a)o(w)o(a)o(y)f(b)o(y)g(the)i(master:)655 2137 y(master)9
11580 b(o)o(v)o(erhead)j(=)1031 2109 y(parallel)c(time)p 1008
11581 2128 271 2 v 1008 2166 a(sequen)o(tial)h(time)1283 2137
11582 y Fm(:)62 2248 y Fn(The)18 b Fl(p)n(ar)n(al)r(lelization)e(overhe)n(ad)
11583 i Fn(is)f(the)g(p)q(enalt)o(y)g(incurred)h(b)o(y)f(the)g(APHID-library)
11584 g(on)f(the)i(sp)q(eed)g(of)f(the)g(sla)o(v)o(es.)0 2311
11585 y(In)e(the)h(parallel)f(algorithm,)d(the)k(sla)o(v)o(es)f(w)o(ere)i
11586 (visiting)d(2000)g(no)q(des)i(p)q(er)h(second.)23 b(The)16
11587 b(di\013erence)h(b)q(et)o(w)o(een)g(this)e(rate)0 2373
11588 y(and)g(the)g(sequen)o(tial)g(program's)e(no)q(de)i(rate)g(is)f(deriv)o
11589 (ed)i(partially)d(from)g(the)i(o)o(v)o(erhead)g(of)f(using)g(PVM,)h
11590 (and)g(partially)0 2435 y(from)f(the)i(w)o(ork-sc)o(heduling)f
11591 (algorithm)e(on)i(eac)o(h)h(sla)o(v)o(e.)23 b(In)15 b(the)h(authors')g
11592 (exp)q(erience,)h(this)f(complexit)o(y)d(o)o(v)o(erhead)j(is)0
11593 2497 y(appro)o(ximately)11 b(the)k(same)e(as)h(implemen)o(tatio)o(ns)e
11594 (of)h(YBW)h(on)g(similar)d(hardw)o(are.)62 2560 y(The)16
11595 b Fl(se)n(ar)n(ch)f(overhe)n(ad)g Fn(starts)h(at)f(70\045)f(and)g
11596 (increases)j(v)o(ery)e(gradually)f(as)g(w)o(e)i(increase)g(from)d(4)h
11597 (to)h(16)f(pro)q(cessors.)0 2622 y(Most)i(of)g(the)h(searc)o(h)g(o)o(v)
11598 o(erhead)g(is)f(incurred)h(b)o(y)f(attempting)f(to)h(do)g(searc)o(hes)i
11599 (b)q(efore)f(the)g(correct)g(searc)o(h)h(windo)o(w)d(is)0
11600 2684 y(a)o(v)n(ailable.)g(Th)o(us,)c(the)h(sla)o(v)o(es)f(use)h
11601 Fm(\013\014)h Fn(searc)o(h)g(windo)o(ws)d(that)h(are)h(larger)f(than)g
11602 (those)h(in)e(the)i(sequen)o(tial)f(program.)16 b(Most)954
11605 13 12 bop 336 283 a
11606 20176580 14208860 3289088 3289088 50651955 36443095 startTexFig
11608 %%BeginDocument: graph6.ps
11609 /gnudict 40 dict def
11613 /gnulinewidth 5.000 def
11618 /M {moveto} bind def
11619 /L {lineto} bind def
11620 /R {rmoveto} bind def
11621 /V {rlineto} bind def
11622 /vpt2 vpt 2 mul def
11623 /hpt2 hpt 2 mul def
11624 /Lshow { currentpoint stroke M
11625 0 vshift R show } def
11626 /Rshow { currentpoint stroke M
11627 dup stringwidth pop neg vshift R show } def
11628 /Cshow { currentpoint stroke M
11629 dup stringwidth pop -2 div vshift R show } def
11630 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
11631 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
11632 /BL { stroke gnulinewidth 2 mul setlinewidth } def
11633 /AL { stroke gnulinewidth 2 div setlinewidth } def
11634 /PL { stroke gnulinewidth setlinewidth } def
11635 /LTb { BL [] 0 0 0 DL } def
11636 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
11637 /LT0 { PL [] 0 1 0 DL } def
11638 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
11639 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
11640 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
11641 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
11642 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
11643 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
11644 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
11645 /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def
11646 /P { stroke [] 0 setdash
11647 currentlinewidth 2 div sub M
11648 0 currentlinewidth V stroke } def
11649 /D { stroke [] 0 setdash 2 copy vpt add M
11650 hpt neg vpt neg V hpt vpt neg V
11651 hpt vpt V hpt neg vpt V closepath stroke
11653 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
11654 currentpoint stroke M
11655 hpt neg vpt neg R hpt2 0 V stroke
11657 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
11658 0 vpt2 neg V hpt2 0 V 0 vpt2 V
11659 hpt2 neg 0 V closepath stroke
11661 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
11662 hpt2 vpt2 neg V currentpoint stroke M
11663 hpt2 neg 0 R hpt2 vpt2 V stroke } def
11664 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
11665 hpt neg vpt -1.62 mul V
11667 hpt neg vpt 1.62 mul V closepath stroke
11669 /S { 2 copy A C} def
11676 /Helvetica findfont 140 scalefont setfont
11774 currentpoint gsave translate 90 rotate 0 0 M
11778 (Number of Processors) Cshow
11828 340 1274 a Fn(Figure)14 b(8:)k(Sp)q(eedups)d(for)f(Di\013eren)o(t)g
11829 (Size)h(Problems)e(at)h(8)f(Ply)h(in)f Fj(TheTurk)336
11831 20176580 14208860 3289088 3289088 50651955 36443095 startTexFig
11833 %%BeginDocument: graph4.ps
11834 /gnudict 40 dict def
11838 /gnulinewidth 5.000 def
11843 /M {moveto} bind def
11844 /L {lineto} bind def
11845 /R {rmoveto} bind def
11846 /V {rlineto} bind def
11847 /vpt2 vpt 2 mul def
11848 /hpt2 hpt 2 mul def
11849 /Lshow { currentpoint stroke M
11850 0 vshift R show } def
11851 /Rshow { currentpoint stroke M
11852 dup stringwidth pop neg vshift R show } def
11853 /Cshow { currentpoint stroke M
11854 dup stringwidth pop -2 div vshift R show } def
11855 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
11856 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
11857 /BL { stroke gnulinewidth 2 mul setlinewidth } def
11858 /AL { stroke gnulinewidth 2 div setlinewidth } def
11859 /PL { stroke gnulinewidth setlinewidth } def
11860 /LTb { BL [] 0 0 0 DL } def
11861 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
11862 /LT0 { PL [] 0 1 0 DL } def
11863 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
11864 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
11865 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
11866 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
11867 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
11868 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
11869 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
11870 /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def
11871 /P { stroke [] 0 setdash
11872 currentlinewidth 2 div sub M
11873 0 currentlinewidth V stroke } def
11874 /D { stroke [] 0 setdash 2 copy vpt add M
11875 hpt neg vpt neg V hpt vpt neg V
11876 hpt vpt V hpt neg vpt V closepath stroke
11878 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
11879 currentpoint stroke M
11880 hpt neg vpt neg R hpt2 0 V stroke
11882 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
11883 0 vpt2 neg V hpt2 0 V 0 vpt2 V
11884 hpt2 neg 0 V closepath stroke
11886 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
11887 hpt2 vpt2 neg V currentpoint stroke M
11888 hpt2 neg 0 R hpt2 vpt2 V stroke } def
11889 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
11890 hpt neg vpt -1.62 mul V
11892 hpt neg vpt 1.62 mul V closepath stroke
11894 /S { 2 copy A C} def
11901 /Helvetica findfont 140 scalefont setfont
11981 currentpoint gsave translate 90 rotate 0 0 M
11982 (Percent Overhead) Cshow
11985 (Number of Processors) Cshow
11988 (Search Overhead) Rshow
12002 (Speculative Search) Rshow
12016 (Parallelization Overhead) Rshow
12030 (Master Overhead) Rshow
12044 (Total Overhead) Rshow
12063 475 2566 a Fn(Figure)h(9:)k(Ov)o(erheads)d(at)f(8)g(Ply)f(for)h(APHID)
12064 g(in)f Fj(TheTurk)954 2828 y Fn(13)p eop
12066 14 13 bop 0 195 a Fn(of)13 b(the)h(increase)h(in)e(searc)o(h)i(o)o(v)o
12067 (erhead)f(as)g(w)o(e)f(increase)i(the)g(n)o(um)o(b)q(er)d(of)h(pro)q
12068 (cessors)j(can)e(b)q(e)g(attributed)g(to)g(information)0
12069 257 y(de\014ciency)m(,)21 b(since)e(there)i(is)d(no)h(common)d(shared)k
12070 (data)e(b)q(et)o(w)o(een)j(the)e(pro)q(cesses)j(\(suc)o(h)e(as)f(a)f
12071 (shared)i(transp)q(osition)0 320 y(table\).)62 382 y(Since)e(w)o(e)f
12072 (only)f(searc)o(h)j(eac)o(h)e(p)q(osition)f(to)h(8)g(ply)m(,)g(the)g
12073 (async)o(hronous)h(nature)g(of)e(the)i(sla)o(v)o(es)f(will)e(result)j
12074 (in)f(some)0 444 y(w)o(ork)d(b)q(eing)h(done)f(at)h(9)f(ply)g(\(or)g
12075 (more\).)19 b(The)c Fl(sp)n(e)n(culative)g(se)n(ar)n(ch)g
12076 Fn(line)f(represen)o(ts)j(the)e(amoun)o(t)d(of)i(additional)f(searc)o
12077 (h)0 506 y(b)q(ey)o(ond)f(what)g(the)g(sequen)o(tial)g(algorithm)d(w)o
12078 (ould)i(ha)o(v)o(e)h(done.)18 b(Ho)o(w)o(ev)o(er,)12
12079 b(in)f(our)h(exp)q(erimen)o(ts,)g(the)g(sp)q(eculativ)o(e)h(searc)o(h)0
12080 569 y(results)k(w)o(ere)f(not)g(used)g(so)g(that)f(the)i(parallel)d
12081 (program)g(pro)q(duces)j(the)f(iden)o(tical)f(results)i(as)e(the)i
12082 (sequen)o(tial)e(v)o(ersion,)0 631 y(v)o(erifying)h(APHID's)g
12083 (correctness)q(.)29 b(In)17 b(a)f(real)h(tournamen)o(t)f(game,)f(this)i
12084 (sp)q(eculativ)o(e)h(searc)o(h)g(could)e(b)q(e)i(used)f(to)g(lo)q(ok)0
12085 693 y(an)e(extra)h(mo)o(v)o(e)d(ahead)j(on)f(some)f(k)o(ey)h(v)n
12086 (ariations,)f(since)i(it)f(is)g(highly)f(lik)o(ely)g(that)i(the)f(mo)o
12087 (v)o(es)f(extended)j(a)e(ply)g(ahead)0 756 y(w)o(ould)g(b)q(e)h(in)e
12088 (the)i(left-most)e(branc)o(hes)j(of)e(the)h(tree.)23
12089 b(Note)16 b(that)g(other)g(algorithms,)d(suc)o(h)j(as)f(Y)m(oung)g
12090 (Brothers)i(W)m(ait,)0 818 y(ha)o(v)o(e)d(pro)q(cessors)i(go)d(idle)h
12091 (when)g(there)h(is)f(no)g(w)o(ork)f(left)h(to)g(do)f(on)h(the)g(curren)
12092 o(t)i(iteration.)62 880 y(As)f(discussed)h(earlier,)d(load)h(balancing)
12093 f(w)o(as)h(used)h(for)e(generating)i(the)f(results)h(giv)o(en)f(here.)
12094 20 b(This)14 b(is)g(based)g(on)g(the)0 942 y(assumption)e(that)h(the)h
12095 (primary)e(metric)g(to)h(measuring)g(a)g(parallel)f(program's)f(p)q
12096 (erformance)i(is)g(the)h(sp)q(eed)h(with)e(whic)o(h)0
12097 1005 y(it)k(ac)o(hiev)o(es)g(a)g Fm(d)p Fn(-ply)e(result.)28
12098 b(Ho)o(w)o(ev)o(er,)18 b(one)f(could)g(argue)g(that)g(the)g(qualit)o(y)
12099 f(of)g(the)i(result)f(ac)o(hiev)o(ed)g(is)g(equiv)n(alen)o(t,)0
12100 1067 y(irresp)q(ectiv)o(e)22 b(of)d(the)h(sp)q(eedup.)38
12101 b(The)20 b(additional)e(sp)q(eculativ)o(e)j(searc)o(h)g(done)f(in)g
12102 (cases)h(where)g(the)f(load)f(balance)h(is)0 1129 y(incorrect)15
12103 b(could)f(b)q(e)g(used)h(to)f(impro)o(v)o(e)e(the)i(qualit)o(y)f(of)g
12104 (the)i(result)f(returned.)62 1191 y(Other)e(results)f(for)f(parallel)f
12105 (searc)o(h)j(algorithms)c(on)i(a)g(net)o(w)o(ork)h(of)e(w)o
12106 (orkstations)h(ha)o(v)o(e)h(b)q(een)g(presen)o(ted)i(for)d(the)g(game)0
12107 1254 y(of)k(c)o(hess)h([21].)j(A)d(distributed)g(transp)q(osition)f
12108 (table)g(w)o(as)g(used)h(to)g(impro)o(v)o(e)d(the)j(p)q(erformance)f
12109 (of)g(the)h Fj(P)l(araPhoenix)0 1316 y Fn(c)o(hess)c(searc)o(hes,)h
12110 (and)e(a)f(sp)q(eedup)j(of)d(7)g(w)o(as)h(ac)o(hiev)o(ed)g(on)f(16)h
12111 (pro)q(cessors.)19 b(Although)9 b(these)i(results)g(are)f(marginally)c
12112 (b)q(etter)0 1378 y(than)14 b(the)g(results)h(presen)o(ted)h(here,)e
12113 (the)h(scalabilit)o(y)d(of)h(the)h(algorithm)e(w)o(as)h(extrap)q
12114 (olated)h(to)g(a)f(sp)q(eedup)j(of)d(at)h(most)e(8)0
12115 1440 y(on)g(32)f(pro)q(cessors.)20 b(Based)13 b(on)f(the)g(graphs)h
12116 (presen)o(ted)h(earlier)e(in)g(this)g(section,)h(w)o(e)f(b)q(eliev)o(e)
12117 g(the)h(APHID)f(algorithm)d(will)0 1503 y(outp)q(erform)16
12118 b(on)g(a)g(larger)h(n)o(um)o(b)q(er)f(of)g(pro)q(cessors.)28
12119 b(The)17 b(b)q(ene\014cial)g(e\013ects)i(of)d(the)h(distributed)h
12120 (transp)q(osition)e(table)0 1565 y(are)i(deriv)o(ed)g(primarily)d(in)j
12121 (the)g(top)g(plies)f(of)g(the)i(searc)o(h)g(tree,)g(and)f(these)h(b)q
12122 (ene\014ts)g(are)f(duplicated)g(in)f(APHID)h(b)o(y)0
12123 1627 y(main)o(taining)10 b(the)15 b(top)f Fm(d)397 1612
12124 y Fd(0)422 1627 y Fn(ply)f(exclusiv)o(ely)h(on)g(the)g(master)g(pro)q
12125 (cessor.)62 1689 y(Although)c(the)h(results)g(presen)o(ted)h(here)g
12126 (for)e(c)o(hess)h(are)g(promising,)d(w)o(e)j(b)q(eliev)o(e)f(that)h(b)q
12127 (etter)g(results)h(can)e(b)q(e)h(ac)o(hiev)o(ed.)0 1752
12128 y(The)16 b(results)g(for)f(parallelizing)e Fj(Key)m(ano)p
12129 Fn(,)k(an)e(Othello)g(program,)e(yield)i(a)f(9-fold)g(sp)q(eedup)j
12130 (with)e(the)g(APHID)h(library)0 1814 y(without)f(the)g(use)h(of)e(load)
12131 g(balancing.)20 b(The)c(main)d(di\013erence)k(b)q(et)o(w)o(een)f(the)f
12132 (results)i(is)d(that)h(the)h(searc)o(h)g(o)o(v)o(erhead)f(for)0
12133 1876 y Fj(Key)m(ano)h Fn(is)e(less)g(than)g(half)f(of)g(the)i
12134 Fj(TheTurk)p Fn('s)f(70\045)f(searc)o(h)i(o)o(v)o(erhead.)62
12135 1939 y(The)g(authors)g(ha)o(v)o(e)f(come)f(up)h(with)g(t)o(w)o(o)g(p)q
12136 (ossible)h(h)o(yp)q(otheses)g(for)f(this)h(discrepancy)m(.)20
12137 b(The)14 b(\014rst)h(is)g(that)f Fj(Key)m(ano)0 2001
12138 y Fn(do)q(es)f(not)e(use)i(quiescen)o(t)g(searc)o(h.)19
12139 b(As)12 b(a)f(consequence,)k(the)d(sizes)h(of)e(the)i(v)n(arious)e
12140 (pieces)i(of)e(w)o(ork)h(are)g(more)f(predictable;)0
12141 2063 y(hence,)i(load)e(balancing)g(is)g(not)h(necessary)m(.)19
12142 b(Load)11 b(balancing)g(causes)i(searc)o(h)g(o)o(v)o(erhead)f(since)g
12143 (it)g(forces)g(a)g(new)g(pro)q(cessor)0 2125 y(to)f(rep)q(eat)i(searc)o
12144 (hes)h(done)e(b)o(y)f(a)g(di\013eren)o(t)i(pro)q(cessor.)19
12145 b(The)12 b(load)f(balancing)f(is)i(partially)e(resp)q(onsible)j(for)e
12146 (the)h(di\013erence)0 2188 y(in)i(searc)o(h)h(o)o(v)o(erhead.)k(The)c
12147 (second)g(p)q(ossible)f(reason)h(is)f(that)g(the)h(searc)o(h)g(windo)o
12148 (ws)f(in)f(the)i(sla)o(v)o(es)f(can,)g(in)g(some)f(cases,)0
12149 2250 y(b)q(e)g(larger)f(than)h(the)g(minim)o(al)c(windo)o(w)i(used)i
12150 (in)f(the)h(sequen)o(tial)g(program.)i(Although)d(this)h(larger)f
12151 (windo)o(w)g(is)g(common)0 2312 y(to)i(b)q(oth)h(parallel)e(implemen)o
12152 (tatio)o(ns,)f(it)i(has)g(a)g(m)o(uc)o(h)f(larger)i(e\013ect)h(on)e
12153 (the)h(size)g(of)e(the)i(trees)h(searc)o(hed)g(in)e Fj(TheTurk)0
12154 2374 y Fn(than)g(in)f Fj(Key)m(ano)p Fn(.)62 2437 y(The)i(APHID)g
12155 (algorithm)c(can)k(supp)q(ort)g(a)f(shared)i(transp)q(osition)e(table,)
12156 g(but)g(the)h(algorithm)d(do)q(es)j(not)g(dep)q(end)g(on)0
12157 2499 y(its)g(presence.)22 b(Th)o(us,)15 b(the)g(algorithm)d(gets)j(go)q
12158 (o)q(d)f(p)q(erformance)h(on)f(a)h(lo)q(osely-coupled)f(net)o(w)o(ork)h
12159 (of)f(w)o(orkstations)g(and)0 2561 y(will)e(p)q(erform)h(ev)o(en)i(b)q
12160 (etter)h(on)d(tigh)o(tly-coupled)g(pro)q(cessors.)954
12163 15 14 bop 0 195 a Fo(5)69 b(Conclusions)22 b(and)i(F)-6
12164 b(uture)23 b(W)-6 b(ork)0 298 y Fn(The)14 b(APHID)f(algorithm)e(yields)
12165 i(go)q(o)q(d)g(sp)q(eedups)i(on)e(a)g(net)o(w)o(ork)g(of)g(w)o
12166 (orkstations)g(without)g(the)h(necessit)o(y)g(of)f(a)g(shared)0
12167 361 y(transp)q(osition)g(table.)18 b(Although)13 b(the)i(authors)f(are)
12168 g(pleased)g(with)f(these)i(preliminary)c(results,)k(a)e(lot)g(of)g(w)o
12169 (ork)g(is)h(left)f(to)0 423 y(b)q(e)i(done.)62 485 y(Our)e(curren)o(t)h
12170 (implemen)o(tation)9 b(of)j(APHID)g(uses)i(a)e(\014xed-depth)h(horizon)
12171 g(for)f(the)h(master's)e(tree.)19 b(As)13 b(men)o(tioned)e(in)0
12172 548 y(our)i(discussion)h(of)f(load)f(balancing,)g(all)g(p)q(ositions)h
12173 (are)h(not)f(equal)g(in)g(the)h(amoun)o(t)e(of)h(searc)o(h)h(e\013ort)g
12174 (they)g(require)g(for)f(a)0 610 y(\014xed)g(depth)g(of)e(searc)o(h.)19
12175 b(APHID)13 b(is)f(b)q(eing)g(generalized)h(to)f(supp)q(ort)h(a)f
12176 (dynamically)e(c)o(hanging)h(horizon)h(in)g(the)h(master.)62
12177 672 y(Instead)h(of)e(basing)h(the)g(results)i(of)d(the)i(algorithm)c
12178 (on)j(the)g(sp)q(eedup,)i(w)o(e)e(are)g(also)g(in)o(terested)h(in)f
12179 (the)g(qualit)o(y)f(of)g(the)0 734 y(results)i(returned)h(b)o(y)d(the)i
12180 (algorithm.)h(This)e(alternativ)o(e)g(view)f(of)h(parallel)f(p)q
12181 (erformance)g(is)h(curren)o(tly)h(b)q(eing)f(explored.)62
12182 797 y(The)i(results)g(rep)q(orted)h(here)f(are)g(based)g(on)e(a)h
12183 (simple)f(master/sla)o(v)o(e)g(relationship.)18 b(As)d(the)g(n)o(um)o
12184 (b)q(er)e(of)h(pro)q(cessors)0 859 y(increases,)f(the)f(master)f
12185 (increasingly)h(b)q(ecomes)f(a)h(b)q(ottlenec)o(k.)18
12186 b(APHID)11 b(has)h(b)q(een)h(generalized)f(to)f(w)o(ork)h(in)f(a)g
12187 (hierarc)o(hi-)0 921 y(cal)j(pro)q(cess)j(tree,)e(although)f(this)h
12188 (asp)q(ect)h(of)e(the)h(algorithm)d(has)j(not)f(b)q(een)i(tested)g
12189 (here.)22 b(Mid-lev)o(el)13 b(pro)q(cesses)18 b(w)o(ould)0
12190 983 y(b)q(eha)o(v)o(e)c(as)f(a)g(sla)o(v)o(e)g(to)o(w)o(ard)g(their)h
12191 (master,)e(and)i(as)f(a)g(master)g(to)o(w)o(ard)g(their)h(sla)o(v)o
12192 (es.)j(The)d(scalabilit)o(y)e(of)h(the)h(algorithm)0
12193 1046 y(has)g(y)o(et)h(to)f(b)q(e)h(demonstrated)f(on)g(arc)o
12194 (hitectures)i(of)e(more)f(than)h(16)g(pro)q(cessors,)i(due)f(to)f
12195 (resource)i(limitations)11 b(during)0 1108 y(the)j(academic)f(y)o(ear.)
12196 62 1170 y(P)o(erhaps)i(the)e(biggest)h(con)o(tribution)f(of)f(APHID)i
12197 (is)f(that)g(it)g(easily)g(\014ts)h(in)f(to)g(an)g(existing)g(sequen)o
12198 (tial)g Fm(\013\014)j Fn(program.)0 1232 y(Not)h(only)e(has)i(APHID)g
12199 (b)q(een)h(in)o(tegrated)f(in)o(to)f Fj(TheTurk)h Fn(and)f
12200 Fj(Key)m(ano)p Fn(,)j(APHID)e(has)g(b)q(een)g(in)o(tegrated)g(in)o(to)f
12201 (the)0 1295 y(c)o(hec)o(k)o(ers)g(program)d Fj(Chinook)j
12202 Fn(with)e(one)g(afterno)q(on)h(of)f(e\013ort.)1033 1280
12203 y Fi(4)1072 1295 y Fn(In)g(con)o(trast,)h(the)g(v)o(ersion)g(of)e
12204 Fj(Chinook)j Fn(used)f(in)f(the)0 1357 y(1994)f(matc)o(h)g(v)o(ersus)i
12205 (Tinsley)e(to)q(ok)h(4)f(to)h(6)g(w)o(eeks)h(to)e(implemen)o(t)e([15].)
12206 0 1494 y Fo(6)69 b(Ac)n(kno)n(wledgemen)n(ts)0 1598 y
12207 Fn(This)14 b(w)o(ork)f(w)o(as)h(supp)q(orted)h(b)o(y)f(the)h(Natural)e
12208 (Sciences)j(and)d(Engineering)h(Researc)o(h)h(Council)f(of)f(Canada.)0
12209 1735 y Fo(References)21 1818 y Fn([1])19 b(S.)d(G.)g(Akl,)f(D.)h(T.)g
12210 (Barnard,)h(and)f(R.)f(J.)h(Doran.)25 b(Design,)16 b(Analysis)g(and)g
12211 (Implemen)o(tation)d(of)j(a)g(P)o(arallel)f(T)m(ree)85
12212 1859 y(Searc)o(h)g(Algorithm.)i Fl(IEEE)f(T)m(r)n(ansactions)f(on)h
12213 (Pattern)f(A)o(nalysis)g(and)h(Machine)g(Intel)r(ligenc)n(e)p
12214 Fn(,)e(P)m(AMI-4\(2\):192{)85 1901 y(203,)f(1982.)21
12215 1975 y([2])19 b(G.)13 b(M.)h(Baudet.)k Fl(The)d(Design)g(and)h
12216 (Analysis)e(of)h(Algorithms)f(for)g(Asynchr)n(onous)i(Multipr)n(o)n(c)n
12217 (essors)p Fn(.)h(PhD)d(thesis,)85 2017 y(Carnegie)g(Mellon)g(Univ)o
12218 (ersit)o(y)m(,)f(Pittsburgh,)h(P)m(A,)f(1978.)k(Av)n(ailable)12
12219 b(as)i(T)m(ec)o(h.)g(Rept.)f(CMU-CS-78-116.)21 2092 y([3])19
12220 b(V.-D.)j(Cung.)44 b Fl(Contribution)23 b(\022)-21 b(a)23
12221 b(l'A)o(lgorithmique)e(Non)j(Num)o(\023)-20 b(erique)23
12222 b(Par)n(al)r(l)o(\022)-20 b(ele:)34 b(Explor)n(ation)23
12223 b(d'Esp)n(ac)n(es)h(de)85 2133 y(R)n(e)n(cher)n(che)p
12224 Fn(.)19 b(PhD)13 b(thesis,)i(Univ)o(ersit)o(\023)-20
12225 b(e)14 b(P)o(aris)g(VI,)g(April)f(1994.)21 2208 y([4])19
12226 b(V.)12 b(Da)o(vid.)h Fl(A)o(lgorithmique)f(p)n(ar)n(al)r(l)o(\022)-20
12227 b(ele)12 b(sur)h(les)g(arbr)n(es)f(de)i(d)o(\023)-20
12228 b(ecision)13 b(et)g(r)n(aisonnement)g(en)h(temps)f(c)n(ontr)n(aint)g(-)
12229 f(Etude)85 2249 y(et)j(applic)n(ation)g(au)h(minimax)p
12230 Fn(.)i(PhD)13 b(thesis,)i(ENSAE,)f(T)m(oulouse,)f(F)m(rance,)h(1993.)21
12231 2324 y([5])19 b(R.)34 b(F)m(eldmann.)78 b Fl(Spielb)n(aumsuche)35
12232 b(mit)e(massiv)h(p)n(ar)n(al)r(lelen)g(Systemen)p Fn(.)80
12233 b(PhD)35 b(thesis,)40 b(Univ)o(ersit\177)-21 b(at-)85
12234 2365 y(Gesam)o(tho)q(c)o(hsc)o(h)o(ule)13 b(P)o(aderb)q(orn,)h(P)o
12235 (aderb)q(orn,)g(German)o(y)m(,)c(Ma)o(y)j(1993.)j(In)d(German)f({)h
12236 (English)g(translation)f(a)o(v)n(ail-)85 2407 y(able.)21
12237 2482 y([6])19 b(E.)f(W.)e(F)m(elten)i(and)f(S.)h(W.)e(Otto.)29
12238 b(Chess)19 b(on)f(a)f(Hyp)q(ercub)q(e.)31 b(In)17 b(G.)g(F)m(o)o(x,)g
12239 (editor,)h Fl(Pr)n(o)n(c)n(e)n(e)n(dings)g(of)h(The)f(Thir)n(d)85
12240 2523 y(Confer)n(enc)n(e)13 b(on)g(Hyp)n(er)n(cub)n(e)f(Concurr)n(ent)h
12241 (Computers)f(and)h(Applic)n(ations)p Fn(,)e(v)o(olume)f(I)q
12242 (I-Applications,)h(pages)g(1329{)85 2565 y(1341,)i(P)o(assadena,)h(CA,)
12243 f(1988.)p 0 2599 780 2 v 46 2626 a Fh(4)64 2638 y Fg(The)e(results)f
12244 (for)h Fa(Chinook)i Fg(w)o(ere)e(not)g(a)o(v)n(ailable)e(at)i(the)g
12245 (time)g(of)g(writing.)954 2828 y Fn(15)p eop
12247 16 15 bop 21 195 a Fn([7])19 b(C.)c(F)m(erguson)h(and)g(R.)f(E.)g
12248 (Korf.)23 b(Distributed)16 b(T)m(ree)g(Searc)o(h)h(and)e(its)h
12249 (Application)f(to)g(Alpha-Beta)h(Pruning.)23 b(In)85
12250 237 y Fl(Pr)n(o)n(c)n(e)n(e)n(dings)15 b(of)g(AAAI-88)p
12251 Fn(,)e(pages)h(128{132,)e(Sain)o(t)h(P)o(aul,)g(MN,)h(August)g(1988.)21
12252 311 y([8])19 b(R.D.)14 b(Green)o(blatt,)h(D.E.)e(Eastlak)o(e,)i(and)g
12253 (S.D.)f(Cro)q(c)o(k)o(er.)22 b(The)15 b(Green)o(blatt)g(Chess)i
12254 (Program.)i(In)c Fl(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)85
12255 353 y(the)f(F)m(al)r(l)g(Joint)f(Computer)h(Confer)n(enc)n(e)p
12256 Fn(,)e(pages)h(801{810,)e(1967.)21 428 y([9])19 b(F.-h.)c(Hsu.)22
12257 b Fl(L)n(ar)n(ge)16 b(Sc)n(ale)g(Par)n(al)r(lelization)f(of)h(A)o
12258 (lpha-Beta)h(Se)n(ar)n(ch:)k(A)o(n)c(A)o(lgorithmic)d(and)j(A)o(r)n
12259 (chite)n(ctur)n(al)e(Study)p Fn(.)85 469 y(PhD)g(thesis,)h(Carnegie)g
12260 (Mellon)e(Univ)o(ersit)o(y)m(,)g(Pittsburgh,)i(U.S.A.,)e(1990.)20
12261 b(Also)15 b(T)m(ec)o(h.)g(Rept.)g(CMU-CS-90-108,)85 511
12262 y(Carnegie)f(Mellon)g(Univ)o(ersit)o(y)m(,)f(F)m(eb.)g(1990.)0
12263 585 y([10])19 b(R.)11 b(M.)h(Hy)o(att,)g(B.)g(W.)f(Suter,)i(and)e(H.)h
12264 (L.)f(Nelson.)16 b(A)c(P)o(arallel)f(Alpha/Beta)h(T)m(ree)g(Searc)o
12265 (hing)g(Algorithm.)h Fl(Par)n(al)r(lel)85 627 y(Computing)p
12266 Fn(,)h(10\(3\):299{308,)d(1989.)0 702 y([11])19 b(D.)f(Kop)q(ec)i(and)f
12267 (I.)f(Bratk)o(o.)33 b(The)19 b(Bratk)o(o-Kop)q(ec)h(Exp)q(erimen)o(t:)
12268 28 b(A)19 b(Comparison)d(of)j(Human)e(and)i(Computer)85
12269 743 y(Performance)11 b(in)f(Chess.)j(In)d(M.R.B.)f(Clark)o(e,)i
12270 (editor,)f Fl(A)n(dvanc)n(es)j(in)e(Computer)h(Chess)f(3)p
12271 Fn(,)g(pages)g(57{72.)d(P)o(ermagon)85 785 y(Press,)15
12272 b(Oxford,)f(1982.)0 859 y([12])19 b(B.)14 b(C.)g(Kuszmaul.)k
12273 Fl(Synchr)n(onize)n(d)e(MIMD)g(Computing)p Fn(.)k(PhD)14
12274 b(thesis,)h(Massac)o(h)o(usetts)h(Institute)f(of)f(T)m(ec)o(hnology)m
12275 (,)85 901 y(Cam)o(bridge,)e(MA,)i(1994.)0 976 y([13])19
12276 b(G.)e(Lindstrom.)28 b(The)18 b(Key)g(No)q(de)g(Metho)q(d:)26
12277 b(A)18 b(Highly-P)o(arallel)d(Alpha-Beta)j(Algorithm.)26
12278 b(T)m(ec)o(hnical)18 b(Rep)q(ort)85 1017 y(UUCS)c(83-101,)e(Univ)o
12279 (ersit)o(y)i(of)g(Utah,)f(Departmen)o(t)g(of)h(Computer)f(Science,)i
12280 (Salt)e(Lak)o(e)h(Cit)o(y)m(,)e(UT,)h(Marc)o(h)i(1983.)0
12281 1092 y([14])k(C.-P)m(.)11 b(P)m(.)g(Lu.)j(P)o(arallel)d(Searc)o(h)h(of)
12282 f(Narro)o(w)h(Game)e(Trees.)16 b(Master's)d(thesis,)f(Departmen)o(t)f
12283 (of)g(Computing)f(Science,)85 1133 y(Univ)o(ersit)o(y)k(of)f(Alb)q
12284 (erta,)h(Edmon)o(ton,)e(Canada,)h(1993.)0 1208 y([15])19
12285 b(P)m(.)13 b(Lu.)18 b(Priv)n(ate)c(comm)o(unication.)o(,)d(1996.)0
12286 1283 y([16])19 b(T.)11 b(A.)f(Marsland)h(and)g(M.)f(S.)h(Campb)q(ell.)g
12287 (Parallel)f(Searc)o(h)i(of)e(Strongly)g(Ordered)j(Game)c(Trees.)15
12288 b Fl(A)o(CM)d(Computing)85 1324 y(Surveys)p Fn(,)i(14\(4\):533{551,)d
12289 (1982.)0 1399 y([17])19 b(M.)14 b(M.)f(Newb)q(orn.)20
12290 b(Unsync)o(hronized)15 b(Iterativ)o(e)g(Deep)q(ening)f(P)o(arallel)f
12291 (Alpha-Beta)h(Searc)o(h.)20 b Fl(IEEE)15 b(T)m(r)n(ansactions)85
12292 1440 y(on)h(Pattern)e(A)o(nalysis)h(and)h(Machine)g(Intel)r(ligenc)n(e)
12293 p Fn(,)d(P)m(AMI-10\(5\):687{694,)d(1988.)0 1515 y([18])19
12294 b(J.)c(P)o(earl.)21 b(Asymptotic)14 b(Prop)q(erties)j(of)d(Minimax)e
12295 (Trees)17 b(and)d(Game-Searc)o(hing)g(Pro)q(cedures.)23
12296 b Fl(A)o(rti\014cial)15 b(Intel)r(li-)85 1557 y(genc)n(e)p
12297 Fn(,)f(14:113{138,)d(1980.)0 1631 y([19])19 b(A.)d(Plaat,)g(J.)g(Sc)o
12298 (hae\013er,)i(W.)e(Pijls,)g(and)g(A.)g(de)h(Bruin.)25
12299 b(Nearly)17 b(Optimal)d(Minimax)g(T)m(ree)j(Searc)o(h?)35
12300 b(T)m(ec)o(hnical)85 1673 y(Rep)q(ort)17 b(94-19,)e(Departmen)o(t)h(of)
12301 g(Computing)e(Science,)k(Univ)o(ersit)o(y)e(of)f(Alb)q(erta,)i(Edmon)o
12302 (ton,)e(Alta.,)h(Decem)o(b)q(er)85 1714 y(1994.)0 1789
12303 y([20])j(A.)14 b(Reinefeld.)k(An)c(Impro)o(v)o(emen)o(t)d(to)j(the)g
12304 (Scout)h(Tree-Searc)o(h)g(Algorithm.)h Fl(ICCA)e(Journal)p
12305 Fn(,)g(6\(4\):4{14,)d(1983.)0 1864 y([21])19 b(J.)11
12306 b(Sc)o(hae\013er.)k(Distributed)d(Game-T)m(ree)e(Searc)o(hing.)j
12307 Fl(Journal)g(of)f(Par)n(al)r(lel)f(and)i(Distribute)n(d)f(Computing)p
12308 Fn(,)f(6\(2\):90{)85 1905 y(114,)i(1989.)0 1980 y([22])19
12309 b(I.)12 b(R.)g(Stein)o(b)q(erg)h(and)g(M.)f(Solomon.)h(Searc)o(hing)g
12310 (Game)d(Trees)k(in)e(P)o(arallel.)j(In)e Fl(Pr)n(o)n(c)n(c)n(e)n(dings)
12311 g(of)h(the)f(1990)i(Interna-)85 2022 y(tional)i(Confer)n(enc)n(e)f(on)h
12312 (Par)n(al)r(lel)e(Pr)n(o)n(c)n(essing)h(\(vol.)g(3\))p
12313 Fn(,)g(pages)g(9{17,)e(Univ)o(ersit)o(y)h(P)o(ark,)h(P)m(A,)f(1990.)f
12314 (P)o(enn.)h(State)85 2063 y(Univ)o(ersit)o(y)f(Press.)0
12315 2138 y([23])19 b(V.)e(Sunderam.)28 b(PVM:)17 b(A)h(F)m(ramew)o(ork)d
12316 (for)i(P)o(arallel)g(Distributed)g(Computing.)26 b Fl(Concurr)n(ency:)g
12317 (Pr)n(actic)n(e)17 b(and)85 2179 y(Exp)n(erienc)n(e)p
12318 Fn(,)d(2\(4\):315{339,)d(Decem)o(b)q(er)j(1990.)0 2254
12319 y([24])19 b(J.-C.)25 b(W)m(eill.)51 b Fl(Pr)n(o)n(gr)n(ammes)25
12320 b(d')o(\023)-20 b(eche)n(cs)26 b(de)g(championnat:)41
12321 b(ar)n(chite)n(ctur)n(e)25 b(lo)n(giciel)r(le)f(synth)o(\022)-20
12322 b(ese)27 b(de)f(fonctions)85 2296 y(d')o(\023)-20 b(evaluations,)15
12323 b(p)n(ar)n(al)r(l)o(\023)-20 b(elisme)14 b(de)h(r)n(e)n(cher)n(che)p
12324 Fn(.)j(PhD)13 b(thesis,)i(Univ)o(ersit)o(\023)-20 b(e)14
12325 b(P)o(aris)g(8,)f(Jan)o(uary)h(1995.)954 2828 y(16)p
12328 17 16 bop 0 195 a Fo(A)69 b(Description)21 b(of)i(APHID)f(In)n(terface)
12329 0 294 y Fc(A.1)56 b(T)n(yp)r(es)18 b(of)h(Pro)r(cesses)f(within)g
12330 (APHID)62 363 y Fk(\017)j Fe(absolute)f(master)p Fn(:)25
12331 b(The)18 b(single)g(pro)q(cess)h(whic)o(h)f(in)o(v)o(ok)o(es)g(all)e
12332 (other)j(pro)q(cesses)h(within)e(the)g(APHID)g(pro)q(cess)104
12333 404 y(hierarc)o(h)o(y)m(,)13 b(whic)o(h)h(o)q(ccupies)h(the)f(highest)h
12334 (lev)o(el)e(in)h(the)g(pro)q(cess)i(hierarc)o(h)o(y)m(.)62
12335 476 y Fk(\017)21 b Fe(slave)p Fn(:)g(An)o(y)16 b(pro)q(cess)i(that)e(m)
12336 o(ust)f(rep)q(ort)i(its)f(searc)o(h)h(results)g(to)f(a)g(pro)q(cess)i
12337 (ab)q(o)o(v)o(e)d(it)h(in)g(the)g(hierarc)o(h)o(y)m(.)25
12338 b(With)104 518 y(this)14 b(de\014nition,)f(a)g(pro)q(cess)j(is)e
12339 (either)h(the)f(absolute)g(master)f(or)h(a)g(sla)o(v)o(e,)f(and)h(can)g
12340 (not)g(b)q(e)g(b)q(oth.)62 589 y Fk(\017)21 b Fe(master)p
12341 Fn(:)e(An)o(y)14 b(pro)q(cess)j(that)e(has)g(pro)q(cesses)j(underneath)
12342 e(it)e(in)h(the)g(hierarc)o(h)o(y)m(.)21 b(Note)15 b(that)g(it)g(is)g
12343 (p)q(ossible)g(for)f(a)104 631 y(pro)q(cess)h(to)f(b)q(e)h(b)q(oth)f(a)
12344 f(master)h(and)f(a)h(sla)o(v)o(e)g(if)f(the)h(pro)q(cess)i(hierarc)o(h)
12345 o(y)e(has)g(m)o(ultiple)e(lev)o(els.)0 746 y Fc(A.2)56
12346 b(Constan)n(ts)20 b(T)-5 b(o)19 b(Be)f(De\014ned)0 814
12347 y Fn(Since)c(the)h(library)e(is)h(application-indep)q(enden)o(t,)f
12348 (some)g(de\014nitions)h(of)f(ho)o(w)g(things)h(are)h(implem)o(en)o(ted)
12349 d(m)o(ust)h(b)q(e)h(giv)o(en)0 856 y(to)g(the)g(APHID)g(library)m(.)62
12350 932 y Fk(\017)21 b Fe(APHID)p 217 932 14 2 v 14 w(HASHTYPESIZE)p
12351 Fn(:)11 b(The)k(size)f(\(in)g(b)o(ytes\))h(of)e(the)h(hash)g(v)n(alue)g
12352 (used)h(in)e(y)o(our)h(program.)62 1003 y Fk(\017)21
12353 b Fe(APHID)p 217 1003 V 14 w(HASHKEYSIZE)p Fn(:)10 b(The)i(size)h(\(in)
12354 f(b)o(ytes\))h(of)f(the)h(\\lo)q(c)o(k")e(used)i(to)f(guaran)o(tee)h
12355 (that)f(t)o(w)o(o)g(p)q(ositions)f(sharing)h(the)104
12356 1045 y(same)h(hash)h(v)n(alue)f(are)h(the)h(same.)62
12357 1117 y Fk(\017)21 b Fe(APHID)p 217 1117 V 14 w(MOVESIZE)p
12358 Fn(:)12 b(The)i(size)h(\(in)f(b)o(ytes\))g(of)g(the)g(represen)o
12359 (tation)i(of)d(a)h(mo)o(v)o(e)e(in)h(the)i(application.)62
12360 1189 y Fk(\017)21 b Fe(APHID)p 217 1189 V 14 w(MINUSINF)15
12361 b Fn(and)h Fe(APHID)p 615 1189 V 15 w(PLUSINF)p Fn(:)e(Sp)q
12362 (eci\014cations)j(of)e(v)n(alues)h(smaller)f(than)h(the)h(minim)n(um)o
12363 (,)c(and)j(larger)104 1230 y(than)e(the)g(maxim)n(um)o(,)c(that)k(the)h
12364 (\\ev)n(aluation")d(could)i(p)q(ossibly)f(return,)i(resp)q(ectiv)o(ely)
12365 m(.)62 1302 y Fk(\017)21 b Fe(APHID)p 217 1302 V 14 w(INVALIDSCORE)p
12366 Fn(:)13 b(A)j(v)n(alue)g(that)g(is)g(outside)g(the)g(range)h(represen)o
12367 (ted)h(b)o(y)e(the)h(minim)n(um)11 b(and)16 b(maxim)n(um)104
12368 1344 y(v)n(alues)d(sp)q(eci\014ed)j(previously)m(.)62
12369 1415 y Fk(\017)21 b Fe(APHID)p 217 1415 V 14 w(LOG2)p
12370 319 1415 V 15 w(TABSIZE)p Fn(:)16 b(The)j(size)g(of)e(the)i(APHID)f
12371 (table)g(that)g(y)o(ou)g(in)o(tend)g(on)g(using)g(to)g(share)h(b)q(et)o
12372 (w)o(een)g(the)104 1457 y(master)c(and)h(the)g(sla)o(v)o(es,)g(tak)o
12373 (en)f(to)h(a)f(base)i(2)e(logarithm.)21 b(F)m(or)15 b(example,)g(a)g(v)
12374 n(alue)g(of)g(14)g(indicates)h(an)g(APHID)104 1503 y(table)e(with)f(2)
12375 323 1488 y Fi(14)370 1503 y Fn(=)e(16384)i(en)o(tries.)62
12376 1575 y Fk(\017)21 b Fe(APHID)p 217 1575 V 14 w(MAXSLAVEPLYSEARCH)p
12377 Fn(:)7 b(The)j(maxim)o(um)c("plytogo")i(v)n(alue)i(that)g(y)o(ou)g
12378 (could)g(p)q(ossibly)g(exp)q(ect)i(to)e(hand)g(to)g(a)104
12379 1616 y(sla)o(v)o(e)g(to)g(searc)o(h.)18 b(Note)10 b(that)g(this)h(v)n
12380 (alue)e(should)h(not)g(b)q(e)h(excessiv)o(ely)g(large,)g(since)g(this)f
12381 (and)g Fe(APHID)p 1683 1616 V 15 w(LOG2)p 1786 1616 V
12382 14 w(TABSIZE)104 1658 y Fn(are)k(the)h(leading)e(determinan)o(ts)g(in)h
12383 (the)g(amoun)o(t)e(of)h(memory)f(used)j(b)o(y)e(the)i(APHID)f(library)m
12384 (.)62 1730 y Fk(\017)21 b Fe(APHID)p 217 1730 V 14 w
12385 (MAXMASTERPLYSEARCH)p Fn(:)10 b(The)k(maxim)o(um)9 b(depth)15
12386 b(that)f(w)o(e)g(exp)q(ect)h(the)g(master)e(should)h(reac)o(h.)62
12387 1802 y Fk(\017)21 b Fe(APHID)p 217 1802 V 14 w(SLAVENODESTOCOMM)p
12388 Fn(:)15 b(This)j(should)g(b)q(e)g(set)h(to)f(the)h(n)o(um)o(b)q(er)e
12389 (of)h(no)q(des)h(that)f(the)g(sequen)o(tial)h(program)104
12390 1843 y(visits)13 b(on)h(the)h(t)o(yp)q(e)f(of)f(pro)q(cessor)j(b)q
12391 (eing)e(used,)g(divided)g(b)o(y)f(10.)0 1958 y Fc(A.3)56
12392 b(Standard)19 b(V)-5 b(ariables)19 b(Used)62 2026 y Fk(\017)i
12393 Fe(argv)p Fn(:)e(Standard)c(argumen)o(t)e(list.)20 b(Used)c(to)f
12394 (instan)o(tiate)f(the)h(sla)o(v)o(es)g(with)g(the)g(same)f(parameters)h
12395 (as)g(the)g(initial)104 2068 y(program.)62 2140 y Fk(\017)21
12396 b Fe(depth)p Fn(:)c(The)d(n)o(um)o(b)q(er)f(of)g(ply)h(the)g(curren)o
12397 (t)i(no)q(de)e(is)g(a)o(w)o(a)o(y)f(from)f(the)i(ro)q(ot)g(of)f(the)i
12398 (game)d(tree.)62 2212 y Fk(\017)21 b Fe(plytogo)p Fn(:)15
12399 b(The)c(n)o(um)o(b)q(er)f(of)g(ply)h(un)o(til)f(w)o(e)h(reac)o(h)g(the)
12400 h(b)q(ottom)d(of)h(the)i(game)d(tree.)18 b(In)11 b(a)g(searc)o(h)h
12401 (with)e(no)h(extensions)104 2253 y(or)j(forw)o(ard)f(pruning,)g
12402 Fe(plytogo)21 b(+)g(depth)13 b Fn(should)h(b)q(e)g(constan)o(t.)62
12403 2325 y Fk(\017)21 b Fe(&move[i])10 b Fn(or)i Fe(&bestmove)p
12404 Fn(:)j(A)d(p)q(oin)o(ter)g(to)f(an)h(area)g(of)f Fe(APHID)p
12405 1098 2325 V 15 w(MOVESIZE)f Fn(b)o(ytes)i(whic)o(h)g(sp)q(eci\014es)h
12406 (the)g(mo)o(v)o(e)d(b)q(eing)104 2367 y(pla)o(y)o(ed.)62
12407 2438 y Fk(\017)21 b Fe(p)p 129 2438 V 15 w(hash)p Fn(:)c(A)d(p)q(oin)o
12408 (ter)g(to)g(an)g(area)g(of)f Fe(APHID)p 805 2438 V 15
12409 w(HASHTYPESIZE)e Fn(b)o(ytes)k(that)f(con)o(tains)g(the)g(curren)o(t)h
12410 (hash)g(v)n(alue.)62 2510 y Fk(\017)21 b Fe(p)p 129 2510
12411 V 15 w(key)p Fn(:)c(A)c(p)q(oin)o(ter)g(to)f(an)g(area)h
12412 Fe(APHID)p 729 2510 V 15 w(HASHKEYSIZE)d Fn(b)o(ytes)k(that)e(con)o
12413 (tains)h(a)f(lo)q(c)o(k)g(whic)o(h)h(can)g(\\guaran)o(tee")f(the)104
12414 2552 y(b)q(oard)i(stored)h(in)e(the)h(lo)q(cation)f(of)h(the)g(hash)g
12415 (table)g(is)g(correct.)62 2624 y Fk(\017)21 b Fe(alpha)13
12416 b Fn(and)g Fe(beta)p Fn(:)k(Searc)o(h)e(windo)o(w)e(used)i(b)o(y)f
12417 Fm(\013\014)i Fn(implemen)o(tatio)o(n;)11 b(they)j(are)g(exp)q(ected)i
12418 (to)e(b)q(e)h(32-bit)e(in)o(tegers.)62 2696 y Fk(\017)21
12419 b Fe(value)13 b Fn(and)g Fe(score)p Fn(:)k(V)m(alues)d(of)f(leaf)g(no)q
12420 (des;)i(they)f(are)g(exp)q(ected)i(to)e(b)q(e)h(32-bit)e(in)o(tegers)h
12421 (for)g(this)g(library)m(.)954 2828 y(17)p eop
12423 18 17 bop 0 195 a Fc(A.4)56 b(Stubs)19 b(T)-5 b(o)19
12424 b(Be)f(W)-5 b(ritten)62 263 y Fk(\017)21 b Fe(int)g(aphid)p
12425 304 263 14 2 v 15 w(stub)p 407 263 V 14 w(encodeinit\(char)e(*msg\))p
12426 Fn(:)k(Pro)o(vides)17 b(the)g(absolute)g(master)f(with)h(a)f(4000-b)o
12427 (yte)g(bu\013er)i(to)104 305 y(store)g(all)d(p)q(ertinen)o(t)k
12428 (information)14 b(ab)q(out)i(the)i(ro)q(ot)f(of)f(the)i(game)d(tree.)29
12429 b(The)17 b(return)i(v)n(alue)d(is)h(the)g(n)o(um)o(b)q(er)g(of)104
12430 346 y(b)o(ytes)d(used)h(in)f(the)g(string)g Fe(msg)p
12431 Fn(.)62 421 y Fk(\017)21 b Fe(int)g(aphid)p 304 421 V
12432 15 w(stub)p 407 421 V 14 w(decodeinit\(int)e(msg)p 814
12433 421 V 15 w(ln,)j(char)f(*msg\))p Fn(:)15 b(All)9 b(other)i(pro)q
12434 (cesses)j(in)c(the)h(system,)f(aside)h(from)104 463 y(the)i(absolute)f
12435 (master,)g(receiv)o(e)i(the)f(message)f(length)g(and)g(the)h(message)f
12436 (enco)q(ded)i(b)o(y)e Fe(aphid)p 1606 463 V 15 w(stub)p
12437 1709 463 V 15 w(encodeinit)p Fn(,)104 504 y(and)h(should)h(set)h(the)f
12438 (ro)q(ot)g(of)g(their)g(game)e(tree,)j(accordingly)m(.)62
12439 579 y Fk(\017)21 b Fe(void)g(aphid)p 326 579 V 14 w(stub)p
12440 428 579 V 15 w(movedownpath\(int)e(num)p 880 579 V 15
12441 w(moves,)h(char)h(*movepath\))p Fn(:)15 b(Called)10 b(b)o(y)h(the)h
12442 (sla)o(v)o(es,)f(a)g(series)i(of)104 620 y Fe(num)p 173
12443 620 V 15 w(moves)d Fn(mo)o(v)o(es)h(is)g(giv)o(en)h(in)f
12444 Fe(movepath)p Fn(,)f(with)h(eac)o(h)h(mo)o(v)o(e)e(b)q(eing)i
12445 Fe(APHID)p 1328 620 V 15 w(MOVESIZE)e Fn(b)o(ytes)i(long.)17
12446 b(The)12 b(routine)104 662 y(should)h(pla)o(y)g(through)h(the)h(mo)o(v)
12447 o(es)d(giv)o(en)i(in)f Fe(movepath)f Fn(from)h(the)h(ro)q(ot)g(of)f
12448 (the)i(game)d(tree.)62 737 y Fk(\017)21 b Fe(void)g(aphid)p
12449 326 737 V 14 w(stub)p 428 737 V 15 w(moveuppath\(int)e(num)p
12450 836 737 V 15 w(moves,)i(char)g(*movepath\))p Fn(:)14
12451 b(Called)d(b)o(y)g(the)h(sla)o(v)o(es,)f(should)g(com-)104
12452 778 y(pletely)j(undo)f(an)o(y)h(c)o(hanges)g(made)f(b)o(y)h
12453 Fe(aphid)p 856 778 V 14 w(stub)p 958 778 V 15 w(movedownpath)p
12454 Fn(.)62 853 y Fk(\017)21 b Fe(int)g(aphid)p 304 853 V
12455 15 w(stub)p 407 853 V 14 w(iterativedeepening\(i)o(nt)e(depth,)h(int)h
12456 (last,)g(int)g(max\))p Fn(:)d(Called)13 b(b)o(y)h(the)h(sla)o(v)o(es,)f
12457 (this)104 894 y(routine)j(should)f(return)i(the)g(searc)o(h)g(depth)f
12458 (for)g(the)g(next)g(searc)o(h)h(of)f(a)f(leaf)g(no)q(de)i(from)d(a)h
12459 (master's)g(tree.)28 b(F)m(or)104 936 y(most)12 b(programs)h(that)h(do)
12460 g(iterativ)o(e)g(deep)q(ening)g(in)g(1)f(ply)h(steps,)h(this)f(should)f
12461 (simply)f(return)j Fe(last)21 b(+)h(1)p Fn(.)62 1011
12462 y Fk(\017)f Fe(void)g(aphid)p 326 1011 V 14 w(stub)p
12463 428 1011 V 15 w(preparesearch\(int)e(depth,)h(int)h(plytogo,)f(int)i
12464 (winstats[],)d(int)i(*alpha,)104 1052 y(int)g(*beta\))p
12465 Fn(:)16 b(Called)10 b(b)o(y)i(the)g(sla)o(v)o(es,)f(this)h(routine)g
12466 (sets)g(the)g(initial)e(windo)o(w)h(searc)o(hed)i(b)o(y)e(the)h(sla)o
12467 (v)o(es.)17 b(Statistics)104 1094 y(on)12 b(previous)h(searc)o(hes)h
12468 (and)f(the)g(curren)o(t)h(guessed)g(score)g(at)e(the)h(ro)q(ot)g(are)f
12469 (passed)i(in)e(via)g(the)h Fe(winstats[])d Fn(arra)o(y)m(.)104
12470 1135 y(The)j(routine)f(should)h(set)g Fe(*alpha)e Fn(and)h
12471 Fe(*beta)g Fn(b)q(efore)h(terminating.)j(F)m(urthermore,)c(this)g
12472 (routine)h(should)f(ensure)104 1177 y(that)i(an)o(y)f(global)f("alarm")
12473 g(states)j(ha)o(v)o(e)e(b)q(een)i(turned)g(o\013.)62
12474 1251 y Fk(\017)21 b Fe(int)g(aphid)p 304 1251 V 15 w(stub)p
12475 407 1251 V 14 w(alphabeta\(int)f(depth,)g(int)h(plytogo,)f(int)i
12476 (alpha,)e(int)h(beta\))p Fn(:)c(Called)c(b)o(y)h(b)q(oth)104
12477 1293 y(the)f(master)e(and)h(the)h(sla)o(v)o(es,)f(this)g(routine)g
12478 (should)g(call)g(y)o(our)g(implem)o(en)o(tation)d(of)j
12479 Fm(\013\014)r Fn(,)g(and)g(return)h(the)g(minim)o(ax)104
12480 1334 y(v)n(alue)g(bac)o(k)h(to)g(the)g(APHID)g(library)m(.)62
12481 1409 y Fk(\017)21 b Fe(int)g(aphid)p 304 1409 V 15 w(stub)p
12482 407 1409 V 14 w(evaluate\(int)f(depth,)g(int)i(alpha,)e(int)h(beta\))p
12483 Fn(:)c(Called)c(b)o(y)g(the)h(master)f(the)h(\014rst)g(time)104
12484 1451 y(it)g(visits)h(a)f(leaf)g(of)g(its)h(tree,)g(this)g(routine)g
12485 (should)f(simply)f(call)h(y)o(our)g(ev)n(aluation)f(routine)i(and)g
12486 (return)g(the)h(score)104 1492 y(for)d(the)i(p)q(osition)e(reac)o(hed)i
12487 (at)f Fe(depth)f Fn(ply)g(within)g(the)i(tree.)62 1567
12488 y Fk(\017)21 b Fe(int)g(aphid)p 304 1567 V 15 w(stub)p
12489 407 1567 V 14 w(stopsearch\(int)e(pass)p 836 1567 V 15
12490 w(stats[]\))p Fn(:)j(Called)16 b(only)f(b)o(y)i(the)g(absolute)f
12491 (master)g(pro)q(cess,)j(this)104 1608 y(routine)d(should)g(c)o(hec)o(k)
12492 h(y)o(our)e(timer)g(and)h(determine)g(if)f(y)o(our)h(time)e(limit)f
12493 (has)k(b)q(een)g(exceeded)h(for)d(a)h(searc)o(h.)25 b(If)104
12494 1650 y(the)14 b(time)f(limit)e(has)j(b)q(een)h(exceeded,)h(this)e
12495 (routine)g(should)f(return)i(1;)f(otherwise,)g(0.)62
12496 1725 y Fk(\017)21 b Fe(int)g(aphid)p 304 1725 V 15 w(stub)p
12497 407 1725 V 14 w(visited\(\))p Fn(:)c(Called)d(b)o(y)g(the)g(sla)o(v)o
12498 (es,)g(this)g(should)g(return)i(a)e(global)e(coun)o(t)j(of)e(the)i(n)o
12499 (um)o(b)q(er)f(of)104 1766 y(no)q(des)g(visited)g(b)o(y)g(the)g
12500 (program.)0 1882 y Fc(A.5)56 b(In)n(terface)18 b(Calls)h(Used)f(b)n(y)h
12501 (Master)g(and)g(Sla)n(v)n(e)62 1951 y Fk(\017)i Fe(void)g(aphid)p
12502 326 1951 V 14 w(startup\(argv\))p Fn(:)k(In)19 b(the)g(\014rst)h(pro)q
12503 (cess)g(run,)g(PVM)f(is)g(spa)o(wned)g(on)g(the)g(mac)o(hines)f(sp)q
12504 (eci\014ed,)104 1992 y(and)c(a)f(sla)o(v)o(e)h(pro)q(cess)i(is)e(spa)o
12505 (wned)g(with)g(the)h(same)e(argumen)o(t)g(list)g Fe(\(argv\))g
12506 Fn(as)h(the)h(master,)e(as)h(sp)q(eci\014ed)i(b)o(y)d(the)104
12507 2034 y Fe(aphid.config)e Fn(\014le.)18 b(In)c(a)g(spa)o(wned)g(pro)q
12508 (cess,)h(the)g(APHID)f(library)f(nev)o(er)i(exits)f(this)g(function)g
12509 (call.)62 2108 y Fk(\017)21 b Fe(void)g(aphid)p 326 2108
12510 V 14 w(exit\(\))p Fn(:)j(This)17 b(routine)h(remo)o(v)o(es)e(a)h(pro)q
12511 (cess)j(from)15 b(the)j(PVM)g(group,)f(and)g(it)g(should)g(b)q(e)h
12512 (called)104 2150 y(b)q(efore)e(an)o(y)f(pro)q(cess)j(exits)e(\(due)g
12513 (to)g(errors)h(or)e(normal)f(completion\).)21 b(If)16
12514 b(the)g(pro)q(cess)h(is)f(the)g(absolute)g(master,)104
12515 2191 y(completion)11 b(of)i(this)h(routine)f(ensures)j(that)d(all)f(of)
12516 h(the)h(spa)o(wned)g(pro)q(cesses)i(ha)o(v)o(e)d(b)q(een)i(sh)o(ut)f
12517 (do)o(wn)f(successfully)m(.)62 2266 y Fk(\017)21 b Fe(int)g(aphid)p
12518 304 2266 V 15 w(master\(\))p Fn(:)16 b(Returns)f(1)e(if)g(the)i(pro)q
12519 (cess)h(is)d(a)h(master)f(in)h(the)g(hierarc)o(h)o(y)m(,)g(and)f(0)h
12520 (otherwise.)62 2341 y Fk(\017)21 b Fe(int)g(aphid)p 304
12521 2341 V 15 w(slave\(\))p Fn(:)14 b(Returns)d(1)f(if)g(the)h(pro)q(cess)h
12522 (w)o(as)e(spa)o(wned,)h(returns)h(0)e(if)f(it)h(is)g(the)h(absolute)f
12523 (master)g(pro)q(cess)104 2382 y(whic)o(h)k(spa)o(wned)h(the)g(other)g
12524 (pro)q(cesses.)23 b(Note)15 b(that)f(a)h(pro)q(cess)h(can)f(b)q(e)g(b)q
12525 (oth)f(a)h(sla)o(v)o(e)f(and)g(a)g(master)g(dep)q(ending)104
12526 2424 y(on)f(the)i(hierarc)o(h)o(y)f(sp)q(eci\014ed)i(in)d
12527 Fe(aphid.config)p Fn(.)954 2828 y(18)p eop
12529 19 18 bop 0 195 a Fc(A.6)56 b(In)n(terface)18 b(Calls)h(Used)f(b)n(y)h
12530 (Masters)g(Only)62 263 y Fk(\017)i Fe(void)g(aphid)p
12531 326 263 14 2 v 14 w(initserach\(int)e(maxdepth\))p Fn(:)d(Called)d(b)o
12532 (y)h(the)g(absolute)g(master)g(pro)q(cess,)h(this)f(pro)q(cedure)h
12533 (pre-)104 305 y(pares)i(to)g(start)g(a)f(searc)o(h)i(in)e(parallel.)26
12534 b(This)16 b(routine)h(calls)f Fe(aphid)p 1212 305 V 15
12535 w(stub)p 1315 305 V 15 w(encodeinit)p Fn(,)f(and)h(then)h(informs)e
12536 (all)104 346 y(of)e(the)i(other)g(pro)q(cesses)i(of)c(the)i(curren)o(t)
12537 h(state)f(of)e(the)i(game.)i(The)e(parameter)f(indicates)g(the)h(maxim)
12538 n(um)10 b(depth)104 388 y(that)k(an)o(y)f(pro)q(cess)j(is)e(nominall)o
12539 (y)d(allo)o(w)o(ed)i(to)g(searc)o(h,)i Fl(not)g(including)h(se)n(ar)n
12540 (ch)e(extensions)p Fn(.)62 463 y Fk(\017)21 b Fe(int)g(aphid)p
12541 304 463 V 15 w(rootsearch\(int)e(depth,)h(int)h(plytogo,)f(int)i
12542 (alpha,)e(int)h(beta\))p Fn(:)26 b(This)18 b(routine)h(is)f(called)104
12543 504 y(b)o(y)d(the)h(absolute)g(master,)e(instead)i(of)f(calling)f(the)i
12544 (t)o(ypical)f Fm(\013\014)i Fn(implemen)o(taiton.)i(It)d(allo)o(ws)e(a)
12545 h(master)g(pro)q(cess)104 546 y(to)i(do)g(m)o(ultiple)e(passes)k(of)e
12546 (the)h(tree)g(un)o(til)f(the)h(searc)o(h)g(is)g(completed,)f(or)g(the)h
12547 (alarm)d(has)j(b)q(een)g(signalled)f(via)104 587 y Fe(aphid)p
12548 217 587 V 14 w(stub)p 319 587 V 15 w(stopsearch)p Fn(.)f(If)e(the)g
12549 (searc)o(h)i(is)d(allo)o(w)o(ed)g(to)h(complete,)f(this)h(routine)g
12550 (returns)h(the)g(minim)o(ax)c(v)n(alue)104 629 y(of)i(the)i(tree)g
12551 (that)f(it)f(has)h(b)q(een)h(ask)o(ed)f(to)g(searc)o(h.)62
12552 703 y Fk(\017)21 b Fe(int)g(aphid)p 304 703 V 15 w(intnode)p
12553 473 703 V 14 w(premove\(int)e(depth,)i(char)g(*moveptr\))p
12554 Fn(:)15 b(Called)d(b)o(y)h(the)g(absolute)g(master,)e(this)i(rou-)104
12555 745 y(tine)h(stores)h(mo)o(v)o(es)e(made)f(b)q(efore)j(a)f(call)f(to)g
12556 Fe(aphid)p 938 745 V 15 w(rootsearch)f Fn(in)h(the)i(mo)o(v)o(e)d
12557 (list.)62 820 y Fk(\017)21 b Fe(void)g(aphid)p 326 820
12558 V 14 w(endsearch\(\))p Fn(:)15 b(The)e(absolute)f(master)g(should)g
12559 (call)f(this)i(routine)f(when)h(it)f(is)g(\014nished)h(searc)o(hing)f
12560 (a)104 861 y(tree)i(that)e(has)h(b)q(een)h(called)e(;)h(it)f(stops)h
12561 (the)g(sla)o(v)o(es)g(from)e(w)o(orking)g(on)i(the)g(lea)o(v)o(es)g(of)
12562 f(the)h(game)e(tree)j(and)e(prepares)104 903 y(the)i(sla)o(v)o(es)g(to)
12563 g(receiv)o(e)h(a)f(new)g(ro)q(ot)g(p)q(osition.)62 977
12564 y Fk(\017)21 b Fe(void)g(aphid)p 326 977 V 14 w(horizon\(int)f(depth\))
12565 p Fn(:)15 b(A)d(\\master")e(pro)q(cess)j(calls)e(this)h(routine)f(to)g
12566 (determine)h(if)e(it)h(has)h(reac)o(hed)104 1019 y(its)i(arti\014cial)f
12567 (horizon.)62 1094 y Fk(\017)21 b Fe(void)g(aphid)p 326
12568 1094 V 14 w(eval)p 428 1094 V 15 w(leaf\(int)f(alpha,)h(int)g(beta,)g
12569 (int)g(depth,)g(char)g(*p)p 1403 1094 V 15 w(hash,)g(char)g(*p)p
12570 1702 1094 V 15 w(key\))p Fn(:)104 1135 y(This)10 b(routine)h
12571 (determines)g(a)f(score)i(v)n(alue)d(for)h(the)i(leaf,)e(based)h(on)f
12572 (the)h(b)q(est)h(information)7 b(a)o(v)n(ailable)h(to)j(the)g(master.)
12573 104 1177 y Fe(p)p 129 1177 V 15 w(hash)i Fn(and)h Fe(p)p
12574 348 1177 V 15 w(key)g Fn(are)g(required)h(to)f(determine)f(if)g(this)h
12575 (no)q(de)h(has)f(b)q(een)h(previously)e(visited.)62 1251
12576 y Fk(\017)21 b Fe(void)g(aphid)p 326 1251 V 14 w(intnode)p
12577 494 1251 V 15 w(start\(int)f(depth,)g(char)h(*p)p 1032
12578 1251 V 15 w(hash,)g(char)g(*p)p 1331 1251 V 15 w(key\))p
12579 Fn(:)16 b(Called)11 b(b)o(y)g(a)h(master)f(pro)q(cess,)104
12580 1293 y(this)j(routine)g(initializes)e(b)q(ound)i(gathering)g
12581 (information)d(for)i(an)h(in)o(terior)f(no)q(de)h(within)f(the)i(game)d
12582 (tree.)19 b Fe(p)p 1850 1293 V 16 w(hash)104 1334 y Fn(and)13
12583 b Fe(p)p 209 1334 V 16 w(key)g Fn(are)h(required)h(to)f(determine)g(if)
12584 f(this)h(no)q(de)g(has)g(b)q(een)h(previously)f(visited.)62
12585 1409 y Fk(\017)21 b Fe(void)g(aphid)p 326 1409 V 14 w(intnode)p
12586 494 1409 V 15 w(move\(int)f(depth,)g(char)h(*moveptr\))p
12587 Fn(:)k(Called)18 b(b)o(y)g(a)g(master)g(pro)q(cess,)i(this)f(routine)
12588 104 1451 y(inserts)c(the)f(mo)o(v)o(e)e(p)q(oin)o(ted)i(to)f(b)o(y)h
12589 Fe(moveptr)e Fn(in)o(to)h(a)h(hidden)g(mo)o(v)o(e)e(list)h(that)h(will)
12590 e(ev)o(en)o(tually)h(b)q(e)i(sen)o(t)f(to)g(a)f(sla)o(v)o(e)104
12591 1492 y(in)g Fe(aphid)p 265 1492 V 15 w(eval)p 368 1492
12592 V 15 w(leaf)p Fn(.)62 1567 y Fk(\017)21 b Fe(void)g(aphid)p
12593 326 1567 V 14 w(intnode)p 494 1567 V 15 w(update\(int)e(depth,)i(int)g
12594 (value\))p Fn(:)27 b(Called)19 b(b)o(y)f(the)i(master)f(pro)q(cess,)j
12595 (this)d(routine)104 1608 y(tak)o(es)d(the)g(v)n(alue)f(returned)j(b)o
12596 (y)d(the)i(c)o(hild)e Fm(\013\014)j Fn(call)d(and)h(uses)h(it)e(to)h
12597 (up)q(date)g(the)h(hidden)e(\\b)q(ound")h(information)104
12598 1650 y(gathered)f(for)e(ev)o(ery)i(no)q(de)f(in)f(the)i(master's)e
12599 (tree.)62 1725 y Fk(\017)21 b Fe(void)g(aphid)p 326 1725
12600 V 14 w(intnode)p 494 1725 V 15 w(fixbound\(int)e(depth\))p
12601 Fn(:)h(In)c(the)g(case)h(of)e(a)h(cuto\013,)g(this)g(routine)g(will)e
12602 (\014x)h(the)i(hidden)104 1766 y(b)q(ound)d(information)d(when)j(not)g
12603 (all)f(mo)o(v)o(es)f(ha)o(v)o(e)i(b)q(een)h(fully)d(explored.)62
12604 1841 y Fk(\017)21 b Fe(void)g(aphid)p 326 1841 V 14 w(intnode)p
12605 494 1841 V 15 w(end\(int)f(depth,)h(int)g(*score\))p
12606 Fn(;)12 b(This)j(routine)f(is)g(called)g(b)o(y)h(a)f(master)f(for)h(ev)
12607 o(ery)i(in-)104 1882 y(ternal)d(no)q(de)g(within)f(the)i(tree,)g(and)e
12608 (ensures)j(that)e(the)g(score)i(returned)f(is)f(consisten)o(t)h(with)e
12609 (previously)h(gathered)104 1924 y(information)e(ab)q(out)j(the)g(no)q
12610 (de.)0 2040 y Fc(A.7)56 b(In)n(terface)18 b(Calls)h(Used)f(b)n(y)h(Sla)
12611 n(v)n(es)g(Only)62 2108 y Fk(\017)i Fe(int)g(aphid)p
12612 304 2108 V 15 w(checkalarm\(\))p Fn(:)e(This)d(routine)h(c)o(hec)o(ks)g
12613 (to)f(see)h(if)f(a)f(searc)o(h)j(should)e(b)q(e)g(terminated.)24
12614 b(If)16 b(the)h(v)n(alue)104 2150 y(returned)f(is)e(equal)f(to)h(0,)g
12615 (the)h(searc)o(h)g(should)f(con)o(tin)o(ue.)19 b(If)13
12616 b(the)i(v)n(alue)f(returned)h(is)f(not)h(equal)e(to)h(0,)g(the)g
12617 (curren)o(t)104 2191 y(searc)o(h)h(has)f(b)q(een)h(in)o(terrupted,)g
12618 (and)e(w)o(e)h(should)g(terminate)f(it)h(in)f(a)h(\\nice")g(w)o(a)o(y)m
12619 (.)954 2828 y(19)p eop
12621 20 19 bop 0 195 a Fc(A.8)56 b(The)18 b(\\aphid.con\014g")h(File)e
12622 (Description)62 263 y Fk(\017)k Fn(The)15 b(\014rst)g(line)f(con)o
12623 (tains)h(t)o(w)o(o)f(in)o(tegers:)21 b(The)15 b(n)o(um)o(b)q(er)f(of)g
12624 (lev)o(els)g(in)g(the)i(pro)q(cess)g(hierarc)o(h)o(y)m(,)e(and)h(the)g
12625 (minim)n(um)104 305 y(gran)o(ularit)o(y)d(of)i(w)o(ork)f(that)h(w)o(e)g
12626 (are)h(allo)q(cated)e(in)g(parallel.)62 380 y Fk(\017)21
12627 b Fn(The)d(next)g(lines)g(eac)o(h)g(con)o(tain)g(one)g(in)o(teger,)g
12628 (eac)o(h)g(in)o(teger)h(represen)o(ting)g(the)f(v)n(alue)g(of)f
12629 Fm(d)1607 365 y Fd(0)1636 380 y Fn(for)g(a)h(lev)o(el)f(in)g(the)104
12630 421 y(pro)q(cess)e(hierarc)o(h)o(y)m(.)62 496 y Fk(\017)21
12631 b Fn(The)14 b(last)g(lines)g(indicate)h(what)f(mac)o(hines)f(the)i(pro)
12632 q(cesses)i(should)c(b)q(e)i(spa)o(wned)g(on,)f(and)g(what)g(executable)
12633 h(is)f(to)104 537 y(b)q(e)j(run,)g(one)g(line)f(p)q(er)i(pro)q(cess)g
12634 (to)f(b)q(e)g(spa)o(wned.)27 b(By)17 b(default,)f(APHID)h(will)e(spa)o
12635 (wn)i(an)f(executable)i(with)e(the)104 579 y(same)d(program)f(name)h
12636 (as)h(the)h(original)d(program)g(unless)j(a)f Fe(#)f
12637 Fn(c)o(haracter)j(app)q(ears)e(on)g(the)h(line,)e(whic)o(h)h(indicates)
12638 104 620 y(a)h(separation)h(b)q(et)o(w)o(een)h(the)f(mac)o(hine)e(name)g
12639 (and)i(the)g(program)e(name.)22 b(The)16 b(absolute)f(master)g(pro)q
12640 (cess)j(is)d(not)104 662 y(listed)c(in)f(this)h(hierarc)o(h)o(y)m(.)17
12641 b(A)10 b(pro)q(cess)j(hierarc)o(h)o(y)e(can)g(b)q(e)g(sp)q(eci\014ed)i
12642 (using)d(tabs)h(to)g(mo)o(v)o(e)e(the)i(start)h(of)e(the)h(mac)o(hine)
12643 104 703 y(name)h(o)o(v)o(er)i(in)g(the)g(\014le.)954
12647 userdict /end-hook known{end-hook}if