2 %%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
6 %%BoundingBox: 0 0 612 792
7 %%DocumentFonts: Times-Roman Times-Bold Times-Italic Courier
8 %%DocumentPaperSizes: Letter
10 %DVIPSCommandLine: dvips journal -t letter -o journal.ps
11 %DVIPSParameters: dpi=600, comments removed
12 %DVIPSSource: TeX output 1999.02.12:1313
13 %%BeginProcSet: tex.pro
14 /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
15 /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
16 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
17 ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
18 isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
19 hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
20 TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
21 forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
22 /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
23 /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{
24 /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
25 string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
26 end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
27 /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
28 N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
29 length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
30 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
31 get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
32 dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
33 /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
34 /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
35 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
36 setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
37 .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}
38 if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
39 length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
40 cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
41 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
42 add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
43 /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
44 known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
45 /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
46 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
47 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
48 {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
49 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
50 ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
51 RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
52 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
53 round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
54 rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
55 {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
56 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{
57 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{
58 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
59 a}B /bos{/SS save N}B /eos{SS restore}B end
61 %%BeginFont: Times-Roman
63 % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
65 % date = "22 June 1996",
66 % filename = "8r.enc",
67 % email = "kb@@mail.tug.org",
68 % address = "135 Center Hill Rd. // Plymouth, MA 02360",
69 % codetable = "ISO/ASCII",
70 % checksum = "119 662 4424",
71 % docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX."
74 % Idea is to have all the characters normally included in Type 1 fonts
75 % available for typesetting. This is effectively the characters in Adobe
76 % Standard Encoding + ISO Latin 1 + extra characters from Lucida.
78 % Character code assignments were made as follows:
80 % (1) the Windows ANSI characters are almost all in their Windows ANSI
81 % positions, because some Windows users cannot easily reencode the
82 % fonts, and it makes no difference on other systems. The only Windows
83 % ANSI characters not available are those that make no sense for
84 % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
85 % (173). quotesingle and grave are moved just because it's such an
86 % irritation not having them in TeX positions.
88 % (2) Remaining characters are assigned arbitrarily to the lower part
89 % of the range, avoiding 0, 10 and 13 in case we meet dumb software.
91 % (3) Y&Y Lucida Bright includes some extra text characters; in the
92 % hopes that other PostScript fonts, perhaps created for public
93 % consumption, will include them, they are included starting at 0x12.
95 % (4) Remaining positions left undefined are for use in (hopefully)
96 % upward-compatible revisions, if someday more characters are generally
99 % (5) hyphen appears twice for compatibility with both ASCII and Windows.
102 % 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
103 /.notdef /dotaccent /fi /fl
104 /fraction /hungarumlaut /Lslash /lslash
105 /ogonek /ring /.notdef
106 /breve /minus /.notdef
107 % These are the only two remaining unencoded characters, so may as
112 % (unusual TeX characters available in, e.g., Lucida Bright)
113 /dotlessj /ff /ffi /ffl
114 /.notdef /.notdef /.notdef /.notdef
115 /.notdef /.notdef /.notdef /.notdef
116 % very contentious; it's so painful not having quoteleft and quoteright
117 % at 96 and 145 that we move the things normally found there down to here.
119 % 0x20 (ASCII begins)
120 /space /exclam /quotedbl /numbersign
121 /dollar /percent /ampersand /quoteright
122 /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
124 /zero /one /two /three /four /five /six /seven
125 /eight /nine /colon /semicolon /less /equal /greater /question
127 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
129 /P /Q /R /S /T /U /V /W
130 /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
132 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
134 /p /q /r /s /t /u /v /w
135 /x /y /z /braceleft /bar /braceright /asciitilde
136 /.notdef % rubout; ASCII ends
138 /.notdef /.notdef /quotesinglbase /florin
139 /quotedblbase /ellipsis /dagger /daggerdbl
140 /circumflex /perthousand /Scaron /guilsinglleft
141 /OE /.notdef /.notdef /.notdef
143 /.notdef /.notdef /.notdef /quotedblleft
144 /quotedblright /bullet /endash /emdash
145 /tilde /trademark /scaron /guilsinglright
146 /oe /.notdef /.notdef /Ydieresis
148 /.notdef % nobreakspace
149 /exclamdown /cent /sterling
150 /currency /yen /brokenbar /section
151 /dieresis /copyright /ordfeminine /guillemotleft
153 /hyphen % Y&Y (also at 45); Windows' softhyphen
157 /degree /plusminus /twosuperior /threesuperior
158 /acute /mu /paragraph /periodcentered
159 /cedilla /onesuperior /ordmasculine /guillemotright
160 /onequarter /onehalf /threequarters /questiondown
162 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
163 /Egrave /Eacute /Ecircumflex /Edieresis
164 /Igrave /Iacute /Icircumflex /Idieresis
166 /Eth /Ntilde /Ograve /Oacute
167 /Ocircumflex /Otilde /Odieresis /multiply
168 /Oslash /Ugrave /Uacute /Ucircumflex
169 /Udieresis /Yacute /Thorn /germandbls
171 /agrave /aacute /acircumflex /atilde
172 /adieresis /aring /ae /ccedilla
173 /egrave /eacute /ecircumflex /edieresis
174 /igrave /iacute /icircumflex /idieresis
176 /eth /ntilde /ograve /oacute
177 /ocircumflex /otilde /odieresis /divide
178 /oslash /ugrave /uacute /ucircumflex
179 /udieresis /yacute /thorn /ydieresis
182 %%BeginProcSet: texps.pro
183 TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2
184 index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
185 exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
186 exch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub
187 dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
188 ifelse}forall Metrics /Metrics currentdict end def[2 index currentdict
189 end definefont 3 -1 roll makefont /setfont load]cvx def}def
190 /ObliqueSlant{dup sin S cos div neg}B /SlantFont{4 index mul add}def
191 /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding exch def}def
194 %%BeginProcSet: special.pro
195 TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N
196 /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen
197 false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B
198 /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit
199 div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{
200 /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{
201 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B
202 /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale
203 true def end /@MacSetUp{userdict /md known{userdict /md get type
204 /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup
205 length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{}
206 N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath
207 clippath mark{transform{itransform moveto}}{transform{itransform lineto}
208 }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{
209 itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{
210 closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39
211 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N
212 /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1
213 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get
214 ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
215 not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0
216 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR
217 pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1
218 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg
219 TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg
220 sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr
221 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add
222 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp
223 {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72
224 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray}
225 N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict
226 maxlength dict begin /magscale true def normalscale currentpoint TR
227 /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
228 /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx
229 psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy
230 scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR
231 /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{
232 psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
233 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
234 moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict
235 begin /SpecialSave save N gsave normalscale currentpoint TR
236 @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial
237 {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
238 closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
239 sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
240 }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
241 CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
242 lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath
243 }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{
244 end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin}
245 N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{
246 /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX
247 SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X
248 /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad
249 yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end
251 TeXDict begin 40258431 52099146 1000 600 600 (journal.dvi)
252 @start /Fa 165[49 58 1[75 1[58 49 1[53 2[58 58 2[58 1[27
253 58 58 44 49 3[58 65[{ TeXBase1Encoding ReEncodeFont }15
254 79.999924 /Times-Roman rf /Fb 133[60 1[60 1[60 60 60
255 60 60 1[60 60 60 60 60 60 1[60 60 2[60 60 60 1[60 14[60
256 16[60 65[{ TeXBase1Encoding ReEncodeFont }21 100.000000
257 /Courier rf /Fc 1 51 df<01FC0007FF801C0FC03003E06001F06000F8F800F8FC00FC
258 FC00FCFC007C78007C3000FC0000FC0000F80000F80001F00003E00003C0000780000F00
259 001E0000380000700000E00001C00C03800C0600180C00181800183FFFF87FFFF8FFFFF0
260 FFFFF016217CA01E>50 D E /Fd 1 101 df<000003E000003FC000003FC0000003C000
261 0003C00000078000000780000007800000078000000F0000000F0000000F0000000F0000
262 1F1E0000FF9E0001E0DE0003807E0007007C000F003C001E003C003E003C003C0078007C
263 0078007C0078007C007800F800F000F800F000F800F040F800F060F801E0C07801E0C078
264 03E0C03807E1801C1CF3000FF87F0007E03C001B247EA220>100
265 D E /Fe 1 101 df<0000001F000003FF000003FF0000003F0000003F0000003E000000
266 3E0000007E0000007E0000007C0000007C000000FC000000FC000000F8000000F8000001
267 F80007E1F8001FF9F0007C1DF000F80FF001F00FF003E007E007C007E00FC007E01F8007
268 E01F8007C03F0007C03F000FC07F000FC07E000F807E000F807E001F80FE001F80FC001F
269 00FC001F00FC003F02FC003F06FC003E06F8003E06F8007E0E7C00FE0C7C00FC0C7C01FC
270 1C3E07BE181F0E1E380FFC0FF003F003C0202F7DAD24>100 D E
271 /Ff 2 13 df<0000003FE000000000000001FFFC0000000000000FFFFF0000000000003F
272 E03FC00000000000FF000FE00000000001FC0007F00003C00007F80003F80003C0000FF0
273 0001FC000380001FE00001FE000380003FC00000FE000780007F800000FF00070000FF00
274 0000FF00070001FE0000007F800F0003FE0000007F800E0003FC0000007F800E0007F800
275 00007FC01E000FF80000003FC01C000FF80000003FC03C001FF00000003FC038001FF000
276 00003FC078003FE00000003FC070003FE00000003FC0F0007FE00000003FC0E0007FC000
277 00003FC1E0007FC00000003FC1C0007FC00000003FC3C000FFC00000003FC78000FF8000
278 00003FC78000FF800000003FCF0000FF800000003FDE0000FF800000003FDE0000FF0000
279 00003FFC0000FF000000003FF80000FF000000003FF00000FF000000003FF00000FF0000
280 00003FE00000FF000000003FC00000FF000000003FC00000FF000000003FC00000FF0000
281 00003FC00000FF000000003FC000007F00000000FFC000007F80000001FFE000003F8000
282 0003FFE000003F8000000F9FE00E001FC000001F1FE01E000FE000007C0FE01C0007F000
283 01F80FE03C0003F8000FE007F0780001FE00FF8003F8F800007FFFFE0001FFF000001FFF
284 F00000FFC0000003FF0000003F000042357BB34A>11 D<000000000001FF000000000000
285 000FFFC00000000000007FFFF0000000000000FE01FC000000000003F000FE0000000000
286 0FC0007F00000000001F00003F00000000003C00003F80000000007800001F8000000000
287 F000001FC000000001E000001FC000000003C000001FC0000000078000001FC00000000F
288 0000001FE00000001E0000001FE00000001C0000001FE00000003C0000001FE000000078
289 0000003FE0000000700000003FC0000000F00000003FC0000001E00000003FC0000001C0
290 0000007FC0000003C00000007F80000003800000007F80000007800000007F8000000700
291 000000FF0000000700000000FF0000000F00000001FE0000000E00000001FC0000000E00
292 000003FC0000001E00000007F80000001C00000007F00000001C0000000FE00000003C00
293 07FF1FC000000038001FFFFF8000000038003FFFFE0000000038003803FE000000007800
294 3FFFFF0000000070003FFFFF8000000070000FFE1FC0000000700000000FE0000000F000
295 00000FE0000000E000000007F0000000E000000007F0000000E000000007F8000001E000
296 000003F8000001C000000003F8000001C000000003FC000001C000000003FC000003C000
297 000003FC0000038000000003FC0000038000000003FC0000038000000007FC0000078000
298 000007FC0000070000000007FC0000070000000007FC0000070000000007FC00000F0000
299 00000FFC00000E000000000FF800000E000000000FF800000E000000000FF800001E0000
300 00001FF800001E000000001FF000001E000000001FF000001C000000001FF000003C0000
301 00003FE000003C000000003FE000003E000000007FC000003E000000007FC000007E0000
302 0000FF8000007E00000000FF0000007E00000001FF0000007F00000001FE000000F70000
303 0003FC000000E780000007F8000000E38000000FF0000000E3C000000FE0000001E1E000
304 001FC0000001C1F000007F80000001C0F80000FF00000001C07E0001FC00000003C01F80
305 0FF000000003800FFFFFE0000000038003FFFF00000000038000FFFC0000000007800000
306 00000000000700000000000000000700000000000000000700000000000000000F000000
307 00000000000E00000000000000000E00000000000000000E00000000000000001E000000
308 00000000001C00000000000000001C00000000000000001C00000000000000003C000000
309 000000000038000000000000000038000000000000000038000000000000000078000000
310 0000000000700000000000000000700000000000000000700000000000000000F0000000
311 0000000000F00000000000000000436B7ED342>I E /Fg 134[60
312 60 1[60 66 40 47 53 2[60 66 100 33 2[33 66 60 40 53 66
313 53 66 60 12[80 66 86 1[73 93 1[113 80 2[47 93 2[80 86
314 1[80 86 11[60 60 60 60 60 2[30 40 45[{ TeXBase1Encoding ReEncodeFont }
315 40 119.999947 /Times-Bold rf /Fh 103[50 32[50 1[50 50
316 50 50 1[50 2[50 50 2[50 50 50 1[50 50 50 50 50 38[50
317 10[50 50 46[{ TeXBase1Encoding ReEncodeFont }20 83.333336
318 /Courier rf /Fi 134[42 42 60 42 42 23 32 28 42 42 42
319 42 65 23 42 23 23 42 42 28 37 42 37 42 37 3[28 1[28 3[78
320 60 1[51 46 55 1[46 60 60 74 51 60 1[28 60 60 2[60 55
321 55 60 7[42 42 42 42 42 42 42 42 42 42 1[21 28 21 2[28
322 28 2[69 34[46 2[{ TeXBase1Encoding ReEncodeFont }62 83.333336
323 /Times-Roman rf /Fj 8 57 df<00380000780001F8001FF800FEF800E0F80000F80000
324 F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000
325 F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000
326 F80000F80000F80000F80001FC00FFFFF8FFFFF815267BA521>49
327 D<00FF000003FFE0000E03F0001800F80030007C0060007E0078003F00FC003F00FE001F
328 80FE001F80FE001F80FE001F807C001F8000001F8000001F0000003F0000003E0000007E
329 0000007C000000F8000001F0000003E0000003C00000078000000E0000001C0000003800
330 000070018000E001800180018003000300060003000C0003001FFFFF003FFFFF007FFFFE
331 00FFFFFE00FFFFFE0019267DA521>I<00FF000003FFE0000F01F8001C007C0030007E00
332 3C003E007E003F007E003F007E003F007E003F003C003F0000003E0000007E0000007C00
333 0000F8000001F0000007E00001FF800001FF00000001E0000000F00000007C0000003E00
334 00003F0000001F0000001F8000001F8038001F807C001F80FE001F80FE001F80FE001F00
335 FC003F0078003E0070007C003800F8001F01F00007FFC00000FF000019277DA521>I<00
336 00380000003800000078000000F8000001F8000001F8000003F8000007F8000006F80000
337 0CF800001CF8000018F8000030F8000070F8000060F80000C0F80001C0F8000180F80003
338 00F8000700F8000E00F8000C00F8001C00F8003800F8003000F8006000F800E000F800FF
339 FFFFE0FFFFFFE00000F8000000F8000000F8000000F8000000F8000000F8000000F80000
340 01FC00003FFFE0003FFFE01B277EA621>I<18000C001F007C001FFFF8001FFFF0001FFF
341 E0001FFF800019FC00001800000018000000180000001800000018000000180000001800
342 0000187F000019FFE0001F81F0001E0078001C003C0018003E0000003E0000001F000000
343 1F0000001F8000001F8030001F807C001F80FC001F80FC001F80FC001F80FC001F00F000
344 1F0060003E0070003E0030007C001C00F8000F03E00003FFC00000FE000019277DA521>
345 I<000FE000003FF80000F81C0001E0060003C01F0007803F000F003F001F003F001E003F
346 003E001E003E0000007C0000007C0000007C0400007C3FC000FCFFF000FDC07800FF003C
347 00FF003E00FE001E00FE001F00FE001F00FC001F80FC001F80FC001F80FC001F807C001F
348 807C001F807C001F807C001F803C001F003E001F001E001E001E003E000F003C00078078
349 0003C1F00001FFC000007F000019277DA521>I<300000003C0000003FFFFFE03FFFFFE0
350 3FFFFFC07FFFFF807FFFFF807000070060000E0060000C00C0001C00C0003800C0007000
351 0000E0000000C0000001C000000380000003800000070000000F0000000E0000001E0000
352 001E0000001E0000003E0000003C0000003C0000007C0000007C0000007C0000007C0000
353 00FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000780000
354 1B287DA621>I<007F000003FFE0000781F8000E007C001C001E0038001E0038000F0078
355 000F0078000F0078000F007C000F007E001E003F801E003FE03C001FF078000FFCF00007
356 FFC00003FF800000FFE00001FFF000079FFC000F07FE001E03FE003C00FF0078003F0078
357 001F80F0000F80F0000F80F0000780F0000780F0000780F00007007800070078000E003C
358 001C001E0038000F80F00003FFE000007F000019277DA521>I E
359 /Fk 5 50 df<7FFFFFFFFFFFFFE0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF07FFFFFFFFFFF
360 FFE03C04789A4D>0 D<600000000006F8000000000FFC000000001F7E000000003F3F00
361 0000007E1F80000000FC0FC0000001F807E0000003F003F0000007E001F800000FC000FC
362 00001F80007E00003F00003F00007E00001F8000FC00000FC001F8000007E003F0000003
363 F007E0000001F80FC0000000FC1F800000007E3F000000003F7E000000001FFC00000000
364 0FF80000000007F00000000007F0000000000FF8000000001FFC000000003F7E00000000
365 7E3F00000000FC1F80000001F80FC0000003F007E0000007E003F000000FC001F800001F
366 8000FC00003F00007E00007E00003F0000FC00001F8001F800000FC003F0000007E007E0
367 000003F00FC0000001F81F80000000FC3F000000007E7E000000003FFC000000001FF800
368 0000000F600000000006303072B04D>2 D<00000000000000E000000000000003F00000
369 000000000FF00000000000003FE0000000000000FF80000000000003FE0000000000000F
370 F80000000000003FE0000000000000FF80000000000003FE0000000000000FF800000000
371 00003FE0000000000000FF80000000000003FE0000000000001FF80000000000007FE000
372 0000000001FF80000000000007FE0000000000001FF00000000000007FC0000000000001
373 FF00000000000007FC0000000000001FF00000000000007FC0000000000001FF00000000
374 000007FC0000000000001FF00000000000007FC0000000000000FF00000000000000FF00
375 0000000000007FC00000000000001FF000000000000007FC00000000000001FF00000000
376 0000007FC00000000000001FF000000000000007FC00000000000001FF00000000000000
377 7FC00000000000001FF000000000000007FC00000000000001FF800000000000007FE000
378 00000000001FF800000000000007FE00000000000000FF800000000000003FE000000000
379 00000FF800000000000003FE00000000000000FF800000000000003FE00000000000000F
380 F800000000000003FE00000000000000FF800000000000003FE00000000000000FF00000
381 0000000003F000000000000000E000000000000000000000000000000000000000000000
382 000000000000000000000000000000000000000000000000000000000000000000000000
383 000000000000000000000000000000000000000000000000000000000000000000000000
384 000000000000000000000000000000000000000000000000000000000000000000007FFF
385 FFFFFFFFFFE0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF07FFFFFFFFFFFFFE03C4E78BE4D>
386 20 D<7000000000000000FC00000000000000FF000000000000007FC00000000000001F
387 F000000000000007FC00000000000001FF000000000000007FC00000000000001FF00000
388 0000000007FC00000000000001FF000000000000007FC00000000000001FF00000000000
389 0007FC00000000000001FF800000000000007FE00000000000001FF800000000000007FE
390 00000000000000FF800000000000003FE00000000000000FF800000000000003FE000000
391 00000000FF800000000000003FE00000000000000FF800000000000003FE000000000000
392 00FF800000000000003FE00000000000000FF00000000000000FF00000000000003FE000
393 0000000000FF80000000000003FE0000000000000FF80000000000003FE0000000000000
394 FF80000000000003FE0000000000000FF80000000000003FE0000000000000FF80000000
395 000003FE0000000000001FF80000000000007FE0000000000001FF80000000000007FE00
396 00000000001FF00000000000007FC0000000000001FF00000000000007FC000000000000
397 1FF00000000000007FC0000000000001FF00000000000007FC0000000000001FF0000000
398 0000007FC0000000000000FF00000000000000FC00000000000000700000000000000000
399 000000000000000000000000000000000000000000000000000000000000000000000000
400 000000000000000000000000000000000000000000000000000000000000000000000000
401 000000000000000000000000000000000000000000000000000000000000000000000000
402 000000000000000000000000000000000000007FFFFFFFFFFFFFE0FFFFFFFFFFFFFFF0FF
403 FFFFFFFFFFFFF07FFFFFFFFFFFFFE03C4E78BE4D>I<0001FF00000000003FC00000000F
404 FFE000000003FFF80000003FFFFC0000000FFFFE0000007FFFFF0000003FE01F000001FF
405 FFFF8000007E0007C00003F803FFE00001F80001E00007E0007FF00003F00000F0000780
406 003FF80007C0000070000F00001FFC000F80000038001E000007FE001F0000001C001C00
407 0003FF003E0000000C0038000001FF807C0000000E0038000001FFC0F800000006007000
408 0000FFE0F80000000700700000007FF1F00000000700600000003FF3E000000003006000
409 00001FFBC00000000300E00000001FFFC00000000380C00000000FFF800000000180C000
410 000007FF000000000180C000000003FF000000000180C000000001FF800000000180C000
411 000001FFC00000000180C000000000FFC00000000180C0000000007FE00000000180C000
412 0000007FF00000000180C000000000FFF80000000180E000000001FFFC00000003806000
413 000001EFFC00000003006000000003E7FE00000003007000000007C7FF00000007007000
414 00000F83FF8000000700300000000F81FFC000000E00380000001F00FFC000000E001800
415 00003E007FE000001C001C0000007C003FF000003C000E000000F8001FFC000078000700
416 0001F0000FFE0000F00007800007E00007FF0003F00003C0000FC00003FFE00FE00001F0
417 003F000000FFFFFFC000007C03FE0000007FFFFF0000003FFFF80000001FFFFE0000000F
418 FFE000000003FFF800000001FE00000000007FC00000592D7BAB64>49
419 D E /Fl 26 123 df<00000C00001C0000380000700000E00001C00003C0000780000F00
420 000F00001E00003C00003C0000780000F80000F00001F00001E00003E00003E00007C000
421 07C00007C0000F80000F80000F80001F00001F00001F00003F00003F00003E00003E0000
422 7E00007E00007E00007E00007C00007C00007C0000FC0000FC0000FC0000FC0000FC0000
423 FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000
424 FC0000FC0000FC00007C00007C00007C00007E00007E00007E00007E00003E00003E0000
425 3F00003F00001F00001F00001F00000F80000F80000F800007C00007C00007C00003E000
426 03E00001E00001F00000F00000F800007800003C00003C00001E00000F00000F00000780
427 0003C00001C00000E000007000003800001C00000C166476CA26>40
428 D<C00000E000007000003800001C00000E00000F000007800003C00003C00001E00000F0
429 0000F000007800007C00003C00003E00001E00001F00001F00000F80000F80000F800007
430 C00007C00007C00003E00003E00003E00003F00003F00001F00001F00001F80001F80001
431 F80001F80000F80000F80000F80000FC0000FC0000FC0000FC0000FC0000FC0000FC0000
432 FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000
433 FC0000F80000F80000F80001F80001F80001F80001F80001F00001F00003F00003F00003
434 E00003E00003E00007C00007C00007C0000F80000F80000F80001F00001F00001E00003E
435 00003C00007C0000780000F00000F00001E00003C00003C0000780000F00000E00001C00
436 00380000700000E00000C0000016647BCA26>I<00000000C00000000000000001E00000
437 000000000001E00000000000000001E00000000000000001E00000000000000001E00000
438 000000000001E00000000000000001E00000000000000001E00000000000000001E00000
439 000000000001E00000000000000001E00000000000000001E00000000000000001E00000
440 000000000001E00000000000000001E00000000000000001E00000000000000001E00000
441 000000000001E00000000000000001E00000000000000001E00000000000000001E00000
442 000000000001E00000000000000001E00000000000000001E00000000000000001E00000
443 000000000001E00000000000000001E00000000000000001E00000000000000001E00000
444 00007FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF807FFFFFFFFFFFFF
445 FF0000000001E00000000000000001E00000000000000001E00000000000000001E00000
446 000000000001E00000000000000001E00000000000000001E00000000000000001E00000
447 000000000001E00000000000000001E00000000000000001E00000000000000001E00000
448 000000000001E00000000000000001E00000000000000001E00000000000000001E00000
449 000000000001E00000000000000001E00000000000000001E00000000000000001E00000
450 000000000001E00000000000000001E00000000000000001E00000000000000001E00000
451 000000000001E00000000000000001E00000000000000001E00000000000000001E00000
452 000000000001E00000000000000000C00000000041407BB84C>43
453 D<0000FF00000007FFE000001F81F800003E007C0000FC003F0001F8001F8001F0000F80
454 03E00007C007C00003E007C00003E00FC00003F00F800001F01F800001F81F800001F83F
455 800001FC3F800001FC3F800001FC3F000000FC7F000000FE7F000000FE7F000000FE7F00
456 0000FE7F000000FEFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF0000
457 00FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000
458 FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FF
459 FF000000FFFF000000FF7F000000FE7F000000FE7F000000FE7F000000FE7F000000FE7F
460 800001FE3F800001FC3F800001FC3F800001FC1F800001F81F800001F80FC00003F00FC0
461 0003F00FC00003F007E00007E003E00007C003F0000FC001F8001F8000FC003F00003E00
462 7C00001F81F8000007FFE0000000FF000028447CC131>48 D<000030000000F0000001F0
463 000003F000001FF00000FFF000FFFFF000FFE7F000FF07F0000007F0000007F0000007F0
464 000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
465 000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
466 000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
467 000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
468 000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
469 000007F0000007F0000007F0000007F000000FF800001FFC007FFFFFFF7FFFFFFF7FFFFF
470 FF204278C131>I<0000000380000000000380000000000780000000000F80000000000F
471 80000000001F80000000003F80000000003F80000000007F8000000000FF8000000000FF
472 8000000001FF8000000003BF80000000033F80000000073F80000000063F800000000C3F
473 800000001C3F80000000183F80000000303F80000000703F80000000603F80000000C03F
474 80000001C03F80000001803F80000003003F80000007003F80000006003F8000000C003F
475 8000001C003F80000018003F80000030003F80000070003F80000060003F800000E0003F
476 800001C0003F80000180003F80000380003F80000300003F80000600003F80000E00003F
477 80000C00003F80001800003F80003800003F80003000003F80006000003F8000E000003F
478 8000FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC00000003F80000000003F80000000003F
479 80000000003F80000000003F80000000003F80000000003F80000000003F80000000003F
480 80000000003F80000000003F80000000003F80000000003F8000000000FFE00000007FFF
481 FFC000007FFFFFC000007FFFFFC02A437DC231>52 D<06000000C007C00007C007FC007F
482 8007FFFFFF0007FFFFFE0007FFFFFC0007FFFFF80007FFFFE00007FFFF8000063FFC0000
483 060000000006000000000600000000060000000006000000000600000000060000000006
484 000000000600000000060000000006000000000600000000060000000006000000000600
485 FF00000607FFC000061F01F000063800FC0006F0007E0007C0003F000780001F80078000
486 1FC00700000FC00600000FE000000007F000000007F000000007F000000007F800000003
487 F800000003F800000003FC00000003FC00000003FC00000003FC00000003FC3E000003FC
488 7F000003FCFF800003FCFF800003FCFF800003FCFF800003FCFF800003F8FF000007F8FE
489 000007F860000007F060000007F07000000FF03000000FE03800001FC01C00001FC01E00
490 003F800F00007F00078000FE0003C001FC0001F807F000007FFFE000001FFF00000007F8
491 000026447BC131>I<7FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF80
492 7FFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000
493 000000000000000000000000000000000000000000000000000000000000000000000000
494 000000000000000000000000000000000000000000000000000000000000000000000000
495 000000000000000000000000000000000000000000000000000000000000000000000000
496 0000000000000000007FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF80
497 7FFFFFFFFFFFFFFF0041187BA44C>61 D<0007FC000000003FFF80000000F80FE0000003
498 C003F00000070001F800000E0000FC00000FC0007E00001FE0007F00001FF0003F80001F
499 F0003F80001FF0003F80001FF0001FC0001FF0001FC0000FE0001FC0000380001FC00000
500 00001FC0000000001FC0000000001FC0000000001FC00000000FFFC0000001FFFFC00000
501 0FFE1FC000003FC01FC00000FF001FC00003FC001FC00007F8001FC0000FF0001FC0001F
502 E0001FC0003FC0001FC0007FC0001FC0007F80001FC0007F80001FC060FF00001FC060FF
503 00001FC060FF00001FC060FF00003FC060FF00003FC060FF00003FC060FF80007FC0607F
504 8000EFC0607FC000C7E0C03FC001C7E0C01FE00783F1C007F81E03FF8001FFFC01FF0000
505 1FE0007C002B2E7CAC31>97 D<00007F80000003FFF000000FC07C00003F000F0000FC00
506 038001F80001C003F8000FC007F0001FE007E0003FE00FE0003FE01FC0003FE01FC0003F
507 E03F80003FE03F80001FC07F800007007F800000007F800000007F00000000FF00000000
508 FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF
509 00000000FF00000000FF000000007F000000007F800000007F800000003F800000003F80
510 0000303FC00000301FC00000700FE00000600FE00000E007F00000C003F80001C001F800
511 038000FC000700003F001E00001FC078000007FFF0000000FF8000242E7DAC2B>99
512 D<000000007F000000003FFF000000003FFF000000003FFF0000000001FF0000000000FF
513 00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F
514 00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F
515 00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F
516 00000000007F0000007F807F000003FFF07F00000FC07C7F00003F000E7F00007E00077F
517 0000FC0003FF0003F80001FF0007F00000FF0007E00000FF000FE000007F001FC000007F
518 001FC000007F003F8000007F003F8000007F007F8000007F007F8000007F007F0000007F
519 00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F
520 00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F007F0000007F
521 007F8000007F007F8000007F003F8000007F003F8000007F001FC000007F001FC000007F
522 000FC00000FF000FE00000FF0007F00001FF0003F00003FF0001F800077F8000FC000E7F
523 C0003F001C7FFE000FC0F87FFE0003FFE07FFE00007F007F002F467DC436>I<0001FE00
524 000007FFC000001F03F000007E00FC0000FC007E0001F8003F0003F0003F0007E0001F80
525 0FE0001FC00FC0000FC01FC0000FC03F80000FE03F800007E03F800007E07F800007F07F
526 000007F07F000007F0FF000007F0FF000007F0FF000007F0FFFFFFFFF0FFFFFFFFF0FF00
527 000000FF00000000FF00000000FF00000000FF00000000FF000000007F000000007F0000
528 00007F800000007F800000003F800000003F800000301FC00000301FC00000700FC00000
529 600FE00000E007F00000C003F00001C001F800038000FC000700003E001E00001F80F800
530 0003FFE0000000FF0000242E7DAC2B>I<01FC00000000FFFC00000000FFFC00000000FF
531 FC0000000007FC0000000003FC0000000001FC0000000001FC0000000001FC0000000001
532 FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001
533 FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001
534 FC0000000001FC0000000001FC0000000001FC0000000001FC01FE000001FC07FFC00001
535 FC1E07F00001FC3801F80001FC7001FC0001FCE000FC0001FDC000FE0001FD8000FE0001
536 FF80007F0001FF00007F0001FF00007F0001FE00007F0001FE00007F0001FE00007F0001
537 FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001
538 FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001
539 FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001
540 FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001
541 FC00007F0001FC00007F0003FE0000FF80FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFE2F
542 457DC436>104 D<01E00007F80007F8000FFC000FFC000FFC000FFC0007F80007F80001
543 E00000000000000000000000000000000000000000000000000000000000000000000000
544 000000000001FC00FFFC00FFFC00FFFC0007FC0003FC0001FC0001FC0001FC0001FC0001
545 FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001
546 FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001
547 FC0001FC0001FC0001FC0001FC0001FC0003FE00FFFFF8FFFFF8FFFFF815437DC21C>I<
548 01FC00FFFC00FFFC00FFFC0007FC0003FC0001FC0001FC0001FC0001FC0001FC0001FC00
549 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
550 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
551 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
552 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
553 01FC0001FC0001FC0001FC0001FC0003FE00FFFFF8FFFFF8FFFFF815457DC41C>108
554 D<01FC00FF00001FE00000FFFC07FFE000FFFC0000FFFC0F03F801E07F0000FFFC3C01FC
555 07803F800007FC7000FE0E001FC00003FCE0007E1C000FC00001FDC0007F38000FE00001
556 FD80007F30000FE00001FF80003FF00007F00001FF00003FE00007F00001FF00003FE000
557 07F00001FE00003FC00007F00001FE00003FC00007F00001FE00003FC00007F00001FC00
558 003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F0
559 0001FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F
560 800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001
561 FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F8000
562 07F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00
563 003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F0
564 0001FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F
565 800007F00003FE00007FC0000FF800FFFFF81FFFFF03FFFFE0FFFFF81FFFFF03FFFFE0FF
566 FFF81FFFFF03FFFFE04B2C7DAB52>I<01FC01FE0000FFFC07FFC000FFFC1E07F000FFFC
567 3801F80007FC7001FC0003FCE000FC0001FDC000FE0001FD8000FE0001FF80007F0001FF
568 00007F0001FF00007F0001FE00007F0001FE00007F0001FE00007F0001FC00007F0001FC
569 00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC
570 00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC
571 00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC
572 00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC
573 00007F0003FE0000FF80FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFE2F2C7DAB36>I<00
574 007F8000000003FFF00000000FC0FC0000003E001F0000007C000F800000F80007C00001
575 F00003E00003E00001F00007C00000F8000FC00000FC000FC00000FC001F8000007E003F
576 8000007F003F8000007F003F0000003F007F0000003F807F0000003F807F0000003F807F
577 0000003F80FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF
578 0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC07F0000003F807F
579 0000003F807F8000007F803F8000007F003F8000007F001F8000007E001FC00000FE000F
580 C00000FC000FE00001FC0007E00001F80003F00003F00001F80007E00000FC000FC00000
581 3E001F0000001FC0FE00000007FFF8000000007F8000002A2E7DAC31>I<01FC03FC0000
582 FFFC0FFF8000FFFC3C07E000FFFC7001F80007FDE000FE0001FD80007F0001FF80003F80
583 01FF00001FC001FE00001FE001FC00000FE001FC00000FF001FC000007F001FC000007F8
584 01FC000003F801FC000003FC01FC000003FC01FC000003FC01FC000001FE01FC000001FE
585 01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE
586 01FC000001FE01FC000001FE01FC000001FE01FC000003FC01FC000003FC01FC000003FC
587 01FC000007F801FC000007F801FC000007F001FC00000FF001FE00000FE001FE00001FC0
588 01FF00003FC001FF00003F8001FF80007E0001FDC000FC0001FCF003F80001FC3C0FE000
589 01FC1FFF800001FC03FC000001FC0000000001FC0000000001FC0000000001FC00000000
590 01FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000000
591 01FC0000000001FC0000000001FC0000000001FC0000000003FE00000000FFFFF8000000
592 FFFFF8000000FFFFF80000002F3F7DAB36>I<00007F8003000003FFE00700000FE07807
593 00003F801C0F00007E000E0F0000FC00071F0003F800039F0007F80001BF0007F00001FF
594 000FE00000FF001FE00000FF001FC00000FF003FC000007F003FC000007F007F8000007F
595 007F8000007F007F8000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F
596 00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F
597 00FF0000007F007F8000007F007F8000007F007F8000007F003F8000007F003FC000007F
598 001FC000007F001FE00000FF000FE00000FF000FF00001FF0007F00001FF0003F80003FF
599 0001FC00077F0000FE000E7F00003F001C7F00000FC0F87F000003FFE07F0000007F007F
600 00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F
601 00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F
602 00000000007F00000000007F0000000000FF800000003FFFFE0000003FFFFE0000003FFF
603 FE2F3F7DAB33>I<03F803F0FFF81FFCFFF83C3EFFF8707F07F8E0FF03F9C0FF01F980FF
604 01FB80FF01FB007E01FB003C01FF000001FE000001FE000001FE000001FE000001FC0000
605 01FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0000
606 01FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0000
607 01FC000001FC000001FC000001FC000001FC000001FC000003FF0000FFFFFE00FFFFFE00
608 FFFFFE00202C7DAB26>I<003FE01801FFFC3807E01F780F0003F81E0001F83C0000F87C
609 00007878000078F8000038F8000038F8000018F8000018FC000018FC000018FE000018FF
610 8000007FC000007FFC00003FFFE0001FFFFC000FFFFF0007FFFFC003FFFFE000FFFFF000
611 1FFFF80000FFF800000FFC000003FCC00001FEC00000FEC000007EE000007EE000003EE0
612 00003EF000003EF000003EF000003EF800003CFC00007CFC000078FE0000F8FF0001F0F3
613 8003E0F1F00F80E07FFE00C00FF0001F2E7DAC26>I<0006000000060000000600000006
614 000000060000000E0000000E0000000E0000000E0000001E0000001E0000001E0000003E
615 0000007E0000007E000000FE000001FE000007FE00001FFFFFF0FFFFFFF0FFFFFFF000FE
616 000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE
617 000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE
618 000000FE000000FE000000FE000000FE000C00FE000C00FE000C00FE000C00FE000C00FE
619 000C00FE000C00FE000C00FE000C00FE000C007E001C007F0018007F0018003F0038001F
620 8030001FC0700007E0E00001FFC000007F001E3E7EBC26>I<01FC00007F00FFFC003FFF
621 00FFFC003FFF00FFFC003FFF0007FC0001FF0003FC0000FF0001FC00007F0001FC00007F
622 0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F
623 0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F
624 0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F
625 0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F
626 0001FC0000FF0001FC0000FF0001FC0000FF0001FC0001FF0001FC0001FF0000FC0001FF
627 0000FE0003FF00007E00077F80007F000E7FC0003F001C7FFE000FC0787FFE0003FFF07F
628 FE00007F807F002F2D7DAB36>I<FFFFF001FFFCFFFFF001FFFCFFFFF001FFFC07FF0000
629 7FE003FE00001F8001FE00001F0001FE00000E0000FE00000E0000FE00000C00007F0000
630 1800007F00001800007F80001800003F80003000003F80003000003FC0007000001FC000
631 6000001FE0006000000FE000C000000FE000C000000FF001C0000007F00180000007F001
632 80000003F80300000003F80300000003FC0700000001FC0600000001FC0600000000FE0C
633 00000000FE0C00000000FF0C000000007F18000000007F18000000007FB8000000003FB0
634 000000003FF0000000001FE0000000001FE0000000001FE0000000000FC0000000000FC0
635 00000000078000000000078000000000078000000000030000002E2C7EAA33>I<3FFFFF
636 FFE03FFFFFFFE03FC0003FE03F00003FC03C00007F80380000FF00380000FF00300001FE
637 00700003FC00700003FC00700007F80060000FF00060000FF00060001FE00060003FC000
638 60003FC00000007F80000000FF00000001FF00000001FE00000003FC00000007FC000000
639 07F80000000FF00000001FF00000001FE00060003FC00060007F800060007F80006000FF
640 0000C001FE0000C001FE0000C003FC0000C007F80000C007F80001C00FF00001C01FE000
641 03C01FE00003C03FC00007807F80001F80FF8000FF80FFFFFFFF80FFFFFFFF80232B7DAA
642 2B>122 D E /Fm 75[33 29[50 27[39 44 44 66 44 50 28 39
643 39 1[50 50 50 72 28 44 1[28 50 50 28 44 50 44 50 50 7[55
644 1[83 61 72 55 50 61 1[61 72 66 83 55 1[44 33 72 72 61
645 61 72 66 61 61 6[33 50 1[50 1[50 50 50 5[33 25 4[33 8[33
646 27[50 2[{ TeXBase1Encoding ReEncodeFont }59 100.000000
647 /Times-Italic rf /Fn 8 57 df<000C00003C00007C0003FC00FFFC00FC7C00007C00
648 007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00
649 007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00
650 007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000FE007FFFFE
651 7FFFFE172C7AAB23>49 D<007F800001FFF0000780FC000E003F001C001F8038000FC070
652 000FC0600007E0F00007E0FC0007F0FE0007F0FE0003F0FE0003F0FE0003F07C0007F000
653 0007F0000007F0000007E000000FE000000FC000001FC000001F8000003F0000007E0000
654 007C000000F8000001F0000003E0000007C000000F8000001E0000003C00000078000000
655 F0003000E0003001C0003003800060070000600E0000E01FFFFFE03FFFFFE07FFFFFC0FF
656 FFFFC0FFFFFFC01C2C7DAB23>I<003FC00001FFF00007C0FC000E007E001C003F001C00
657 1F803F001FC03F001FC03F800FC03F000FC03F000FC00C001FC000001FC000001F800000
658 1F8000003F0000003E0000007C000000F8000003F00000FFC00000FFF0000000FC000000
659 3F0000001F8000001FC000000FC000000FE000000FE0000007F0000007F0380007F07C00
660 07F0FE0007F0FE0007F0FE0007F0FE000FE0F8000FE060000FC070001FC038001F801E00
661 3F000780FC0001FFF000007FC0001C2D7DAB23>I<00000E0000000E0000001E0000003E
662 0000003E0000007E000000FE000000FE000001BE000003BE0000033E0000063E00000E3E
663 00000C3E0000183E0000383E0000303E0000603E0000E03E0000C03E0001803E0003803E
664 0003003E0006003E000E003E000C003E0018003E0038003E0030003E0060003E00E0003E
665 00FFFFFFFCFFFFFFFC00003E0000003E0000003E0000003E0000003E0000003E0000003E
666 0000003E0000003E0000007F00001FFFFC001FFFFC1E2D7EAC23>I<0C0001800FC01F80
667 0FFFFF000FFFFE000FFFFC000FFFF0000FFFC0000C7E00000C0000000C0000000C000000
668 0C0000000C0000000C0000000C0000000C0000000C1FC0000C7FF8000DE07C000F801F00
669 0F001F800E000F800C0007C0000007E0000007E0000003E0000003F0000003F0000003F0
670 000003F0780003F0FC0003F0FC0003F0FC0003F0FC0003F0F80007E0E00007E0600007C0
671 70000FC038000F801C001F000E003E000780F80001FFE000007F80001C2D7DAB23>I<00
672 03F800000FFE00003E078000F8018001F007C003E00FC007C00FC00F800FC00F800FC01F
673 0007801F0000003E0000003E0000007E0000007E0000007C0000007C0FC000FC3FF000FC
674 F07C00FDC01E00FF800F00FF000F80FF0007C0FE0007E0FE0007E0FE0003E0FC0003F0FC
675 0003F0FC0003F0FC0003F07C0003F07C0003F07C0003F07E0003F07E0003F03E0003E03E
676 0007E01E0007E01F0007C00F000F8007801F0003C03E0001E07C00007FF000001FC0001C
677 2D7DAB23>I<300000003C0000003FFFFFF83FFFFFF83FFFFFF07FFFFFF07FFFFFE07000
678 01C06000018060000380C0000700C0000E00C0000C0000001C0000003800000030000000
679 70000000E0000001C0000001C00000038000000380000007000000070000000F0000000E
680 0000001E0000001E0000003E0000003E0000003E0000003C0000007C0000007C0000007C
681 0000007C000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC
682 000000FC0000007800001D2E7CAC23>I<001FC00000FFF00003E07C0007801E000F000F
683 001E0007801E0007803C0003C03C0003C03C0003C03C0003C03E0003C03E0007C03F0007
684 801FC00F801FE00F001FF81E000FFC3C0007FFF80003FFE00000FFE000003FF80000FFFC
685 0003C7FF000783FF801F00FFC01E003FC03C001FE07C0007E0780003F0F80003F0F00001
686 F0F00000F0F00000F0F00000F0F00000F0F80000E0780001E07C0001C03C0003C01E0007
687 800F800F0007E03C0001FFF000003FC0001C2D7DAB23>I E /Fo
688 135[72 104 72 80 48 56 64 1[80 72 80 120 40 80 1[40 80
689 72 48 64 80 64 1[72 9[143 2[96 80 104 1[88 2[135 3[56
690 112 112 1[96 104 104 96 104 10[72 72 72 72 72 72 9[48
691 39[{ TeXBase1Encoding ReEncodeFont }42 144.000000 /Times-Bold
692 rf /Fp 5 102 df<007800FE01FE01FE01FE03FE03FC03FC03FC07F807F807F807F007F0
693 0FE00FE00FE00FC01FC01F801F801F803F003F003F003E007E007C007C007C00F800F800
694 F800F0000F227EA413>48 D<600000E00000E00000E00000E00000E00000E00000E00000
695 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
696 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
697 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
698 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
699 E00000E00000E00000E00000E00000E00000E00000E00000FFFF80FFFF807FFF80114374
700 B11F>98 D<00018000038000038000038000038000038000038000038000038000038000
701 038000038000038000038000038000038000038000038000038000038000038000038000
702 038000038000038000038000038000038000038000038000038000038000038000038000
703 038000038000038000038000038000038000038000038000038000038000038000038000
704 038000038000038000038000038000038000038000038000038000038000038000038000
705 0380000380000380000380000380000380FFFF80FFFF80FFFF8011437FB11F>I<7FFF80
706 FFFF80FFFF80E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
707 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
708 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
709 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
710 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
711 E00000E00000E00000E00000E00000600000114374B11F>I<FFFF80FFFF80FFFF800003
712 800003800003800003800003800003800003800003800003800003800003800003800003
713 800003800003800003800003800003800003800003800003800003800003800003800003
714 800003800003800003800003800003800003800003800003800003800003800003800003
715 800003800003800003800003800003800003800003800003800003800003800003800003
716 800003800003800003800003800003800003800003800003800003800003800003800003
717 8000038000038000018011437FB11F>I E /Fq 12 119 df<000003FC00000000001FFF
718 0000000000FE07C000000003F001F000000007E000F80000001FC000FC000E003F80007C
719 000E007F00003E000C00FE00003F000C01FC00003F001C03F800001F001807F800001F80
720 1807F000001F80380FF000001F80301FE000001F80701FE000001FC0603FC000001FC060
721 3FC000001FC0E03FC000000FC0C07F8000000FC1C07F8000000FC1807F8000000FC380FF
722 8000000FC700FF0000000FC600FF0000000FCE00FF0000000FDC00FF0000001FD800FE00
723 00001FF800FE0000001FF000FE0000001FE000FE0000001FC000FE0000001FC000FE0000
724 001FC000FE0000001FC000FE0000001FC0007E0000003FC0007E0000007FC0003F000000
725 EFC0383F000003CFC0381F80000F07C0300FC0001C07C07007E000F803E0E001F00FE001
726 E1C0007FFF0000FF80001FF000003E00372D7CAB3E>11 D<0000000003F800000000001F
727 FF00000000007C0F8000000001E003E0000000078001F00000000E0001F00000001C0000
728 F8000000380000F8000000700000FC000000E00000FC000001C00000FC000001800000FC
729 000003800000FC000007000000FC000006000000FC00000E000001FC00000C000001FC00
730 001C000001F8000018000001F8000038000003F0000030000003F0000070000007E00000
731 60000007E000006000000FC00000E000000F800000C000001F000000C000003E000001C0
732 07FE7C000001801FFFF8000001801807E0000001801FFFF80000038007FCFC0000030000
733 007E0000030000007E0000030000003F0000070000003F0000060000003F800006000000
734 1F8000060000001FC0000E0000001FC0000C0000001FC0000C0000001FC0000C0000003F
735 C0001C0000003FC000180000003FC000180000003FC000180000003FC000380000007FC0
736 00300000007F8000300000007F8000300000007F800070000000FF800070000000FF0000
737 70000000FF000070000001FE0000F0000001FE0000F0000001FC0000F0000003FC0000F0
738 000003F80001F0000007F80001B8000007F000019800000FE000019800001FC000039C00
739 003F8000030E00007F000003060000FE000003078001F800000701C003F000000600F01F
740 C0000006003FFF00000006000FF00000000E0000000000000C0000000000000C00000000
741 00000C0000000000001C0000000000001800000000000018000000000000180000000000
742 003800000000000030000000000000300000000000003000000000000070000000000000
743 600000000000006000000000000060000000000000E0000000000000E000000000000036
744 597DC537>I<1E007F807F80FFC0FFC0FFC0FFC07F807F801E000A0A78891B>58
745 D<00000000000001C000000000000007E00000000000001FE00000000000007FC0000000
746 000001FF00000000000007FC0000000000001FF00000000000007FC0000000000001FF00
747 00000000000FFC0000000000003FF0000000000000FFC0000000000003FF000000000000
748 0FF80000000000003FE0000000000000FF80000000000003FE0000000000001FF8000000
749 0000007FE0000000000001FF80000000000007FE0000000000001FF00000000000007FC0
750 000000000001FF00000000000007FC0000000000001FF00000000000007FC00000000000
751 00FF00000000000000FF000000000000007FC00000000000001FF000000000000007FC00
752 000000000001FF000000000000007FC00000000000001FF000000000000007FE00000000
753 000001FF800000000000007FE00000000000001FF800000000000003FE00000000000000
754 FF800000000000003FE00000000000000FF800000000000003FF00000000000000FFC000
755 00000000003FF00000000000000FFC00000000000001FF000000000000007FC000000000
756 00001FF000000000000007FC00000000000001FF000000000000007FC00000000000001F
757 E000000000000007E000000000000001C03B3878B44C>60 D<0000000018000000003C00
758 0000007C000000007C000000007800000000F800000000F800000000F000000001F00000
759 0001F000000001E000000003E000000003E000000003C000000007C000000007C0000000
760 07800000000F800000000F800000001F000000001F000000001E000000003E000000003E
761 000000003C000000007C000000007C000000007800000000F800000000F800000000F000
762 000001F000000001F000000003E000000003E000000003C000000007C000000007C00000
763 0007800000000F800000000F800000000F000000001F000000001F000000001E00000000
764 3E000000003E000000003C000000007C000000007C00000000F800000000F800000000F0
765 00000001F000000001F000000001E000000003E000000003E000000003C000000007C000
766 000007C000000007800000000F800000000F800000000F000000001F000000001F000000
767 003E000000003E000000003C000000007C000000007C000000007800000000F800000000
768 F800000000F000000001F000000001F000000001E000000003E000000003E000000007C0
769 00000007C000000007800000000F800000000F800000000F000000001F000000001F0000
770 00001E000000003E000000003E000000003C000000007C000000007C0000000078000000
771 00F800000000F800000000F000000000600000000026647BCA31>I<7000000000000000
772 FC00000000000000FF000000000000007FC00000000000001FF000000000000007FC0000
773 0000000001FF000000000000007FC00000000000001FF000000000000007FE0000000000
774 0001FF800000000000007FE00000000000001FF800000000000003FE00000000000000FF
775 800000000000003FE00000000000000FF800000000000003FF00000000000000FFC00000
776 000000003FF00000000000000FFC00000000000001FF000000000000007FC00000000000
777 001FF000000000000007FC00000000000001FF000000000000007FC00000000000001FE0
778 0000000000001FE00000000000007FC0000000000001FF00000000000007FC0000000000
779 001FF00000000000007FC0000000000001FF0000000000000FFC0000000000003FF00000
780 00000000FFC0000000000003FF0000000000000FF80000000000003FE0000000000000FF
781 80000000000003FE0000000000001FF80000000000007FE0000000000001FF8000000000
782 0007FE0000000000001FF00000000000007FC0000000000001FF00000000000007FC0000
783 000000001FF00000000000007FC0000000000000FF00000000000000FC00000000000000
784 70000000000000003B3878B44C>I<000FE0000007FFE0000007FFE0000007FFE0000000
785 1FC00000000FC00000001FC00000001FC00000001F800000001F800000001F800000003F
786 800000003F000000003F000000003F000000007F000000007E000000007E000000007E00
787 000000FE00000000FC00000000FC00000000FC00000001FC00000001F800000001F80FC0
788 0001F83FF00003F8F07C0003F3C03E0003F7001F0003FE001F8007FC000F8007F8000FC0
789 07F0000FC007F0000FE00FE0000FE00FC0000FE00FC0000FE00FC0000FE01FC0000FE01F
790 80000FE01F80000FE01F80001FE03F80001FE03F00001FE03F00001FE03F00003FE07F00
791 003FC07E00003FC07E00003FC07E00007FC07E00007F80FC00007F80FC00007F00FC0000
792 FF00FC0000FF00FC0001FE007C0001FC007C0001FC007C0003F8007C0007F0007C0007E0
793 003C000FE0003E001FC0001E003F80001F007E00000F00FC000007C1F0000001FFC00000
794 007F00000023467CC429>98 D<0000000001FC00000000FFFC00000000FFFC00000000FF
795 FC0000000003F80000000001F80000000003F80000000003F80000000003F00000000003
796 F00000000007F00000000007F00000000007E00000000007E0000000000FE0000000000F
797 E0000000000FC0000000000FC0000000001FC0000000001FC0000000001F80000000001F
798 80000000003F80000000003F80000000003F0000000FC03F0000007FF07F000001F8387F
799 000007E01C7E00000FC00E7E00003F0007FE00007F0003FE0000FE0003FC0001FC0003FC
800 0001F80001FC0003F80001FC0007F00001F8000FF00001F8000FE00003F8001FE00003F8
801 001FE00003F0003FC00003F0003FC00007F0007FC00007F0007F800007E0007F800007E0
802 007F80000FE000FF80000FE000FF00000FC000FF00000FC000FF00001FC000FF00001FC0
803 00FE00001F8000FE00001F8000FE00003F8030FE00003F8070FE00003F0060FE00003F00
804 60FE00007F00E0FE00007F00C0FE0000FE00C07E0001FE00C07E0003FE01C03E00073E01
805 803F000E3E03801F001C3E03000F80381F070007C0F00F0E0001FFC007FC00007F0001F0
806 002E467CC433>100 D<0000007E0000000003FF800000000FC1E0E000001F0073F00000
807 7E0033F00000FC003FF00001F8001FF00003F8001FE00007F0000FE0000FE0000FE0000F
808 E0000FE0001FC0000FC0003FC0000FC0003F80001FC0007F80001FC0007F00001F8000FF
809 00001F8000FF00003F8001FF00003F8001FE00003F0001FE00003F0001FE00007F0003FE
810 00007F0003FC00007E0003FC00007E0003FC0000FE0003FC0000FE0003F80000FC0003F8
811 0000FC0003F80001FC0003F80001FC0003F80001F80003F80001F80003F80003F80003F8
812 0007F80001F80007F00001F8000FF00000F8001FF00000FC003FF000007C0077E000003E
813 01E7E000001F078FE0000007FE0FE0000001F80FC0000000000FC0000000001FC0000000
814 001FC0000000001F80000000001F80000000003F80000000003F80000000003F00000000
815 003F00001C00007E00007F0000FE0000FF0000FC0000FF0001F80000FF0003F80000FE00
816 07F00000FE000FC00000F8001F8000007C00FE0000001FFFF800000003FFC00000002C40
817 7EAB2F>103 D<0000FE000000007FFE000000007FFE000000007FFE0000000001FC0000
818 000000FC0000000001FC0000000001FC0000000001F80000000001F80000000003F80000
819 000003F80000000003F00000000003F00000000007F00000000007F00000000007E00000
820 000007E0000000000FE0000000000FE0000000000FC0000000000FC0000000001FC00000
821 00001FC0000000001F80000000001F80003F00003F8000FFC0003F8003C0E0003F000703
822 E0003F001E0FE0007F00380FE0007F00701FE0007E00E01FE0007E01C01FE000FE01801F
823 C000FE0380070000FC0700000000FC0E00000001FC1C00000001FC3800000001F8700000
824 0001F8E000000003FBC000000003FF0000000003FF8000000003FFF800000007F1FE0000
825 0007F03F80000007E00FE0000007E007F000000FE003F000000FE003F800000FC001F800
826 000FC001F800001FC001F801C01FC001F801801F8001F801801F8001F801803F8001F803
827 803F8001F803003F0001F003003F0001F007007F0001F006007F0001F00E007E0001F00C
828 007E0001F01C00FE0000F03800FE0000787000FC00003FE0003800000F80002B467BC433
829 >107 D<00F80003FC000003FE001FFF0000071F007C0FC0000E0F80E007E0000C07C3C0
830 03E0001C07C70003F0001807CE0001F0003807DC0001F8003007D80001F800300FF80001
831 F800700FF00001F800600FE00001F800600FE00001F800E00FC00003F800C01FC00003F0
832 00C01F800003F000001F800003F000001F800007F000003F800007E000003F000007E000
833 003F000007E000003F00000FE000007F00000FC000007E00000FC000007E00001FC00000
834 7E00001F800000FE00001F800000FC00003F800000FC00003F000000FC00003F007001FC
835 00007F006001F800007E006001F80000FE006001F80000FC00E003F80000FC00C003F000
836 00FC01C003F00000F8018003F00000F8038007F00000F8030007E00000F8070007E00000
837 F80E0007E00000781C000FE000007C38000FC000001FF0000380000007C000342D7DAB3A
838 >110 D<003E00000E0000FF80003F8003C3C0007F800703E0007F800601F0007F800E01
839 F0007F801C01F0007F801803F0003F803803F0001F803003F0000F803003F0000F807007
840 F00007806007E00007806007E0000780E00FE0000700C00FC0000300001FC0000300001F
841 80000700001F80000600003F80000600003F00000600003F00000E00007F00000C00007E
842 00000C00007E00000C00007E00001C0000FE0000180000FC0000180000FC0000380000FC
843 0000300000FC0000700001F80000600001F80000E00001F80000C00001F80001C00000F8
844 0001800000F80003800000FC0007000000FC00060000007C000E0000007E001C0000003F
845 00780000000F81E000000007FFC000000000FE000000292D7DAB2F>118
846 D E /Fr 134[45 45 66 45 45 25 35 30 45 45 45 45 71 25
847 45 1[25 45 45 30 40 45 40 45 40 12[56 3[51 66 1[81 3[30
848 66 3[66 2[66 18[23 30 23 41[51 2[{ TeXBase1Encoding ReEncodeFont }36
849 91.249977 /Times-Roman rf /Fs 139[30 35 40 14[40 51 45
850 31[66 65[{ TeXBase1Encoding ReEncodeFont }7 91.249977
851 /Times-Bold rf /Ft 134[50 3[55 33 39 44 2[50 55 83 28
852 55 1[28 55 50 33 44 55 44 55 50 12[66 55 72 1[61 2[94
853 66 1[50 1[78 5[66 7[33 58[{ TeXBase1Encoding ReEncodeFont }29
854 100.000000 /Times-Bold rf /Fu 75[33 11[33 17[50 1[44
855 44 24[44 50 50 72 50 50 28 39 33 50 50 50 50 78 28 50
856 28 28 50 50 33 44 50 44 50 44 3[33 1[33 61 72 1[94 72
857 72 61 55 66 1[55 72 72 89 61 72 39 33 72 72 55 61 72
858 66 66 72 1[44 1[56 1[28 28 50 50 50 50 50 50 50 50 50
859 50 28 25 33 25 1[50 33 33 33 1[83 33[55 55 2[{
860 TeXBase1Encoding ReEncodeFont }82 100.000000 /Times-Roman
861 rf /Fv 134[60 2[60 60 33 47 40 1[60 60 60 93 33 60 1[33
862 60 60 40 53 60 53 60 53 11[86 73 66 5[106 2[47 1[86 86
863 66 73 86 80 80 86 7[60 2[60 3[60 60 2[30 1[30 44[{
864 TeXBase1Encoding ReEncodeFont }40 119.999947 /Times-Roman
865 rf /Fw 134[86 3[86 1[67 57 2[86 86 134 48 3[86 2[76 1[76
866 1[76 12[105 96 2[96 6[57 124 124 2[124 2[124 6[48 12[57
867 45[{ TeXBase1Encoding ReEncodeFont }22 172.833374 /Times-Roman
871 %%Feature: *Resolution 600dpi
877 1 0 bop 195 506 a Fw(APHID:)44 b(Asynchronous)g(P)m(arallel)h(Game-T)-6
878 b(ree)46 b(Search)863 805 y Fv(Mark)29 b(G.)h(Brockington)f(and)h
879 (Jonathan)e(Schaef)m(fer)1118 955 y(Department)j(of)e(Computing)g
880 (Science)1441 1104 y(Uni)m(v)n(ersity)h(of)f(Alberta)1249
881 1254 y(Edmonton,)g(Alberta)i(T6G)f(2H1)1771 1403 y(Canada)1510
882 1637 y(February)g(12,)f(1999)1925 5589 y Fu(1)p eop
884 2 1 bop 146 100 a Ft(Running)26 b(Head:)31 b Fu(APHID:)25
885 b(Asynchronous)f(P)o(arallel)g(Game-T)m(ree)h(Search)146
886 199 y Ft(Send)i(Pr)n(oofs)d(T)-9 b(o:)146 299 y Fu(Jonathan)24
887 b(Schaef)n(fer)146 399 y(615)h(General)g(Services)g(Building)146
888 498 y(Department)g(of)f(Computing)g(Science)146 598 y(Uni)n(v)o(ersity)
889 f(Of)i(Alberta)146 697 y(Edmonton,)e(AB)j(T6G)e(2H1)146
890 797 y(Canada)146 897 y(\(403\))h(492-3851)1781 1117 y
891 Fs(Abstract)380 1293 y Fr(Most)30 b(parallel)i(game-tree)f(search)g
892 (approaches)i(use)d(synchronous)k(methods,)e(where)e(the)h(w)o(ork)e
893 (is)244 1406 y(concentrated)j(within)d(a)f(speci\002c)h(part)h(of)e
894 (the)h(tree,)h(or)e(at)g(a)g(gi)n(v)o(en)h(search)h(depth.)45
895 b(This)28 b(article)i(sho)n(ws)244 1519 y(that)19 b(asynchronous)k
896 (game-tree)d(search)g(algorithms)h(can)e(be)g(as)g(ef)n(\002cient)h(as)
897 e(or)h(better)h(than)g(synchronous)244 1632 y(methods)25
898 b(in)e(determining)j(the)e(minimax)g(v)n(alue.)380 1745
899 y(APHID,)f(a)h(ne)n(w)g(asynchronous)29 b(parallel)e(game-tree)f
900 (search)g(algorithm,)g(is)f(presented.)35 b(APHID)22
901 b(is)244 1857 y(implemented)j(as)e(a)g(freely-a)n(v)n(ailable)28
902 b(portable)e(library)-6 b(,)24 b(making)g(the)g(algorithm)h(easy)f(to)f
903 (inte)o(grate)j(into)244 1970 y(a)i(sequential)k(game-tree)e(searching)
904 h(program.)45 b(APHID)27 b(has)i(been)g(added)h(to)f(four)g(programs)i
905 (written)244 2083 y(by)d(dif)n(ferent)h(authors.)43 b(APHID)26
906 b(yields)j(better)g(speedups)h(than)f(synchronous)i(search)e(methods)g
907 (for)f(an)244 2196 y(Othello)c(and)g(a)f(check)o(ers)j(program,)f(and)f
908 (comparable)h(speedups)h(on)e(tw)o(o)f(chess)i(programs.)146
909 2495 y Fu(K)n(e)o(yw)o(ords:)k(parallel)c(search,)g(alpha-beta,)g
910 (computer)f(games,)g(heuristic)g(search.)p eop
912 3 2 bop 146 100 a Ft(List)25 b(of)g(Symbols:)146 299
913 y Fq(\013)q(\014)6 b Fu(:)30 b(alpha,)25 b(beta)146 498
914 y Fq(d)p Fu(:)31 b(dee)146 697 y Fq(d)197 661 y Fp(0)220
915 697 y Fu(:)g(dee)25 b(prime)p eop
917 1 3 bop 0 100 a Fo(1)143 b(Intr)m(oduction)0 402 y Fu(Making)21
918 b(computers)g(play)g(games)g(in)g(a)h(skillful)e(manner)l(,)i
919 (comparable)g(to)f(that)h(of)f(a)h(strong)f(human)g(player)l(,)i(is)0
920 601 y(a)e(challenging)g(problem)f(that)h(has)g(attracted)g(the)g
921 (attention)f(of)h(man)o(y)f(computer)h(scientists)e(o)o(v)o(er)h(the)h
922 (last)g(\002fty)0 800 y(years.)30 b(T)-8 b(w)o(o-player)22
923 b(zero-sum)g(games)f(with)g(perfect)i(information,)e(such)h(as)g
924 (chess,)g(Othello)3301 764 y Fn(1)3362 800 y Fu(and)g(check)o(ers,)0
925 1000 y(are)32 b(programmed)f(using)g(the)g(same)h(basic)g(techniques.)
926 50 b(The)32 b Fq(\013)q(\014)37 b Fu(algorithm)30 b([9])i(is)f(used)h
927 (to)f(e)o(xhausti)n(v)o(ely)0 1199 y(search)c(v)n(ariations)d(that)i
928 (are)g Fq(d)g Fu(mo)o(v)o(es)e(deep)i(in)g(a)g(depth-\002rst)g(manner)g
929 (to)g(determine)f(the)h(best)f(mo)o(v)o(e)g(and)h(its)0
930 1398 y(v)n(alue.)k(A)25 b(lar)n(ge)g(hash)g(table,)g(called)f(the)h
931 Fm(tr)o(ansposition)c(table)k Fu([5],)g(is)f(used)h(to)f(store)h(pre)n
932 (viously)e(determined)0 1598 y(best)31 b(mo)o(v)o(es)e(and)i(v)n(alues)
933 g(for)g(positions.)48 b(The)31 b(v)n(alues)f(from)h(this)f(table)h(are)
934 h(re-used)f(during)g(the)g(search)g(to)0 1797 y(pre)n(v)o(ent)24
935 b(the)g(same)h(position)e(from)i(being)f(e)o(xplored)g(twice.)146
936 1996 y(Instead)31 b(of)h(immediately)d(searching)i(a)h(v)n(ariation)e
937 Fq(d)h Fu(mo)o(v)o(es)e(deep)j(\(or)f Fq(d)g Fm(ply)p
938 Fu(\),)i(most)d(programs)h(search)0 2195 y(to)c(1)g(ply)-6
939 b(,)27 b(then)f(to)h(2)g(ply)-6 b(,)27 b Fm(et)g(ceter)o(a)p
940 Fu(.)38 b(This)26 b(technique)h(is)g(kno)n(wn)f(as)h
941 Fm(iter)o(ative)f(deepening)h Fu([16)o(],)h(and)g(is)e(used)0
942 2395 y(to)i(acquire)g(mo)o(v)o(e-ordering)f(information)f(in)i(the)g
943 (transposition)e(table.)41 b(The)28 b(best)g(mo)o(v)o(e)e(for)j(a)f
944 Fl(\()p Fq(d)d Fk(\000)g Fl(1\))p Fu(-ply)0 2594 y(search)30
945 b(is)f(lik)o(ely)f(to)h(be)g(the)g(best)g(mo)o(v)o(e)f(for)h(a)h
946 Fq(d)p Fu(-ply)e(search,)j(and)e(the)g Fq(\013)q(\014)35
947 b Fu(algorithm)28 b(will)g(b)n(uild)g(a)i(smaller)0 2793
948 y(search)25 b(tree)h(\(by)e(eliminating,)f(or)i(cutting-of)n(f,)e
949 (irrele)n(v)n(ant)h(subtrees\))h(if)f(the)h(best)f(mo)o(v)o(e)g(is)g
950 (searched)h(\002rst.)146 2992 y(A)f(game-playing)f(program)g(that)h
951 (can)g(out-search)g(its)f(opponent)g(has)g(a)i(high)e(probability)f(of)
952 i(winning.)29 b(It)0 3192 y(has)23 b(been)g(sho)n(wn)f(that)h(there)g
953 (is)g(a)g(strong)f(correlation)h(between)g(the)g(search)h(depth)e(and)h
954 (the)g(relati)n(v)o(e)f(strength)0 3391 y(of)j(chess,)f(Othello)g(and)h
955 (check)o(ers)g(programs)f([8].)31 b(Thus,)24 b(programs)g(are)h(de)n(v)
956 o(eloped)e(to)i(search)g(as)g(deeply)f(as)0 3590 y(possible)f(while)i
957 (staying)e(within)h(the)h(time)f(constraints)f(imposed)h(by)g(the)h
958 (rules)g(of)f(the)h(game.)146 3789 y(When)c(using)f(parallelism)f(to)h
959 (search)i(game)e(trees)h(deeper)l(,)h(almost)d(all)i(of)f(the)h
960 (research)g(has)g(concentrated)0 3989 y(on)32 b(synchronous)e(parallel)
961 i(search)g(algorithms.)50 b(These)32 b(algorithms)e(force)j(w)o(ork)f
962 (on)f(one)h(part)g(of)g(the)g(tree)0 4188 y(to)c(be)g(completed)g
963 (before)g(w)o(ork)h(on)f(the)g(rest)g(of)g(the)g(tree)h(can)g(be)f
964 (carried)h(out.)40 b(There)29 b(are)g(global)e(synchro-)0
965 4387 y(nization)j(points)g(during)g(the)h(search)h(that)e(all)h
966 (processors)g(must)f(reach)i(before)f(an)o(y)g(process)g(is)f(allo)n
967 (wed)g(to)0 4586 y(proceed.)j(In)25 b(some)g(synchronous)f(algorithms,)
968 g(the)h(w)o(ork)g(is)g(synchronized)g(at)g(e)n(v)o(ery)g(choice)h
969 (along)e(the)i(hy-)0 4786 y(pothesized)i(best-mo)o(v)o(e)e(sequence,)k
970 (commonly)c(kno)n(wn)h(as)i(the)f(principal)g(v)n(ariation.)40
971 b(In)29 b(all)f(synchronized)0 4985 y(algorithms,)23
972 b(the)i(w)o(ork)f(is)h(synchronized)f(at)h(the)g(root)f(of)h(the)g
973 (tree)g(between)g(steps)f(of)h(iterati)n(v)o(e)f(deepening;)g(a)p
974 0 5074 1560 4 v 112 5136 a Fj(1)149 5166 y Fi(Othello)c(is)h(a)g(re)o
975 (gistered)e(trademark)f(of)i(Tsukuda)f(Original,)g(licensed)h(by)g
976 (Anjar)f(Co.)1925 5589 y Fu(1)p eop
978 2 4 bop 0 100 a Fu(complete)24 b Fq(d)p Fu(-ply)g(search)i(must)d(be)i
979 (\002nished)g(before)g(the)g Fl(\()p Fq(d)c Fl(+)h(1\))p
980 Fu(-ply)j(search)g(can)g(be)o(gin.)146 299 y(The)33 b(adv)n(antage)f
981 (of)h(the)f(synchronous)f(approaches)i(is)f(that)g(the)o(y)g(can)h(use)
982 f(the)h(v)n(alue)f(of)g(the)h(principal)0 498 y(v)n(ariation)19
983 b(in)h(the)h(same)f(w)o(ay)g(as)h(the)f(sequential)g(search)h
984 (algorithm)e(does.)29 b(Synchronous)19 b(parallel)i(algorithms)0
985 697 y(are)32 b(successful)e(at)h(k)o(eeping)f(the)h(size)f(of)h(the)g
986 (search)g(tree)h(b)n(uilt)d(close)i(to)f(the)h(sequential)f(search)h
987 (tree)g(size,)0 897 y(assuming)d(that)h(processors)g(are)i(able)e(to)g
988 (share)h(transposition)e(table)h(information)f(in)h(an)h(ef)n
989 (\002cient)g(manner)-5 b(.)0 1096 y(Ho)n(we)n(v)o(er)l(,)23
990 b(there)j(are)f(fundamental)f(problems)g(with)g(synchronous)f(parallel)
991 i Fq(\013)q(\014)30 b Fu(search)c(algorithms:)120 1347
992 y(1.)49 b(There)28 b(are)g(man)o(y)e(times)h(when)g(there)h(is)f(insuf)
993 n(\002cient)f(parallelism)g(to)h(k)o(eep)h(all)f(the)g(processors)g(b)n
994 (usy)-6 b(.)244 1546 y(If)29 b(there)f(are)i(more)e(processors)g(than)g
995 (w)o(ork)g(granules)h(at)f(a)h(synchronization)e(point,)h(then)g(some)g
996 (pro-)244 1746 y(cessors)23 b(must)g(go)g(idle.)30 b(This)23
997 b(idle)g(time)g(increases)h(in)f(magnitude)f(\(and)i(signi\002cance\))g
998 (as)f(the)h(number)244 1945 y(of)35 b(processors)f(increases.)61
999 b(This)35 b(problem)f(is)g(e)o(xacerbated)h(in)g(games)f(that)g(ha)n(v)
1000 o(e)h(a)g(small)f(a)n(v)o(erage)244 2144 y(number)24
1001 b(of)h(mo)o(v)o(e)e(choices.)120 2412 y(2.)49 b(The)o(y)33
1002 b(require)i(an)f(ef)n(\002cient)h(implementation)c(of)k(a)f(shared)h
1003 (transposition)d(table)i(between)g(the)g(pro-)244 2612
1004 y(cesses)24 b(to)f(achie)n(v)o(e)g(high)f(performance.)31
1005 b(T)-8 b(ypically)i(,)22 b(the)i(algorithms)e(will)g(e)o(xhibit)g(poor)
1006 i(performance)244 2811 y(without)19 b(such)i(a)g(table,)g(since)g(each)
1007 h(processor')-5 b(s)20 b(search)h(results)f(must)g(be)h(made)g(a)n(v)n
1008 (ailable)f(to)h(all)f(other)244 3010 y(processes.)37
1009 b(Because)28 b(of)f(this,)g(most)e(synchronous)h(algorithms)f(are)j
1010 (tested)f(on)f(shared)h(memory)g(sys-)244 3209 y(tems.)45
1011 b(On)29 b(distrib)n(uted)g(memory)f(systems,)i(sharing)f(a)h(table)g
1012 (is)f(not)g(as)h(ef)n(\002cient,)h(and)f(the)g(speedups)244
1013 3409 y(portrayed)25 b(in)f(the)h(literature)f(for)h(shared)g(memory)f
1014 (systems)g(are)h(not)f(achie)n(v)n(able.)120 3677 y(3.)49
1015 b(Man)o(y)25 b(synchronous)f(algorithms)g(attempt)h(to)g(initiate)g
1016 (parallelism)f(at)i(nodes)f(which)g(are)i(better)e(done)244
1017 3876 y(sequentially)-6 b(.)59 b(F)o(or)35 b(e)o(xample,)h(ha)n(ving)e
1018 (searched)h(the)g(\002rst)g(branch)g(at)g(a)g(node)g(and)g(not)f(achie)
1019 n(v)o(ed)g(a)244 4075 y(cut-of)n(f,)40 b(the)d(remaining)f(branches)i
1020 (are)g(usually)e(searched)h(in)g(parallel.)68 b(Ho)n(we)n(v)o(er)l(,)39
1021 b(if)e(the)g(second)244 4275 y(branch)26 b(causes)f(a)h(cut-of)n(f,)f
1022 (then)g(all)h(of)f(the)h(w)o(ork)f(done)g(on)g(the)h(third)f(and)g
1023 (subsequent)f(branches)i(w)o(as)244 4474 y(unnecessary)-6
1024 b(.)38 b(This)26 b(suggests)g(that)h(parallelism)f(should)g(only)h(be)g
1025 (initiated)f(at)h(nodes)g(where)h(there)g(is)244 4673
1026 y(a)d(high)f(probability)f(that)i(all)f(branches)h(must)f(be)h
1027 (considered.)120 4941 y(4.)49 b(Man)o(y)21 b(of)h(the)f(synchronous)g
1028 (algorithms)f(do)i(not)f(inte)o(grate)g(well)h(into)f(typical)g
1029 (sequential)g(algorithms.)244 5141 y(This)h(causes)h(man)o(y)f(changes)
1030 h(to)g(the)f(main)h(search)g(algorithm)f(to)g(incorporate)h
1031 (parallelism.)29 b(This)22 b(will)244 5340 y(lik)o(ely)i(result)g(in)g
1032 (a)i(parallel)e(program)h(for)g(which)f(it)g(is)h(dif)n(\002cult)f(to)g
1033 (v)o(erify)g(its)h(correctness.)1925 5589 y(2)p eop
1035 3 5 bop 146 100 a Fu(In)28 b(other)e(w)o(ork,)i(a)f(theoretical)g
1036 (model)f(w)o(as)h(de)n(v)o(eloped)f(for)i(comparing)e(a)h(typical)g
1037 (synchronous)f(game-)0 299 y(tree)31 b(search)g(algorithm)e(to)h(an)g
1038 (asynchronous)g(one)g([2].)48 b(The)30 b(theoretical)g(results)g
1039 (indicated)g(that)g(an)g(asyn-)0 498 y(chronous)22 b(algorithm)f(could)
1040 i(outperform)f(a)h(synchronous)f(algorithm)f(on)h(game)h(trees)g
1041 (similar)e(to)i(those)f(seen)0 697 y(in)j(practice.)34
1042 b(This)25 b(paper)h(sho)n(ws)f(that)g(it)g(is)g(possible)g(for)h
1043 (asynchronous)e(search)i(algorithms)e(to)i(outperform)0
1044 897 y(their)f(synchronous)e(counterparts)h(in)h(practice.)146
1045 1096 y(The)g(paper')-5 b(s)25 b(major)f(contrib)n(utions)f(include:)120
1046 1365 y(1.)49 b(The)36 b(APHID)g(\(Asynchronous)f(P)o(arallel)h
1047 (Hierarchical)h(Iterati)n(v)o(e)e(Deepening\))h(algorithm)e(is)i
1048 (intro-)244 1564 y(duced)19 b(that)f(addresses)h(the)f(pre)n(viously)f
1049 (mentioned)h(problems.)28 b(First,)19 b(the)g(algorithm)e(is)i
1050 (asynchronous)244 1764 y(in)k(nature;)h(it)f(remo)o(v)o(es)f(all)h
1051 (global)f(synchronization)g(points)h(from)g(the)g Fq(\013)q(\014)29
1052 b Fu(search)24 b(and)f(from)h(iterati)n(v)o(e)244 1963
1053 y(deepening.)62 b(Second,)38 b(the)d(algorithm)f(does)h(not)g(require)h
1054 (a)f(shared)h(transposition)d(table)i(for)h(mo)o(v)o(e)244
1055 2162 y(ordering)22 b(information.)28 b(Third,)23 b(parallelism)e(is)h
1056 (only)f(applied)h(at)g(nodes)g(that)g(ha)n(v)o(e)g(a)h(high)f
1057 (probability)244 2361 y(of)j(needing)f(parallelism.)120
1058 2634 y(2.)49 b(APHID)25 b(has)g(been)g(designed)f(to)g(conform)h(to)f
1059 (the)h(structure)f(of)h(the)g(sequential)f Fq(\013)q(\014)6
1060 b Fu(-based)24 b(game-tree)244 2833 y(search)35 b(algorithm.)57
1061 b(Consequently)-6 b(,)35 b(parallelism)e(can)i(be)f(added)g(to)g(an)g
1062 (e)o(xisting)f(application)g(with)244 3033 y(minimal)d(ef)n(fort.)50
1063 b(APHID)32 b(has)g(been)g(programmed)e(as)i(an)g
1064 (application-independent)d(and)j(portable)244 3232 y(library)-6
1065 b(.)529 3196 y Fn(2)624 3232 y Fu(This)33 b(w)o(as)g(used)g(to)g
1066 (generate)h(all)f(of)h(the)f(parallel)g(applications)f(reported)i(in)f
1067 (this)f(article.)244 3431 y(Each)25 b(of)g(the)g(implementations)e
1068 (took)h(less)h(than)g(a)g(day)g(of)h(programming)d(time)i(to)f(achie)n
1069 (v)o(e)h(a)g(parallel)244 3630 y(program)k(that)g(e)o(x)o(ecuted)f(in)h
1070 (the)h(same)f(w)o(ay)g(as)h(the)f(sequential)f(program,)i(and)g(a)f(fe)
1071 n(w)h(days)f(of)g(addi-)244 3830 y(tional)i(tuning)g(to)h(achie)n(v)o
1072 (e)g(the)g(reported)g(speedups.)53 b(In)32 b(contrast,)i(adding)e(a)g
1073 (synchronous)f(parallel)244 4029 y(algorithm)23 b(to)i(an)g(e)o
1074 (xisting)e(sequential)g(algorithm)h(may)g(tak)o(e)h(months)e(of)i(w)o
1075 (ork.)120 4302 y(3.)49 b(APHID')-5 b(s)31 b(performance)h(for)g(four)f
1076 (game-playing)f(programs)h(is)g(presented.)50 b(APHID)32
1077 b(yields)e(better)244 4501 y(speedups)38 b(than)h(synchronous)f(search)
1078 h(methods)f(for)h(an)g(Othello)f(and)h(a)g(check)o(ers)h(program,)i
1079 (and)244 4700 y(comparable)25 b(speedups)f(on)g(tw)o(o)h(chess)f
1080 (programs.)146 4969 y(Section)37 b(2)g(gi)n(v)o(es)e(a)j(brief)f(surv)o
1081 (e)o(y)e(of)i(rele)n(v)n(ant)f(parallel)h(search)g(methods.)66
1082 b(Section)37 b(3)g(describes)f(the)0 5169 y(APHID)26
1083 b(algorithm)e(in)i(detail,)f(along)g(with)g(an)h(illustrati)n(v)o(e)d
1084 (e)o(xample)i(of)g(ho)n(w)g(to)g(add)h(APHID)g(into)f(e)o(xisting)p
1085 0 5249 1560 4 v 112 5310 a Fj(2)149 5340 y Fi(It)c(is)g(freely)e(a)n(v)
1086 n(ailable)h(at)h Fh(http://www.cs.ualberta.ca/\230games/a)o(phid/)p
1087 Fi(.)1925 5589 y Fu(3)p eop
1089 4 6 bop 0 100 a Fu(sequential)28 b(game-tree)i(search)g(code.)45
1090 b(Section)29 b(4)g(sho)n(ws)f(the)i(e)o(xperimental)e(results)g(of)i
1091 (adding)f(APHID)g(to)0 299 y(four)c(applications.)k(Section)c(5)g
1092 (summarizes)e(this)h(paper)-5 b(.)0 637 y Fo(2)143 b(Pr)m(e)n(vious)34
1093 b(W)-11 b(ork)0 889 y Fg(2.1)119 b(The)30 b Ff(\013)q(\014)37
1094 b Fg(Algorithm)0 1156 y Fu(In)25 b(a)h(tw)o(o)e(player)i(zero-sum)f
1095 (game)f(with)h(perfect)g(information)f(and)h(a)h(\002nite)f(number)g
1096 (of)g(mo)o(v)o(es,)e(an)j(optimal)0 1355 y(strate)o(gy)g(can)h(be)g
1097 (determined)f(by)h(the)f(minimax)g(algorithm.)35 b(In)27
1098 b(general,)g(minimax)f(is)g(a)h(depth-\002rst)g(search)0
1099 1554 y(of)h(a)h(game)f(tree.)41 b(Each)29 b(node)f(represents)g(a)g
1100 (position,)g(and)g(the)g(links)f(between)h(nodes)g(represent)h(the)f
1101 (mo)o(v)o(e)0 1753 y(required)k(to)f(reach)h(the)g(ne)o(xt)e(position.)
1102 50 b(The)31 b(player)h(to)f(mo)o(v)o(e)f(alternates)h(at)h(each)g(le)n
1103 (v)o(el)f(of)g(the)h(tree.)51 b(The)0 1953 y(e)n(v)n(aluation)18
1104 b(of)i(each)h(leaf)g(node)f(in)f(the)h(search)h(is)f(based)g(on)f(an)i
1105 (approximation)d(of)i(whether)g(the)g(\002rst)g(player)h(is)0
1106 2152 y(going)f(to)h(win)g(the)h(game)e(\(heuristic)h(e)n(v)n(aluation)f
1107 (function\).)29 b(Whene)n(v)o(er)21 b(the)g(\002rst)g(player)h(mo)o(v)o
1108 (es,)e(he)i(chooses)0 2351 y(a)i(mo)o(v)o(e)f(to)g(maximize)g(his)h(e)n
1109 (v)n(aluation)e(\(so-called)h(Max)h(nodes)g(in)f(the)h(search)g
1110 (tree\).)31 b(Con)l(v)o(ersely)-6 b(,)23 b(when)h(the)0
1111 2550 y(second)i(player)g(has)h(to)f(mo)o(v)o(e)e(at)j(a)f(node,)h(he)f
1112 (will)g(choose)g(the)g(mo)o(v)o(e)f(that)h(minimizes)e(the)i(e)n(v)n
1113 (aluation)f(\(Min)0 2750 y(nodes\).)146 2949 y(Although)c(the)h(tree)g
1114 (is)g(\002nite,)g(it)g(can)g(get)g(quite)f(lar)n(ge.)30
1115 b(T)-8 b(o)22 b(search)h(a)f(tree)h(of)f(depth)f Fq(d)h
1116 Fu(and)g(with)f Fq(b)i Fu(branches)0 3148 y(at)35 b(e)n(v)o(ery)g
1117 (node,)j Fq(b)658 3112 y Fe(d)735 3148 y Fu(nodes)c(w)o(ould)h(be)h(e)n
1118 (v)n(aluated.)61 b(F)o(ortunately)-6 b(,)37 b(there)e(are)h
1119 (straightforw)o(ard)f(\223bounding\224)0 3347 y(techniques)e(that)g
1120 (can)h(pro)o(v)o(e)e(some)h(e)n(v)n(aluations)e(are)k(irrele)n(v)n
1121 (ant.)55 b(The)34 b(most)e(popular)h(of)h(these)f(is)g(the)h
1122 Fq(\013)q(\014)0 3547 y Fu(algorithm,)23 b(gi)n(v)o(en)h(in)g(Figure)h
1123 (1.)146 3746 y(The)k Fq(\013)q(\014)35 b Fu(algorithm)27
1124 b(only)h(considers)h(nodes)f(that)h(are)g(rele)n(v)n(ant)f(to)h(the)g
1125 (search)g(windo)n(w)f([)p Fq(\013)q Fu(,)i Fq(\014)6
1126 b Fu(].)43 b Fq(\013)30 b Fu(rep-)0 3945 y(resents)g(the)f(best)h(v)n
1127 (alue)f(that)h(the)g(side)f(to)h(mo)o(v)o(e)e(can)i(achie)n(v)o(e)g
1128 (thus)f(f)o(ar)h(in)g(the)g(search.)46 b(Additional)29
1129 b(search)0 4144 y(at)i(this)g(node)g(is)f(intended)h(to)g(\002nd)g(mo)o
1130 (v)o(es)e(that)i(impro)o(v)o(e)f(this)g(lo)n(wer)h(bound)f(\(i.e.)50
1131 b(ha)n(v)o(e)31 b(a)g(v)n(alue)g Fq(>)40 b(\013)q Fu(\).)49
1132 b Fq(\014)0 4344 y Fu(is)26 b(the)f(best)h(that)g(the)f(player)i(to)e
1133 (mo)o(v)o(e)g(can)h(achie)n(v)o(e)f(or)l(,)i(con)l(v)o(ersely)-6
1134 b(,)25 b(the)h(smallest)e(v)n(alue)i(that)f(the)h(opponent)0
1135 4543 y(can)35 b(pro)o(v)n(ably)e(restrict)h(the)g(side)h(to)f(mo)o(v)o
1136 (e)f(to.)59 b(When)35 b Fq(\013)46 b Fk(\025)g Fq(\014)6
1137 b Fu(,)37 b(no)d(additional)f(search)j(is)e(needed)g(at)h(this)0
1138 4742 y(node)c(\(a)g Fm(cut-of)n(f)f Fu(occurs\).)49 b(In)31
1139 b(ef)n(fect,)h(this)e Fm(prunes)g Fu(parts)g(of)h(the)g(tree)g(that)f
1140 (pro)o(v)n(ably)f(cannot)i(contrib)n(ute)e(to)0 4941
1141 y(the)c(minimax)e(v)n(alue.)30 b(It)25 b(has)g(been)g(sho)n(wn)f(that)g
1142 (the)h Fq(\013)q(\014)30 b Fu(algorithm)23 b(will)h(return)h(the)g
1143 (correct)g(minimax)f(v)n(alue)0 5141 y(if)30 b(the)g(root)f(position)f
1144 (is)h(searched)i(with)e Fq(\013)38 b Fl(=)f Fk(\0001)p
1145 Fu(,)31 b Fq(\014)43 b Fl(=)36 b(+)p Fk(1)30 b Fu([9].)46
1146 b(F)o(or)30 b(a)g(depth)f Fq(d)h Fu(tree)g(with)f Fq(b)i
1147 Fu(branches)0 5340 y(at)g(e)n(v)o(ery)f(node,)h Fq(\013)q(\014)36
1148 b Fu(has)31 b(the)g(potential)e(to)h(search)h(the)g(minimum)d(number)i
1149 (of)h(leaf)g(nodes)f(possible)g(to)g(de-)1925 5589 y(4)p
1153 17879478 11840716 9275228 18879365 30917427 33154007 startTexFig
1155 %%BeginDocument: pics/alphabeta-code.ps
1156 %Magnification: 1.00
1157 /$F2psDict 200 dict def
1159 $F2psDict /mtrx matrix put
1160 /col-1 {0 setgray} bind def
1161 /col0 {0.000 0.000 0.000 srgb} bind def
1162 /col1 {0.000 0.000 1.000 srgb} bind def
1163 /col2 {0.000 1.000 0.000 srgb} bind def
1164 /col3 {0.000 1.000 1.000 srgb} bind def
1165 /col4 {1.000 0.000 0.000 srgb} bind def
1166 /col5 {1.000 0.000 1.000 srgb} bind def
1167 /col6 {1.000 1.000 0.000 srgb} bind def
1168 /col7 {1.000 1.000 1.000 srgb} bind def
1169 /col8 {0.000 0.000 0.560 srgb} bind def
1170 /col9 {0.000 0.000 0.690 srgb} bind def
1171 /col10 {0.000 0.000 0.820 srgb} bind def
1172 /col11 {0.530 0.810 1.000 srgb} bind def
1173 /col12 {0.000 0.560 0.000 srgb} bind def
1174 /col13 {0.000 0.690 0.000 srgb} bind def
1175 /col14 {0.000 0.820 0.000 srgb} bind def
1176 /col15 {0.000 0.560 0.560 srgb} bind def
1177 /col16 {0.000 0.690 0.690 srgb} bind def
1178 /col17 {0.000 0.820 0.820 srgb} bind def
1179 /col18 {0.560 0.000 0.000 srgb} bind def
1180 /col19 {0.690 0.000 0.000 srgb} bind def
1181 /col20 {0.820 0.000 0.000 srgb} bind def
1182 /col21 {0.560 0.000 0.560 srgb} bind def
1183 /col22 {0.690 0.000 0.690 srgb} bind def
1184 /col23 {0.820 0.000 0.820 srgb} bind def
1185 /col24 {0.500 0.190 0.000 srgb} bind def
1186 /col25 {0.630 0.250 0.000 srgb} bind def
1187 /col26 {0.750 0.380 0.000 srgb} bind def
1188 /col27 {1.000 0.500 0.500 srgb} bind def
1189 /col28 {1.000 0.630 0.630 srgb} bind def
1190 /col29 {1.000 0.750 0.750 srgb} bind def
1191 /col30 {1.000 0.880 0.880 srgb} bind def
1192 /col31 {1.000 0.840 0.000 srgb} bind def
1196 79.5 561.5 translate
1199 /cp {closepath} bind def
1200 /ef {eofill} bind def
1201 /gr {grestore} bind def
1202 /gs {gsave} bind def
1204 /rs {restore} bind def
1205 /l {lineto} bind def
1206 /m {moveto} bind def
1207 /rm {rmoveto} bind def
1208 /n {newpath} bind def
1209 /s {stroke} bind def
1211 /slc {setlinecap} bind def
1212 /slj {setlinejoin} bind def
1213 /slw {setlinewidth} bind def
1214 /srgb {setrgbcolor} bind def
1215 /rot {rotate} bind def
1216 /sc {scale} bind def
1217 /sd {setdash} bind def
1218 /ff {findfont} bind def
1219 /sf {setfont} bind def
1220 /scf {scalefont} bind def
1221 /sw {stringwidth} bind def
1222 /tr {translate} bind def
1223 /tnt {dup dup currentrgbcolor
1224 4 -2 roll dup 1 exch sub 3 -1 roll mul add
1225 4 -2 roll dup 1 exch sub 3 -1 roll mul add
1226 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
1228 /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
1229 4 -2 roll mul srgb} bind def
1230 /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
1231 /$F2psEnd {$F2psEnteredState restore end} def
1235 n 0 792 m 0 0 l 612 0 l 612 792 l cp clip
1239 n 1050 975 m 6500 975 l 6500 4550 l 1050 4550 l cp gs col-1 s gr
1240 /Courier ff 180.00 scf sf
1242 gs 1 -1 sc (for\(i=1; i <= numOfSuccessors; i++\) {) col-1 sh gr
1243 /Courier ff 180.00 scf sf
1245 gs 1 -1 sc (/* move counter */) dup sw pop neg 0 rm col-1 sh gr
1246 /Courier ff 180.00 scf sf
1248 gs 1 -1 sc (/* score returned by search */) dup sw pop neg 0 rm col-1 sh gr
1249 /Courier ff 180.00 scf sf
1251 gs 1 -1 sc (int sc;) col-1 sh gr
1252 /Courier ff 180.00 scf sf
1254 gs 1 -1 sc (} /* AlphaBeta */) col-1 sh gr
1255 /Courier ff 180.00 scf sf
1257 gs 1 -1 sc (return\(alpha\);) col-1 sh gr
1258 /Courier ff 180.00 scf sf
1260 gs 1 -1 sc (}) col-1 sh gr
1261 /Courier ff 180.00 scf sf
1263 gs 1 -1 sc (if \(alpha >= beta\) { return\(alpha\); }) col-1 sh gr
1264 /Courier ff 180.00 scf sf
1266 gs 1 -1 sc (alpha = max\(alpha, sc\);) col-1 sh gr
1267 /Courier ff 180.00 scf sf
1269 gs 1 -1 sc (sc = -AlphaBeta\(p.succ[i],-beta,-alpha\);) col-1 sh gr
1270 /Courier ff 180.00 scf sf
1272 gs 1 -1 sc (numOfSuccessors = GenerateSuccessors\(p\);) col-1 sh gr
1273 /Courier ff 180.00 scf sf
1275 gs 1 -1 sc (if \(EndOfSearch\(p\)\) { return\(Evaluate\(p\)\); }) col-1 sh gr
1276 /Courier ff 180.00 scf sf
1278 gs 1 -1 sc (int i;) col-1 sh gr
1279 /Courier ff 180.00 scf sf
1281 gs 1 -1 sc (int numOfSuccessors;) col-1 sh gr
1282 /Courier ff 180.00 scf sf
1284 gs 1 -1 sc (/* total moves */) dup sw pop neg 0 rm col-1 sh gr
1285 /Courier ff 180.00 scf sf
1287 gs 1 -1 sc (int AlphaBeta\(position p, int alpha, int beta\) {) col-1 sh gr
1294 836 1703 a Fu(Figure)25 b(1:)30 b(A)25 b(Ne)o(gamax)f(F)o(ormulation)f
1295 (of)h(the)h Fq(\013)q(\014)30 b Fu(Algorithm)0 1989 y(termine)24
1296 b(the)h(minimax)e(v)n(alue:)30 b Fq(b)1168 1952 y Fp(d)1209
1297 1925 y Fd(d)p 1210 1937 33 4 v 1211 1978 a Fc(2)1251
1298 1952 y Fp(e)1309 1989 y Fl(+)22 b Fq(b)1448 1952 y Fp(b)1489
1299 1925 y Fd(d)p 1489 1937 V 1490 1978 a Fc(2)1531 1952
1300 y Fp(c)1589 1989 y Fk(\000)g Fl(1)j Fu(\(assuming)e(that)h(there)h(are)
1301 h(no)e(transpositions)f(in)h(the)h(tree\).)0 2188 y(This)i(best)h(case)
1302 h(is)f(achie)n(v)o(ed)f(when)h(the)g(\223best\224)h(mo)o(v)o(e)d(is)i
1303 (considered)g(\002rst)g(at)g(all)g(nodes)g(in)g(the)g(search)h(tree)0
1304 2388 y(\(a)c(perfectly-ordered)h(tree\).)146 2587 y(There)e(is)f(a)g
1305 (portion)f(of)h(the)g Fq(\013)q(\014)29 b Fu(tree)23
1306 b(that)g(must)f(al)o(w)o(ays)h(be)g(searched)h(to)f(determine)f(the)h
1307 (minimax)f(v)n(alue.)0 2786 y(This)k Fm(critical)f(tr)l(ee)i
1308 Fu(is)f(de\002ned)h(as)g(the)g(perfectly-ordered)g(tree)g(that)f(is)g
1309 (generated)h(when)f Fq(\013)q(\014)32 b Fu(is)27 b(started)f(with)0
1310 2985 y(the)32 b(search)i(windo)n(w)d(\()p Fk(\0001)p
1311 Fu(,)p Fl(+)p Fk(1)p Fu(\).)54 b(Figure)33 b(2)g(sho)n(ws)e(the)h
1312 (structure)h(of)f(the)h(critical)f(tree.)55 b(Nodes)32
1313 b(mark)o(ed)0 3185 y(ALL)22 b(ha)n(v)o(e)g(all)g(of)g(their)g
1314 (successors)g(e)o(xplored)f(by)h Fq(\013)q(\014)6 b Fu(.)29
1315 b(Nodes)22 b(mark)o(ed)g(CUT)g(ha)n(v)o(e)g(at)g(least)g(one)g(branch)h
1316 (that)0 3384 y(can)32 b(cut)f(of)n(f)g(further)g(search)h(at)f(this)g
1317 (node.)50 b(In)31 b(the)g(critical)g(tree,)j(\002rst)d(mo)o(v)o(e)f
1318 (searched)i(at)f(all)g(CUT)h(nodes)0 3583 y(causes)23
1319 b(a)g(cut-of)n(f.)29 b(CUT)23 b(and)g(ALL)f(nodes)g(are)h(also)g(kno)n
1320 (wn)e(as)i(type-2)f(and)g(type-3)g(nodes,)h(respecti)n(v)o(ely)e([9].)
1321 146 3782 y(The)26 b(principal)f(v)n(ariation)g(\(type-1)h(nodes,)g
1322 (labeled)f(PV)i(in)e(Figure)h(2\))g(of)g(an)g Fq(\013)q(\014)32
1323 b Fu(critical)25 b(tree)i(is)e(the)h(\002rst)0 3982 y(\(left-most\))e
1324 (branch)g(searched.)32 b(All)24 b(of)g(the)h(PV)g(nodes)f(are)h
1325 (searched)g(with)f(the)g(windo)n(w)f(\()p Fk(\0001)p
1326 Fu(,)p Fl(+)p Fk(1)p Fu(\).)31 b(Thus,)0 4181 y(all)25
1327 b(children)f(at)h(PV)g(nodes)f(are)i(searched,)f(meaning)f(that)h(the)o
1328 (y)e(are)j(ef)n(fecti)n(v)o(ely)d(ALL)i(nodes.)0 4476
1329 y Fg(2.2)119 b(P)o(arallel)30 b Ff(\013)q(\014)7 b Fg(-based)30
1330 b(Sear)n(ch)h(Algorithms)0 4742 y Fu(The)h Fm(PV)-5 b(-Split)30
1331 b Fu(algorithm)h([13])h(is)g(based)g(on)f(the)h(re)o(gular)g(structure)
1332 g(of)g(the)g(critical)g(game)f(tree.)53 b(The)32 b(\002rst)0
1333 4941 y(stage)38 b(of)f(the)h(algorithm)e(in)l(v)n(olv)o(es)g(a)j
1334 (recursi)n(v)o(e)e(call)g(to)h(itself)f(as)h(PV)-10 b(-Split)37
1335 b(tra)n(v)o(els)g(do)n(wn)g(the)h(principal)0 5141 y(v)n(ariation.)28
1336 b(Once)20 b(the)f(left)h(subtree)f(of)h(a)g(PV)g(node)f(has)h(been)f(e)
1337 o(xamined,)h(all)f(of)h(the)f(other)h(subtrees)f(belo)n(w)g(that)0
1338 5340 y(PV)27 b(node)f(are)h(searched)f(in)g(parallel.)35
1339 b(Each)27 b(processor)f(is)f(gi)n(v)o(en)g(one)h(subtree)g(at)h(a)f
1340 (time)g(to)g(search,)h(without)1925 5589 y(5)p eop
1343 17761071 11840716 5130977 18813583 31443681 36245749 startTexFig
1345 %%BeginDocument: pics/candidacy2-4.ps
1350 /IdrawDict 51 dict def
1354 dup dup findfont dup length dict begin
1355 { 1 index /FID ne { def }{ pop pop } ifelse } forall
1356 /Encoding ISOLatin1Encoding def
1357 currentdict end definefont
1360 /ISOLatin1Encoding [
1361 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1362 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1363 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1364 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1365 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
1366 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
1367 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
1368 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
1369 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
1370 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
1371 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
1372 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1373 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1374 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
1375 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
1376 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
1377 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
1378 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
1379 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
1380 /guillemotright/onequarter/onehalf/threequarters/questiondown
1381 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
1382 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
1383 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
1384 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
1385 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
1386 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
1387 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
1388 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
1389 /yacute/thorn/ydieresis
1391 /Helvetica reencodeISO def
1394 /numGraphicParameters 17 def
1395 /stringLimit 65535 def
1399 numGraphicParameters dict begin
1408 dup type /nulltype eq {
1410 false /brushRightArrow idef
1411 false /brushLeftArrow idef
1412 true /brushNone idef
1414 /brushDashOffset idef
1415 /brushDashArray idef
1416 0 ne /brushRightArrow idef
1417 0 ne /brushLeftArrow idef
1419 false /brushNone idef
1441 dup type /nulltype eq {
1442 pop true /patternNone idef
1445 /patternGrayLevel idef
1448 /patternGrayLevel idef
1450 false /patternNone idef
1459 0 0 0 0 0 0 1 1 true subspline
1461 0 0 0 0 1 1 2 2 false subspline
1464 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
1466 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
1468 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
1469 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
1470 brushNone not { istroke } if
1472 n 2 sub dup n 1 sub dup rightarrow
1475 } dup 0 4 dict put def
1480 patternNone not { ifill } if
1481 brushNone not { istroke } if
1489 n 1 sub dup 0 0 1 1 2 2 true subspline
1492 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
1494 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
1495 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
1496 patternNone not { ifill } if
1497 brushNone not { istroke } if
1502 } dup 0 4 dict put def
1511 patternNone not { ifill } if
1512 brushNone not { istroke } if
1514 } dup 0 1 dict put def
1520 x 0 get y 0 get moveto
1521 x 1 get y 1 get lineto
1522 brushNone not { istroke } if
1526 } dup 0 4 dict put def
1533 x 0 get y 0 get moveto
1536 x i get y i get lineto
1538 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
1539 brushNone not { istroke } if
1541 n 2 sub dup n 1 sub dup rightarrow
1544 } dup 0 4 dict put def
1553 patternNone not { ifill } if
1554 brushNone not { istroke } if
1569 patternNone not { ifill } if
1570 brushNone not { istroke } if
1572 } dup 0 4 dict put def
1579 dup where { pop pop pop } { exch def } ifelse
1585 patternGrayLevel -1 ne {
1586 fgred bgred fgred sub patternGrayLevel mul add
1587 fggreen bggreen fggreen sub patternGrayLevel mul add
1588 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
1592 originalCTM setmatrix
1593 pathbbox /t exch def /r exch def /b exch def /l exch def
1594 /w r l sub ceiling cvi def
1595 /h t b sub ceiling cvi def
1596 /imageByteWidth w 8 div ceiling cvi def
1598 bgred bggreen bgblue setrgbcolor
1600 fgred fggreen fgblue setrgbcolor
1602 l b translate w h scale
1603 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
1608 } dup 0 8 dict put def
1612 brushDashOffset -1 eq {
1616 brushDashArray brushDashOffset setdash
1617 fgred fggreen fgblue setrgbcolor
1619 brushWidth setlinewidth
1620 originalCTM setmatrix
1628 fgred fggreen fgblue setrgbcolor
1629 /fontDict printFont printSize scalefont dup setfont def
1630 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
1631 transform exch pop def
1632 /vertoffset 1 printSize sub descender sub def {
1633 0 vertoffset moveto show
1634 /vertoffset vertoffset printSize sub def
1638 } dup 0 3 dict put def
1641 /patternByteLength patternString length def
1642 /patternHeight patternByteLength 8 mul sqrt cvi def
1643 /patternWidth patternHeight def
1644 /patternByteWidth patternWidth 8 idiv def
1645 /imageByteMaxLength imageByteWidth imageHeight mul
1646 stringLimit patternByteWidth sub min def
1647 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
1648 patternHeight mul patternHeight max def
1649 /imageHeight imageHeight imageMaxHeight sub store
1650 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
1651 0 1 imageMaxHeight 1 sub {
1653 /patternRow y patternByteWidth mul patternByteLength mod def
1654 /patternRowString patternString patternRow patternByteWidth getinterval def
1655 /imageRow y imageByteWidth mul def
1656 0 patternByteWidth imageByteWidth 1 sub {
1658 imageString imageRow x add patternRowString putinterval
1663 } dup 0 12 dict put def
1666 dup 3 2 roll dup 4 3 roll lt { exch } if pop
1670 dup 3 2 roll dup 4 3 roll gt { exch } if pop
1682 } dup 0 4 dict put def
1690 x0 2 mul x1 add 3 div
1691 y0 2 mul y1 add 3 div
1693 } dup 0 4 dict put def
1697 /movetoNeeded exch def
1698 y exch get /y3 exch def
1699 x exch get /x3 exch def
1700 y exch get /y2 exch def
1701 x exch get /x2 exch def
1702 y exch get /y1 exch def
1703 x exch get /x1 exch def
1704 y exch get /y0 exch def
1705 x exch get /x0 exch def
1706 x1 y1 x2 y2 thirdpoint
1709 x2 y2 x1 y1 thirdpoint
1712 x1 y1 x0 y0 thirdpoint
1716 x2 y2 x3 y3 thirdpoint
1720 movetoNeeded { p0x p0y moveto } if
1721 p1x p1y p2x p2y p3x p3y curveto
1723 } dup 0 17 dict put def
1737 fgred fggreen fgblue setrgbcolor
1738 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
1742 dup 3 -1 roll dup 4 1 roll exch
1746 exch dup 3 1 roll exch lineto
1749 bgred bggreen bgblue setrgbcolor
1755 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
1761 transform originalCTM itransform
1764 transform originalCTM itransform
1767 /dy tipy taily sub def
1768 /dx tipx tailx sub def
1769 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
1771 originalCTM setmatrix
1775 arrowHeight neg arrowWidth 2 div moveto
1777 arrowHeight neg arrowWidth 2 div neg lineto
1779 originalCTM setmatrix
1780 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
1782 /padtail brushWidth 2 div def
1786 arrowHeight padtip add padtail add arrowHeight div dup scale
1791 originalCTM setmatrix
1799 } dup 0 9 dict put def
1803 arrowHeight neg arrowWidth 2 div moveto
1805 arrowHeight neg arrowWidth 2 div neg lineto
1810 y exch get /taily exch def
1811 x exch get /tailx exch def
1812 y exch get /tipy exch def
1813 x exch get /tipx exch def
1814 brushLeftArrow { tipx tipy tailx taily arrowhead } if
1816 } dup 0 4 dict put def
1820 y exch get /tipy exch def
1821 x exch get /tipx exch def
1822 y exch get /taily exch def
1823 x exch get /tailx exch def
1824 brushRightArrow { tipx tipy tailx taily arrowhead } if
1826 } dup 0 4 dict put def
1829 %I Idraw 10 Grid 4.98316 4.98316
1839 [ 0.799705 0 0 0.799705 0 0 ] concat
1840 /originalCTM matrix currentmatrix def
1852 [ 1 -0 -0 1 174 230 ] concat
1854 200 443 200 353 Line
1868 [ 1 -0 -0 1 174 230 ] concat
1870 200 443 349 353 Line
1884 [ 1 -0 -0 1 174 230 ] concat
1900 [ 1 -0 -0 1 174 230 ] concat
1916 [ 1 -0 -0 1 174 230 ] concat
1932 [ 1 -0 -0 1 174 230 ] concat
1948 [ 1 -0 -0 1 70 230 ] concat
1964 [ 1 -0 -0 1 70 230 ] concat
1966 109 263 109 174 Line
1980 [ 1 -0 -0 1 70 230 ] concat
1982 109 263 154 174 Line
1996 [ 1 -0 -0 1 70 230 ] concat
1998 169 263 199 174 Line
2012 [ 1 -0 -0 1 70 230 ] concat
2014 214 263 244 174 Line
2028 [ 1 -0 -0 1 70 230 ] concat
2044 [ 1 -0 -0 1 70 230 ] concat
2060 [ 1 -0 -0 1 70 230 ] concat
2076 [ 1 -0 -0 1 70 230 ] concat
2092 [ 1 -0 -0 1 70 230 ] concat
2108 [ 1 -0 -0 1 70 230 ] concat
2110 109 174 102 129 Line
2124 [ 1 -0 -0 1 70 230 ] concat
2126 154 174 147 129 Line
2140 [ 1 -0 -0 1 70 230 ] concat
2142 199 174 184 129 Line
2156 [ 1 -0 -0 1 70 230 ] concat
2158 199 174 192 129 Line
2172 [ 1 -0 -0 1 70 230 ] concat
2174 199 174 199 129 Line
2188 [ 1 -0 -0 1 70 230 ] concat
2190 199 174 207 129 Line
2204 [ 1 -0 -0 1 70 230 ] concat
2206 199 174 214 129 Line
2220 [ 1 -0 -0 1 70 230 ] concat
2222 244 174 229 129 Line
2236 [ 1 -0 -0 1 70 230 ] concat
2238 236 129 244 174 Line
2252 [ 1 -0 -0 1 70 230 ] concat
2254 244 174 244 129 Line
2268 [ 1 -0 -0 1 70 230 ] concat
2270 244 174 251 129 Line
2284 [ 1 -0 -0 1 70 230 ] concat
2286 244 174 259 129 Line
2300 [ 1 -0 -0 1 70 230 ] concat
2312 [ 1 0 0 1 150 0 ] concat
2324 [ 1 -0 -0 1 70 230 ] concat
2326 139 428 169 458 Rect
2332 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
2335 [ 1 0 0 1 214 676 ] concat
2351 [ 1 0 0 1 0 -90 ] concat
2363 [ 1 -0 -0 1 70 230 ] concat
2365 139 428 169 458 Rect
2371 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
2374 [ 1 0 0 1 214 676 ] concat
2390 [ 1 0 0 1 -45 -180 ] concat
2402 [ 1 -0 -0 1 70 230 ] concat
2404 139 428 169 458 Rect
2410 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
2413 [ 1 0 0 1 214 676 ] concat
2429 [ 1 0 0 1 -89 -269 ] concat
2441 [ 1 -0 -0 1 70 230 ] concat
2443 139 428 169 458 Rect
2449 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
2452 [ 1 0 0 1 214 676 ] concat
2468 [ 1 0 0 1 46 -269 ] concat
2480 [ 1 -0 -0 1 70 230 ] concat
2482 139 428 169 458 Rect
2488 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
2491 [ 1 0 0 1 214 676 ] concat
2507 [ 1 0 0 1 90 -269 ] concat
2519 [ 1 -0 -0 1 70 230 ] concat
2521 139 428 169 458 Rect
2527 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
2530 [ 1 0 0 1 214 676 ] concat
2549 [ 1 0 0 1 85 230 ] concat
2551 304 263 274 174 Line
2565 [ 1 0 0 1 85 230 ] concat
2567 304 263 319 174 Line
2581 [ 1 0 0 1 85 230 ] concat
2583 304 263 364 174 Line
2597 [ 1 0 0 1 189 230 ] concat
2599 304 174 349 263 Line
2613 [ 1 0 0 1 189 230 ] concat
2615 349 263 349 174 Line
2629 [ 1 0 0 1 189 230 ] concat
2631 349 263 394 174 Line
2645 [ 1 0 0 1 85 230 ] concat
2647 274 174 274 129 Line
2661 [ 1 0 0 1 85 230 ] concat
2663 319 174 319 129 Line
2677 [ 1 0 0 1 85 230 ] concat
2679 364 174 364 136 Line
2693 [ 1 0 0 1 85 230 ] concat
2695 364 136 364 129 Line
2709 [ 1 0 0 1 241 230 ] concat
2711 252 174 252 136 Line
2725 [ 1 0 0 1 241 230 ] concat
2727 297 174 297 129 Line
2741 [ 1 0 0 1 241 230 ] concat
2743 252 136 252 129 Line
2757 [ 1 0 0 1 241 230 ] concat
2759 342 174 342 129 Line
2770 [ 1 0 0 1 224 -269 ] concat
2782 [ 1 -0 -0 1 70 230 ] concat
2790 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
2793 [ 1 0 0 1 124 678 ] concat
2812 [ 1 -0 -0 1 226 230 ] concat
2814 148 353 163 263 Line
2825 [ 1 0 0 1 165 -180 ] concat
2837 [ 1 -0 -0 1 70 230 ] concat
2839 139 428 169 458 Rect
2845 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
2848 [ 1 0 0 1 214 676 ] concat
2867 [ 1 -0 -0 1 226 230 ] concat
2869 297 353 312 263 Line
2880 [ 1 0 0 1 314 -180 ] concat
2892 [ 1 -0 -0 1 70 230 ] concat
2894 139 428 169 458 Rect
2900 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
2903 [ 1 0 0 1 214 676 ] concat
2919 [ 1 0 0 1 89 -269 ] concat
2931 [ 1 -0 -0 1 70 230 ] concat
2939 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
2942 [ 1 0 0 1 124 678 ] concat
2958 [ 1 0 0 1 44 -269 ] concat
2970 [ 1 -0 -0 1 70 230 ] concat
2978 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
2981 [ 1 0 0 1 124 678 ] concat
2997 [ 1 0 0 1 269 -269 ] concat
3009 [ 1 -0 -0 1 70 230 ] concat
3017 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
3020 [ 1 0 0 1 124 678 ] concat
3036 [ 1 0 0 1 149 -180 ] concat
3048 [ 1 -0 -0 1 70 230 ] concat
3056 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
3059 [ 1 0 0 1 124 678 ] concat
3075 [ 1 0 0 1 104 -180 ] concat
3087 [ 1 -0 -0 1 70 230 ] concat
3095 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
3098 [ 1 0 0 1 124 678 ] concat
3114 [ 1 0 0 1 239 -90 ] concat
3126 [ 1 -0 -0 1 70 230 ] concat
3134 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
3137 [ 1 0 0 1 124 678 ] concat
3153 [ 1 0 0 1 388 -90 ] concat
3165 [ 1 -0 -0 1 70 230 ] concat
3173 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
3176 [ 1 0 0 1 124 678 ] concat
3192 [ 1 0 0 1 313 -269 ] concat
3204 [ 1 -0 -0 1 70 230 ] concat
3212 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
3215 [ 1 0 0 1 124 678 ] concat
3231 [ 1 0 0 1 358 -269 ] concat
3243 [ 1 -0 -0 1 70 230 ] concat
3251 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
3254 [ 1 0 0 1 124 678 ] concat
3270 [ 1 0 0 1 403 -269 ] concat
3282 [ 1 -0 -0 1 70 230 ] concat
3290 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
3293 [ 1 0 0 1 124 678 ] concat
3309 [ 1 0 0 1 448 -269 ] concat
3321 [ 1 -0 -0 1 70 230 ] concat
3329 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
3332 [ 1 0 0 1 124 678 ] concat
3344 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
3347 [ 1 0 0 1 339 684 ] concat
3357 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
3360 [ 1 0 0 1 189 594 ] concat
3370 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
3373 [ 1 0 0 1 144 504 ] concat
3383 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
3386 [ 1 0 0 1 100 415 ] concat
3402 1412 1703 a Fu(Figure)25 b(2:)30 b(The)25 b(Critical)g(T)m(ree)0
3403 1991 y(assistance)f(from)h(other)f(processors.)30 b(After)25
3404 b(all)g(of)f(the)h(subtrees)f(ha)n(v)o(e)g(been)h(completely)f(e)o
3405 (xplored,)f(that)i(PV)0 2190 y(node)32 b(returns)f(its)g(score)h(to)g
3406 (the)f(PV)h(node)g(abo)o(v)o(e)f(it.)51 b(At)31 b(an)o(y)g(time,)i
3407 (only)e(one)h(node')-5 b(s)31 b(subtrees)g(are)i(being)0
3408 2389 y(e)o(xamined)f(in)g(parallel.)54 b(The)32 b(major)g(problem)g
3409 (with)g(PV)-10 b(-Split)32 b(is)g(the)h(lar)n(ge)g(amount)e(of)i
3410 (synchronization;)0 2588 y(man)o(y)21 b(processors)h(are)h(often)f
3411 (forced)g(to)g(w)o(ait)g(for)g(long)f(periods)h(of)g(time)f(while)h
3412 (the)g(last)f(une)n(v)n(aluated)g(branch)0 2788 y(of)k(a)g(PV)g(node)g
3413 (is)f(\002nished.)146 2987 y(The)35 b(best)g(speedups)g(for)g(parallel)
3414 g Fq(\013)q(\014)40 b Fu(ha)n(v)o(e)35 b(been)g(reported)g(for)h(the)f
3415 Fm(Y)-9 b(oung)34 b(Br)l(other)o(s)g(W)-9 b(ait)34 b(Concept)0
3416 3186 y Fu(\(YBWC\))22 b(algorithm)d([3].)30 b(In)21 b(this)e(paper)l(,)
3417 j(YBWC)g(is)e(used)g(as)h(a)g(representati)n(v)o(e)f(of)h(a)g(lar)n(ge)
3418 g(group)f(of)h(popular)0 3385 y(synchronous)e(algorithms)f(\(including)
3419 h(ABD)l(AD)l(A)h([17],)h(Dynamic)f(T)m(ree)g(Splitting)e([7])j(and)f
3420 (Jamboree)g([11]\))0 3585 y(which)28 b(all)h(share)g(the)f(same)h
3421 (underlying)e(parallel)i(algorithm)e(and)i(dif)n(fer)f(only)g(in)h
3422 (implementation)d(details.)0 3784 y(All)38 b(of)h(these)g(algorithms)e
3423 (synchronize)i(at)f(the)h(end)g(of)g(each)g(iteration,)j(and)d(may)f
3424 (also)h(synchronize)f(at)0 3983 y(additional)23 b(points)h(within)f
3425 (each)j(iteration.)146 4182 y(In)32 b(a)g(game)f(tree)h(that)f(has)h
3426 (near)n(-perfect)h(mo)o(v)o(e)d(ordering,)j(there)f(is)f(a)h(high)f
3427 (probability)f(that)h(a)h(node)g(is)0 4382 y(an)c(ALL)g(node)g(if)g
3428 (the)g(left-most)f(branch)h(is)f(e)n(v)n(aluated)g(and)h(does)g(not)f
3429 (cause)i(a)f(cut-of)n(f.)40 b(The)28 b(basic)g(YBWC)0
3430 4581 y(states)j(that)h(the)g(left-most)e(branch)i(\(the)g(eldest)g
3431 (brother\))g(must)e(be)j(e)n(v)n(aluated)d(before)j(an)o(y)e(other)h
3432 (branches)0 4780 y(\(the)d(young)g(brothers\))g(can)h(be)f(distrib)n
3433 (uted)f(to)h(other)g(processors.)44 b(This)29 b(is)g(not)f(necessarily)
3434 h(limited)f(to)h(the)0 4979 y(principal)35 b(v)n(ariation)g(\(i.e.)65
3435 b(PV)-10 b(-Split\))37 b(or)f(a)g(pseudo-principal)f(v)n(ariation)g(as)
3436 h(in)g(other)g(algorithms;)k(it)c(can)0 5179 y(happen)g(at)f(an)o(y)g
3437 (node)h(within)e(the)i(game)f(tree.)64 b(The)36 b(optimized)e
3438 (algorithm)g(is)h(called)h(YBWC*.)64 b(In)36 b(this)1925
3441 7 9 bop 0 100 a Fu(v)n(ariant,)27 b(young)f(brothers)h(are)g(not)g
3442 (forced)g(to)g(w)o(ait)g(at)g(ALL)g(nodes,)g(allo)n(wing)e(sequential)h
3443 (e)n(v)n(aluation)f(of)i(all)0 299 y(\223reasonable\224)e(mo)o(v)o(es)e
3444 (at)i(CUT)g(nodes.)146 498 y(The)h(UIDP)-9 b(ABS)26 b(algorithm)e(\()p
3445 Fm(Unsync)o(hr)l(onized)g(Iter)o(atively)g(Deepening)h(P)-8
3446 b(ar)o(allel)24 b(Alpha-Beta)g(Sear)l(c)o(h)p Fu(\))0
3447 697 y([14])29 b(w)o(as)h(the)f(\002rst)g(attempt)f(to)h(asynchronously)
3448 f(start)h(the)g(ne)o(xt)g(le)n(v)o(el)f(of)h(an)h(iterati)n(v)o(ely)d
3449 (deepened)j(search)0 897 y(instead)d(of)g(synchronizing)f(at)h(the)g
3450 (root)g(of)g(the)g(game)g(tree.)38 b(The)27 b(mo)o(v)o(es)f(from)h(the)
3451 g(root)g(position)e(are)j(parti-)0 1096 y(tioned)20 b(among)f(the)i
3452 (processors,)g(and)f(the)g(processors)h(search)g(their)f(o)n(wn)f
3453 (subset)h(of)h(the)f(mo)o(v)o(es)f(with)h(iterati)n(v)o(e)0
3454 1295 y(deepening.)29 b(Each)21 b(processor)f(is)g(gi)n(v)o(en)f(the)h
3455 (same)g(initial)f(search)i(windo)n(w)-6 b(,)20 b(b)n(ut)g(some)g(of)g
3456 (the)g(processors)g(may)0 1494 y(ha)n(v)o(e)26 b(changed)g(their)f
3457 (windo)n(ws)g(based)h(on)g(the)f(search)i(results)e(of)h(their)g(mo)o
3458 (v)o(es.)32 b(The)26 b(UIDP)-9 b(ABS)28 b(algorithm)0
3459 1694 y(combines)h(all)i(the)f(processors')g(results)g(once)g(a)h
3460 (predetermined)f(time)g(limit)e(has)j(been)f(reached.)49
3461 b(Some)30 b(of)0 1893 y(the)i(mo)o(v)o(es)e(may)i(ha)n(v)o(e)g(been)g
3462 (e)n(v)n(aluated)f(to)h(lar)n(ger)h(depths)e(than)h(those)f(on)h(other)
3463 g(processors,)i(which)d(may)0 2092 y(yield)e(a)h(better)f(quality)f(mo)
3464 o(v)o(e)g(choice.)45 b(Ho)n(we)n(v)o(er)l(,)29 b(it)g(is)g(important)f
3465 (to)h(note)g(that)g(each)h(mo)o(v)o(e)e(may)h(only)g(be)0
3466 2291 y(searched)23 b(by)g(one)f(processor;)h(thus,)g(the)f(algorithm)f
3467 (can)i(only)f(use)h(as)g(man)o(y)e(processors)i(as)f(there)h(are)h(mo)o
3468 (v)o(es)0 2491 y(at)h(the)f(root)h(of)g(the)f(game)h(tree.)0
3469 2830 y Fo(3)143 b(The)35 b(APHID)f(Algorithm)0 3133 y
3470 Fu(This)18 b(section)g(describes)h(the)g(Asynchronous)e(P)o(arallel)i
3471 (Hierarchical)g(Iterati)n(v)o(e)f(Deepening)g(\(APHID)3589
3472 3096 y Fn(3)3629 3133 y Fu(\))i(game-)0 3332 y(tree)29
3473 b(search)g(algorithm.)40 b(APHID)29 b(represents)g(a)g(departure)g
3474 (from)f(the)g(synchronous)f(algorithms)g(described)0
3475 3531 y(in)d(Section)g(2)g(and)g(has)g(been)h(designed)e(to)h(address)g
3476 (the)g(problems)f(described)h(in)g(Section)g(1.)30 b(First,)24
3477 b(the)g(algo-)0 3730 y(rithm)k(is)g(asynchronous)f(in)i(nature;)h(it)e
3478 (remo)o(v)o(es)f(all)i(global)e(synchronization)g(points)h(from)g(the)h
3479 Fq(\013)q(\014)34 b Fu(search)0 3930 y(and)28 b(from)f(iterati)n(v)o(e)
3480 f(deepening.)39 b(Second,)29 b(the)e(algorithm)g(does)g(not)g(require)h
3481 (a)g(shared)g(transposition)d(table)0 4129 y(for)h(mo)o(v)o(e)d
3482 (ordering)i(information,)f(although)g(one)h(can)h(be)f(used)g(if)h
3483 (duplicate)e(detection)h(is)g(important)e(in)i(the)0
3484 4328 y(underlying)33 b(application.)59 b(Third,)36 b(parallelism)e(is)g
3485 (only)f(applied)h(at)h(nodes)f(that)g(ha)n(v)o(e)g(a)h(high)f
3486 (probability)0 4527 y(of)g(needing)g(parallelism,)h(and)g(this)e
3487 (decision)g(is)h(based)g(on)g(the)g(best)g(information)f(a)n(v)n
3488 (ailable)h(at)g(the)g(time.)0 4727 y(Finally)-6 b(,)24
3489 b(APHID)h(is)f(designed)g(to)h(easily)f(\002t)h(into)f(an)h(e)o
3490 (xisting)e(sequential)h Fq(\013)q(\014)6 b Fu(-based)24
3491 b(search)h(algorithm.)146 4926 y(APHID)k(subdi)n(vides)d(the)j(tree)g
3492 (into)e(man)o(y)h(distinct)f(pieces)h(which)g(each)h(process)g(can)f
3493 (search)h(indepen-)p 0 5016 1560 4 v 112 5077 a Fj(3)149
3494 5107 y Fi(An)d(aphid)e(is)i(a)f(soft-bodied)e(insect)i(that)g(sucks)g
3495 (the)h(sap)f(from)f(plants.)39 b(One)25 b(could)f(say)i(the)f(APHID)g
3496 (algorithm)e(sucks)j(the)0 5206 y(minimax)19 b(v)n(alue)g(from)h(a)g
3497 (game)f(tree.)1925 5589 y Fu(7)p eop
3500 15132435 7104430 4670504 18813583 35522150 33285570 startTexFig
3502 %%BeginDocument: pics/aphid-partition.ps
3503 %Magnification: 1.00
3504 /$F2psDict 200 dict def
3506 $F2psDict /mtrx matrix put
3507 /col-1 {0 setgray} bind def
3508 /col0 {0.000 0.000 0.000 srgb} bind def
3509 /col1 {0.000 0.000 1.000 srgb} bind def
3510 /col2 {0.000 1.000 0.000 srgb} bind def
3511 /col3 {0.000 1.000 1.000 srgb} bind def
3512 /col4 {1.000 0.000 0.000 srgb} bind def
3513 /col5 {1.000 0.000 1.000 srgb} bind def
3514 /col6 {1.000 1.000 0.000 srgb} bind def
3515 /col7 {1.000 1.000 1.000 srgb} bind def
3516 /col8 {0.000 0.000 0.560 srgb} bind def
3517 /col9 {0.000 0.000 0.690 srgb} bind def
3518 /col10 {0.000 0.000 0.820 srgb} bind def
3519 /col11 {0.530 0.810 1.000 srgb} bind def
3520 /col12 {0.000 0.560 0.000 srgb} bind def
3521 /col13 {0.000 0.690 0.000 srgb} bind def
3522 /col14 {0.000 0.820 0.000 srgb} bind def
3523 /col15 {0.000 0.560 0.560 srgb} bind def
3524 /col16 {0.000 0.690 0.690 srgb} bind def
3525 /col17 {0.000 0.820 0.820 srgb} bind def
3526 /col18 {0.560 0.000 0.000 srgb} bind def
3527 /col19 {0.690 0.000 0.000 srgb} bind def
3528 /col20 {0.820 0.000 0.000 srgb} bind def
3529 /col21 {0.560 0.000 0.560 srgb} bind def
3530 /col22 {0.690 0.000 0.690 srgb} bind def
3531 /col23 {0.820 0.000 0.820 srgb} bind def
3532 /col24 {0.500 0.190 0.000 srgb} bind def
3533 /col25 {0.630 0.250 0.000 srgb} bind def
3534 /col26 {0.750 0.380 0.000 srgb} bind def
3535 /col27 {1.000 0.500 0.500 srgb} bind def
3536 /col28 {1.000 0.630 0.630 srgb} bind def
3537 /col29 {1.000 0.750 0.750 srgb} bind def
3538 /col30 {1.000 0.880 0.880 srgb} bind def
3539 /col31 {1.000 0.840 0.000 srgb} bind def
3543 34.5 576.0 translate
3546 /cp {closepath} bind def
3547 /ef {eofill} bind def
3548 /gr {grestore} bind def
3549 /gs {gsave} bind def
3551 /rs {restore} bind def
3552 /l {lineto} bind def
3553 /m {moveto} bind def
3554 /rm {rmoveto} bind def
3555 /n {newpath} bind def
3556 /s {stroke} bind def
3558 /slc {setlinecap} bind def
3559 /slj {setlinejoin} bind def
3560 /slw {setlinewidth} bind def
3561 /srgb {setrgbcolor} bind def
3562 /rot {rotate} bind def
3563 /sc {scale} bind def
3564 /sd {setdash} bind def
3565 /ff {findfont} bind def
3566 /sf {setfont} bind def
3567 /scf {scalefont} bind def
3568 /sw {stringwidth} bind def
3569 /tr {translate} bind def
3570 /tnt {dup dup currentrgbcolor
3571 4 -2 roll dup 1 exch sub 3 -1 roll mul add
3572 4 -2 roll dup 1 exch sub 3 -1 roll mul add
3573 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
3575 /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
3576 4 -2 roll mul srgb} bind def
3579 /startangle exch def
3584 /savematrix mtrx currentmatrix def
3585 x y tr xrad yrad sc 0 0 1 startangle endangle arc
3587 savematrix setmatrix
3590 /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
3591 /$F2psEnd {$F2psEnteredState restore end} def
3595 n 0 792 m 0 0 l 612 0 l 612 792 l cp clip
3599 n 2775 3075 m 2925 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3601 n 2775 2925 m 2925 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3603 n 3000 3075 m 3150 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3605 n 3000 2925 m 3150 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3607 n 3225 3075 m 3375 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3609 n 3225 2925 m 3375 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3611 n 3450 3075 m 3600 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3613 n 3450 2925 m 3600 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3615 n 5175 3075 m 5325 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3617 n 5175 2925 m 5325 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3619 n 5400 3075 m 5550 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3621 n 5400 2925 m 5550 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3623 n 5625 3075 m 5775 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3625 n 5625 2925 m 5775 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3627 n 5850 3075 m 6000 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3629 n 5850 2925 m 6000 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3631 n 6075 3075 m 6225 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3633 n 6075 2925 m 6225 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3635 n 4425 3075 m 4575 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3637 n 4425 2925 m 4575 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3639 n 4200 3075 m 4350 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3641 n 4200 2925 m 4350 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3643 n 3975 3075 m 4125 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3645 n 3975 2925 m 4125 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3647 n 3750 3075 m 3900 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3649 n 3750 2925 m 3900 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3651 n 4875 3075 m 5025 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3653 n 4875 2925 m 5025 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3655 n 4650 3075 m 4800 2925 l gs 1.00 setgray ef gr gs col-1 s gr
3657 n 4650 2925 m 4800 3075 l gs 1.00 setgray ef gr gs col-1 s gr
3659 n 675 1425 m 825 1275 l gs 1.00 setgray ef gr gs col-1 s gr
3661 n 675 1275 m 825 1425 l gs 1.00 setgray ef gr gs col-1 s gr
3664 n 5400 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
3667 n 5175 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
3670 n 4950 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
3674 n 3675 3000 m 3075 4800 l gs col-1 s gr
3677 n 4626 3004 m 4926 4804 l gs col-1 s gr
3680 n 4626 3004 m 4926 4804 l gs col-1 s gr
3683 n 2700 3000 m 6300 3000 l gs col-1 s gr
3687 8430 4599 m 8400 4719 l 8370 4599 l 8370 4845 l 8430 4845 l cp clip
3688 8370 1401 m 8400 1281 l 8430 1401 l 8430 1155 l 8370 1155 l cp clip
3689 n 8400 1200 m 8400 4800 l gs 1.00 setgray ef gr gs col-1 s gr gr
3692 n 8370 1401 m 8400 1281 l 8430 1401 l col-1 s
3694 n 8430 4599 m 8400 4719 l 8370 4599 l col-1 s
3697 7830 2799 m 7800 2919 l 7770 2799 l 7770 3045 l 7830 3045 l cp clip
3698 7770 1401 m 7800 1281 l 7830 1401 l 7830 1155 l 7770 1155 l cp clip
3699 n 7800 1200 m 7800 3000 l gs 1.00 setgray ef gr gs col-1 s gr gr
3702 n 7770 1401 m 7800 1281 l 7830 1401 l col-1 s
3704 n 7830 2799 m 7800 2919 l 7770 2799 l col-1 s
3707 n 4500 1200 m 900 4800 l 8100 4800 l 4500 1200 l gs col-1 s gr
3709 n 5100 3000 m 6000 4800 l gs col-1 s gr
3710 /Helvetica ff 270.00 scf sf
3712 gs 1 -1 sc (MASTER) dup sw pop 2 div neg 0 rm col-1 sh gr
3713 /Helvetica ff 270.00 scf sf
3715 gs 1 -1 sc (SLAVE 1) dup sw pop 2 div neg 0 rm col-1 sh gr
3716 /Helvetica ff 270.00 scf sf
3718 gs 1 -1 sc (SLAVE K) dup sw pop 2 div neg 0 rm col-1 sh gr
3719 /Helvetica ff 270.00 scf sf
3721 gs 1 -1 sc (SLAVE 2) dup sw pop 2 div neg 0 rm col-1 sh gr
3722 /Helvetica ff 270.00 scf sf
3724 gs 1 -1 sc (= PIECE OF WORK) col-1 sh gr
3725 /Helvetica ff 270.00 scf sf
3727 gs 1 -1 sc (d') col-1 sh gr
3728 /Helvetica ff 270.00 scf sf
3730 gs 1 -1 sc (d) col-1 sh gr
3737 720 1103 a Fu(Figure)25 b(3:)30 b(APHID)25 b(P)o(artitioning)e(Game)i
3738 (T)m(ree)g(Amongst)e(Processes)888 1225 y
3739 16766447 9472573 9669918 31246336 22892052 38679674 startTexFig
3741 %%BeginDocument: pics/location_parallelism.ps
3746 /IdrawDict 52 dict def
3750 dup dup findfont dup length dict begin
3751 { 1 index /FID ne { def }{ pop pop } ifelse } forall
3752 /Encoding ISOLatin1Encoding def
3753 currentdict end definefont
3756 /ISOLatin1Encoding [
3757 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
3758 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
3759 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
3760 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
3761 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
3762 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
3763 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
3764 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
3765 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
3766 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
3767 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
3768 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
3769 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
3770 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
3771 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
3772 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
3773 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
3774 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
3775 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
3776 /guillemotright/onequarter/onehalf/threequarters/questiondown
3777 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
3778 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
3779 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
3780 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
3781 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
3782 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
3783 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
3784 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
3785 /yacute/thorn/ydieresis
3787 /Times-Roman reencodeISO def
3788 /Helvetica reencodeISO def
3791 /numGraphicParameters 17 def
3792 /stringLimit 65535 def
3796 numGraphicParameters dict begin
3805 dup type /nulltype eq {
3807 false /brushRightArrow idef
3808 false /brushLeftArrow idef
3809 true /brushNone idef
3811 /brushDashOffset idef
3812 /brushDashArray idef
3813 0 ne /brushRightArrow idef
3814 0 ne /brushLeftArrow idef
3816 false /brushNone idef
3838 dup type /nulltype eq {
3839 pop true /patternNone idef
3842 /patternGrayLevel idef
3845 /patternGrayLevel idef
3847 false /patternNone idef
3856 0 0 0 0 0 0 1 1 true subspline
3858 0 0 0 0 1 1 2 2 false subspline
3861 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
3863 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
3865 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
3866 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
3867 brushNone not { istroke } if
3869 n 2 sub dup n 1 sub dup rightarrow
3872 } dup 0 4 dict put def
3877 patternNone not { ifill } if
3878 brushNone not { istroke } if
3886 n 1 sub dup 0 0 1 1 2 2 true subspline
3889 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
3891 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
3892 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
3893 patternNone not { ifill } if
3894 brushNone not { istroke } if
3899 } dup 0 4 dict put def
3908 patternNone not { ifill } if
3909 brushNone not { istroke } if
3911 } dup 0 1 dict put def
3917 x 0 get y 0 get moveto
3918 x 1 get y 1 get lineto
3919 brushNone not { istroke } if
3923 } dup 0 4 dict put def
3930 x 0 get y 0 get moveto
3933 x i get y i get lineto
3935 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
3936 brushNone not { istroke } if
3938 n 2 sub dup n 1 sub dup rightarrow
3941 } dup 0 4 dict put def
3950 patternNone not { ifill } if
3951 brushNone not { istroke } if
3966 patternNone not { ifill } if
3967 brushNone not { istroke } if
3969 } dup 0 4 dict put def
3976 dup where { pop pop pop } { exch def } ifelse
3982 patternGrayLevel -1 ne {
3983 fgred bgred fgred sub patternGrayLevel mul add
3984 fggreen bggreen fggreen sub patternGrayLevel mul add
3985 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
3989 originalCTM setmatrix
3990 pathbbox /t exch def /r exch def /b exch def /l exch def
3991 /w r l sub ceiling cvi def
3992 /h t b sub ceiling cvi def
3993 /imageByteWidth w 8 div ceiling cvi def
3995 bgred bggreen bgblue setrgbcolor
3997 fgred fggreen fgblue setrgbcolor
3999 l b translate w h scale
4000 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
4005 } dup 0 8 dict put def
4009 brushDashOffset -1 eq {
4013 brushDashArray brushDashOffset setdash
4014 fgred fggreen fgblue setrgbcolor
4016 brushWidth setlinewidth
4017 originalCTM setmatrix
4025 fgred fggreen fgblue setrgbcolor
4026 /fontDict printFont printSize scalefont dup setfont def
4027 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
4028 transform exch pop def
4029 /vertoffset 1 printSize sub descender sub def {
4030 0 vertoffset moveto show
4031 /vertoffset vertoffset printSize sub def
4035 } dup 0 3 dict put def
4038 /patternByteLength patternString length def
4039 /patternHeight patternByteLength 8 mul sqrt cvi def
4040 /patternWidth patternHeight def
4041 /patternByteWidth patternWidth 8 idiv def
4042 /imageByteMaxLength imageByteWidth imageHeight mul
4043 stringLimit patternByteWidth sub min def
4044 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
4045 patternHeight mul patternHeight max def
4046 /imageHeight imageHeight imageMaxHeight sub store
4047 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
4048 0 1 imageMaxHeight 1 sub {
4050 /patternRow y patternByteWidth mul patternByteLength mod def
4051 /patternRowString patternString patternRow patternByteWidth getinterval def
4052 /imageRow y imageByteWidth mul def
4053 0 patternByteWidth imageByteWidth 1 sub {
4055 imageString imageRow x add patternRowString putinterval
4060 } dup 0 12 dict put def
4063 dup 3 2 roll dup 4 3 roll lt { exch } if pop
4067 dup 3 2 roll dup 4 3 roll gt { exch } if pop
4079 } dup 0 4 dict put def
4087 x0 2 mul x1 add 3 div
4088 y0 2 mul y1 add 3 div
4090 } dup 0 4 dict put def
4094 /movetoNeeded exch def
4095 y exch get /y3 exch def
4096 x exch get /x3 exch def
4097 y exch get /y2 exch def
4098 x exch get /x2 exch def
4099 y exch get /y1 exch def
4100 x exch get /x1 exch def
4101 y exch get /y0 exch def
4102 x exch get /x0 exch def
4103 x1 y1 x2 y2 thirdpoint
4106 x2 y2 x1 y1 thirdpoint
4109 x1 y1 x0 y0 thirdpoint
4113 x2 y2 x3 y3 thirdpoint
4117 movetoNeeded { p0x p0y moveto } if
4118 p1x p1y p2x p2y p3x p3y curveto
4120 } dup 0 17 dict put def
4134 fgred fggreen fgblue setrgbcolor
4135 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
4139 dup 3 -1 roll dup 4 1 roll exch
4143 exch dup 3 1 roll exch lineto
4146 bgred bggreen bgblue setrgbcolor
4152 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
4158 transform originalCTM itransform
4161 transform originalCTM itransform
4164 /dy tipy taily sub def
4165 /dx tipx tailx sub def
4166 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
4168 originalCTM setmatrix
4172 arrowHeight neg arrowWidth 2 div moveto
4174 arrowHeight neg arrowWidth 2 div neg lineto
4176 originalCTM setmatrix
4177 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
4179 /padtail brushWidth 2 div def
4183 arrowHeight padtip add padtail add arrowHeight div dup scale
4188 originalCTM setmatrix
4196 } dup 0 9 dict put def
4200 arrowHeight neg arrowWidth 2 div moveto
4202 arrowHeight neg arrowWidth 2 div neg lineto
4207 y exch get /taily exch def
4208 x exch get /tailx exch def
4209 y exch get /tipy exch def
4210 x exch get /tipx exch def
4211 brushLeftArrow { tipx tipy tailx taily arrowhead } if
4213 } dup 0 4 dict put def
4217 y exch get /tipy exch def
4218 x exch get /tipx exch def
4219 y exch get /taily exch def
4220 x exch get /tailx exch def
4221 brushRightArrow { tipx tipy tailx taily arrowhead } if
4223 } dup 0 4 dict put def
4226 %I Idraw 10 Grid 3 3
4236 [ 0.799705 0 0 0.799705 0 0 ] concat
4237 /originalCTM matrix currentmatrix def
4248 [ 1 -0 -0 1 122 296 ] concat
4263 [ 1 -0 -0 1 122 296 ] concat
4265 117 437 162 332 Line
4278 [ 1 0 0 1 271 296 ] concat
4293 [ 1 0 0 1 271 296 ] concat
4295 117 437 162 332 Line
4302 %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-*
4305 [ 1 0 0 1 217 609 ] concat
4320 [ 1 0 0 1 26.5 123.5 ] concat
4331 [ 1 -0 -0 1 122 296 ] concat
4346 [ 1 -0 -0 1 122 296 ] concat
4362 [ 1 0 0 1 30.5 123 ] concat
4373 [ 1 -0 -0 1 122 296 ] concat
4388 [ 1 -0 -0 1 122 296 ] concat
4404 [ 1 0 0 1 33.5 123 ] concat
4415 [ 1 -0 -0 1 122 296 ] concat
4430 [ 1 -0 -0 1 122 296 ] concat
4446 [ 1 0 0 1 37.5 123 ] concat
4457 [ 1 -0 -0 1 122 296 ] concat
4472 [ 1 -0 -0 1 122 296 ] concat
4488 [ 1 0 0 1 42 123.5 ] concat
4499 [ 1 -0 -0 1 122 296 ] concat
4514 [ 1 -0 -0 1 122 296 ] concat
4530 [ 1 0 0 1 45 123.5 ] concat
4541 [ 1 -0 -0 1 122 296 ] concat
4556 [ 1 -0 -0 1 122 296 ] concat
4572 [ 1 0 0 1 49 123.5 ] concat
4583 [ 1 -0 -0 1 122 296 ] concat
4598 [ 1 -0 -0 1 122 296 ] concat
4614 [ 1 0 0 1 52.5 123.5 ] concat
4625 [ 1 -0 -0 1 122 296 ] concat
4640 [ 1 -0 -0 1 122 296 ] concat
4656 [ 1 0 0 1 56 123.5 ] concat
4667 [ 1 -0 -0 1 122 296 ] concat
4682 [ 1 -0 -0 1 122 296 ] concat
4698 [ 1 0 0 1 60 123.5 ] concat
4709 [ 1 -0 -0 1 122 296 ] concat
4724 [ 1 -0 -0 1 122 296 ] concat
4740 [ 1 0 0 1 22.5 123.5 ] concat
4751 [ 1 -0 -0 1 122 296 ] concat
4766 [ 1 -0 -0 1 122 296 ] concat
4782 [ 1 0 0 1 159 96 ] concat
4793 [ 1 -0 -0 1 122 296 ] concat
4808 [ 1 -0 -0 1 122 296 ] concat
4824 [ 1 0 0 1 162.5 104 ] concat
4835 [ 1 -0 -0 1 122 296 ] concat
4850 [ 1 -0 -0 1 122 296 ] concat
4866 [ 1 0 0 1 166 110.5 ] concat
4877 [ 1 -0 -0 1 122 296 ] concat
4892 [ 1 -0 -0 1 122 296 ] concat
4908 [ 1 0 0 1 170.5 118.5 ] concat
4919 [ 1 -0 -0 1 122 296 ] concat
4934 [ 1 -0 -0 1 122 296 ] concat
4950 [ 1 0 0 1 174 126.5 ] concat
4961 [ 1 -0 -0 1 122 296 ] concat
4976 [ 1 -0 -0 1 122 296 ] concat
4992 [ 1 0 0 1 177 134 ] concat
5003 [ 1 -0 -0 1 122 296 ] concat
5018 [ 1 -0 -0 1 122 296 ] concat
5034 [ 1 0 0 1 181 141 ] concat
5045 [ 1 -0 -0 1 122 296 ] concat
5060 [ 1 -0 -0 1 122 296 ] concat
5076 [ 1 0 0 1 185 149 ] concat
5087 [ 1 -0 -0 1 122 296 ] concat
5102 [ 1 -0 -0 1 122 296 ] concat
5118 [ 1 0 0 1 188.5 156 ] concat
5129 [ 1 -0 -0 1 122 296 ] concat
5144 [ 1 -0 -0 1 122 296 ] concat
5160 [ 1 0 0 1 191.5 164 ] concat
5171 [ 1 -0 -0 1 122 296 ] concat
5186 [ 1 -0 -0 1 122 296 ] concat
5202 [ 1 0 0 1 156 88.5 ] concat
5213 [ 1 -0 -0 1 122 296 ] concat
5228 [ 1 -0 -0 1 122 296 ] concat
5244 [ 1 0 0 1 151.5 80 ] concat
5255 [ 1 -0 -0 1 122 296 ] concat
5270 [ 1 -0 -0 1 122 296 ] concat
5286 [ 1 0 0 1 148 72.5 ] concat
5297 [ 1 -0 -0 1 122 296 ] concat
5312 [ 1 -0 -0 1 122 296 ] concat
5328 [ 1 0 0 1 192 149 ] concat
5339 [ 1 -0 -0 1 122 296 ] concat
5354 [ 1 -0 -0 1 122 296 ] concat
5370 [ 1 0 0 1 195.5 149 ] concat
5381 [ 1 -0 -0 1 122 296 ] concat
5396 [ 1 -0 -0 1 122 296 ] concat
5412 [ 1 0 0 1 198.5 149 ] concat
5423 [ 1 -0 -0 1 122 296 ] concat
5438 [ 1 -0 -0 1 122 296 ] concat
5454 [ 1 0 0 1 191 135 ] concat
5465 [ 1 -0 -0 1 122 296 ] concat
5480 [ 1 -0 -0 1 122 296 ] concat
5496 [ 1 0 0 1 195 135 ] concat
5507 [ 1 -0 -0 1 122 296 ] concat
5522 [ 1 -0 -0 1 122 296 ] concat
5538 [ 1 0 0 1 199 135 ] concat
5549 [ 1 -0 -0 1 122 296 ] concat
5564 [ 1 -0 -0 1 122 296 ] concat
5580 [ 1 0 0 1 203.5 135 ] concat
5591 [ 1 -0 -0 1 122 296 ] concat
5606 [ 1 -0 -0 1 122 296 ] concat
5622 [ 1 0 0 1 187 141 ] concat
5633 [ 1 -0 -0 1 122 296 ] concat
5648 [ 1 -0 -0 1 122 296 ] concat
5664 [ 1 0 0 1 190 141 ] concat
5675 [ 1 -0 -0 1 122 296 ] concat
5690 [ 1 -0 -0 1 122 296 ] concat
5706 [ 1 0 0 1 181 126.5 ] concat
5717 [ 1 -0 -0 1 122 296 ] concat
5732 [ 1 -0 -0 1 122 296 ] concat
5748 [ 1 0 0 1 185 126.5 ] concat
5759 [ 1 -0 -0 1 122 296 ] concat
5774 [ 1 -0 -0 1 122 296 ] concat
5790 [ 1 0 0 1 189 127 ] concat
5801 [ 1 -0 -0 1 122 296 ] concat
5816 [ 1 -0 -0 1 122 296 ] concat
5832 [ 1 0 0 1 188.5 118.5 ] concat
5843 [ 1 -0 -0 1 122 296 ] concat
5858 [ 1 -0 -0 1 122 296 ] concat
5874 [ 1 0 0 1 192.5 118.5 ] concat
5885 [ 1 -0 -0 1 122 296 ] concat
5900 [ 1 -0 -0 1 122 296 ] concat
5916 [ 1 0 0 1 196.5 118.5 ] concat
5927 [ 1 -0 -0 1 122 296 ] concat
5942 [ 1 -0 -0 1 122 296 ] concat
5958 [ 1 0 0 1 204.5 118.5 ] concat
5969 [ 1 -0 -0 1 122 296 ] concat
5984 [ 1 -0 -0 1 122 296 ] concat
6000 [ 1 0 0 1 178 110.5 ] concat
6011 [ 1 -0 -0 1 122 296 ] concat
6026 [ 1 -0 -0 1 122 296 ] concat
6042 [ 1 0 0 1 199 110.5 ] concat
6053 [ 1 -0 -0 1 122 296 ] concat
6068 [ 1 -0 -0 1 122 296 ] concat
6084 [ 1 0 0 1 213.5 111 ] concat
6095 [ 1 -0 -0 1 122 296 ] concat
6110 [ 1 -0 -0 1 122 296 ] concat
6126 [ 1 0 0 1 184 96 ] concat
6137 [ 1 -0 -0 1 122 296 ] concat
6152 [ 1 -0 -0 1 122 296 ] concat
6168 [ 1 0 0 1 208 95.5 ] concat
6179 [ 1 -0 -0 1 122 296 ] concat
6194 [ 1 -0 -0 1 122 296 ] concat
6210 [ 1 0 0 1 194 156 ] concat
6221 [ 1 -0 -0 1 122 296 ] concat
6236 [ 1 -0 -0 1 122 296 ] concat
6251 [ 1 0 0 1 -36.5 92.5 ] concat
6262 [ 0.5 -0 -0 0.5 174 494 ] concat
6277 [ 0.5 -0 -0 0.5 174 494 ] concat
6292 [ 0.5 -0 -0 0.5 174 494 ] concat
6307 [ 0.5 -0 -0 0.5 174 494 ] concat
6322 [ 0.5 -0 -0 0.5 174 494 ] concat
6337 [ 0.5 -0 -0 0.5 174 494 ] concat
6339 180 116 196 100 Line
6352 [ 0.5 -0 -0 0.5 174 494 ] concat
6354 196 100 212 116 Line
6367 [ 0.5 -0 -0 0.5 174 494 ] concat
6369 212 116 228 116 Line
6382 [ 0.5 -0 -0 0.5 174 494 ] concat
6384 228 116 244 100 Line
6397 [ 0.5 -0 -0 0.5 174 494 ] concat
6399 244 100 260 116 Line
6412 [ 0.5 -0 -0 0.5 174 494 ] concat
6414 260 116 276 100 Line
6427 [ 0.5 -0 -0 0.5 174 494 ] concat
6442 [ 1 0 0 1 112.5 93 ] concat
6453 [ 0.5 -0 -0 0.5 174 494 ] concat
6468 [ 0.5 -0 -0 0.5 174 494 ] concat
6483 [ 0.5 -0 -0 0.5 174 494 ] concat
6498 [ 0.5 -0 -0 0.5 174 494 ] concat
6513 [ 0.5 -0 -0 0.5 174 494 ] concat
6528 [ 0.5 -0 -0 0.5 174 494 ] concat
6530 180 116 196 100 Line
6543 [ 0.5 -0 -0 0.5 174 494 ] concat
6545 196 100 212 116 Line
6558 [ 0.5 -0 -0 0.5 174 494 ] concat
6560 212 116 228 116 Line
6573 [ 0.5 -0 -0 0.5 174 494 ] concat
6575 228 116 244 100 Line
6588 [ 0.5 -0 -0 0.5 174 494 ] concat
6590 244 100 260 116 Line
6603 [ 0.5 -0 -0 0.5 174 494 ] concat
6605 260 116 276 100 Line
6618 [ 0.5 -0 -0 0.5 174 494 ] concat
6635 [ 0.5 -0 -0 0.5 226 494 ] concat
6637 136 476 160 476 Line
6650 [ 0.5 -0 -0 0.5 244 596 ] concat
6652 136 272 160 272 Line
6665 [ 0.5 -0 -0 0.5 226 497 ] concat
6667 136 296 160 296 Line
6680 [ 0.5 -0 -0 0.5 244 554 ] concat
6682 136 272 160 272 Line
6689 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6692 [ 1 0 0 1 297 692 ] concat
6702 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
6705 [ 1 0 0 1 313.5 716 ] concat
6721 [ 0.5 -0 -0 0.5 200 494 ] concat
6723 200 374 200 308 Line
6736 [ 0.5 -0 -0 0.5 200 494 ] concat
6738 200 404 200 470 Line
6751 [ 0.5 -0 -0 0.5 200 494 ] concat
6753 236 452 236 470 Line
6766 [ 0.5 -0 -0 0.5 200 494 ] concat
6768 236 422 236 398 Line
6775 %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-*
6778 [ 1 0 0 1 367 609 ] concat
6794 491 2628 a Fu(Figure)i(4:)30 b(Location)24 b(of)h(P)o(arallelism)f(in)
6795 g(T)-8 b(ypical)25 b(APHID)g(and)g(YBWC*)g(Search)0 2915
6796 y(dently)j(of)g(each)h(other)-5 b(.)41 b(Figure)29 b(3)f(gi)n(v)o(es)f
6797 (an)i(e)o(xample)f(of)g(ho)n(w)g(the)g(tree)h(w)o(ould)f(be)g(di)n
6798 (vided)f(by)h(the)h(APHID)0 3114 y(algorithm.)g(The)23
6799 b(\002gure)h(sho)n(ws)e(us)i(a)f(single-le)n(v)o(el)f(master/sla)n(v)o
6800 (e)g(hierarchy)h(\(multiple)f(le)n(v)o(els)g(are)i(possible\).)0
6801 3314 y(The)k(master)g(process)h(controls)e(the)h(top)g
6802 Fq(d)1511 3278 y Fp(0)1563 3314 y Fu(ply)f(of)i(the)f(game)g(tree,)h
6803 (including)e(the)h(root.)41 b(The)29 b(lea)n(v)o(es)f(of)g(the)0
6804 3513 y(master')-5 b(s)28 b Fq(d)412 3477 y Fp(0)435 3513
6805 y Fu(-ply)h(tree)h(are)g(the)f(pieces)g(of)h(w)o(ork)f(that)g(each)h
6806 (sla)n(v)o(e)e(process)h(e)o(xamines.)43 b(Each)30 b(of)f(the)g
6807 Fq(k)k Fu(sla)n(v)o(e)0 3712 y(processes)c(gets)g(a)g(portion)f(of)h
6808 (the)g(master')-5 b(s)28 b(lea)n(v)o(es)h(to)g(search,)h(implicitly)d
6809 (di)n(viding)g(the)i(remainder)g(of)g(the)0 3912 y(tree)d(as)g(sho)n
6810 (wn)e(in)h(Figure)h(3.)33 b(Note)25 b(that)g(the)g(diagram)h(is)f
6811 (partially)f(misleading)g(in)h(that,)h(for)f(load)h(balancing)0
6812 4111 y(purposes,)e(a)h(sla)n(v)o(e')-5 b(s)24 b(pieces)h(of)f(w)o(ork)h
6813 (are)h(actually)e(distrib)n(uted)f(across)i(the)g(bottom)e(of)i(the)f
6814 (master')-5 b(s)24 b(tree.)146 4310 y(It)31 b(is)g(interesting)f(to)h
6815 (compare)g(APHID)h(against)e(a)h(synchronous)f(parallel)h(algorithm.)49
6816 b(Figure)31 b(4)g(illus-)0 4509 y(trates)22 b(graphically)f(where)i(w)o
6817 (ork)f(is)f(allocated)h(o)o(v)o(er)f(the)h(course)g(of)h(a)f(typical)f
6818 (APHID)i(and)f(YBWC*)h(search.)0 4709 y(Each)g(location)f(mark)o(ed)h
6819 (with)f(an)h Fb(x)f Fu(sho)n(ws)g(where)h(the)g(parallelism)e
6820 (typically)h(tak)o(es)h(place.)30 b(Although)21 b(more)0
6821 4908 y(parallelism)j(could)g(be)h(generated)h(in)e(YBWC*,)i(one)f(must)
6822 f(be)h(careful)h(because)f(each)h Fb(x)e Fu(along)h(the)g(left)g(side)0
6823 5107 y(of)j(the)g(YBWC*)h(tree)f(represents)g(a)h(global)e
6824 (synchronization)f(point,)i(and)g(the)g(rest)g(are)h(local)e
6825 (synchroniza-)0 5306 y(tion)d(points.)1925 5589 y(8)p
6828 9 11 bop 146 100 a Fu(In)23 b(APHID,)g(the)g(master)g(process)f(mak)o
6829 (es)h(repeated)g(searches)g(or)g Fm(passes)f Fu(o)o(v)o(er)g(its)g
6830 (part)h(of)g(the)g(game)f(tree.)0 299 y(The)k(master')-5
6831 b(s)25 b(tree)i(is)f(small)f(and)h(is)f(quickly)g(searched.)35
6832 b(The)27 b(master)e(is)h(responsible)f(for)h(ensuring)g(that)f(the)0
6833 498 y(sla)n(v)o(es)h(determine)g(all)g(of)g(the)h(minimax)e(v)n(alues)g
6834 (required)i(to)f(get)g(a)h Fq(d)p Fu(-ply)f Fq(\013)q(\014)32
6835 b Fu(search)27 b(of)f(the)h(full)f(game)g(tree)0 697
6836 y(\002nished,)h(after)g(which)g(it)f(proceeds,)h(via)g(iterati)n(v)o(e)
6837 e(deepening,)i(to)f(the)h(ne)o(xt)f(search)h(depth)f(repeatedly)h
6838 (until)0 897 y(the)e(time)f(limit)f(e)o(xpires.)146 1096
6839 y(Each)28 b(sla)n(v)o(e)e(searches)h(its)f(pieces)h(of)g(w)o(ork)g
6840 Fl(\()p Fq(d)d Fk(\000)g Fq(d)1968 1060 y Fp(0)1991 1096
6841 y Fl(\))j Fu(plies)f(deep,)i(plus)e(an)o(y)g(search)i(e)o(xtensions)d
6842 (that)h(the)0 1295 y(master)j(requires.)45 b(If)30 b(APHID)g(were)g(a)g
6843 (synchronous)e(algorithm,)h(the)g(sla)n(v)o(es)g(w)o(ould)f(\002nish)h
6844 (their)h(w)o(ork)f(for)0 1494 y(the)23 b(master')-5 b(s)23
6845 b(depth)g Fq(d)g Fu(iteration,)f(and)i(then)f(w)o(ait)g(for)g(the)h(ne)
6846 o(xt)e(iteration)h(\()p Fq(d)16 b Fl(+)h(1)p Fu(\))24
6847 b(to)f(be)o(gin.)29 b(APHID')-5 b(s)23 b(sla)n(v)o(es)0
6848 1694 y(do)g(not)h(sit)f(idle)g(w)o(aiting.)29 b(Instead,)24
6849 b(the)o(y)f(use)g(iterati)n(v)o(e)f(deepening)i(to)f(search)h(their)g
6850 (w)o(ork)f(lists)g(an)g(additional)0 1893 y(ply)30 b(deeper)h(\(and)f
6851 (be)o(yond,)h(if)f(there)h(is)f(time\))f(without)g(con\002rmation)h
6852 (from)g(the)g(master)-5 b(.)47 b(Thus,)31 b(the)f(sla)n(v)o(es)0
6853 2092 y(attempt)c(to)h(determine)f(minimax)g(v)n(alues)g(that)h(may)f
6854 (be)i(necessary)-6 b(,)27 b(in)g(anticipation)e(of)j(the)e(master)h
6855 (process)0 2291 y(asking)g(for)h(them.)38 b(The)27 b(sla)n(v)o(es)g
6856 (continue)g(searching)g(until)f(the)i(master)f(signals)f(that)h(the)h
6857 (search)g(at)f(the)h(root)0 2491 y(of)d(the)g(tree)g(has)f(been)h
6858 (terminated.)146 2690 y(By)39 b(partitioning)d(the)i(tree)h(in)f(this)f
6859 (manner)l(,)k(APHID')-5 b(s)38 b(performance)h(does)f(not)g(rely)g(on)g
6860 (the)g(imple-)0 2889 y(mentation)c(of)h(a)g(global)g(shared)g(memory)f
6861 (or)h(a)h(f)o(ast)f(interconnection)f(netw)o(ork)g(between)h(the)g
6862 (processes.)0 3088 y(This)25 b(mak)o(es)g(the)g(APHID)h(algorithm)e
6863 (suitable)h(for)h(loosely-coupled)e(architectures)h(\(such)h(as)f(a)h
6864 (netw)o(ork)f(of)0 3288 y(w)o(orkstations\),)e(as)i(well)g(as)f
6865 (tightly-coupled)f(architectures.)146 3487 y(This)37
6866 b(section)f(contains)g(a)i(description)e(of)h(the)g(master)g(process)g
6867 (\(Section)g(3.1\),)j(the)d(sla)n(v)o(e)f(processes)0
6868 3686 y(\(Section)g(3.3\),)i(and)d(the)h(APHID)g(table)f(through)g
6869 (which)g(the)h(master)f(and)g(sla)n(v)o(e)g(communicate)g(\(Section)0
6870 3885 y(3.2\).)29 b(Balancing)19 b(the)h(w)o(ork)f(load)h(between)f(the)
6871 h(sla)n(v)o(es)e(is)h(discussed)g(in)g(Section)h(3.4.)28
6872 b(The)20 b(interf)o(ace)g(between)0 4085 y(APHID)25 b(and)g(the)g
6873 (application)e(is)i(described)f(in)h(Section)g(3.5.)0
6874 4380 y Fg(3.1)119 b(The)30 b(APHID)g(Master)0 4646 y
6875 Fu(The)i(master)f(is)g(responsible)f(for)i(ensuring)f(that)g(the)h
6876 (result)f(of)g(a)h Fq(d)p Fu(-ply)f(search)h(is)f(obtained.)51
6877 b(The)31 b(amount)0 4846 y(of)c(w)o(ork)g(retained)g(by)f(the)h(master)
6878 l(,)g Fq(d)1329 4809 y Fp(0)1379 4846 y Fu(ply)-6 b(,)27
6879 b(is)f(automatically)g(determined)g(based)h(on)f(the)h(characteristics)
6880 g(of)0 5045 y(the)f(search)g(tree)g(generated)h(for)f(the)g(root)f
6881 (position)f(and)i(domain-dependent)f(information)f(pro)o(vided)h(by)g
6882 (the)0 5244 y(user)-5 b(.)30 b(Further)25 b(details)g(on)f(the)h
6883 (automatic)f(determination)f(of)i Fq(d)2246 5208 y Fp(0)2294
6884 5244 y Fu(can)g(be)g(found)f(else)n(where)h([2].)1925
6887 10 12 bop 146 100 a Fu(APHID)26 b(completes)d(a)j Fq(d)p
6888 Fu(-ply)e Fq(\013)q(\014)30 b Fu(search)25 b(by)g(repeating)f(the)h
6889 (follo)n(wing)e(steps:)120 407 y(1.)49 b(Ex)o(ecute)37
6890 b(a)h(quick)f(search)h(\(or)g Fm(pass)p Fu(\))f(of)h(the)f
6891 Fq(d)1967 371 y Fp(0)1990 407 y Fu(-ply)g(tree)h(using)f(the)g
6892 (application')-5 b(s)36 b(sequential)h Fq(\013)q(\014)244
6893 606 y Fu(algorithm)23 b(\(where)j Fq(d)1009 570 y Fp(0)1059
6894 606 y Fq(<)i(d)p Fu(\),)d(aided)f(by)h(a)g(transposition)e(table)h
6895 (\(if)h(a)n(v)n(ailable\).)120 888 y(2.)49 b(If)25 b(the)g(search)g
6896 (returns)g(an)g(accurate)g Fq(d)p Fu(-ply)f(v)n(alue,)h(then)f(e)o(xit)
6897 g(the)h(loop.)120 1171 y(3.)49 b(Based)24 b(on)g(the)f(leaf)h(nodes)f
6898 (visited)g(during)g(this)f(pass,)i(report)g(an)o(y)f(changes)g(to)h
6899 (the)f(sla)n(v)o(es')g(w)o(ork)g(lists.)120 1453 y(4.)49
6900 b(W)-8 b(ait)24 b(for)i(ne)n(w)e(information)f(from)i(a)g(sla)n(v)o(e)f
6901 (process.)120 1735 y(5.)49 b(Go)25 b(to)f(step)g(1.)146
6902 2042 y(The)32 b Fq(d)384 2006 y Fp(0)407 2042 y Fu(-ply)g(tree)h(is)e
6903 (not)h(k)o(ept)g(in)f(memory)-6 b(.)51 b(Thus,)34 b(on)d(each)i(pass)f
6904 (the)g(tree)g(is)g(tra)n(v)o(ersed)g(to)g(determine)0
6905 2242 y(an)o(y)g(changes)g(to)f(the)h(w)o(ork)g(required.)53
6906 b(The)32 b(tree)g(is)g(re)o(generated)g(on)g(each)h(pass)f(by)f(the)h
6907 (application')-5 b(s)31 b Fq(\013)q(\014)0 2441 y Fu(algorithm)23
6908 b(and)i(transposition)e(table.)30 b(Since)c Fq(d)1668
6909 2405 y Fp(0)1715 2441 y Fu(is)f(usually)e(small,)h(the)h(cost)f(of)h(a)
6910 g(pass)g(is)f(also)g(small.)146 2640 y(During)e(a)g(pass,)g(when)g(the)
6911 g(master)f(reaches)i(a)f(leaf)h(of)f(the)f Fq(d)2263
6912 2604 y Fp(0)2286 2640 y Fu(-ply)h(tree,)h(an)f(e)n(v)n(aluation)e(of)i
6913 (that)g(node)f(must)0 2839 y(be)h(done.)29 b(If)22 b(the)f(subtree)g
6914 (underneath)g(that)g(node)g(\()p Fq(d)9 b Fk(\000)g Fq(d)1984
6915 2803 y Fp(0)2008 2839 y Fu(\))22 b(is)f(smaller)f(than)h
6916 Fq(g)k Fu(ply)c(\(the)g Fm(minimum)g(gr)o(anularity)0
6917 3039 y Fu(for)j(a)h(piece)f(of)h(parallel)f(w)o(ork\),)g(then)g(the)g
6918 (master)f(searches)i(the)f(remaining)f(\()p Fq(d)d Fk(\000)g
6919 Fq(d)2979 3002 y Fp(0)3002 3039 y Fu(\))k(ply)g(itself.)30
6920 b(Otherwise,)0 3238 y(the)25 b(node)f(is)h(assigned)f(to)g(a)h(sla)n(v)
6921 o(e)f(processor)-5 b(.)146 3437 y(Assuming)32 b(that)h(the)h(master)f
6922 (does)g(not)g(search)h(the)f(tree)h(underneath)g(a)g(gi)n(v)o(en)e
6923 (node)h(\()p Fq(g)47 b Fk(\024)e Fl(\()p Fq(d)28 b Fk(\000)h
6924 Fq(d)3781 3401 y Fp(0)3804 3437 y Fl(\))p Fu(\),)0 3636
6925 y(APHID)c(must)f(determine)h(a)g(v)n(alue)f(with)g(respect)i(to)e(the)h
6926 Fq(\013)q(\014)30 b Fu(search)c(windo)n(w)d(at)i(that)g(node)f(without)
6927 g(further)0 3836 y(search.)60 b(F)o(or)35 b(e)o(xample,)h(an)f
6928 Fq(\013)q(\014)40 b Fu(search)35 b(windo)n(w)e(of)h(\(0,5\))h(says)f
6929 (that)g(the)h Fq(\013)q(\014)k Fu(algorithm)33 b(needs)i(to)f(kno)n(w)0
6930 4035 y(whether)e(the)g(node')-5 b(s)32 b(minimax)e(v)n(alue)i(is)g
6931 Fk(\024)42 b Fl(0)p Fu(,)34 b Fk(\025)42 b Fl(5)p Fu(,)34
6932 b(or)e(the)g(e)o(xact)g(v)n(alue)g(if)g(it)g(lies)g(in)g(between)g(0)g
6933 (and)g(5.)0 4234 y(W)l(ithout)23 b(kno)n(wing)h(which)g(case)h(is)g
6934 (correct,)g(the)g Fq(\013)q(\014)30 b Fu(search)25 b(may)g(gi)n(v)o(e)e
6935 (inaccurate)i(results.)146 4433 y(If)34 b(the)e(sla)n(v)o(e)h(has)f
6936 (already)h(gi)n(v)o(en)f(the)g(master)h(a)g Fl(\()p Fq(d)28
6937 b Fk(\000)h Fq(d)2181 4397 y Fp(0)2204 4433 y Fl(\))p
6938 Fu(-ply)j(search)h(result,)i(that)d(v)n(alue)g(is)h(used.)3740
6939 4397 y Fn(4)3834 4433 y Fu(If)0 4633 y(the)25 b Fl(\()p
6940 Fq(d)d Fk(\000)h Fq(d)409 4596 y Fp(0)432 4633 y Fl(\))p
6941 Fu(-ply)i(result)g(is)g(una)n(v)n(ailable)f(because)h(the)h(sla)n(v)o
6942 (e)e(has)h(not)g(reached)h(that)f(depth)g(of)g(search,)h(or)f(the)0
6943 4832 y Fl(\()p Fq(d)e Fk(\000)h Fq(d)264 4796 y Fp(0)287
6944 4832 y Fl(\))p Fu(-ply)h(result)h(has)g(returned)h(a)f(bound)g(that)g
6945 (yields)f(insuf)n(\002cient)g(information)g(on)h(the)g(minimax)f(v)n
6946 (alue)0 5031 y(with)31 b(respect)i(to)f(the)g Fq(\013)q(\014)37
6947 b Fu(search)c(windo)n(w)-6 b(,)32 b(then)g(the)g(algorithm)e(guesses)i
6948 (at)g(the)g(minimax)f(v)n(alue.)52 b(Going)p 0 5121 1560
6949 4 v 112 5182 a Fj(4)149 5212 y Fi(In)30 b(the)g(implementations)f
6950 (presented)f(here,)k(the)e(deeper)f(ply)h(v)n(alues)g(are)g(not)f(used)
6951 h(e)n(v)o(en)f(if)i(the)o(y)e(are)h(a)n(v)n(ailable.)54
6952 b(This)31 b(is)0 5312 y(discussed)20 b(in)g(Section)g(4.)1900
6955 11 13 bop 0 100 a Fu(back)36 b(to)f(our)h(earlier)g(e)o(xample,)i(a)e
6956 (v)n(alue)f(of)h Fk(\024)49 b Fl(10)35 b Fu(does)g(not)h(yield)f
6957 (useful)g(information)f(at)i(a)g(node)g(with)0 299 y(an)d
6958 Fq(\013)q(\014)39 b Fu(search)33 b(windo)n(w)f(of)h(\(0,5\),)i(hence)f
6959 (a)f(guessed)g(v)n(alue)f(for)h(this)f(node)h(w)o(ould)g(be)g(used)f
6960 (until)g(a)i(sla)n(v)o(e)0 498 y(could)24 b(return)h(better)f
6961 (information.)30 b(An)o(y)23 b(node)i(where)g(APHID)g(has)g(to)f(guess)
6962 g(at)h(the)f(v)n(alue)g(is)h(mark)o(ed)f(as)h(an)0 697
6963 y Fm(uncertain)f Fu(node.)146 897 y(F)o(or)j(uncertain)g(nodes,)g
6964 (information)e(gathered)i(from)g(both)f(pre)n(vious)f(searches)j(and)f
6965 (the)f(current)i(search)0 1096 y(is)23 b(used)g(to)f(determine)h(a)h
6966 (guessed)e(v)n(alue.)30 b(The)23 b(guessed)g(v)n(alue)f(is)h(chosen)g
6967 (so)g(that)f(it)h(will)f(not)h(alter)g(the)g(shape)0
6968 1295 y(or)e(ordering)g(of)h(mo)o(v)o(es)d(within)h(the)h(game)g(tree)g
6969 (until)f(ne)n(w)h(information)f(is)h(recei)n(v)o(ed)g(from)g(a)g(sla)n
6970 (v)o(e)g(processor)-5 b(.)0 1494 y(Details)24 b(of)h(the)g(guessed)f
6971 (score)h(algorithm)e(are)j(pro)o(vided)e(in)g(Appendix)g(A.)146
6972 1694 y(As)c(minimax)f(v)n(alues)g(get)i(back)o(ed)f(up)g(the)g
6973 Fq(d)1681 1657 y Fp(0)1704 1694 y Fu(-ply)g(tree)h(during)e(the)h
6974 (search,)i(the)e(master)g(maintains)f(a)i(count)0 1893
6975 y(of)26 b(ho)n(w)f(man)o(y)g(uncertain)h(nodes)f(ha)n(v)o(e)h(been)g(e)
6976 n(v)n(aluated.)33 b(When)26 b(the)g(master)g(has)g(no)f(uncertain)h(e)n
6977 (v)n(aluations)0 2092 y(in)e(its)g Fq(d)272 2056 y Fp(0)295
6978 2092 y Fu(-ply)h(tree,)g(the)g(v)n(alue)f(of)h(the)f(complete)h
6979 Fq(d)p Fu(-ply)f(tree)h(is)f(accurate,)i(and)f(APHID)g(e)o(xits)f(the)g
6980 (loop.)146 2291 y(Sometimes,)f(the)g Fl(\()p Fq(d)17
6981 b Fk(\000)g Fq(d)1034 2255 y Fp(0)1056 2291 y Fl(\))p
6982 Fu(-ply)23 b(result)g(may)g(be)g(insuf)n(\002cient)f(for)i(the)f
6983 (master)g(to)g(determine)g(the)g(minimax)0 2491 y(v)n(alue.)47
6984 b(A)30 b(further)h(search)g(at)f(the)h(same)f(depth,)h(with)f(a)g(dif)n
6985 (ferent)g(search)h(windo)n(w)-6 b(,)30 b(is)g(required)h(when)f(this)0
6986 2690 y(happens.)k(The)26 b(master)f(sends)h(a)g(message)g(to)f(the)h
6987 (sla)n(v)o(e)g(responsible)e(for)j(searching)f(the)f(node)h(that)g(it)f
6988 (needs)0 2889 y(to)31 b(re-e)o(x)o(ecute)g(the)h(search)g(with)e(a)i
6989 (re)n(vised)f(search)h(windo)n(w)-6 b(.)49 b(The)31 b(sla)n(v)o(e)g
6990 (will)g(e)n(v)o(entually)e(return)j(updated)0 3088 y(information)23
6991 b(that)g(is)h(consistent)e(with)i(both)f(the)h(original)f(information)f
6992 (and)i(the)g(search)h(windo)n(w)d(requested.)146 3288
6993 y(APHID)e(solv)o(es)e(one)h(of)g(the)g(problems)f(that)h(synchronous)f
6994 (algorithms)f(ha)n(v)o(e)i(with)f(respect)h(to)g(initializing)0
6995 3487 y(parallelism)33 b(incorrectly)h(at)g(a)g(potential)f(CUT)h(node.)
6996 58 b(Most)33 b(synchronous)g(algorithms)f(use)i(application-)0
6997 3686 y(dependent)j(information)g(to)g(determine)h(when)g(to)f(initiate)
6998 g(parallelism.)69 b(By)38 b(using)f(the)h(guessed)f(scores)0
6999 3885 y(when)d(accurate)h(information)d(is)h(not)h(a)n(v)n(ailable,)h
7000 (the)f(APHID)g(algorithm)e(automatically)h(determines)g(if)h(a)0
7001 4085 y(subsequent)26 b(child)h(is)g(lik)o(ely)g(to)g(generate)h(a)g
7002 (cut-of)n(f)g(at)f(a)h(f)o(ailed)g(CUT)g(node.)38 b(Nodes)28
7003 b(which)f(are)h(pruned)f(by)0 4284 y(the)f(master)l(,)g(using)f(either)
7004 h(real)g(or)g(guessed)g(scores,)g(are)h(not)e(searched)i(by)f(the)f
7005 (sla)n(v)o(es.)34 b(If)26 b(it)g(seems)f(unlik)o(ely)0
7006 4483 y(that)g(the)f(node)h(will)f(be)h(pruned)g(\(e.g.)31
7007 b(due)25 b(to)g(lo)n(w)f(real/guessed)h(v)n(alues\),)f(then)g(all)h
7008 (children)g(are)g(visited)f(and)0 4682 y(the)e(w)o(ork)h(w)o(ould)e(be)
7009 i(initiated)e(in)h(parallel.)30 b(This)22 b(is)g(all)g(handled)g
7010 (implicitly)e(in)i(an)h(application-independent)0 4882
7011 y(w)o(ay)i(by)f(the)h Fq(\013)q(\014)30 b Fu(routine.)1900
7015 15345564 14208860 8420065 17234821 28417720 35653713 startTexFig
7017 %%BeginDocument: pics/aphid-snapshot.ps
7022 /IdrawDict 51 dict def
7026 dup dup findfont dup length dict begin
7027 { 1 index /FID ne { def }{ pop pop } ifelse } forall
7028 /Encoding ISOLatin1Encoding def
7029 currentdict end definefont
7032 /ISOLatin1Encoding [
7033 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
7034 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
7035 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
7036 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
7037 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
7038 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
7039 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
7040 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
7041 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
7042 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
7043 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
7044 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
7045 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
7046 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
7047 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
7048 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
7049 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
7050 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
7051 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
7052 /guillemotright/onequarter/onehalf/threequarters/questiondown
7053 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
7054 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
7055 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
7056 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
7057 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
7058 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
7059 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
7060 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
7061 /yacute/thorn/ydieresis
7063 /Helvetica reencodeISO def
7066 /numGraphicParameters 17 def
7067 /stringLimit 65535 def
7071 numGraphicParameters dict begin
7080 dup type /nulltype eq {
7082 false /brushRightArrow idef
7083 false /brushLeftArrow idef
7084 true /brushNone idef
7086 /brushDashOffset idef
7087 /brushDashArray idef
7088 0 ne /brushRightArrow idef
7089 0 ne /brushLeftArrow idef
7091 false /brushNone idef
7113 dup type /nulltype eq {
7114 pop true /patternNone idef
7117 /patternGrayLevel idef
7120 /patternGrayLevel idef
7122 false /patternNone idef
7131 0 0 0 0 0 0 1 1 true subspline
7133 0 0 0 0 1 1 2 2 false subspline
7136 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
7138 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
7140 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
7141 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
7142 brushNone not { istroke } if
7144 n 2 sub dup n 1 sub dup rightarrow
7147 } dup 0 4 dict put def
7152 patternNone not { ifill } if
7153 brushNone not { istroke } if
7161 n 1 sub dup 0 0 1 1 2 2 true subspline
7164 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
7166 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
7167 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
7168 patternNone not { ifill } if
7169 brushNone not { istroke } if
7174 } dup 0 4 dict put def
7183 patternNone not { ifill } if
7184 brushNone not { istroke } if
7186 } dup 0 1 dict put def
7192 x 0 get y 0 get moveto
7193 x 1 get y 1 get lineto
7194 brushNone not { istroke } if
7198 } dup 0 4 dict put def
7205 x 0 get y 0 get moveto
7208 x i get y i get lineto
7210 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
7211 brushNone not { istroke } if
7213 n 2 sub dup n 1 sub dup rightarrow
7216 } dup 0 4 dict put def
7225 patternNone not { ifill } if
7226 brushNone not { istroke } if
7241 patternNone not { ifill } if
7242 brushNone not { istroke } if
7244 } dup 0 4 dict put def
7251 dup where { pop pop pop } { exch def } ifelse
7257 patternGrayLevel -1 ne {
7258 fgred bgred fgred sub patternGrayLevel mul add
7259 fggreen bggreen fggreen sub patternGrayLevel mul add
7260 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
7264 originalCTM setmatrix
7265 pathbbox /t exch def /r exch def /b exch def /l exch def
7266 /w r l sub ceiling cvi def
7267 /h t b sub ceiling cvi def
7268 /imageByteWidth w 8 div ceiling cvi def
7270 bgred bggreen bgblue setrgbcolor
7272 fgred fggreen fgblue setrgbcolor
7274 l b translate w h scale
7275 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
7280 } dup 0 8 dict put def
7284 brushDashOffset -1 eq {
7288 brushDashArray brushDashOffset setdash
7289 fgred fggreen fgblue setrgbcolor
7291 brushWidth setlinewidth
7292 originalCTM setmatrix
7300 fgred fggreen fgblue setrgbcolor
7301 /fontDict printFont printSize scalefont dup setfont def
7302 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
7303 transform exch pop def
7304 /vertoffset 1 printSize sub descender sub def {
7305 0 vertoffset moveto show
7306 /vertoffset vertoffset printSize sub def
7310 } dup 0 3 dict put def
7313 /patternByteLength patternString length def
7314 /patternHeight patternByteLength 8 mul sqrt cvi def
7315 /patternWidth patternHeight def
7316 /patternByteWidth patternWidth 8 idiv def
7317 /imageByteMaxLength imageByteWidth imageHeight mul
7318 stringLimit patternByteWidth sub min def
7319 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
7320 patternHeight mul patternHeight max def
7321 /imageHeight imageHeight imageMaxHeight sub store
7322 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
7323 0 1 imageMaxHeight 1 sub {
7325 /patternRow y patternByteWidth mul patternByteLength mod def
7326 /patternRowString patternString patternRow patternByteWidth getinterval def
7327 /imageRow y imageByteWidth mul def
7328 0 patternByteWidth imageByteWidth 1 sub {
7330 imageString imageRow x add patternRowString putinterval
7335 } dup 0 12 dict put def
7338 dup 3 2 roll dup 4 3 roll lt { exch } if pop
7342 dup 3 2 roll dup 4 3 roll gt { exch } if pop
7354 } dup 0 4 dict put def
7362 x0 2 mul x1 add 3 div
7363 y0 2 mul y1 add 3 div
7365 } dup 0 4 dict put def
7369 /movetoNeeded exch def
7370 y exch get /y3 exch def
7371 x exch get /x3 exch def
7372 y exch get /y2 exch def
7373 x exch get /x2 exch def
7374 y exch get /y1 exch def
7375 x exch get /x1 exch def
7376 y exch get /y0 exch def
7377 x exch get /x0 exch def
7378 x1 y1 x2 y2 thirdpoint
7381 x2 y2 x1 y1 thirdpoint
7384 x1 y1 x0 y0 thirdpoint
7388 x2 y2 x3 y3 thirdpoint
7392 movetoNeeded { p0x p0y moveto } if
7393 p1x p1y p2x p2y p3x p3y curveto
7395 } dup 0 17 dict put def
7409 fgred fggreen fgblue setrgbcolor
7410 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
7414 dup 3 -1 roll dup 4 1 roll exch
7418 exch dup 3 1 roll exch lineto
7421 bgred bggreen bgblue setrgbcolor
7427 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
7433 transform originalCTM itransform
7436 transform originalCTM itransform
7439 /dy tipy taily sub def
7440 /dx tipx tailx sub def
7441 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
7443 originalCTM setmatrix
7447 arrowHeight neg arrowWidth 2 div moveto
7449 arrowHeight neg arrowWidth 2 div neg lineto
7451 originalCTM setmatrix
7452 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
7454 /padtail brushWidth 2 div def
7458 arrowHeight padtip add padtail add arrowHeight div dup scale
7463 originalCTM setmatrix
7471 } dup 0 9 dict put def
7475 arrowHeight neg arrowWidth 2 div moveto
7477 arrowHeight neg arrowWidth 2 div neg lineto
7482 y exch get /taily exch def
7483 x exch get /tailx exch def
7484 y exch get /tipy exch def
7485 x exch get /tipx exch def
7486 brushLeftArrow { tipx tipy tailx taily arrowhead } if
7488 } dup 0 4 dict put def
7492 y exch get /tipy exch def
7493 x exch get /tipx exch def
7494 y exch get /taily exch def
7495 x exch get /tailx exch def
7496 brushRightArrow { tipx tipy tailx taily arrowhead } if
7498 } dup 0 4 dict put def
7501 %I Idraw 10 Grid 6 6
7511 [ 0.799705 0 0 0.799705 0 0 ] concat
7512 /originalCTM matrix currentmatrix def
7521 [ 1 0 0 1 5.99997 0 ] concat
7526 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
7529 [ 1 0 0 1 342 674 ] concat
7543 [ 1 0 0 1 8 26 ] concat
7548 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
7551 [ 1 0 0 1 315 543.5 ] concat
7567 [ 0.5 -0 -0 0.5 278 428 ] concat
7581 [ 1 0 0 1 -4 26 ] concat
7592 [ 0.5 -0 -0 0.5 278 428 ] concat
7600 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
7603 [ 1 0 0 1 339 543.5 ] concat
7619 [ 1 0 0 1 -10 26 ] concat
7630 [ 0.5 -0 -0 0.5 278 428 ] concat
7638 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
7641 [ 1 0 0 1 357 544 ] concat
7657 [ 1 0 0 1 -16 26 ] concat
7668 [ 0.5 -0 -0 0.5 278 428 ] concat
7676 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
7679 [ 1 0 0 1 375 544 ] concat
7695 [ 1 0 0 1 -22 26 ] concat
7706 [ 0.5 -0 -0 0.5 278 428 ] concat
7714 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
7717 [ 1 0 0 1 393 544 ] concat
7733 [ 1 0 0 1 104 26 ] concat
7744 [ 0.5 -0 -0 0.5 278 428 ] concat
7752 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
7755 [ 1 0 0 1 291 543.5 ] concat
7771 [ 1 0 0 1 -28 26 ] concat
7782 [ 0.5 -0 -0 0.5 278 428 ] concat
7790 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
7793 [ 1 0 0 1 411 544 ] concat
7811 [ 0.5 -0 -0 0.5 278 428 ] concat
7826 [ 0.5 -0 -0 0.5 278 428 ] concat
7841 [ 0.5 -0 -0 0.5 278 428 ] concat
7843 164 452 272 260 Line
7854 [ 1 0 0 1 -71.5 99 ] concat
7865 [ 0.5 -0 -0 0.5 278 428 ] concat
7873 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
7876 [ 1 0 0 1 428.5 544 ] concat
7888 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
7891 [ 1 0 0 1 284 612.5 ] concat
7907 [ 0.5 -0 -0 0.5 226 395 ] concat
7909 148 518 100 518 Line
7922 [ 0.5 -0 -0 0.5 226 395 ] concat
7924 148 326 100 326 Line
7937 [ 0.5 -0 -0 0.5 226 395 ] concat
7939 124 446 124 506 Line
7952 [ 0.5 -0 -0 0.5 226 395 ] concat
7954 124 410 124 338 Line
7967 [ 1 0 0 1 18 -24 ] concat
7978 [ 0.5 -0 -0 0.5 278 428 ] concat
7986 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
7989 [ 1 0 0 1 339 543.5 ] concat
8005 [ 1 0 0 1 84 -24 ] concat
8016 [ 0.5 -0 -0 0.5 278 428 ] concat
8024 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8027 [ 1 0 0 1 357 544 ] concat
8043 [ 1 0 0 1 -108 -24 ] concat
8054 [ 0.5 -0 -0 0.5 278 428 ] concat
8062 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8065 [ 1 0 0 1 375 544 ] concat
8081 [ 1 0 0 1 0 -24 ] concat
8092 [ 0.5 -0 -0 0.5 278 428 ] concat
8100 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8103 [ 1 0 0 1 393 544 ] concat
8119 [ 1 0 0 1 66 -24 ] concat
8130 [ 0.5 -0 -0 0.5 278 428 ] concat
8138 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8141 [ 1 0 0 1 411 544 ] concat
8157 [ 1 0 0 1 -84 -24 ] concat
8162 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8165 [ 1 0 0 1 315 543.5 ] concat
8181 [ 0.5 -0 -0 0.5 278 428 ] concat
8195 [ 1 0 0 1 12 -24 ] concat
8206 [ 0.5 -0 -0 0.5 278 428 ] concat
8214 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8217 [ 1 0 0 1 291 543.5 ] concat
8235 [ 0.458861 0 0 0.489848 235.544 397.7 ] concat
8237 232 170 388 266 Rect
8249 [ 0.815325 0 0 0.489848 236.845 397.7 ] concat
8251 232 170 364 266 Rect
8263 [ 1.21519 0 0 0.046875 83.0438 492.703 ] concat
8265 100 241 376 241 Line
8272 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8275 [ 1 0 0 1 162 515 ] concat
8285 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8288 [ 1 0 0 1 162 503 ] concat
8298 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8301 [ 1 0 0 1 222 497 ] concat
8311 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8314 [ 1 0 0 1 258 497 ] concat
8324 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8327 [ 1 0 0 1 297.5 497 ] concat
8343 [ 0.5 0 0 0.5 148 395 ] concat
8345 136 170 352 266 Rect
8351 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8354 [ 1 0 0 1 348 497 ] concat
8364 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8367 [ 1 0 0 1 468 497 ] concat
8383 [ 1 0 0 1 130 131 ] concat
8398 [ 1 0 0 1 130 131 ] concat
8400 140 331 170 235 Line
8413 [ 1 0 0 1 130 131 ] concat
8428 [ 1 0 0 1 130 131 ] concat
8430 110 229 116 217 Line
8443 [ 1 0 0 1 130 131 ] concat
8445 116 217 122 247 Line
8458 [ 1 0 0 1 130 131 ] concat
8460 122 247 140 235 Line
8473 [ 1 0 0 1 130 131 ] concat
8475 140 235 146 247 Line
8488 [ 1 0 0 1 130 131 ] concat
8490 146 247 152 229 Line
8503 [ 1 0 0 1 130 131 ] concat
8505 152 229 158 247 Line
8518 [ 1 0 0 1 130 131 ] concat
8520 158 247 170 235 Line
8533 [ 0.5 0 0 0.5 234 263 ] concat
8535 288 398 204 194 Line
8548 [ 0.5 0 0 0.5 234 263 ] concat
8550 204 194 240 218 Line
8563 [ 0.5 0 0 0.5 234 263 ] concat
8565 240 218 252 230 Line
8578 [ 0.5 0 0 0.5 234 263 ] concat
8580 252 230 264 218 Line
8593 [ 0.5 0 0 0.5 234 263 ] concat
8595 264 218 276 182 Line
8608 [ 0.5 0 0 0.5 234 263 ] concat
8610 276 182 288 206 Line
8623 [ 0.5 0 0 0.5 234 263 ] concat
8625 288 206 300 230 Line
8638 [ 0.5 0 0 0.5 234 263 ] concat
8640 300 230 312 206 Line
8653 [ 0.5 0 0 0.5 234 263 ] concat
8655 312 206 324 230 Line
8668 [ 0.5 0 0 0.5 234 263 ] concat
8670 288 398 348 230 Line
8683 [ 0.5 0 0 0.5 234 263 ] concat
8685 324 230 348 230 Line
8698 [ 0.5 0 0 0.5 338 230 ] concat
8700 188 248 212 284 Line
8713 [ 0.5 0 0 0.5 338 230 ] concat
8715 212 284 236 248 Line
8728 [ 0.5 0 0 0.5 338 230 ] concat
8730 236 248 248 296 Line
8743 [ 0.5 0 0 0.5 338 230 ] concat
8745 248 296 272 260 Line
8758 [ 0.5 0 0 0.5 338 230 ] concat
8760 272 260 284 296 Line
8773 [ 0.5 0 0 0.5 338 230 ] concat
8775 284 296 308 272 Line
8788 [ 0.5 0 0 0.5 338 230 ] concat
8790 308 272 320 296 Line
8803 [ 0.5 0 0 0.5 338 230 ] concat
8805 260 464 320 296 Line
8818 [ 0.5 0 0 0.5 338 230 ] concat
8820 260 464 188 248 Line
8827 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8830 [ 1 0 0 1 246 341 ] concat
8840 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8843 [ 1 0 0 1 354 341 ] concat
8853 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8856 [ 1 0 0 1 444 341 ] concat
8870 [ 1 0 0 1 35.5 -97.5 ] concat
8881 [ 0.5 -0 -0 0.5 278 428 ] concat
8889 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8892 [ 1 0 0 1 339 543.5 ] concat
8908 [ 1 0 0 1 54 -97 ] concat
8919 [ 0.5 -0 -0 0.5 278 428 ] concat
8927 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8930 [ 1 0 0 1 411 544 ] concat
8946 [ 1 0 0 1 -24.5 -99 ] concat
8957 [ 0.5 -0 -0 0.5 278 428 ] concat
8965 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
8968 [ 1 0 0 1 291 543.5 ] concat
8986 [ 0.5 0 0 0.5 130 296 ] concat
8988 100 320 148 320 Line
9001 [ 0.5 0 0 0.5 130 296 ] concat
9003 100 164 148 164 Line
9010 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
9013 [ 1 0 0 1 180.5 421.5 ] concat
9029 [ 0.5 0 0 0.5 130 296 ] concat
9031 124 224 124 176 Line
9044 [ 0.5 0 0 0.5 130 296 ] concat
9046 124 260 124 308 Line
9053 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
9056 [ 1 0 0 1 384 497 ] concat
9070 [ 1 0 0 1 60 -36 ] concat
9081 [ 0.5 -0 -0 0.5 278 362 ] concat
9089 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
9092 [ 1 0 0 1 453 555.5 ] concat
9104 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
9107 [ 1 0 0 1 504 497 ] concat
9117 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
9120 [ 1 0 0 1 432 497 ] concat
9136 893 2003 a Fu(Figure)25 b(5:)30 b(A)25 b(Snapshot)f(of)h(APHID)g
9137 (Search)h(in)f(Operation)0 2291 y Fg(3.2)119 b(The)30
9138 b(APHID)g(T)-11 b(able)0 2557 y Fu(If)35 b(a)g(leaf)h(node)e(is)h
9139 (visited)e(by)i(the)g(master)f(for)h(the)g(\002rst)g(time,)h(it)f(is)f
9140 (allocated)g(to)h(a)g(sla)n(v)o(e)f(process.)61 b(This)0
9141 2756 y(information)33 b(is)i(recorded)g(in)g(the)f Fm(APHID)h(table)f
9142 Fu(that)h(is)f(shared)h(by)f(all)h(processes.)61 b(Figure)35
9143 b(5)f(sho)n(ws)g(an)0 2956 y(e)o(xample)24 b(of)h(ho)n(w)f(the)g(APHID)
9144 i(table)e(w)o(ould)g(be)h(or)n(ganized)g(at)g(a)g(gi)n(v)o(en)e(point)h
9145 (in)g(time.)146 3155 y(The)k(table)f(is)g(replicated)h(on)f(the)g
9146 (master)g(and)h(sla)n(v)o(e)f(processes.)38 b(Ho)n(we)n(v)o(er)l(,)27
9147 b(each)h(sla)n(v)o(e)f(only)g(kno)n(ws)f(of)0 3354 y(the)i(entries)h
9148 (rele)n(v)n(ant)e(to)h(it)g(within)f(the)i(table.)41
9149 b(F)o(or)29 b(e)o(xample,)f(in)g(Figure)h(5,)g(sla)n(v)o(e)f(1)g(only)g
9150 (kno)n(ws)f(about)h(the)0 3553 y(entries)23 b(for)h(1,)f(4)g(and)g(7.)
9151 30 b(The)24 b(master)l(,)f(which)g(is)g(responsible)f(for)h(distrib)n
9152 (uting)e(the)i(w)o(ork)g(to)g(all)g(of)h(its)e(sla)n(v)o(es,)0
9153 3753 y(has)j(copies)f(of)h(e)n(v)o(ery)f(table)h(entry)-6
9154 b(.)146 3952 y(The)39 b(master)f(and)h(sla)n(v)o(e)f(only)g(read)h
9155 (their)f(local)h(copies)f(of)h(the)f(information;)44
9156 b(there)39 b(are)g(no)g(e)o(xplicit)0 4151 y(messages)19
9157 b(sent)h(between)g(them)f(asking)g(for)h(information.)28
9158 b(The)20 b(entries)f(in)h(the)g(APHID)g(table)g(are)g(partitioned)0
9159 4350 y(into)k(tw)o(o)g(parts:)30 b(one)25 b(which)f(only)g(the)g
9160 (master)h(can)g(write)f(to,)g(and)h(one)g(which)f(only)g(the)g(sla)n(v)
9161 o(e)g(that)g(has)h(been)0 4550 y(assigned)i(that)g(piece)h(of)g(w)o
9162 (ork)g(can)g(write)g(to.)39 b(An)o(y)27 b(attempt)f(to)i(write)f(into)g
9163 (the)h(table)f(generates)h(a)g(message)0 4749 y(that)c(informs)g(the)h
9164 (master)f(or)h(sla)n(v)o(e)f(process)h(to)f(update)h(its)f(replicated)h
9165 (cop)o(y)f(of)h(the)g(table)f(entry)-6 b(.)146 4948 y(The)33
9166 b(master')-5 b(s)32 b(half)h(of)g(the)g(table)g(is)g(illustrated)e(abo)
9167 o(v)o(e)h(the)h(dashed)g(line)f(in)h(Figure)g(5.)55 b(F)o(or)33
9168 b(each)h(leaf)0 5147 y(visited)26 b(by)i(the)f(master)l(,)h(there)g(is)
9169 f(an)g(entry)h(in)f(the)g(APHID)h(table.)39 b(Information)27
9170 b(maintained)f(on)h(the)h(lea)n(v)o(es)1900 5589 y(12)p
9173 13 15 bop 0 100 a Fu(includes)20 b(the)g(mo)o(v)o(es)f(required)i(to)f
9174 (generate)h(the)f(leaf)h(positions)e(from)h(the)g(root)h
9175 Fb(R)p Fu(,)f(the)g(approximate)g(location)0 299 y(of)27
9176 b(the)f(leaf)i(in)e(the)h(tree)g(\(which)f(is)h(used)f(by)h(the)f(sla)n
9177 (v)o(e)g(to)h(prioritize)f(w)o(ork\),)h(whether)g(this)e(leaf)j(w)o(as)
9178 e(visited)0 498 y(on)e(the)g(last)f(pass)h(that)g(the)g(master)g(e)o(x)
9179 o(ecuted,)f(and)h(the)g(number)f(of)i(the)f(sla)n(v)o(e)f(that)h(the)g
9180 (leaf)g(w)o(as)g(assigned)g(to.)146 697 y(In)32 b(our)f(e)o(xample,)i
9181 (roughly)d(the)i(same)f(number)g(of)h(lea)n(v)o(es)f(ha)n(v)o(e)g(been)
9182 h(allocated)f(to)g(each)h(sla)n(v)o(e.)50 b(Note)0 897
9183 y(that)22 b(there)h(is)g(an)g(additional)e(leaf,)j(8,)f(that)f(is)g
9184 (not)g(represented)i(in)e(the)h(master')-5 b(s)21 b Fq(d)2862
9185 860 y Fp(0)2885 897 y Fu(-ply)i(search)g(tree.)31 b(This)22
9186 b(leaf)0 1096 y(node)i(w)o(as)g(visited)f(on)h(a)g(pre)n(vious)f(pass)h
9187 (by)g(the)g(master)l(,)g(b)n(ut)f(w)o(as)h(not)g(visited)f(on)h(the)g
9188 (latest)f(pass.)30 b(Ho)n(we)n(v)o(er)l(,)0 1295 y(the)e(information)e
9189 (that)h(the)h(sla)n(v)o(e)f(has)h(generated)g(about)f(this)g(node)h
9190 (may)f(be)h(needed)g(in)g(a)g(later)g(pass,)g(and)g(is)0
9191 1494 y(not)23 b(deleted)g(from)g(the)g(table.)30 b(Lea)n(v)o(es)23
9192 b(are)h(initially)d(allocated)i(to)g(the)g(sla)n(v)o(es)f(in)h(a)h
9193 (round-robin)e(manner)l(,)h(and)0 1694 y(may)h(mo)o(v)o(e)g(due)h(to)f
9194 (load)g(balancing)h(\(as)g(described)f(in)h(Section)g(3.4\).)146
9195 1893 y(The)i(sla)n(v)o(e')-5 b(s)25 b(part)h(of)h(the)f(table)g(\(the)g
9196 (area)h(belo)n(w)f(the)g(dashed)g(line\))g(contains)g(information)f(on)
9197 h(the)g(min-)0 2092 y(imax)31 b(v)n(alue)g(at)g(v)n(arious)g(depths)f
9198 (of)i(search.)51 b(The)32 b(best)f(information)f(\(with)h(respect)h(to)
9199 f(search)h(depth\))f(and)0 2291 y(the)e(ply)g(to)g(which)g(the)h(leaf)g
9200 (w)o(as)f(e)o(xamined)g(is)g(gi)n(v)o(en)f(underneath)h(each)h(leaf)g
9201 (node.)45 b(F)o(or)29 b(leaf)h(1,)g(the)g(score)0 2491
9202 y(returned)i(is)f(-1)h(with)f(a)h(search)g(depth)f(of)h(4.)51
9203 b(Leaf)33 b(3)e(illustrates)g(that)g(the)g(score)h(information)f
9204 (returned)g(by)0 2690 y(the)25 b(sla)n(v)o(e)f(may)h(not)g(al)o(w)o
9205 (ays)g(be)g(an)g(e)o(xact)g(number)-5 b(.)31 b(The)25
9206 b(sla)n(v)o(es)f(maintain)g(upper)h(and)g(lo)n(wer)f(bounds)g(on)h(the)
9207 0 2889 y(minimax)g(v)n(alue)h(of)h(each)h(node)e(for)h(each)h(ply)e(of)
9208 h(search)g(depth.)2306 2853 y Fn(5)2382 2889 y Fu(This)f(information)f
9209 (is)i(determined)f(by)g(the)0 3088 y(minimax)31 b(v)n(alue)h(returned)h
9210 (and)g(the)g(search)g(windo)n(w)f(used)g(by)h(the)g(sla)n(v)o(e.)54
9211 b(F)o(or)33 b(simplicity)-6 b(,)32 b(only)g(a)h(single)0
9212 3288 y(bound)24 b(is)g(sho)n(wn.)146 3487 y(The)32 b(APHID)f(table)g
9213 (data)h(structure)e(must)g(support)h(tw)o(o)f(time)h(critical)g
9214 (operations:)42 b(\002nding)31 b(a)h(node)e(in)0 3686
9215 y(the)i(table,)i(and)e(adding)f(a)h(node)g(to)g(the)g(table.)52
9216 b(Hence,)35 b(the)d(APHID)g(table)g(has)g(been)g(implemented)f(as)h(an)
9217 0 3885 y(e)o(xtendible)f(hash)g(table.)52 b(Applications)31
9218 b(that)g(w)o(ould)g(use)h(APHID)h(generally)f(ha)n(v)o(e)f(a)i
9219 (transposition)d(table;)0 4085 y(the)21 b(transposition)e(table)i
9220 (hashing)g(function)f(can)i(also)f(be)h(used)f(to)g(\002nd)g(and)g(add)
9221 h(lea)n(v)o(es)e(to)h(the)h(APHID)f(table.)0 4380 y Fg(3.3)119
9222 b(The)30 b(APHID)g(Sla)m(v)o(e)0 4646 y Fu(A)20 b(sla)n(v)o(e)f
9223 (process)g(essentially)f(e)o(x)o(ecutes)h(the)g(same)h(code)f(that)h(a)
9224 f(sequential)g Fq(\013)q(\014)25 b Fu(searcher)c(w)o(ould.)28
9225 b(The)19 b(sla)n(v)o(e')-5 b(s)0 4846 y(main)24 b(loop)g(simply)f
9226 (repeats)i(the)g(follo)n(wing)e(steps)h(until)g(the)g(master)h(tells)f
9227 (it)g(that)g(the)h(search)g(is)g(complete:)p 0 4935 1560
9228 4 v 112 4996 a Fj(5)149 5027 y Fi(Note)c(that)f(tw)o(o)g(bounds)f(may)h
9229 (be)g(needed.)j(A)e(search)f(may)g(return)f(an)h(upper)f(bound)f(on)i
9230 (a)g(score.)25 b(That)20 b(node)f(may)h(ha)n(v)o(e)f(to)i(be)0
9231 5126 y(re-searched)e(to)i(get)g(more)e(information)g(on)h(its)i(score.)
9232 k(The)21 b(second)e(search)i(may)f(return)g(a)h(lo)n(wer)f(bound)f
9233 (that)i(is)g(good)f(enough)e(to)0 5226 y(cause)i(a)h(cutof)n(f.)1900
9236 14 16 bop 120 100 a Fu(1.)49 b(Look)24 b(in)h(its)f(local)g(cop)o(y)h
9237 (of)g(the)f(APHID)i(table)e(and)h(\002nd)g(the)f(best)h(node)f(to)h
9238 (search.)120 382 y(2.)49 b(Ex)o(ecute)24 b(the)h(search.)120
9239 664 y(3.)49 b(Report)25 b(the)g(result)f(back)h(to)f(the)h(master)f
9240 (\(fetching)h(an)o(y)f(update)h(to)f(its)g(APHID)i(table)e(in)h
9241 (return\).)120 946 y(4.)49 b(Go)25 b(to)f(step)g(1.)146
9242 1254 y(A)g(sla)n(v)o(e)f(chooses)g(the)h(\223best\224)f(node)h(based)f
9243 (on)h(tw)o(o)f(criteria:)30 b(the)24 b(depth)f(to)g(which)g(the)h(node)
9244 f(has)h(already)0 1453 y(been)35 b(searched)g(by)g(the)f(sla)n(v)o(e,)j
9245 (and)d(the)h(node')-5 b(s)34 b(\223priority\224)g(within)f(the)i
9246 (search)g(tree.)61 b(The)35 b(\002rst)f(criterion)0 1652
9247 y(ensures)28 b(that)g(all)h(pieces)f(of)h(w)o(ork)f(are)h(searched)h
9248 (to)e(equal)g(depths.)41 b(Nodes)28 b(searched)h(to)f(shallo)n(wer)g
9249 (depths)0 1851 y(are)f(preferred)h(o)o(v)o(er)e(those)g(searched)i(to)e
9250 (deeper)i(depths,)e(because)h(the)o(y)f(represent)h(more)g(w)o(ork)f
9251 (to)h(be)f(done.)0 2051 y(In)j(Figure)g(5,)g(sla)n(v)o(e)g(1)f(has)h
9252 (master)f(leaf)i(nodes)e(1,)i(4)e(and)h(7,)h(and)e(the)o(y)g(ha)n(v)o
9253 (e)h(been)g(searched)g(to)g(depths)f(4,)h(3)0 2250 y(and)23
9254 b(0,)f(respecti)n(v)o(ely)-6 b(.)28 b(Thus,)23 b(sla)n(v)o(e)f(1)g(is)g
9255 (attempting)f(to)h(search)h(leaf)g(7)g(to)f(1)g(ply)-6
9256 b(,)22 b(and)h(will)f(continue)f(to)i(search)0 2449 y(leaf)i(7)g(up)f
9257 (to)h(3)g(ply)f(using)g(iterati)n(v)o(e)f(deepening,)h(if)h(no)g(ne)n
9258 (w)f(high-priority)f(w)o(ork)i(arri)n(v)o(es)f(from)g(the)h(master)-5
9259 b(.)146 2648 y(The)33 b(second)e(criterion)h(is)g(the)g(location)f(of)i
9260 (the)f(node)g(within)f(the)h(master')-5 b(s)31 b(latest)h(pass)f(o)o(v)
9261 o(er)h(the)g(tree.)0 2848 y(Children)e(of)g(nodes)g(are)h(usually)e
9262 (considered)h(in)g(a)g(best-to-w)o(orst)f(ordering,)i(implying)d(that)i
9263 (the)g(left-most)0 3047 y(branches)g(at)f(a)h(node)f(are)h(less)f(lik)o
9264 (ely)f(to)h(be)h(pruned)f(than)g(the)g(right-most)e(ones.)44
9265 b(F)o(or)30 b(sla)n(v)o(e)e(2)i(in)f(Figure)g(5,)0 3246
9266 y(lea)n(v)o(es)i(2)h(and)f(5)h(ha)n(v)o(e)f(both)g(been)g(searched)h
9267 (to)g(5)f(ply)-6 b(,)32 b(b)n(ut)f(leaf)h(2)f(is)g(being)g(searched)i
9268 (to)e(6)g(ply)g(since)h(it)f(is)0 3445 y(further)25 b(left)g(in)f(the)h
9269 (tree)g(than)f(leaf)i(5.)146 3645 y(Unfortunately)-6
9270 b(,)27 b(maintaining)f(a)i(complete)f(ordering)h(of)g(each)g(leaf)g(in)
9271 g(the)f(master')-5 b(s)27 b Fq(d)3251 3609 y Fp(0)3274
9272 3645 y Fu(-ply)h(tree)g(can)g(be)0 3844 y(e)o(xpensi)n(v)o(e.)33
9273 b(Thus,)25 b(APHID)i(uses)f(a)g(priority)f(scheme)h(to)g(gi)n(v)o(e)f
9274 (an)h(approximation)e(of)j(the)f(second)g(criterion.)0
9275 4043 y(The)k(formula)f(for)h(the)g(priority)f(is)g(as)h(follo)n(ws:)39
9276 b(F)o(or)30 b(each)g(principal)f(v)n(ariation)g(node)h(that)f(lies)g
9277 (on)h(the)f(path)0 4242 y(from)d(the)h(root)f(of)h(the)f(tree)h(to)f
9278 (the)h(node)f(in)h(question,)e(four)i(points)e(are)j(added)e(to)g(the)h
9279 (node')-5 b(s)26 b(priority)-6 b(.)34 b(T)-8 b(w)o(o)0
9280 4442 y(points)25 b(are)i(gi)n(v)o(en)e(to)g(the)h(node')-5
9281 b(s)26 b(priority)f(if)h(it)g(is)g(considered)g(to)g(be)g(part)g(of)g
9282 (the)h(critical)f(tree.)35 b(The)26 b(priority)0 4641
9283 y(scheme)k(ensures)g(that)g(the)g(search)h(proceeds)f(in)g(a)h(roughly)
9284 e(left-to-right)g(manner)l(,)j(and)e(that)g(nodes)f(within)0
9285 4840 y(the)e(critical)f(tree)h(are)h(preferred)f(o)o(v)o(er)f(nodes)g
9286 (that)h(might)e(not)h(be)h(e)n(v)n(aluated.)35 b(Ev)o(ery)26
9287 b(node)h(visited)e(in)h(a)h(pass)0 5039 y(of)c(the)g(game)g(tree)h(by)f
9288 (the)g(master)f(gets)h(at)h(least)e(4)i(points,)e(since)h(the)g(root)g
9289 (is)f(part)i(of)f(the)g(principal)f(v)n(ariation.)0 5239
9290 y(Nodes)i(that)g(are)h(not)f(touched)g(on)g(the)g(master')-5
9291 b(s)24 b(latest)g(pass)g(of)g(the)g(game)g(tree)h(are)g(gi)n(v)o(en)e
9292 (a)i(priority)e(of)i(zero.)1900 5589 y(14)p eop
9294 15 17 bop 146 100 a Fu(A)21 b(node)g(with)f(zero)h(priority)f(will)g
9295 (ne)n(v)o(er)g(be)h(selected)g(for)g(further)g(search)g(by)f(a)i(sla)n
9296 (v)o(e.)28 b(F)o(or)21 b(sla)n(v)o(e)f(3,)i(notice)0
9297 299 y(that)h(leaf)g(8)h(has)f(been)g(searched)h(pre)n(viously)-6
9298 b(,)21 b(b)n(ut)i(not)f(on)h(the)g(last)g(pass.)30 b(This)22
9299 b(leaf)i(is)f(ignored)f(by)h(the)g(sla)n(v)o(e')-5 b(s)0
9300 498 y(w)o(ork)25 b(selection)f(algorithm)f(because)i(it)g(is)f(not)g
9301 (currently)h(part)g(of)f(the)h(master')-5 b(s)24 b(tree.)146
9302 697 y(If)e(there)g(are)g(nodes)g(that)f(must)f(be)i(searched)g(for)g
9303 (the)f(current)h(iteration)f(of)g(the)h(master)l(,)g(the)f(node)g(with)
9304 g(the)0 897 y(highest)27 b(priority)h(is)g(al)o(w)o(ays)g(scheduled)g
9305 (until)g(it)g(has)g(been)h(searched)g(to)f(the)h(requisite)e(depth.)42
9306 b(This)27 b(allo)n(ws)0 1096 y(the)g(master')-5 b(s)26
9307 b(de)n(v)o(elopment)f(of)i(the)g(search)g(tree)h(to)e(proceed)h(in)g
9308 (an)g(orderly)g(manner)-5 b(.)37 b(When)27 b(all)f(nodes)h(at)g(a)0
9309 1295 y(sla)n(v)o(e)d(ha)n(v)o(e)h(been)g(searched)h(to)f(the)f(master')
9310 -5 b(s)25 b(required)g(depth,)f(the)h(nodes)g(at)g(the)g(lo)n(west)e
9311 (search)j(depth)e(ha)n(v)o(e)0 1494 y(their)h(search)g(e)o(xtended,)f
9312 (with)g(priority)g(v)n(alues)g(as)h(a)g(secondary)f(consideration.)146
9313 1694 y(Before)32 b(a)f(search)g(can)g(be)f(e)o(x)o(ecuted,)h(an)g
9314 Fq(\013)q(\014)36 b Fu(search)31 b(windo)n(w)e(must)g(be)i(generated)g
9315 (by)f(the)g(sla)n(v)o(e.)47 b(The)0 1893 y(windo)n(w)29
9316 b(selection)g(algorithm)g(is)g(application-dependent.)46
9317 b(The)30 b(general-purpose)g(windo)n(w)f(selection)g(al-)0
9318 2092 y(gorithm)i(used)h(by)f(the)h(applications)f(in)h(this)f(paper)i
9319 (in)l(v)n(olv)o(ed)d(centering)i(the)g(search)h(windo)n(w)d(around)i
9320 (the)0 2291 y(probable)c(minimax)e(v)n(alue)i(of)g(the)g(game)g(tree.)
9321 41 b(The)28 b(search)g(windo)n(w)f(w)o(as)h(made)g(slightly)f(lar)n
9322 (ger)h(to)g(re\003ect)0 2491 y(the)f(amount)e(of)i(uncertainty)f(in)h
9323 (the)f(probable)h(minimax)e(v)n(alue.)36 b(Further)27
9324 b(details)f(on)h(the)f(algorithm)g(can)h(be)0 2690 y(found)d(in)h
9325 (Appendix)f(B.)0 2985 y Fg(3.4)119 b(Load)30 b(Balancing)0
9326 3252 y Fu(Although)21 b(the)i(master)g(attempts)f(to)g(gi)n(v)o(e)g(an)
9327 h(equal)g(amount)f(of)h(w)o(ork)f(to)h(each)g(sla)n(v)o(e)g(in)f
9328 (APHID,)i(neither)e(the)0 3451 y(master)h(nor)h(the)f(sla)n(v)o(e)g
9329 (can)h(predict)f(the)h(amount)e(of)i(ef)n(fort)f(required)h(to)f
9330 (complete)g(a)h Fl(\()p Fq(d)17 b Fk(\000)h Fq(d)3261
9331 3415 y Fp(0)3284 3451 y Fl(\))p Fu(-ply)23 b(search)h(for)0
9332 3650 y(a)h(gi)n(v)o(en)e(piece)j(of)e(w)o(ork.)31 b(Thus,)24
9333 b(load)g(imbalances)h(can)g(occur)-5 b(.)146 3849 y(As)22
9334 b(part)g(of)g(a)g(pass)f(of)h(the)g Fq(d)1120 3813 y
9335 Fp(0)1143 3849 y Fu(-ply)f(tree,)i(the)f(master)f(computes)g(ho)n(w)g
9336 (man)o(y)g(uncertain)g(nodes)g(it)h(is)f(w)o(aiting)0
9337 4049 y(for)i(from)g(each)h(sla)n(v)o(e.)29 b(The)23 b(master)g(can)g
9338 (mo)o(v)o(e)e(lea)n(v)o(es)i(of)g(the)g Fq(d)2258 4012
9339 y Fp(0)2281 4049 y Fu(-ply)f(tree)i(from)e(an)i Fm(o)o(verwork)o(ed)f
9340 (slave)g Fu(\(with)0 4248 y(a)g(lar)n(ge)g(number)f(of)h(uncertain)f
9341 (nodes\))g(to)g(an)h Fm(underwork)o(ed)g(slave)f Fu(\(with)g(no)g
9342 (uncertain)h(nodes\).)29 b(This)22 b(yields)0 4447 y(a)39
9343 b(tradeof)n(f)g(between)g(f)o(aster)g(con)l(v)o(er)n(gence)g(for)g(a)g
9344 (gi)n(v)o(en)f(ply)g(search)h(of)g(the)g(tree)g(and)g(additional)f
9345 (search)0 4646 y(o)o(v)o(erhead,)31 b(since)f(the)g(pre)n(vious)f
9346 (searches)i(for)f(the)g(piece)h(of)f(w)o(ork)g(to)g(be)h(mo)o(v)o(ed)d
9347 (must)i(be)g(re-searched)h(on)0 4846 y(another)25 b(processor)-5
9348 b(.)146 5045 y(The)39 b(load-balancing)e(algorithm)g(al)o(w)o(ays)h
9349 (attempts)f(to)h(strip)g(pieces)g(of)h(w)o(ork)f(a)o(w)o(ay)g(from)g
9350 (the)g(most)0 5244 y(o)o(v)o(erw)o(ork)o(ed)c(sla)n(v)o(e.)60
9351 b(The)35 b(algorithm)e(prefers)j(to)e(tak)o(e)h(pieces)g(of)g(w)o(ork)g
9352 (that)f(are)i(small,)g(since)f(the)o(y)f(lead)1900 5589
9355 16 18 bop 0 100 a Fu(to)30 b(less)f(duplicated)g(w)o(ork.)47
9356 b(The)30 b(\002rst)g(uncertain)g(node)f(encountered)h(for)h(each)f(sla)
9357 n(v)o(e)g(during)f(a)h(pass)g(is)g(not)0 299 y(considered)c(for)g
9358 (load-balancing)f(purposes,)g(since)h(it)f(is)h(lik)o(ely)f(being)g
9359 (searched)i(by)e(that)h(sla)n(v)o(e)f(at)h(this)f(time.)0
9360 498 y(Another)f(stipulation)f(is)h(that)g(the)h(same)f(piece)h(of)g(w)o
9361 (ork)g(cannot)f(be)h(mo)o(v)o(ed)e(twice)h(in)h(a)g(ro)n(w;)f(this)f
9362 (pre)n(v)o(ents)h(a)0 697 y(v)o(ery)g(small)g(piece)h(of)g(w)o(ork)g
9363 (from)f(being)h(passed)f(from)h(process)g(to)f(process.)146
9364 897 y(Another)i(cause)h(of)f(a)h(load)f(imbalance)g(is)g(a)g(piece)h
9365 (of)f(w)o(ork)g(that)g(is)g(much)g(lar)n(ger)h(than)f(the)g(other)g
9366 (pieces)0 1096 y(of)k(w)o(ork.)47 b(F)o(or)30 b(e)o(xample,)h(the)f
9367 (search)h(tree)f(for)h(a)g(node)f(along)f(the)h(principal)g(v)n
9368 (ariation)f(is)h(generally)g(much)0 1295 y(lar)n(ger)39
9369 b(than)f(the)g(last)g(subtrees)g(e)o(xamined)f(during)h(a)h(sequential)
9370 e(search.)72 b(When)38 b(there)h(is)f(such)g(a)h(lar)n(ge)0
9371 1494 y(piece)d(of)f(w)o(ork,)j(multiple)33 b(processes)i(should)f
9372 (participate)h(in)g(computing)e(the)j(minimax)d(v)n(alue.)62
9373 b(Thus,)37 b(a)0 1694 y(mechanism)27 b(is)g(needed)i(for)f(breaking)g
9374 (a)g(lar)n(ge)g(piece)h(of)f(w)o(ork)g(into)f(a)h(number)g(of)g
9375 (smaller)f(pieces)h(that)g(can)0 1893 y(be)35 b(distrib)n(uted)e(\(via)
9376 i(the)g(load-balancing)f(algorithm\))g(to)g(other)h(processes.)61
9377 b(This)34 b(can)h(be)g(accomplished)0 2092 y(by)e(mo)o(ving)e(the)i
9378 (master')-5 b(s)32 b(parallelization)g(horizon)h(deeper)h(within)e(the)
9379 h(tree)g(for)h(a)f(lar)n(ge)h(piece)f(of)g(w)o(ork.)0
9380 2291 y(This)c(allo)n(ws)f(the)h(master)g(to)g(subdi)n(vide)f(a)i
9381 (single)e(piece)i(of)g(w)o(ork)f(into)g(man)o(y)f(smaller)h(pieces.)45
9382 b(It)29 b(could)g(be)0 2491 y(said)f(that)h(the)f(lar)n(ge)h(piece)h
9383 (of)e(w)o(ork)h(is)f Fm(e)n(xempted)h Fu(from)g(the)g(parallelization)e
9384 (horizon)i(at)f Fq(d)3283 2455 y Fp(0)3306 2491 y Fu(-ply)-6
9385 b(.)42 b(Note)29 b(that)0 2690 y(ne)n(w)c(pieces)h(of)g(w)o(ork)g
9386 (created)g(from)f(e)o(x)o(emptions)f(can)i(also)f(be)h(e)o(x)o(empted.)
9387 32 b(Thus,)25 b(Figure)h(4)g(is)f(misleading;)0 2889
9388 y(APHID)g(parallelism)f(does)g(not)h(necessarily)f(occur)h(at)g(the)g
9389 (same)f(depth)h(in)f(the)h(tree.)146 3088 y(The)32 b(master)f(is)g
9390 (responsible)g(for)h(determining)e(the)i(pieces)f(of)h(w)o(ork)f(to)h
9391 (be)g(e)o(x)o(empted.)49 b(It)32 b(bases)f(these)0 3288
9392 y(decisions)22 b(on)g(the)g(sla)n(v)o(e')-5 b(s)22 b(feedback)h(on)f
9393 (the)h(ef)n(fort)f(required)h(to)f(search)h(each)g(piece)g(of)g(w)o
9394 (ork)f(\(subtree)h(size\).)0 3487 y(Periodically)-6 b(,)35
9395 b(the)f(master)g(determines)f(the)h(lar)n(gest)g(pieces)g(of)g(w)o(ork)
9396 g(that)g(ha)n(v)o(e)f(been)h(e)o(xplored)g(recently)-6
9397 b(,)0 3686 y(along)22 b(with)g(the)h(a)n(v)o(erage)g(size)g(of)g(each)h
9398 (piece)f(of)g(w)o(ork.)30 b(If)23 b(the)g(size)g(of)g(the)f(lar)n(gest)
9399 h(piece)g(of)g(w)o(ork)g(is)f Fq(v)27 b Fu(times)0 3885
9400 y(the)f(size)g(of)g(the)g(a)n(v)o(erage)g(piece)g(of)g(w)o(ork,)h(the)e
9401 (lar)n(gest)h(piece)h(of)f(w)o(ork)f(is)h(subdi)n(vided)e(in)h(future)h
9402 (searches.)35 b Fq(v)0 4085 y Fu(is)24 b(an)h(application-dependent)f
9403 (parameter)h(in)f(APHID.)146 4284 y(The)38 b(nature)h(of)f(the)g
9404 Fq(\013)q(\014)43 b Fu(algorithm)37 b(does)h(not)f(guarantee)i(that)e
9405 (man)o(y)g(more)h(w)o(ork)g(granules)g(will)f(be)0 4483
9406 y(created)27 b(if)g(the)f(search)h(horizon)f(is)g(e)o(xtended)g(by)g(a)
9407 h(single)f(ply)-6 b(.)34 b(F)o(or)27 b(e)o(xample,)f(if)g(the)h(node)f
9408 (to)g(be)h(e)o(x)o(empted)0 4682 y(is)h(a)g(CUT)h(node,)g(then)f(the)g
9409 (search)g(will)g(lik)o(ely)f(generate)i(a)f(single)g(ALL)g(node.)40
9410 b(When)29 b(APHID)f(e)o(x)o(empts)f(a)0 4882 y(lar)n(ge)i(piece)f(of)g
9411 (w)o(ork,)h(the)f(horizon)g(is)f(e)o(xtended)h(by)g(2)g(ply)f(to)h
9412 (guarantee)h(that)e(the)h(w)o(ork)g(will)g(be)g(split)f(into)0
9413 5081 y(multiple)c(pieces.)1900 5589 y(16)p eop
9415 17 19 bop 0 100 a Fg(3.5)119 b(Exter)n(nal)30 b(Interface)g(of)f(the)h
9416 (APHID)g(Algorithm)0 366 y Fu(The)25 b(APHID)g(algorithm)f(has)h(been)g
9417 (written)f(as)h(an)g(application-independent)e(library)h(of)h(C)h
9418 (routines)e(\(using)0 565 y(PVM)37 b(for)g(process)g(communication)f
9419 ([4]\).)68 b(It)37 b(w)o(as)g(designed)f(to)h(pro)o(vide)f(minimal)f
9420 (interv)o(ention)h(into)g(a)0 765 y(w)o(orking)29 b(v)o(ersion)f(of)i
9421 (sequential)e Fq(\013)q(\014)6 b Fu(.)44 b(F)o(or)30
9422 b(a)g(program)f(to)g(use)g(the)h(library)-6 b(,)29 b(a)h(fe)n(w)g
9423 (application-dependent)0 964 y(routines)22 b(\(such)h(as)h(mo)o(v)o(e)d
9424 (format,)i(ho)n(w)g(to)g(mak)o(e/unmak)o(e)f(mo)o(v)o(es,)f(setting)h
9425 (a)i(windo)n(w)e(for)h(a)h(sla)n(v)o(e')-5 b(s)22 b(search,)0
9426 1163 y Fm(etc)p Fu(.\))39 b(must)27 b(be)h(written)e(so)i(that)f(APHID)
9427 h(can)g(access)g(the)f(required)h(information)e(without)g(ha)n(ving)h
9428 (to)g(kno)n(w)0 1362 y(the)e(data)g(structures)f(used)g(in)h(the)f
9429 (application.)146 1562 y(T)-8 b(o)25 b(parallelize)f(a)h(sequential)e
9430 Fq(\013)q(\014)30 b Fu(program,)24 b(the)g(user)h(modi\002es)e(their)i
9431 (search)g(routine)e(as)i(sho)n(wn)e(in)h(Fig-)0 1761
9432 y(ure)h(6.)32 b(The)25 b(changes)g(required)g(by)g(APHID)h(are)g(mark)o
9433 (ed)f(by)g(shading,)f(and)h(easily)f(\002t)i(into)e(the)h(standard)g
9434 Fq(\013)q(\014)0 1960 y Fu(frame)n(w)o(ork.)42 b(This)28
9435 b(one)h(piece)g(of)g(code)g(functions)e(as)i(the)g(search)g(algorithm)e
9436 (for)i(both)f(the)h(master)g(and)f(the)0 2159 y(sla)n(v)o(e)22
9437 b(processes.)30 b(The)22 b Fb(aphid)p 1144 2159 30 4
9438 v 35 w(master)f Fu(routine)h(identi\002es)g(whether)h(the)f(process)h
9439 (is)f(a)h(master)f(or)h(a)g(sla)n(v)o(e.)0 2359 y(The)j(master)f(uses)h
9440 Fb(aphid)p 976 2359 V 34 w(horizon)f Fu(to)g(tell)g(if)h(it)f(is)h(at)f
9441 (a)i(leaf)f(node)f(in)h(its)f(tree.)34 b(Since)26 b(games)f(are)h
9442 (played)0 2558 y(under)31 b(real-time)g(constraints,)g
9443 Fb(aphid)p 1444 2558 V 35 w(checkalarm)e Fu(is)i(periodically)f(called)
9444 h(to)g(check)h(whether)f(there)0 2757 y(is)i(a)h(reason)g(to)g(abort)f
9445 (the)h(search.)58 b Fb(Aphid)p 1621 2757 V 35 w(intnode)p
9446 2076 2757 V 34 w(start)33 b Fu(and)h Fb(aphid)p 2921
9447 2757 V 35 w(intnode)p 3376 2757 V 34 w(end)f Fu(tell)g(the)0
9448 2956 y(master)27 b(that)g(a)h(search)g(is)f(be)o(ginning/ending)e(for)j
9449 (this)e(interior)h(node.)39 b(Which)27 b(searching)h(an)f(interior)g
9450 (node,)0 3156 y Fb(aphid)p 306 3156 V 35 w(intmnode)p
9451 821 3156 V 34 w(move)18 b Fu(k)o(eeps)h(track)g(of)g(which)f(mo)o(v)o
9452 (e)f(is)i(being)f(searched,)j(and)d Fb(aphid)p 3359 3156
9453 V 35 w(intnode)p 3814 3156 V 34 w(update)0 3355 y Fu(records)25
9454 b(the)g(v)n(alue)f(of)h(the)g(search.)146 3554 y(In)32
9455 b(addition)e(to)i(the)f(abo)o(v)o(e,)h(approximately)e(10)i(lines)f(of)
9456 g(code)h(ha)n(v)o(e)f(to)h(be)f(added)h(outside)f(of)g(the)h
9457 Fq(\013)q(\014)0 3753 y Fu(algorithm)25 b(to)g(allo)n(w)g(APHID)i(to)f
9458 (mak)o(e)g(the)g(sequential)f(program)h(into)f(a)h(parallel)g(program.)
9459 35 b(More)26 b(speci\002c)0 3953 y(information)d(on)i(each)g(of)g(the)g
9460 Fb(aphid)p 1388 3953 V 59 w Fu(functions)f(and)h(call-back)g(routines)f
9461 (can)h(be)g(found)f(else)n(where)h([2].)146 4152 y(Other)31
9462 b(parallel)f Fq(\013)q(\014)6 b Fu(-based)30 b(algorithms)f(require)i
9463 (signi\002cant)f(changes)h(to)f(the)g(sequential)g(search)h(algo-)0
9464 4351 y(rithms)24 b(used)i(in)f(practice.)34 b(If)26 b(the)f(search)i
9465 (algorithm)d(has)i(been)f(designed)g(without)g(re)o(gard)g(for)h
9466 (multitasking)0 4550 y(or)f(a)f(speci\002c)h(parallel)g(model,)e(inte)o
9467 (grating)g(a)i(parallel)f(algorithm)f(into)h(the)g(code)h(can)f(be)h(a)
9468 g(signi\002cant)f(task.)0 4750 y(By)33 b(using)e(the)h(sequential)f
9469 (algorithm)g(and)h(call-back)h(functions)e(to)h(the)g(user')-5
9470 b(s)31 b(code)i(whene)n(v)o(er)f(possible,)0 4949 y(APHID)25
9471 b(represents)f(a)g(signi\002cant)g(decrease)h(in)e(the)h(ef)n(fort)g
9472 (required)h(to)e(achie)n(v)o(e)h(a)g(w)o(orking)g(parallel)g(game-)0
9473 5148 y(tree)h(search)h(program)e(o)o(v)o(er)g(its)g(synchronous)g
9474 (counterparts.)1900 5589 y(17)p eop
9477 18334146 37416636 11972280 9472573 28220375 42626580 startTexFig
9479 %%BeginDocument: pics/aphidcode-alphabeta.ps
9480 %Magnification: 0.50
9481 /$F2psDict 200 dict def
9483 $F2psDict /mtrx matrix put
9484 /col-1 {0 setgray} bind def
9485 /col0 {0.000 0.000 0.000 srgb} bind def
9486 /col1 {0.000 0.000 1.000 srgb} bind def
9487 /col2 {0.000 1.000 0.000 srgb} bind def
9488 /col3 {0.000 1.000 1.000 srgb} bind def
9489 /col4 {1.000 0.000 0.000 srgb} bind def
9490 /col5 {1.000 0.000 1.000 srgb} bind def
9491 /col6 {1.000 1.000 0.000 srgb} bind def
9492 /col7 {1.000 1.000 1.000 srgb} bind def
9493 /col8 {0.000 0.000 0.560 srgb} bind def
9494 /col9 {0.000 0.000 0.690 srgb} bind def
9495 /col10 {0.000 0.000 0.820 srgb} bind def
9496 /col11 {0.530 0.810 1.000 srgb} bind def
9497 /col12 {0.000 0.560 0.000 srgb} bind def
9498 /col13 {0.000 0.690 0.000 srgb} bind def
9499 /col14 {0.000 0.820 0.000 srgb} bind def
9500 /col15 {0.000 0.560 0.560 srgb} bind def
9501 /col16 {0.000 0.690 0.690 srgb} bind def
9502 /col17 {0.000 0.820 0.820 srgb} bind def
9503 /col18 {0.560 0.000 0.000 srgb} bind def
9504 /col19 {0.690 0.000 0.000 srgb} bind def
9505 /col20 {0.820 0.000 0.000 srgb} bind def
9506 /col21 {0.560 0.000 0.560 srgb} bind def
9507 /col22 {0.690 0.000 0.690 srgb} bind def
9508 /col23 {0.820 0.000 0.820 srgb} bind def
9509 /col24 {0.500 0.190 0.000 srgb} bind def
9510 /col25 {0.630 0.250 0.000 srgb} bind def
9511 /col26 {0.750 0.380 0.000 srgb} bind def
9512 /col27 {1.000 0.500 0.500 srgb} bind def
9513 /col28 {1.000 0.630 0.630 srgb} bind def
9514 /col29 {1.000 0.750 0.750 srgb} bind def
9515 /col30 {1.000 0.880 0.880 srgb} bind def
9516 /col31 {1.000 0.840 0.000 srgb} bind def
9520 151.5 664.0 translate
9523 /cp {closepath} bind def
9524 /ef {eofill} bind def
9525 /gr {grestore} bind def
9526 /gs {gsave} bind def
9528 /rs {restore} bind def
9529 /l {lineto} bind def
9530 /m {moveto} bind def
9531 /rm {rmoveto} bind def
9532 /n {newpath} bind def
9533 /s {stroke} bind def
9535 /slc {setlinecap} bind def
9536 /slj {setlinejoin} bind def
9537 /slw {setlinewidth} bind def
9538 /srgb {setrgbcolor} bind def
9539 /rot {rotate} bind def
9540 /sc {scale} bind def
9541 /sd {setdash} bind def
9542 /ff {findfont} bind def
9543 /sf {setfont} bind def
9544 /scf {scalefont} bind def
9545 /sw {stringwidth} bind def
9546 /tr {translate} bind def
9547 /tnt {dup dup currentrgbcolor
9548 4 -2 roll dup 1 exch sub 3 -1 roll mul add
9549 4 -2 roll dup 1 exch sub 3 -1 roll mul add
9550 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
9552 /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
9553 4 -2 roll mul srgb} bind def
9554 /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
9555 /$F2psEnd {$F2psEnteredState restore end} def
9559 n 0 792 m 0 0 l 612 0 l 612 792 l cp clip
9562 n 1150 5445 m 9150 5445 l 9150 5645 l 1150 5645 l cp gs 0.90 setgray ef gr
9564 n 1150 7245 m 9150 7245 l 9150 7845 l 1150 7845 l cp gs 0.90 setgray ef gr
9566 n 1150 8645 m 9150 8645 l 9150 9445 l 1150 9445 l cp gs 0.90 setgray ef gr
9568 n 1150 10045 m 9150 10045 l 9150 10245 l 1150 10245 l cp gs 0.90 setgray ef gr
9570 n 1150 10645 m 9150 10645 l 9150 10845 l 1150 10845 l cp gs 0.90 setgray ef gr
9572 n 1150 12645 m 9150 12645 l 9150 12845 l 1150 12845 l cp gs 0.90 setgray ef gr
9574 n 1150 14645 m 9150 14645 l 9150 14845 l 1150 14845 l cp gs 0.90 setgray ef gr
9577 n 1050 575 m 9250 575 l 9250 17300 l 1050 17300 l cp gs col-1 s gr
9578 /Courier ff 180.00 scf sf
9580 gs 1 -1 sc (int numOfSuccessors;) col-1 sh gr
9581 /Courier ff 180.00 scf sf
9583 gs 1 -1 sc (int gamma;) col-1 sh gr
9584 /Courier ff 180.00 scf sf
9586 gs 1 -1 sc (int i;) col-1 sh gr
9587 /Courier ff 180.00 scf sf
9589 gs 1 -1 sc (int sc;) col-1 sh gr
9590 /Courier ff 180.00 scf sf
9592 gs 1 -1 sc (int under;) col-1 sh gr
9593 /Courier ff 180.00 scf sf
9595 gs 1 -1 sc (/* move counter */) dup sw pop neg 0 rm col-1 sh gr
9596 /Courier ff 180.00 scf sf
9598 gs 1 -1 sc (/* score returned by search */) dup sw pop neg 0 rm col-1 sh gr
9599 /Courier ff 180.00 scf sf
9601 gs 1 -1 sc (/* alpha for move to be searched */) dup sw pop neg 0 rm col-1 sh gr
9602 /Courier ff 180.00 scf sf
9604 gs 1 -1 sc (/* beta for move to be searched */) dup sw pop neg 0 rm col-1 sh gr
9605 /Courier ff 180.00 scf sf
9607 gs 1 -1 sc (/* Generate hash value and key for this position */) col-1 sh gr
9608 /Courier ff 180.00 scf sf
9610 gs 1 -1 sc (/* Fetch information from transposition table */) col-1 sh gr
9611 /Courier ff 180.00 scf sf
9613 gs 1 -1 sc (if \(aphid_master\(\) == FALSE && h_length >= plytogo\) {) col-1 sh gr
9614 /Courier ff 180.00 scf sf
9616 gs 1 -1 sc (if \(flag == VALID\) { return\(h_score\); }) col-1 sh gr
9617 /Courier ff 180.00 scf sf
9619 gs 1 -1 sc (if \(flag == LBOUND\) { alpha = max\(alpha,h_score\); }) col-1 sh gr
9620 /Courier ff 180.00 scf sf
9622 gs 1 -1 sc (if \(flag == UBOUND\) { beta = min\(beta,h_score\); }) col-1 sh gr
9623 /Courier ff 180.00 scf sf
9625 gs 1 -1 sc (if \(alpha >= beta\) { return\(h_score\); }) col-1 sh gr
9626 /Courier ff 180.00 scf sf
9628 gs 1 -1 sc (}) col-1 sh gr
9629 /Courier ff 180.00 scf sf
9631 gs 1 -1 sc (/* Evaluate position if at bottom of tree */) col-1 sh gr
9632 /Courier ff 180.00 scf sf
9634 gs 1 -1 sc (/* If we have searched position deep enough, use score info */) col-1 sh gr
9635 /Courier ff 180.00 scf sf
9637 gs 1 -1 sc (if \(plytogo == 0\) { return\(Evaluate\(p\)\); }) col-1 sh gr
9638 /Courier ff 180.00 scf sf
9640 gs 1 -1 sc (generate_hash\(p, p_hash, p_key\);) col-1 sh gr
9641 /Courier ff 180.00 scf sf
9643 gs 1 -1 sc (retrieve\(p_hash, p_key, p_entry, h_length, h_score, h_flag, h_move\);) col-1 sh gr
9644 /Courier ff 180.00 scf sf
9646 gs 1 -1 sc (if \(aphid_horizon\(depth, plytogo, p_hash, p_key\) == TRUE\) {) col-1 sh gr
9647 /Courier ff 180.00 scf sf
9649 gs 1 -1 sc (return\(aphid_eval_leaf\(alpha, beta, depth, plytogo, p_hash, p_key\)\);) col-1 sh gr
9650 /Courier ff 180.00 scf sf
9652 gs 1 -1 sc (}) col-1 sh gr
9653 /Courier ff 180.00 scf sf
9655 gs 1 -1 sc (/* Generate move list, evaluate position if no moves */) col-1 sh gr
9656 /Courier ff 180.00 scf sf
9658 gs 1 -1 sc (numOfSuccessors = GenerateSuccessors\(p\);) col-1 sh gr
9659 /Courier ff 180.00 scf sf
9661 gs 1 -1 sc (if \(numOfSuccessors == 0\) { return\(Evaluate\(p\)\); }) col-1 sh gr
9662 /Courier ff 180.00 scf sf
9664 gs 1 -1 sc (if \(aphid_checkalarm\(FALSE\) != FALSE\) {) col-1 sh gr
9665 /Courier ff 180.00 scf sf
9667 gs 1 -1 sc (terminate_search = TRUE;) col-1 sh gr
9668 /Courier ff 180.00 scf sf
9670 gs 1 -1 sc (}) col-1 sh gr
9671 /Courier ff 180.00 scf sf
9673 gs 1 -1 sc (under = alpha; over = beta;) col-1 sh gr
9674 /Courier ff 180.00 scf sf
9676 gs 1 -1 sc (aphid_intnode_start\(depth, p_hash, p_key\);) col-1 sh gr
9677 /Courier ff 180.00 scf sf
9679 gs 1 -1 sc (if \(sc > under && i > 1 && sc < beta && plytogo > 2\) {) col-1 sh gr
9680 /Courier ff 180.00 scf sf
9682 gs 1 -1 sc (sc = -AlphaBeta\(p,-beta,-sc,plytogo-1\);) col-1 sh gr
9683 /Courier ff 180.00 scf sf
9685 gs 1 -1 sc (/* Is a research necessary? */) col-1 sh gr
9686 /Courier ff 180.00 scf sf
9688 gs 1 -1 sc (sc = -AlphaBeta\(p,-over,-under,plytogo-1\);) col-1 sh gr
9689 /Courier ff 180.00 scf sf
9691 gs 1 -1 sc (aphid_intnode_move\(depth, &\(movelist[i]\)\);) col-1 sh gr
9692 /Courier ff 180.00 scf sf
9694 gs 1 -1 sc (make_move\(p, movelist[i]\);) col-1 sh gr
9695 /Courier ff 180.00 scf sf
9697 gs 1 -1 sc (char *p_hash;) col-1 sh gr
9698 /Courier ff 180.00 scf sf
9700 gs 1 -1 sc (char *p_key;) col-1 sh gr
9701 /Courier ff 180.00 scf sf
9703 gs 1 -1 sc (int h_length;) col-1 sh gr
9704 /Courier ff 180.00 scf sf
9706 gs 1 -1 sc (int h_score;) col-1 sh gr
9707 /Courier ff 180.00 scf sf
9709 gs 1 -1 sc (int h_flag;) col-1 sh gr
9710 /Courier ff 180.00 scf sf
9712 gs 1 -1 sc (char *p_entry;) col-1 sh gr
9713 /Courier ff 180.00 scf sf
9715 gs 1 -1 sc (/* pointer to physical location of TT entry */) dup sw pop neg 0 rm col-1 sh gr
9716 /Courier ff 180.00 scf sf
9718 gs 1 -1 sc (/* pointer to hash value */) dup sw pop neg 0 rm col-1 sh gr
9719 /Courier ff 180.00 scf sf
9721 gs 1 -1 sc (/* pointer to hash table lock */) dup sw pop neg 0 rm col-1 sh gr
9722 /Courier ff 180.00 scf sf
9724 gs 1 -1 sc (/* ply position previously searched to */) dup sw pop neg 0 rm col-1 sh gr
9725 /Courier ff 180.00 scf sf
9727 gs 1 -1 sc (/* score at h_length ply from TT */) dup sw pop neg 0 rm col-1 sh gr
9728 /Courier ff 180.00 scf sf
9730 gs 1 -1 sc (/* type of score \(VALID, LBOUND or UBOUND\) */) dup sw pop neg 0 rm col-1 sh gr
9731 /Courier ff 180.00 scf sf
9733 gs 1 -1 sc (/* recommended move from TT */) dup sw pop neg 0 rm col-1 sh gr
9734 /Courier ff 180.00 scf sf
9736 gs 1 -1 sc (move h_move;) col-1 sh gr
9737 /Courier ff 180.00 scf sf
9739 gs 1 -1 sc (int over;) col-1 sh gr
9740 /Courier ff 180.00 scf sf
9742 gs 1 -1 sc (move move_opt;) col-1 sh gr
9743 /Courier ff 180.00 scf sf
9745 gs 1 -1 sc (/* current best move */) dup sw pop neg 0 rm col-1 sh gr
9746 /Courier ff 180.00 scf sf
9748 gs 1 -1 sc (aphid_intnode_update\(depth, value\);) col-1 sh gr
9749 /Courier ff 180.00 scf sf
9751 gs 1 -1 sc (move movelist[MAX_LEGAL_MOVES];) col-1 sh gr
9752 /Courier ff 180.00 scf sf
9754 gs 1 -1 sc (/* ordered list of all moves */) dup sw pop neg 0 rm col-1 sh gr
9755 /Courier ff 180.00 scf sf
9757 gs 1 -1 sc (/* total number of moves in movelist[] */) dup sw pop neg 0 rm col-1 sh gr
9758 /Courier ff 180.00 scf sf
9760 gs 1 -1 sc (/* current best minimax value */) dup sw pop neg 0 rm col-1 sh gr
9761 /Courier ff 180.00 scf sf
9763 gs 1 -1 sc (for\(i=1; \(i <= numOfSuccessors && score <= beta\); i++\) {) col-1 sh gr
9764 /Courier ff 180.00 scf sf
9766 gs 1 -1 sc (/* set window for next child */) col-1 sh gr
9767 /Courier ff 180.00 scf sf
9769 gs 1 -1 sc (under = max\(gamma, alpha\); over = under + 1;) col-1 sh gr
9770 /Courier ff 180.00 scf sf
9772 gs 1 -1 sc (}) col-1 sh gr
9773 /Courier ff 180.00 scf sf
9775 gs 1 -1 sc (/* Write information into transposition table */) col-1 sh gr
9776 /Courier ff 180.00 scf sf
9778 gs 1 -1 sc (if \(sc > gamma\) {) col-1 sh gr
9779 /Courier ff 180.00 scf sf
9781 gs 1 -1 sc (gamma = sc;) col-1 sh gr
9782 /Courier ff 180.00 scf sf
9784 gs 1 -1 sc (move_opt = movelist[i];) col-1 sh gr
9785 /Courier ff 180.00 scf sf
9787 gs 1 -1 sc (}) col-1 sh gr
9788 /Courier ff 180.00 scf sf
9790 gs 1 -1 sc (gamma = -INFINITY;) col-1 sh gr
9791 /Courier ff 180.00 scf sf
9793 gs 1 -1 sc (aphid_intnode_end\(depth, score, beta\); ) col-1 sh gr
9794 /Courier ff 180.00 scf sf
9796 gs 1 -1 sc (}) col-1 sh gr
9797 /Courier ff 180.00 scf sf
9799 gs 1 -1 sc (unmake_move\(p, movelist[i]\);) col-1 sh gr
9800 /Courier ff 180.00 scf sf
9802 gs 1 -1 sc (h_flag = VALID;) col-1 sh gr
9803 /Courier ff 180.00 scf sf
9805 gs 1 -1 sc (if \(score <= alpha\) { h_flag = LBOUND; }) col-1 sh gr
9806 /Courier ff 180.00 scf sf
9808 gs 1 -1 sc (if \(h_length <= plytogo\) {) col-1 sh gr
9809 /Courier ff 180.00 scf sf
9811 gs 1 -1 sc (if \(score >= beta\) { h_flag = UBOUND; }) col-1 sh gr
9812 /Courier ff 180.00 scf sf
9814 gs 1 -1 sc (}) col-1 sh gr
9815 /Courier ff 180.00 scf sf
9817 gs 1 -1 sc (p_entry = store\(p_hash, p_key, plytogo, score, h_flag, move_opt\);) col-1 sh gr
9818 /Courier ff 180.00 scf sf
9820 gs 1 -1 sc (} /* AlphaBeta */) col-1 sh gr
9821 /Courier ff 180.00 scf sf
9823 gs 1 -1 sc (int AlphaBeta\(position p, int alpha, int beta, int depth, int plytogo\) {) col-1 sh gr
9824 /Courier ff 180.00 scf sf
9826 gs 1 -1 sc (return\(0\); /* Should exit AlphaBeta quickly when alarm on */) col-1 sh gr
9827 /Courier ff 180.00 scf sf
9829 gs 1 -1 sc (return\(gamma\);) col-1 sh gr
9836 770 5131 a Fu(Figure)25 b(6:)30 b(Code)c(Example:)j(APHID)d(within)d
9837 (the)i Fq(\013)q(\014)30 b Fu(Algorithm)1900 5589 y(18)p
9840 19 21 bop 146 100 a Fu(It)23 b(should)f(also)h(be)g(noted)f(that,)h(in)
9841 g(terms)f(of)h(ease)h(of)f(use,)g(the)g(APHID)g(library)g(is)f(almost)g
9842 (unique.)29 b(Gi)n(v)o(en)0 299 y(an)22 b Fq(\013)q(\014)27
9843 b Fu(program)21 b(with)g(the)g(code)h(structured)f(to)g(use)g(the)h
9844 (Cilk)f(directi)n(v)o(es,)g(then)g(parallel)g Fm(sync)o(hr)l(onous)f
9845 Fu(search)0 498 y(algorithms,)f(such)g(as)h(YBWC)h(and)e(PV)-10
9846 b(-Split,)21 b(can)f(be)f(easily)h(implemented)e([1].)29
9847 b(Cilk)19 b(uses)g(multiple)f(threads)0 697 y(to)27 b(coordinate)g(the)
9848 g(search,)h(where)g(each)f(thread)h(represents)f(a)g(node)g(where)h(w)o
9849 (ork)f(has)g(been)g(split)f(of)n(f)h(from)0 897 y(its)d(parent.)0
9850 1236 y Fo(4)143 b(Experimental)33 b(Results)0 1539 y
9851 Fu(Most)c(authors)g(demonstrate)h(the)g(ef)n(fecti)n(v)o(eness)e(of)i
9852 (their)g(parallel)g(algorithm)f(using)g(a)h(single)f(application.)0
9853 1738 y(Chess)40 b(is)f(often)h(chosen)g(because)g(synchronous)f
9854 (algorithms)f(usually)h(yield)g(good)g(speedups)g(when)h(the)0
9855 1937 y(branching)24 b(f)o(actor)i(is)e(lar)n(ge.)31 b(In)25
9856 b(contrast,)g(APHID')-5 b(s)25 b(performance)g(will)f(be)h(presented)g
9857 (using)f(four)g(dif)n(ferent)0 2136 y(applications,)35
9858 b(each)g(written)f(by)g(dif)n(ferent)g(authors)g(and)g(with)f(dif)n
9859 (ferent)h(coding)g(styles.)58 b(This)34 b(ambitious)0
9860 2336 y(comparison)27 b(of)i(performance)g(in)f(multiple)e(application)i
9861 (domains)f(is)h(feasible)g(because)h(of)f(APHID')-5 b(s)29
9862 b(ease)0 2535 y(of)c(inte)o(gration)e(into)h(an)h(e)o(xisting)e
9863 (sequential)h(program.)146 2734 y(This)34 b(section)f(presents)h(e)o
9864 (xperimental)e(results)i(for)g(APHID.)g(Section)g(4.1)g(describes)g
9865 (the)g(e)o(xperimen-)0 2933 y(tal)h(methodology)-6 b(.)60
9866 b(Section)36 b(4.2)f(describes)g(the)g(o)o(v)o(erhead)g(model)g(used)g
9867 (to)g(analyze)h(performance.)63 b(The)0 3133 y(e)o(xperimental)24
9868 b(results)g(are)h(presented)g(in)f(Section)h(4.3.)0 3428
9869 y Fg(4.1)119 b(Methodology)0 3694 y Fu(APHID)19 b(has)g(been)g
9870 (implemented)e(in)i(four)g(applications:)28 b(C)t Fa(H)t(I)t(N)t(O)t(O)
9871 t(K)r Fu(,)e(C)t Fa(R)t(A)t(F)t(T)t(Y)r Fu(,)h(K)t Fa(E)t(Y)-6
9872 b(A)t(N)t(O)25 b Fu(and)c(T)t Fa(H)t(E)t Fu(T)t Fa(U)t(R)t(K)r
9873 Fu(.)2 3893 y(C)t Fa(H)t(I)t(N)t(O)t(O)t(K)26 b Fu(is)20
9874 b(the)g(Man)g(vs.)28 b(Machine)20 b(W)-8 b(orld)20 b(Check)o(ers)h
9875 (Champion)e(program)h(\(principal)f(author:)28 b(Jonathan)0
9876 4093 y(Schaef)n(fer\).)37 b(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)32
9877 b Fu(is)25 b(a)h(state-of-the-art)g(Othello)e(program,)i(which)f(rank)o
9878 (ed)h(among)f(the)h(top)f(\002)n(v)o(e)g(com-)0 4292
9879 y(puter)32 b(Othello)e(programs)h(w)o(orldwide)g(from)h(1992)f(to)g
9880 (1996)g(\(author:)44 b(Mark)32 b(Brockington\).)52 b(C)t
9881 Fa(R)t(A)t(F)t(T)t(Y)40 b Fu(is)0 4491 y(a)35 b(strong)f(free)n(w)o
9882 (are)i(chess)f(program)g(\(author:)51 b(Robert)35 b(Hyatt\).)63
9883 b(T)t Fa(H)t(E)t Fu(T)t Fa(U)t(R)t(K)42 b Fu(is)34 b(a)h(strong)g
9884 (chess)f(program)0 4690 y(designed)g(by)h(tw)o(o)g(graduate)g(students)
9885 f(at)h(the)g(Uni)n(v)o(ersity)e(of)i(Alberta)g(\(Andreas)g(Junghanns)f
9886 (and)h(Yngvi)0 4890 y(Bjornsson\).)63 b(Both)36 b(chess)g(programs)g
9887 (ha)n(v)o(e)f(been)h(participants)f(in)h(a)g(W)-8 b(orld)36
9888 b(Computer)f(Chess)h(Champi-)0 5089 y(onsip.)52 b(All)32
9889 b(of)g(the)g(applications)f(ha)n(v)o(e)h(a)h(\002nely-tuned)f
9890 (sequential)f(search)i(algorithm)e(that)h(considers)f(the)0
9891 5288 y(best)e(mo)o(v)o(e)e(\002rst)i(approximately)e(90\045)i(\(or)g
9892 (more\))g(of)g(the)g(time.)42 b(In)29 b(practice,)h(the)o(y)e(each)i
9893 (search)f(trees)h(that)1900 5589 y(19)p eop
9895 20 22 bop 0 100 a Fu(are)26 b(close)e(to)h(the)f(critical)h(tree)g(in)f
9896 (size.)146 299 y(All)g(e)o(xperiments)f(were)j(performed)e(on)g(a)h
9897 (Silicon)f(Graphics)h(Origin)e(2000)h(with)g(64)g(processors.)3631
9898 263 y Fn(6)3701 299 y Fu(Each)0 498 y(of)34 b(the)g(applications)e
9899 (were)j(compiled)e(with)g(SGI')-5 b(s)34 b Fb(cc)g Fu(compiler)-5
9900 b(.)57 b(F)o(or)34 b(the)g(parallel)g(tests,)h(tw)o(o)e(dif)n(ferent)0
9901 697 y(v)o(ersions)h(of)i(the)g(code)g(were)g(compiled.)62
9902 b(The)36 b(\002rst)g(parallel)f(program)h(could)f(be)h(used)f(at)h
9903 (run-time)f(as)h(a)0 897 y(master)30 b(or)g(a)g(sla)n(v)o(e)g(by)f
9904 (APHID.)i(The)f(second)g(program)g(w)o(as)g(an)g(e)o(x)o(ecutable)f
9905 (that)h(could)f(only)g(be)i(used)e(by)0 1096 y(APHID)34
9906 b(as)f(a)h(sla)n(v)o(e.)55 b(This)33 b(separation)g(impro)o(v)o(ed)e
9907 (performance,)36 b(since)d(a)h(number)e(of)i(callback)f(routines)0
9908 1295 y(used)25 b(only)f(by)g(the)h(master)f(impacted)g(the)h
9909 (performance)g(of)g(the)g(sla)n(v)o(es)f(when)g(left)h(in)g(the)f
9910 Fq(\013)q(\014)30 b Fu(algorithm.)146 1494 y(P)o(arallel)i(and)g
9911 (sequential)f(algorithms)f(often)h(do)h(not)f(agree)i(with)e(each)h
9912 (other)f(about)h(the)f(search)i(result)0 1694 y(\(v)n(alue)24
9913 b(and/or)g(best)g(mo)o(v)o(e\))f(when)h(the)h(full)f(v)o(ersion)f(of)h
9914 (the)h(program)f(is)g(used)g([12].)31 b(F)o(or)24 b(e)o(xample,)f(dif)n
9915 (ferent)0 1893 y(search)g(windo)n(ws)e(can)i(cause)g(dif)n(ferent)f
9916 (search)h(e)o(xtensions)e(to)h(be)g(turned)h(on,)f(resulting)g(in)g(a)h
9917 (dif)n(ferent)f(v)n(alue)0 2092 y(at)33 b(the)h(root.)56
9918 b(One)33 b(w)o(ould)g(prefer)h(that)f(the)g(parallel)g(and)h
9919 (sequential)e(algorithms)g(return)h(identical)g(v)n(alues)0
9920 2291 y(and)26 b(principal)f(v)n(ariations,)g(allo)n(wing)f(for)i(a)g
9921 (meaningful)f(comparison.)33 b(It)26 b(is)f(dif)n(\002cult)g(to)h(mak)o
9922 (e)f(this)g(happen)0 2491 y(without)i(se)n(v)o(erely)h(crippling)g(the)
9923 h(program')-5 b(s)28 b(sequential)f(search)j(algorithm.)41
9924 b(As)29 b(a)g(compromise,)f(most)g(of)0 2690 y(the)20
9925 b(search)i(result)e(dif)n(ferences)h(can)g(be)f(eliminated)g(by)g
9926 (disabling)f(all)h Fq(\013)q(\014)26 b Fu(windo)n(w-based)20
9927 b(search)h(e)o(xtensions)0 2889 y(and)h(reductions.)30
9928 b(This)21 b(does)i(not)f(imply)f(that)h(a)h(\002x)o(ed)f(search)h
9929 (depth)f(w)o(as)h(enforced)g(on)f(the)g(programs.)30
9930 b(As)22 b(an)0 3088 y(e)o(xample,)30 b(the)g(check)o(ers)g(and)g(chess)
9931 g(programs)f(still)g(used)g(quiescence)h(search)h(to)e(e)o(xtend)g(the)
9932 h(search)g(well)0 3288 y(be)o(yond)24 b(the)g Fq(d)p
9933 Fu(-ply)g(search)i(horizon.)146 3487 y(The)g(size)f(of)g(each)h(of)g
9934 (the)f(searches)h(is)f(important)e(to)i(the)g(observ)o(ed)g(speedup.)32
9935 b(In)25 b(synchronous)f(parallel)0 3686 y(game-tree)h(search)g
9936 (algorithms,)e(the)i(speedup)f(can)h(be)g(impro)o(v)o(ed)e(arbitrarily)
9937 h(by)h(increasing)f(the)h(size)f(of)h(the)0 3885 y(search)e([15].)30
9938 b(Ho)n(we)n(v)o(er)l(,)21 b(searching)h(game)g(trees)g(that)g(occur)g
9939 (under)g(tournament)f(time)h(controls)f(is)h(critical)f(to)0
9940 4085 y(assessing)e(a)h(parallel)f(game-tree)h(search)g(algorithm')-5
9941 b(s)18 b(performance.)29 b(Thus,)20 b(the)g(size)f(of)h(the)g(indi)n
9942 (vidual)d(tests)0 4284 y(w)o(as)24 b(limited)e(so)h(that)h(the)f(a)n(v)
9943 o(erage)h(time)f(spent)g(searching)h(on)f(a)h(64-processor)g(machine)f
9944 (did)g(not)g(e)o(xceed)h(the)0 4483 y(usual)e(time)h(controls)f(in)g
9945 (the)h(game)f(being)h(studied.)29 b(This)22 b(is)h(180)f(seconds)h(in)f
9946 (chess,)h(60)g(seconds)g(in)f(Othello,)0 4682 y(and)29
9947 b(120)g(seconds)g(in)f(the)h(game)g(of)g(check)o(ers.)45
9948 b(Consequently)-6 b(,)29 b(the)g(search)g(depth)g(achie)n(v)o(ed)f
9949 (depended)h(on)0 4882 y(the)f(game)g(being)g(studied)f(and)i(the)f
9950 (position)e(being)i(tested.)41 b(F)o(or)29 b(check)o(ers,)g(the)g
9951 (search)g(depth)e(v)n(aried)h(from)0 5081 y(25)h(to)f(29)h(ply)-6
9952 b(,)29 b(while)f(for)h(chess)g(it)g(w)o(as)g(11)f(or)i(12)e(ply)-6
9953 b(.)42 b(F)o(or)29 b(Othello,)g(all)g(positions)e(were)i(searched)h(15)
9954 f(ply)p 0 5171 1560 4 v 112 5232 a Fj(6)149 5262 y Fi(Additional)19
9955 b(e)o(xperiments)g(ha)n(v)o(e)g(been)h(done)f(using)h(Sun)g(equipment)e
9956 (to)i(test)h(the)f(portability)f(of)h(the)g(APHID)h(library)e([2)o(].)
9957 1900 5589 y Fu(20)p eop
9959 21 23 bop 0 100 a Fu(deep.)60 b(The)35 b(parallelization)f(horizon)g(v)
9960 n(aried)g(from)g(4)h(to)f(8)g(ply)g(\(4)h(in)f(chess)h(and)f(Othello,)i
9961 (6)f(to)f(8)g(ply)g(in)0 299 y(check)o(ers\).)63 b(A)36
9962 b(suitable)e(benchmark)h(set)g(w)o(as)h(chosen)f(for)g(each)h(game:)51
9963 b(the)35 b(Bratk)o(o-K)m(opec)h(test)f(set)g(for)0 498
9964 y(chess)25 b([10],)g(positions)e(from)i(the)g(\002rst)g(Chinook-T)m
9965 (insle)o(y)e(match)h(for)i(check)o(ers)g([12)o(],)g(and)f(positions)e
9966 (from)i(a)0 697 y(W)-8 b(orld)24 b(Championship)g(game)g(for)h(Othello)
9967 f([2].)146 897 y(Using)j(a)g(transposition)e(table)i(that)g(is)g(lar)n
9968 (ge)g(enough)g(to)g(accommodate)f(results)h(disco)o(v)o(ered)f(during)g
9969 (the)0 1096 y(search)g(is)f(important.)32 b(that)25 b(k)o(ept)g(the)g
9970 (o)o(v)o(erall)g(size)g(of)h(the)f(program)g(and)h(data)f(belo)n(w)g
9971 (400)g(MB)h(w)o(as)f(chosen.)0 1295 y(It)c(w)o(as)h(unanticipated)e
9972 (that)g(this)h(limitation)e(w)o(ould)h(dramatically)g(af)n(fect)i(the)f
9973 (speedup)g(on)g(a)h(lar)n(ge)f(number)g(of)0 1494 y(processors)g(b)n
9974 (ut,)g(as)g(discussed)f(later)l(,)i(400)f(MB)g(pro)o(v)o(ed)f(to)h(be)g
9975 (inadequate)g(for)g(the)g(lar)n(ge)g(searches)h(attempted)0
9976 1694 y(in)i(the)h(chess)g(and)g(check)o(ers)g(programs.)146
9977 1893 y(Distrib)n(uted)g(transposition)f(table)i(schemes)g(quickly)g
9978 (become)g(communication-bound)e(on)i(modern)f(ar)n(-)0
9979 2092 y(chitectures.)58 b(Thus,)35 b(it)f(is)f(usually)g(infeasible)g
9980 (to)h(implement)e(sharing)h(of)h(transposition)e(table)i(entries)f(on)0
9981 2291 y(systems)21 b(where)j(shared)f(memory)f(is)g(not)g(a)n(v)n
9982 (ailable)g(in)h(hardw)o(are.)30 b(The)23 b(APHID)h(library)e(contains)g
9983 (a)h(method)0 2491 y(for)g(distrib)n(uting)d(transposition)h(table)h
9984 (information)f(that)i(does)f(not)g(o)o(v)o(erload)g(the)g
9985 (interconnection)g(netw)o(ork.)0 2690 y(Experiments)30
9986 b(with)g(APHID)h(using)f(distrib)n(uted)f(transposition)g(tables)h(are)
9987 i(a)n(v)n(ailable)e(else)n(where)h([2].)49 b(The)0 2889
9988 y(e)o(xperiments)19 b(reported)i(in)f(this)g(paper)h(were)g(run)g(on)f
9989 (a)h(shared-memory)g(computer)l(,)f(allo)n(wing)f(us)i(to)f(compare)0
9990 3088 y(our)25 b(results)f(with)g(those)g(reported)h(in)f(the)h(recent)g
9991 (literature.)146 3288 y(Note)31 b(that)f(the)g(transposition)f(table)h
9992 (size)h(did)f(not)g(increase)h(as)g(the)g(number)f(of)h(processors)f
9993 (increased.)0 3487 y(The)k(sequential)g(tests)f(used)h(e)o(xactly)g
9994 (the)g(same)g(number)g(of)h(table)f(entries)g(as)g(each)h(of)g(the)f
9995 (parallel)g(tests.)0 3686 y(If)d(the)g(parallel)g(run)g(used)g(64)f
9996 (processors,)i(then)f(each)g(process)g(recei)n(v)o(ed)g(1/64th)e(of)i
9997 (the)g(table)g(entries)g(that)0 3885 y(the)d(sequential)f(process)h
9998 (recei)n(v)o(ed.)40 b(Thus,)29 b(the)f(e)o(xperiments)e(measured)i(the)
9999 g(scalability)f(of)h(the)g(number)g(of)0 4085 y(processors)d(and)h(not)
10000 f(the)g(scalability)g(of)h(memory)-6 b(.)32 b(Other)25
10001 b(researchers)i(ha)n(v)o(e)e(allo)n(wed)g(the)g(number)h(of)f(table)0
10002 4284 y(entries)34 b(to)g(increase)h(in)f(tandem)g(with)g(the)g(number)g
10003 (of)g(processors.)60 b(This)33 b(can)i(result)f(in)g(an)h(unf)o(air)f
10004 (com-)0 4483 y(parison)29 b(\(and)h(signi\002cantly)f(in\003ated)g
10005 (speedups\))h(because)g(the)f(sequential)g(algorithm')-5
10006 b(s)28 b(table)h(may)h(not)f(be)0 4682 y(lar)n(ge)e(enough)f(to)h(hold)
10007 f(the)h(critical)f(tree)h(in)g(memory)-6 b(,)26 b(whereas)h(the)g
10008 (parallel)f(v)o(ersion)g(can.)37 b(When)27 b(e)o(xamin-)0
10009 4882 y(ing)i(the)h(game-tree)g(search)g(literature,)h(the)e(reader)i
10010 (should)e(a)n(v)n(oid)g(directly)g(comparing)g(speedups)h(without)0
10011 5081 y(understanding)23 b(the)i(conditions)e(under)i(which)f(the)o(y)g
10012 (were)i(achie)n(v)o(ed.)146 5280 y(The)21 b(standard)g(set)g(of)g
10013 (tests)f(for)h(each)h(program)e(in)l(v)n(olv)o(ed)g(e)o(xamining)f(a)i
10014 (\002x)o(ed-depth)g(game)f(tree)h(\(modulo)1900 5589
10017 22 24 bop 0 100 a Fu(an)o(y)28 b(quiescence)g(search\))h(and)f(using)f
10018 (a)h(shared)h(memory)e(transposition)f(table,)j(o)o(v)o(er)e(a)h(v)n
10019 (arying)f(number)h(of)0 299 y(processors.)g(Each)20 b(program)e(w)o(as)
10020 h(tested)g(on)g Fq(n)p Fu(=16,)h(32)f(and)g(64)f(processors,)i(using)e
10021 (a)i(single-le)n(v)o(el)d(hierarchy:)0 498 y(one)25 b(master)f
10022 (allocated)h(w)o(ork)f(to)h Fq(n)d Fk(\000)h Fl(1)i Fu(sla)n(v)o(es)e
10023 (for)j(each)f(test)f(position.)146 697 y(There)34 b(are)g(tw)o(o)e
10024 (methods)g(of)h(reporting)g(speedups)f(and)h(o)o(v)o(erheads)f(for)h(a)
10025 h(lar)n(ge)f(number)g(of)g(samples.)0 897 y(The)28 b(\002rst)f(is)g(to)
10026 g(add)h(all)f(of)h(the)f(searches)h(for)g(the)f(multiple)f(positions)f
10027 (together)l(,)j(and)g(perform)f(the)h(speedup)0 1096
10028 y(and)j(o)o(v)o(erhead)f(analysis)g(on)g(the)h(combined)e(data.)49
10029 b(The)31 b(second)f(method)g(is)g(to)h(perform)f(the)h(speedup)f(and)0
10030 1295 y(o)o(v)o(erhead)c(analysis)h(on)f(each)i(indi)n(vidual)d
10031 (position,)h(and)h(a)n(v)o(erage)g(the)g(speedups)g(and)g(o)o(v)o
10032 (erheads.)36 b(The)28 b(sec-)0 1494 y(ond)36 b(method)f(is)h(preferred)
10033 h(\(and)g(used)f(in)g(this)f(paper\))i(because)f(it)g(will)g(not)f(o)o
10034 (v)o(erestimate)g(the)h(observ)o(ed)0 1694 y(speedup)24
10035 b(for)h(a)h(lar)n(ge)f(number)f(of)h(test)f(positions.)0
10036 1989 y Fg(4.2)119 b(Ov)o(erheads)30 b(in)h(APHID)0 2255
10037 y Fu(The)36 b(performance)h(of)g(APHID)g(will)e(be)i(analyzed)f(in)g
10038 (terms)g(of)h(the)f(impediments)e(\(o)o(v)o(erheads\))i(to)g(high)0
10039 2455 y(parallel)28 b(performance.)41 b(Since)28 b(the)g(o)o(v)o(erhead)
10040 f(model)g(used)h(in)f(this)g(section)h(is)f(slightly)f(dif)n(ferent)i
10041 (than)g(that)0 2654 y(used)d(by)f(other)h(authors,)f(the)g(terminology)
10042 f(used)i(is)f(de\002ned)i(here.)146 2853 y(The)e Fm(total)e(o)o
10043 (verhead)h Fu(represents)g(the)g(additional)e(computing)h(time)g
10044 (required)i(by)e(the)i(parallel)f(algorithm)0 3052 y(on)i
10045 Fq(n)g Fu(processors)f(to)h(achie)n(v)o(e)f(the)g(same)h(result)f(as)h
10046 (the)g(sequential)f(v)o(ersion:)772 3351 y Fl(total)c(o)m(v)m(erhead)30
10047 b(=)1512 3284 y(\(parallel)20 b(time)43 b Fk(\002)h Fl(n\))23
10048 b Fk(\000)f Fl(sequen)m(tial)h(time)p 1512 3328 1580
10049 4 v 1984 3420 a(sequen)m(tial)g(time)3101 3351 y Fq(:)0
10050 3650 y Fu(The)29 b(total)g(o)o(v)o(erhead)f(can)i(also)f(be)h(computed)
10051 e(by)h(e)o(xamining)e(the)j(component)e(o)o(v)o(erheads)g
10052 (independently)-6 b(.)0 3849 y(The)32 b(three)h(main)e(o)o(v)o(erheads)
10053 g(are)i(\(1\))g(dedicating)e(a)i(processor)f(to)g(be)g(used)g(e)o
10054 (xclusi)n(v)o(ely)d(as)k(a)f(master)g(\(the)0 4049 y(master)f(o)o(v)o
10055 (erhead\),)i(\(2\))f(the)g(ef)n(fecti)n(v)o(e)e(decrease)j(in)e(nodes)h
10056 (per)g(second)f(e)o(xamined)g(\(parallelization)g(o)o(v)o(er)n(-)0
10057 4248 y(head\),)e(and)f(\(3\))g(the)g(lar)n(ger)g(search)g(tree)h(b)n
10058 (uilt)d(by)i(the)g(parallel)f(algorithm)g(\(total)g(search)h(o)o(v)o
10059 (erhead\).)40 b(There)0 4447 y(is)29 b(no)g(synchronization)f(o)o(v)o
10060 (erhead)g(in)h(the)g(APHID)h(algorithm)e(since)h(the)g(algorithm)f
10061 (operates)h(in)g(an)g(asyn-)0 4646 y(chronous)24 b(manner)-5
10062 b(.)30 b(The)25 b(breakdo)n(wn)f(of)h(o)o(v)o(erheads)f(can)h(be)g(e)o
10063 (xpressed)f(in)h(the)f(follo)n(wing)f(formula:)380 4945
10064 y Fl(total)e(o)m(v)m(erhead)85 b(=)d(\(1)22 b(+)g(master)g(o)m(v)m
10065 (erhead)r(\))g Fk(\002)h Fl(\(1)e(+)h(parallelization)c(o)m(v)m(erhead)
10066 r(\))1244 5169 y Fk(\002)k Fl(\(1)g(+)g(total)f(searc)m(h)i(o)m(v)m
10067 (erhead)r(\))p Fq(:)1900 5589 y Fu(22)p eop
10069 23 25 bop 146 100 a Fu(The)30 b Fm(master)g(o)o(verhead)g
10070 Fu(is)f(the)h(approximate)f(penalty)h(incurred)g(by)g(ha)n(ving)f(a)i
10071 (single)e(processor)h(being)0 299 y(allocated)24 b(completely)f(to)h
10072 (the)h(handling)e(of)h(the)h(master)-5 b(.)29 b(This)24
10073 b(is)g(simply)f Fl(1)p Fq(=)p Fl(\()p Fq(n)d Fk(\000)h
10074 Fl(1\))p Fu(,)j(the)h(bene\002t)f(of)h(adding)0 498 y(another)g(sla)n
10075 (v)o(e)f(to)g(the)h(other)g Fq(n)d Fk(\000)h Fl(1)h Fu(sla)n(v)o(es.)
10076 146 697 y(The)37 b Fm(par)o(allelization)32 b(o)o(verhead)k
10077 Fu(is)g(the)g(penalty)f(incurred)i(by)e(the)h(APHID)h(library)f(on)g
10078 (the)g(speed)g(of)0 897 y(the)h(sla)n(v)o(es.)65 b(The)37
10079 b(dif)n(ference)g(between)g(the)g(rate)g(at)g(which)f(the)h(parallel)f
10080 (sla)n(v)o(es)g(e)o(xplore)g(nodes)h(and)f(the)0 1096
10081 y(sequential)29 b(program')-5 b(s)28 b(node)i(rate)g(is)f(the)g
10082 (parallelization)g(o)o(v)o(erhead.)44 b(This)29 b(o)o(v)o(erhead)f(is)i
10083 (deri)n(v)o(ed)e(partially)0 1295 y(from)g(the)h(cost)f(of)h(using)f
10084 (PVM,)g(and)h(partially)f(from)g(the)h(w)o(ork-scheduling)e(algorithm)h
10085 (on)g(each)h(sla)n(v)o(e.)42 b(In)0 1494 y(ef)n(fect,)34
10086 b(the)d(parallelization)g(o)o(v)o(erhead)f(includes)h(synchronization)f
10087 (o)o(v)o(erhead,)j(comple)o(xity)c(o)o(v)o(erhead)i(and)0
10088 1694 y(communication)23 b(o)o(v)o(erhead,)h(as)h(used)f(in)h(pre)n
10089 (vious)e(parallel)i Fq(\013)q(\014)30 b Fu(models)24
10090 b([12)o(,)h(15].)146 1893 y(The)d Fm(total)f(sear)l(c)o(h)g(o)o
10091 (verhead)h Fu(represents)f(the)h(number)f(of)h(additional)f(nodes)g
10092 (searched)h(by)g(the)g(algorithm)0 2092 y(while)37 b(attempting)f(to)h
10093 (determine)f(the)i Fq(d)p Fu(-ply)e(minimax)g(v)n(alue.)68
10094 b(In)37 b(the)h(case)g(of)f(APHID,)h(there)f(are)i(tw)o(o)0
10095 2291 y(o)o(v)o(erheads)29 b(that)g(combine)g(to)g(mak)o(e)h(the)f
10096 (total)g(search)h(o)o(v)o(erhead:)40 b(the)29 b(search)h(o)o(v)o
10097 (erhead)f(\(as)h(seen)g(in)f(other)0 2491 y(parallel)c(models\))f(and)g
10098 (the)h(speculati)n(v)o(e)e(search.)146 2690 y(The)33
10099 b Fm(sear)l(c)o(h)g(o)o(verhead)g Fu(represents)g(the)g(additional)f
10100 (nodes)g(searched)i(to)f(achie)n(v)o(e)f(the)h Fq(d)p
10101 Fu(-ply)g(minimax)0 2889 y(v)n(alue.)60 b(This)34 b(can)i(be)f
10102 (computed)e(by)i(di)n(viding)e(the)h(number)h(of)g(nodes)f(e)o(xamined)
10103 g(in)g(the)h(parallel)g(search)0 3088 y(by)29 b(the)g(number)g(of)g
10104 (nodes)g(e)o(xamined)f(in)h(the)g(corresponding)g(sequential)f(search.)
10105 45 b(Most)28 b(of)i(this)e(o)o(v)o(erhead)0 3288 y(is)j(incurred)g
10106 (when)g(the)g(parallel)g(v)o(ersion)f(uses)h(a)g(search)h(windo)n(w)d
10107 (that)i(is)g(not)f(as)h(precise)h(as)f(that)g(used)f(by)0
10108 3487 y(the)i(sequential)f(v)o(ersion.)51 b(If)32 b(a)g(shared-memory)g
10109 (transposition)e(table)h(is)h(not)f(used,)i(some)f(of)g(the)g(increase)
10110 0 3686 y(in)c(search)g(o)o(v)o(erhead)f(can)i(be)f(attrib)n(uted)f(to)g
10111 (information)g(de\002cienc)o(y)-6 b(,)28 b(since)g(data)g(is)f(not)g
10112 (shared)i(ef)n(\002ciently)0 3885 y(between)c(the)g(processes.)146
10113 4085 y(The)19 b(remainder)g(of)g(the)g(increase)h(in)e(search)i(o)o(v)o
10114 (erhead)e(is)g(attrib)n(utable)g(to)h(the)g(load-balancing)f
10115 (algorithm.)0 4284 y(The)k(APHID)f(algorithm)f(forces)i(w)o(ork)g(to)f
10116 (be)h(recalculated)f(when)h(it)f(is)g(mo)o(v)o(ed)f(to)h(another)g
10117 (processor)-5 b(.)29 b(When)0 4483 y(there)e(are)h(more)f(processors)g
10118 (in)g(the)g(system,)f(the)h(load-balancing)f(algorithm)g(is)h(more)g
10119 (acti)n(v)o(e)f(in)h(balancing)0 4682 y(the)e(w)o(orkload,)f(thus)g
10120 (causing)g(more)h(search)g(o)o(v)o(erhead.)146 4882 y(Since)33
10121 b(each)g(position)e(is)h(searched)h(to)f Fq(d)g Fu(ply)-6
10122 b(,)33 b(the)g(asynchronous)e(nature)i(of)f(the)g(sla)n(v)o(es)g(will)g
10123 (result)f(in)0 5081 y(some)22 b(w)o(ork)g(being)h(done)f(at)h(depth)f
10124 Fl(\()p Fq(d)14 b Fl(+)g(1\))22 b Fu(or)g(greater)-5
10125 b(.)31 b(The)22 b Fm(speculative)g(sear)l(c)o(h)g Fu(represents)h(the)f
10126 (amount)g(of)0 5280 y(additional)d(search)h(that)g(APHID)g(has)g
10127 (undertak)o(en)g(which)g(is)f(be)o(yond)g(what)h(the)g(sequential)f
10128 (algorithm)g(w)o(ould)1900 5589 y(23)p eop
10130 24 26 bop 0 100 a Fu(attempt)22 b(for)i(a)f Fq(d)p Fu(-ply)g(search.)31
10131 b(It)23 b(can)h(be)f(computed)f(by)h(taking)g(the)g(number)g(of)g
10132 (speculati)n(v)o(e)f(nodes)h(searched)0 299 y(and)35
10133 b(di)n(viding)f(that)h(by)g(the)g(number)g(of)h(nodes)f(searched)h(in)f
10134 (the)h(sequential)e(case.)64 b(In)35 b(our)h(e)o(xperiments,)0
10135 498 y(speculati)n(v)o(e)d(search)i(results)e(are)i(computed,)h(b)n(ut)e
10136 (these)g(results)f(are)j(not)d(used)h(to)g(in\003uence)h(the)f(v)n
10137 (alue)g(of)0 697 y(shallo)n(wer)27 b(searches.)43 b(This)27
10138 b(allo)n(wed)h(the)g(APHID)h(algorithm)e(to)h(produce)h(the)f(same)g
10139 (search)h(v)n(alues)f(as)g(the)0 897 y(sequential)c(v)o(ersion)g(in)g
10140 (most)g(cases.)146 1096 y(Ignoring)32 b(the)g(speculati)n(v)o(e)e
10141 (search)j(results)e(understates)g(the)h(potential)f(of)h(the)g(APHID)h
10142 (algorithm.)51 b(In)0 1295 y(a)32 b(real)g(tournament)e(game,)j
10143 (speculati)n(v)o(e)d(search)i(could)f(be)h(used)f(to)g(look)g(an)h(e)o
10144 (xtra)f(mo)o(v)o(e)f(ahead)i(on)g(some)0 1494 y(k)o(e)o(y)24
10145 b(v)n(ariations.)29 b(It)c(is)f(highly)g(lik)o(ely)f(that)i(the)f(v)n
10146 (ariations)f(that)i(were)g(speculati)n(v)o(ely)d(e)o(xtended)i(will)g
10147 (be)h(in)f(the)0 1694 y(left-most)j(branches)h(of)g(the)g(tree.)41
10148 b(Thus,)28 b(sometimes)f(k)o(e)o(y)g(v)n(ariations)g(will)g(be)h
10149 (searched)h(an)f(additional)f(ply)0 1893 y(\(or)21 b(more\))g(deeper)-5
10150 b(.)30 b(This)20 b(allo)n(ws)g(APHID)i(to)e(\002nd)i(important)d(v)n
10151 (ariations)h(much)g(sooner)h(than)g(a)g(synchronous)0
10152 2092 y(parallel)k(program)f(with)g(the)h(same)f(observ)o(ed)h(speedup.)
10153 146 2291 y(T)-8 b(o)34 b(quantify)f(the)h(ef)n(fects)f(of)h(speculati)n
10154 (v)o(e)e(search)j(is)e(dif)n(\002cult.)57 b(T)-8 b(o)33
10155 b(do)h(so)f(means)h(that)f(there)h(must)f(be)0 2491 y(a)j(metric)g(for)
10156 g(measuring)f(the)g(quality)g(of)h(the)f(mo)o(v)o(e)g(selected)g(by)h
10157 (an)g(algorithm.)62 b(There)36 b(are)h(a)f(fe)n(w)g(test)0
10158 2690 y(sets)27 b(that)g(measure)h(mo)o(v)o(e)e(quality)h(in)g(chess,)h
10159 (where)g(the)g(performance)g(metric)f(is)g(ho)n(w)g(quickly)g(a)g
10160 (program)0 2889 y(determines)32 b(the)g(best)g(mo)o(v)o(e)e(in)i(a)h
10161 (tactical)f(position.)51 b(There)33 b(is)f(insuf)n(\002cient)f(kno)n
10162 (wledge)g(about)h(tactics)f(in)0 3088 y(Othello)h(to)h(design)f(a)i
10163 (similar)e(test.)55 b(Thus,)35 b(the)e(performance)h(metric)f(used)f
10164 (is)h(to)g(compare)g(speedups)g(for)0 3288 y(each)25
10165 b(program.)0 3583 y Fg(4.3)119 b(T)-11 b(est)29 b(Results)0
10166 3849 y Fu(Figure)23 b(7)f(gi)n(v)o(es)f(the)h(speedups)g(for)h(each)g
10167 (of)f(the)g(programs)g(tested,)g(while)g(Figure)h(8)f(gi)n(v)o(es)f
10168 (the)h(o)o(v)o(erheads)g(for)0 4049 y(each)j(program)g(on)f(separate)i
10169 (graphs.)146 4248 y(Figure)33 b(7)e(sho)n(ws)g(that)h(the)g(speedups)f
10170 (for)h(the)g(Othello)f(program,)k(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)r
10171 Fu(,)38 b(are)33 b(signi\002cantly)d(lar)n(ger)0 4447
10172 y(than)k(the)f(speedups)h(for)g(the)f(other)h(three)g(programs.)58
10173 b(There)34 b(are)h(tw)o(o)e(reasons)h(for)g(this.)57
10174 b(First,)36 b(the)e(trees)0 4646 y(that)28 b(were)i(measured)e(in)j(K)t
10175 Fa(E)t(Y)-6 b(A)t(N)t(O)34 b Fu(are)c(\002x)o(ed-depth)e(trees,)h
10176 (whereas)h(the)e(other)h(programs)f(had)h(a)g(v)n(ariable)0
10177 4846 y(search)h(depth)f(due)g(to)g(quiescence)h(searches.)45
10178 b(This)28 b(mak)o(es)h(the)g(load)g(balancing)g(v)o(ery)g(easy)h(for)h
10179 (K)t Fa(E)t(Y)-6 b(A)t(N)t(O)r Fu(.)0 5045 y(APHID)25
10180 b(thri)n(v)o(es)d(when)i(there)g(is)g(little)f(v)n(ariance)h(in)g(the)g
10181 (size)g(of)g(each)h(piece)f(of)h(w)o(ork.)30 b(When)24
10182 b(the)g(equi)n(v)n(alent)0 5244 y(of)h(quiescence)g(search)g(is)g
10183 (added)f(to)j(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)r Fu(,)28 b(the)d(speedup)f
10184 (drops)h(from)f(37)h(to)f(22)h(on)f(64)h(processors)f([2].)1900
10188 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig
10190 %%BeginDocument: pics/speedup_all.ps
10191 /gnudict 40 dict def
10195 /gnulinewidth 5.000 def
10200 /M {moveto} bind def
10201 /L {lineto} bind def
10202 /R {rmoveto} bind def
10203 /V {rlineto} bind def
10204 /vpt2 vpt 2 mul def
10205 /hpt2 hpt 2 mul def
10206 /Lshow { currentpoint stroke M
10207 0 vshift R show } def
10208 /Rshow { currentpoint stroke M
10209 dup stringwidth pop neg vshift R show } def
10210 /Cshow { currentpoint stroke M
10211 dup stringwidth pop -2 div vshift R show } def
10212 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
10213 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
10214 /BL { stroke gnulinewidth 2 mul setlinewidth } def
10215 /AL { stroke gnulinewidth 2 div setlinewidth } def
10216 /PL { stroke gnulinewidth setlinewidth } def
10217 /LTb { BL [] 0 0 0 DL } def
10218 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
10219 /LT0 { PL [] 0 1 0 DL } def
10220 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
10221 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
10222 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
10223 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
10224 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
10225 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
10226 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
10227 /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
10228 /P { stroke [] 0 setdash
10229 currentlinewidth 2 div sub M
10230 0 currentlinewidth V stroke } def
10231 /D { stroke [] 0 setdash 2 copy vpt add M
10232 hpt neg vpt neg V hpt vpt neg V
10233 hpt vpt V hpt neg vpt V closepath stroke
10235 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
10236 currentpoint stroke M
10237 hpt neg vpt neg R hpt2 0 V stroke
10239 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
10240 0 vpt2 neg V hpt2 0 V 0 vpt2 V
10241 hpt2 neg 0 V closepath stroke
10243 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
10244 hpt2 vpt2 neg V currentpoint stroke M
10245 hpt2 neg 0 R hpt2 vpt2 V stroke } def
10246 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
10247 hpt neg vpt -1.62 mul V
10249 hpt neg vpt 1.62 mul V closepath stroke
10251 /S { 2 copy A C} def
10258 /Helvetica findfont 180 scalefont setfont
10392 currentpoint gsave translate 90 rotate 0 0 M
10396 (Number of Processors) Cshow
10399 (Perfect Speedup) Rshow
10465 1212 1523 a Fu(Figure)25 b(7:)31 b(Speedups)25 b(for)g(All)f(Programs)
10466 146 1811 y(The)h(second)g(reason)g(is)g(that)f(the)h(transposition)e
10467 (table)i(is)g(not)f(as)h(critical)g(in)g(Othello)f(as)h(it)f(is)h(in)f
10468 (the)h(other)0 2010 y(three)37 b(programs.)65 b(When)36
10469 b(all)g(64)g(processors)g(attempt)g(to)g(write)g(into)f(a)i(400)f(MB)h
10470 (transposition)d(table,)39 b(a)0 2209 y(processor)32
10471 b(o)o(v)o(erwrites)f(another)h(processor')-5 b(s)32 b(table)g(entries)g
10472 (frequently)-6 b(.)52 b(This)31 b(inhibits)g(the)h(ability)f(of)h(the)0
10473 2408 y(processors)f(to)g(detect)g(positions)e(that)i(ha)n(v)o(e)g
10474 (already)g(been)h(searched.)50 b(Duplicate)31 b(node)g(detection)f(via)
10475 h(the)0 2608 y(transposition)k(table)h(is)h(important)e(to)h
10476 (controlling)f(the)i(size)g(of)g(the)f(search)i(tree)f(in)f(chess)h
10477 (and)g(check)o(ers)0 2807 y(programs.)49 b(The)31 b(limited)e(size)j
10478 (of)f(the)g(transposition)e(table)h(is)h(of)g(little)f(importance)h(in)
10479 f(searching)h(Othello)0 3006 y(game)k(trees)g(in)g(parallel,)i(because)
10480 f(achie)n(ving)e(the)h(same)g(position)f(by)h(dif)n(ferent)g(sequences)
10481 g(of)g(mo)o(v)o(es)f(is)0 3205 y(much)27 b(more)h(dif)n(\002cult.)39
10482 b(Thus,)28 b(better)g(results)f(are)i(obtained)e(when)h(searching)g
10483 (Othello)f(trees)h(than)f(chess)h(or)0 3405 y(check)o(ers)d(trees.)585
10484 3369 y Fn(7)146 3604 y Fu(In)c(an)g(algorithm)f(that)g(does)g(not)h
10485 (synchronize,)g(it)f(should)g(not)g(be)h(surprising)e(to)i(disco)o(v)o
10486 (er)e(that)i(the)f(lar)n(gest)0 3803 y(portion)29 b(of)h(the)g(total)g
10487 (o)o(v)o(erhead)f(is)h(accounted)g(for)h(by)f(the)g(search)g(o)o(v)o
10488 (erhead)g(and)g(the)g(speculati)n(v)o(e)f(search.)0 4002
10489 y(As)j(the)g(number)f(of)h(processes)g(increases,)i(the)d(processors)h
10490 (get)g(fe)n(wer)g(pieces)g(of)g(w)o(ork)g(and)g(the)g(need)g(for)0
10491 4202 y(load)d(balancing)g(increases.)46 b(This)28 b(also)i(allo)n(ws)e
10492 (some)h(of)h(the)f(less)g(b)n(usy)g(sla)n(v)o(es)g(to)g(get)h(further)f
10493 (ahead)h(than)0 4401 y(the)25 b(o)o(v)o(erw)o(ork)o(ed)e(sla)n(v)o(es,)
10494 h(causing)g(a)i(rise)e(in)h(the)f(speculati)n(v)o(e)g(search.)146
10495 4600 y(T)-8 b(o)19 b(put)f(the)h(APHID)g(results)f(in)h(perspecti)n(v)o
10496 (e,)f(a)i(v)o(ersion)d(of)i(YBWC)h(has)f(been)g(implemented)e(in)j(K)t
10497 Fa(E)t(Y)-6 b(A)t(N)t(O)r Fu(.)0 4799 y(The)27 b(algorithm)f(w)o(as)h
10498 (tak)o(en)h(directly)e(from)h(Feldmann')-5 b(s)27 b(thesis)f([3].)39
10499 b(A)27 b(considerable)g(ef)n(fort)g(w)o(as)g(spent)g(at-)0
10500 4999 y(tempting)33 b(to)h(optimize)g(the)g(performance)h(of)g(the)g
10501 (algorithm.)58 b(YBWC)36 b(and)f(APHID)g(were)g(tested)f(under)p
10502 0 5088 1560 4 v 112 5150 a Fj(7)149 5180 y Fi(A)h(lar)o(ger)e
10503 (transposition)f(table)i(\(4-8)f(GB)i(of)e(RAM\))i(for)e(both)g(the)h
10504 (sequential)f(and)h(parallel)f(tests)j(w)o(ould)d(impro)o(v)o(e)f(the)0
10505 5279 y(speedups)19 b(of)h(the)g(check)o(ers)g(and)f(chess)i(programs.)i
10506 (This)d(w)o(as)h(not)f(possible)g(to)g(test)h(because)f(of)g(resource)f
10507 (constraints.)1900 5589 y Fu(25)p eop
10510 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig
10512 %%BeginDocument: pics/overhead_keyano.ps
10513 /gnudict 40 dict def
10517 /gnulinewidth 5.000 def
10522 /M {moveto} bind def
10523 /L {lineto} bind def
10524 /R {rmoveto} bind def
10525 /V {rlineto} bind def
10526 /vpt2 vpt 2 mul def
10527 /hpt2 hpt 2 mul def
10528 /Lshow { currentpoint stroke M
10529 0 vshift R show } def
10530 /Rshow { currentpoint stroke M
10531 dup stringwidth pop neg vshift R show } def
10532 /Cshow { currentpoint stroke M
10533 dup stringwidth pop -2 div vshift R show } def
10534 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
10535 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
10536 /BL { stroke gnulinewidth 2 mul setlinewidth } def
10537 /AL { stroke gnulinewidth 2 div setlinewidth } def
10538 /PL { stroke gnulinewidth setlinewidth } def
10539 /LTb { BL [] 0 0 0 DL } def
10540 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
10541 /LT0 { PL [] 0 1 0 DL } def
10542 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
10543 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
10544 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
10545 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
10546 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
10547 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
10548 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
10549 /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
10550 /P { stroke [] 0 setdash
10551 currentlinewidth 2 div sub M
10552 0 currentlinewidth V stroke } def
10553 /D { stroke [] 0 setdash 2 copy vpt add M
10554 hpt neg vpt neg V hpt vpt neg V
10555 hpt vpt V hpt neg vpt V closepath stroke
10557 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
10558 currentpoint stroke M
10559 hpt neg vpt neg R hpt2 0 V stroke
10561 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
10562 0 vpt2 neg V hpt2 0 V 0 vpt2 V
10563 hpt2 neg 0 V closepath stroke
10565 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
10566 hpt2 vpt2 neg V currentpoint stroke M
10567 hpt2 neg 0 R hpt2 vpt2 V stroke } def
10568 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
10569 hpt neg vpt -1.62 mul V
10571 hpt neg vpt 1.62 mul V closepath stroke
10573 /S { 2 copy A C} def
10580 /Helvetica findfont 180 scalefont setfont
10720 currentpoint gsave translate 90 rotate 0 0 M
10721 (Overhead \(in Percent\)) Cshow
10724 (Number of Processors) Cshow
10726 (Keyano-APHID) Rshow
10729 (Total Overhead) Rshow
10743 (Master Overhead) Rshow
10757 (Search Overhead) Rshow
10771 (Speculative Search) Rshow
10785 (Parallelization Overhead) Rshow
10805 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig
10807 %%BeginDocument: pics/overhead_chinook.ps
10808 /gnudict 40 dict def
10812 /gnulinewidth 5.000 def
10817 /M {moveto} bind def
10818 /L {lineto} bind def
10819 /R {rmoveto} bind def
10820 /V {rlineto} bind def
10821 /vpt2 vpt 2 mul def
10822 /hpt2 hpt 2 mul def
10823 /Lshow { currentpoint stroke M
10824 0 vshift R show } def
10825 /Rshow { currentpoint stroke M
10826 dup stringwidth pop neg vshift R show } def
10827 /Cshow { currentpoint stroke M
10828 dup stringwidth pop -2 div vshift R show } def
10829 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
10830 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
10831 /BL { stroke gnulinewidth 2 mul setlinewidth } def
10832 /AL { stroke gnulinewidth 2 div setlinewidth } def
10833 /PL { stroke gnulinewidth setlinewidth } def
10834 /LTb { BL [] 0 0 0 DL } def
10835 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
10836 /LT0 { PL [] 0 1 0 DL } def
10837 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
10838 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
10839 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
10840 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
10841 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
10842 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
10843 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
10844 /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
10845 /P { stroke [] 0 setdash
10846 currentlinewidth 2 div sub M
10847 0 currentlinewidth V stroke } def
10848 /D { stroke [] 0 setdash 2 copy vpt add M
10849 hpt neg vpt neg V hpt vpt neg V
10850 hpt vpt V hpt neg vpt V closepath stroke
10852 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
10853 currentpoint stroke M
10854 hpt neg vpt neg R hpt2 0 V stroke
10856 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
10857 0 vpt2 neg V hpt2 0 V 0 vpt2 V
10858 hpt2 neg 0 V closepath stroke
10860 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
10861 hpt2 vpt2 neg V currentpoint stroke M
10862 hpt2 neg 0 R hpt2 vpt2 V stroke } def
10863 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
10864 hpt neg vpt -1.62 mul V
10866 hpt neg vpt 1.62 mul V closepath stroke
10868 /S { 2 copy A C} def
10875 /Helvetica findfont 180 scalefont setfont
11015 currentpoint gsave translate 90 rotate 0 0 M
11016 (Overhead \(in Percent\)) Cshow
11019 (Number of Processors) Cshow
11021 (Chinook-APHID) Rshow
11024 (Total Overhead) Rshow
11036 (Master Overhead) Rshow
11048 (Search Overhead) Rshow
11060 (Speculative Search) Rshow
11072 (Parallelization Overhead) Rshow
11090 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig
11092 %%BeginDocument: pics/overhead_crafty.ps
11093 /gnudict 40 dict def
11097 /gnulinewidth 5.000 def
11102 /M {moveto} bind def
11103 /L {lineto} bind def
11104 /R {rmoveto} bind def
11105 /V {rlineto} bind def
11106 /vpt2 vpt 2 mul def
11107 /hpt2 hpt 2 mul def
11108 /Lshow { currentpoint stroke M
11109 0 vshift R show } def
11110 /Rshow { currentpoint stroke M
11111 dup stringwidth pop neg vshift R show } def
11112 /Cshow { currentpoint stroke M
11113 dup stringwidth pop -2 div vshift R show } def
11114 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
11115 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
11116 /BL { stroke gnulinewidth 2 mul setlinewidth } def
11117 /AL { stroke gnulinewidth 2 div setlinewidth } def
11118 /PL { stroke gnulinewidth setlinewidth } def
11119 /LTb { BL [] 0 0 0 DL } def
11120 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
11121 /LT0 { PL [] 0 1 0 DL } def
11122 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
11123 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
11124 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
11125 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
11126 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
11127 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
11128 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
11129 /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
11130 /P { stroke [] 0 setdash
11131 currentlinewidth 2 div sub M
11132 0 currentlinewidth V stroke } def
11133 /D { stroke [] 0 setdash 2 copy vpt add M
11134 hpt neg vpt neg V hpt vpt neg V
11135 hpt vpt V hpt neg vpt V closepath stroke
11137 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
11138 currentpoint stroke M
11139 hpt neg vpt neg R hpt2 0 V stroke
11141 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
11142 0 vpt2 neg V hpt2 0 V 0 vpt2 V
11143 hpt2 neg 0 V closepath stroke
11145 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
11146 hpt2 vpt2 neg V currentpoint stroke M
11147 hpt2 neg 0 R hpt2 vpt2 V stroke } def
11148 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
11149 hpt neg vpt -1.62 mul V
11151 hpt neg vpt 1.62 mul V closepath stroke
11153 /S { 2 copy A C} def
11160 /Helvetica findfont 180 scalefont setfont
11300 currentpoint gsave translate 90 rotate 0 0 M
11301 (Overhead \(in Percent\)) Cshow
11304 (Number of Processors) Cshow
11306 (Crafty-APHID) Rshow
11309 (Total Overhead) Rshow
11321 (Master Overhead) Rshow
11333 (Search Overhead) Rshow
11345 (Speculative Search) Rshow
11357 (Parallelization Overhead) Rshow
11375 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig
11377 %%BeginDocument: pics/overhead_theturk.ps
11378 /gnudict 40 dict def
11382 /gnulinewidth 5.000 def
11387 /M {moveto} bind def
11388 /L {lineto} bind def
11389 /R {rmoveto} bind def
11390 /V {rlineto} bind def
11391 /vpt2 vpt 2 mul def
11392 /hpt2 hpt 2 mul def
11393 /Lshow { currentpoint stroke M
11394 0 vshift R show } def
11395 /Rshow { currentpoint stroke M
11396 dup stringwidth pop neg vshift R show } def
11397 /Cshow { currentpoint stroke M
11398 dup stringwidth pop -2 div vshift R show } def
11399 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
11400 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
11401 /BL { stroke gnulinewidth 2 mul setlinewidth } def
11402 /AL { stroke gnulinewidth 2 div setlinewidth } def
11403 /PL { stroke gnulinewidth setlinewidth } def
11404 /LTb { BL [] 0 0 0 DL } def
11405 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
11406 /LT0 { PL [] 0 1 0 DL } def
11407 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
11408 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
11409 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
11410 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
11411 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
11412 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
11413 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
11414 /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
11415 /P { stroke [] 0 setdash
11416 currentlinewidth 2 div sub M
11417 0 currentlinewidth V stroke } def
11418 /D { stroke [] 0 setdash 2 copy vpt add M
11419 hpt neg vpt neg V hpt vpt neg V
11420 hpt vpt V hpt neg vpt V closepath stroke
11422 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
11423 currentpoint stroke M
11424 hpt neg vpt neg R hpt2 0 V stroke
11426 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
11427 0 vpt2 neg V hpt2 0 V 0 vpt2 V
11428 hpt2 neg 0 V closepath stroke
11430 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
11431 hpt2 vpt2 neg V currentpoint stroke M
11432 hpt2 neg 0 R hpt2 vpt2 V stroke } def
11433 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
11434 hpt neg vpt -1.62 mul V
11436 hpt neg vpt 1.62 mul V closepath stroke
11438 /S { 2 copy A C} def
11445 /Helvetica findfont 180 scalefont setfont
11585 currentpoint gsave translate 90 rotate 0 0 M
11586 (Overhead \(in Percent\)) Cshow
11589 (Number of Processors) Cshow
11591 (TheTurk-APHID) Rshow
11594 (Total Overhead) Rshow
11606 (Master Overhead) Rshow
11618 (Search Overhead) Rshow
11630 (Speculative Search) Rshow
11642 (Parallelization Overhead) Rshow
11658 1191 2972 a Fu(Figure)25 b(8:)30 b(Ov)o(erheads)25 b(for)g(All)f
11659 (Programs)0 3259 y(similar)35 b(conditions:)53 b(the)36
11660 b(same)h(test)f(set,)j(same)d(search)i(depth,)g(and)f(the)f(same)h
11661 (size)g(of)f(shared)h(memory)0 3458 y(transposition)22
11662 b(table.)31 b(The)24 b(performance)h(of)g(APHID)g(v)o(ersus)f(YBWC)h
11663 (can)g(be)g(seen)g(in)f(Figure)h(9.)30 b(YBWC)c(is)0
11664 3657 y(rapidly)i(starv)o(ed)h(out)f(of)h(w)o(ork)g(to)g(do)g(once)g(64)
11665 g(processors)f(are)i(reached.)44 b(The)29 b(synchronization)f(o)o(v)o
11666 (erhead)0 3857 y(increases)d(dramatically)f(and)h(the)f(processors)h
11667 (are)g(only)f(b)n(usy)h(60\045)f(of)h(the)g(time.)146
11668 4056 y(The)33 b(search)g(o)o(v)o(erhead)f(in)g(YBWC)h(starts)f(at)g(a)h
11669 (higher)f(le)n(v)o(el)f(than)i(for)f(APHID)h(on)f(8)h(processors,)h(b)n
11670 (ut)0 4255 y(the)i(search)g(o)o(v)o(erhead)g(in)f(APHID)i(rapidly)e
11671 (increases)h(past)g(the)g(equi)n(v)n(alent)e(le)n(v)o(el)h(in)h(YBWC.)g
11672 (Ho)n(we)n(v)o(er)l(,)0 4454 y(it)c(is)g(important)f(to)i(note)f(that)g
11673 (the)h(o)o(v)o(erhead)e(in)i(APHID)g(is)f(partially)g(due)g(to)g
11674 (speculati)n(v)o(e)f(search.)55 b(When)0 4654 y(APHID)38
11675 b(is)f(run)h(on)g(64)f(processors,)k(a)d(32.65\045)f(o)o(v)o(erhead)g
11676 (is)g(attrib)n(uted)g(to)g(speculati)n(v)o(e)f(search.)70
11677 b(If)38 b(the)0 4853 y(search)25 b(were)g(e)o(xtended)f(an)h(e)o(xtra)f
11678 (ply)-6 b(,)23 b(these)i(speculati)n(v)o(e)d(search)j(results)f(w)o
11679 (ould)g(gi)n(v)o(e)f(APHID)i(a)g(head)f(start)0 5052
11680 y(on)i(the)g(ne)o(xt)g(iteration;)g(YBWC)h(w)o(ould)f(be)h(forced)g(to)
11681 f(attempt)f(the)h(entire)h(search)g(from)f(scratch.)36
11682 b(YBWC')-5 b(s)0 5251 y(parallelization)21 b(o)o(v)o(erhead)f(is)i
11683 (much)f(lo)n(wer)g(than)g(the)g(equi)n(v)n(alent)f(o)o(v)o(erheads)h
11684 (in)g(APHID.)h(Ho)n(we)n(v)o(er)l(,)f(APHID)1900 5589
11688 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig
11690 %%BeginDocument: pics/aphidybw_keyano.ps
11691 /gnudict 40 dict def
11695 /gnulinewidth 5.000 def
11700 /M {moveto} bind def
11701 /L {lineto} bind def
11702 /R {rmoveto} bind def
11703 /V {rlineto} bind def
11704 /vpt2 vpt 2 mul def
11705 /hpt2 hpt 2 mul def
11706 /Lshow { currentpoint stroke M
11707 0 vshift R show } def
11708 /Rshow { currentpoint stroke M
11709 dup stringwidth pop neg vshift R show } def
11710 /Cshow { currentpoint stroke M
11711 dup stringwidth pop -2 div vshift R show } def
11712 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
11713 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
11714 /BL { stroke gnulinewidth 2 mul setlinewidth } def
11715 /AL { stroke gnulinewidth 2 div setlinewidth } def
11716 /PL { stroke gnulinewidth setlinewidth } def
11717 /LTb { BL [] 0 0 0 DL } def
11718 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
11719 /LT0 { PL [] 0 1 0 DL } def
11720 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
11721 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
11722 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
11723 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
11724 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
11725 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
11726 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
11727 /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
11728 /P { stroke [] 0 setdash
11729 currentlinewidth 2 div sub M
11730 0 currentlinewidth V stroke } def
11731 /D { stroke [] 0 setdash 2 copy vpt add M
11732 hpt neg vpt neg V hpt vpt neg V
11733 hpt vpt V hpt neg vpt V closepath stroke
11735 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
11736 currentpoint stroke M
11737 hpt neg vpt neg R hpt2 0 V stroke
11739 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
11740 0 vpt2 neg V hpt2 0 V 0 vpt2 V
11741 hpt2 neg 0 V closepath stroke
11743 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
11744 hpt2 vpt2 neg V currentpoint stroke M
11745 hpt2 neg 0 R hpt2 vpt2 V stroke } def
11746 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
11747 hpt neg vpt -1.62 mul V
11749 hpt neg vpt 1.62 mul V closepath stroke
11751 /S { 2 copy A C} def
11758 /Helvetica findfont 180 scalefont setfont
11892 currentpoint gsave translate 90 rotate 0 0 M
11896 (Number of Processors) Cshow
11899 (Perfect Speedup) Rshow
11910 (APHID, fixed-depth, shared TT) Rshow
11924 (YBW, fixed-depth, shared TT) Rshow
11944 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig
11946 %%BeginDocument: pics/overhead_ybwkeyano.ps
11947 /gnudict 40 dict def
11951 /gnulinewidth 5.000 def
11956 /M {moveto} bind def
11957 /L {lineto} bind def
11958 /R {rmoveto} bind def
11959 /V {rlineto} bind def
11960 /vpt2 vpt 2 mul def
11961 /hpt2 hpt 2 mul def
11962 /Lshow { currentpoint stroke M
11963 0 vshift R show } def
11964 /Rshow { currentpoint stroke M
11965 dup stringwidth pop neg vshift R show } def
11966 /Cshow { currentpoint stroke M
11967 dup stringwidth pop -2 div vshift R show } def
11968 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
11969 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
11970 /BL { stroke gnulinewidth 2 mul setlinewidth } def
11971 /AL { stroke gnulinewidth 2 div setlinewidth } def
11972 /PL { stroke gnulinewidth setlinewidth } def
11973 /LTb { BL [] 0 0 0 DL } def
11974 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
11975 /LT0 { PL [] 0 1 0 DL } def
11976 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
11977 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
11978 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
11979 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
11980 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
11981 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
11982 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
11983 /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
11984 /P { stroke [] 0 setdash
11985 currentlinewidth 2 div sub M
11986 0 currentlinewidth V stroke } def
11987 /D { stroke [] 0 setdash 2 copy vpt add M
11988 hpt neg vpt neg V hpt vpt neg V
11989 hpt vpt V hpt neg vpt V closepath stroke
11991 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
11992 currentpoint stroke M
11993 hpt neg vpt neg R hpt2 0 V stroke
11995 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
11996 0 vpt2 neg V hpt2 0 V 0 vpt2 V
11997 hpt2 neg 0 V closepath stroke
11999 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
12000 hpt2 vpt2 neg V currentpoint stroke M
12001 hpt2 neg 0 R hpt2 vpt2 V stroke } def
12002 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
12003 hpt neg vpt -1.62 mul V
12005 hpt neg vpt 1.62 mul V closepath stroke
12007 /S { 2 copy A C} def
12014 /Helvetica findfont 180 scalefont setfont
12154 currentpoint gsave translate 90 rotate 0 0 M
12155 (Overhead \(in Percent\)) Cshow
12158 (Number of Processors) Cshow
12160 (Keyano-YBWC) Rshow
12163 (Total Overhead) Rshow
12177 (Synchronization Overhead) Rshow
12191 (Search Overhead) Rshow
12205 (Parallelization Overhead) Rshow
12224 167 1523 a Fu(Figure)25 b(9:)30 b(Speedups)25 b(and)g(Ov)o(erheads)f
12225 (for)j(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)31 b Fu(\(YBWC,)26
12226 b(Fix)o(ed-Depth,)d(Shared)j(Memory\))0 1811 y(ne)n(v)o(er)e(slo)n(ws)g
12227 (do)n(wn)f(to)i(w)o(ait)f(for)h(messages)f(from)h(another)g(processor)f
12228 (or)h(to)g(\002nd)g(w)o(ork.)146 2010 y(The)k(observ)o(ed)g(speedups)f
12229 (for)i(YBWC)g(are)g(in)e(line)h(with)f(other)h(published)f(performance)
12230 i(numbers)e(for)0 2209 y(this)g(algorithm.)41 b(W)-8
12231 b(eill)28 b(tested)h(YBWC)g(and)g(ABD)l(AD)l(A)g(on)f(a)i(CM-5)e(using)
12232 g(a)h(dif)n(ferent)g(Othello)e(program)0 2408 y([17].)74
12233 b(YBWC)40 b(achie)n(v)o(ed)f(a)g(9.5-fold)g(speedup)g(and)g(ABD)l(AD)l
12234 (A)g(achie)n(v)o(ed)g(an)g(11-fold)g(speedup)f(on)h(16)0
12235 2608 y(processors,)24 b(comparable)h(numbers)f(to)g(that)h(achie)n(v)o
12236 (ed)f(by)g(the)j(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)31 b Fu(implementation.)
12237 146 2807 y(Switching)38 b(to)g(the)g(check)o(ers)h(program)f(results,)j
12238 (the)d(speedups)g(for)i(C)t Fa(H)t(I)t(N)t(O)t(O)t(K)45
12239 b Fu(could)38 b(be)g(described)0 3006 y(as)e(disappointing.)62
12240 b(Ho)n(we)n(v)o(er)l(,)38 b(other)e(authors)f(that)h(ha)n(v)o(e)f
12241 (attempted)g(to)h(parallelize)g(check)o(ers)h(programs)0
12242 3205 y(with)29 b(synchronous)f(algorithms)g(ha)n(v)o(e)h(met)g(with)g
12243 (limited)f(success.)44 b(The)30 b(best-kno)n(wn)e(speedup)h(for)h(a)f
12244 (syn-)0 3405 y(chronous)f(algorithm)f(on)i(a)g(high-performance)f
12245 (check)o(ers)i(program)e(is)g(3.32)g(for)h(Lu')-5 b(s)28
12246 b(Principal)h(V)-11 b(ariation)0 3604 y(Frontier)29 b(Splitting)f(with)
12247 h(Load)g(Balancing)h([12)o(].)45 b(Thus,)30 b(the)f(observ)o(ed)g
12248 (speedup)g(of)g(14.35)g(on)g(64)g(proces-)0 3803 y(sors)24
12249 b(for)h(APHID)g(is)f(a)h(four)n(-fold)f(impro)o(v)o(ement)e(o)o(v)o(er)
12250 i(pre)n(viously)f(published)g(results)h(for)g(an)o(y)g(synchronous)0
12251 4002 y(algorithm)f(in)i(the)f(domain)g(of)h(check)o(ers.)146
12252 4202 y(APHID)i(can)g(yield)f(lar)n(ger)h(observ)o(ed)e(speedups)h(than)
12253 g(synchronous)f(algorithms)f(in)i(domains)f(with)h(lo)n(w)0
12254 4401 y(branching)h(f)o(actors)i(such)e(as)h(check)o(ers)h(and)f
12255 (Othello.)39 b(Higher)27 b(branching)h(f)o(actors)g(are)h(represented)f
12256 (by)g(tw)o(o)0 4600 y(computer)g(chess)h(programs:)41
12257 b(C)t Fa(R)t(A)t(F)t(T)t(Y)36 b Fu(and)31 b(T)t Fa(H)t(E)t
12258 Fu(T)t Fa(U)t(R)t(K)r Fu(.)49 b(In)29 b(computer)f(chess)h(algorithms,)
12259 f(synchronous)0 4799 y(parallel)23 b(algorithms)f(achie)n(v)o(e)h
12260 (higher)g(ef)n(\002ciencies)h(because)g(of)f(the)g(increased)h(number)f
12261 (of)g(parallel)h(alterna-)0 4999 y(ti)n(v)o(es)i(a)n(v)n(ailable)h(at)h
12262 (ALL)g(nodes.)39 b(Consider)28 b(W)-8 b(eill')j(s)27
12263 b(tests)g(on)h(a)g(32-processor)f(CM-5)h(as)g(representati)n(v)o(e)f
12264 (of)0 5198 y(synchronous)19 b(parallel)h(algorithm)f(performance.)30
12265 b(W)-8 b(eill')j(s)19 b(implementation)f(of)i(YBWC)h(for)g(chess)f
12266 (achie)n(v)o(ed)1900 5589 y(27)p eop
12268 28 30 bop 0 100 a Fu(a)22 b(speedup)g(of)g(12)g(on)f(32)h(processors,)g
12269 (and)g(ABD)l(AD)l(A)g(achie)n(v)o(ed)g(a)g(speedup)g(of)g(16)f([17].)30
12270 b(W)-8 b(eill')j(s)21 b(results)g(are)0 299 y(similar)h(to)g(other)h
12271 (reported)g(speedups)g(with)f(synchronous)g(game-tree)g(search)i
12272 (algorithms.)k(The)23 b(majority)f(of)0 498 y(these)i(algorithms)f(ha)n
12273 (v)o(e)h(been)h(tested)e(under)i(similar)e(conditions)g(to)h(those)f
12274 (used)i(for)f(the)g(chess)h(programs)e(in)0 697 y(this)i(paper)-5
12275 b(.)33 b(Although)24 b(it)h(is)g(not)g(an)g(objecti)n(v)o(e)f
12276 (comparison)h(between)h(algorithms,)e(the)h(observ)o(ed)g(speedups)0
12277 897 y(in)33 b(the)g(literature)g(for)g(most)f(synchronous)g(algorithms)
12278 f(are)j(comparable,)h(up)e(to)f(32)h(processors,)i(with)d(the)0
12279 1096 y(observ)o(ed)24 b(speedups)g(seen)h(for)g(the)g(APHID)g
12280 (algorithm)e(in)i(both)h(T)t Fa(H)t(E)t Fu(T)t Fa(U)t(R)t(K)32
12281 b Fu(and)26 b(C)t Fa(R)t(A)t(F)t(T)t(Y)r Fu(.)146 1295
12282 y(Dynamic)h(T)m(ree)h(Splitting,)f(when)h(using)f(the)g(same)h(testing)
12283 e(methodology)g(as)i(described)g(in)f(this)g(paper)l(,)0
12284 1494 y(achie)n(v)o(ed)18 b(a)i(speedup)f(of)g(8.81)g(on)g(16)g
12285 (processors)g([6].)29 b(Ho)n(we)n(v)o(er)l(,)19 b(a)h(latter)f(paper)g
12286 (which)g(used)g(a)h(non-standard)0 1694 y(testing)27
12287 b(methodology)g(\(using)g(a)i(series)g(of)f(related)h(positions)e(with)
12288 g(transposition)g(table)h(data)h(carried)g(o)o(v)o(er)0
12289 1893 y(from)24 b(search)g(to)g(search\))g(yielded)g(a)g(speedup)f(of)h
12290 (11.1)g(on)f(16)h(processors)f([7].)31 b(It)24 b(is)f(not)h(kno)n(wn)e
12291 (whether)i(the)0 2092 y(latter)h(testing)e(methodology)g(is)h
12292 (partially)g(responsible)g(for)h(the)g(dif)n(ference)g(in)f(the)h
12293 (observ)o(ed)f(results.)146 2291 y(Ho)n(we)n(v)o(er)l(,)c(there)f(is)h
12294 (one)f(important)f(data)i(point)f(that)g(is)g(signi\002cantly)f(lar)n
12295 (ger)i(than)g(the)f(reported)h(speedups)0 2491 y(by)g(an)o(y)g(other)g
12296 (author)-5 b(.)28 b(Feldmann')-5 b(s)20 b(Y)-11 b(oung)19
12297 b(Brothers)i(W)-8 b(ait)20 b(algorithm)f(in)j(Z)t Fa(U)t(G)t(Z)t(W)-6
12298 b(A)t(N)t(G)27 b Fu(achie)n(v)o(es)20 b(speedups)0 2690
12299 y(of)27 b(21.83)g(on)g(32)g(processors)g(and)g(37.34)f(on)h(64)g
12300 (processors)g(for)h(7-ply)e(searches)i(for)g(chess)f(that)f(tak)o(e)i
12301 (place)0 2889 y(in)h(tournament)g(time)g([3].)46 b(Results)29
12302 b(of)h(this)f(calibre)h(ha)n(v)o(e)f(not)g(been)h(reported)g(for)g(an)o
12303 (y)f(other)h(algorithm)e(or)0 3088 y(by)d(an)o(y)f(other)g(author)h
12304 (repeating)g(Feldmann')-5 b(s)23 b(w)o(ork.)146 3288
12305 y(Why)32 b(are)i(Feldmann')-5 b(s)31 b(observ)o(ed)h(speedups)g(so)g
12306 (lar)n(ge?)55 b(One)33 b(reason)g(is)f(that)i(Z)t Fa(U)t(G)t(Z)t(W)-6
12307 b(A)t(N)t(G)40 b Fu(is)32 b(a)h(slo)n(w)0 3487 y(sequential)26
12308 b(program.)38 b(C)t Fa(R)t(A)t(F)t(T)t(Y)c Fu(searches)27
12309 b(11-)f(and)h(12-ply)f(trees)h(on)f(32)g(processors)h(in)f(the)g(same)h
12310 (a)n(v)o(erage)0 3686 y(time)i(that)i(Z)t Fa(U)t(G)t(Z)t(W)-6
12311 b(A)t(N)t(G)37 b Fu(searches)30 b(7-ply)e(trees)i(on)f(32)g
12312 (processors.)45 b(Although)28 b(there)h(is)g(a)h(dramatic)f(speed)0
12313 3885 y(dif)n(ference)36 b(between)g(the)f(SGI)h(Origin)f(2000)g(\(on)g
12314 (which)g(Crafty)i(searches)f(130,000)e(nodes)h(per)h(second\))0
12315 4085 y(and)23 b(the)g(T)m(ransputer)f(T)-9 b(-800)23
12316 b(\(where)h(Zugzw)o(ang)e(visits)g(523)g(nodes)h(per)h(second\),)f
12317 (this)f(does)h(not)f(completely)0 4284 y(account)j(for)g(the)f(lar)n
12318 (ge)i(dif)n(ference)f(in)f(search)i(depths.)146 4483
12319 y(Unlik)o(e)f(other)h(game-playing)e(programs,)k(Z)t
12320 Fa(U)t(G)t(Z)t(W)-6 b(A)t(N)t(G)33 b Fu(spends)25 b(a)h(lar)n(ge)g
12321 (amount)f(of)h(time)f(doing)g(mo)o(v)o(e)0 4682 y(ordering)39
12322 b(at)h(each)h(node.)75 b(This)39 b(allo)n(ws)i(Z)t Fa(U)t(G)t(Z)t(W)-6
12323 b(A)t(N)t(G)47 b Fu(to)40 b(use)g(a)g(netw)o(ork)f(of)h(T)m(ransputers)
12324 f(as)h(a)g(shared)0 4882 y(memory)30 b(system)g(with)g(v)o(ery)g
12325 (little)g(loss)g(in)g(performance.)50 b(The)31 b(time)f(spent)g(in)g
12326 (mo)o(v)o(e)g(ordering)g(impro)o(v)o(es)2 5081 y(Z)t
12327 Fa(U)t(G)t(Z)t(W)-6 b(A)t(N)t(G)r Fu(')h(s)37 b(parallel)c(tree)f
12328 (search:)47 b(it)31 b(searches)i(the)g(best)f(mo)o(v)o(e)f(\002rst)h
12329 (96\045)g(of)h(the)f(time,)h(signi\002cantly)0 5280 y(better)28
12330 b(than)g(most)f(other)h(sequential)f(chess)h(programs.)40
12331 b(On)28 b(the)g(other)g(hand,)h(most)e(programs)h(use)g(less)f(e)o(x-)
12332 1900 5589 y(28)p eop
12334 29 31 bop 312 3 3256 4 v 312 20 V 310 120 4 100 v 493
12335 120 V 510 120 V 510 120 V 754 90 a Fi(K)n(e)o(yano)p
12336 1251 120 V 1268 120 V 1267 120 V 486 w(Chinook)p 2009
12337 120 V 2026 120 V 2025 120 V 527 w(Crafty)p 2808 120 V
12338 2825 120 V 2824 120 V 528 w(TheT)l(urk)p 3566 120 V 312
12339 123 3256 4 v 310 222 4 100 v 493 222 V 510 222 V 895
12340 222 V 990 193 a(T)-7 b(otal)p 1251 222 V 1268 222 V 1653
12341 222 V 589 w(T)g(otal)p 2009 222 V 2026 222 V 2411 222
12342 V 610 w(T)g(otal)p 2808 222 V 2825 222 V 3210 222 V 609
12343 w(T)g(otal)p 3566 222 V 310 322 V 493 322 V 510 322 V
12344 895 322 V 962 292 a(Search)p 1251 322 V 1268 322 V 1653
12345 322 V 530 w(Search)p 2009 322 V 2026 322 V 2411 322 V
12346 552 w(Search)p 2808 322 V 2825 322 V 3210 322 V 551 w(Search)p
12347 3566 322 V 310 422 V 383 392 a(n)p 493 422 V 510 422
12348 V 136 w(Speedup)p 895 422 V 135 w(Ov)o(er)i(.)p 1251
12349 422 V 1268 422 V 153 w(Speedup)p 1653 422 V 135 w(Ov)o(er)g(.)p
12350 2009 422 V 2026 422 V 153 w(Speedup)p 2411 422 V 155
12351 w(Ov)o(er)g(.)p 2808 422 V 2825 422 V 174 w(Speedup)p
12352 3210 422 V 135 w(Ov)o(er)g(.)p 3566 422 V 312 425 3256
12353 4 v 310 525 4 100 v 383 495 a(8)p 493 525 V 510 525 V
12354 206 w(5.74)p 895 525 V 189 w(9.12\045)p 1251 525 V 1268
12355 525 V 265 w(-)p 1653 525 V 343 w(-)p 2009 525 V 2026
12356 525 V 359 w(-)p 2411 525 V 363 w(-)p 2808 525 V 2825
12357 525 V 380 w(-)p 3210 525 V 343 w(-)p 3566 525 V 312 528
12358 3256 4 v 310 628 4 100 v 362 598 a(16)p 493 628 V 510
12359 628 V 165 w(11.27)p 895 628 V 147 w(17.26\045)p 1251
12360 628 V 1268 628 V 184 w(8.35)p 1653 628 V 168 w(87.45\045)p
12361 2009 628 V 2026 628 V 185 w(8.76)p 2411 628 V 210 w(69.9\045)p
12362 2808 628 V 2825 628 V 226 w(8.48)p 3210 628 V 168 w(59.26\045)p
12363 3566 628 V 312 631 3256 4 v 310 731 4 100 v 362 701 a(32)p
12364 493 731 V 510 731 V 165 w(21.99)p 895 731 V 147 w(28.78\045)p
12365 1251 731 V 1268 731 V 163 w(10.82)p 1653 731 V 147 w(201.6\045)p
12366 2009 731 V 2026 731 V 164 w(16.56)p 2411 731 V 168 w(120.7\045)p
12367 2808 731 V 2825 731 V 184 w(12.96)p 3210 731 V 147 w(157.2\045)p
12368 3566 731 V 312 734 3256 4 v 310 834 4 100 v 362 804 a(64)p
12369 493 834 V 510 834 V 165 w(37.44)p 895 834 V 147 w(76.72\045)p
12370 1251 834 V 1268 834 V 163 w(14.35)p 1653 834 V 147 w(393.1\045)p
12371 2009 834 V 2026 834 V 164 w(18.00)p 2411 834 V 147 w(300.65\045)p
12372 2808 834 V 2825 834 V 163 w(15.96)p 3210 834 V 147 w(384.8\045)p
12373 3566 834 V 312 837 3256 4 v 312 853 V 513 1013 a Fu(T)d(able)25
12374 b(I:)g(Speedup)g(Data)g(for)g(All)f(Programs)h(\(Fix)o(ed-Depth,)f
12375 (Shared)i(Memory\))0 1300 y(pensi)n(v)o(e)19 b(mo)o(v)o(e)g(ordering)i
12376 (heuristics)e(and)i(only)f(search)h(the)g(best)f(more)h(\002rst)f
12377 (80-90\045)h(of)f(the)h(time,)g(increasing)0 1499 y(the)j(node)h(rate)g
12378 (dramatically)-6 b(.)29 b(The)24 b(increase)i(in)e(nodes)g(per)h
12379 (second)f(easily)g(subsumes)f(the)h(additional)g(nodes)0
12380 1698 y(that)g(must)g(be)h(searched,)g(allo)n(wing)e(most)h(programs)g
12381 (to)h(out-search)g(sequential)g(Z)t Fa(U)t(G)t(Z)t(W)-6
12382 b(A)t(N)t(G)r Fu(.)146 1898 y(Another)34 b(reason)f(for)h(the)g(e)o
12383 (xtraordinary)f(speedups)g(is)g(that)g(the)g(transposition)f(table)h(w)
12384 o(as)h(allo)n(wed)e(to)0 2097 y(gro)n(w)g(as)h(more)f(T)m(ransputers)g
12385 (were)h(added)g(to)f(the)h(system.)53 b(Thus,)34 b(the)e(observ)o(ed)g
12386 (speedups)g(are)h(illustrat-)0 2296 y(ing)27 b(the)g(po)n(wer)g(of)h
12387 (adding)e(additional)g(processors)i(and)f(transposition)e(table)i
12388 (memory)-6 b(,)27 b(not)g(just)g(additional)0 2495 y(processors.)33
12389 b(F)o(or)26 b(the)f(lar)n(gest)h(search)g(amongst)e(the)i(test)f(set,)i
12390 (Z)t Fa(U)t(G)t(Z)t(W)-6 b(A)t(N)t(G)33 b Fu(searches)27
12391 b(61)e(million)f(nodes)h(se-)0 2695 y(quentially)c(with)h(a)i(small)d
12392 (transposition)g(table,)i(and)g(41)f(million)f(nodes)h(in)h(parallel)g
12393 (on)f(256)g(processors)h(with)0 2894 y(a)k(much)f(lar)n(ger)h
12394 (transposition)d(table.)35 b(The)26 b(number)g(of)g(nodes)i(Z)t
12395 Fa(U)t(G)t(Z)t(W)-6 b(A)t(N)t(G)34 b Fu(searches)27 b(sequentially)e(w)
12396 o(ould)0 3093 y(decrease)31 b(if)f(much)f(lar)n(ger)i(transposition)d
12397 (tables)h(were)i(used)f(during)f(the)h(sequential)f(test.)45
12398 b(This)30 b(w)o(ould,)g(of)0 3293 y(course,)25 b(reduce)g(the)g(observ)
12399 o(ed)f(speedup.)146 3492 y(W)l(ith)33 b(a)g(f)o(ast)h(sequential)e
12400 (program,)j(operating)d(in)h(an)h(en)l(vironment)d(where)j(messages)f
12401 (are)h(not)e(f)o(ast)h(in)0 3691 y(relation)i(to)h(the)f(program,)j
12402 (less)e(than)f(superb)h(mo)o(v)o(e)e(ordering)h(and)h(constant)f
12403 (memory)g(usage)h(in)f(the)h(se-)0 3890 y(quential)23
12404 b(and)g(parallel)g(runs,)h(it)f(is)g(unlik)o(ely)f(that)h(Feldmann')-5
12405 b(s)22 b(observ)o(ed)h(speedups)g(can)h(be)f(duplicated)g(with)0
12406 4090 y(an)o(y)k(synchronous)g(parallel)g(algorithm.)38
12407 b(Gi)n(v)o(en)27 b(a)h(program)f(without)g(quiescence)h(search,)g(it)g
12408 (is)f(possible)f(to)0 4289 y(generate)i(equi)n(v)n(alent)d(speedups)i
12409 (with)f(asynchronous)h(search.)38 b(Earlier)28 b(it)e(w)o(as)i
12410 (demonstrated)e(that)h(APHID)0 4488 y(can)d(generate)g(speedups)f(of)h
12411 (that)g(calibre)g(in)f(the)h(\002x)o(ed-depth)f(v)o(ersion)f(of)k(K)t
12412 Fa(E)t(Y)-6 b(A)t(N)t(O)r Fu(.)34 b(Ho)n(we)n(v)o(er)l(,)23
12413 b(quiescence)0 4687 y(search)29 b(is)f(inte)o(gral)f(to)h(modern)g
12414 (chess)g(programs.)41 b(Hence,)29 b(it)f(is)g(unlik)o(ely)f(that)h(an)o
12415 (y)g(asynchronous)f(parallel)0 4887 y(algorithm)c(in)i(chess)f(w)o
12416 (ould)g(achie)n(v)o(e)h(observ)o(ed)f(speedups)g(similar)f(to)i
12417 (Feldmann')-5 b(s)24 b(results.)1900 5589 y(29)p eop
12419 30 32 bop 0 100 a Fo(5)143 b(Conclusions)0 402 y Fu(In)25
12420 b(this)f(paper)l(,)h(the)f(question)g(w)o(as)h(posed)f(as)h(to)f
12421 (whether)h(asynchronous)e(algorithms)g(could)i(be)g(competiti)n(v)o(e)0
12422 601 y(with)32 b(synchronous)g(algorithms)g(in)h(real)g(applications)f
12423 (searching)h(real)h(game)e(trees.)57 b(The)33 b(results)f(in)h(Sec-)0
12424 800 y(tion)26 b(4.3,)h(summarized)f(in)g(T)-8 b(able)27
12425 b(I,)h(sho)n(w)e(that)g(the)h(APHID)g(algorithm)e(can)j(deli)n(v)o(er)d
12426 (superior/competiti)n(v)o(e)0 1000 y(results)f(to)g(that)g(achie)n(v)n
12427 (able)f(by)h(a)h(synchronous)e(algorithm.)29 b(Further)l(,)c(this)e
12428 (performance)i(is)f(easy)h(to)f(achie)n(v)o(e)0 1199
12429 y(since)h(APHID)g(is)f(easy)h(to)g(inte)o(grate)f(into)g(an)g(e)o
12430 (xisting)f Fq(\013)q(\014)6 b Fu(-searching)25 b(program.)146
12431 1398 y(Comparing)31 b(APHID)g(to)g(synchronous)f(approaches,)i(it)f(is)
12432 f(interesting)g(to)h(note)f(that)h(APHID')-5 b(s)31 b(results)0
12433 1598 y(are)36 b(less)f(dependent)g(on)g(the)g(branching)g(f)o(actor)h
12434 (within)e(the)h(tree.)63 b(The)35 b(synchronous)f(search)i(results)e
12435 (are)0 1797 y(highly)d(dependent)h(on)g(the)g(branching)f(f)o(actor;)36
12436 b(a)d(lar)n(ger)g(branching)e(f)o(actor)i(yields)e(more)h(parallelism)f
12437 (and)0 1996 y(less)26 b(idle)f(time.)34 b(Thus,)26 b(the)g
12438 (asynchronous)f(algorithm)g(in)g(APHID)i(is)f(a)g(better)g(choice)g(in)
12439 g(applications)f(with)0 2195 y(small)f(branching)g(f)o(actors,)h(such)g
12440 (as)f(check)o(ers)i(and)f(Othello.)146 2395 y(The)20
12441 b(speedups)f(achie)n(v)n(able)g(by)h(the)g(APHID)g(algorithm)f(are)h
12442 (similar)f(to)g(those)h(achie)n(v)o(ed)f(by)g(synchronous)0
12443 2594 y(parallel)k(algorithms)e(up)i(to)f(32)h(processors)f(for)i
12444 (chess.)29 b(Thus,)23 b(a)g(synchronous)f(parallel)h(algorithm)e(may)i
12445 (be)g(a)0 2793 y(reasonable)k(choice)g(for)g(wide)g(v)n(ariable-depth)e
12446 (game)i(trees.)37 b(Ho)n(we)n(v)o(er)l(,)26 b(when)g(one)h(considers)f
12447 (that)h(APHID)0 2992 y(is)f(\(1\))g(easy)h(to)f(inte)o(grate)f(into)h
12448 (e)o(xisting)e(le)o(gac)o(y)h(code,)i(\(2\))f(can)h(lik)o(ely)e(achie)n
12449 (v)o(e)h(better)g(speedups)g(with)f(more)0 3192 y(transposition)d
12450 (table)h(memory)-6 b(,)23 b(and)h(\(3\))g(has)g(the)g(additional)e
12451 (bene\002t)j(of)f(speculati)n(v)o(e)e(search)i(on)g(some)f(of)h(the)0
12452 3391 y(k)o(e)o(y)g(v)n(ariations)g(at)g(the)h(ne)o(xt)f(search)h
12453 (depth,)g(then)f(APHID)h(becomes)g(the)f(algorithm)g(of)h(choice.)146
12454 3590 y(It)h(is)g(hoped)g(that)f(this)g(document,)h(in)f(conjunction)g
12455 (with)g(the)h(freely-a)n(v)n(ailable)g(APHID)g(library)-6
12456 b(,)26 b(will)f(be)0 3789 y(helpful)32 b(for)i(game-tree)f(researchers)
12457 h(to)f(in)l(v)o(estigate)e(these)i(and)g(other)g(ideas)f(surrounding)g
12458 (asynchronous)0 3989 y(game-tree)25 b(search.)0 4328
12459 y Fo(6)143 b(Ackno)o(wledgements)0 4630 y Fu(P)o(aul)20
12460 b(Masiar)g(and)h(Marc)g(Nolte)e(arranged)i(access)g(to)f(the)h
12461 (64-processor)f(SGI)h(Origin)f(2000)f(system)h(in)g(Eagan,)0
12462 4830 y(Minnesota.)28 b(Charles)20 b(Leiserson,)h(Ask)o(e)f(Plaat)g(and)
12463 g(Boston)g(Uni)n(v)o(ersity)e(arranged)j(access)f(to)g(a)g
12464 (32-processor)0 5029 y(SGI)30 b(Origin)e(2000)g(system.)43
12465 b(The)29 b(authors)f(w)o(ould)g(also)h(lik)o(e)f(to)h(thank)g(Darse)g
12466 (Billings,)g(Yngvi)f(Bj)8 b(\250)-41 b(ornsson,)0 5228
12467 y(Murray)38 b(Campbell,)k(Joe)c(Culberson,)j(Y)-10 b(aoqing)38
12468 b(Gao,)k(Andreas)d(Junghanns,)h(T)-8 b(on)o(y)37 b(Marsland,)42
12469 b(Monroe)1900 5589 y(30)p eop
12471 31 33 bop 0 100 a Fu(Ne)n(wborn,)24 b(Denis)g(P)o(app,)h(John)f
12472 (Samson,)g(and)h(the)g(referees)h(for)f(their)f(helpful)h(suggestions.)
12473 0 436 y Fo(Refer)m(ences)50 738 y Fu([1])49 b(R.)31 b(D.)f(Blumofe,)i
12474 (C.)f(F)-8 b(.)31 b(Joer)n(g,)h(B.)g(C.)f(K)o(uszmaul,)f(C.)h(E.)g
12475 (Leiserson,)g(K.)g(H.)f(Randall,)i(and)f(Y)-13 b(.)31
12476 b(Zhou.)215 938 y(Cilk:)51 b(An)35 b(Ef)n(\002cient)g(Multithreaded)f
12477 (Runtime)h(System.)69 b(In)35 b Fm(Pr)l(oceedings)f(of)h(PPOPP)g('95)p
12478 Fu(,)j(pages)215 1137 y(207\226216,)23 b(Santa)j(Barbara,)g(CA,)f(July)
12479 f(1995.)50 1413 y([2])49 b(M.)36 b(G.)i(Brockington.)74
12480 b Fm(Async)o(hrnous)36 b(P)-8 b(ar)o(allel)35 b(Game-T)-5
12481 b(r)l(ee)38 b(Sear)l(c)o(h)p Fu(.)75 b(PhD)37 b(thesis,)i(Uni)n(v)o
12482 (ersity)c(of)215 1612 y(Alberta,)24 b(Department)h(of)f(Computing)g
12483 (Science,)h(Edmonton,)e(Canada,)j(December)f(1997.)50
12484 1889 y([3])49 b(R.)32 b(Feldmann.)59 b Fm(Spielbaumsuc)o(he)31
12485 b(auf)g(Massiv)h(P)-8 b(ar)o(allelen)30 b(Systemen)p
12486 Fu(.)60 b(PhD)32 b(thesis,)h(Uni)n(v)o(ersity)d(of)215
12487 2088 y(P)o(aderborn,)22 b(P)o(aderborn,)f(German)o(y)-6
12488 b(,)21 b(May)g(1993.)27 b(English)20 b(translation)g(a)n(v)n(ailable:)
12489 27 b(Game)22 b(T)m(ree)f(Search)215 2287 y(on)j(Massi)n(v)o(ely)f(P)o
12490 (arallel)i(Systems.)50 2564 y([4])49 b(A.)25 b(Geist,)f(A.)h(Be)o
12491 (guelin,)g(J.)g(Dongarra,)g(W)-9 b(.)25 b(Jiang,)f(B.)i(Manchek,)f(and)
12492 g(V)-13 b(.)25 b(Sunderam.)37 b Fm(PVM:)25 b(P)-8 b(ar)o(allel)215
12493 2763 y(V)h(irtual)33 b(Mac)o(hine)i(\226)h(A)f(User')l(s)g(Guide)g(and)
12494 h(T)-5 b(utorial)33 b(for)i(Network)o(ed)i(P)-8 b(ar)o(allel)33
12495 b(Computing)p Fu(.)69 b(MIT)215 2962 y(Press,)25 b(1994.)50
12496 3238 y([5])49 b(R.)36 b(D.)g(Greenblatt,)j(D.)d(E.)f(Eastlak)o(e,)k
12497 (and)d(S.)g(D.)g(Crock)o(er)-5 b(.)72 b(The)36 b(Greenblatt)g(Chess)g
12498 (Program.)72 b(In)215 3438 y Fm(Pr)l(oceedings)23 b(of)i(the)f(F)-7
12499 b(all)24 b(J)n(oint)f(Computer)i(Confer)l(ence)p Fu(,)g(v)n(olume)f
12500 (31,)g(pages)h(801\226810,)f(1967.)50 3714 y([6])49 b(R.)34
12501 b(M.)f(Hyatt.)63 b Fm(A)33 b(High-P)-8 b(erformance)33
12502 b(P)-8 b(ar)o(allel)31 b(Algorithm)h(T)-9 b(o)34 b(Sear)l(c)o(h)f
12503 (Depth-F)l(ir)o(st)e(Game)j(T)-5 b(r)l(ees)p Fu(.)215
12504 3913 y(PhD)25 b(thesis,)f(Uni)n(v)o(ersity)e(of)j(Alabama,)f
12505 (Birmingham,)g(Alabama,)g(1988.)50 4190 y([7])49 b(R.)22
12506 b(M.)f(Hyatt.)28 b(The)22 b(Dynamic)f(T)m(ree)g(Splitting)f(P)o
12507 (arallel)i(Search)h(Algorithm.)k Fm(ICCA)22 b(J)n(ournal)p
12508 Fu(,)f(20\(1\):3\226)215 4389 y(19,)j(1997.)50 4665 y([8])49
12509 b(A.)24 b(Junghanns)e(and)j(J.)e(Schaef)n(fer)-5 b(.)35
12510 b(Search)25 b(V)-11 b(ersus)24 b(Kno)n(wledge)f(in)h(Game-Playing)f
12511 (Programs)h(Re)n(vis-)215 4864 y(ited.)35 b(In)25 b Fm(Pr)l(oceedings)e
12512 (of)i(IJCAI-97)p Fu(,)g(pages)g(692\226697,)f(Nago)o(ya,)g(Japan,)h
12513 (August)f(1997.)50 5141 y([9])49 b(D.)29 b(E.)f(Knuth)g(and)h(R.)h(W)-9
12514 b(.)28 b(Moore.)49 b(An)28 b(Analysis)g(of)h(Alpha-Beta)g(Pruning.)49
12515 b Fm(Arti\002cial)27 b(Intellig)o(ence)p Fu(,)215 5340
12516 y(6\(3\):293\226326,)c(1975.)1900 5589 y(31)p eop
12518 32 34 bop 0 100 a Fu([10])49 b(D.)23 b(K)m(opec)g(and)g(I.)h(Bratk)o
12519 (o.)33 b(The)23 b(Bratk)o(o-K)m(opec)h(Experiment:)k(A)c(Comparison)e
12520 (of)i(Human)f(and)g(Com-)215 299 y(puter)g(Performance)h(in)f(Chess.)32
12521 b(In)23 b(M.R.B.)g(Clark)o(e,)h(editor)l(,)f Fm(Advances)g(in)g
12522 (Computer)g(Chess)g(3)p Fu(,)g(pages)215 498 y(57\22672.)h(Permagon)h
12523 (Press,)g(1982.)0 780 y([11])49 b(B.)28 b(C.)h(K)o(uszmaul.)44
12524 b(The)28 b(StarT)-7 b(ech)29 b(Massi)n(v)o(ely-P)o(arallel)d(Chess)i
12525 (Program.)46 b Fm(ICCA)29 b(J)n(ournal)p Fu(,)e(18\(1\):3\226)215
12526 980 y(19,)d(1995.)0 1262 y([12])49 b(C.-P)-11 b(.)30
12527 b(P)-11 b(.)30 b(Lu.)51 b(P)o(arallel)29 b(Search)i(of)e(Narro)n(w)h
12528 (Game)f(T)m(rees.)51 b(Master')-5 b(s)29 b(thesis,)g(Uni)n(v)o(ersity)f
12529 (of)h(Alberta,)215 1461 y(Department)24 b(of)h(Computing)e(Science,)j
12530 (Edmonton,)d(Canada,)i(1993.)0 1743 y([13])49 b(T)-7
12531 b(.)24 b(A.)h(Marsland)f(and)g(M.)h(S.)g(Campbell.)35
12532 b(P)o(arallel)25 b(Search)h(of)e(Strongly)g(Ordered)i(Game)e(T)m(rees.)
12533 36 b Fm(A)m(CM)215 1943 y(Computing)23 b(Surve)m(ys)p
12534 Fu(,)i(14\(4\):533\226551,)e(1982.)0 2225 y([14])49 b(M.)28
12535 b(M.)h(Ne)n(wborn.)48 b(Unsynchronized)28 b(Iterati)n(v)o(ely)f
12536 (Deepening)i(P)o(arallel)g(Alpha-Beta)g(Search.)50 b
12537 Fm(IEEE)215 2424 y(T)-5 b(r)o(ansactions)22 b(on)j(P)-8
12538 b(attern)23 b(Analysis)h(and)g(Mac)o(hine)g(Intellig)o(ence)p
12539 Fu(,)g(P)-9 b(AMI-10\(5\):687\226694,)23 b(1988.)0 2707
12540 y([15])49 b(J.)23 b(Schaef)n(fer)-5 b(.)33 b(Distrib)n(uted)21
12541 b(Game-T)m(ree)j(Searching.)32 b Fm(J)n(ournal)22 b(of)h(P)-8
12542 b(ar)o(allel)21 b(and)i(Distrib)n(uted)e(Comput-)215
12543 2906 y(ing)p Fu(,)j(6\(2\):90\226114,)f(1989.)0 3188
12544 y([16])49 b(J.)24 b(J.)g(Scott.)35 b(A)25 b(Chess-Playing)f(Program.)35
12545 b(In)25 b(B.)g(Meltzer)g(and)f(D.)g(Michie,)g(editors,)g
12546 Fm(Mac)o(hine)g(Intelli-)215 3387 y(g)o(ence)h(4)p Fu(,)g(pages)f
12547 (255\226265.)g(Edinb)n(ur)n(gh)g(Uni)n(v)o(ersity)e(Press,)j(1969.)0
12548 3670 y([17])49 b(J.-C.)35 b(W)-8 b(eill.)67 b Fm(Pr)l(o)o(gr)o(ammes)32
12549 b(d')1389 3648 y(\264)1369 3670 y(Ec)o(hecs)j(de)f(Championnat:)50
12550 b(Ar)l(c)o(hitectur)l(e)34 b(Lo)o(gicielle)o(,)j(Synth)3650
12551 3671 y(\036)3645 3670 y(ese)d(de)215 3869 y(F)-10 b(onctions)23
12552 b(d')730 3847 y(\264)711 3869 y(Evaluations,)f(P)-8 b(ar)o(all)1488
12553 3870 y(\264)1483 3869 y(elisme)23 b(de)i(Rec)o(her)l(c)o(he)p
12554 Fu(.)35 b(PhD)25 b(thesis,)e(Uni)n(v)o(ersit)6 b(\264)-39
12555 b(e)23 b(P)o(aris)i(8,)f(January)215 4068 y(1995.)35
12556 b(In)25 b(French.)0 4408 y Fo(A)143 b(The)35 b(Master')-5
12557 b(s)34 b(Guessed)g(Scor)m(e)h(Algorithm)0 4710 y Fu(APHID)j(has)f(all)g
12558 (of)g(the)h(information)d(about)i(the)g(pre)n(vious)f(depths)h(of)g
12559 Fq(\013)q(\014)43 b Fu(search)38 b(for)f(a)h(node,)i(such)d(as)0
12560 4909 y(whether)26 b(the)g(score)g(w)o(as)g(a)h(lo)n(wer)e(bound,)h(an)g
12561 (upper)g(bound)f(or)h(an)g(e)o(xact)g(minimax)f(v)n(alue.)33
12562 b(Other)26 b(informa-)0 5109 y(tion)21 b(includes)h(the)g(\002nal)g
12563 (minimax)f(v)n(alue)h(from)g(each)h(of)f(those)g(depths)f(of)h(search,)
12564 i(as)e(well)g(as)g(a)h(hypothetical)0 5308 y(minimax)28
12565 b(v)n(alue)h(for)g(the)h(current)g Fq(d)p Fu(-ply)e(search)i(\(the)g
12566 (closest)f(node)g(on)g(the)g(principal)g(v)n(ariation)f(that)h(has)h(a)
12567 1900 5589 y(32)p eop
12569 33 35 bop 0 100 a Fu(certain)28 b(v)n(alue\).)38 b(All)27
12570 b(of)h(this)f(information)f(is)h(used)g(to)g(determine)g(a)h(guessed)f
12571 (score.)40 b(The)27 b(full)g(algorithm)g(is)0 299 y(gi)n(v)o(en)c(in)i
12572 (Figure)g(10.)146 498 y(Starting)i(with)f(the)g(information)g(for)h(a)g
12573 Fl(\()p Fq(d)c Fk(\000)h Fq(d)1817 462 y Fp(0)1863 498
12574 y Fk(\000)g Fl(1\))p Fu(-ply)i(search,)i(the)f(algorithm)e(checks)i
12575 (successi)n(v)o(ely)0 697 y(shallo)n(wer)e(depths)g(of)h(search)g
12576 (returned)g(by)g(the)f(sla)n(v)o(e)h(until)e(a)j(rele)n(v)n(ant)d
12577 (result)i(is)f(found)h(with)f(respect)h(to)f(the)0 897
12578 y Fq(\013)q(\014)33 b Fu(search)28 b(windo)n(w)-6 b(.)36
12579 b(This)26 b(is)h(guaranteed)h(to)f(happen,)g(since)g(the)h(master)f
12580 (stores)f(an)i(e)o(xact)f(e)n(v)n(aluation)e(of)j(a)0
12581 1096 y(leaf)d(node)g(\(a)g(0-ply)f(search\))i(when)f(the)f(leaf)h(is)g
12582 (\002rst)g(generated)g(and)g(gi)n(v)o(en)e(to)h(a)i(sla)n(v)o(e.)146
12583 1295 y(Ho)n(we)n(v)o(er)l(,)k(the)f(result)g(returned)g(by)h(the)f(sla)
12584 n(v)o(e)g(should)f(not)h(be)g(used)h(without)e(an)h(adjustment)f(since)
12585 h(the)0 1494 y(minimax)24 b(v)n(alue)h(at)h(the)g(root)f(of)h(the)g
12586 (tree)g(may)g(v)n(ary)f(between)h(dif)n(ferent)g(depths)f(of)h(search.)
12587 34 b(In)26 b(APHID,)g(the)0 1694 y(sla)n(v)o(e')-5 b(s)28
12588 b(minimax)g(v)n(alue)h(is)g(scaled)h(by)f(the)g(dif)n(ference)h
12589 (between)g(the)f(v)n(alue)g(of)h(the)f(full)g(search)h(that)f(it)g(w)o
12590 (as)0 1893 y(generated)g(for)g(and)f(the)g(hypothetical)f(v)n(alue)h
12591 (of)g(the)g(current)h(search.)42 b(F)o(or)29 b(e)o(xample,)f(if)h(the)f
12592 (current)h(search)0 2092 y(has)k(a)g(hypothetical)d(minimax)h(v)n(alue)
12593 h(of)h(5,)i(and)d(the)h(result)f(of)h Fk(\024)g Fu(6)f(from)h(a)g
12594 (search)g(that)f(had)h(a)g(minimax)0 2291 y(v)n(alue)g(of)h(7)g(at)f
12595 (the)h(root)f(of)h(the)g(game)f(tree)h(is)f(to)h(be)g(used,)h(then)f
12596 (the)f(dif)n(ference)h(of)g(the)g(minimax)e(v)n(alues)0
12597 2491 y(\(5-7\))26 b(w)o(ould)f(be)g(added)h(to)f(the)h(result.)33
12598 b(Thus,)25 b(the)g(v)n(alue)g(changes)h(from)f Fk(\024)h
12599 Fu(6)g(for)g(the)f(earlier)i(search)f(to)f Fk(\024)h
12600 Fu(4)0 2690 y(for)g(use)g(as)f(a)h(guessed)f(minimax)g(v)n(alue)g(in)g
12601 (the)g(current)h(search.)34 b(This)25 b(preserv)o(es)h(the)f(mo)o(v)o
12602 (e)f(ordering)h(of)h(the)0 2889 y(pre)n(vious)e(iteration.)146
12603 3088 y(This)c(algorithm)e(is)i(preferred)h(o)o(v)o(er)e(other)h
12604 (methods)f(for)h(determining)f(an)h(estimated)f(e)n(v)n(aluation)g
12605 (because)0 3288 y(it)k(guarantees)g(that)g(a)h(guessed)e(score)i(will)e
12606 (not)h(disrupt)f(the)h(search)h(tree.)31 b(If)23 b(the)g(old)g(search)h
12607 (result)f(\()p Fk(\024)h Fu(6\))f(w)o(as)0 3487 y(suf)n(\002cient)g(to)
12608 h(cause)h(the)e(tree)i(to)f(be)g(pruned)g(in)f(the)h(earlier)h(search,)
12609 f(the)g(guessed)g(v)n(alue)f(\()p Fk(\024)29 b Fl(4)p
12610 Fu(\))24 b(will)f(lik)o(ely)g(be)0 3686 y(suf)n(\002cient)h(to)h(prune)
12611 f(the)h(tree)g(in)g(the)f(current)h(search.)0 4026 y
12612 Fo(B)143 b(The)35 b(Sla)l(v)o(e')-5 b(s)34 b(W)m(indo)o(w)h(Selection)f
12613 (Algorithm)0 4328 y Fu(The)29 b(windo)n(w)f(selection)g(algorithm)g(is)
12614 g(application-dependent,)h(and)g(can)g(be)g(modi\002ed)g(by)g(editing)f
12615 (a)h(call-)0 4527 y(back)f(function)f(pro)o(vided)g(to)g(the)h
12616 (application)f(programmer)-5 b(.)38 b(Based)29 b(on)e(numerous)g
12617 (tests,)h(a)g(general)g(set)g(of)0 4727 y(rules)d(w)o(as)f(created)i
12618 (for)f(determining)e(small,)h(useful)g Fq(\013)q(\014)31
12619 b Fu(search)25 b(windo)n(ws)e(in)i(APHID.)146 4926 y(The)39
12620 b(\002rst)f(recommendation)f(is)h(that)g(the)g(sla)n(v)o(e')-5
12621 b(s)38 b(search)g(windo)n(w)f(should)h(be)g(centered)h(around)f(the)0
12622 5125 y(hypothetical)29 b(minimax)g(v)n(alue)i(\(as)g(de\002ned)g(in)g
12623 (Section)f(3.1\),)i(since)f(this)f(is)h(the)f(most)g(lik)o(ely)g(v)n
12624 (alue)g(of)h(the)1900 5589 y(33)p eop
12626 34 36 bop 0 100 a Fu(search.)279 63 y Fn(8)355 100 y
12627 Fu(The)26 b(second)h(recommendation)e(is)h(that)g(to)g(increase)h(the)g
12628 (windo)n(w)e(based)h(on)g(ho)n(w)g(\223unstable\224)g(the)0
12629 299 y(principal)35 b(v)n(ariation)f(may)g(be.)63 b(F)o(or)35
12630 b(e)o(xample,)i(if)e(the)g(master)g(says)g(that)g(the)g(highest)f
12631 (remaining)g(priority)0 498 y(w)o(ork)i(to)g(be)h(searched)f(is)g(the)g
12632 (same)h(as)f(the)g(piece)h(of)f(w)o(ork)g(that)g(is)g(currently)g
12633 (being)g(e)o(xamined,)i(then)e(a)0 697 y(small)29 b(search)h(windo)n(w)
12634 e(should)g(be)i(chosen)f(because)h(the)f(search)h(is)f(relati)n(v)o
12635 (ely)f(con\002dent)i(of)f(the)h(principal)0 897 y(v)n(ariation.)i(Ho)n
12636 (we)n(v)o(er)l(,)25 b(as)g(the)h(dif)n(ference)g(between)g(the)f(lar)n
12637 (gest)h(priority)e(that)h(the)h(master)f(needs)h(completed)0
12638 1096 y(and)31 b(the)f(priority)f(of)i(the)f(sla)n(v)o(e')-5
12639 b(s)30 b(piece)h(of)f(w)o(ork)h(gets)f(lar)n(ger)l(,)i(the)f(search)g
12640 (windo)n(w)e(needs)h(to)h(be)f(lar)n(ger)h(to)0 1295
12641 y(re\003ect)d(the)f(uncertainty)f(in)h(the)g(principal)f(v)n(ariation.)
12642 36 b(These)27 b(lar)n(ger)h(search)g(windo)n(ws)d(are)j(also)e(used)h
12643 (when)0 1494 y(starting)e(speculati)n(v)o(e)f(searches)i(for)h(future)e
12644 (iterations,)g(since)h(there)g(is)g(no)f(information)g(on)g(the)h(v)n
12645 (alue)f(of)h(the)0 1694 y(principal)e(v)n(ariation)g(at)g(the)h(ne)o
12646 (xt)f(ply)-6 b(.)146 1893 y(These)23 b(recommendations)e(were)i(used)f
12647 (in)g(the)g(windo)n(w)f(selection)g(algorithm)g(for)i(each)g(of)f(the)h
12648 (programs)0 2092 y(tested)h(in)g(Section)h(4.)30 b(The)25
12649 b(scale)g(and)f(v)n(ariance)h(of)f(the)h(e)n(v)n(aluation)d(function)i
12650 (in)g(each)h(program)g(w)o(as)f(used)g(to)0 2291 y(determine)g(the)h
12651 (constants)f(used)g(to)h(increase)g(or)g(set)f(the)h(initial)e(size)i
12652 (of)g(the)g(sla)n(v)o(e')-5 b(s)23 b(windo)n(w)-6 b(.)p
12653 0 5149 1560 4 v 112 5210 a Fj(8)149 5240 y Fi(When)23
12654 b(the)g(hypothetical)d(minimax)h(v)n(alue)h(is)i(INV)-11
12655 b(ALID,)21 b(then)h(this)i(must)e(be)h(a)g(PV)g(node,)f(and)g(an)h
12656 (in\002nite)f(search)h(windo)n(w)0 5340 y(should)c(be)h(chosen.)1900
12659 35 37 bop 195 608 a
12660 27707274 30785863 11446026 16445440 28746629 35587932 startTexFig
12662 %%BeginDocument: pics/guessed-score.ps
12663 %Magnification: 0.50
12664 /$F2psDict 200 dict def
12666 $F2psDict /mtrx matrix put
12667 /col-1 {0 setgray} bind def
12668 /col0 {0.000 0.000 0.000 srgb} bind def
12669 /col1 {0.000 0.000 1.000 srgb} bind def
12670 /col2 {0.000 1.000 0.000 srgb} bind def
12671 /col3 {0.000 1.000 1.000 srgb} bind def
12672 /col4 {1.000 0.000 0.000 srgb} bind def
12673 /col5 {1.000 0.000 1.000 srgb} bind def
12674 /col6 {1.000 1.000 0.000 srgb} bind def
12675 /col7 {1.000 1.000 1.000 srgb} bind def
12676 /col8 {0.000 0.000 0.560 srgb} bind def
12677 /col9 {0.000 0.000 0.690 srgb} bind def
12678 /col10 {0.000 0.000 0.820 srgb} bind def
12679 /col11 {0.530 0.810 1.000 srgb} bind def
12680 /col12 {0.000 0.560 0.000 srgb} bind def
12681 /col13 {0.000 0.690 0.000 srgb} bind def
12682 /col14 {0.000 0.820 0.000 srgb} bind def
12683 /col15 {0.000 0.560 0.560 srgb} bind def
12684 /col16 {0.000 0.690 0.690 srgb} bind def
12685 /col17 {0.000 0.820 0.820 srgb} bind def
12686 /col18 {0.560 0.000 0.000 srgb} bind def
12687 /col19 {0.690 0.000 0.000 srgb} bind def
12688 /col20 {0.820 0.000 0.000 srgb} bind def
12689 /col21 {0.560 0.000 0.560 srgb} bind def
12690 /col22 {0.690 0.000 0.690 srgb} bind def
12691 /col23 {0.820 0.000 0.820 srgb} bind def
12692 /col24 {0.500 0.190 0.000 srgb} bind def
12693 /col25 {0.630 0.250 0.000 srgb} bind def
12694 /col26 {0.750 0.380 0.000 srgb} bind def
12695 /col27 {1.000 0.500 0.500 srgb} bind def
12696 /col28 {1.000 0.630 0.630 srgb} bind def
12697 /col29 {1.000 0.750 0.750 srgb} bind def
12698 /col30 {1.000 0.880 0.880 srgb} bind def
12699 /col31 {1.000 0.840 0.000 srgb} bind def
12703 143.5 569.5 translate
12706 /cp {closepath} bind def
12707 /ef {eofill} bind def
12708 /gr {grestore} bind def
12709 /gs {gsave} bind def
12710 /sa {save} bind def
12711 /rs {restore} bind def
12712 /l {lineto} bind def
12713 /m {moveto} bind def
12714 /rm {rmoveto} bind def
12715 /n {newpath} bind def
12716 /s {stroke} bind def
12717 /sh {show} bind def
12718 /slc {setlinecap} bind def
12719 /slj {setlinejoin} bind def
12720 /slw {setlinewidth} bind def
12721 /srgb {setrgbcolor} bind def
12722 /rot {rotate} bind def
12723 /sc {scale} bind def
12724 /sd {setdash} bind def
12725 /ff {findfont} bind def
12726 /sf {setfont} bind def
12727 /scf {scalefont} bind def
12728 /sw {stringwidth} bind def
12729 /tr {translate} bind def
12730 /tnt {dup dup currentrgbcolor
12731 4 -2 roll dup 1 exch sub 3 -1 roll mul add
12732 4 -2 roll dup 1 exch sub 3 -1 roll mul add
12733 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
12735 /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
12736 4 -2 roll mul srgb} bind def
12737 /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
12738 /$F2psEnd {$F2psEnteredState restore end} def
12742 n 0 792 m 0 0 l 612 0 l 612 792 l cp clip
12746 n 1050 975 m 9775 975 l 9775 10600 l 1050 10600 l cp gs col-1 s gr
12747 /Courier ff 180.00 scf sf
12749 gs 1 -1 sc (int SlaveScoreUppBound\(position p, int d\);) col-1 sh gr
12750 /Courier ff 180.00 scf sf
12752 gs 1 -1 sc (int RootMinimax\(int d\);) col-1 sh gr
12753 /Courier ff 180.00 scf sf
12755 gs 1 -1 sc (first node visited during a pass by a master.\) */) col-1 sh gr
12756 /Courier ff 180.00 scf sf
12758 gs 1 -1 sc (int GuessedScore\(int alpha, int beta, position p, int d, int dprime\)) col-1 sh gr
12759 /Courier ff 180.00 scf sf
12761 gs 1 -1 sc ({) col-1 sh gr
12762 /Courier ff 180.00 scf sf
12764 gs 1 -1 sc (int hmm; /* working hypothetical minimax value for current depth */) col-1 sh gr
12765 /Courier ff 180.00 scf sf
12767 gs 1 -1 sc ({) col-1 sh gr
12768 /Courier ff 180.00 scf sf
12770 gs 1 -1 sc (hmm = HypotheticalMinimax\(\);) col-1 sh gr
12771 /Courier ff 180.00 scf sf
12773 gs 1 -1 sc (if \(hmm == INVALID\) { hmm = RootMinimax\(depth\); }) col-1 sh gr
12774 /Courier ff 180.00 scf sf
12776 gs 1 -1 sc (/* Scale lower and upper bounds if they are not INFINITE to change) col-1 sh gr
12777 /Courier ff 180.00 scf sf
12779 gs 1 -1 sc (bias of search result from previous search depth to current depth. */) col-1 sh gr
12780 /Courier ff 180.00 scf sf
12782 gs 1 -1 sc (lb = -INFINITY; ub = INFINITY;) col-1 sh gr
12783 /Courier ff 180.00 scf sf
12785 gs 1 -1 sc (if \(SlaveScoreLowBound\(p,depth-dprime\) != -INFINITY\)) col-1 sh gr
12786 /Courier ff 180.00 scf sf
12788 gs 1 -1 sc (lb = SlaveScoreLowBound\(p,depth-dprime\) + hmm - RootMinimax\(depth\);) col-1 sh gr
12789 /Courier ff 180.00 scf sf
12791 gs 1 -1 sc (if \(SlaveScoreUppBound\(p,depth-dprime\) != INFINITY\)) col-1 sh gr
12792 /Courier ff 180.00 scf sf
12794 gs 1 -1 sc (ub = SlaveScoreUppBound\(p,depth-dprime\) + hmm - RootMinimax\(depth\);) col-1 sh gr
12795 /Courier ff 180.00 scf sf
12797 gs 1 -1 sc (/* Check each bound to see if scaled bounds satisfy constraints. */) col-1 sh gr
12798 /Courier ff 180.00 scf sf
12800 gs 1 -1 sc (if \(ub <= alpha\) { return alpha; }) col-1 sh gr
12801 /Courier ff 180.00 scf sf
12803 gs 1 -1 sc (if \(lb >= beta\) { return beta; }) col-1 sh gr
12804 /Courier ff 180.00 scf sf
12806 gs 1 -1 sc (if \(lb == ub\) { return ub; }) col-1 sh gr
12807 /Courier ff 180.00 scf sf
12809 gs 1 -1 sc (/* An exact scaled value is always satisfactory for constraints. */) col-1 sh gr
12810 /Courier ff 180.00 scf sf
12812 gs 1 -1 sc (/* NOTE: Loop will always exit at or before depth = dprime, since) col-1 sh gr
12813 /Courier ff 180.00 scf sf
12815 gs 1 -1 sc (master stored SlaveScoreLowBound\(p,0\) = SlaveScoreUppBound\(p,0\) = ) col-1 sh gr
12816 /Courier ff 180.00 scf sf
12818 gs 1 -1 sc (static evaluation, yielding equal scaled upper/lower bounds. */) col-1 sh gr
12819 /Courier ff 180.00 scf sf
12821 gs 1 -1 sc (for \(depth = d-1; depth >= dprime; depth = depth - 1\)) col-1 sh gr
12822 /Courier ff 180.00 scf sf
12824 gs 1 -1 sc (}) col-1 sh gr
12825 /Courier ff 180.00 scf sf
12827 gs 1 -1 sc (}) col-1 sh gr
12828 /Courier ff 180.00 scf sf
12830 gs 1 -1 sc (int ub,lb; /* scaled upper/lower bounds \(if not infinite\) */) col-1 sh gr
12831 /Courier ff 180.00 scf sf
12833 gs 1 -1 sc (int depth; /* depth of search where estimate will be derived */) col-1 sh gr
12834 /Courier ff 180.00 scf sf
12836 gs 1 -1 sc (current pass, returns INVALID if no PV has been explored \(only happens when) col-1 sh gr
12837 /Courier ff 180.00 scf sf
12839 gs 1 -1 sc (/* HypotheticalMinimax returns highest accurate value along current PV in) col-1 sh gr
12840 /Courier ff 180.00 scf sf
12842 gs 1 -1 sc (int HypotheticalMinimax\(\);) col-1 sh gr
12843 /Courier ff 180.00 scf sf
12845 gs 1 -1 sc (/* RootMinimax returns minimax value from previous search at depth d */) col-1 sh gr
12846 /Courier ff 180.00 scf sf
12848 gs 1 -1 sc (position p at depth d if result was <= beta\(p,d\); INFINITY, otherwise. */) col-1 sh gr
12849 /Courier ff 180.00 scf sf
12851 gs 1 -1 sc (/* SlaveScoreUppBound returns value from slave's alphabeta search for) col-1 sh gr
12852 /Courier ff 180.00 scf sf
12854 gs 1 -1 sc (position p at depth d if result was >= alpha\(p,d\); -INFINITY, otherwise. */) col-1 sh gr
12855 /Courier ff 180.00 scf sf
12857 gs 1 -1 sc (/* SlaveScoreLowBound returns value from slave's alphabeta search for) col-1 sh gr
12858 /Courier ff 180.00 scf sf
12860 gs 1 -1 sc (int SlaveScoreLowBound\(position p, int d\);) col-1 sh gr
12867 1015 4711 a Fu(Figure)25 b(10:)30 b(Code)c(F)o(or)e(Guessed)h(Score)h
12868 (Algorithm)1900 5589 y(35)p eop
12870 36 38 bop 146 100 a Ft(Mark)37 b(Br)n(ockington)h Fu(recei)n(v)o(ed)d
12871 (a)i(B.Math.)64 b(de)o(gree)36 b(in)g(Pure)h(Math)e(with)h(Computer)f
12872 (Science)i(from)0 299 y(the)c(Uni)n(v)o(ersity)e(of)j(W)-8
12873 b(aterloo,)35 b(in)e(1992,)i(and)e(recei)n(v)o(ed)g(a)h(Ph.D.)g(in)f
12874 (Computing)f(Science)i(from)f(the)g(Uni-)0 498 y(v)o(ersity)i(of)g
12875 (Alberta)h(in)g(1997.)63 b(His)35 b(research)i(interests)e(include)g
12876 (arti\002cial)h(intelligence,)h(distrib)n(uted)d(and)0
12877 697 y(parallel)26 b(processing,)h(cryptography)e(and)i(data)f(security)
12878 -6 b(.)35 b(Mark)27 b(is)f(currently)g(w)o(orking)g(at)h(BioW)-8
12879 b(are)27 b(Corp.,)0 897 y(an)e(interacti)n(v)o(e)e(entertainment)h
12880 (\002rm)h(in)g(Edmonton,)d(Alberta,)j(Canada.)146 1096
12881 y Ft(J)o(onathan)35 b(Schaeffer)i Fu(recei)n(v)o(ed)d(a)h(B.Sc.)62
12882 b(de)o(gree)35 b(in)f(Computing)g(Science)h(from)g(the)g(Uni)n(v)o
12883 (ersity)d(of)0 1295 y(T)-8 b(oronto,)26 b(in)g(1978,)g(and)g(recei)n(v)
12884 o(ed)g(an)h(M.Math.)34 b(and)26 b(a)h(Ph.D.)g(in)f(Computer)g(Science)h
12885 (from)f(the)g(Uni)n(v)o(ersity)0 1494 y(of)34 b(W)-8
12886 b(aterloo)34 b(in)f(1980)h(and)g(1986,)h(respecti)n(v)o(ely)-6
12887 b(.)56 b(He)35 b(is)e(the)h(principal)f(author)h(of)i(C)t
12888 Fa(H)t(I)t(N)t(O)t(O)t(K)r Fu(,)k(the)34 b(Man-)0 1694
12889 y(Machine)22 b(W)-8 b(orld)23 b(Champion)f(check)o(ers)h(program.)30
12890 b(He)23 b(is)f(currently)g(a)h(Professor)g(of)g(Computing)e(Science)j
12891 (at)0 1893 y(the)i(Uni)n(v)o(ersity)e(of)i(Alberta.)35
12892 b(His)25 b(current)i(research)g(interests)e(include)h(heuristic)f
12893 (search,)i(parallel)f(process-)0 2092 y(ing,)e(and)h(computer)f(games.)
12894 1900 5589 y(36)p eop
12897 userdict /end-hook known{end-hook}if