2 %%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
6 %%BoundingBox: 0 0 612 792
8 %DVIPSCommandLine: dvips aphid_tr
9 %DVIPSParameters: dpi=300, compressed, comments removed
10 %DVIPSSource: TeX output 1996.08.20:2324
11 %%BeginProcSet: texc.pro
12 /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
13 /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
14 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
15 ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
16 isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
17 hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
18 TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
19 forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
20 /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
21 /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{
22 /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
23 string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
24 end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
25 /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
26 N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
27 length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
28 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
29 get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
30 dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
31 /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
32 /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
33 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
34 setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
35 .1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N
36 /cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id
37 gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp
38 add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add
39 /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
40 dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
41 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2
42 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string
43 putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval
44 adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}
45 {adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{
46 adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2
47 chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{]
48 }if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
49 length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
50 cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
51 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
52 add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
53 /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
54 known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
55 /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
56 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
57 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
58 {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
59 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
60 ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
61 RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
62 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
63 round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
64 rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
65 {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
66 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{
67 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{
68 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
69 a}B /bos{/SS save N}B /eos{SS restore}B end
71 %%BeginProcSet: special.pro
72 TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N
73 /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen
74 false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B
75 /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit
76 div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{
77 /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{
78 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B
79 /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale
80 true def end /@MacSetUp{userdict /md known{userdict /md get type
81 /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup
82 length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{}
83 N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath
84 clippath mark{transform{itransform moveto}}{transform{itransform lineto}
85 }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{
86 itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{
87 closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39
88 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N
89 /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1
90 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get
91 ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
92 not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0
93 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR
94 pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1
95 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg
96 TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg
97 sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr
98 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add
99 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp
100 {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72
101 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray}
102 N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict
103 maxlength dict begin /magscale true def normalscale currentpoint TR
104 /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
105 /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx
106 psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy
107 scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR
108 /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{
109 psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
110 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
111 moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict
112 begin /SpecialSave save N gsave normalscale currentpoint TR
113 @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial
114 {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
115 closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
116 sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
117 }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
118 CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
119 lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath
120 }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{
121 end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin}
122 N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{
123 /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX
124 SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X
125 /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad
126 yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end
128 TeXDict begin 40258431 52099146 1000 300 300 (aphid_tr.dvi)
129 @start /Fa 1 49 df<1204120EA2121CA31238A212301270A21260A212C0A2070F7F8F
130 0A>48 D E /Fb 59 123 df<EA0387A6387FFFC0B512E0A238070E00A3EA0E1CA4B512E0
131 A26C13C0381C3800A613197F9816>35 D<EA0380EA07E0120FEA1E70121CA3EBF7E013E7
132 EA1DC7000F1300138E130E121F485AEA7B9C1273EAE1F8A238E0F0E0A2EA71F8387FFFC0
133 EA3F9F381E070013197F9816>38 D<13E01201EA0380EA0700120E5AA25AA25AA35AA912
134 70A37EA27EA27E7EEA0380EA01E012000B217A9C16>40 D<12C07E12707E7E7EA27EA2EA
135 0380A3EA01C0A9EA0380A3EA0700A2120EA25A5A5A5A5A0A217B9C16>I<EA0380A4EAE3
136 8EEAF39EEAFFFEEA3FF8EA0FE0A2EA3FF8EAFFFEEAF39EEAE38EEA0380A40F127D9516>
137 I<13E0A8B512E0A33800E000A813137F9516>I<1238127C127EA2123E120E121E121C12
138 7812F01260070B798416>I<127012F8A312700505788416>46 D<12035AA25A5AB4FCA2
139 12E71207AEEAFFF8A30D197B9816>49 D<EA07E0EA1FF8487EEA783EEAE00700F0138013
140 0312601200A2EB0700A2130E5B5B5B5B485A485A000FC7FC381E03801238EA7FFFB5FC7E
141 11197E9816>I<13E0487EA213B0A2EA03B8A31318EA071CA5EA0E0EA2EA0FFEA2487EEA
142 1C07A3387E0FC038FF1FE0387E0FC013197F9816>65 D<EA7FF8EAFFFE6C7EEA1C071480
143 1303A4EB0700EA1FFF5BA2EA1C1FEB038014C01301A41303EB0780EA7FFFB51200EA7FFC
144 12197F9816>I<3801F180EA07FBEA0FFFEA1F0FEA3C07EA38031270A200F0C7FC5AA77E
145 38700380A21238383C0700EA1F0FEA0FFE6C5AEA01F011197E9816>I<EA7FF8EAFFFE6C
146 7EEA1C0FEB0780EB03C01301A214E01300A8EB01C0A21303EB0780130F387FFF00485AEA
147 7FF81319809816>I<387FFFC0B5FC7EEA1C01A490C7FCA2131CA2EA1FFCA3EA1C1CA290
148 C7FC14E0A5EA7FFFB5FC7E13197F9816>I<387FFFE0B5FC7EEA1C00A41400A2131CA2EA
149 1FFCA3EA1C1CA290C7FCA6EA7F80487E6C5A13197F9816>I<3801F180EA07FBEA0FFFEA
150 1F0FEA3C07EA38031270A200F0C7FC5AA4EB1FC014E014C038F00380127013071238123C
151 EA1E0FEA0FFFEA07FBEA01F313197F9816>I<387F07F038FF8FF8387F07F0381C01C0A7
152 EA1FFFA3EA1C01A9387F07F038FF8FF8387F07F01519809816>I<EA7FFCEAFFFEEA7FFC
153 EA0380B3EA7FFCEAFFFEEA7FFC0F197D9816>I<387F0FE038FF8FF0387F0FE0381C0780
154 EB0F00130E5B133C5B5B5BEA1DF0121F7F1338EA1E1C121C7FA27FA2EB0380387F07E038
155 FF8FF0387F07E01419809816>75 D<B47E7F5B001CC7FCAE144014E0A4B5FCA313197F98
156 16>I<38FC07E0EAFE0FA2383A0B80EA3B1BA513BBEA39B3A413F3EA38E3A21303A538FE
157 0FE0A313197F9816>I<387E07F038FF0FF8387F07F0381D81C0A313C1121C13E1A21361
158 1371A313311339A21319131D130DA3EA7F07EAFF87EA7F031519809816>I<EA1FFC487E
159 487EEA780F38F00780EAE003AEEAF007A238780F00EA7FFF6C5A6C5A11197E9816>I<EA
160 7FF8EAFFFE6C7E381C0F80130314C01301A313031480130F381FFF005B13F8001CC7FCA7
161 127F487E6CC7FC12197F9816>I<EA7FF0EAFFFC6C7EEA1C0FEB07801303A41307EB0F00
162 EA1FFE5B7FEA1C0E7FA414101438A2387F03F0EAFF83387F01E01519809816>82
163 D<EA07E3EA1FFF5AEA781FEAF00712E0A290C7FC7E1278EA3F80EA1FF0EA07FCC67E130F
164 7FEB0380A2126012E0EB0700EAF80FEAFFFE5BEAC7F011197E9816>I<387FFFE0B5FCA2
165 EAE0E0A400001300AFEA07FC487E6C5A13197F9816>I<387F07F038FF8FF8387F07F038
166 1C01C0B0380E0380A23807070013FF6C5AEA00F81519809816>I<38FE0FE0A338380380
167 EA3C07001C1300A3EA1E0FEA0E0EA46C5AA4EA031813B8A3EA01B013F0A26C5A13197F98
168 16>I<387F1F80EB3FC0EB1F80380E1E00131C12075BEA03B813F012015B120012017F12
169 0313B81207131C120FEA0E0EA2487E387E0FC038FF1FE0387E0FC013197F9816>88
170 D<38FE0FE0EAFF1FEAFE0F381C0700A2EA0E0EA26C5AA3EA03B8A2EA01F0A26C5AA8EA03
171 F8487E6C5A13197F9816>I<387FFF80B5FCA238E007005B131E131CEA003C5B137013F0
172 485A5B1203485A90C7FC5A381E0380121C123C12781270B5FCA311197E9816>I<EAFFF0
173 A3EAE000B3A8EAFFF0A30C20789C16>I<EAFFF0A3EA0070B3A8EAFFF0A30C207F9C16>
174 93 D<EA1FE0487E487EEA783CEA300E1200A2EA03FE121FEA3E0E127012E0A3EA783E38
175 7FFFE0EA3FE7EA0F8313127E9116>97 D<12FCA3121CA4137CEA1DFEEA1FFFEB0780381E
176 03C0EA1C01EB00E0A6EB01C0EA1E03381F0780EBFF00EA1DFEEA0C7813197F9816>I<EA
177 03F8EA0FFCEA1FFEEA3C1EEA780CEA70005AA57EEA70071278EA3E0EEA1FFCEA0FF8EA03
178 F010127D9116>I<133FA31307A4EA03C7EA0FF748B4FCEA3C1F487EEA700712E0A6EA70
179 0F12786C5A381FFFE0EA0FF7EA07C713197F9816>I<EA03F0EA0FFC487EEA3C0F487E38
180 70038012E0B5FCA300E0C7FCA2387003801278EA3E07381FFF00EA07FEEA01F811127E91
181 16>I<131E137F3801FF8013C7380383001380A2EA7FFFB5FCA2EA0380ACEA7FFC487E6C
182 5A11197F9816>I<3803E3C03807F7E0EA0FFF381C1CC038380E00A56C5AEA0FF8485AEA
183 1BE00038C7FC1218EA1FFC13FF481380387003C038E000E0A4387001C0EA7C07383FFF80
184 380FFE00EA03F8131C7F9116>I<12FCA3121CA41378EA1DFCEA1FFE130FEA1E07121CAA
185 38FF8FE0139F138F13197F9816>I<1203EA0780A2EA0300C7FCA4EAFF80A31203ACEAFF
186 FC13FE13FC0F1A7C9916>I<127E12FE127E120EA4EB7FE0A3EB0F00131E5B5B5B120F7F
187 13BC131EEA0E0E7F1480387F87F0EAFFCFEA7F871419809816>107
188 D<EA7FC012FF127F1201B3EA7FFFB512806C130011197E9816>I<38F9C38038FFEFC0EB
189 FFE0EA3C78A2EA3870AA38FE7CF8A31512809116>I<EAFC78EAFDFCB47EEA1F0FEA1E07
190 121CAA38FF8FE0139F138F13127F9116>I<EA03E0EA0FF8487EEA3C1E487EEA700738E0
191 0380A5EAF00700701300EA780FEA3C1EEA1FFC6C5AEA03E011127E9116>I<EAFC7CEAFD
192 FEB5FC381F0780381E03C0EA1C01EB00E0A6EB01C0EA1E03381F0780EBFF00EA1DFEEA1C
193 7890C7FCA6B47EA3131B7F9116>I<387F0FC038FF3FE0EA7F7F3807F040EBC0005BA290
194 C7FCA8EA7FFC12FF127F13127F9116>114 D<EA0FECEA3FFC127FEAF03CEAE01CA2EA70
195 00EA7F80EA1FF0EA07F8EA003CEA600E12E012F0EAF81EEAFFFC13F8EAC7E00F127D9116
196 >I<12035AA4EA7FFFB5FCA20007C7FCA75BEB0380A3EB8700EA03FE6C5A6C5A11177F96
197 16>I<EAFC3FA3EA1C07AB131F381FFFE0EA0FF7EA07C713127F9116>I<387F1FC038FF9F
198 E0387F1FC0381C0700A2EA0E0EA36C5AA4EA03B8A3EA01F0A26C5A13127F9116>I<38FF
199 1FE0A338380380A4EA39F3A20019130013B3A3EA1DB71317EA1F1FEA0F1EEA0E0E13127F
200 9116>I<387F1FC0133F131F380F1E006C5AEA03B813F012016C5A12017FEA03B8EA073C
201 131CEA0E0E387F1FC038FF3FE0387F1FC013127F9116>I<387F1FC038FF9FE0387F1FC0
202 381C0700120E130EA212075BA2EA039CA21398EA01B8A2EA00F0A35BA3485A1279127BEA
203 7F8090C7FC123C131B7F9116>I<383FFFC05AA238700780EB0F00131EC65A5B485A485A
204 EA078048C7FC381E01C0123C1278B5FCA312127F9116>I E /Fc
205 2 101 df<13201360A213C0A3EA0180A3EA0300A31206A25AA35AA35AA35AA35AA30B1D
206 7E9511>61 D<133C130C1318A41330EA07B0EA0C701210EA30601260A3EAC0C013C8A212
207 41EA62D0EA3C700E147E9311>100 D E /Fd 7 56 df<1218127812981218AC12FF0810
208 7D8F0F>49 D<121FEA6180EA40C0EA806012C01200A213C0EA0180EA030012065AEA1020
209 1220EA7FC012FF0B107F8F0F>I<121FEA2180EA60C0A212001380EA0100121FEA008013
210 40136012C0A2EA8040EA6080EA1F000B107F8F0F>I<EA0180A212031205120D12191211
211 1221124112C1EAFFE0EA0180A4EA0FE00B107F8F0F>I<EA20C0EA3F80EA2E001220A312
212 2FEA3080EA2040EA0060A312C0EA80C0EA6180EA1F000B107F8F0F>I<EA0780EA1840EA
213 30C0126013005A12CFEAF080EAE040EAC060A31240EA60C0EA3080EA1F000B107F8F0F>
214 I<1240EA7FF013E0EA8040A2EA0080EA01001202A212061204A2120CA50C117F900F>I
215 E /Fe 7 56 df<120C121C12EC120CAFEAFFC00A137D9211>49 D<121FEA60C01360EAF0
216 7013301260EA0070A2136013C012011380EA02005AEA08101210EA2020EA7FE012FF0C13
217 7E9211>I<EA0FC0EA3070EA7038A31200133013E0EA0FC0EA007013381318131C126012
218 F01318EAE038EA6070EA1FC00E137F9211>I<136013E0A2EA016012021206120C120812
219 101220126012C0EAFFFCEA0060A5EA03FC0E137F9211>I<EA6060EA7FC01380EA440012
220 40A3124FEA70C0EA40E0EA00601370A212E0A21360EA40E0EA21C0EA1F000C137E9211>
221 I<EA07C0EA0C20EA10701220EA6000A25A12CFEAD0C0EAE060EAC0201330A31240EA6020
222 EA2060EA10C0EA0F000C137E9211>I<1240EA7FFC13F8EA4010EA80301320EA00401380
223 EA0100A25A12021206A2120EA512040E147E9311>I E /Ff 19 123
224 df<90380FE02090387018603801C00439030003E000061301000E13004814605A152012
225 78127000F01400A80070142012781238A26C14407E000614806CEB01003801C006380070
226 18EB0FE01B1E7D9C21>67 D<39FFF00FF0390F0003C0150014025C5C5C1460148049C7FC
227 13021307497E1317EB23C0EB43E01381EB00F08014788080141F80EC078015C015E039FF
228 F01FF81D1C7D9B23>75 D<B512C0380F0078141C80801580A51500140E5C1478EBFFC090
229 C8FCACEAFFF0191C7D9B1F>80 D<007FB512C038700F010060130000401440A200C01420
230 1280A300001400B1497E3803FFFC1B1C7D9B21>84 D<387FFFFC387C00781270006013F0
231 EB01E01240EB03C0EB0780A238000F00131EA25B5BA25B485A1404EA03C0EA0780A2380F
232 000C001E1308A248131848133814F8B5FC161C7D9B1C>90 D<13201370A313B8A3EA011C
233 A2EA031EEA020EA2487EEA07FFEA040738080380A2001813C01301123838FC07F815157F
234 9419>97 D<B51280EA1C031300A21440A213081400A21318EA1FF8EA1C1813081420A213
235 001460144014C01301B5FC13157F9417>101 D<EBFC2038078260380E01E0EA1C004813
236 6000781320127012F01400A3EB0FF8EB00E0A21270127812387E7E380783603800FC2015
237 157E941B>103 D<38FF8FF8381C01C0A9EA1FFFEA1C01A938FF8FF815157F9419>I<EAFF
238 80EA1C00B3EAFF8009157F940D>I<38FF81F8381C01E01480140013025B5B5B13301370
239 13B8EA1D1C121EEA1C0E7F14801303EB01C014E014F038FF83FC16157F941A>107
240 D<38FC03F8381E00E014401217EA138013C01211EA10E01370A21338131CA2130E130714
241 C0130313011300123800FE134015157F9419>110 D<EA01F8EA070EEA0C03001C138038
242 3801C0007813E0EA700000F013F0A7007013E0EA7801003813C0381C0380EA1E0738070E
243 00EA01F814157E941A>I<EAFFF8EA1C0EEB0780130314C0A314801307EB0E00EA1FF8EA
244 1C1C7F7FA31480148414C4EB03CC38FF80F816157F9419>114 D<38FF83F8381C00E014
245 40AE000C13C0000E138038060100EA0386EA00FC15157F9419>117
246 D<39FF07F87E393C01E03C0038EBC018391C02E010A3390E047020A33907083840A33903
247 901C80A33901E00F00A33800C006A31F157F9423>119 D<38FF07F0381E03C0000E1300
248 EA0F02EA0706EA038413C8EA01D0EA00F0A21370137813BCEA011C487EEA020F487E380C
249 0380000813C0003C13E038FE07F815157F9419>I<38FF80FE381E0038000E1320000F13
250 606C13403803808013C03801C10013E212001374137C1338A848B4FC1715809419>I<EA
251 FFFEEAF01C12C013381280137013E01200EA01C0A2EA0380EA0700A2EA0E02A2121C1238
252 13061270131EEAFFFE0F157E9415>I E /Fg 58 123 df<EBFCF83807839CEA0E07001C
253 13081400A5B512E0381C0700AC387F1FE01617809615>11 D<13FCEA0782EA0E07121C13
254 0290C7FCA4B5FCEA1C07AC387F1FC01217809614>I<EA60C0EAF1E0A21270EA1020A2EA
255 2040A2EA4080A20B0A7F9612>34 D<126012F0A212701210A21220A21240A2040A7D960A
256 >39 D<120112021204120C1218A21230A212701260A312E0AA1260A312701230A21218A2
257 120C12041202120108227D980E>I<12801240122012301218A2120CA2120E1206A31207
258 AA1206A3120E120CA21218A2123012201240128008227E980E>I<126012F0A212701210
259 A21220A21240A2040A7D830A>44 D<EAFF80A2090280870C>I<126012F0A2126004047D
260 830A>I<1206120E12FE120EB1EAFFE00B157D9412>49 D<EA0F80EA30E0EA4070EA8030
261 EAC03812E0124012001370A2136013C0EA0180EA03001206EA0C081208EA1018EA3FF012
262 7F12FF0D157E9412>I<EA0FE0EA3030EA6018EA701CA21200131813381360EA07E0EA00
263 301318130C130EA212E0A2EAC00CEA4018EA3030EA0FE00F157F9412>I<EA01F0EA0608
264 EA080CEA181C1230EA7000126012E0EAE3E0EAEC30EAF018130CEAE00EA31260A2EA300C
265 1318EA1830EA07C00F157F9412>54 D<EA07E0EA1830EA2018EA600CA21270EA7818EA3E
266 10EA1F60EA07C0EA0FF0EA18F8EA607C131EEAC00E1306A21304EA600CEA3830EA0FE00F
267 157F9412>56 D<EA07C0EA1830EA30181260EAE00CA2130EA3EA601E1230EA186EEA0F8E
268 EA000E130C131CEA7018A2EA6030EA20E0EA1F800F157F9412>I<13101338A3135CA313
269 8EA3EA0107A238020380A33807FFC0EA0401A2380800E0A2001813F0123838FE03FE1717
270 7F961A>65 D<EAFFFE381C0380EB00E014601470A414E0EB01C0381FFF8014C0381C00E0
271 147014301438A4147014E0EB01C0B5120015177F9619>I<EBFC1038038330380E00B048
272 1370481330123000701310126012E01400A51410126012700030132012386C13406C1380
273 38038300EA00FC14177E9619>I<B5FC381C01C0EB00E0143014381418141C140C140EA7
274 140C141CA2143814301460EB01C0B5120017177F961B>I<B512E0EA1C00146014201410
275 A3EB0400A3130CEA1FFCEA1C0C13041408A2130014181410A2143014F0B5FC15177F9618
276 >I<EAFFE0EA0E00B3A3EAFFE00B177F960D>73 D<EA0FF8EA00E0B112E0A2EAC1C0EA61
277 80EA1F000D177E9612>I<38FF80FE381C0078146014401480EB0100130613085B133813
278 78139CEA1D0E121EEA1C07EB0380EB01C0A2EB00E014701478147C38FF80FF18177F961B
279 >I<00FEEB03F8001E14C000171305A338138009A23811C011A33810E021A2EB7041A3EB
280 3881A2EB1D01A2130EA2123839FE040FF81D177F9620>77 D<00FC13FE001E1338001F13
281 101217EA1380EA11C0A2EA10E013701338A2131C130E130F1307EB0390EB01D0A2EB00F0
282 14701430123800FE131017177F961A>I<13FCEA0303380E01C0381C00E0481370003013
283 30007013380060131800E0131CA700701338A200301330003813706C13E0380E01C03803
284 0300EA00FC16177E961B>I<EAFFFE381C0380EB00C014601470A4146014C0EB0380381F
285 FE00001CC7FCAAB47E14177F9618>I<EA0FC4EA302CEA601CEA400CEAC004A3EAE00012
286 70127FEA3FE0EA0FF8EA01FCEA001C130E13061280A3EAC004EAE008EAD810EA87E00F17
287 7E9614>83 D<387FFFF83860381800401308A200801304A300001300AF3803FF8016177F
288 9619>I<B4137E003C1338001C1310A26C1320A2000F13606C1340A238038080A213C100
289 011300A2EA00E2A213F21374A21338A3131017177F961A>86 D<12FCA212C0B3AB12FCA2
290 06217D980A>91 D<EA2040A2EA4080A2EA8100A2EAE1C0EAF1E0A2EA60C00B0A7B9612>
291 I<12FCA2120CB3AB12FCA2062180980A>I<EA3FC0EA70601330EA20381200EA03F8EA1E
292 3812301270EAE039A21379EA70FFEA1F1E100E7F8D12>97 D<12F81238A8EA39F0EA3E0C
293 EA380613077F1480A414005B1306EA361CEA21F011177F9614>I<EA07F0EA18381230EA
294 7010EA600012E0A41260EA70081230EA1830EA07C00D0E7F8D10>I<133E130EA8EA07CE
295 EA1C3EEA300E1270126012E0A412601270EA301EEA182E3807CF8011177F9614>I<EA0F
296 C0EA1860EA3030EA7038EAE018EAFFF8EAE000A31260EA7008EA3010EA1830EA07C00D0E
297 7F8D10>I<EA03E0EA0670120EEA1C201300A5EAFF80EA1C00ACEA7F800C1780960B>I<EA
298 0F9EEA18E3EA3060EA7070A3EA3060EA18C0EA2F80EA20001260EA3FE013F813FCEA600E
299 EAC006A3EA600CEA3838EA0FE010157F8D12>I<12F81238A813F8EA3B1CEA3C0E1238AA
300 38FE3F8011177F9614>I<12301278A212301200A512F81238AC12FE07177F960A>I<12F8
301 1238A8133E13381330134013801239EA3FC0EA39E0123813F01378133CA2EAFE7F10177F
302 9613>107 D<12F81238B3A312FE07177F960A>I<38F8F83E383B1CC7393C0F0380EA380E
303 AA39FE3F8FE01B0E7F8D1E>I<EAF8F8EA3B1CEA3C0E1238AA38FE3F80110E7F8D14>I<EA
304 07C0EA1830EA3018EA600CA2EAE00EA5EA701CEA3018EA1830EA07C00F0E7F8D12>I<EA
305 F9F0EA3E1CEA380613077F1480A414005B130EEA3E1CEA39F00038C7FCA512FE11147F8D
306 14>I<EA07C2EA1C26EA381EEA700E126012E0A412601270EA301EEA1C2EEA07CEEA000E
307 A5EB3F8011147F8D13>I<EAF9E0EA3A70123CEA38201300A9B4FC0C0E7F8D0E>I<EA1F40
308 EA60C0EAC040A2EAE000B4FCEA7F80EA1FC0EA01E0EA8060A212C0EAE0C0EA9F000B0E7F
309 8D0E>I<1208A31218A21238EAFFC0EA3800A71340A4EA1C80EA0F000A147F930E>I<EAF8
310 3EEA380EAA131EEA1C2E3807CF80110E7F8D14>I<EAFE1FEA380EEA3C0CEA1C08A2EA0E
311 10A2EA0720A213E0EA03C0A2EA0180A2100E7F8D13>I<38FEFE7C383838381410133C00
312 1C1320134C381E4E60380ECE401387000713801303A200031300EA0201160E7F8D19>I<
313 EAFE3FEA3C1CEA1C10EA0E20EA074013C0EA0380EA01C0EA02E0EA04F0EA0870EA1838EA
314 383CEAFC7F100E7F8D13>I<EAFE1FEA380EEA3C0CEA1C08A2EA0E10A2EA0720A213E0EA
315 03C0A2EA0180A21300A212E2A212A4127810147F8D13>I<EAFFF0EAC0E01280EA81C0EA
316 83801287EA0700120EEA1E08121CEA3818EA70101330EAFFF00D0E7F8D10>I
317 E /Fh 5 50 df<B61280A219027D8A20>0 D<0040132000C01360006013C03830018038
318 180300EA0C066C5A6C5AEA01B0EA00E0A2EA01B0EA0318EA060C487E487E383001803860
319 00C04813600040132013147A9320>2 D<1203A4EAC30CEAE31CEA7338EA1FE0EA0780A2
320 EA1FE0EA7338EAE31CEAC30CEA0300A40E127D9215>I<EA03C0EA0FF0EA1FF8EA3FFCEA
321 7FFEA2B5FCA4EA7FFEA2EA3FFCEA1FF8EA0FF0EA03C010107E9115>15
322 D<D807E0133FD80FF8EBF1803A183E0180403A200F030020264007841310EB03CC268001
323 D81308EB00F0A21478A214DC2640019E1310140F3A20060780203A100C03E0C03A0C7800
324 FF80D807E0EB3F0025127E912A>49 D E /Fi 56 123 df<903801F03C9038071C47010C
325 13C7EC19C690381C0180140313181338A2EC0700A20003B512F03900700700A3140EA213
326 E0A35CA2EA01C0A35CA2EA0380A21430EB0070A248136038C630E038E638C038CC3180D8
327 781EC7FC2025819C19>11 D<14FE90380301801306EB0C03EB1C0191C7FC13181338A438
328 03FFFE3800700EA35CA213E0A25CA3EA01C01472A438038034141891C7FC90C8FCA25A12
329 C612E65A12781925819C17>I<12E0A3127012301210121812080508749C15>18
330 D<12031207120E121C1238126012C012800808729C15>I<133C0163133001C113703801
331 8080000314201301D807031340EC0080390E00010014025CEBE01A380F1021000E1341EC
332 8080EA1A203839C10038300160387000E0A248EB0100A31402A200605B00705B00305B6C
333 1360380E0380D801FCC7FC1C1F7B9D20>38 D<1218123CA31204A21208A2121012201240
334 1280060C779C0D>I<12181238127812381208A21210A212201240A21280050C7D830D>
335 44 D<EAFFC0A30A037D890F>I<EB018014C0EB0380A314005BA21306130E130C131C1318
336 A25BA25B134013C6EA018E130E1202EA061C120C1218123FEA40F838803F8038003800A2
337 5BA45B136012247E9B15>52 D<EB0F80EB3860EB6020EBC0E0EA018048C7FC1206120E12
338 0C121C13F8EA3904EA3A06EA3C031278A2007013801400EA600712E0A21306130E130CEA
339 601C1318EA2030EA30C0EA0F80131D7C9B15>54 D<131FEB60C0EBC060EA018038030030
340 A200061360120714C013803803C10013E6EA01FCEA0078EA01BCEA061E487E487E383003
341 801220EA6001A238C00300A21306EA60045BEA3830EA0FC0141D7D9B15>56
342 D<133E13E138018180380300C01206120E120C121CA213011238A31303001813801307EA
343 080B380C3300EA03C7EA0007130E130C131C1318EAE0305BEA80C0EAC180003EC7FC121D
344 7C9B15>I<1206120FA212061200AA1230127812F0126008127C910D>I<1418A21438A214
345 78A214B8EB0138A2EB023C141C1304130C13081310A21320A2EB7FFCEBC01C1380EA0100
346 141E0002130EA25A120C001C131EB4EBFFC01A1D7E9C1F>65 D<48B5FC39003C03809038
347 3801C0EC00E0A35B1401A2EC03C001E01380EC0F00141EEBFFFC3801C00E801580A2EA03
348 80A43907000F00140E141E5C000E13F0B512C01B1C7E9B1D>I<903803F02090381E0C60
349 90383002E09038E003C03801C001EA038048C7FC000E1480121E121C123C15005AA35AA4
350 1404A35C12705C6C5B00185B6C485AD80706C7FCEA01F81B1E7A9C1E>I<48B5FC39003C
351 03C090383800E0A21570A24913781538A215785BA4484813F0A315E03803800115C01403
352 15803907000700140E5C5C000E13E0B512801D1C7E9B1F>I<48B512F038003C00013813
353 301520A35BA214081500495AA21430EBFFF03801C020A439038040801400A2EC0100EA07
354 005C14021406000E133CB512FC1C1C7E9B1C>I<3A01FFC3FF803A003C00780001381370
355 A4495BA449485AA390B5FC3901C00380A4484848C7FCA43807000EA448131E39FFE1FFC0
356 211C7E9B1F>72 D<EA03FFEA00781370A413E0A4EA01C0A4EA0380A4EA0700A4120EA412
357 1EEAFFC0101C7D9B10>I<EB3FF8EB03C01480A4EB0700A4130EA45BA45BA4EA607012E0
358 EAC060EA80E0EA81C0EA4380003EC7FC151D7C9B16>I<3801FFC038003C001338A45BA4
359 5BA4485AA438038002A31404EA0700140C14181438000E13F0B5FC171C7E9B1A>76
360 D<D801FEEB01FED8003E14E0012EEB03C01505A21509014EEB0B801513152313470187EB
361 4700A21587EC0107D80107130E14021404A20002495AEB0388149014A000045C14C0A200
362 0C1380001CEB007839FF8307FF271C7E9B25>I<EB07F0EB1C1CEB700E497E3901C00380
363 EA0380EA0700000E14C0121E121C123CA25AA348EB0780A3EC0F00A2140E141E5C007013
364 385C00785B383801C06C485AD80E0EC7FCEA03F81A1E7A9C20>79
365 D<3801FFFE39003C038090383801C0EC00E0A3EB7001A315C0EBE0031580EC0700141C38
366 01FFF001C0C7FCA3485AA448C8FCA45AEAFFE01B1C7E9B1C>I<3801FFFE39003C078090
367 383801C015E01400A2EB7001A3EC03C001E01380EC0700141CEBFFE03801C03080141CA2
368 EA0380A43807003C1520A348144039FFE01E80C7EA0F001B1D7E9B1E>82
369 D<EB0F84EB304CEB403CEB8018EA01005AA200061310A214001207A2EA03E013FC6CB4FC
370 38007F80EB07C01301A21300A21220A238600180A2EB03001302EAF004EACC18EA83E016
371 1E7D9C17>I<001FB512C0381C070138300E0000201480126012405B1280A2000014005B
372 A45BA45BA4485AA41203EA7FFE1A1C799B1E>I<39FF801FC0393C000700001C1304A25C
373 5CA25CA25C5CA26C48C7FCA213025BA25BA25B5B120F6C5AA25B90C8FCA21206A21A1D77
374 9B1F>86 D<3AFF83FF07F03A3C007001C00038158002F01300A290380170025D13025D13
375 045D13085D131001305B1320D81C405BA2D98071C7FCA2381D0072A2001E1374A2001C13
376 38A20018133014201210241D779B29>I<39FFC00FE0391E000380000EEB02005C000F13
377 0C6C13086D5A00035B5CEBC0C000015B01C1C7FC13E2EA00E413EC13F81370A25BA4485A
378 A4485AEA3FF81B1C789B1F>89 D<EA01E3EA0717EA0C0F1218EA380E12301270A2EAE01C
379 A41339A3EA6079EA319AEA1E0C10127C9115>97 D<123F1207A2120EA45AA4EA39E0EA3A
380 18EA3C0C12381270130EA3EAE01CA31318133813301360EA60C0EA3180EA1E000F1D7C9C
381 13>I<13F8EA0304120EEA1C0EEA181CEA30001270A25AA51304EA60081310EA3060EA0F
382 800F127C9113>I<EB07E01300A2EB01C0A4EB0380A43801E700EA0717EA0C0F1218EA38
383 0E12301270A2485AA41339A3EA6079EA319AEA1E0C131D7C9C15>I<13F8EA0704120CEA
384 1802EA38041230EA7008EA7FF0EAE000A5EA60041308EA30101360EA0F800F127C9113>
385 I<EB03C0EB0670130CEB1C601400A25BA53803FF8038007000A55BA5485AA5485AA390C7
386 FCA25A12C612E65A12781425819C0D>I<EB78C0EA01C5EA03031206000E1380120C121C
387 A238380700A4130EA3EA181EEA0C7CEA079CEA001CA25BA2EAC030EAE070EAC1C0007FC7
388 FC121A7E9113>I<EA0FC01201A2485AA448C7FCA4EA0E3E13C3380F0380120E121E121C
389 A338380700A3130E00701340A2131C1480EAE00C38600700121D7E9C15>I<EA01801203
390 EA0100C7FCA7121C12261247A2128EA2120E5AA35AA21271A31272A2123C091C7C9B0D>
391 I<EA0FC01201A2485AA448C7FCA4380E07801308EB11C01321381C4180EB8000001DC7FC
392 121EEA3FC0EA38E01370A2EA7071A31372EAE032EA601C121D7E9C13>107
393 D<EA1F801203A2EA0700A4120EA45AA45AA45AA412E2A312E412641238091D7D9C0B>I<
394 391C1E078039266318C0394683A0E0384703C0008E1380A2120EA2391C0701C0A3EC0380
395 D8380E1388A2EC0708151039701C032039300C01C01D127C9122>I<EA383EEA4CC3384D
396 0380124E129E129C121CA238380700A3130E00701340A2131C1480EAE00C386007001212
397 7C9117>I<13F8EA030CEA0E06487E1218123000701380A238E00700A3130EA25BEA6018
398 5BEA30E0EA0F8011127C9115>I<380387803804C860EBD03013E0EA09C014381201A238
399 038070A31460380700E014C0EB0180EB8300EA0E86137890C7FCA25AA45AB4FC151A8091
400 15>I<EA01E1EA0713EA0C0F1218EA380E12301270A2EAE01CA41338A3EA6078EA31F0EA
401 1E701200A213E0A4EA01C0EA0FF8101A7C9113>I<EA1C3CEA2642EA4687EA4707EA8E06
402 1300120EA25AA45AA45A123010127C9112>I<EA01F0EA0608120C131CEA1818EA1C0012
403 1F13C0EA0FF01207EA00781338EA603012E012C0EA8060EA60C0EA1F000E127D9111>I<
404 12035AA3120EA4EAFFE0EA1C00A35AA45AA4EAE080A2EAE100A2126612380B1A7C990E>
405 I<381C0180EA2E03124EA2388E0700A2121CA2EA380EA438301C80A3EA383C38184D00EA
406 0F8611127C9116>I<EA1C06EA2E0EEA4E06A2EA8E02A2121CA2EA3804A313081230A213
407 10EA3820EA1840EA0F800F127C9113>I<381E0183382703871247148338870701A2120E
408 A2381C0E02A31404EA180C131C1408EA1C1E380C26303807C3C018127C911C>I<380387
409 80380CC840380870E012103820E0C014001200A2485AA4EA03811263EAE38212C5EA8584
410 EA787813127E9113>I<381C0180EA2E03124EA2388E0700A2121CA2EA380EA4EA301CA3
411 EA383CEA1878EA0FB8EA003813301370EAE0605BEA81800043C7FC123C111A7C9114>I<
412 EA01C1EA07E1EA0FF6EA081CEA1008EA0010132013401380EA010012025AEA08041210EA
413 2C0CEA73F8EA41F0EA80E010127E9111>I E /Fj 9 120 df<13F8EA030C380E0604EA1C
414 07383803080030138800701390A200E013A0A214C01480A3EA6007EB0B8838307190380F
415 80E016127E911B>11 D<EB01F0EB0618EB080C1310EB200E13401380141CEA0100141814
416 3838020FF0EB10C0EB0FE0EB00305AA21438A2481370A314E01218EB01C000141380EB03
417 00EA230EEA20F890C7FCA25AA45AA217257F9C17>I<126012F0A2126004047C830C>58
418 D<130113031306A3130CA31318A31330A31360A213C0A3EA0180A3EA0300A31206A25AA3
419 5AA35AA35AA35AA210297E9E15>61 D<EB07E01300A2EB01C0A4EB0380A43801E700EA07
420 17EA0C0F1218EA380E12301270A2485AA4EB3880A3EA607838319900EA1E0E131D7E9C16
421 >100 D<EA0FC01201A2485AA448C7FCA4EA0E07EB0880EB11C01323381C4780EB830000
422 1DC7FC121EEA3FC0EA38E01370A2EA7071A31372EAE032EA601C121D7E9C16>107
423 D<EA1F801203A2EA0700A4120EA45AA45AA45AA412E2A312E412641238091D7F9C0C>I<
424 EA3C1F384E6180384681C0EA4701128F128E120EA2381C0380A3EB070000381310A2130E
425 1420387006403830038014127E9119>110 D<001CEBC080392701C1C0124714C0398703
426 8040A2120EA2391C070080A3EC0100EA1806A2381C0E02EB0F04380E13083803E1F01A12
427 7E911E>119 D E /Fk 83 128 df<EB3F80EBE0E03803803848487E000E7F487F003C14
428 8000381303007814C0A20070130100F014E000F11311EBFFF1A3EB001100F01301A20070
429 14C000781303A200381480003C1307001C14006C130E6C5B6C6C5A3800E0E0EB3F801B1E
430 7E9C20>2 D<EB7E1F3901C1B180390303E3C0000713C3000EEBC180903801C000A6B512
431 FC380E01C0B0387F87FC1A1D809C18>11 D<137E3801C180EA0301380703C0120EEB0180
432 90C7FCA5B512C0EA0E01B0387F87F8151D809C17>I<EB7FC0EA01C1EA03031207EA0E01
433 A7B5FCEA0E01B0387FCFF8151D809C17>I<90383F07E03901C09C18380380F0D8070113
434 3C000E13E00100131892C7FCA5B612FC390E00E01CB03A7FC7FCFF80211D809C23>I<12
435 0EA2121E1238127012E012800707779C15>19 D<EA6060EAF0F0EAF8F8EA6868EA0808A3
436 EA1010A2EA2020EA4040EA80800D0C7F9C15>34 D<000F14C0EA18803930600380397038
437 0700386027FB38E010065CA25CA25C5CEA602000705B38304180EA1881390F0303C03900
438 060620EC0C1090380C1C08EB1818EC380413301360A213C0A2EA01803903001808141C00
439 06EB0C1048EB06200004EB03C01E217E9E23>37 D<126012F012F812681208A31210A212
440 2012401280050C7C9C0C>39 D<1380EA0100120212065AA25AA25AA35AA412E0AC1260A4
441 7EA37EA27EA27E12027EEA0080092A7C9E10>I<7E12407E12307EA27EA27EA37EA41380
442 AC1300A41206A35AA25AA25A12205A5A092A7E9E10>I<1306ADB612E0A2D80006C7FCAD
443 1B1C7E9720>43 D<126012F0A212701210A41220A212401280040C7C830C>I<EAFFE0A2
444 0B0280890E>I<126012F0A2126004047C830C>I<130113031306A3130CA31318A31330A3
445 1360A213C0A3EA0180A3EA0300A31206A25AA35AA35AA35AA35AA210297E9E15>I<EA03
446 C0EA0C30EA1818EA300CA2EA700EEA6006A2EAE007ADEA6006A2EA700EEA300CA2EA1818
447 EA0C30EA07E0101D7E9B15>I<5A1207123F12C71207B3A5EAFFF80D1C7C9B15>I<EA07C0
448 EA1830EA201CEA400C130EEAF00F12F81307A21270EA000F130EA2131CA2133813701360
449 13C0EA0180EA0300EA0601120C1218EA1002EA3FFE127F12FF101C7E9B15>I<EA07E0EA
450 1830EA201CA2EA781E130E131E1238EA001CA2131813301360EA07C0EA0030131CA2130E
451 130FA2127012F8A3EAF00EEA401C1220EA1830EA07C0101D7E9B15>I<130CA2131C133C
452 A2135C13DC139CEA011C120312021204120C1208121012301220124012C0B512C038001C
453 00A73801FFC0121C7F9B15>I<EA300CEA3FF813F013C0EA2000A6EA23E0EA2C30EA3018
454 131CEA200E1200130FA3126012F0A3EA800EEA401E131CEA2038EA1870EA07C0101D7E9B
455 15>I<13F0EA030CEA0404EA0C0EEA181E1230130CEA7000A21260EAE3E0EAE430EAE818
456 EAF00C130EEAE0061307A51260A2EA7006EA300E130CEA1818EA0C30EA03E0101D7E9B15
457 >I<1240387FFF801400A2EA4002485AA25B485AA25B1360134013C0A212015BA21203A4
458 1207A66CC7FC111D7E9B15>I<EA03E0EA0C30EA1008EA200C13061260A21270A2EA7C0C
459 EA3E18EA3FB0EA1FE0EA07F013F8EA18FCEA307EEA601E130FEAC0071303A4EA60021304
460 EA300CEA1C10EA07E0101D7E9B15>I<EA03C0EA0C30EA1818EA300C1270EA600EEAE006
461 A21307A51260EA700F1230EA1817EA0C27EA07C7EA0006A2130EEA300C127813181270EA
462 2030EA10C0EA0F80101D7E9B15>I<126012F0A212601200AA126012F0A2126004127C91
463 0C>I<126012F0A212601200AA126012F0A212701210A41220A212401280041A7C910C>I<
464 007FB512C0B612E0C9FCA8B612E06C14C01B0C7E8F20>61 D<1306A3130FA3EB1780A2EB
465 37C01323A2EB43E01341A2EB80F0A338010078A2EBFFF83802003CA3487FA2000C131F80
466 001E5BB4EBFFF01C1D7F9C1F>65 D<B512C0380F00788080140E140FA4140E141E5C14F8
467 EBFFF0EB003C8080801580A5EC0F00A2141E1478B512E0191C7F9B1D>I<90381F8080EB
468 E0613801801938070007000E13035A14015A00781300A2127000F01400A8007014801278
469 A212386CEB0100A26C13026C5B380180083800E030EB1FC0191E7E9C1E>I<B512C0380F
470 00F0143C140E80A2EC038015C01401A215E0A815C0A21403158014071500140E5C1470B5
471 12C01B1C7E9B20>I<B512FC380F003C140C1404A214061402A213011400A35B13FF1303
472 7FA3140113001402A31406A2140C143CB512FC181C7E9B1C>I<B512F8380F0078141814
473 08A2140C1404A213011400A35B13FF13037FA490C7FCA8EAFFF8161C7E9B1B>I<90381F
474 8080EBE0613801801938070007000E13035A14015A00781300A2127000F01400A6ECFFF0
475 EC0F80007013071278A212387EA27E6C130B380180113800E06090381F80001C1E7E9C21
476 >I<39FFF0FFF0390F000F00AC90B5FCEB000FAD39FFF0FFF01C1C7F9B1F>I<EAFFF0EA0F
477 00B3A8EAFFF00C1C7F9B0F>I<3807FF8038007C00133CB3127012F8A21338EA7078EA40
478 70EA30E0EA0F80111D7F9B15>I<39FFF01FE0390F000780EC060014045C5C5C5C5C49C7
479 FC13021306130FEB17801327EB43C0EB81E013016D7E1478A280143E141E80158015C039
480 FFF03FF01C1C7F9B20>I<EAFFF8EA0F8090C7FCB01408A31418A2141014301470EB01F0
481 B5FC151C7E9B1A>I<B46CEBFF80000FECF800A2390BC00178A33809E002A23808F004A3
482 EB7808A3EB3C10A3EB1E20A3EB0F40A2EB0780A3EB0300121C3AFF8307FF80211C7E9B26
483 >I<B4EB1FF0390F8003809038C00100120BEA09E0EA08F0A21378133C133E131E130F14
484 811307EB03C1EB01E114F113001479147D143D141FA2808080121CB46C7E1C1C7F9B1F>
485 I<EB3F80EBE0E03803803848487E000E7F487F003C148000381303007814C0A200701301
486 00F014E0A8007014C000781303A200381480003C1307001C14006C130E6C5B6C6C5A3800
487 E0E0EB3F801B1E7E9C20>I<B51280380F00E01478143C141C141EA5141C143C147814E0
488 EBFF8090C7FCACEAFFF0171C7E9B1C>I<B5FC380F01E0EB007880141C141EA4141C143C
489 5CEB01E001FFC7FCEB01E0EB0070147880A61510A2141CA239FFF00E20C7EA03C01C1D7E
490 9B1F>82 D<3807E080EA1C19EA30051303EA600112E01300A36C13007E127CEA7FC0EA3F
491 F8EA1FFEEA07FFC61380130FEB07C0130313011280A300C01380A238E00300EAD002EACC
492 0CEA83F8121E7E9C17>I<007FB512C038700F010060130000401440A200C014201280A3
493 00001400B1497E3803FFFC1B1C7F9B1E>I<39FFF01FF0390F000380EC0100B3A26C1302
494 138000035BEA01C03800E018EB7060EB0F801C1D7F9B1F>I<39FFE00FF0391F0003C0EC
495 01806C1400A238078002A213C000035BA2EBE00C00011308A26C6C5AA213F8EB7820A26D
496 5AA36D5AA2131F6DC7FCA21306A31C1D7F9B1F>I<3AFFE1FFC0FF3A1F003E003C001E01
497 3C13186C6D1310A32607801F1320A33A03C0278040A33A01E043C080A33A00F081E100A3
498 9038F900F3017913F2A2017E137E013E137CA2013C133C011C1338A20118131801081310
499 281D7F9B2B>I<39FFF003FC390F8001E00007EB00C06D13800003EB01006D5A00011302
500 6C6C5A13F8EB7808EB7C18EB3C10EB3E20131F6D5A14C06D5AABEB7FF81E1C809B1F>89
501 D<12FEA212C0B3B312FEA207297C9E0C>91 D<EA0808EA1010EA2020EA4040A2EA8080A3
502 EAB0B0EAF8F8EA7878EA30300D0C7A9C15>I<12FEA21206B3B312FEA20729809E0C>I<EA
503 1FC0EA3070EA78387F12301200A2EA01FCEA0F1C12381270126000E01340A3EA603C3830
504 4E80381F870012127E9115>97 D<12FC121CAA137CEA1D87381E0180381C00C014E01460
505 1470A6146014E014C0381E018038190700EA10FC141D7F9C17>I<EA03F8EA0C0CEA181E
506 1230EA700CEA600012E0A61260EA70021230EA1804EA0C18EA03E00F127F9112>I<EB1F
507 801303AAEA03F3EA0E0BEA1807EA30031270126012E0A6126012701230EA1807EA0E1B38
508 03E3F0141D7F9C17>I<EA07E0EA0C30EA1818EA300CEA700EEA600612E0EAFFFEEAE000
509 A41260EA70021230EA1804EA0C18EA03E00F127F9112>I<13F8EA018CEA071E1206EA0E
510 0C1300A6EAFFE0EA0E00B0EA7FE00F1D809C0D>I<EB03803807C4C0EA1C783838388038
511 301800EA701CA4EA3018EA38386C5AEA27C00020C7FCA21230EA3FF86CB4FC1480EA2003
512 386001C0EAC000A33860018038300300EA1C0EEA07F8121C7F9215>I<12FC121CAA137C
513 1387EA1D03001E1380121CAD38FF9FF0141D7F9C17>I<1218123CA21218C7FCA712FC12
514 1CB0EAFF80091D7F9C0C>I<13C0EA01E0A2EA00C01300A7EA07E01200B3A21260EAF0C0
515 12F1EA6180EA3E000B25839C0D>I<12FC121CAAEB0FE0EB0780EB06005B13105B5B13E0
516 121DEA1E70EA1C781338133C131C7F130F148038FF9FE0131D7F9C16>I<12FC121CB3A9
517 EAFF80091D7F9C0C>I<39FC7E07E0391C838838391D019018001EEBE01C001C13C0AD3A
518 FF8FF8FF8021127F9124>I<EAFC7CEA1C87EA1D03001E1380121CAD38FF9FF014127F91
519 17>I<EA03F0EA0E1CEA1806487E00701380EA600100E013C0A600601380EA7003003013
520 00EA1806EA0E1CEA03F012127F9115>I<EAFC7CEA1D87381E0180001C13C0EB00E0A214
521 70A614E0A2EB01C0001E1380381D0700EA1CFC90C7FCA7B47E141A7F9117>I<3803E080
522 EA0E19EA1805EA3807EA7003A212E0A61270A2EA38071218EA0E1BEA03E3EA0003A7EB1F
523 F0141A7F9116>I<EAFCE0EA1D38EA1E78A2EA1C301300ACEAFFC00D127F9110>I<EA1F90
524 EA2070EA4030EAC010A212E0EAF800EA7F80EA3FE0EA0FF0EA00F8EA8038131812C0A2EA
525 E010EAD060EA8FC00D127F9110>I<1204A4120CA2121C123CEAFFE0EA1C00A91310A512
526 0CEA0E20EA03C00C1A7F9910>I<38FC1F80EA1C03AD1307120CEA0E1B3803E3F014127F
527 9117>I<38FF07E0383C0380381C0100A2EA0E02A2EA0F06EA0704A2EA0388A213C8EA01
528 D0A2EA00E0A3134013127F9116>I<39FF3FC7E0393C0703C0001CEB01801500130B000E
529 1382A21311000713C4A213203803A0E8A2EBC06800011370A2EB8030000013201B127F91
530 1E>I<38FF0FE0381E0700EA1C06EA0E046C5AEA039013B0EA01E012007F12011338EA02
531 1C1204EA0C0E487E003C138038FE1FF014127F9116>I<38FF07E0383C0380381C0100A2
532 EA0E02A2EA0F06EA0704A2EA0388A213C8EA01D0A2EA00E0A31340A25BA212F000F1C7FC
533 12F312661238131A7F9116>I<EA7FFCEA70381260EA407013F013E0EA41C012031380EA
534 0700EA0F04120E121CEA3C0CEA380812701338EAFFF80E127F9112>I<B512F01401808B
535 15>I<EA6060EAF0F0A2EA60600C047C9C15>127 D E /Fl 38 121
536 df<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49
537 D<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C06C131F15E0140FA2
538 127E003C131FC7FC15C0A2EC3F801500147E5C5C495A495AEB078049C7FC131E4913E013
539 705B3901C001C0EA0380EA0600000FB5FC5A5A5AB61280A31B277DA622>I<EB7F803803
540 FFF04813FC380F81FE381F007FEA3F80EC3F80A3121F1300C7EA7F00A2147E5C495AEB07
541 F0EBFFC0A2EB01F8EB007E801580EC1FC0A215E0A2123C127EB4FCA215C0143F48148000
542 7CEB7F00383F01FE6CB45A000713F0C613801B277DA622>I<140FA25C5C5C5C5BA2EB03
543 BFEB073F130E131C133C1338137013E0EA01C0EA038012071300120E5A5A5A12F0B612F8
544 A3C7EA7F00A890381FFFF8A31D277EA622>I<00181303381F801FEBFFFE5C5C5C14C091
545 C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215E0A21218
546 127C12FEA315C05A0078EB3F80A26CEB7F00381F01FE6CB45A000313F0C613801B277DA6
547 22>I<EB07F8EB3FFE90B5FC3901FC07803903F00FC03807C01FEA0F80121F130048EB0F
548 8091C7FC127EA3EAFE02EB1FF0EB3FFCEB603EEB801F00FF14809038000FC0A24814E0A4
549 127EA4123E003F14C07EEC1F80D80F8013003807E07E6CB45A6C5B38003FC01B277DA622
550 >I<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F1480
551 A249486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F08049130300
552 0181491301A2000381D8FFFE013F13FCA32E297EA833>65 D<91387FE003903907FFFC07
553 011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A16
554 0F485A1607127FA290C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C
555 14786CB4EB01F090397FF007C0011FB512800107EBFE009038007FF028297CA831>67
556 D<B612FCEDFF8016E03A03FC001FF8ED03FCED00FE167FEE3F80EE1FC0A2EE0FE0A2EE07
557 F0A417F8AA17F0A3EE0FE0A217C0161FEE3F80EE7F005EED03FCED1FF8B75A168003FCC7
558 FC2D297EA834>I<B712E0A33903FC001FED07F01501A215001670A3913801C0781638A3
559 02031300A2140F90B5FCA3EBFC0F1403A20201130EA3161C91C7FCA3163C1638167816F8
560 15011503151FB712F0A327297EA82C>I<B712C0A33903FC003FED0FE015031501A21500
561 A316F0913801C070A316001403A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FC
562 A324297EA82A>I<B5D8F00FB5FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F0
563 0FB5FCA330297EA835>72 D<B512F0A33803FC00B3B1B512F0A314297EA819>I<B612F8
564 15FF16C03A03FC003FE0ED07F0ED03F816FC150116FEA716FC150316F8ED07F0ED3FE090
565 B61280EDFE0001FCC8FCB0B512F0A327297EA82E>80 D<B612E015FE6F7E3A03FC003FE0
566 ED0FF06F7E6F7E150182A65E4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED
567 3FC06F7E6F7E6F7EA9170EA21503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>
568 82 D<007FB71280A39039807F807FD87C00140F00781507A20070150300F016C0A24815
569 01A5C791C7FCB3A490B612C0A32A287EA72F>84 D<B53CE07FFFE01FFFC0A32803FC0003
570 FCC7EA7000A26D6D7E000160A26D6E13016C604B138002801503017F5F4B13C0D93FC001
571 3F49C7FCA2913AE00E1FE00F011F160E17F09126F01C0F131E010F161C033C13F8902707
572 F838075BA2037813FC902703FC70035BA2913AFEE001FEF001015E02FF14FF4B7E6D5EA2
573 6E486D5AA36EC76CC8FCA2023E80021E141EA242297FA845>87 D<3803FF80000F13F038
574 1F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA0FE0EA1F80EA3F00127E
575 5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B7E9A21>97
576 D<EB3FF03801FFFC3803F03E380FC07FEA1F80EA3F00A248133E007E90C7FCA212FEA712
577 7EA2127F6CEB03801380001FEB0700380FE00E3803F83C3801FFF838003FC0191B7E9A1E
578 >99 D<EC7FF0A31407ACEB3F873801FFF73807F03F380FC00F381F8007EA3F00A2127EA3
579 12FEA8127EA27EA2381F800F380FC01F3907E07FFF3801FFE738007F87202A7EA925>I<
580 EB3FC03801FFF03803E07C380F803E001F7F130048EB0F80127E15C0A200FE1307A2B6FC
581 A248C8FCA3127EA2127F6CEB01C07E390F8003803907C007003803F01E3800FFFCEB3FE0
582 1A1B7E9A1F>I<EB07F8EB3FFCEB7E3E3801FC7FEA03F813F01207143E1400A7B512C0A3
583 3807F000B3A3387FFF80A3182A7EA915>I<9038FF80F00003EBE3F8390FC1FE1C391F00
584 7C7C48137E003EEB3E10007EEB3F00A6003E133E003F137E6C137C380FC1F8380BFFE000
585 18138090C8FC1238A2123C383FFFF814FF6C14C06C14E06C14F0121F383C0007007CEB01
586 F8481300A4007CEB01F0A2003FEB07E0390FC01F806CB5120038007FF01E287E9A22>I<
587 EAFFE0A3120FAC147E9038E1FF809038E30FC001E413E0EBE80701F813F013F0A213E0B0
588 39FFFE3FFFA3202A7DA925>I<1207EA0F80EA1FC0EA3FE0A3EA1FC0EA0F80EA0700C7FC
589 A7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>I<EAFFE0A3120FACEC1FFCA3EC0780EC0F
590 00141E5C5C14E0EBE3C013E7EBEFE0EBFFF08013F3EBE1FCEBC0FE147FA2EC3F80EC1FC0
591 EC0FE0A2EC07F039FFFC1FFFA3202A7FA923>107 D<EAFFE0A3120FB3B2EAFFFEA30F2A
592 7EA912>I<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D80FC49038F101FC9039
593 C803F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A3331B7D9A38>I<38FFC0
594 7E9038C1FF809038C30FC0D80FC413E0EBC80701D813F013D0A213E0B039FFFE3FFFA320
595 1B7D9A25>I<EB3FE03801FFFC3803F07E390FC01F80391F800FC0393F0007E0A2007EEB
596 03F0A300FE14F8A8007E14F0A26CEB07E0A2391F800FC0390FC01F803907F07F003801FF
597 FC38003FE01D1B7E9A22>I<38FFE1FE9038EFFF809038FE0FE0390FF803F09038F001F8
598 01E013FC140015FEA2157FA8157E15FEA215FC140101F013F89038F807F09038FC0FE090
599 38EFFF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FFC1F0EBC7FCEBC63E38
600 0FCC7F13D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>114 D<3803FE30380FFFF0EA
601 3E03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C13E06C13F0000713F8C6
602 FCEB07FC130000E0137C143C7E14387E6C137038FF01E038E7FFC000C11300161B7E9A1B
603 >I<13E0A41201A31203A21207120F381FFFE0B5FCA2380FE000AD1470A73807F0E00003
604 13C03801FF8038007F0014267FA51A>I<39FFE07FF0A3000F1307B2140FA20007131739
605 03F067FF3801FFC738007F87201B7D9A25>I<39FFFC03FFA3390FF000F0000714E07F00
606 03EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA2149EEB3F9C14FC6D5AA26D
607 5AA36D5AA26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B0FE00FE001C02607F007EB03
608 80A201F8EBF00700031600EC0FF801FC5C0001150EEC1FFC2600FE1C5B15FE9039FF387E
609 3C017F1438EC787F6D486C5A16F0ECE01F011F5CA26D486C5AA2EC800701075CA22E1B7F
610 9A31>I<39FFFC1FFEA33907F003803803F8079038FC0F003801FE1E00005BEB7F3814F8
611 6D5A6D5A130F806D7E130F497EEB3CFEEB38FFEB787F9038F03F803901E01FC0D803C013
612 E0EB800F39FFF03FFFA3201B7F9A23>I E /Fm 1 1 df<B512FEA217027D891E>0
613 D E /Fn 2 49 df<120CA2EACCC012EDEA7F80EA0C00EA7F80EAEDC012CCEA0C00A20A0B
614 7D8B10>3 D<1208121CA21238A312301270A21260A212C0A2060D7E8D09>48
615 D E /Fo 3 101 df<EA01F038070C08380C0E10EA1807123000701320126000E01340A2
616 14801400A3EA601B383063A0380F81C015107F8F19>11 D<EB03C0EB0C301310EB203813
617 401380EA0100A2000213701460EB1FC0131138041F60EB0070A35AA31460001813E014C0
618 EB018038140300EA230EEA20F890C7FCA25AA45A1521809916>I<EB0FC01301A3EB0380
619 A4EB0700A2EA03E7EA0617EA1C0E123812301270EA601C12E0A3133912C012E0EA6079EA
620 219AEA1E0E121A7F9914>100 D E /Fp 7 117 df<1303497EA2497EA3EB1BE0A2EB3BF0
621 1331A2EB60F8A2EBE0FCEBC07CA248487EEBFFFE487FEB001F4814800006130FA248EB07
622 C039FF803FFCA21E1A7F9921>65 D<EA1FF0EA383CEA7C1E7FA21238120013FFEA0FCFEA
623 3E0F127C12F8A31317387C27E0EA1FC313117F9015>97 D<12FCA2123CA713FE383F8780
624 383E01C0003C13E0EB00F0A214F8A514F0A2EB01E0003E13C0383B07803830FE00151A7E
625 9919>I<EA03FCEA0F0EEA1C1F123C1278130E00F8C7FCA51278A2383C0180381C0300EA
626 0F06EA03FC11117F9014>I<EAF8F0EAF938EA3A7CA2123C13381300A9EAFF80A20E117E
627 9012>114 D<EA1FD8EA2078EA401812C0A2EAF000EAFF80EA7FE0EA3FF0EA07F8EA003C
628 EAC00CA212E01308EAF830EACFE00E117F9011>I<1206A4120EA2121EEA3FF012FFEA1E
629 00A81318A5EA0F30EA03E00D187F9711>I E /Fq 47 123 df<EBFE7C380381C6380603
630 CE000E1384001C1380A6B512F0381C0380AE38FF8FF0171A809916>11
631 D<126012F012F812681208A31210A212201240050B7D990B>39 D<1380EA010012025A12
632 0C120812185AA35AA412E0AA1260A47EA37E1208120C12047E7EEA008009267D9B0F>I<
633 7E12407E7E12181208120C7EA37EA41380AA1300A41206A35A1208121812105A5A5A0926
634 7E9B0F>I<126012F0A212701210A31220A21240A2040B7D830B>44
635 D<EAFFC0A20A0280880D>I<126012F0A2126004047D830B>I<12035AB4FC1207B3A2EA7F
636 F80D187D9713>49 D<EA0F80EA1060EA2030EA4038EA803CEAC01C12E01240EA003C1338
637 A21370136013C0EA018013001202EA040412081210EA3008EA3FF8127F12FF0E187E9713
638 >I<EA01F8EA0704EA0C06EA180E123013001270126012E0EAE3E0EAE418EAE80CEAF00E
639 EAE0061307A31260A2EA7006EA300EEA180CEA0C38EA07E010187F9713>54
640 D<130CA3131EA2132F1327A2EB4380A3EB81C0A200017F1300A248B47E38020070A2487F
641 A3487FA2003C131EB4EBFFC01A1A7F991D>65 D<EB3F023801C0C63803002E000E131E48
642 130E14065A007813021270A200F01300A600701302A21278003813047E14087E00031330
643 3801C0C038003F00171A7E991C>67 D<B57E380E00E01470808080A280A21580A81500A2
644 5C140E5CA2147814E0B51280191A7F991D>I<B512F8380E003814181408140C1404A3EB
645 0100A35BEA0FFFEA0E037FA3EB0002A314061404A2140C143CB512FC171A7F991A>I<EB
646 3F023801C0C63803002E000E131E48130E14065A007813021270A200F090C7FCA5903801
647 FFC03970000E00A2127812387EA27E000313163801C06638003F821A1A7E991E>71
648 D<39FFE1FFC0390E001C00AB380FFFFC380E001CAC39FFE1FFC01A1A7F991D>I<EAFF80
649 EA1C00B3A6EAFF80091A7E990E>I<137F3801C1C038070070000E7F487F003C131E0038
650 130E0078130F00707F00F01480A80078EB0F00A20038130E003C131E001C131C6C5B6C5B
651 3801C1C0D8007FC7FC191A7E991E>79 D<B51280380E01E0EB007014781438143CA41438
652 14781470EB01E0380FFF80000EC7FCABEAFFE0161A7F991A>I<EA0FC2EA1836EA200EEA
653 600612C01302A3EAE0001270127EEA3FE0EA1FF8EA03FCEA007E130E130713031280A3EA
654 C0021306EAE004EAD818EA87E0101A7E9915>83 D<007FB5FC38701C0700401301A200C0
655 148000801300A300001400B13803FFE0191A7F991C>I<39FFE07FC0390E000E001404B2
656 00065B12076C5B6C6C5A3800E0C0013FC7FC1A1A7F991D>I<EA1FC0EA38707FEA101C12
657 00A2EA03FCEA1E1C1238127012E01480A2133CEA705F381F8F0011107F8F13>97
658 D<12FC121CA913FCEA1D07381E0380381C01C0130014E0A6EB01C01480381E0300EA1906
659 EA10F8131A809915>I<EA07F8EA1C1C1238EA700813005AA612701304EA3808EA1C18EA
660 07E00E107F8F11>I<133F1307A9EA03E7EA0C17EA180F487E127012E0A6126012706C5A
661 EA1C373807C7E0131A7F9915>I<EA07C0EA1C30EA30181270EA600C12E0EAFFFCEAE000
662 A41260EA7004EA3808EA1C18EA07E00E107F8F11>I<EA01F0EA0718EA0E38EA1C101300
663 A6EAFFC0EA1C00AEEAFF800D1A80990C>I<EA0FCF3818718038303000EA7038A4EA3030
664 6C5AEA2FC00060C7FCA21270EA3FF013FC6C7EEA600FEAC003A4EA6006EA381CEA07E011
665 187F8F13>I<12FC121CA9137CEA1D87381E0380A2121CAB38FF9FF0141A809915>I<1218
666 123CA212181200A612FC121CAE12FF081A80990A>I<12FC121CA9EB1FC0EB0F00130C5B
667 13205B13E0121DEA1E70EA1C7813387F131E7F148038FF9FE0131A809914>107
668 D<12FC121CB3A6EAFF80091A80990A>I<38FC7C1F391D8E6380391E0781C0A2001C1301
669 AB39FF9FE7F81D107F8F20>I<EAFC7CEA1D87381E0380A2121CAB38FF9FF01410808F15>
670 I<EA07E0EA1C38EA300CEA700EEA6006EAE007A6EA6006EA700EEA381CEA1C38EA07E010
671 107F8F13>I<EAFCFCEA1D07381E0380381C01C0A2EB00E0A6EB01C01480381E0300EA1D
672 06EA1CF890C7FCA6B47E1317808F15>I<EA03E1EA0C13EA180BEA300FEA700712E0A612
673 70A26C5AEA1C37EA07C7EA0007A6EB3FE013177F8F14>I<EAFC78EA1D9CEA1E1C1308EA
674 1C00ABEAFF800E10808F0F>I<EA1F20EA60E0EA402012C0A2EAF000127FEA3FC0EA1FE0
675 EA00F0EA8070133012C01320EAF040EA8F800C107F8F0F>I<1208A41218A21238EAFFC0
676 EA3800A81320A41218EA1C40EA07800B177F960F>I<38FC1F80EA1C03AB1307120CEA0E
677 0B3803F3F01410808F15>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2
678 EA01C0A36C5A11107F8F14>I<39FE7F1F8039381C0700003C1306381C0C04130E380E16
679 081317A238072310149013A33803C1A014E0380180C0A319107F8F1C>I<38FE3F80383C
680 1E00EA1C086C5AEA0F306C5A6C5A12017F1203EA0270487E1208EA181CEA381E38FC3FC0
681 12107F8F14>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2EA01C0A36C
682 5AA248C7FCA212E112E212E4127811177F8F14>I<EAFFF8EAE07012C0EA80E0EA81C0A2
683 EA0380EA0700A2EA0E04121CA2EA380812701338EAFFF80E107F8F11>I
684 E /Fr 16 118 df<127012F8A212F012E005057A840F>46 D<14FE903807018090381800
685 60012013105B49130848C71204380201F03804070839080C04023810180290383003C238
686 2060019038E00382EA40C01241A23983800704A4EC0E08A20081131EEC2E103980C04E20
687 9038618E6039403E078090C8FC7EA26C14E0000CEB07800003EB7C003800FF801F2379A2
688 25>64 D<EBF8C0EA0185EA0705380E0380A2121C123C383807001278A3EAF00EA31410EB
689 1C201270133C38305C40138C380F078014157B9419>97 D<EA03C0EA1F801203A3EA0700
690 A4120EA45A13F8EA1D0CEA1E0EEA3C06EA3807A2130F1270A4EAE01EA3133C1338A2EA60
691 7013E0EA31C0EA1F0010237BA216>I<137EEA01C138030180EA0703EA0E07121C003CC7
692 FC12381278A35AA45B12701302EA300CEA1830EA0FC011157B9416>I<13F8EA0384EA0E
693 02121C123C1238EA7804EAF018EAFFE0EAF000A25AA41302A2EA6004EA7018EA3060EA0F
694 800F157A9416>101 D<13F0EA0FE01200A3485AA4485AA448C7FC131FEB2180EBC0C038
695 0F00E0A2120EA2381C01C0A438380380A3EB070400701308130E1410130600E013203860
696 03C016237DA219>104 D<14E01301A2EB00C01400A8131E1323EB43801383A2EA0103A2
697 38000700A4130EA45BA45BA45BA3EA70E0EAF0C0EAF1800063C7FC123C132B82A00F>
698 106 D<13F0EA07E01200A3485AA4485AA448C7FCEB01E0EB0210EB0470380E08F01310EB
699 2060EB4000EA1D80001EC7FCEA1FC0EA1C70487EA27F142038703840A3EB188012E03860
700 0F0014237DA216>I<EA01E0EA0FC01201A3EA0380A4EA0700A4120EA45AA45AA45AA312
701 7112E2A4126412380B237CA20C>I<38380F80384C30C0384E4060388E8070EA8F00128E
702 A24813E0A4383801C0A3EB03840070138814081307EB031012E0386001E016157B941B>
703 110 D<137EEA01C338038180380701C0120E001C13E0123C12381278A338F003C0A21480
704 130700701300130E130CEA3018EA1870EA07C013157B9419>I<EA1C1F38262080384741
705 C0EA87831303EB018090C7FC120EA45AA45AA45A123012157B9415>114
706 D<13FCEA018338020080EA0401EA0C03140090C7FC120F13F0EA07FC6C7EEA003E130F7F
707 1270EAF006A2EAE004EA4008EA2030EA1FC011157D9414>I<13C01201A4EA0380A4EA07
708 00EAFFF8EA0700A2120EA45AA45AA31310EA7020A213401380EA3100121E0D1F7C9E10>
709 I<001E1360002313E0EA4380EB81C01283EA8701A238070380120EA3381C0700A31408EB
710 0E101218121CEB1E20EA0C263807C3C015157B941A>I E /Fs 27
711 118 df<90381FC1F090387037189038C03E3C3801807C000313783907003800A9B612C0
712 3907003800B2143C397FE1FFC01E2380A21C>11 D<127012F812FCA212741204A41208A2
713 1210A212201240060F7C840E>44 D<127012F8A3127005057C840E>46
714 D<EA01F0EA071CEA0C06487E00381380A2387001C0A400F013E0AE007013C0A3EA780300
715 381380A2381C0700EA0C06EA071CEA01F013227EA018>48 D<13801203120F12F31203B3
716 A9EA07C0EAFFFE0F217CA018>I<EA03F0EA0C1CEA100700201380384003C0A2008013E0
717 12F0EAF801A3EA2003120014C0A2EB07801400130E5B13185B5B5B485A90C7FC00021320
718 5A5A00181360481340383FFFC05AB5FC13217EA018>I<137EEA01C138030080380601C0
719 EA0C03121C381801800038C7FCA212781270A2EAF0F8EAF30CEAF4067F00F81380EB01C0
720 12F014E0A51270A3003813C0A238180380001C1300EA0C06EA070CEA01F013227EA018>
721 54 D<EA01F0EA060C487EEA1807383803801270A238F001C0A314E0A5127013031238EA
722 1805120CEA0619EA03E1380001C0A3EB0380A21230387807001306EA700CEA20186C5AEA
723 0FC013227EA018>57 D<497EA3497EA3EB05E0A2EB09F01308A2EB1078A3497EA3497EA2
724 EBC01F497EA248B51280EB0007A20002EB03C0A348EB01E0A348EB00F0121C003EEB01F8
725 39FF800FFF20237EA225>65 D<B512F8380F800E0007EB0780EC03C015E0140115F0A515
726 E01403EC07C0EC0F80EC3E00EBFFFE9038800780EC03C0EC01E015F0140015F8A6EC01F0
727 A2EC03E0EC07C0000FEB0F00B512FC1D227EA123>I<903807F00890383C0C18EBE00239
728 01C001B839038000F848C71278481438121E15185AA2007C14081278A200F81400A7EC1F
729 FF0078EB00F81578127C123CA27EA27E7E6C6C13B86C7E3900E0031890383C0C08903807
730 F00020247DA226>71 D<3803FFE038001F007FB3A6127012F8A2130EEAF01EEA401C6C5A
731 EA1870EA07C013237EA119>74 D<D8FFC0EB03FF000F15F0000715E0D805E01305A2D804
732 F01309A301781311A36D1321A36D1341A26D1381A39038078101A3EB03C2A2EB01E4A3EB
733 00F8A31470120E001FEC03F03AFFE0203FFF28227EA12D>77 D<3803F020380C0C60EA18
734 02383001E0EA70000060136012E0A21420A36C1300A21278127FEA3FF0EA1FFE6C7E0003
735 138038003FC0EB07E01301EB00F0A214707EA46C1360A26C13C07E38C8018038C60700EA
736 81FC14247DA21B>83 D<EA1FE0EA3038EA780C130EEA30071200A313FFEA07C7EA1E0712
737 3C1278127000F01308A3130FEA7817383C2390380FC1E015157E9418>97
738 D<EA01FEEA0703380C0780121C383803000078C7FC127012F0A712700078134012386C13
739 80380C0100EA0706EA01F812157E9416>99 D<EA01FCEA0707380C0380381C01C0123800
740 7813E0EA700012F0B5FC00F0C7FCA512700078132012386C13406C138038070300EA00FC
741 13157F9416>101 D<14703803F198380E1E18EA1C0E38380700A200781380A400381300
742 A2EA1C0EEA1E1CEA33F00020C7FCA212301238EA3FFE381FFFC06C13E0383000F0481330
743 481318A400601330A2003813E0380E03803803FE0015217F9518>103
744 D<120E12FE121E120EABEB1F80EB60C0EB80E0380F0070A2120EAF38FFE7FF18237FA21B
745 >I<121C123EA3121CC7FCA8120E127E121E120EB1EAFFC00A227FA10E>I<120E12FE121E
746 120EABEB03FCEB01F014C01480EB02005B5B5B133813F8EA0F1CEA0E1E130E7F1480EB03
747 C0130114E0EB00F014F838FFE3FE17237FA21A>107 D<380E1F8038FE60C0381E80E038
748 0F0070A2120EAF38FFE7FF18157F941B>110 D<EA01FCEA0707380C0180381800C00038
749 13E0481370A200F01378A700701370007813F0003813E0381C01C0380E038038070700EA
750 01FC15157F9418>I<EA0E3CEAFE46EA1E8FEA0F0F13061300120EAD120FEAFFF010157F
751 9413>114 D<EA0F88EA3078EA601812C01308A212E0EAF000127FEA3FE0EA0FF0EA01F8
752 EA003CEA801C130CA212C01308EAE018EAD030EA8FC00E157E9413>I<1202A41206A312
753 0E121E123EEAFFFCEA0E00AB1304A6EA07081203EA01F00E1F7F9E13>I<000E137038FE
754 07F0EA1E00000E1370AD14F0A238060170380382783800FC7F18157F941B>I
755 E /Ft 1 4 df<13C0A538E0C1C0EAF0C33838C700EA0EDCEA03F0EA00C0EA03F0EA0EDC
756 EA38C738F0C3C0EAE0C13800C000A512157D9619>3 D E /Fu 18
757 117 df<1403A34A7EA24A7EA3EC17E01413A2EC23F01421A2EC40F8A3EC807CA2903801
758 007E153EA20102133F81A2496D7EA3496D7EA2011880011FB5FCA29039200003F01501A2
759 496D7EA349147CA20001157E90C8123EA248153F825AD81F80EC3F80D8FFE0903801FFFC
760 A22E327EB132>65 D<B612E015FC3907E0007F0003EC0F80ED03C06F7E6F7E16788282A2
761 82A21780160717C0A21603A217E0AB17C0A21607A21780A2160F17005E161E5E5E16F84B
762 5A4B5AED0F800007023FC7FCB612FC15E02B317CB033>68 D<B539807FFFC0A23B07F000
763 03F8006C486D5AB3A290B6FCA29038E00001B3A3486C497EB539807FFFC0A22A317CB032
764 >72 D<B51280A23807F0006C5AB3B3A7487EB51280A211317DB017>I<B612E015FC3907
765 E0003F0003EC0F80ED03C0ED01E016F0ED00F8A21678167CA6167816F816F0150116E0ED
766 03C0ED0F80ED3E0090B512F801E0C8FCB3A3487EB57EA226317DB02D>80
767 D<90387F80203801FFE03907C07860380F001C001EEB06E0481303003813010078130012
768 70156012F0A21520A37E1500127C127E7E13C0EA1FF86CB47E6C13F06C13FCC613FF010F
769 1380010013C0EC1FE01407EC03F01401140015F8A26C1478A57E15706C14F015E07E6CEB
770 01C000ECEB038000C7EB070038C1F01E38807FFCEB0FF01D337CB125>83
771 D<007FB712E0A23A7E000F800700781501007015000060166000401620A200C01630A248
772 1610A6C71500B3AC4A7E010FB57EA22C317EB030>I<13FE380303C0380C00E000101370
773 80003C133C003E131C141EA21208C7FCA3EB0FFEEBFC1EEA03E0EA0F80EA1F00123E123C
774 127C481404A3143EA21278007C135E6CEB8F08390F0307F03903FC03E01E1F7D9E21>97
775 D<EB1FC0EBF0303801C00C38078002EA0F00000E130F001E5B5AA2007C1304007890C7FC
776 12F8A91278127C123C15807E000EEB0100120F380780023801C00C3800F030EB1FC0191F
777 7E9E1D>99 D<EB3F80EBE0E0380380383807003C000E7F121E001C7F123C127C00781480
778 140712F8A2B6FC00F8C8FCA61278127C123C15807E000EEB0100000F13027E3801C00C38
779 00F030EB1FC0191F7E9E1D>101 D<15F090387F03083901C1C41C380380E83907007008
780 48EB7800001E7FA2003E133EA6001E133CA26C5B6C13706D5A3809C1C0D8087FC7FC0018
781 C8FCA5121C7E380FFFF86C13FF6C1480390E000FC00018EB01E048EB00F0007014704814
782 38A500701470A26C14E06CEB01C00007EB07003801C01C38003FE01E2F7E9F21>103
783 D<EA078012FFA2120F1207AF14FE903883078090388C03C090389001E013A06E7E13C0A2
784 5BB3A2486C487E3AFFFC1FFF80A221327EB125>I<120FEA1F80A4EA0F00C7FCABEA0780
785 127FA2120F1207B3A6EA0FC0EAFFF8A20D307EAF12>I<EA078012FFA2120F1207B3B3A7
786 EA0FC0EAFFFCA20E327EB112>108 D<260780FEEB1FC03BFF83078060F0903A8C03C180
787 783B0F9001E2003CD807A013E4DA00F47F01C013F8A2495BB3A2486C486C133F3CFFFC1F
788 FF83FFF0A2341F7E9E38>I<EB1FC0EBF0783801C01C38070007481480001EEB03C0001C
789 1301003C14E0A248EB00F0A300F814F8A8007814F0007C1301003C14E0A26CEB03C0A26C
790 EB07803907800F003801C01C3800F078EB1FC01D1F7E9E21>111
791 D<380783E038FF8418EB887CEA0F90EA07A01438EBC000A35BB3487EEAFFFEA2161F7E9E
792 19>114 D<1340A513C0A31201A212031207120F381FFFE0B5FC3803C000B01410A80001
793 132013E000001340EB78C0EB1F00142C7FAB19>116 D E /Fv 62
794 124 df<90380FF83F90397FFDFFC03A01F81FE3E03903E03F87EA07C0D80F801307ED03
795 C06EC7FCA6B612FCA2260F801FC7FCB2397FF0FFF0A223237FA221>11
796 D<EB0FF0EB7FFC3801F80E3803E01F48485AEA0F80A2141E140C91C7FCA4B6FCA2380F80
797 1FB2397FF0FFE0A21B237FA21F>I<38380380387C07C038FE0FE000FF13F0A2EA7F0738
798 3B03B038030030A300061360A24813C0EA1C010018138038700700EA200214117EA21D>
799 34 D<13181330136013C01201EA0380EA0700A2120E121E121C123CA35AA412F85AAB7E
800 1278A47EA3121C121E120E7EA2EA0380EA01C012001360133013180D317BA416>40
801 D<12C012607E7E121C7E7EA2EA038013C0120113E0A3EA00F0A413F81378AB13F813F0A4
802 EA01E0A313C012031380EA0700A2120E5A12185A5A5A0D317DA416>I<EAFFFCA40E047F
803 8C13>45 D<1238127C12FEA3127C123807077C8610>I<13FE3807FFC0380F83E0381F01
804 F0383E00F8A248137CA312FC147EAD007C137CA36C13F8A2381F01F0380F83E03807FFC0
805 3800FE0017207E9F1C>48 D<13181378EA01F812FFA21201B3A7387FFFE0A213207C9F1C
806 >I<EA03FCEA0FFF383C1FC0387007E0007C13F0EAFE0314F8A21301127CEA3803120014
807 F0A2EB07E014C0EB0F80EB1F00133E13385BEBE018EA01C0EA0380EA0700000E1338380F
808 FFF05A5A5AB5FCA215207D9F1C>I<13FE3807FFC0380F07E0381E03F0123FEB81F8A3EA
809 1F0314F0120014E0EB07C0EB1F803801FE007F380007C0EB01F014F8EB00FCA2003C13FE
810 127EB4FCA314FCEA7E01007813F8381E07F0380FFFC03801FE0017207E9F1C>I<14E013
811 011303A21307130F131FA21337137713E7EA01C71387EA03071207120E120C1218123812
812 7012E0B6FCA2380007E0A790B5FCA218207E9F1C>I<00301320383E01E0383FFFC01480
813 14005B13F8EA33C00030C7FCA4EA31FCEA37FF383E0FC0383807E0EA3003000013F0A214
814 F8A21238127C12FEA200FC13F0A2387007E0003013C0383C1F80380FFF00EA03F815207D
815 9F1C>I<EB1F80EBFFE03803E0703807C0F0380F01F8121F123EA2387E00F0007C1300A2
816 EAFC08EB7FC0EBFFE038FD80F038FF00F848137CA248137EA4127CA3003C137C123E001E
817 13F86C13F0380783E03803FFC0C6130017207E9F1C>I<12601278387FFFFEA214FC14F8
818 A214F038E0006014C038C00180EB0300A2EA00065B131C131813381378A25BA31201A312
819 03A76C5A17227DA11C>I<13FE3803FFC0380703E0380E00F05A1478123C123E123F1380
820 EBE0F0381FF9E0EBFFC06C13806C13C06C13E04813F0381E7FF8383C1FFCEA7807EB01FE
821 EAF000143E141EA36C131C007813387E001F13F0380FFFC00001130017207E9F1C>I<EA
822 01FE3807FF80380F83E0381E01F0EA3E004813F8147800FC137CA3147EA4007C13FEA2EA
823 3E01381E037EEA0FFEEA07FCEA0020EB007CA2121E003F13F8A214F0EB01E0381E03C038
824 1C0F80380FFE00EA03F817207E9F1C>I<1470A214F8A3497EA2497EA3EB067FA2010C7F
825 143FA2496C7EA201307F140F01707FEB6007A201C07F90B5FC4880EB8001A2D803007F14
826 004880000680A23AFFE007FFF8A225227EA12A>65 D<B67E15F03907F001F86E7E157EA2
827 157FA5157E15FE5DEC03F890B55AA29038F001FCEC007E811680151F16C0A6ED3F80A2ED
828 7F00EC01FEB612F815C022227EA128>I<D903FE138090381FFF819038FF01E33901F800
829 3FD803E0131F4848130F48481307121F48C71203A2481401127EA200FE91C7FCA8127EED
830 0180127F7E15036C6C1400120F6C6C1306D803F05B6C6C13386CB413F090381FFFC0D903
831 FEC7FC21227DA128>I<B67E15F03907F003FCEC007E81ED1F80ED0FC0ED07E0A216F015
832 03A316F8A916F0A3ED07E0A2ED0FC0ED1F80ED3F00157EEC03FCB612F0158025227EA12B
833 >I<B612F8A23807F001EC007815381518151CA2150CA21418A21500A214381478EBFFF8
834 A2EBF07814381418A491C7FCA8B512C0A21E227EA123>70 D<D903FE134090391FFFC0C0
835 90387F00F1D801F8133F4848130FD807C01307000F1403485A48C71201A2481400127EA2
836 00FE1500A791380FFFFC127E007F9038001FC0A27EA26C7E6C7E6C7E6C7ED801FC133F39
837 007F80E790381FFFC30103130026227DA12C>I<B53883FFFEA23A07F0001FC0AD90B6FC
838 A29038F0001FAFB53883FFFEA227227EA12C>I<B51280A23807F000B3ACB51280A21122
839 7EA115>I<48B51280A2390003F800B3A41218127E12FFA35C387E07E0387C0FC0381FFF
840 80D807FCC7FC192280A11D>I<B538803FFCA23A07F0000380ED0700150E15185D15E04A
841 5A4A5A4AC7FC140E1418143C14FCEBF1FEEBF3FFEBF77F9038FE3F8001F87F496C7E140F
842 6E7E816E7E1401816E7E81ED3F8016C0ED1FE0B53881FFFEA227227EA12C>I<B512C0A2
843 D807F0C7FCB31518A41538A21570A215F014011407B6FCA21D227EA122>I<D8FFF0EC0F
844 FF6D5C000716E0D806FC1437A3017E1467A26D14C7A290391F800187A290390FC00307A3
845 903807E006A2903803F00CA2903801F818A3903800FC30A2EC7E60A2EC3FC0A2EC1F80A3
846 EC0F00D8FFF091B5FC140630227EA135>I<EB07FC90383FFF809038FC07E03903F001F8
847 48486C7E4848137E48487FA248C7EA1F80A24815C0007E140FA200FE15E0A9007E15C000
848 7F141FA26C15806D133F001F15006C6C137E6C6C5B6C6C485A3900FC07E090383FFF80D9
849 07FCC7FC23227DA12A>79 D<B6FC15E03907F007F0EC01FC1400157EA2157FA5157EA215
850 FC1401EC07F090B512E0150001F0C7FCADB57EA220227EA126>I<B512FEECFFC03907F0
851 07F0EC01F86E7E157E157FA6157E5D4A5AEC07F090B512C05D9038F00FE06E7E6E7E6E7E
852 A81606EC00FEEDFF0CB538803FF8ED0FF027227EA12A>82 D<3801FE023807FF86381F01
853 FE383C007E007C131E0078130EA200F81306A27E1400B4FC13E06CB4FC14C06C13F06C13
854 F86C13FC000313FEEA003F1303EB007F143FA200C0131FA36C131EA26C133C12FCB413F8
855 38C7FFE00080138018227DA11F>I<007FB61280A2397E03F80F00781407007014030060
856 140100E015C0A200C01400A400001500B3A248B512F0A222227EA127>I<B538803FFCA2
857 3A07F0000180B3A60003EC03007F000114066C6C130E017E5B90383F80F890380FFFE001
858 0190C7FC26227EA12B>I<B5EB0FFEA2D807F0EB00C0A26C6CEB0180A26D130300011500
859 7F000014067F6D5BA2EC801C013F1318ECC038011F133014E0010F5BA26D6C5AA214F901
860 035B14FD6DB4C7FCA26D5AA3147CA21438A227227FA12A>I<B53A0FFFF00FFEA2260FF0
861 0090C712E000076E14C0A26C6C90393F800180A26D14C00001EE0300A26D496C5A000002
862 6F1306A2017F9038C7F00CA2028113F8013F01835BA29139C301FC38011F153016FE9026
863 0FE6005BA202FEEBFFE06D486D5AA26D486D5AA36D486DC7FCA36D48130EA237227FA13A
864 >I<00041340000E13E038180180EA380300301300EA6006A2485AA338DC0DC038FE0FE0
865 00FF13F0A2EA7F07383E03E0381C01C014117AA21D>92 D<EA0FFC383FFF80387E07C0EB
866 03E0130114F0123C1200A2133FEA03FDEA1FC1EA3F01127E12FCA4EA7E02EB0CF8381FF8
867 7F3807E03F18167E951B>97 D<B4FCA2121FABEB0FE0EB3FF8EBE07CEB803E497EEC0F80
868 A215C0A81580141F01801300EBC03E381EE07C381C3FF838180FC01A237EA21F>I<EBFF
869 80000713E0380F83F0EA1F03123E127E387C01E090C7FC12FCA6127C127EA2003E13186C
870 1330380FC0603807FFC0C6130015167E9519>I<EB01FEA2EB003EABEA01FC3807FFBE38
871 0F81FE381F007E003E133E127E127C12FCA8127CA26C137E6C13FE380F83BE3907FF3FC0
872 EA01FC1A237EA21F>I<13FE3807FF80380F87C0381E01E0003E13F0EA7C0014F812FCA2
873 B5FCA200FCC7FCA3127CA2127E003E13186C1330380FC0703803FFC0C6130015167E951A
874 >I<EB1FC0EB7FE0EBF1F0EA01E31203EA07C3EBC1E0EBC000A6EAFFFEA2EA07C0B2EA3F
875 FCA2142380A211>I<3801FE0F3907FFBF80380F87C7381F03E7391E01E000003E7FA500
876 1E5BEA1F03380F87C0EBFF80D809FEC7FC0018C8FCA2121C381FFFE06C13F86C13FE001F
877 7F383C003F48EB0F80481307A40078EB0F006C131E001F137C6CB45A000113C019217F95
878 1C>I<B4FCA2121FABEB07E0EB1FF8EB307CEB403CEB803EA21300AE39FFE1FFC0A21A23
879 7EA21F>I<121C123E127FA3123E121CC7FCA7B4FCA2121FB2EAFFE0A20B247EA310>I<B4
880 FCA2121FABECFF80A2EC38001460495A495A49C7FC130E5B137E13FF13CFEB0F806D7E6D
881 7E1301806D7E147C143C39FFE0FFC0A21A237EA21E>107 D<B4FCA2121FB3ADEAFFE0A2
882 0B237EA210>I<3AFF07F007F090391FFC1FFC3A1F303E303E01401340496C487EA20100
883 1300AE3BFFE0FFE0FFE0A22B167E9530>I<38FF07E0EB1FF8381F307CEB403CEB803EA2
884 1300AE39FFE1FFC0A21A167E951F>I<13FE3807FFC0380F83E0381E00F0003E13F84813
885 7CA300FC137EA7007C137CA26C13F8381F01F0380F83E03807FFC03800FE0017167E951C
886 >I<38FF0FE0EB3FF8381FE07CEB803E497E1580A2EC0FC0A8EC1F80A29038803F00EBC0
887 3EEBE0FCEB3FF8EB0FC090C8FCA8EAFFE0A21A207E951F>I<EBFE033807FF87380FC1C7
888 381F006F48133F127E80127C12FCA7127EA2003E5B6C5B380FC1DF3807FF9F3801FC1FC7
889 FCA8ECFFE0A21B207E951E>I<EAFE1FEB3FC0381E67E013C71387A2381F83C090C7FCAD
890 EAFFF0A213167E9517>I<EA0FF3EA3FFFEA781FEA6007EAE003A212F000FCC7FCEA7FE0
891 13F8EA3FFEEA0FFF120138000F80EAC007130312E0A238F00700EAFC0EEAEFFCEAC7F011
892 167E9516>I<487EA41203A21207A2120F123FB5FCA2EA0F80ABEB8180A5EB8300EA07C3
893 EA03FEEA00F811207F9F16>I<38FF01FEA2381F003EAF147E14FE380F81BE3907FF3FC0
894 EA01FC1A167E951F>I<39FFE01FE0A2391F800700000F1306EBC00E0007130C13E00003
895 5BA26C6C5AA26C6C5AA2EB7CC0A2137F6D5AA26DC7FCA2130EA21B167F951E>I<3AFFE3
896 FF07F8A23A1F007800C09038807C01000F1580A23A07C07E030014DE5D3903E1DF06148F
897 D801F1138CEBF307A2D800FF13D8EBFE0315F890387C01F0A2013C5BEB3800A225167F95
898 28>I<39FFE01FE0A2391F800700000F1306EBC00E0007130C13E000035BA26C6C5AA26C
899 6C5AA2EB7CC0A2137F6D5AA26DC7FCA2130EA2130CA25B1278EAFC3813305BEA69C0EA7F
900 80001FC8FC1B207F951E>121 D<B612E0A21B02808E1C>123 D E
901 /Fw 2 13 df<EB01FCEB0F0790381C01C090397000E0065B4848EB700C00031478485A48
902 C7EA3818153C001E1510003E1530A2481560164016C0ED3D805AED3F00153E153C1278A3
903 157C003814BC6C9038033C0CEC0E1C6C9038380C183A0381E00E303A00FF0003E0271F7E
904 9E2D>11 D<ED1F80EDE0609138030038020613180208131C4A131E5C5C14C0495A49C7FC
905 A20106143CA2491438167801081470011814E0ED01C091380FFB80903930180E00EC0FF3
906 9138000380ED01C04914E0150016F0A25BA448481301A448C7EA03E0A216C01507481580
907 6D130F16000006141E486C5B014013386D13F090381801C026180E07C7FCEB03FC90C9FC
908 A25AA45AA45AA427407FB128>I E /Fx 18 117 df<1578A215FCA34A7EA24A7EA24A7F
909 A34A7FEC0E7F021E7FEC1C3FA202387F151F02787FEC700FA202E07F1507010180ECC003
910 A249486C7EA201078191C7FC498191B6FCA24981011CC7123F013C810138141FA2498116
911 0F01F081491407A2484881486C1403B549B512FCA336317DB03D>65
912 D<B712F016FF17C0C6D9800013F0EE0FF8EE03FE707E701380EF7FC0173FEF1FE018F017
913 0F18F8A2EF07FCA418FEAB18FCA4EF0FF8A218F0171F18E0173FEF7FC01880933801FF00
914 4C5AEE0FFCEE7FF0B812C094C7FC16F037317EB03E>68 D<B6D8807FB512C0A3C60180C7
915 387FC000B391B7FCA30280C7127FB3A3B6D8807FB512C0A33A317EB03F>72
916 D<B61280A3C6EB8000B3B3A7B61280A319317EB01E>I<B712E016FEEEFF80C6D9800013
917 E0EE3FF0EE0FF8EE07FCA2EE03FEA217FFA717FEA2EE07FC17F8160FEE3FE0EEFFC091B6
918 120016F80280C8FCB3A2B67EA330317EB037>80 D<90391FF8018090B51203000314C739
919 07F007EF390F8000FF48C7127F003E141F150F5A150712FCA215037EA26C91C7FC13C0EA
920 7FF0EBFF806C13F8ECFF806C14F06C806C806C14FFC6FC013F1480010114C0D9001F13E0
921 1401EC003FED1FF0150F1507126000E01403A316E07EA26CEC07C07EB4EC0F8001C0EB1F
922 00D8FBFC13FE00F1B512F8D8E03F5BD8C003138024317CB02D>83
923 D<007FB8FCA39039C00FF801D87E00EC003F007C82007882A200708200F01780A3481603
924 A5C792C7FCB3AA017FB6FCA331307DAF38>I<EBFFF0000313FF390F803F809038C00FE0
925 486C6C7EA26E7ED80FC07FEA0780C7FCA414FF131FEBFFE33803FC03EA0FF0EA1FC0123F
926 EA7F80A2EAFF00A31407A2387F800D393FC01DFE3A1FE078FFF03907FFE07FC6EB803F24
927 207E9F27>97 D<EB0FFF017F13C03901FC01F03803F0033907E007F8120FEA1FC0003FEB
928 03F0EC01E04848C7FCA312FFA8127FA36C6C131CA2001F14386C7E000714703903F001E0
929 3901FC07C039007FFF00EB0FF81E207D9F24>99 D<EB0FFC90387FFF803901FC0FC03903
930 F003E03907E001F0000F14F8391FC000FC003F14FEA24848137E157FA212FFA290B6FCA2
931 0180C7FCA4127FA36C6C1307121F150E6C7E6C6C131C6C6C13783900FE03E090383FFFC0
932 903807FE0020207E9F25>101 D<90391FF007C09039FFFE3FE03A01F83F79F03907E00F
933 C3000F14E19039C007E0E0001FECF000A2003F80A5001F5CA2000F5CEBE00F00075C2603
934 F83FC7FC3806FFFE380E1FF090C9FC121EA2121F7F90B57E6C14F015FC6C806C80168000
935 0F15C0003FC7127F007EEC1FE0007C140F00FC1407A4007EEC0FC0003E1580003F141FD8
936 0FC0EB7E003907F803FC0001B512F0D8001F90C7FC242F7E9F28>103
937 D<EA01F812FFA3120F1207ADEC07F8EC3FFEEC783F02C013809039F9801FC0EBFB0001FE
938 14E05BA35BB3B500C3B5FCA328327DB12D>I<EA03C0487E487E487EA46C5A6C5A6C5AC8
939 FCA9EA01F8127FA31207B3A7B51280A311337DB217>I<EA01F812FFA3120F1207B3B3A6
940 B512C0A312327DB117>108 D<2703F007F8EB1FE000FFD93FFEEBFFF8913A783F01E0FC
941 02C090388300FE280FF1801FC6137F2607F30013CC01F602F8148001FC5CA3495CB3B500
942 C3B5380FFFFCA33E207D9F43>I<EB07FC90387FFFC03901FC07F03903F001F848486C7E
943 4848137E001F147F003F158049133F007F15C0A300FF15E0A8007F15C0A36C6CEB7F80A2
944 001F15006C6C13FE00075C3903F803F83901FE0FF039007FFFC0D907FCC7FC23207E9F28
945 >111 D<3803F03F00FFEB7FC09038F1C3E01487390FF30FF0EA07F6A29038FC07E0EC03
946 C091C7FCA25BB2B512E0A31C207E9F21>114 D<131CA5133CA3137CA213FC1201120312
947 07381FFFFEB5FCA2D803FCC7FCB0EC0380A71201EC0700EA00FEEB7F0EEB3FFCEB07F019
951 %%Feature: *Resolution 300dpi
957 19142492 4341596 7893811 20787036 27036303 25128632 startTexFig
959 %%BeginDocument: uofatop.ps
960 /CanvasDict where not{/CanvasDict 250 dict def}{pop}ifelse
962 systemdict/setpacking known{/origpack currentpacking def true setpacking}if
963 /bdf{bind def}bind def
964 /xdf{exch bind def}bdf
965 /min{2 copy gt{exch}if pop}bdf
967 /max{2 copy lt{exch}if pop}bdf
973 /cvangle{360 exch sub 90 add 360 mod}bdf
974 /setrot{/currot edf rotmtx currentmatrix pop 2 copy translate currot rotate neg exch neg exch translate}bdf
975 /endrot{rotmtx setmatrix}bdf
976 /i systemdict/image get def/T true def/F false def/dbg F def
977 /ncolors 0 def/st0 ()def/st1 ()def/proc0 {}def
978 /penh 1 def/penv 1 def/penv2 0 def/penh2 0 def/samplesize 0 def/width 0 def/height 0 def
979 /setcmykcolor where not{/setcmykcolor{/b edf 3{b add 1.0 exch sub 0.0 max 1.0 min 3 1 roll}repeat systemdict begin setrgbcolor end}bdf}{pop}ifelse
980 /doeoclip{closepath{eoclip}stopped{currentflat dup 2 mul setflat eoclip setflat}if}bdf
981 /SpaceExtra 0 def/LetterSpace 0 def/StringLength 0 def/NumSpaces 0 def/JustOffset 0 def
983 /s0{1 setlinewidth cvmtx currentmatrix pop penh penv scale stroke cvmtx setmatrix}bdf
984 /f1{_bp _fp impat}def
985 /s1{cvmtx currentmatrix pop 1 setlinewidth penh penv scale
986 {strokepath}stopped{currentflat dup 2 mul setflat strokepath setflat}if
988 cvmtx setmatrix _fp impat}def
991 /f{filltype 0 eq{f0}{f1}ifelse}bdf
992 /s{stroketype 0 eq{s0}{s1}ifelse}bdf
1002 /_frcmyk [0 0 0 1] def
1006 /_bkcmyk [0 0 0 0] def
1007 /fg{/_fg exch def /filltype 0 def/fills{_fg setgray}def}def
1008 /frgb{_frgb astore pop /filltype 0 def/fills{_frgb aload pop setrgbcolor}def}def
1009 /fcmyk{_fcmyk astore pop /filltype 0 def/fills{_fcmyk aload pop setcmykcolor}def}def
1010 /pg{/_pg exch def /stroketype 0 def/pens{_pg setgray}def}def
1011 /prgb{_prgb astore pop /stroketype 0 def/pens{_prgb aload pop setrgbcolor}def}def
1012 /pcmyk{_pcmyk astore pop /stroketype 0 def/pens{_pcmyk aload pop setcmykcolor}def}def
1013 /fpat{/fstr edf/filltype 1 def/fills{/patstr fstr def}bdf}bdf
1014 /ppat{/sstr edf/stroketype 1 def/pens{/patstr sstr def}bdf}bdf
1015 /bkg{ /_bkg exch def /_bp{gsave _bkg setgray fill grestore}def}def
1016 /bkrgb{_bkrgb astore pop/_bp{gsave _bkrgb aload pop setrgbcolor fill grestore}def}def
1017 /bkcmyk{_bkcmyk astore pop/_bp{gsave _bkcmyk aload pop setcmykcolor fill grestore}def}def
1018 /frg{ /_frg exch def /_fp{_frg setgray}def}def
1019 /frrgb{_frrgb astore pop/_fp{_frrgb aload pop setrgbcolor}def}def
1020 /frcmyk{_frcmyk astore pop/_fp{_frcmyk aload pop setcmykcolor}def}def
1022 ncolors 1 gt{/proc0 edf
1023 dup dup 0 get ncolors div cvi exch 0 3 -1 roll put
1024 4 -1 roll ncolors div cvi 4 1 roll{proc0 dup/st0 edf
1025 0 exch ncolors exch length
1026 dup ncolors sub exch ncolors div cvi string/st1 edf
1027 {dup 0 exch dup 1 exch
1028 2 add{st0 exch get add}bind for
1029 3 div ncolors 4 eq{exch dup 3 1 roll 3 add st0 exch get add 255 exch sub dup 0 lt{pop 0}if}if cvi
1030 dup 255 gt{pop 255}if
1031 exch ncolors div cvi exch
1032 st1 3 1 roll put}bind for
1036 {pop false exch colorimage}
1042 currot 0 ne{currot neg rotate}if
1047 8 div floor 8 mul dup/starty edf
1048 sub abs 8 div ceiling 8 mul cvi/height edf
1049 exch 8 div floor 8 mul dup/startx edf
1050 sub abs 8 div ceiling 8 mul cvi/width edf
1051 startx starty translate
1053 /height height 8 mul def
1054 /st0 width string def
1055 width height T [width 0 0 height neg 0 height]
1060 st0 length 1 sub dup 0 le{pop 1}if
1063 put}bind for/cnt cnt 1 add def
1070 scale/height edf/colorimage where
1072 {ncolors mul}ifelse/width edf
1073 /tbitstr width string def
1074 width height 8 [width 0 0 height neg 0 height]
1075 {currentfile tbitstr readhexstring pop}bind
1077 dup 3 eq {ci}{icomp}ifelse}bdf
1082 /tbitstr width 7 add 8 div cvi string def
1083 width height 1 [width 0 0 height neg 0 height]
1084 {currentfile tbitstr readhexstring pop}bind
1091 /tbitstr width 7 add 8 div cvi string def
1092 width height invFlag [width 0 0 height neg 0 height]
1093 {currentfile tbitstr readhexstring pop}bind
1097 /dict_count countdictstack def
1098 /op_count count 1 sub def
1101 0 setgray 0 setlinecap
1102 1 setlinewidth 0 setlinejoin
1103 10 setmiterlimit [] 0 setdash newpath
1104 /languagelevel where
1105 {pop languagelevel 1 ne{false setstrokeadjust false setoverprint}if}if
1108 {count op_count sub {pop}repeat
1109 countdictstack dict_count sub {end}repeat
1111 /rectpath {/cv_r edf/cv_b edf/cv_l edf/cv_t edf
1112 cv_l cv_t moveto cv_r cv_t lineto cv_r cv_b lineto cv_l cv_b lineto cv_l cv_t lineto closepath}bdf
1113 /setpen{/penh edf/penv edf/penv2 penv 2 div def/penh2 penh 2 div def}bdf
1114 /dostroke{not pens 1.0 currentgray ne or {s}{newpath}ifelse}bdf
1115 /dodashfill{not fills 1.0 currentgray ne or
1116 {gsave f grestore gsave [] 0 setdash
1117 stroketype/stroketype filltype def
1118 s/stroketype edf grestore}{newpath}ifelse}bdf
1119 /dofill{not fills 1.0 currentgray ne or {f}{newpath}ifelse}bdf
1120 /dofillsave{not fills 1.0 currentgray ne or {gsave f grestore}if}bdf
1121 /doline{not pens 1.0 currentgray ne or {filltype/filltype stroketype def f/filltype edf}{newpath}ifelse}bdf
1122 /spx{SpaceExtra 0 32 4 -1 roll widthshow}bdf
1123 /lsx{SpaceExtra 0 32 LetterSpace 0 6 -1 roll awidthshow}bdf
1124 /Rjust{stringwidth pop JustOffset exch sub /JustOffset edf}bdf
1125 /Cjust{stringwidth pop 2 div JustOffset exch sub /JustOffset edf}bdf
1126 /adjfit{stringwidth pop LetterSpace StringLength 1 sub mul add SpaceExtra NumSpaces mul add dup /pw edf JustOffset exch
1127 sub dup /wdif edf StringLength div dup abs 1.0 gt{pop 0}if LetterSpace add /LetterSpace edf}bdf
1128 /ulb{currentpoint pop /underlinpt edf}bdf
1129 /ule{gsave currentpoint newpath moveto currentfont dup /ft1 known{dup /ft1 get begin /FontMatrix get FontMatrix tpmx concatmatrix pop}
1130 {begin FontMatrix tpmx copy pop}ifelse FontInfo begin UnderlinePosition UnderlineThickness end end dup tpmx
1131 dtransform pop setlinewidth dup tpmx dtransform pop 0 exch rmoveto underlinpt currentpoint pop sub 0 rlineto stroke grestore}bdf
1132 /fittext{ /SpaceExtra edf /LetterSpace edf /StringLength edf /NumSpaces edf /JustOffset edf not 1 currentgray ne or
1135 lsx {ule}if}{pop pop}ifelse}bdf
1136 /cvRecFont{/encod edf FontDirectory 2 index known{cleartomark}{findfont dup length 1 add dict begin
1137 {1 index/FID ne{def}{pop pop}ifelse}forall encod{/Encoding CVvec def}if
1138 currentdict end definefont cleartomark}ifelse}bdf
1139 /wrk1 ( ) def/wdict 16 dict def
1140 /Work75 75 string def /Nmk{Work75 cvs dup}bdf /Npt{put cvn}bdf /dhOdh{Nmk 2 79 Npt}bdf /dhodh{Nmk 2 111 Npt}bdf /dhSdh{Nmk 2 83 Npt}bdf
1141 /sfWidth{gsave 0 0 moveto 0 0 lineto 0 0 lineto 0 0 lineto closepath clip stringwidth grestore}bdf
1142 /MakOF{dup dhodh FontDirectory 1 index known{exch pop}{exch findfont dup length 1 add dict begin
1143 {1 index/FID ne 2 index /UniqueID ne and{def}{pop pop}ifelse}forall
1145 /StrokeWidth .24 1000 mul ftSize div dup 12 lt{pop 12}if def
1146 dup currentdict end definefont pop}ifelse}bdf
1147 /fts{dup/ftSize edf}def
1148 /mkFT{/tempFT 11 dict def tempFT begin
1149 /FontMatrix [1 0 0 1 0 0] def/FontType 3 def
1150 FontDirectory 3 index get /Encoding get/Encoding exch def
1151 /proc2 edf/ft2 exch findfont def/ft1 exch findfont def/FontBBox [0 0 1 1] def
1152 /BuildChar{wdict begin/chr edf/ftdt edf/chrst wrk1 dup 0 chr put def ftdt/proc2 get exec end}def
1153 end tempFT definefont pop}bdf
1154 /OLFt{dup dhOdh FontDirectory 1 index known{exch pop}
1155 {dup 3 -1 roll dup MakOF {outproc} mkFT}ifelse}bdf
1156 /mshw{moveto show}bdf
1157 /outproc{ftdt/ft1 get setfont gsave chrst sfWidth grestore setcharwidth dblsh}bdf
1158 /dblsh{currentgray 1 setgray chrst 0 0 mshw setgray ftdt/ft2 get setfont chrst 0 0 mshw}bdf
1159 /ShadChar{ftdt/ft1 get setfont gsave chrst sfWidth 1 index 0 ne{exch .05 add exch}if grestore setcharwidth
1160 chrst .06 0 mshw 0 .05 translate dblsh}bdf
1161 /ShFt{dup dhSdh FontDirectory 1 index known{exch pop}
1162 {dup 3 -1 roll dup MakOF {ShadChar} mkFT}ifelse}bdf
1163 /LswUnits{72 75 div dup scale}bdf
1165 /CVvec 256 array def
1166 /NUL/SOH/STX/ETX/EOT/ENQ/ACK/BEL/BS/HT/LF/VT/FF/CR/SO/SI/DLE/DC1/DC2/DC3/DC4/NAK/SYN/ETB/CAN/EM/SUB/ESC/FS/GS/RS/US
1167 CVvec 0 32 getinterval astore pop
1168 CVvec 32/Times-Roman findfont/Encoding get
1169 32 96 getinterval putinterval CVvec dup 39/quotesingle put 96/grave put
1170 /Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis/Udieresis/aacute
1171 /agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute/egrave
1172 /ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde/oacute
1173 /ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex/udieresis
1174 /dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
1175 /registered/copyright/trademark/acute/dieresis/notequal/AE/Oslash
1176 /infinity/plusminus/lessequal/greaterequal/yen/mu/partialdiff/summation
1177 /product/pi/integral/ordfeminine/ordmasculine/Omega/ae/oslash
1178 /questiondown/exclamdown/logicalnot/radical/florin/approxequal/Delta/guillemotleft
1179 /guillemotright/ellipsis/blank/Agrave/Atilde/Otilde/OE/oe
1180 /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide/lozenge
1181 /ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright/fi/fl
1182 /daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand/Acircumflex/Ecircumflex/Aacute
1183 /Edieresis/Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute/Ocircumflex
1184 /apple/Ograve/Uacute/Ucircumflex/Ugrave/dotlessi/circumflex/tilde
1185 /macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron
1186 CVvec 128 128 getinterval astore pop
1193 origmtx currentmatrix pop
1202 % ---- Object #1:5 Obj Type: 99
1203 % ---- Object #2:6 Obj Type: 4
1205 381 122 318 185 rectpath
1208 189 189 63 63 122 318 false imk
1209 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1210 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1211 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1212 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1213 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1214 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1215 FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFFFFFFFFFFF
1216 FFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFF
1217 FFFFFFFFFFFFFFFFFFFFFFC1FFFFFFFFFFFFFFFFFFFFFFFF
1218 FFFFFFFFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFFFFFFFFFF
1219 FFFFFFFFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFFFFFFFFFF
1220 FFFFFFFFFFFFFFFFFFFFFF0C7FFFFFFFFFFFFFFFFFFFFFFF
1221 FFFFFFFFFFFFFFFFFFFFFF1C3FFFFFFFFFFFFFFFFFFFFFFF
1222 FFFFFFFFFFFFFFFFFFFFFE3E3FFCFFFFFFFFFFFFFFFFFFFF
1223 FFFFFFFFFFFFFFFFFF9FFC3E1FF8FFFFFFFFFFFFFFFFFFFF
1224 FFFFFFFFFFFFFFFFFF87FC7F1FE0FFFFFFFFFFFFFFFFFFFF
1225 FFFFFFFFFFFFFFFFFF81FC7F8F80FFFFFFFFFFFFFFFFFFFF
1226 FFFFFFFFFFFFFFFFFF807CFF8704FFFFFFFFFFFFFFFFFFFF
1227 FFFFFFFFFFFFFFFFFF9038FFC41CFFFFFFFFFFFFFFFFFFFF
1228 FFFFFFFFFFFFFFFFFF9E01FFC07CFFFFFFFFFFFFFFFFFFFF
1229 FFFFFFFFFFFFFFFFFF9F01FFE0FCFFFFFFFFFFFFFFFFFFFF
1230 FFFFFFFFFFFFFFFFFF9FC1FFF1FCFFFFFFFFFFFFFFFFFFFF
1231 FFFFFFFFFFFFFFFFFF9FE3FFF1FCFFFFFFFFFFFFFFFFFFFF
1232 FFFFFFFFFFFFFFFFFF9FFFFFFFFCFFFFFFFFFFFFFFFFFFFF
1233 FFFFFFFFFFFFFFFFFF9FFFFFFFFCFFFFFFFFFFFFFFFFFFFF
1234 FFFFFFFFFFFFFFFFFF9FFFFFFFFC0001FFFFFFFFFFFFFFFF
1235 FFFFFFFFFFFFFFC0001FFFFFFFFC0001FFFFFFFFFFFFFFFF
1236 FFFFFFFFFFFFFFC0001FFFFFFFFC0001FFFFFFFFFFFFFFFF
1237 FFFFFFFFFFFFFFE0001FFFFFFFFFFFE3FFFFFFFFFFFFFFFF
1238 FFFFFFFFFFFFFFE3FFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFF
1239 FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFF
1240 FFFFFFFFFFFFFFF0FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFF
1241 FFFFFFFFFFFFFFF8FFF8001C001FFF8FFFFFFFFFFFFFFFFF
1242 FFFFFFFFFFFFFFF87FF80000001FFF1FFFFFFFFFFFFFFFFF
1243 FFFFFFFFFFFFFFFC7FF1FF00FF8FFF1FFFFFFFFFFFFFFFFF
1244 FFFFFFFFFFFFFFFE3F01FFC3FF80FE3FFFFFFFFFFFFFFFFF
1245 FFFFFFFFFFFFFFFE3F01FFE7FF80FE3FFFFFFFFFFFFFFFFF
1246 FFFFFFFFFFFFFFFF1F01FFE7FF80FC7FFFFFFFFFFFFFFFFF
1247 FFFFFFFFFFFFFFFF1F01FFE7FF98FCFFFFFFFFFFFFFFFFFF
1248 FFFFFFFFFFFFFFFF0F19FFE7FF98F87FFFFFFFFFFFFFFFFF
1249 FFFFFFFFFFFFFFFE0F19FFE7FF98FC1FFFFFFFFFFFFFFFFF
1250 FFFFFFFFFFFFFFFC1F19FFE7FF98FC0FFFFFFFFFFFFFFFFF
1251 FFFFFFFFFFFFFFF07F19FFE7FF98FF03FFFFFFFFFFFFFFFF
1252 FFFFFFFFFFFFFFC1FF19FFE7FF98FFC0FFFFFFFFFFFFFFFF
1253 FFFFFFFFFFFFFF83FF19FFE7FF98FFF07FFFFFFFFFFFFFFF
1254 FFFFFFFFFFFFFE0FFF19FFE7FF98FFF83FFFFFFFFFFFFFFF
1255 FFFFFFFFFFFFFE1FFF1800C30018FFF07FFFFFFFFFFFFFFF
1256 FFFFFFFFFFFFFE0FFF1800000018FFE0FFFFFFFFFFFFFFFF
1257 FFFFFFFFFFFFFF07FF187C007C18FFC1FFFFFFFFFFFFFFFF
1258 FFFFFFFFFFFFFF83FF1FFFC3FFF8FF83FFFFFFFFFFFFFFFF
1259 FFFFFFFFFFFFFFE0FF1FC3E7C3F8FF07FFFFFFFFFFFFFFFF
1260 FFFFFFFFFFFFFFF07F0000000000FE0FFFFFFFFFFFFFFFFF
1261 FFFFFFFFFFFFFFFC3F0000000000FC1FFFFFFFFFFFFFFFFF
1262 FFFFFFFFFFFFFFFE1F0000000000FC3FFFFFFFFFFFFFFFFF
1263 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1264 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1265 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1266 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1267 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1268 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1269 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1270 FFFFFFFFFFFFC3FFFFFFFF00FFFFFFFFE3FFFFFFFFFFFFFF
1271 FFFFFFFFFFFFC3FFFFFFFF00FFFFFFFFE3FFFFFFFFFFFFFF
1272 FFFFFFFFFFFFC3FFFFFFFF00FFFFFFFFE3FFFFFFFFFFFFFF
1273 FFFFFFFFFFFFC3FFFFFFFF00FFFFFFFFE3FFFFFFFFFFFFFF
1274 FFFFFFFFFFFFC3FFFFFFFF00FFFFFFFFE3FFFFFFFFFFFFFF
1275 FFFFFFFFFFFFC3FFFFFFFF00FFFFFFFFE3FFFFFFFFFFFFFF
1276 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1277 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1278 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1279 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1280 FFFFFFFFFFFFC3FFFFFFFF00FFFFFFFFE3FFFFFFFFFFFFFF
1281 FFFFFFFFFFFFC3FFFFFFFF00FFFFFFFFE3FFFFFFFFFFFFFF
1282 FFFFFFFFFFFFC3FFFFFFFF00FFFFFFFFE3FFFFFFFFFFFFFF
1283 FFFFFFFFFFFFC3FFFFFFFF00FFFFFFFFE3FFFFFFFFFFFFFF
1284 FFFFFFFFFFFFC3FFFFFFFF00FFFFFFFFE3FFFFFFFFFFFFFF
1285 FFFFFFFFFFFFC3FFFFFFFF00FFFFFFFFE3FFFFFFFFFFFFFF
1286 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1287 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1288 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1289 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1290 FFFFFFFFFFFFC3FFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFF
1291 FFFFFFFFFFFFC3FFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFF
1292 FFFFFFFFFFFFC3FFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFF
1293 FFFFFFFFFFFFC3FFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFF
1294 FFFFFFFFFFFFC3FFDFFFFFE7FFFFFBFFE3FFFFFFFFFFFFFF
1295 FFFFFFFFFFFFC3FF8FFFFFC3FFFFF1FFE3FFFFFFFFFFFFFF
1296 FFFFFFFFFFFFC3FE03FFFF00FFFFC0FFE3FFFFFFFFFFFFFF
1297 FFFFFFFFFFFFC3FC21FFFE107FFF847FE3FFFFFFFFFFFFFF
1298 FFFFFFFFFFFFC3F871FFFC383FFF0C3FE3FFFFFFFFFFFFFF
1299 FFFFFFFFFFFFC3F0F8FFFC7C1FFE1E1FE3FFFFFFFFFFFFFF
1300 FFFFFFFFFFFFC3E1FC7FF8FE0FFC3F0FE3FFFFFFFFFFFFFF
1301 FFFFFFFFFFFFC3C3FC3FF1FF07F87F87E3FFFFFFFFFFFFFF
1302 FFFFFFFFFFFFC387FE1FE1FF83F0FFC3E3FFFFFFFFFFFFFF
1303 FFFFFFFFFFFFC30FFF0FC3FFC1E1FFE1E3FFFFFFFFFFFFFF
1304 FFFFFFFFFFFFC21FFF8787FFE1C3FFF0E3FFFFFFFFFFFFFF
1305 FFFFFFFFFFFFC23FFFC30FFFF087FFF863FFFFFFFFFFFFFF
1306 FFFFFFFFFFFFC07FFFE01FFFF80FFFFC23FFFFFFFFFFFFFF
1307 FFFFFFFFFFFFC0FFFFF03FFFFC1FFFFE03FFFFFFFFFFFFFF
1308 FFFFFFFFFFFFC0FF07F87F80FC3F803F03FFFFFFFFFFFFFF
1309 FFFFFFFFFFFFC1F001FCFC003E7E000F83FFFFFFFFFFFFFF
1310 FFFFFFFFFFFFC3E0007FF8000FFC0003C3FFFFFFFFFFFFFF
1311 FFFFFFFFFFFFC380001FE00003F00001E3FFFFFFFFFFFFFF
1312 FFFFFFFFFFFFC300000FC00001E00000E3FFFFFFFFFFFFFF
1313 FFFFFFFFFFFFC2000007800001C0000063FFFFFFFFFFFFFF
1314 FFFFFFFFFFFFC200000000000000000023FFFFFFFFFFFFFF
1315 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1316 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1317 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1318 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1319 FFFFFFFFFFFFC000000000000000000003FFFFFFFFFFFFFF
1320 FFFFFFFFFFFFC1FFFFFFFFFFFFFFFFFF83FFFF8FFFFFFFFF
1321 FFFFFFF3FFFFC1FFFFFFFFFFFFFFFFFF83FFFF87FFFFFFFF
1322 FFFFFFE3FFFFE1FFFFFFFFFFFFFFFFFF87FFFF83FFFFFFFF
1323 FFFFFFC1FFFFE0FFEFFF7FEFFEFFF7FF87FFFF81FFFFFFFF
1324 FFFFFF81FFFFE0FFE7FE7FEFFE7FE3FF87FFFF887FFFFFFF
1325 FFFFFE11FFFFE0FEE6FE77C77C7EE2FF0FFFFF1C3FFFFFFF
1326 FFFFFE39FFFFF0FEE6EE77C77476E2FF0FFFFE3E1FFFFFFF
1327 FFFFF8783FFFF0FE64EE66C6726634FE0FFFF03F07FFFFFF
1328 FFFFF0FE1FFFF0FE3CE7E67C71CF1CFE1FFFC1FFC3FFFFFF
1329 FFFFE1FF07FFF8FE3CE3C638718F89FC1FFF03FFE3FFFFFF
1330 FFFFC3FFC0FFF87F19F18F18F997C9FC1FFC0FFFF1FFFFFF
1331 FFFF8FFFF07FF87F99F9979975B6EBFC3FF07F1FF8FFFFFF
1332 FFFE1FF8FC1FFC3EDAEFB6DF77E67EF83FC1FC07F87FFFFF
1333 FFFC3FE07E0FFC3EFCE7E67E73C63CF07FC3F803FE7FFFFF
1334 FFFC7FC03F87FE1E7CE3C63C718F1CF07F8FF1E1FE7FFFFF
1335 FFF8FF871FE3FE1E3CE38E38F98F08E0FF1FE3E0FE7FFFFF
1336 FFF8FF078FF1FE0F19F19799FD9F89E0FE3FE3E07E7FFFFF
1337 FFF8FE0FC7F8FE0F99F9B79B75BFC9C1FE3FC7E03C7FFFFF
1338 FFFC7E07C3F8FF07DBEFE6FE77E7FFC1FC7F8FE2187FFFFF
1339 FFFC7C47E1FCFF03FFE7E67C73C7F783FC7F1FC708FFFFFF
1340 FFFE38E3F0FC7F83EFE38E38718FF703FC7E3F8781FFFFFF
1341 FFFE10F1F8FC7FC1EFF19F18F91FF707FE387F8FC3FFFFFF
1342 FFFF01F1FC7CFFC0EFF99799753FFE0FFE00FF1FE3FFFFFF
1343 FFFF83F87E00FFE07FE5A65E71C7FC1FFF03FC3FF0FFFFFF
1344 FFFF8FFC3F83FFF83FE7C67C718FF83FFFC7F87FF87FFFFF
1345 FFFF1FFE1FC3FFF81FE38E38F90FF07FFFE3F8FFFC3FFFFF
1346 FFFE3FFF0FC7FFFC0FF19F19F91FF0FFFFF1F1FFFE1FFFFF
1347 FFFC7FFF878FFFFE07F9BE9B7D3FC1FFFFF8E3FFFF1FFFFF
1348 FFF8FFFFC31FFFFF03FFFEFF7FFF81FFFFF843FFFF8FFFFF
1349 FFF1FF03E03FFFFF81FEFE7E7EFF03FFFFFC0783FF8FFFFF
1350 FFF1FE09F07FFFFFC0FEFE3C7EFE07FFFFFE0FC0FF8FFFFF
1351 FFF1FE3EF87FFFFFE07EFF18FEFC0FFFFFFE1FC41F8FFFFF
1352 FFF9FE7E7C7FFFFFF03FFF99FFF01FFFFFFC3FEE0F1FFFFF
1353 FFF8FCFE7E3FFFFFFC0FFFDBFFE03FFFFFF87FE48F1FFFFF
1354 FFFC7CFE7E1FFFFFFC03FFFFFF80FFFFFFE0F9F1FE3FFFFF
1355 FFFC3EFC7F87FFFFFE00FFEFFE01FFFFFFC3F079FC7FFFFF
1356 FFFE3EF877C3FFFFFF807FEFFC03FFFFFF87E479F8FFFFFF
1357 FFFE1EF0E3E1FFFFFFC01FEFF80FFFFFFE0FC679F8FFFFFF
1358 FFFF0E01C7F07FFFFFF003FFC03FFFFFFC3FC07DF1FFFFFF
1359 FFFF870787FC0FFFFFFC003800FFFFFFF07CE007C3FFFFFF
1360 FFFFE37F1FBF83FFFFFFC00003FFFFFFC3F9F8CF87FFFFFF
1361 FFFFE1FE3F3FC0FFFFFFF8001FFFFFFF07E3F87F8FFFFFFF
1362 FFFFF8FE7E7FF0FFFFFFFC007FFFFFFC0FE3FC7F1FFFFFFF
1363 FFFFFCFE7EFFFC1FFFFFFF83FFFFFFF03FF13E7C3FFFFFFF
1364 FFFFFC7F7CF8FE07FFFFFFFFFFFFFFC0FFB87FF87FFFFFFF
1365 FFFFFE3F39F0FF01FFFFFFFFFFFFFE03FFB87FF0FFFFFFFF
1366 FFFFFF0FC3C1FFE03FFFFFFFFFFFF81FFFBC77E1FFFFFFFF
1367 FFFFFF87FF11FFF803FFFFFFFFFF807FE3BE07C3FFFFFFFF
1368 FFFFFF83FE31F3FE01FFFFFFFFFE01FFE39F0F87FFFFFFFF
1369 FFFFFFE1FEC3F0FFC01FFFFFFFE007FFF19F3F0FFFFFFFFF
1370 FFFFFFF0FFE3E2FFFC003FFFF0007FFFF89FFC3FFFFFFFFF
1371 FFFFFFF83FE3E7FFFF8000000007FFFFFC1FF87FFFFFFFFF
1372 FFFFFFFC1FE3C7FFFFF00000003FFF3FFE1FF8FFFFFFFFFF
1373 FFFFFFFF0FE7C1E03FFFF0001FFFFCFFFF1FE1FFFFFFFFFF
1374 FFFFFFFF81F70C879DFFFFFFFFFF8CFFFFFF03FFFFFFFFFF
1375 FFFFFFFFF0FF1F9FFDFFFFFFFFCFCC1FFFFC1FFFFFFFFFFF
1376 FFFFFFFFF87F8F1FF9F3FFFF83CFCC3FFFF83FFFFFFFFFFF
1377 FFFFFFFFFE1FE71FF9F39F3E79C7CE7FFFE0FFFFFFFFFFFF
1378 FFFFFFFFFE07FF9FF9F79F3C7CE7CE7FFF83FFFFFFFFFFFF
1379 FFFFFFFFFF81FF9FF1E70E3CFCE7CE37FE07FFFFFFFFFFFF
1380 FFFFFFFFFFC0FFCFF1E70C38FCE7CE07FC1FFFFFFFFFFFFF
1381 FFFFFFFFFFF01FE0F1EF4538FCE7CF3FF07FFFFFFFFFFFFF
1382 FFFFFFFFFFFC07FFF1CF453CFCE3CFFFC1FFFFFFFFFFFFFF
1383 FFFFFFFFFFFF01FFF9CE613CFCF19FFF03FFFFFFFFFFFFFF
1384 FFFFFFFFFFFFC0FFFC1EE33C7DF03FFC07FFFFFFFFFFFFFF
1385 FFFFFFFFFFFFF81FFFFEE33E31FFFFC03FFFFFFFFFFFFFFF
1386 FFFFFFFFFFFFFE03FFFEF73F81FFFE00FFFFFFFFFFFFFFFF
1387 FFFFFFFFFFFFFF007FFFFFFFF9FFF803FFFFFFFFFFFFFFFF
1388 FFFFFFFFFFFFFFE007FFFFFFFDFF801FFFFFFFFFFFFFFFFF
1389 FFFFFFFFFFFFFFFE003FFFFFFFF001FFFFFFFFFFFFFFFFFF
1390 FFFFFFFFFFFFFFFFC0000000000007FFFFFFFFFFFFFFFFFF
1391 FFFFFFFFFFFFFFFFFFC00000000FFFFFFFFFFFFFFFFFFFFF
1392 FFFFFFFFFFFFFFFFFFFFE0000FFFFFFFFFFFFFFFFFFFFFFF
1393 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1394 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1395 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1396 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1397 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1399 % ---- Object #3:7 Obj Type: 2
1402 mark /|___Times-Bold /Times-Bold T cvRecFont
1403 24 fts /|___Times-Bold findfont exch scalefont setfont
1406 (University of Alberta)
1407 F F 217.2422 2 21 0 0 fittext
1410 systemdict /setpacking known {origpack setpacking} if end
1415 227 633 a Fx(The)27 b(APHID)g(P)n(arallel)e Fw(\013\014)31
1416 b Fx(Searc)n(h)26 b(Algorithm)945 991 y Fv(b)n(y)414
1417 1109 y(Mark)18 b(G.)h(Bro)r(c)n(kington)e(and)i(Jonathan)h(Sc)n
1418 (hae\013er)636 2067 y(T)-5 b(ec)n(hnical)18 b(Rep)r(ort)g(TR)g(96{07)
1419 821 2126 y(August)i(1996)379 2430 y
1420 18813584 3223306 8025374 21313290 26838958 24536596 startTexFig
1422 %%BeginDocument: uofabot.ps
1423 /CanvasDict where not{/CanvasDict 250 dict def}{pop}ifelse
1425 systemdict/setpacking known{/origpack currentpacking def true setpacking}if
1426 /bdf{bind def}bind def
1427 /xdf{exch bind def}bdf
1428 /min{2 copy gt{exch}if pop}bdf
1430 /max{2 copy lt{exch}if pop}bdf
1436 /cvangle{360 exch sub 90 add 360 mod}bdf
1437 /setrot{/currot edf rotmtx currentmatrix pop 2 copy translate currot rotate neg exch neg exch translate}bdf
1438 /endrot{rotmtx setmatrix}bdf
1439 /i systemdict/image get def/T true def/F false def/dbg F def
1440 /ncolors 0 def/st0 ()def/st1 ()def/proc0 {}def
1441 /penh 1 def/penv 1 def/penv2 0 def/penh2 0 def/samplesize 0 def/width 0 def/height 0 def
1442 /setcmykcolor where not{/setcmykcolor{/b edf 3{b add 1.0 exch sub 0.0 max 1.0 min 3 1 roll}repeat systemdict begin setrgbcolor end}bdf}{pop}ifelse
1443 /doeoclip{closepath{eoclip}stopped{currentflat dup 2 mul setflat eoclip setflat}if}bdf
1444 /SpaceExtra 0 def/LetterSpace 0 def/StringLength 0 def/NumSpaces 0 def/JustOffset 0 def
1446 /s0{1 setlinewidth cvmtx currentmatrix pop penh penv scale stroke cvmtx setmatrix}bdf
1447 /f1{_bp _fp impat}def
1448 /s1{cvmtx currentmatrix pop 1 setlinewidth penh penv scale
1449 {strokepath}stopped{currentflat dup 2 mul setflat strokepath setflat}if
1451 cvmtx setmatrix _fp impat}def
1454 /f{filltype 0 eq{f0}{f1}ifelse}bdf
1455 /s{stroketype 0 eq{s0}{s1}ifelse}bdf
1465 /_frcmyk [0 0 0 1] def
1469 /_bkcmyk [0 0 0 0] def
1470 /fg{/_fg exch def /filltype 0 def/fills{_fg setgray}def}def
1471 /frgb{_frgb astore pop /filltype 0 def/fills{_frgb aload pop setrgbcolor}def}def
1472 /fcmyk{_fcmyk astore pop /filltype 0 def/fills{_fcmyk aload pop setcmykcolor}def}def
1473 /pg{/_pg exch def /stroketype 0 def/pens{_pg setgray}def}def
1474 /prgb{_prgb astore pop /stroketype 0 def/pens{_prgb aload pop setrgbcolor}def}def
1475 /pcmyk{_pcmyk astore pop /stroketype 0 def/pens{_pcmyk aload pop setcmykcolor}def}def
1476 /fpat{/fstr edf/filltype 1 def/fills{/patstr fstr def}bdf}bdf
1477 /ppat{/sstr edf/stroketype 1 def/pens{/patstr sstr def}bdf}bdf
1478 /bkg{ /_bkg exch def /_bp{gsave _bkg setgray fill grestore}def}def
1479 /bkrgb{_bkrgb astore pop/_bp{gsave _bkrgb aload pop setrgbcolor fill grestore}def}def
1480 /bkcmyk{_bkcmyk astore pop/_bp{gsave _bkcmyk aload pop setcmykcolor fill grestore}def}def
1481 /frg{ /_frg exch def /_fp{_frg setgray}def}def
1482 /frrgb{_frrgb astore pop/_fp{_frrgb aload pop setrgbcolor}def}def
1483 /frcmyk{_frcmyk astore pop/_fp{_frcmyk aload pop setcmykcolor}def}def
1485 ncolors 1 gt{/proc0 edf
1486 dup dup 0 get ncolors div cvi exch 0 3 -1 roll put
1487 4 -1 roll ncolors div cvi 4 1 roll{proc0 dup/st0 edf
1488 0 exch ncolors exch length
1489 dup ncolors sub exch ncolors div cvi string/st1 edf
1490 {dup 0 exch dup 1 exch
1491 2 add{st0 exch get add}bind for
1492 3 div ncolors 4 eq{exch dup 3 1 roll 3 add st0 exch get add 255 exch sub dup 0 lt{pop 0}if}if cvi
1493 dup 255 gt{pop 255}if
1494 exch ncolors div cvi exch
1495 st1 3 1 roll put}bind for
1499 {pop false exch colorimage}
1505 currot 0 ne{currot neg rotate}if
1510 8 div floor 8 mul dup/starty edf
1511 sub abs 8 div ceiling 8 mul cvi/height edf
1512 exch 8 div floor 8 mul dup/startx edf
1513 sub abs 8 div ceiling 8 mul cvi/width edf
1514 startx starty translate
1516 /height height 8 mul def
1517 /st0 width string def
1518 width height T [width 0 0 height neg 0 height]
1523 st0 length 1 sub dup 0 le{pop 1}if
1526 put}bind for/cnt cnt 1 add def
1533 scale/height edf/colorimage where
1535 {ncolors mul}ifelse/width edf
1536 /tbitstr width string def
1537 width height 8 [width 0 0 height neg 0 height]
1538 {currentfile tbitstr readhexstring pop}bind
1540 dup 3 eq {ci}{icomp}ifelse}bdf
1545 /tbitstr width 7 add 8 div cvi string def
1546 width height 1 [width 0 0 height neg 0 height]
1547 {currentfile tbitstr readhexstring pop}bind
1554 /tbitstr width 7 add 8 div cvi string def
1555 width height invFlag [width 0 0 height neg 0 height]
1556 {currentfile tbitstr readhexstring pop}bind
1560 /dict_count countdictstack def
1561 /op_count count 1 sub def
1564 0 setgray 0 setlinecap
1565 1 setlinewidth 0 setlinejoin
1566 10 setmiterlimit [] 0 setdash newpath
1567 /languagelevel where
1568 {pop languagelevel 1 ne{false setstrokeadjust false setoverprint}if}if
1571 {count op_count sub {pop}repeat
1572 countdictstack dict_count sub {end}repeat
1574 /rectpath {/cv_r edf/cv_b edf/cv_l edf/cv_t edf
1575 cv_l cv_t moveto cv_r cv_t lineto cv_r cv_b lineto cv_l cv_b lineto cv_l cv_t lineto closepath}bdf
1576 /setpen{/penh edf/penv edf/penv2 penv 2 div def/penh2 penh 2 div def}bdf
1577 /dostroke{not pens 1.0 currentgray ne or {s}{newpath}ifelse}bdf
1578 /dodashfill{not fills 1.0 currentgray ne or
1579 {gsave f grestore gsave [] 0 setdash
1580 stroketype/stroketype filltype def
1581 s/stroketype edf grestore}{newpath}ifelse}bdf
1582 /dofill{not fills 1.0 currentgray ne or {f}{newpath}ifelse}bdf
1583 /dofillsave{not fills 1.0 currentgray ne or {gsave f grestore}if}bdf
1584 /doline{not pens 1.0 currentgray ne or {filltype/filltype stroketype def f/filltype edf}{newpath}ifelse}bdf
1585 /spx{SpaceExtra 0 32 4 -1 roll widthshow}bdf
1586 /lsx{SpaceExtra 0 32 LetterSpace 0 6 -1 roll awidthshow}bdf
1587 /Rjust{stringwidth pop JustOffset exch sub /JustOffset edf}bdf
1588 /Cjust{stringwidth pop 2 div JustOffset exch sub /JustOffset edf}bdf
1589 /adjfit{stringwidth pop LetterSpace StringLength 1 sub mul add SpaceExtra NumSpaces mul add dup /pw edf JustOffset exch
1590 sub dup /wdif edf StringLength div dup abs 1.0 gt{pop 0}if LetterSpace add /LetterSpace edf}bdf
1591 /ulb{currentpoint pop /underlinpt edf}bdf
1592 /ule{gsave currentpoint newpath moveto currentfont dup /ft1 known{dup /ft1 get begin /FontMatrix get FontMatrix tpmx concatmatrix pop}
1593 {begin FontMatrix tpmx copy pop}ifelse FontInfo begin UnderlinePosition UnderlineThickness end end dup tpmx
1594 dtransform pop setlinewidth dup tpmx dtransform pop 0 exch rmoveto underlinpt currentpoint pop sub 0 rlineto stroke grestore}bdf
1595 /fittext{ /SpaceExtra edf /LetterSpace edf /StringLength edf /NumSpaces edf /JustOffset edf not 1 currentgray ne or
1598 lsx {ule}if}{pop pop}ifelse}bdf
1599 /cvRecFont{/encod edf FontDirectory 2 index known{cleartomark}{findfont dup length 1 add dict begin
1600 {1 index/FID ne{def}{pop pop}ifelse}forall encod{/Encoding CVvec def}if
1601 currentdict end definefont cleartomark}ifelse}bdf
1602 /wrk1 ( ) def/wdict 16 dict def
1603 /Work75 75 string def /Nmk{Work75 cvs dup}bdf /Npt{put cvn}bdf /dhOdh{Nmk 2 79 Npt}bdf /dhodh{Nmk 2 111 Npt}bdf /dhSdh{Nmk 2 83 Npt}bdf
1604 /sfWidth{gsave 0 0 moveto 0 0 lineto 0 0 lineto 0 0 lineto closepath clip stringwidth grestore}bdf
1605 /MakOF{dup dhodh FontDirectory 1 index known{exch pop}{exch findfont dup length 1 add dict begin
1606 {1 index/FID ne 2 index /UniqueID ne and{def}{pop pop}ifelse}forall
1608 /StrokeWidth .24 1000 mul ftSize div dup 12 lt{pop 12}if def
1609 dup currentdict end definefont pop}ifelse}bdf
1610 /fts{dup/ftSize edf}def
1611 /mkFT{/tempFT 11 dict def tempFT begin
1612 /FontMatrix [1 0 0 1 0 0] def/FontType 3 def
1613 FontDirectory 3 index get /Encoding get/Encoding exch def
1614 /proc2 edf/ft2 exch findfont def/ft1 exch findfont def/FontBBox [0 0 1 1] def
1615 /BuildChar{wdict begin/chr edf/ftdt edf/chrst wrk1 dup 0 chr put def ftdt/proc2 get exec end}def
1616 end tempFT definefont pop}bdf
1617 /OLFt{dup dhOdh FontDirectory 1 index known{exch pop}
1618 {dup 3 -1 roll dup MakOF {outproc} mkFT}ifelse}bdf
1619 /mshw{moveto show}bdf
1620 /outproc{ftdt/ft1 get setfont gsave chrst sfWidth grestore setcharwidth dblsh}bdf
1621 /dblsh{currentgray 1 setgray chrst 0 0 mshw setgray ftdt/ft2 get setfont chrst 0 0 mshw}bdf
1622 /ShadChar{ftdt/ft1 get setfont gsave chrst sfWidth 1 index 0 ne{exch .05 add exch}if grestore setcharwidth
1623 chrst .06 0 mshw 0 .05 translate dblsh}bdf
1624 /ShFt{dup dhSdh FontDirectory 1 index known{exch pop}
1625 {dup 3 -1 roll dup MakOF {ShadChar} mkFT}ifelse}bdf
1626 /LswUnits{72 75 div dup scale}bdf
1628 /CVvec 256 array def
1629 /NUL/SOH/STX/ETX/EOT/ENQ/ACK/BEL/BS/HT/LF/VT/FF/CR/SO/SI/DLE/DC1/DC2/DC3/DC4/NAK/SYN/ETB/CAN/EM/SUB/ESC/FS/GS/RS/US
1630 CVvec 0 32 getinterval astore pop
1631 CVvec 32/Times-Roman findfont/Encoding get
1632 32 96 getinterval putinterval CVvec dup 39/quotesingle put 96/grave put
1633 /Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis/Udieresis/aacute
1634 /agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute/egrave
1635 /ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde/oacute
1636 /ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex/udieresis
1637 /dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
1638 /registered/copyright/trademark/acute/dieresis/notequal/AE/Oslash
1639 /infinity/plusminus/lessequal/greaterequal/yen/mu/partialdiff/summation
1640 /product/pi/integral/ordfeminine/ordmasculine/Omega/ae/oslash
1641 /questiondown/exclamdown/logicalnot/radical/florin/approxequal/Delta/guillemotleft
1642 /guillemotright/ellipsis/blank/Agrave/Atilde/Otilde/OE/oe
1643 /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide/lozenge
1644 /ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright/fi/fl
1645 /daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand/Acircumflex/Ecircumflex/Aacute
1646 /Edieresis/Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute/Ocircumflex
1647 /apple/Ograve/Uacute/Ucircumflex/Ugrave/dotlessi/circumflex/tilde
1648 /macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron
1649 CVvec 128 128 getinterval astore pop
1656 origmtx currentmatrix pop
1665 % ---- Object #1:5 Obj Type: 99
1666 % ---- Object #2:6 Obj Type: 2
1669 mark /|___Times-Bold /Times-Bold T cvRecFont
1670 14 fts /|___Times-Bold findfont exch scalefont setfont
1673 (DEPARTMENT OF COMPUTING SCIENCE)
1674 F F 280.3589 3 31 0 0 fittext
1676 % ---- Object #3:7 Obj Type: 2
1679 mark /|___Times-Bold /Times-Bold T cvRecFont
1680 12 fts /|___Times-Bold findfont exch scalefont setfont
1683 (The University of Alberta)
1684 F F 131.6221 3 25 0 0 fittext
1686 % ---- Object #4:8 Obj Type: 2
1689 mark /|___Times-Bold /Times-Bold T cvRecFont
1690 12 fts /|___Times-Bold findfont exch scalefont setfont
1693 (Edmonton, Alberta, Canada)
1694 F F 145.3213 2 25 0 0 fittext
1697 systemdict /setpacking known {origpack setpacking} if end
1706 1 2 bop 350 50 a Fu(The)21 b(APHID)g(P)n(arallel)h Fw(\013\014)k
1707 Fu(Searc)n(h)21 b(Algorithm)1600 24 y Ft(\003)516 170
1709 (erta.c)n(a)504 228 y Fs(Jonathan)i(Sc)o(hae\013er,)d
1711 (Computing)h(Science)797 345 y(Univ)o(ersit)o(y)h(of)d(Alb)q(erta)727
1712 403 y(Edmon)o(ton,)i(Alb)q(erta)g(T6G)f(2H1)911 461 y(Canada)802
1713 558 y Fs(August)k(20,)f(1996)890 749 y Fp(Abstract)161
1714 814 y Fq(This)g(pap)q(er)h(in)o(tro)q(duces)g(the)e(APHID)g(\(Async)o
1715 (hronous)j(P)o(arallel)f(Hierarc)o(hical)h(Iterativ)o(e)e(Deep)q
1716 (ening\))i(game-)104 860 y(tree)11 b(searc)o(h)i(algorithm.)18
1717 b(An)12 b(APHID)f(searc)o(h)h(is)h(a)e(hierarc)o(hical)k(searc)o(h)d
1718 (with)g(a)g(master)g(con)o(trolling)j(the)d(top)f(of)h(the)104
1719 905 y(tree)i(\()p Fo(d)217 889 y Fn(0)242 905 y Fq(ply\),)h(and)g(the)f
1720 (sla)o(v)o(es)h(searc)o(hing)h(the)e(rest)g(of)g(the)g(tree)g(\()p
1721 Fo(d)c Fm(\000)f Fo(d)1192 889 y Fn(0)1217 905 y Fq(ply\).)21
1722 b(The)14 b(sla)o(v)o(es)h(async)o(hronously)j(read)104
1723 951 y(w)o(ork)d(lists)h(from)f(the)h(master)f(and)h(return)g(score)f
1724 (information)i(to)f(the)f(master.)24 b(The)15 b(master)g(uses)h(the)f
1725 (returned)104 997 y(score)e(information)i(to)d(generate)i(appro)o
1726 (ximate)h(minimax)f(v)n(alues,)g(un)o(til)h(all)f(of)e(the)h(required)h
1727 (score)g(information)g(is)104 1042 y(a)o(v)n(ailable.)161
1728 1088 y(APHID)e(has)g(b)q(een)g(programmed)h(as)e(an)h(easy)g(to)g
1729 (implemen)o(t,)h(game-indep)q(enden)o(t)h Fo(\013\014)f
1730 Fq(library)m(.)18 b(This)12 b(has)g(b)q(een)104 1134
1731 y(demonstrated)g(b)o(y)f(parallelizi)q(ng)j(three)c(programs)i(\(c)o
1732 (hess,)f(c)o(hec)o(k)o(ers)g(and)g(Othello\))h(on)f(a)g(net)o(w)o(ork)g
1733 (of)f(w)o(orkstations,)104 1179 y(eac)o(h)j(with)h(less)f(than)h(a)f
1734 (da)o(y's)g(w)o(orth)g(of)g(e\013ort.)0 1316 y Fl(1)67
1735 b(In)n(tro)r(duction)0 1407 y Fk(The)18 b(alpha-b)q(eta)f(\()p
1736 Fj(\013\014)r Fk(\))h(minim)o(ax)c(tree)19 b(searc)o(h)f(algorithm)d
1737 (has)j(pro)o(v)o(en)f(to)g(b)q(e)h(a)f(di\016cult)g(algorithm)e(to)i
1738 (parallelize.)0 1457 y(Although)e(sim)o(ulations)e(predict)k(excellen)o
1739 (t)f(parallel)f(p)q(erformance,)g(man)o(y)f(of)h(these)i(results)g(are)
1740 f(based)h(on)e(an)h(unrea-)0 1507 y(sonable)c(set)h(of)e(assumptions.)
1741 17 b(In)12 b(practice,)h(kno)o(wing)e(where)i(to)f(initiate)f(parallel)
1742 g(activit)o(y)g(is)h(di\016cult)g(since)h(the)f(result)0
1743 1557 y(of)h(searc)o(hing)i(one)f(no)q(de)h(at)f(a)f(branc)o(h)i(ma)o(y)
1744 d(ob)o(viate)i(the)g(parallel)f(w)o(ork)h(of)f(the)i(other)g(branc)o
1745 (hes)g(\(a)f(so-called)g Fi(cut-o\013)p Fk(\).)0 1607
1746 y(In)g(real-w)o(orld)g(implemen)o(tatio)o(ns,)e(suc)o(h)j(as)f(for)g
1747 (high-p)q(erformance)g(c)o(hess,)h(c)o(hec)o(k)o(ers)i(and)d(Othello)g
1748 (game-pla)o(ying)d(pro-)0 1656 y(grams,)h(the)j(programs)d(su\013er)j
1749 (from)d(three)k(ma)r(jor)c(sources)j(of)e(parallel)g(ine\016ciency)h
1750 (\(a)g(similar)d(mo)q(del)i(is)g(presen)o(ted)j(in)0
1751 1706 y([18)o(]\):)62 1789 y Fh(\017)21 b Fi(Synchr)n(onization)15
1752 b(Overhe)n(ad)p Fk(:)i(The)d(searc)o(h)g(t)o(ypically)d(has)i(man)o(y)e
1753 (sync)o(hronization)i(p)q(oin)o(ts)f(that)h(result)h(in)e(a)h(high)104
1754 1839 y(p)q(ercen)o(tage)i(of)f(pro)q(cessor)h(idle)f(time.)62
1755 1922 y Fh(\017)21 b Fi(Par)n(al)r(lelization)14 b(Overhe)n(ad)p
1756 Fk(:)k(This)c(is)g(the)g(o)o(v)o(erhead)h(of)e(incorp)q(orating)g(the)i
1757 (parallel)e(algorithm,)e(whic)o(h)i(includes)104 1972
1758 y(the)h(handling)f(of)g(comm)o(unication)e(and)i(main)o(taining)e
1759 (structures)16 b(to)e(allo)o(w)e(for)i(allo)q(cation)e(of)h(w)o(ork.)62
1760 2055 y Fh(\017)21 b Fi(Se)n(ar)n(ch)c(Overhe)n(ad)p Fk(:)22
1761 b(Searc)o(h)16 b(trees)i(are)e(really)f(directed)i(graphs.)24
1762 b(W)m(ork)15 b(p)q(erformed)g(on)h(one)g(pro)q(cessor)h(ma)o(y)d(b)q(e)
1763 104 2105 y(useful)d(to)g(the)g(computations)f(of)g(another)i(pro)q
1764 (cessor.)18 b(If)11 b(this)g(information)d(is)j(not)g(a)o(v)n(ailable,)
1765 e(unnecessary)k(searc)o(h)104 2155 y(ma)o(y)f(b)q(e)i(done.)0
1766 2238 y(These)h(o)o(v)o(erheads)f(are)g(not)f(indep)q(enden)o(t)i(of)d
1767 (eac)o(h)i(other.)19 b(F)m(or)13 b(example,)f(increased)i(comm)o
1768 (unication)c(can)k(help)f(reduce)0 2287 y(the)j(searc)o(h)h(o)o(v)o
1769 (erhead.)23 b(Reducing)15 b(the)h(n)o(um)o(b)q(er)f(of)f(sync)o
1770 (hronization)i(p)q(oin)o(ts)f(can)h(increase)g(the)g(searc)o(h)h(o)o(v)
1771 o(erhead.)23 b(In)0 2337 y(practice,)14 b(the)h(righ)o(t)e(balance)h(b)
1772 q(et)o(w)o(een)h(these)g(sources)h(of)d(program)f(ine\016ciency)i(is)g
1773 (di\016cult)f(to)h(\014nd,)f(and)h(one)g(usually)0 2387
1774 y(p)q(erforms)f(man)o(y)f(exp)q(erimen)o(ts)j(to)e(\014nd)h(the)h(righ)
1775 o(t)e(trade-o\013s)i(to)f(maxim)o(ize)d(p)q(erformance.)62
1776 2437 y(Man)o(y)17 b(parallel)f Fj(\013\014)k Fk(algorithms)15
1777 b(ha)o(v)o(e)i(app)q(eared)h(in)f(the)h(literature)g(\(see)g([1])e(for)
1778 h(a)g(comprehensiv)o(e)h(list)f(of)f(algo-)0 2487 y(rithms\).)h(The)12
1779 b(PV-Split)g(algorithm)e(recognized)k(that)e(some)g(no)q(des)h(exist)g
1780 (in)e(the)i(searc)o(h)h(tree)g(where,)f(ha)o(ving)e(searc)o(hed)0
1781 2537 y(the)k(\014rst)h(branc)o(h)f(sequen)o(tially)m(,)e(the)i
1782 (remaining)e(branc)o(hes)j(can)f(b)q(e)g(searc)o(hed)h(in)e(parallel)g
1783 ([17)o(].)20 b(Initiating)13 b(parallelism)p 0 2573 780
1784 2 v 46 2600 a Fn(\003)64 2612 y Fg(A)g(part)f(of)h(this)f(pap)q(er)g(w)
1785 o(as)h(presen)o(ted)e(at)h(the)h(Adv)n(ances)e(in)i(Computer)e(Chess)i
1786 (VI)q(I)q(I)g(conference)d(in)j(Maastric)o(h)o(t,)e(June)h(1996)g([2].)
1787 20 b(A)0 2651 y(di\013eren)o(t)8 b(p)q(ortion)h(w)o(as)i(accepted)d
1788 (for)i(publication)d(at)j(the)g(8th)g(IEEE)h(Symp)q(osium)c(on)j(P)o
1789 (arallel)f(and)h(Distributed)e(Pro)q(cessing)g(\(SPDP)i('96\),)0
1790 2691 y(New)i(Orleans,)f(Octob)q(er)f(1996)g([3].)965
1793 2 3 bop 0 42 a Fk(along)13 b(the)i(b)q(est)h(line)e(of)f(pla)o(y)m(,)g
1794 (the)i Fi(princip)n(al)g(variation)p Fk(,)f(w)o(as)g(e\013ectiv)o(e)i
1795 (for)e(a)g(small)e(n)o(um)o(b)q(er)i(of)g(pro)q(cessors,)i(although)0
1796 91 y(v)n(ariations)d(on)g(this)h(sc)o(heme)g(seem)g(to)g(b)q(e)g
1797 (limited)e(to)i(sp)q(eedups)i(of)d(less)h(than)g(8)g([24)o(].)62
1798 141 y(The)e(idea)f(can)h(b)q(e)g(generalized)g(to)g(other)g(no)q(des)g
1799 (in)f(the)h(tree.)18 b(A)o(t)12 b(no)q(des)g(where)h(the)f(\014rst)g
1800 (branc)o(h)g(has)g(b)q(een)g(searc)o(hed)0 191 y(and)17
1801 b(no)g(cut-o\013)h(o)q(ccurs,)h(the)e(rest)i(can)e(lik)o(ely)f(b)q(e)i
1802 (searc)o(hed)h(in)e(parallel.)26 b(It)18 b(is)f(a)g(trade-o\013)g({)g
1803 (increased)i(parallelism)0 241 y(v)o(ersus)14 b(additional)e(searc)o(h)
1804 i(o)o(v)o(erhead,)f(since)h(one)g(of)e(these)j(parallel)d(tasks)i
1805 (could)f(cause)h(a)f(cut-o\013.)18 b(This)13 b(idea)g(has)h(b)q(een)0
1806 291 y(tried)e(b)o(y)g(a)f(n)o(um)o(b)q(er)h(of)f(researc)o(hers)k([6)o
1807 (,)c(7,)g(10].)17 b(The)12 b(b)q(est-kno)o(wn)g(instance)h(of)e(this)h
1808 (t)o(yp)q(e)h(of)e(algorithm)e(is)j(called)f Fi(Y)m(oung)0
1809 340 y(Br)n(others)k(Wait)f Fk(\(YBW\))h(and)f(w)o(as)g(implemen)o(ted)e
1810 (b)o(y)i(F)m(eldmann)e(in)i(the)h Ff(Zugzw)l(ang)f Fk(c)o(hess)i
1811 (program)d([5)o(].)19 b(F)m(eldmann)0 390 y(ac)o(hiev)o(ed)12
1812 b(a)f(344-fold)e(sp)q(eedup)k(using)e(YBW)h(on)f(1024)f(pro)q(cessors.)
1813 20 b(V)m(ariations)10 b(of)h(this)g(algorithm)e(ha)o(v)o(e)i(app)q
1814 (eared)h(with)0 440 y(comparable)g(exp)q(erimen)o(tal)g(results,)i(suc)
1815 o(h)g(as)f(Kuszmaul's)f(Jam)o(b)q(oree)h(searc)o(h)h([14)o(])f(and)f(W)
1816 m(eill's)g(ABD)o(AD)o(A)h(algorithm)0 490 y([29)o(].)62
1817 540 y(This)20 b(class)f(of)g(algorithms)e(cannot)j(ac)o(hiev)o(e)g(a)f
1818 (linear)g(sp)q(eedup)i(primarily)c(due)i(to)h(sync)o(hronization)f(o)o
1819 (v)o(erhead;)0 589 y(the)c(searc)o(h)h(tree)g(ma)o(y)d(ha)o(v)o(e)i
1820 (thousands)g(of)f(sync)o(hronization)h(p)q(oin)o(ts)g(and)f(there)j
1821 (are)e(n)o(umerous)f(o)q(ccasions)h(where)h(the)0 639
1822 y(pro)q(cesses)i(are)e(starv)o(ed)h(for)e(w)o(ork.)23
1823 b(The)16 b(algorithms)e(ha)o(v)o(e)h(lo)o(w)g(searc)o(h)i(o)o(v)o
1824 (erhead,)f(but)f(this)h(is)g(primarily)d(due)j(to)f(the)0
1825 689 y(implemen)o(tatio)o(n)c(of)j(a)f(globally)f(shared)j(transp)q
1826 (osition)e(table)h(to)g(share)h(information)c(and)i(impro)o(v)o(e)f(mo)
1827 o(v)o(e)h(ordering.)62 739 y(This)h(pap)q(er)h(in)o(tro)q(duces)h(the)f
1828 (Async)o(hronous)g(P)o(arallel)e(Hierarc)o(hical)h(Iterativ)o(e)h(Deep)
1829 q(ening)g(\(APHID)1723 724 y Fe(1)1742 739 y Fk(\))f(game-tree)0
1830 789 y(searc)o(h)i(algorithm.)k(The)c(algorithm)d(represen)o(ts)18
1831 b(a)d(departure)i(from)c(the)j(approac)o(hes)g(used)h(in)d(practice.)24
1832 b(In)15 b(con)o(trast)0 839 y(to)d(other)h(sc)o(hemes,)g(APHID)g
1833 (de\014nes)h(a)e(fron)o(tier)h(\(a)f(\014xed)h(n)o(um)o(b)q(er)f(of)f
1834 (mo)o(v)o(es)h(a)o(w)o(a)o(y)f(from)g(the)i(ro)q(ot)f(of)g(the)h(searc)
1835 o(h)h(tree\),)0 888 y(and)d(all)g(no)q(des)h(at)f(the)h(fron)o(tier)g
1836 (are)f(done)h(in)f(parallel.)16 b(Eac)o(h)c(w)o(ork)o(er)g(pro)q(cess)h
1837 (is)e(assigned)h(an)f(equal)g(n)o(um)o(b)q(er)g(of)g(fron)o(tier)0
1838 938 y(no)q(des)i(to)f(searc)o(h.)19 b(The)13 b(w)o(ork)o(ers)g(con)o
1839 (tin)o(ually)d(searc)o(h)k(these)g(no)q(des)f(deep)q(er)h(and)e(deep)q
1840 (er,)i(nev)o(er)f(ha)o(ving)f(to)g(sync)o(hronize)0 988
1841 y(with)j(a)g(con)o(trolling)f(master)h(pro)q(cess.)24
1842 b(The)16 b(master)f(pro)q(cess)i(rep)q(eatedly)f(searc)o(hes)i(to)d
1843 (the)h(fron)o(tier)f(to)g(get)h(the)g(latest)0 1038 y(searc)o(h)g
1844 (results.)k(In)15 b(this)f(w)o(a)o(y)m(,)f(there)j(is)e(e\013ectiv)o
1845 (ely)i(no)e(idle)g(time;)f(searc)o(h)i(ine\016ciencies)h(are)f
1846 (primarily)d(due)j(to)f(searc)o(h)0 1088 y(o)o(v)o(erhead.)29
1847 b(APHID's)18 b(p)q(erformance)f(do)q(es)h(not)g(rely)f(on)h(the)g
1848 (implemen)o(tati)o(on)d(of)i(a)g(global)f(shared)i(memory)m(,)d(whic)o
1849 (h)0 1137 y(mak)o(es)f(the)i(algorithm)d(suitable)i(for)g(lo)q
1850 (osely-coupled)f(arc)o(hitectures)k(\(suc)o(h)e(as)f(a)g(net)o(w)o(ork)
1851 h(of)e(w)o(orkstations\),)h(as)h(w)o(ell)0 1187 y(as)e(tigh)o
1852 (tly-coupled)f(arc)o(hitectures.)62 1237 y(Unlik)o(e)f(most)f(parallel)
1853 g Fj(\013\014)k Fk(algorithms,)9 b(APHID)k(is)f(designed)h(to)f(\014t)g
1854 (in)o(to)g(a)g(sequen)o(tial)g Fj(\013\014)j Fk(structure.)k(APHID)13
1855 b(has)0 1287 y(b)q(een)i(implemen)o(ted)e(as)h(a)g(game-indep)q(enden)o
1856 (t)g(library)g(of)f(routines.)20 b(These,)c(com)o(bined)d(with)h
1857 (application-dep)q(enden)o(t)0 1337 y(routines)d(that)f(the)g(user)h
1858 (supplies,)g(allo)o(w)d(a)i(sequen)o(tial)g Fj(\013\014)j
1859 Fk(program)8 b(to)i(b)q(e)h(easily)e(con)o(v)o(erted)i(to)f(a)g
1860 (parallel)f Fj(\013\014)j Fk(program.)0 1386 y(Although)i(most)f
1861 (parallel)g Fj(\013\014)j Fk(programs)d(tak)o(e)h(mon)o(ths)f(to)h(dev)
1862 o(elop,)g(the)h(game-indep)q(enden)o(t)f(library)g(allo)o(ws)e(users)k
1863 (to)0 1436 y(in)o(tegrate)e(parallelism)d(in)o(to)j(their)g
1864 (application)e(with)i(only)f(a)h(few)g(hours)g(of)f(w)o(ork.)62
1865 1486 y(This)j(pap)q(er)h(discusses)i(the)e(APHID)f(algorithm,)e(its)i
1866 (application-indep)q(enden)o(t)g(in)o(terface)h(and)f(the)h(p)q
1867 (erformance)0 1536 y(of)12 b(the)h(APHID)g(algorithm.)i(The)f(pap)q(er)
1868 f(is)g(organized)f(in)o(to)g(\014v)o(e)h(sections.)19
1869 b(Section)13 b(2)g(is)f(a)h(brief)f(summary)e(of)j(previous)0
1870 1586 y(w)o(ork)i(in)g(sequen)o(tial)h(and)f(parallel)g(game-tree)g
1871 (searc)o(h.)24 b(Section)16 b(3)f(is)g(primarily)e(concerned)18
1872 b(with)d(the)h(details)f(of)g(ho)o(w)0 1636 y(the)j(APHID)f(algorithm)d
1873 (op)q(erates,)19 b(and)e(ho)o(w)f(the)i(library)e(in)o(tegrates)i(with)
1874 e(an)h(existing)g(sequen)o(tial)g Fj(\013\014)i Fk(algorithm.)0
1875 1685 y(Section)11 b(4)g(describ)q(es)i(the)e(results)h(of)f(in)o
1876 (tegrating)f(the)h(library)g(in)o(to)f(three)i(di\013eren)o(t)g
1877 (game-pla)o(ying)c(programs:)15 b Ff(Key)m(ano)0 1735
1878 y Fk(\(Othello\),)h Ff(TheTurk)h Fk(\(c)o(hess\),)i(and)d
1879 Ff(Chinook)h Fk(\(c)o(hec)o(k)o(ers\).)28 b(Section)17
1880 b(5)f(describ)q(es)i(some)e(conclusions)g(that)h(can)f(b)q(e)0
1881 1785 y(dra)o(wn)f(from)e(the)i(exp)q(erimen)o(ts,)g(and)f(a)h(glimpse)e
1882 (at)h(some)g(of)g(the)i(things)e(w)o(e)h(in)o(tend)g(on)f(impro)o(ving)
1883 e(b)q(efore)k(APHID's)0 1835 y(general)e(release.)0 1972
1884 y Fl(2)67 b(Previous)23 b(W)-6 b(ork)0 2063 y Fk(This)14
1885 b(section)g(is)g(divided)g(in)o(to)f(t)o(w)o(o)g(subsections,)i
1886 (discussing)g(sequen)o(tial)f(and)f(parallel)g(searc)o(h)i(metho)q(ds.)
1887 0 2179 y Fv(2.1)56 b(Sequen)n(tial)17 b(Game-T)-5 b(ree)16
1888 b(Searc)n(h)0 2256 y Fk(Most)g(common)d(games)i(of)g(though)o(t)h
1889 (\(suc)o(h)h(as)f(c)o(hec)o(k)o(ers,)i(c)o(hess,)f(Othello)f(and)g
1890 (Go\))f(\014t)h(in)o(to)f(the)i(class)f(of)f(t)o(w)o(o-pla)o(y)o(er,)0
1891 2306 y(zero-sum)d(games)g(with)g(p)q(erfect)i(information.)h(Giv)o(en)d
1892 (su\016cien)o(t)h(time)e(and)h(assuming)f(that)i(b)q(oth)f(pla)o(y)o
1893 (ers)h(w)o(an)o(t)f(to)g(win)0 2355 y(the)i(game,)d(it)i(is)h(easy)f
1894 (to)g(determine)h(a)f(b)q(est)h(mo)o(v)o(e)e(in)h(an)o(y)g(p)q
1895 (osition,)f(and)h(determine)g(whether)i(or)e(not)h(an)o(y)e(p)q
1896 (osition)h(is)0 2405 y(a)h(win,)f(loss)g(or)h(dra)o(w.)62
1897 2455 y(An)h(initial)d(p)q(osition)i(in)g(a)g(game,)e(and)i(all)f(of)h
1898 (its)g(p)q(ossible)h(outcomes,)f(can)g(b)q(e)h(represen)o(ted)i(as)e(a)
1899 f(game-tree.)19 b(Eac)o(h)0 2505 y(no)q(de)d(in)f(the)h(game-tree)f
1900 (represen)o(ts)j(a)e(p)q(osition)f(within)f(the)i(game.)22
1901 b(Eac)o(h)16 b(arc)g(joining)e(a)h(no)q(de)h(at)f(lev)o(el)g
1902 Fj(l)i Fk(to)e(a)h(no)q(de)0 2555 y(at)d(lev)o(el)g Fj(l)c
1903 Fk(+)g(1)k(represen)o(ts)j(the)e(mo)o(v)o(e)d(required)j(to)g(reac)o(h)
1904 g(the)g(successor)h(p)q(osition.)j(The)13 b(v)n(arious)g(lev)o(els)g
1905 (in)g(the)h(tree)h(are)0 2604 y(called)g Fi(plies)h Fk(b)o(y)f
1906 (game-tree)h(researc)o(hers,)i(where)f(ply)e(0)h(is)f(the)i(curren)o(t)
1907 g(p)q(osition)e(in)g(the)i(game,)d(ply)h(1)g(consists)i(of)e(all)p
1908 0 2639 780 2 v 46 2666 a Fd(1)64 2678 y Fg(An)c(aphid)f(is)i(a)f
1909 (soft-b)q(o)q(died)e(insect)h(that)g(suc)o(ks)h(the)g(sap)g(from)f
1910 (plan)o(ts.)965 2790 y Fk(2)p eop
1913 10988180 9472573 7433338 16642785 31838371 37627166 startTexFig
1915 %%BeginDocument: candid21.ps
1920 /IdrawDict 51 dict def
1924 dup dup findfont dup length dict begin
1925 { 1 index /FID ne { def }{ pop pop } ifelse } forall
1926 /Encoding ISOLatin1Encoding def
1927 currentdict end definefont
1930 /ISOLatin1Encoding [
1931 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1932 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1933 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1934 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1935 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
1936 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
1937 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
1938 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
1939 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
1940 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
1941 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
1942 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1943 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
1944 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
1945 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
1946 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
1947 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
1948 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
1949 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
1950 /guillemotright/onequarter/onehalf/threequarters/questiondown
1951 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
1952 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
1953 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
1954 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
1955 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
1956 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
1957 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
1958 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
1959 /yacute/thorn/ydieresis
1961 /Helvetica-Bold reencodeISO def
1964 /numGraphicParameters 17 def
1965 /stringLimit 65535 def
1969 numGraphicParameters dict begin
1978 dup type /nulltype eq {
1980 false /brushRightArrow idef
1981 false /brushLeftArrow idef
1982 true /brushNone idef
1984 /brushDashOffset idef
1985 /brushDashArray idef
1986 0 ne /brushRightArrow idef
1987 0 ne /brushLeftArrow idef
1989 false /brushNone idef
2011 dup type /nulltype eq {
2012 pop true /patternNone idef
2015 /patternGrayLevel idef
2018 /patternGrayLevel idef
2020 false /patternNone idef
2029 0 0 0 0 0 0 1 1 true subspline
2031 0 0 0 0 1 1 2 2 false subspline
2034 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
2036 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
2038 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
2039 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
2040 brushNone not { istroke } if
2042 n 2 sub dup n 1 sub dup rightarrow
2045 } dup 0 4 dict put def
2050 patternNone not { ifill } if
2051 brushNone not { istroke } if
2059 n 1 sub dup 0 0 1 1 2 2 true subspline
2062 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
2064 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
2065 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
2066 patternNone not { ifill } if
2067 brushNone not { istroke } if
2072 } dup 0 4 dict put def
2081 patternNone not { ifill } if
2082 brushNone not { istroke } if
2084 } dup 0 1 dict put def
2090 x 0 get y 0 get moveto
2091 x 1 get y 1 get lineto
2092 brushNone not { istroke } if
2096 } dup 0 4 dict put def
2103 x 0 get y 0 get moveto
2106 x i get y i get lineto
2108 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
2109 brushNone not { istroke } if
2111 n 2 sub dup n 1 sub dup rightarrow
2114 } dup 0 4 dict put def
2123 patternNone not { ifill } if
2124 brushNone not { istroke } if
2139 patternNone not { ifill } if
2140 brushNone not { istroke } if
2142 } dup 0 4 dict put def
2149 dup where { pop pop pop } { exch def } ifelse
2155 patternGrayLevel -1 ne {
2156 fgred bgred fgred sub patternGrayLevel mul add
2157 fggreen bggreen fggreen sub patternGrayLevel mul add
2158 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
2162 originalCTM setmatrix
2163 pathbbox /t exch def /r exch def /b exch def /l exch def
2164 /w r l sub ceiling cvi def
2165 /h t b sub ceiling cvi def
2166 /imageByteWidth w 8 div ceiling cvi def
2168 bgred bggreen bgblue setrgbcolor
2170 fgred fggreen fgblue setrgbcolor
2172 l b translate w h scale
2173 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
2178 } dup 0 8 dict put def
2182 brushDashOffset -1 eq {
2186 brushDashArray brushDashOffset setdash
2187 fgred fggreen fgblue setrgbcolor
2189 brushWidth setlinewidth
2190 originalCTM setmatrix
2198 fgred fggreen fgblue setrgbcolor
2199 /fontDict printFont printSize scalefont dup setfont def
2200 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
2201 transform exch pop def
2202 /vertoffset 1 printSize sub descender sub def {
2203 0 vertoffset moveto show
2204 /vertoffset vertoffset printSize sub def
2208 } dup 0 3 dict put def
2211 /patternByteLength patternString length def
2212 /patternHeight patternByteLength 8 mul sqrt cvi def
2213 /patternWidth patternHeight def
2214 /patternByteWidth patternWidth 8 idiv def
2215 /imageByteMaxLength imageByteWidth imageHeight mul
2216 stringLimit patternByteWidth sub min def
2217 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
2218 patternHeight mul patternHeight max def
2219 /imageHeight imageHeight imageMaxHeight sub store
2220 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
2221 0 1 imageMaxHeight 1 sub {
2223 /patternRow y patternByteWidth mul patternByteLength mod def
2224 /patternRowString patternString patternRow patternByteWidth getinterval def
2225 /imageRow y imageByteWidth mul def
2226 0 patternByteWidth imageByteWidth 1 sub {
2228 imageString imageRow x add patternRowString putinterval
2233 } dup 0 12 dict put def
2236 dup 3 2 roll dup 4 3 roll lt { exch } if pop
2240 dup 3 2 roll dup 4 3 roll gt { exch } if pop
2252 } dup 0 4 dict put def
2260 x0 2 mul x1 add 3 div
2261 y0 2 mul y1 add 3 div
2263 } dup 0 4 dict put def
2267 /movetoNeeded exch def
2268 y exch get /y3 exch def
2269 x exch get /x3 exch def
2270 y exch get /y2 exch def
2271 x exch get /x2 exch def
2272 y exch get /y1 exch def
2273 x exch get /x1 exch def
2274 y exch get /y0 exch def
2275 x exch get /x0 exch def
2276 x1 y1 x2 y2 thirdpoint
2279 x2 y2 x1 y1 thirdpoint
2282 x1 y1 x0 y0 thirdpoint
2286 x2 y2 x3 y3 thirdpoint
2290 movetoNeeded { p0x p0y moveto } if
2291 p1x p1y p2x p2y p3x p3y curveto
2293 } dup 0 17 dict put def
2307 fgred fggreen fgblue setrgbcolor
2308 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
2312 dup 3 -1 roll dup 4 1 roll exch
2316 exch dup 3 1 roll exch lineto
2319 bgred bggreen bgblue setrgbcolor
2325 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
2331 transform originalCTM itransform
2334 transform originalCTM itransform
2337 /dy tipy taily sub def
2338 /dx tipx tailx sub def
2339 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
2341 originalCTM setmatrix
2345 arrowHeight neg arrowWidth 2 div moveto
2347 arrowHeight neg arrowWidth 2 div neg lineto
2349 originalCTM setmatrix
2350 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
2352 /padtail brushWidth 2 div def
2356 arrowHeight padtip add padtail add arrowHeight div dup scale
2361 originalCTM setmatrix
2369 } dup 0 9 dict put def
2373 arrowHeight neg arrowWidth 2 div moveto
2375 arrowHeight neg arrowWidth 2 div neg lineto
2380 y exch get /taily exch def
2381 x exch get /tailx exch def
2382 y exch get /tipy exch def
2383 x exch get /tipx exch def
2384 brushLeftArrow { tipx tipy tailx taily arrowhead } if
2386 } dup 0 4 dict put def
2390 y exch get /tipy exch def
2391 x exch get /tipx exch def
2392 y exch get /taily exch def
2393 x exch get /tailx exch def
2394 brushRightArrow { tipx tipy tailx taily arrowhead } if
2396 } dup 0 4 dict put def
2399 %I Idraw 10 Grid 4.98316 4.98316
2409 [ 0.799705 0 0 0.799705 0 0 ] concat
2410 /originalCTM matrix currentmatrix def
2419 [ 1 0 0 1 -30 -210 ] concat
2430 [ 1 -0 -0 1 174 230 ] concat
2432 100 483 100 433 Line
2445 [ 1 -0 -0 1 174 230 ] concat
2447 100 433 100 423 Line
2460 [ 1 -0 -0 1 174 230 ] concat
2462 120 483 120 423 Line
2475 [ 1 -0 -0 1 174 230 ] concat
2490 [ 1 -0 -0 1 174 230 ] concat
2505 [ 1 0 0 1 130 -210 ] concat
2516 [ 1 -0 -0 1 174 230 ] concat
2518 100 483 100 433 Line
2531 [ 1 -0 -0 1 174 230 ] concat
2533 100 433 100 423 Line
2546 [ 1 -0 -0 1 174 230 ] concat
2548 120 483 120 423 Line
2561 [ 1 -0 -0 1 174 230 ] concat
2576 [ 1 -0 -0 1 174 230 ] concat
2591 [ 1 0 0 1 209 -210 ] concat
2602 [ 1 -0 -0 1 174 230 ] concat
2604 100 483 100 433 Line
2617 [ 1 -0 -0 1 174 230 ] concat
2619 100 433 100 423 Line
2632 [ 1 -0 -0 1 174 230 ] concat
2634 120 483 120 423 Line
2647 [ 1 -0 -0 1 174 230 ] concat
2662 [ 1 -0 -0 1 174 230 ] concat
2677 [ 1 0 0 1 -110 -314 ] concat
2688 [ 1 -0 -0 1 174 230 ] concat
2690 100 483 100 433 Line
2703 [ 1 -0 -0 1 174 230 ] concat
2705 100 433 100 423 Line
2718 [ 1 -0 -0 1 174 230 ] concat
2720 120 483 120 423 Line
2733 [ 1 -0 -0 1 174 230 ] concat
2748 [ 1 -0 -0 1 174 230 ] concat
2763 [ 1 0 0 1 50 -314 ] concat
2774 [ 1 -0 -0 1 174 230 ] concat
2776 100 483 100 433 Line
2789 [ 1 -0 -0 1 174 230 ] concat
2791 100 433 100 423 Line
2804 [ 1 -0 -0 1 174 230 ] concat
2806 120 483 120 423 Line
2819 [ 1 -0 -0 1 174 230 ] concat
2834 [ 1 -0 -0 1 174 230 ] concat
2849 [ 1 0 0 1 209 -314 ] concat
2860 [ 1 -0 -0 1 174 230 ] concat
2862 100 483 100 433 Line
2875 [ 1 -0 -0 1 174 230 ] concat
2877 100 433 100 423 Line
2890 [ 1 -0 -0 1 174 230 ] concat
2892 120 483 120 423 Line
2905 [ 1 -0 -0 1 174 230 ] concat
2920 [ 1 -0 -0 1 174 230 ] concat
2935 [ 1 0 0 1 289 -314 ] concat
2946 [ 1 -0 -0 1 174 230 ] concat
2948 100 483 100 433 Line
2961 [ 1 -0 -0 1 174 230 ] concat
2963 100 433 100 423 Line
2976 [ 1 -0 -0 1 174 230 ] concat
2978 120 483 120 423 Line
2991 [ 1 -0 -0 1 174 230 ] concat
3006 [ 1 -0 -0 1 174 230 ] concat
3029 [ 1 0 0 1 90 0 ] concat
3040 [ 1 -0 -0 1 174 230 ] concat
3042 100 483 100 433 Line
3055 [ 1 -0 -0 1 174 230 ] concat
3057 100 433 100 423 Line
3070 [ 1 -0 -0 1 174 230 ] concat
3072 120 483 120 423 Line
3085 [ 1 -0 -0 1 174 230 ] concat
3100 [ 1 -0 -0 1 174 230 ] concat
3117 [ 1 -0 -0 1 290 326 ] concat
3129 [ 1 0 0 1 83 113 ] concat
3140 [ 1 -0 -0 1 174 230 ] concat
3142 145 348 130 333 Line
3155 [ 1 -0 -0 1 144 230 ] concat
3157 160 348 175 333 Line
3170 [ 1 0 0 1 62 113 ] concat
3181 [ 1 -0 -0 1 174 230 ] concat
3183 145 348 130 333 Line
3196 [ 1 -0 -0 1 144 230 ] concat
3198 160 348 175 333 Line
3211 [ 1 0 0 1 42 134 ] concat
3222 [ 1 -0 -0 1 174 230 ] concat
3224 145 348 130 333 Line
3237 [ 1 -0 -0 1 144 230 ] concat
3239 160 348 175 333 Line
3254 [ 1 -0 -0 1 248 325 ] concat
3268 [ 1 -0 -0 1 248 345 ] concat
3290 [ 1 0 0 1 -70 -105 ] concat
3301 [ 1 -0 -0 1 174 230 ] concat
3303 100 483 100 433 Line
3316 [ 1 -0 -0 1 174 230 ] concat
3318 100 433 100 423 Line
3331 [ 1 -0 -0 1 174 230 ] concat
3333 120 483 120 423 Line
3346 [ 1 -0 -0 1 174 230 ] concat
3361 [ 1 -0 -0 1 174 230 ] concat
3376 [ 1 0 0 1 -98 28 ] concat
3387 [ 1 -0 -0 1 174 230 ] concat
3389 145 348 130 333 Line
3402 [ 1 -0 -0 1 144 230 ] concat
3404 160 348 175 333 Line
3417 [ 1 0 0 1 -160 -105 ] concat
3426 [ 1 0 0 1 90 0 ] concat
3437 [ 1 -0 -0 1 174 230 ] concat
3439 100 483 100 433 Line
3452 [ 1 -0 -0 1 174 230 ] concat
3454 100 433 100 423 Line
3467 [ 1 -0 -0 1 174 230 ] concat
3469 120 483 120 423 Line
3482 [ 1 -0 -0 1 174 230 ] concat
3497 [ 1 -0 -0 1 174 230 ] concat
3514 [ 1 -0 -0 1 290 326 ] concat
3526 [ 1 0 0 1 83 113 ] concat
3537 [ 1 -0 -0 1 174 230 ] concat
3539 145 348 130 333 Line
3552 [ 1 -0 -0 1 144 230 ] concat
3554 160 348 175 333 Line
3567 [ 1 0 0 1 62 113 ] concat
3578 [ 1 -0 -0 1 174 230 ] concat
3580 145 348 130 333 Line
3593 [ 1 -0 -0 1 144 230 ] concat
3595 160 348 175 333 Line
3608 [ 1 0 0 1 42 134 ] concat
3619 [ 1 -0 -0 1 174 230 ] concat
3621 145 348 130 333 Line
3634 [ 1 -0 -0 1 144 230 ] concat
3636 160 348 175 333 Line
3651 [ 1 -0 -0 1 248 325 ] concat
3665 [ 1 -0 -0 1 248 345 ] concat
3689 [ 1 0 0 1 90 -105 ] concat
3700 [ 1 -0 -0 1 174 230 ] concat
3702 100 483 100 433 Line
3715 [ 1 -0 -0 1 174 230 ] concat
3717 100 433 100 423 Line
3730 [ 1 -0 -0 1 174 230 ] concat
3732 120 483 120 423 Line
3745 [ 1 -0 -0 1 174 230 ] concat
3760 [ 1 -0 -0 1 174 230 ] concat
3775 [ 1 0 0 1 83 28 ] concat
3786 [ 1 -0 -0 1 174 230 ] concat
3788 145 348 130 333 Line
3801 [ 1 -0 -0 1 144 230 ] concat
3803 160 348 175 333 Line
3816 [ 1 0 0 1 0 -105 ] concat
3825 [ 1 0 0 1 90 0 ] concat
3836 [ 1 -0 -0 1 174 230 ] concat
3838 100 483 100 433 Line
3851 [ 1 -0 -0 1 174 230 ] concat
3853 100 433 100 423 Line
3866 [ 1 -0 -0 1 174 230 ] concat
3868 120 483 120 423 Line
3881 [ 1 -0 -0 1 174 230 ] concat
3896 [ 1 -0 -0 1 174 230 ] concat
3913 [ 1 -0 -0 1 290 326 ] concat
3925 [ 1 0 0 1 83 113 ] concat
3936 [ 1 -0 -0 1 174 230 ] concat
3938 145 348 130 333 Line
3951 [ 1 -0 -0 1 144 230 ] concat
3953 160 348 175 333 Line
3966 [ 1 0 0 1 62 113 ] concat
3977 [ 1 -0 -0 1 174 230 ] concat
3979 145 348 130 333 Line
3992 [ 1 -0 -0 1 144 230 ] concat
3994 160 348 175 333 Line
4007 [ 1 0 0 1 42 134 ] concat
4018 [ 1 -0 -0 1 174 230 ] concat
4020 145 348 130 333 Line
4033 [ 1 -0 -0 1 144 230 ] concat
4035 160 348 175 333 Line
4050 [ 1 -0 -0 1 248 325 ] concat
4064 [ 1 -0 -0 1 248 345 ] concat
4088 [ 1 0 0 1 249 -105 ] concat
4099 [ 1 -0 -0 1 174 230 ] concat
4101 100 483 100 433 Line
4114 [ 1 -0 -0 1 174 230 ] concat
4116 100 433 100 423 Line
4129 [ 1 -0 -0 1 174 230 ] concat
4131 120 483 120 423 Line
4144 [ 1 -0 -0 1 174 230 ] concat
4159 [ 1 -0 -0 1 174 230 ] concat
4174 [ 1 0 0 1 221 -12 ] concat
4185 [ 1 -0 -0 1 174 230 ] concat
4187 145 348 130 333 Line
4200 [ 1 -0 -0 1 144 230 ] concat
4202 160 348 175 333 Line
4215 [ 1 0 0 1 159 -105 ] concat
4224 [ 1 0 0 1 90 0 ] concat
4235 [ 1 -0 -0 1 174 230 ] concat
4237 100 483 100 433 Line
4250 [ 1 -0 -0 1 174 230 ] concat
4252 100 433 100 423 Line
4265 [ 1 -0 -0 1 174 230 ] concat
4267 120 483 120 423 Line
4280 [ 1 -0 -0 1 174 230 ] concat
4295 [ 1 -0 -0 1 174 230 ] concat
4312 [ 1 -0 -0 1 290 326 ] concat
4324 [ 1 0 0 1 83 113 ] concat
4335 [ 1 -0 -0 1 174 230 ] concat
4337 145 348 130 333 Line
4350 [ 1 -0 -0 1 144 230 ] concat
4352 160 348 175 333 Line
4365 [ 1 0 0 1 62 113 ] concat
4376 [ 1 -0 -0 1 174 230 ] concat
4378 145 348 130 333 Line
4391 [ 1 -0 -0 1 144 230 ] concat
4393 160 348 175 333 Line
4406 [ 1 0 0 1 42 134 ] concat
4417 [ 1 -0 -0 1 174 230 ] concat
4419 145 348 130 333 Line
4432 [ 1 -0 -0 1 144 230 ] concat
4434 160 348 175 333 Line
4449 [ 1 -0 -0 1 248 325 ] concat
4463 [ 1 -0 -0 1 248 345 ] concat
4479 [ 1 0 0 1 23 -222 ] concat
4490 [ 1 -0 -0 1 174 230 ] concat
4492 145 348 130 333 Line
4505 [ 1 -0 -0 1 144 230 ] concat
4507 160 348 175 333 Line
4520 [ 1 0 0 1 -138 -222 ] concat
4531 [ 1 -0 -0 1 174 230 ] concat
4533 145 348 130 333 Line
4546 [ 1 -0 -0 1 144 230 ] concat
4548 160 348 175 333 Line
4561 [ 1 0 0 1 261 -182 ] concat
4572 [ 1 -0 -0 1 174 230 ] concat
4574 145 348 130 333 Line
4587 [ 1 -0 -0 1 144 230 ] concat
4589 160 348 175 333 Line
4610 [ 1 0 0 1 -110 -210 ] concat
4621 [ 1 -0 -0 1 174 230 ] concat
4623 100 483 100 433 Line
4636 [ 1 -0 -0 1 174 230 ] concat
4638 100 433 100 423 Line
4651 [ 1 -0 -0 1 174 230 ] concat
4653 120 483 120 423 Line
4666 [ 1 -0 -0 1 174 230 ] concat
4681 [ 1 -0 -0 1 174 230 ] concat
4698 [ 1 -0 -0 1 89 156 ] concat
4710 [ 1 0 0 1 -40 -105 ] concat
4719 [ 1 0 0 1 -70 -105 ] concat
4730 [ 1 -0 -0 1 174 230 ] concat
4732 100 483 100 433 Line
4745 [ 1 -0 -0 1 174 230 ] concat
4747 100 433 100 423 Line
4760 [ 1 -0 -0 1 174 230 ] concat
4762 120 483 120 423 Line
4775 [ 1 -0 -0 1 174 230 ] concat
4790 [ 1 -0 -0 1 174 230 ] concat
4805 [ 1 0 0 1 -98 28 ] concat
4816 [ 1 -0 -0 1 174 230 ] concat
4818 145 348 130 333 Line
4831 [ 1 -0 -0 1 144 230 ] concat
4833 160 348 175 333 Line
4846 [ 1 0 0 1 -160 -105 ] concat
4855 [ 1 0 0 1 90 0 ] concat
4866 [ 1 -0 -0 1 174 230 ] concat
4868 100 483 100 433 Line
4881 [ 1 -0 -0 1 174 230 ] concat
4883 100 433 100 423 Line
4896 [ 1 -0 -0 1 174 230 ] concat
4898 120 483 120 423 Line
4911 [ 1 -0 -0 1 174 230 ] concat
4926 [ 1 -0 -0 1 174 230 ] concat
4943 [ 1 -0 -0 1 290 326 ] concat
4955 [ 1 0 0 1 83 113 ] concat
4966 [ 1 -0 -0 1 174 230 ] concat
4968 145 348 130 333 Line
4981 [ 1 -0 -0 1 144 230 ] concat
4983 160 348 175 333 Line
4996 [ 1 0 0 1 62 113 ] concat
5007 [ 1 -0 -0 1 174 230 ] concat
5009 145 348 130 333 Line
5022 [ 1 -0 -0 1 144 230 ] concat
5024 160 348 175 333 Line
5037 [ 1 0 0 1 42 134 ] concat
5048 [ 1 -0 -0 1 174 230 ] concat
5050 145 348 130 333 Line
5063 [ 1 -0 -0 1 144 230 ] concat
5065 160 348 175 333 Line
5080 [ 1 -0 -0 1 248 325 ] concat
5094 [ 1 -0 -0 1 248 345 ] concat
5112 [ 1 0 0 1 40 -105 ] concat
5121 [ 1 0 0 1 -70 -105 ] concat
5132 [ 1 -0 -0 1 174 230 ] concat
5134 100 483 100 433 Line
5147 [ 1 -0 -0 1 174 230 ] concat
5149 100 433 100 423 Line
5162 [ 1 -0 -0 1 174 230 ] concat
5164 120 483 120 423 Line
5177 [ 1 -0 -0 1 174 230 ] concat
5192 [ 1 -0 -0 1 174 230 ] concat
5207 [ 1 0 0 1 -98 28 ] concat
5218 [ 1 -0 -0 1 174 230 ] concat
5220 145 348 130 333 Line
5233 [ 1 -0 -0 1 144 230 ] concat
5235 160 348 175 333 Line
5248 [ 1 0 0 1 -160 -105 ] concat
5257 [ 1 0 0 1 90 0 ] concat
5268 [ 1 -0 -0 1 174 230 ] concat
5270 100 483 100 433 Line
5283 [ 1 -0 -0 1 174 230 ] concat
5285 100 433 100 423 Line
5298 [ 1 -0 -0 1 174 230 ] concat
5300 120 483 120 423 Line
5313 [ 1 -0 -0 1 174 230 ] concat
5328 [ 1 -0 -0 1 174 230 ] concat
5345 [ 1 -0 -0 1 290 326 ] concat
5357 [ 1 0 0 1 83 113 ] concat
5368 [ 1 -0 -0 1 174 230 ] concat
5370 145 348 130 333 Line
5383 [ 1 -0 -0 1 144 230 ] concat
5385 160 348 175 333 Line
5398 [ 1 0 0 1 62 113 ] concat
5409 [ 1 -0 -0 1 174 230 ] concat
5411 145 348 130 333 Line
5424 [ 1 -0 -0 1 144 230 ] concat
5426 160 348 175 333 Line
5439 [ 1 0 0 1 42 134 ] concat
5450 [ 1 -0 -0 1 174 230 ] concat
5452 145 348 130 333 Line
5465 [ 1 -0 -0 1 144 230 ] concat
5467 160 348 175 333 Line
5482 [ 1 -0 -0 1 248 325 ] concat
5496 [ 1 -0 -0 1 248 345 ] concat
5512 [ 1 0 0 1 40 -105 ] concat
5521 [ 1 0 0 1 90 -105 ] concat
5532 [ 1 -0 -0 1 174 230 ] concat
5534 100 483 100 433 Line
5547 [ 1 -0 -0 1 174 230 ] concat
5549 100 433 100 423 Line
5562 [ 1 -0 -0 1 174 230 ] concat
5564 120 483 120 423 Line
5577 [ 1 -0 -0 1 174 230 ] concat
5592 [ 1 -0 -0 1 174 230 ] concat
5607 [ 1 0 0 1 83 28 ] concat
5618 [ 1 -0 -0 1 174 230 ] concat
5620 145 348 130 333 Line
5633 [ 1 -0 -0 1 144 230 ] concat
5635 160 348 175 333 Line
5648 [ 1 0 0 1 0 -105 ] concat
5657 [ 1 0 0 1 90 0 ] concat
5668 [ 1 -0 -0 1 174 230 ] concat
5670 100 483 100 433 Line
5683 [ 1 -0 -0 1 174 230 ] concat
5685 100 433 100 423 Line
5698 [ 1 -0 -0 1 174 230 ] concat
5700 120 483 120 423 Line
5713 [ 1 -0 -0 1 174 230 ] concat
5728 [ 1 -0 -0 1 174 230 ] concat
5745 [ 1 -0 -0 1 290 326 ] concat
5757 [ 1 0 0 1 83 113 ] concat
5768 [ 1 -0 -0 1 174 230 ] concat
5770 145 348 130 333 Line
5783 [ 1 -0 -0 1 144 230 ] concat
5785 160 348 175 333 Line
5798 [ 1 0 0 1 62 113 ] concat
5809 [ 1 -0 -0 1 174 230 ] concat
5811 145 348 130 333 Line
5824 [ 1 -0 -0 1 144 230 ] concat
5826 160 348 175 333 Line
5839 [ 1 0 0 1 42 134 ] concat
5850 [ 1 -0 -0 1 174 230 ] concat
5852 145 348 130 333 Line
5865 [ 1 -0 -0 1 144 230 ] concat
5867 160 348 175 333 Line
5882 [ 1 -0 -0 1 248 325 ] concat
5896 [ 1 -0 -0 1 248 345 ] concat
5912 [ 1 0 0 1 -40 -105 ] concat
5921 [ 1 0 0 1 249 -105 ] concat
5932 [ 1 -0 -0 1 174 230 ] concat
5934 100 483 100 433 Line
5947 [ 1 -0 -0 1 174 230 ] concat
5949 100 433 100 423 Line
5962 [ 1 -0 -0 1 174 230 ] concat
5964 120 483 120 423 Line
5977 [ 1 -0 -0 1 174 230 ] concat
5992 [ 1 -0 -0 1 174 230 ] concat
6007 [ 1 0 0 1 221 -12 ] concat
6018 [ 1 -0 -0 1 174 230 ] concat
6020 145 348 130 333 Line
6033 [ 1 -0 -0 1 144 230 ] concat
6035 160 348 175 333 Line
6048 [ 1 0 0 1 159 -105 ] concat
6057 [ 1 0 0 1 90 0 ] concat
6068 [ 1 -0 -0 1 174 230 ] concat
6070 100 483 100 433 Line
6083 [ 1 -0 -0 1 174 230 ] concat
6085 100 433 100 423 Line
6098 [ 1 -0 -0 1 174 230 ] concat
6100 120 483 120 423 Line
6113 [ 1 -0 -0 1 174 230 ] concat
6128 [ 1 -0 -0 1 174 230 ] concat
6145 [ 1 -0 -0 1 290 326 ] concat
6157 [ 1 0 0 1 83 113 ] concat
6168 [ 1 -0 -0 1 174 230 ] concat
6170 145 348 130 333 Line
6183 [ 1 -0 -0 1 144 230 ] concat
6185 160 348 175 333 Line
6198 [ 1 0 0 1 62 113 ] concat
6209 [ 1 -0 -0 1 174 230 ] concat
6211 145 348 130 333 Line
6224 [ 1 -0 -0 1 144 230 ] concat
6226 160 348 175 333 Line
6239 [ 1 0 0 1 42 134 ] concat
6250 [ 1 -0 -0 1 174 230 ] concat
6252 145 348 130 333 Line
6265 [ 1 -0 -0 1 144 230 ] concat
6267 160 348 175 333 Line
6282 [ 1 -0 -0 1 248 325 ] concat
6296 [ 1 -0 -0 1 248 345 ] concat
6314 [ 1 -0 -0 1 149 115 ] concat
6334 [ 1 0 0 1 50 -210 ] concat
6345 [ 1 -0 -0 1 174 230 ] concat
6347 100 483 100 433 Line
6360 [ 1 -0 -0 1 174 230 ] concat
6362 100 433 100 423 Line
6375 [ 1 -0 -0 1 174 230 ] concat
6377 120 483 120 423 Line
6390 [ 1 -0 -0 1 174 230 ] concat
6405 [ 1 -0 -0 1 174 230 ] concat
6420 [ 1 0 0 1 -40 -105 ] concat
6429 [ 1 0 0 1 90 -105 ] concat
6440 [ 1 -0 -0 1 174 230 ] concat
6442 100 483 100 433 Line
6455 [ 1 -0 -0 1 174 230 ] concat
6457 100 433 100 423 Line
6470 [ 1 -0 -0 1 174 230 ] concat
6472 120 483 120 423 Line
6485 [ 1 -0 -0 1 174 230 ] concat
6500 [ 1 -0 -0 1 174 230 ] concat
6515 [ 1 0 0 1 83 28 ] concat
6526 [ 1 -0 -0 1 174 230 ] concat
6528 145 348 130 333 Line
6541 [ 1 -0 -0 1 144 230 ] concat
6543 160 348 175 333 Line
6556 [ 1 0 0 1 0 -105 ] concat
6565 [ 1 0 0 1 90 0 ] concat
6576 [ 1 -0 -0 1 174 230 ] concat
6578 100 483 100 433 Line
6591 [ 1 -0 -0 1 174 230 ] concat
6593 100 433 100 423 Line
6606 [ 1 -0 -0 1 174 230 ] concat
6608 120 483 120 423 Line
6621 [ 1 -0 -0 1 174 230 ] concat
6636 [ 1 -0 -0 1 174 230 ] concat
6653 [ 1 -0 -0 1 290 326 ] concat
6665 [ 1 0 0 1 83 113 ] concat
6676 [ 1 -0 -0 1 174 230 ] concat
6678 145 348 130 333 Line
6691 [ 1 -0 -0 1 144 230 ] concat
6693 160 348 175 333 Line
6706 [ 1 0 0 1 62 113 ] concat
6717 [ 1 -0 -0 1 174 230 ] concat
6719 145 348 130 333 Line
6732 [ 1 -0 -0 1 144 230 ] concat
6734 160 348 175 333 Line
6747 [ 1 0 0 1 42 134 ] concat
6758 [ 1 -0 -0 1 174 230 ] concat
6760 145 348 130 333 Line
6773 [ 1 -0 -0 1 144 230 ] concat
6775 160 348 175 333 Line
6790 [ 1 -0 -0 1 248 325 ] concat
6804 [ 1 -0 -0 1 248 345 ] concat
6822 [ 1 -0 -0 1 229 155 ] concat
6838 [ 1 -0 -0 1 309 115 ] concat
6852 [ 1 -0 -0 1 388 155 ] concat
6872 [ 1 0 0 1 289 -210 ] concat
6883 [ 1 -0 -0 1 174 230 ] concat
6885 100 483 100 433 Line
6898 [ 1 -0 -0 1 174 230 ] concat
6900 100 433 100 423 Line
6913 [ 1 -0 -0 1 174 230 ] concat
6915 120 483 120 423 Line
6928 [ 1 -0 -0 1 174 230 ] concat
6943 [ 1 -0 -0 1 174 230 ] concat
6958 [ 1 0 0 1 40 -105 ] concat
6967 [ 1 0 0 1 249 -105 ] concat
6978 [ 1 -0 -0 1 174 230 ] concat
6980 100 483 100 433 Line
6993 [ 1 -0 -0 1 174 230 ] concat
6995 100 433 100 423 Line
7008 [ 1 -0 -0 1 174 230 ] concat
7010 120 483 120 423 Line
7023 [ 1 -0 -0 1 174 230 ] concat
7038 [ 1 -0 -0 1 174 230 ] concat
7053 [ 1 0 0 1 221 -12 ] concat
7064 [ 1 -0 -0 1 174 230 ] concat
7066 145 348 130 333 Line
7079 [ 1 -0 -0 1 144 230 ] concat
7081 160 348 175 333 Line
7094 [ 1 0 0 1 159 -105 ] concat
7103 [ 1 0 0 1 90 0 ] concat
7114 [ 1 -0 -0 1 174 230 ] concat
7116 100 483 100 433 Line
7129 [ 1 -0 -0 1 174 230 ] concat
7131 100 433 100 423 Line
7144 [ 1 -0 -0 1 174 230 ] concat
7146 120 483 120 423 Line
7159 [ 1 -0 -0 1 174 230 ] concat
7174 [ 1 -0 -0 1 174 230 ] concat
7191 [ 1 -0 -0 1 290 326 ] concat
7203 [ 1 0 0 1 83 113 ] concat
7214 [ 1 -0 -0 1 174 230 ] concat
7216 145 348 130 333 Line
7229 [ 1 -0 -0 1 144 230 ] concat
7231 160 348 175 333 Line
7244 [ 1 0 0 1 62 113 ] concat
7255 [ 1 -0 -0 1 174 230 ] concat
7257 145 348 130 333 Line
7270 [ 1 -0 -0 1 144 230 ] concat
7272 160 348 175 333 Line
7285 [ 1 0 0 1 42 134 ] concat
7296 [ 1 -0 -0 1 174 230 ] concat
7298 145 348 130 333 Line
7311 [ 1 -0 -0 1 144 230 ] concat
7313 160 348 175 333 Line
7328 [ 1 -0 -0 1 248 325 ] concat
7342 [ 1 -0 -0 1 248 345 ] concat
7360 [ 1 -0 -0 1 488 155 ] concat
7376 [ 1 -0 -0 1 118 226 ] concat
7378 106 227 166 227 Line
7391 [ 1 -0 -0 1 118 226 ] concat
7393 266 227 326 227 Line
7404 [ 1 0 0 1 0 -104 ] concat
7413 [ 1 0 0 1 -110 -210 ] concat
7424 [ 1 -0 -0 1 174 230 ] concat
7426 100 483 100 433 Line
7439 [ 1 -0 -0 1 174 230 ] concat
7441 100 433 100 423 Line
7454 [ 1 -0 -0 1 174 230 ] concat
7456 120 483 120 423 Line
7469 [ 1 -0 -0 1 174 230 ] concat
7484 [ 1 -0 -0 1 174 230 ] concat
7501 [ 1 -0 -0 1 89 156 ] concat
7513 [ 1 0 0 1 -40 -105 ] concat
7522 [ 1 0 0 1 -70 -105 ] concat
7533 [ 1 -0 -0 1 174 230 ] concat
7535 100 483 100 433 Line
7548 [ 1 -0 -0 1 174 230 ] concat
7550 100 433 100 423 Line
7563 [ 1 -0 -0 1 174 230 ] concat
7565 120 483 120 423 Line
7578 [ 1 -0 -0 1 174 230 ] concat
7593 [ 1 -0 -0 1 174 230 ] concat
7608 [ 1 0 0 1 -98 28 ] concat
7619 [ 1 -0 -0 1 174 230 ] concat
7621 145 348 130 333 Line
7634 [ 1 -0 -0 1 144 230 ] concat
7636 160 348 175 333 Line
7649 [ 1 0 0 1 -160 -105 ] concat
7658 [ 1 0 0 1 90 0 ] concat
7669 [ 1 -0 -0 1 174 230 ] concat
7671 100 483 100 433 Line
7684 [ 1 -0 -0 1 174 230 ] concat
7686 100 433 100 423 Line
7699 [ 1 -0 -0 1 174 230 ] concat
7701 120 483 120 423 Line
7714 [ 1 -0 -0 1 174 230 ] concat
7729 [ 1 -0 -0 1 174 230 ] concat
7746 [ 1 -0 -0 1 290 326 ] concat
7758 [ 1 0 0 1 83 113 ] concat
7769 [ 1 -0 -0 1 174 230 ] concat
7771 145 348 130 333 Line
7784 [ 1 -0 -0 1 144 230 ] concat
7786 160 348 175 333 Line
7799 [ 1 0 0 1 62 113 ] concat
7810 [ 1 -0 -0 1 174 230 ] concat
7812 145 348 130 333 Line
7825 [ 1 -0 -0 1 144 230 ] concat
7827 160 348 175 333 Line
7840 [ 1 0 0 1 42 134 ] concat
7851 [ 1 -0 -0 1 174 230 ] concat
7853 145 348 130 333 Line
7866 [ 1 -0 -0 1 144 230 ] concat
7868 160 348 175 333 Line
7883 [ 1 -0 -0 1 248 325 ] concat
7897 [ 1 -0 -0 1 248 345 ] concat
7915 [ 1 0 0 1 0 -104 ] concat
7924 [ 1 0 0 1 50 -210 ] concat
7935 [ 1 -0 -0 1 174 230 ] concat
7937 100 483 100 433 Line
7950 [ 1 -0 -0 1 174 230 ] concat
7952 100 433 100 423 Line
7965 [ 1 -0 -0 1 174 230 ] concat
7967 120 483 120 423 Line
7980 [ 1 -0 -0 1 174 230 ] concat
7995 [ 1 -0 -0 1 174 230 ] concat
8010 [ 1 0 0 1 -40 -105 ] concat
8019 [ 1 0 0 1 90 -105 ] concat
8030 [ 1 -0 -0 1 174 230 ] concat
8032 100 483 100 433 Line
8045 [ 1 -0 -0 1 174 230 ] concat
8047 100 433 100 423 Line
8060 [ 1 -0 -0 1 174 230 ] concat
8062 120 483 120 423 Line
8075 [ 1 -0 -0 1 174 230 ] concat
8090 [ 1 -0 -0 1 174 230 ] concat
8105 [ 1 0 0 1 83 28 ] concat
8116 [ 1 -0 -0 1 174 230 ] concat
8118 145 348 130 333 Line
8131 [ 1 -0 -0 1 144 230 ] concat
8133 160 348 175 333 Line
8146 [ 1 0 0 1 0 -105 ] concat
8155 [ 1 0 0 1 90 0 ] concat
8166 [ 1 -0 -0 1 174 230 ] concat
8168 100 483 100 433 Line
8181 [ 1 -0 -0 1 174 230 ] concat
8183 100 433 100 423 Line
8196 [ 1 -0 -0 1 174 230 ] concat
8198 120 483 120 423 Line
8211 [ 1 -0 -0 1 174 230 ] concat
8226 [ 1 -0 -0 1 174 230 ] concat
8243 [ 1 -0 -0 1 290 326 ] concat
8255 [ 1 0 0 1 83 113 ] concat
8266 [ 1 -0 -0 1 174 230 ] concat
8268 145 348 130 333 Line
8281 [ 1 -0 -0 1 144 230 ] concat
8283 160 348 175 333 Line
8296 [ 1 0 0 1 62 113 ] concat
8307 [ 1 -0 -0 1 174 230 ] concat
8309 145 348 130 333 Line
8322 [ 1 -0 -0 1 144 230 ] concat
8324 160 348 175 333 Line
8337 [ 1 0 0 1 42 134 ] concat
8348 [ 1 -0 -0 1 174 230 ] concat
8350 145 348 130 333 Line
8363 [ 1 -0 -0 1 144 230 ] concat
8365 160 348 175 333 Line
8380 [ 1 -0 -0 1 248 325 ] concat
8394 [ 1 -0 -0 1 248 345 ] concat
8412 [ 1 -0 -0 1 229 155 ] concat
8426 [ 1 0 0 1 -8 -112 ] concat
8435 [ 1 0 0 1 217 -202 ] concat
8446 [ 1 -0 -0 1 174 230 ] concat
8448 100 483 100 433 Line
8461 [ 1 -0 -0 1 174 230 ] concat
8463 100 433 100 423 Line
8476 [ 1 -0 -0 1 174 230 ] concat
8478 120 483 120 423 Line
8491 [ 1 -0 -0 1 174 230 ] concat
8506 [ 1 -0 -0 1 174 230 ] concat
8521 [ 1 0 0 1 -32 -97 ] concat
8530 [ 1 0 0 1 249 -105 ] concat
8541 [ 1 -0 -0 1 174 230 ] concat
8543 100 483 100 433 Line
8556 [ 1 -0 -0 1 174 230 ] concat
8558 100 433 100 423 Line
8571 [ 1 -0 -0 1 174 230 ] concat
8573 120 483 120 423 Line
8586 [ 1 -0 -0 1 174 230 ] concat
8601 [ 1 -0 -0 1 174 230 ] concat
8616 [ 1 0 0 1 221 -12 ] concat
8627 [ 1 -0 -0 1 174 230 ] concat
8629 145 348 130 333 Line
8642 [ 1 -0 -0 1 144 230 ] concat
8644 160 348 175 333 Line
8657 [ 1 0 0 1 159 -105 ] concat
8666 [ 1 0 0 1 90 0 ] concat
8677 [ 1 -0 -0 1 174 230 ] concat
8679 100 483 100 433 Line
8692 [ 1 -0 -0 1 174 230 ] concat
8694 100 433 100 423 Line
8707 [ 1 -0 -0 1 174 230 ] concat
8709 120 483 120 423 Line
8722 [ 1 -0 -0 1 174 230 ] concat
8737 [ 1 -0 -0 1 174 230 ] concat
8754 [ 1 -0 -0 1 290 326 ] concat
8766 [ 1 0 0 1 83 113 ] concat
8777 [ 1 -0 -0 1 174 230 ] concat
8779 145 348 130 333 Line
8792 [ 1 -0 -0 1 144 230 ] concat
8794 160 348 175 333 Line
8807 [ 1 0 0 1 62 113 ] concat
8818 [ 1 -0 -0 1 174 230 ] concat
8820 145 348 130 333 Line
8833 [ 1 -0 -0 1 144 230 ] concat
8835 160 348 175 333 Line
8848 [ 1 0 0 1 42 134 ] concat
8859 [ 1 -0 -0 1 174 230 ] concat
8861 145 348 130 333 Line
8874 [ 1 -0 -0 1 144 230 ] concat
8876 160 348 175 333 Line
8891 [ 1 -0 -0 1 248 325 ] concat
8905 [ 1 -0 -0 1 248 345 ] concat
8923 [ 1 -0 -0 1 396 163 ] concat
8937 [ 1 0 0 1 0 -104 ] concat
8946 [ 1 0 0 1 289 -210 ] concat
8957 [ 1 -0 -0 1 174 230 ] concat
8959 100 483 100 433 Line
8972 [ 1 -0 -0 1 174 230 ] concat
8974 100 433 100 423 Line
8987 [ 1 -0 -0 1 174 230 ] concat
8989 120 483 120 423 Line
9002 [ 1 -0 -0 1 174 230 ] concat
9017 [ 1 -0 -0 1 174 230 ] concat
9032 [ 1 0 0 1 40 -105 ] concat
9041 [ 1 0 0 1 249 -105 ] concat
9052 [ 1 -0 -0 1 174 230 ] concat
9054 100 483 100 433 Line
9067 [ 1 -0 -0 1 174 230 ] concat
9069 100 433 100 423 Line
9082 [ 1 -0 -0 1 174 230 ] concat
9084 120 483 120 423 Line
9097 [ 1 -0 -0 1 174 230 ] concat
9112 [ 1 -0 -0 1 174 230 ] concat
9127 [ 1 0 0 1 221 -12 ] concat
9138 [ 1 -0 -0 1 174 230 ] concat
9140 145 348 130 333 Line
9153 [ 1 -0 -0 1 144 230 ] concat
9155 160 348 175 333 Line
9168 [ 1 0 0 1 159 -105 ] concat
9177 [ 1 0 0 1 90 0 ] concat
9188 [ 1 -0 -0 1 174 230 ] concat
9190 100 483 100 433 Line
9203 [ 1 -0 -0 1 174 230 ] concat
9205 100 433 100 423 Line
9218 [ 1 -0 -0 1 174 230 ] concat
9220 120 483 120 423 Line
9233 [ 1 -0 -0 1 174 230 ] concat
9248 [ 1 -0 -0 1 174 230 ] concat
9265 [ 1 -0 -0 1 290 326 ] concat
9277 [ 1 0 0 1 83 113 ] concat
9288 [ 1 -0 -0 1 174 230 ] concat
9290 145 348 130 333 Line
9303 [ 1 -0 -0 1 144 230 ] concat
9305 160 348 175 333 Line
9318 [ 1 0 0 1 62 113 ] concat
9329 [ 1 -0 -0 1 174 230 ] concat
9331 145 348 130 333 Line
9344 [ 1 -0 -0 1 144 230 ] concat
9346 160 348 175 333 Line
9359 [ 1 0 0 1 42 134 ] concat
9370 [ 1 -0 -0 1 174 230 ] concat
9372 145 348 130 333 Line
9385 [ 1 -0 -0 1 144 230 ] concat
9387 160 348 175 333 Line
9402 [ 1 -0 -0 1 248 325 ] concat
9416 [ 1 -0 -0 1 248 345 ] concat
9434 [ 1 -0 -0 1 488 155 ] concat
9448 [ 1 0 0 1 201 -182 ] concat
9459 [ 1 -0 -0 1 174 230 ] concat
9461 145 348 130 333 Line
9474 [ 1 -0 -0 1 144 230 ] concat
9476 160 348 175 333 Line
9491 [ 1 -0 -0 1 118 226 ] concat
9506 [ 1 -0 -0 1 222 226 ] concat
9508 351 173 351 113 Line
9521 [ 1 -0 -0 1 174 230 ] concat
9536 [ 1 -0 -0 1 174 230 ] concat
9538 200 418 200 383 Line
9551 [ 1 -0 -0 1 174 230 ] concat
9553 220 418 359 383 Line
9566 [ 1 -0 -0 1 122 230 ] concat
9581 [ 1 -0 -0 1 122 230 ] concat
9596 [ 1 -0 -0 1 122 230 ] concat
9598 102 313 132 278 Line
9611 [ 1 -0 -0 1 122 230 ] concat
9613 212 278 242 313 Line
9626 [ 1 -0 -0 1 122 230 ] concat
9628 262 313 292 278 Line
9641 [ 1 -0 -0 1 122 230 ] concat
9643 212 209 212 174 Line
9656 [ 1 -0 -0 1 226 230 ] concat
9658 297 313 267 278 Line
9671 [ 1 -0 -0 1 226 230 ] concat
9673 317 313 347 278 Line
9686 [ 1 -0 -0 1 226 230 ] concat
9688 267 209 267 174 Line
9701 [ 1 -0 -0 1 226 230 ] concat
9703 347 209 347 174 Line
9710 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
9711 Helvetica-Bold 14 SetF
9713 [ 1 0 0 1 169 332 ] concat
9723 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
9724 Helvetica-Bold 14 SetF
9726 [ 1 0 0 1 249 437 ] concat
9736 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
9737 Helvetica-Bold 14 SetF
9739 [ 1 0 0 1 329 332 ] concat
9749 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
9750 Helvetica-Bold 14 SetF
9752 [ 1 0 0 1 409 437 ] concat
9762 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
9763 Helvetica-Bold 14 SetF
9765 [ 1 0 0 1 488 332 ] concat
9775 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
9776 Helvetica-Bold 14 SetF
9778 [ 1 0 0 1 568 332 ] concat
9795 10988180 9472573 7367557 16577003 31838371 37627166 startTexFig
9797 %%BeginDocument: candid22.ps
9802 /IdrawDict 51 dict def
9806 dup dup findfont dup length dict begin
9807 { 1 index /FID ne { def }{ pop pop } ifelse } forall
9808 /Encoding ISOLatin1Encoding def
9809 currentdict end definefont
9812 /ISOLatin1Encoding [
9813 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
9814 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
9815 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
9816 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
9817 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
9818 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
9819 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
9820 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
9821 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
9822 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
9823 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
9824 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
9825 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
9826 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
9827 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
9828 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
9829 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
9830 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
9831 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
9832 /guillemotright/onequarter/onehalf/threequarters/questiondown
9833 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
9834 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
9835 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
9836 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
9837 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
9838 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
9839 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
9840 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
9841 /yacute/thorn/ydieresis
9843 /Helvetica-Bold reencodeISO def
9846 /numGraphicParameters 17 def
9847 /stringLimit 65535 def
9851 numGraphicParameters dict begin
9860 dup type /nulltype eq {
9862 false /brushRightArrow idef
9863 false /brushLeftArrow idef
9864 true /brushNone idef
9866 /brushDashOffset idef
9867 /brushDashArray idef
9868 0 ne /brushRightArrow idef
9869 0 ne /brushLeftArrow idef
9871 false /brushNone idef
9893 dup type /nulltype eq {
9894 pop true /patternNone idef
9897 /patternGrayLevel idef
9900 /patternGrayLevel idef
9902 false /patternNone idef
9911 0 0 0 0 0 0 1 1 true subspline
9913 0 0 0 0 1 1 2 2 false subspline
9916 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
9918 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
9920 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
9921 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
9922 brushNone not { istroke } if
9924 n 2 sub dup n 1 sub dup rightarrow
9927 } dup 0 4 dict put def
9932 patternNone not { ifill } if
9933 brushNone not { istroke } if
9941 n 1 sub dup 0 0 1 1 2 2 true subspline
9944 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
9946 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
9947 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
9948 patternNone not { ifill } if
9949 brushNone not { istroke } if
9954 } dup 0 4 dict put def
9963 patternNone not { ifill } if
9964 brushNone not { istroke } if
9966 } dup 0 1 dict put def
9972 x 0 get y 0 get moveto
9973 x 1 get y 1 get lineto
9974 brushNone not { istroke } if
9978 } dup 0 4 dict put def
9985 x 0 get y 0 get moveto
9988 x i get y i get lineto
9990 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
9991 brushNone not { istroke } if
9993 n 2 sub dup n 1 sub dup rightarrow
9996 } dup 0 4 dict put def
10005 patternNone not { ifill } if
10006 brushNone not { istroke } if
10021 patternNone not { ifill } if
10022 brushNone not { istroke } if
10024 } dup 0 4 dict put def
10031 dup where { pop pop pop } { exch def } ifelse
10037 patternGrayLevel -1 ne {
10038 fgred bgred fgred sub patternGrayLevel mul add
10039 fggreen bggreen fggreen sub patternGrayLevel mul add
10040 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
10044 originalCTM setmatrix
10045 pathbbox /t exch def /r exch def /b exch def /l exch def
10046 /w r l sub ceiling cvi def
10047 /h t b sub ceiling cvi def
10048 /imageByteWidth w 8 div ceiling cvi def
10050 bgred bggreen bgblue setrgbcolor
10052 fgred fggreen fgblue setrgbcolor
10053 w 0 gt h 0 gt and {
10054 l b translate w h scale
10055 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
10060 } dup 0 8 dict put def
10064 brushDashOffset -1 eq {
10068 brushDashArray brushDashOffset setdash
10069 fgred fggreen fgblue setrgbcolor
10071 brushWidth setlinewidth
10072 originalCTM setmatrix
10080 fgred fggreen fgblue setrgbcolor
10081 /fontDict printFont printSize scalefont dup setfont def
10082 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
10083 transform exch pop def
10084 /vertoffset 1 printSize sub descender sub def {
10085 0 vertoffset moveto show
10086 /vertoffset vertoffset printSize sub def
10090 } dup 0 3 dict put def
10093 /patternByteLength patternString length def
10094 /patternHeight patternByteLength 8 mul sqrt cvi def
10095 /patternWidth patternHeight def
10096 /patternByteWidth patternWidth 8 idiv def
10097 /imageByteMaxLength imageByteWidth imageHeight mul
10098 stringLimit patternByteWidth sub min def
10099 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
10100 patternHeight mul patternHeight max def
10101 /imageHeight imageHeight imageMaxHeight sub store
10102 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
10103 0 1 imageMaxHeight 1 sub {
10105 /patternRow y patternByteWidth mul patternByteLength mod def
10106 /patternRowString patternString patternRow patternByteWidth getinterval def
10107 /imageRow y imageByteWidth mul def
10108 0 patternByteWidth imageByteWidth 1 sub {
10110 imageString imageRow x add patternRowString putinterval
10115 } dup 0 12 dict put def
10118 dup 3 2 roll dup 4 3 roll lt { exch } if pop
10122 dup 3 2 roll dup 4 3 roll gt { exch } if pop
10134 } dup 0 4 dict put def
10142 x0 2 mul x1 add 3 div
10143 y0 2 mul y1 add 3 div
10145 } dup 0 4 dict put def
10149 /movetoNeeded exch def
10150 y exch get /y3 exch def
10151 x exch get /x3 exch def
10152 y exch get /y2 exch def
10153 x exch get /x2 exch def
10154 y exch get /y1 exch def
10155 x exch get /x1 exch def
10156 y exch get /y0 exch def
10157 x exch get /x0 exch def
10158 x1 y1 x2 y2 thirdpoint
10161 x2 y2 x1 y1 thirdpoint
10164 x1 y1 x0 y0 thirdpoint
10168 x2 y2 x3 y3 thirdpoint
10172 movetoNeeded { p0x p0y moveto } if
10173 p1x p1y p2x p2y p3x p3y curveto
10175 } dup 0 17 dict put def
10189 fgred fggreen fgblue setrgbcolor
10190 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
10194 dup 3 -1 roll dup 4 1 roll exch
10198 exch dup 3 1 roll exch lineto
10201 bgred bggreen bgblue setrgbcolor
10207 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
10213 transform originalCTM itransform
10216 transform originalCTM itransform
10219 /dy tipy taily sub def
10220 /dx tipx tailx sub def
10221 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
10223 originalCTM setmatrix
10224 tipx tipy translate
10227 arrowHeight neg arrowWidth 2 div moveto
10229 arrowHeight neg arrowWidth 2 div neg lineto
10231 originalCTM setmatrix
10232 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
10234 /padtail brushWidth 2 div def
10235 tipx tipy translate
10238 arrowHeight padtip add padtail add arrowHeight div dup scale
10243 originalCTM setmatrix
10244 tipx tipy translate
10251 } dup 0 9 dict put def
10255 arrowHeight neg arrowWidth 2 div moveto
10257 arrowHeight neg arrowWidth 2 div neg lineto
10262 y exch get /taily exch def
10263 x exch get /tailx exch def
10264 y exch get /tipy exch def
10265 x exch get /tipx exch def
10266 brushLeftArrow { tipx tipy tailx taily arrowhead } if
10268 } dup 0 4 dict put def
10272 y exch get /tipy exch def
10273 x exch get /tipx exch def
10274 y exch get /taily exch def
10275 x exch get /tailx exch def
10276 brushRightArrow { tipx tipy tailx taily arrowhead } if
10278 } dup 0 4 dict put def
10281 %I Idraw 10 Grid 4.98316 4.98316
10291 [ 0.799705 0 0 0.799705 0 0 ] concat
10292 /originalCTM matrix currentmatrix def
10301 [ 1 0 0 1 -30 -210 ] concat
10312 [ 1 -0 -0 1 174 230 ] concat
10314 100 483 100 433 Line
10327 [ 1 -0 -0 1 174 230 ] concat
10329 100 433 100 423 Line
10342 [ 1 -0 -0 1 174 230 ] concat
10344 120 483 120 423 Line
10357 [ 1 -0 -0 1 174 230 ] concat
10359 80 463 140 463 Line
10372 [ 1 -0 -0 1 174 230 ] concat
10374 80 443 140 443 Line
10387 [ 1 0 0 1 130 -210 ] concat
10398 [ 1 -0 -0 1 174 230 ] concat
10400 100 483 100 433 Line
10413 [ 1 -0 -0 1 174 230 ] concat
10415 100 433 100 423 Line
10428 [ 1 -0 -0 1 174 230 ] concat
10430 120 483 120 423 Line
10443 [ 1 -0 -0 1 174 230 ] concat
10445 80 463 140 463 Line
10458 [ 1 -0 -0 1 174 230 ] concat
10460 80 443 140 443 Line
10473 [ 1 0 0 1 209 -210 ] concat
10484 [ 1 -0 -0 1 174 230 ] concat
10486 100 483 100 433 Line
10499 [ 1 -0 -0 1 174 230 ] concat
10501 100 433 100 423 Line
10514 [ 1 -0 -0 1 174 230 ] concat
10516 120 483 120 423 Line
10529 [ 1 -0 -0 1 174 230 ] concat
10531 80 463 140 463 Line
10544 [ 1 -0 -0 1 174 230 ] concat
10546 80 443 140 443 Line
10559 [ 1 0 0 1 -110 -314 ] concat
10570 [ 1 -0 -0 1 174 230 ] concat
10572 100 483 100 433 Line
10585 [ 1 -0 -0 1 174 230 ] concat
10587 100 433 100 423 Line
10600 [ 1 -0 -0 1 174 230 ] concat
10602 120 483 120 423 Line
10615 [ 1 -0 -0 1 174 230 ] concat
10617 80 463 140 463 Line
10630 [ 1 -0 -0 1 174 230 ] concat
10632 80 443 140 443 Line
10645 [ 1 0 0 1 50 -314 ] concat
10656 [ 1 -0 -0 1 174 230 ] concat
10658 100 483 100 433 Line
10671 [ 1 -0 -0 1 174 230 ] concat
10673 100 433 100 423 Line
10686 [ 1 -0 -0 1 174 230 ] concat
10688 120 483 120 423 Line
10701 [ 1 -0 -0 1 174 230 ] concat
10703 80 463 140 463 Line
10716 [ 1 -0 -0 1 174 230 ] concat
10718 80 443 140 443 Line
10731 [ 1 0 0 1 209 -314 ] concat
10742 [ 1 -0 -0 1 174 230 ] concat
10744 100 483 100 433 Line
10757 [ 1 -0 -0 1 174 230 ] concat
10759 100 433 100 423 Line
10772 [ 1 -0 -0 1 174 230 ] concat
10774 120 483 120 423 Line
10787 [ 1 -0 -0 1 174 230 ] concat
10789 80 463 140 463 Line
10802 [ 1 -0 -0 1 174 230 ] concat
10804 80 443 140 443 Line
10817 [ 1 0 0 1 289 -314 ] concat
10828 [ 1 -0 -0 1 174 230 ] concat
10830 100 483 100 433 Line
10843 [ 1 -0 -0 1 174 230 ] concat
10845 100 433 100 423 Line
10858 [ 1 -0 -0 1 174 230 ] concat
10860 120 483 120 423 Line
10873 [ 1 -0 -0 1 174 230 ] concat
10875 80 463 140 463 Line
10888 [ 1 -0 -0 1 174 230 ] concat
10890 80 443 140 443 Line
10911 [ 1 0 0 1 90 0 ] concat
10922 [ 1 -0 -0 1 174 230 ] concat
10924 100 483 100 433 Line
10937 [ 1 -0 -0 1 174 230 ] concat
10939 100 433 100 423 Line
10952 [ 1 -0 -0 1 174 230 ] concat
10954 120 483 120 423 Line
10967 [ 1 -0 -0 1 174 230 ] concat
10969 80 463 140 463 Line
10982 [ 1 -0 -0 1 174 230 ] concat
10984 80 443 140 443 Line
10999 [ 1 -0 -0 1 290 326 ] concat
11011 [ 1 0 0 1 83 113 ] concat
11022 [ 1 -0 -0 1 174 230 ] concat
11024 145 348 130 333 Line
11037 [ 1 -0 -0 1 144 230 ] concat
11039 160 348 175 333 Line
11052 [ 1 0 0 1 62 113 ] concat
11063 [ 1 -0 -0 1 174 230 ] concat
11065 145 348 130 333 Line
11078 [ 1 -0 -0 1 144 230 ] concat
11080 160 348 175 333 Line
11093 [ 1 0 0 1 42 134 ] concat
11104 [ 1 -0 -0 1 174 230 ] concat
11106 145 348 130 333 Line
11119 [ 1 -0 -0 1 144 230 ] concat
11121 160 348 175 333 Line
11136 [ 1 -0 -0 1 248 325 ] concat
11150 [ 1 -0 -0 1 248 345 ] concat
11172 [ 1 0 0 1 -70 -105 ] concat
11183 [ 1 -0 -0 1 174 230 ] concat
11185 100 483 100 433 Line
11198 [ 1 -0 -0 1 174 230 ] concat
11200 100 433 100 423 Line
11213 [ 1 -0 -0 1 174 230 ] concat
11215 120 483 120 423 Line
11228 [ 1 -0 -0 1 174 230 ] concat
11230 80 463 140 463 Line
11243 [ 1 -0 -0 1 174 230 ] concat
11245 80 443 140 443 Line
11258 [ 1 0 0 1 -98 28 ] concat
11269 [ 1 -0 -0 1 174 230 ] concat
11271 145 348 130 333 Line
11284 [ 1 -0 -0 1 144 230 ] concat
11286 160 348 175 333 Line
11299 [ 1 0 0 1 -160 -105 ] concat
11308 [ 1 0 0 1 90 0 ] concat
11319 [ 1 -0 -0 1 174 230 ] concat
11321 100 483 100 433 Line
11334 [ 1 -0 -0 1 174 230 ] concat
11336 100 433 100 423 Line
11349 [ 1 -0 -0 1 174 230 ] concat
11351 120 483 120 423 Line
11364 [ 1 -0 -0 1 174 230 ] concat
11366 80 463 140 463 Line
11379 [ 1 -0 -0 1 174 230 ] concat
11381 80 443 140 443 Line
11396 [ 1 -0 -0 1 290 326 ] concat
11408 [ 1 0 0 1 83 113 ] concat
11419 [ 1 -0 -0 1 174 230 ] concat
11421 145 348 130 333 Line
11434 [ 1 -0 -0 1 144 230 ] concat
11436 160 348 175 333 Line
11449 [ 1 0 0 1 62 113 ] concat
11460 [ 1 -0 -0 1 174 230 ] concat
11462 145 348 130 333 Line
11475 [ 1 -0 -0 1 144 230 ] concat
11477 160 348 175 333 Line
11490 [ 1 0 0 1 42 134 ] concat
11501 [ 1 -0 -0 1 174 230 ] concat
11503 145 348 130 333 Line
11516 [ 1 -0 -0 1 144 230 ] concat
11518 160 348 175 333 Line
11533 [ 1 -0 -0 1 248 325 ] concat
11547 [ 1 -0 -0 1 248 345 ] concat
11571 [ 1 0 0 1 90 -105 ] concat
11582 [ 1 -0 -0 1 174 230 ] concat
11584 100 483 100 433 Line
11597 [ 1 -0 -0 1 174 230 ] concat
11599 100 433 100 423 Line
11612 [ 1 -0 -0 1 174 230 ] concat
11614 120 483 120 423 Line
11627 [ 1 -0 -0 1 174 230 ] concat
11629 80 463 140 463 Line
11642 [ 1 -0 -0 1 174 230 ] concat
11644 80 443 140 443 Line
11657 [ 1 0 0 1 83 28 ] concat
11668 [ 1 -0 -0 1 174 230 ] concat
11670 145 348 130 333 Line
11683 [ 1 -0 -0 1 144 230 ] concat
11685 160 348 175 333 Line
11698 [ 1 0 0 1 0 -105 ] concat
11707 [ 1 0 0 1 90 0 ] concat
11718 [ 1 -0 -0 1 174 230 ] concat
11720 100 483 100 433 Line
11733 [ 1 -0 -0 1 174 230 ] concat
11735 100 433 100 423 Line
11748 [ 1 -0 -0 1 174 230 ] concat
11750 120 483 120 423 Line
11763 [ 1 -0 -0 1 174 230 ] concat
11765 80 463 140 463 Line
11778 [ 1 -0 -0 1 174 230 ] concat
11780 80 443 140 443 Line
11795 [ 1 -0 -0 1 290 326 ] concat
11807 [ 1 0 0 1 83 113 ] concat
11818 [ 1 -0 -0 1 174 230 ] concat
11820 145 348 130 333 Line
11833 [ 1 -0 -0 1 144 230 ] concat
11835 160 348 175 333 Line
11848 [ 1 0 0 1 62 113 ] concat
11859 [ 1 -0 -0 1 174 230 ] concat
11861 145 348 130 333 Line
11874 [ 1 -0 -0 1 144 230 ] concat
11876 160 348 175 333 Line
11889 [ 1 0 0 1 42 134 ] concat
11900 [ 1 -0 -0 1 174 230 ] concat
11902 145 348 130 333 Line
11915 [ 1 -0 -0 1 144 230 ] concat
11917 160 348 175 333 Line
11932 [ 1 -0 -0 1 248 325 ] concat
11946 [ 1 -0 -0 1 248 345 ] concat
11970 [ 1 0 0 1 249 -105 ] concat
11981 [ 1 -0 -0 1 174 230 ] concat
11983 100 483 100 433 Line
11996 [ 1 -0 -0 1 174 230 ] concat
11998 100 433 100 423 Line
12011 [ 1 -0 -0 1 174 230 ] concat
12013 120 483 120 423 Line
12026 [ 1 -0 -0 1 174 230 ] concat
12028 80 463 140 463 Line
12041 [ 1 -0 -0 1 174 230 ] concat
12043 80 443 140 443 Line
12056 [ 1 0 0 1 221 -12 ] concat
12067 [ 1 -0 -0 1 174 230 ] concat
12069 145 348 130 333 Line
12082 [ 1 -0 -0 1 144 230 ] concat
12084 160 348 175 333 Line
12097 [ 1 0 0 1 159 -105 ] concat
12106 [ 1 0 0 1 90 0 ] concat
12117 [ 1 -0 -0 1 174 230 ] concat
12119 100 483 100 433 Line
12132 [ 1 -0 -0 1 174 230 ] concat
12134 100 433 100 423 Line
12147 [ 1 -0 -0 1 174 230 ] concat
12149 120 483 120 423 Line
12162 [ 1 -0 -0 1 174 230 ] concat
12164 80 463 140 463 Line
12177 [ 1 -0 -0 1 174 230 ] concat
12179 80 443 140 443 Line
12194 [ 1 -0 -0 1 290 326 ] concat
12206 [ 1 0 0 1 83 113 ] concat
12217 [ 1 -0 -0 1 174 230 ] concat
12219 145 348 130 333 Line
12232 [ 1 -0 -0 1 144 230 ] concat
12234 160 348 175 333 Line
12247 [ 1 0 0 1 62 113 ] concat
12258 [ 1 -0 -0 1 174 230 ] concat
12260 145 348 130 333 Line
12273 [ 1 -0 -0 1 144 230 ] concat
12275 160 348 175 333 Line
12288 [ 1 0 0 1 42 134 ] concat
12299 [ 1 -0 -0 1 174 230 ] concat
12301 145 348 130 333 Line
12314 [ 1 -0 -0 1 144 230 ] concat
12316 160 348 175 333 Line
12331 [ 1 -0 -0 1 248 325 ] concat
12345 [ 1 -0 -0 1 248 345 ] concat
12361 [ 1 0 0 1 23 -222 ] concat
12372 [ 1 -0 -0 1 174 230 ] concat
12374 145 348 130 333 Line
12387 [ 1 -0 -0 1 144 230 ] concat
12389 160 348 175 333 Line
12402 [ 1 0 0 1 -138 -222 ] concat
12413 [ 1 -0 -0 1 174 230 ] concat
12415 145 348 130 333 Line
12428 [ 1 -0 -0 1 144 230 ] concat
12430 160 348 175 333 Line
12443 [ 1 0 0 1 261 -182 ] concat
12454 [ 1 -0 -0 1 174 230 ] concat
12456 145 348 130 333 Line
12469 [ 1 -0 -0 1 144 230 ] concat
12471 160 348 175 333 Line
12492 [ 1 0 0 1 -110 -210 ] concat
12503 [ 1 -0 -0 1 174 230 ] concat
12505 100 483 100 433 Line
12518 [ 1 -0 -0 1 174 230 ] concat
12520 100 433 100 423 Line
12533 [ 1 -0 -0 1 174 230 ] concat
12535 120 483 120 423 Line
12548 [ 1 -0 -0 1 174 230 ] concat
12550 80 463 140 463 Line
12563 [ 1 -0 -0 1 174 230 ] concat
12565 80 443 140 443 Line
12580 [ 1 -0 -0 1 89 156 ] concat
12592 [ 1 0 0 1 -40 -105 ] concat
12601 [ 1 0 0 1 -70 -105 ] concat
12612 [ 1 -0 -0 1 174 230 ] concat
12614 100 483 100 433 Line
12627 [ 1 -0 -0 1 174 230 ] concat
12629 100 433 100 423 Line
12642 [ 1 -0 -0 1 174 230 ] concat
12644 120 483 120 423 Line
12657 [ 1 -0 -0 1 174 230 ] concat
12659 80 463 140 463 Line
12672 [ 1 -0 -0 1 174 230 ] concat
12674 80 443 140 443 Line
12687 [ 1 0 0 1 -98 28 ] concat
12698 [ 1 -0 -0 1 174 230 ] concat
12700 145 348 130 333 Line
12713 [ 1 -0 -0 1 144 230 ] concat
12715 160 348 175 333 Line
12728 [ 1 0 0 1 -160 -105 ] concat
12737 [ 1 0 0 1 90 0 ] concat
12748 [ 1 -0 -0 1 174 230 ] concat
12750 100 483 100 433 Line
12763 [ 1 -0 -0 1 174 230 ] concat
12765 100 433 100 423 Line
12778 [ 1 -0 -0 1 174 230 ] concat
12780 120 483 120 423 Line
12793 [ 1 -0 -0 1 174 230 ] concat
12795 80 463 140 463 Line
12808 [ 1 -0 -0 1 174 230 ] concat
12810 80 443 140 443 Line
12825 [ 1 -0 -0 1 290 326 ] concat
12837 [ 1 0 0 1 83 113 ] concat
12848 [ 1 -0 -0 1 174 230 ] concat
12850 145 348 130 333 Line
12863 [ 1 -0 -0 1 144 230 ] concat
12865 160 348 175 333 Line
12878 [ 1 0 0 1 62 113 ] concat
12889 [ 1 -0 -0 1 174 230 ] concat
12891 145 348 130 333 Line
12904 [ 1 -0 -0 1 144 230 ] concat
12906 160 348 175 333 Line
12919 [ 1 0 0 1 42 134 ] concat
12930 [ 1 -0 -0 1 174 230 ] concat
12932 145 348 130 333 Line
12945 [ 1 -0 -0 1 144 230 ] concat
12947 160 348 175 333 Line
12962 [ 1 -0 -0 1 248 325 ] concat
12976 [ 1 -0 -0 1 248 345 ] concat
12994 [ 1 0 0 1 40 -105 ] concat
13003 [ 1 0 0 1 -70 -105 ] concat
13014 [ 1 -0 -0 1 174 230 ] concat
13016 100 483 100 433 Line
13029 [ 1 -0 -0 1 174 230 ] concat
13031 100 433 100 423 Line
13044 [ 1 -0 -0 1 174 230 ] concat
13046 120 483 120 423 Line
13059 [ 1 -0 -0 1 174 230 ] concat
13061 80 463 140 463 Line
13074 [ 1 -0 -0 1 174 230 ] concat
13076 80 443 140 443 Line
13089 [ 1 0 0 1 -98 28 ] concat
13100 [ 1 -0 -0 1 174 230 ] concat
13102 145 348 130 333 Line
13115 [ 1 -0 -0 1 144 230 ] concat
13117 160 348 175 333 Line
13130 [ 1 0 0 1 -160 -105 ] concat
13139 [ 1 0 0 1 90 0 ] concat
13150 [ 1 -0 -0 1 174 230 ] concat
13152 100 483 100 433 Line
13165 [ 1 -0 -0 1 174 230 ] concat
13167 100 433 100 423 Line
13180 [ 1 -0 -0 1 174 230 ] concat
13182 120 483 120 423 Line
13195 [ 1 -0 -0 1 174 230 ] concat
13197 80 463 140 463 Line
13210 [ 1 -0 -0 1 174 230 ] concat
13212 80 443 140 443 Line
13227 [ 1 -0 -0 1 290 326 ] concat
13239 [ 1 0 0 1 83 113 ] concat
13250 [ 1 -0 -0 1 174 230 ] concat
13252 145 348 130 333 Line
13265 [ 1 -0 -0 1 144 230 ] concat
13267 160 348 175 333 Line
13280 [ 1 0 0 1 62 113 ] concat
13291 [ 1 -0 -0 1 174 230 ] concat
13293 145 348 130 333 Line
13306 [ 1 -0 -0 1 144 230 ] concat
13308 160 348 175 333 Line
13321 [ 1 0 0 1 42 134 ] concat
13332 [ 1 -0 -0 1 174 230 ] concat
13334 145 348 130 333 Line
13347 [ 1 -0 -0 1 144 230 ] concat
13349 160 348 175 333 Line
13364 [ 1 -0 -0 1 248 325 ] concat
13378 [ 1 -0 -0 1 248 345 ] concat
13394 [ 1 0 0 1 40 -105 ] concat
13403 [ 1 0 0 1 90 -105 ] concat
13414 [ 1 -0 -0 1 174 230 ] concat
13416 100 483 100 433 Line
13429 [ 1 -0 -0 1 174 230 ] concat
13431 100 433 100 423 Line
13444 [ 1 -0 -0 1 174 230 ] concat
13446 120 483 120 423 Line
13459 [ 1 -0 -0 1 174 230 ] concat
13461 80 463 140 463 Line
13474 [ 1 -0 -0 1 174 230 ] concat
13476 80 443 140 443 Line
13489 [ 1 0 0 1 83 28 ] concat
13500 [ 1 -0 -0 1 174 230 ] concat
13502 145 348 130 333 Line
13515 [ 1 -0 -0 1 144 230 ] concat
13517 160 348 175 333 Line
13530 [ 1 0 0 1 0 -105 ] concat
13539 [ 1 0 0 1 90 0 ] concat
13550 [ 1 -0 -0 1 174 230 ] concat
13552 100 483 100 433 Line
13565 [ 1 -0 -0 1 174 230 ] concat
13567 100 433 100 423 Line
13580 [ 1 -0 -0 1 174 230 ] concat
13582 120 483 120 423 Line
13595 [ 1 -0 -0 1 174 230 ] concat
13597 80 463 140 463 Line
13610 [ 1 -0 -0 1 174 230 ] concat
13612 80 443 140 443 Line
13627 [ 1 -0 -0 1 290 326 ] concat
13639 [ 1 0 0 1 83 113 ] concat
13650 [ 1 -0 -0 1 174 230 ] concat
13652 145 348 130 333 Line
13665 [ 1 -0 -0 1 144 230 ] concat
13667 160 348 175 333 Line
13680 [ 1 0 0 1 62 113 ] concat
13691 [ 1 -0 -0 1 174 230 ] concat
13693 145 348 130 333 Line
13706 [ 1 -0 -0 1 144 230 ] concat
13708 160 348 175 333 Line
13721 [ 1 0 0 1 42 134 ] concat
13732 [ 1 -0 -0 1 174 230 ] concat
13734 145 348 130 333 Line
13747 [ 1 -0 -0 1 144 230 ] concat
13749 160 348 175 333 Line
13764 [ 1 -0 -0 1 248 325 ] concat
13778 [ 1 -0 -0 1 248 345 ] concat
13794 [ 1 0 0 1 -40 -105 ] concat
13803 [ 1 0 0 1 249 -105 ] concat
13814 [ 1 -0 -0 1 174 230 ] concat
13816 100 483 100 433 Line
13829 [ 1 -0 -0 1 174 230 ] concat
13831 100 433 100 423 Line
13844 [ 1 -0 -0 1 174 230 ] concat
13846 120 483 120 423 Line
13859 [ 1 -0 -0 1 174 230 ] concat
13861 80 463 140 463 Line
13874 [ 1 -0 -0 1 174 230 ] concat
13876 80 443 140 443 Line
13889 [ 1 0 0 1 221 -12 ] concat
13900 [ 1 -0 -0 1 174 230 ] concat
13902 145 348 130 333 Line
13915 [ 1 -0 -0 1 144 230 ] concat
13917 160 348 175 333 Line
13930 [ 1 0 0 1 159 -105 ] concat
13939 [ 1 0 0 1 90 0 ] concat
13950 [ 1 -0 -0 1 174 230 ] concat
13952 100 483 100 433 Line
13965 [ 1 -0 -0 1 174 230 ] concat
13967 100 433 100 423 Line
13980 [ 1 -0 -0 1 174 230 ] concat
13982 120 483 120 423 Line
13995 [ 1 -0 -0 1 174 230 ] concat
13997 80 463 140 463 Line
14010 [ 1 -0 -0 1 174 230 ] concat
14012 80 443 140 443 Line
14027 [ 1 -0 -0 1 290 326 ] concat
14039 [ 1 0 0 1 83 113 ] concat
14050 [ 1 -0 -0 1 174 230 ] concat
14052 145 348 130 333 Line
14065 [ 1 -0 -0 1 144 230 ] concat
14067 160 348 175 333 Line
14080 [ 1 0 0 1 62 113 ] concat
14091 [ 1 -0 -0 1 174 230 ] concat
14093 145 348 130 333 Line
14106 [ 1 -0 -0 1 144 230 ] concat
14108 160 348 175 333 Line
14121 [ 1 0 0 1 42 134 ] concat
14132 [ 1 -0 -0 1 174 230 ] concat
14134 145 348 130 333 Line
14147 [ 1 -0 -0 1 144 230 ] concat
14149 160 348 175 333 Line
14164 [ 1 -0 -0 1 248 325 ] concat
14178 [ 1 -0 -0 1 248 345 ] concat
14196 [ 1 -0 -0 1 149 115 ] concat
14216 [ 1 0 0 1 50 -210 ] concat
14227 [ 1 -0 -0 1 174 230 ] concat
14229 100 483 100 433 Line
14242 [ 1 -0 -0 1 174 230 ] concat
14244 100 433 100 423 Line
14257 [ 1 -0 -0 1 174 230 ] concat
14259 120 483 120 423 Line
14272 [ 1 -0 -0 1 174 230 ] concat
14274 80 463 140 463 Line
14287 [ 1 -0 -0 1 174 230 ] concat
14289 80 443 140 443 Line
14302 [ 1 0 0 1 -40 -105 ] concat
14311 [ 1 0 0 1 90 -105 ] concat
14322 [ 1 -0 -0 1 174 230 ] concat
14324 100 483 100 433 Line
14337 [ 1 -0 -0 1 174 230 ] concat
14339 100 433 100 423 Line
14352 [ 1 -0 -0 1 174 230 ] concat
14354 120 483 120 423 Line
14367 [ 1 -0 -0 1 174 230 ] concat
14369 80 463 140 463 Line
14382 [ 1 -0 -0 1 174 230 ] concat
14384 80 443 140 443 Line
14397 [ 1 0 0 1 83 28 ] concat
14408 [ 1 -0 -0 1 174 230 ] concat
14410 145 348 130 333 Line
14423 [ 1 -0 -0 1 144 230 ] concat
14425 160 348 175 333 Line
14438 [ 1 0 0 1 0 -105 ] concat
14447 [ 1 0 0 1 90 0 ] concat
14458 [ 1 -0 -0 1 174 230 ] concat
14460 100 483 100 433 Line
14473 [ 1 -0 -0 1 174 230 ] concat
14475 100 433 100 423 Line
14488 [ 1 -0 -0 1 174 230 ] concat
14490 120 483 120 423 Line
14503 [ 1 -0 -0 1 174 230 ] concat
14505 80 463 140 463 Line
14518 [ 1 -0 -0 1 174 230 ] concat
14520 80 443 140 443 Line
14535 [ 1 -0 -0 1 290 326 ] concat
14547 [ 1 0 0 1 83 113 ] concat
14558 [ 1 -0 -0 1 174 230 ] concat
14560 145 348 130 333 Line
14573 [ 1 -0 -0 1 144 230 ] concat
14575 160 348 175 333 Line
14588 [ 1 0 0 1 62 113 ] concat
14599 [ 1 -0 -0 1 174 230 ] concat
14601 145 348 130 333 Line
14614 [ 1 -0 -0 1 144 230 ] concat
14616 160 348 175 333 Line
14629 [ 1 0 0 1 42 134 ] concat
14640 [ 1 -0 -0 1 174 230 ] concat
14642 145 348 130 333 Line
14655 [ 1 -0 -0 1 144 230 ] concat
14657 160 348 175 333 Line
14672 [ 1 -0 -0 1 248 325 ] concat
14686 [ 1 -0 -0 1 248 345 ] concat
14704 [ 1 -0 -0 1 229 155 ] concat
14720 [ 1 -0 -0 1 309 115 ] concat
14734 [ 1 -0 -0 1 388 155 ] concat
14754 [ 1 0 0 1 289 -210 ] concat
14765 [ 1 -0 -0 1 174 230 ] concat
14767 100 483 100 433 Line
14780 [ 1 -0 -0 1 174 230 ] concat
14782 100 433 100 423 Line
14795 [ 1 -0 -0 1 174 230 ] concat
14797 120 483 120 423 Line
14810 [ 1 -0 -0 1 174 230 ] concat
14812 80 463 140 463 Line
14825 [ 1 -0 -0 1 174 230 ] concat
14827 80 443 140 443 Line
14840 [ 1 0 0 1 40 -105 ] concat
14849 [ 1 0 0 1 249 -105 ] concat
14860 [ 1 -0 -0 1 174 230 ] concat
14862 100 483 100 433 Line
14875 [ 1 -0 -0 1 174 230 ] concat
14877 100 433 100 423 Line
14890 [ 1 -0 -0 1 174 230 ] concat
14892 120 483 120 423 Line
14905 [ 1 -0 -0 1 174 230 ] concat
14907 80 463 140 463 Line
14920 [ 1 -0 -0 1 174 230 ] concat
14922 80 443 140 443 Line
14935 [ 1 0 0 1 221 -12 ] concat
14946 [ 1 -0 -0 1 174 230 ] concat
14948 145 348 130 333 Line
14961 [ 1 -0 -0 1 144 230 ] concat
14963 160 348 175 333 Line
14976 [ 1 0 0 1 159 -105 ] concat
14985 [ 1 0 0 1 90 0 ] concat
14996 [ 1 -0 -0 1 174 230 ] concat
14998 100 483 100 433 Line
15011 [ 1 -0 -0 1 174 230 ] concat
15013 100 433 100 423 Line
15026 [ 1 -0 -0 1 174 230 ] concat
15028 120 483 120 423 Line
15041 [ 1 -0 -0 1 174 230 ] concat
15043 80 463 140 463 Line
15056 [ 1 -0 -0 1 174 230 ] concat
15058 80 443 140 443 Line
15073 [ 1 -0 -0 1 290 326 ] concat
15085 [ 1 0 0 1 83 113 ] concat
15096 [ 1 -0 -0 1 174 230 ] concat
15098 145 348 130 333 Line
15111 [ 1 -0 -0 1 144 230 ] concat
15113 160 348 175 333 Line
15126 [ 1 0 0 1 62 113 ] concat
15137 [ 1 -0 -0 1 174 230 ] concat
15139 145 348 130 333 Line
15152 [ 1 -0 -0 1 144 230 ] concat
15154 160 348 175 333 Line
15167 [ 1 0 0 1 42 134 ] concat
15178 [ 1 -0 -0 1 174 230 ] concat
15180 145 348 130 333 Line
15193 [ 1 -0 -0 1 144 230 ] concat
15195 160 348 175 333 Line
15210 [ 1 -0 -0 1 248 325 ] concat
15224 [ 1 -0 -0 1 248 345 ] concat
15242 [ 1 -0 -0 1 488 155 ] concat
15258 [ 1 -0 -0 1 118 226 ] concat
15260 106 227 166 227 Line
15273 [ 1 -0 -0 1 118 226 ] concat
15275 266 227 326 227 Line
15286 [ 1 0 0 1 0 -104 ] concat
15295 [ 1 0 0 1 -110 -210 ] concat
15306 [ 1 -0 -0 1 174 230 ] concat
15308 100 483 100 433 Line
15321 [ 1 -0 -0 1 174 230 ] concat
15323 100 433 100 423 Line
15336 [ 1 -0 -0 1 174 230 ] concat
15338 120 483 120 423 Line
15351 [ 1 -0 -0 1 174 230 ] concat
15353 80 463 140 463 Line
15366 [ 1 -0 -0 1 174 230 ] concat
15368 80 443 140 443 Line
15383 [ 1 -0 -0 1 89 156 ] concat
15395 [ 1 0 0 1 -40 -105 ] concat
15404 [ 1 0 0 1 -70 -105 ] concat
15415 [ 1 -0 -0 1 174 230 ] concat
15417 100 483 100 433 Line
15430 [ 1 -0 -0 1 174 230 ] concat
15432 100 433 100 423 Line
15445 [ 1 -0 -0 1 174 230 ] concat
15447 120 483 120 423 Line
15460 [ 1 -0 -0 1 174 230 ] concat
15462 80 463 140 463 Line
15475 [ 1 -0 -0 1 174 230 ] concat
15477 80 443 140 443 Line
15490 [ 1 0 0 1 -98 28 ] concat
15501 [ 1 -0 -0 1 174 230 ] concat
15503 145 348 130 333 Line
15516 [ 1 -0 -0 1 144 230 ] concat
15518 160 348 175 333 Line
15531 [ 1 0 0 1 -160 -105 ] concat
15540 [ 1 0 0 1 90 0 ] concat
15551 [ 1 -0 -0 1 174 230 ] concat
15553 100 483 100 433 Line
15566 [ 1 -0 -0 1 174 230 ] concat
15568 100 433 100 423 Line
15581 [ 1 -0 -0 1 174 230 ] concat
15583 120 483 120 423 Line
15596 [ 1 -0 -0 1 174 230 ] concat
15598 80 463 140 463 Line
15611 [ 1 -0 -0 1 174 230 ] concat
15613 80 443 140 443 Line
15628 [ 1 -0 -0 1 290 326 ] concat
15640 [ 1 0 0 1 83 113 ] concat
15651 [ 1 -0 -0 1 174 230 ] concat
15653 145 348 130 333 Line
15666 [ 1 -0 -0 1 144 230 ] concat
15668 160 348 175 333 Line
15681 [ 1 0 0 1 62 113 ] concat
15692 [ 1 -0 -0 1 174 230 ] concat
15694 145 348 130 333 Line
15707 [ 1 -0 -0 1 144 230 ] concat
15709 160 348 175 333 Line
15722 [ 1 0 0 1 42 134 ] concat
15733 [ 1 -0 -0 1 174 230 ] concat
15735 145 348 130 333 Line
15748 [ 1 -0 -0 1 144 230 ] concat
15750 160 348 175 333 Line
15765 [ 1 -0 -0 1 248 325 ] concat
15779 [ 1 -0 -0 1 248 345 ] concat
15797 [ 1 0 0 1 0 -104 ] concat
15806 [ 1 0 0 1 50 -210 ] concat
15817 [ 1 -0 -0 1 174 230 ] concat
15819 100 483 100 433 Line
15832 [ 1 -0 -0 1 174 230 ] concat
15834 100 433 100 423 Line
15847 [ 1 -0 -0 1 174 230 ] concat
15849 120 483 120 423 Line
15862 [ 1 -0 -0 1 174 230 ] concat
15864 80 463 140 463 Line
15877 [ 1 -0 -0 1 174 230 ] concat
15879 80 443 140 443 Line
15892 [ 1 0 0 1 -40 -105 ] concat
15901 [ 1 0 0 1 90 -105 ] concat
15912 [ 1 -0 -0 1 174 230 ] concat
15914 100 483 100 433 Line
15927 [ 1 -0 -0 1 174 230 ] concat
15929 100 433 100 423 Line
15942 [ 1 -0 -0 1 174 230 ] concat
15944 120 483 120 423 Line
15957 [ 1 -0 -0 1 174 230 ] concat
15959 80 463 140 463 Line
15972 [ 1 -0 -0 1 174 230 ] concat
15974 80 443 140 443 Line
15987 [ 1 0 0 1 83 28 ] concat
15998 [ 1 -0 -0 1 174 230 ] concat
16000 145 348 130 333 Line
16013 [ 1 -0 -0 1 144 230 ] concat
16015 160 348 175 333 Line
16028 [ 1 0 0 1 0 -105 ] concat
16037 [ 1 0 0 1 90 0 ] concat
16048 [ 1 -0 -0 1 174 230 ] concat
16050 100 483 100 433 Line
16063 [ 1 -0 -0 1 174 230 ] concat
16065 100 433 100 423 Line
16078 [ 1 -0 -0 1 174 230 ] concat
16080 120 483 120 423 Line
16093 [ 1 -0 -0 1 174 230 ] concat
16095 80 463 140 463 Line
16108 [ 1 -0 -0 1 174 230 ] concat
16110 80 443 140 443 Line
16125 [ 1 -0 -0 1 290 326 ] concat
16137 [ 1 0 0 1 83 113 ] concat
16148 [ 1 -0 -0 1 174 230 ] concat
16150 145 348 130 333 Line
16163 [ 1 -0 -0 1 144 230 ] concat
16165 160 348 175 333 Line
16178 [ 1 0 0 1 62 113 ] concat
16189 [ 1 -0 -0 1 174 230 ] concat
16191 145 348 130 333 Line
16204 [ 1 -0 -0 1 144 230 ] concat
16206 160 348 175 333 Line
16219 [ 1 0 0 1 42 134 ] concat
16230 [ 1 -0 -0 1 174 230 ] concat
16232 145 348 130 333 Line
16245 [ 1 -0 -0 1 144 230 ] concat
16247 160 348 175 333 Line
16262 [ 1 -0 -0 1 248 325 ] concat
16276 [ 1 -0 -0 1 248 345 ] concat
16294 [ 1 -0 -0 1 229 155 ] concat
16308 [ 1 0 0 1 -8 -112 ] concat
16317 [ 1 0 0 1 217 -202 ] concat
16328 [ 1 -0 -0 1 174 230 ] concat
16330 100 483 100 433 Line
16343 [ 1 -0 -0 1 174 230 ] concat
16345 100 433 100 423 Line
16358 [ 1 -0 -0 1 174 230 ] concat
16360 120 483 120 423 Line
16373 [ 1 -0 -0 1 174 230 ] concat
16375 80 463 140 463 Line
16388 [ 1 -0 -0 1 174 230 ] concat
16390 80 443 140 443 Line
16403 [ 1 0 0 1 -32 -97 ] concat
16412 [ 1 0 0 1 249 -105 ] concat
16423 [ 1 -0 -0 1 174 230 ] concat
16425 100 483 100 433 Line
16438 [ 1 -0 -0 1 174 230 ] concat
16440 100 433 100 423 Line
16453 [ 1 -0 -0 1 174 230 ] concat
16455 120 483 120 423 Line
16468 [ 1 -0 -0 1 174 230 ] concat
16470 80 463 140 463 Line
16483 [ 1 -0 -0 1 174 230 ] concat
16485 80 443 140 443 Line
16498 [ 1 0 0 1 221 -12 ] concat
16509 [ 1 -0 -0 1 174 230 ] concat
16511 145 348 130 333 Line
16524 [ 1 -0 -0 1 144 230 ] concat
16526 160 348 175 333 Line
16539 [ 1 0 0 1 159 -105 ] concat
16548 [ 1 0 0 1 90 0 ] concat
16559 [ 1 -0 -0 1 174 230 ] concat
16561 100 483 100 433 Line
16574 [ 1 -0 -0 1 174 230 ] concat
16576 100 433 100 423 Line
16589 [ 1 -0 -0 1 174 230 ] concat
16591 120 483 120 423 Line
16604 [ 1 -0 -0 1 174 230 ] concat
16606 80 463 140 463 Line
16619 [ 1 -0 -0 1 174 230 ] concat
16621 80 443 140 443 Line
16636 [ 1 -0 -0 1 290 326 ] concat
16648 [ 1 0 0 1 83 113 ] concat
16659 [ 1 -0 -0 1 174 230 ] concat
16661 145 348 130 333 Line
16674 [ 1 -0 -0 1 144 230 ] concat
16676 160 348 175 333 Line
16689 [ 1 0 0 1 62 113 ] concat
16700 [ 1 -0 -0 1 174 230 ] concat
16702 145 348 130 333 Line
16715 [ 1 -0 -0 1 144 230 ] concat
16717 160 348 175 333 Line
16730 [ 1 0 0 1 42 134 ] concat
16741 [ 1 -0 -0 1 174 230 ] concat
16743 145 348 130 333 Line
16756 [ 1 -0 -0 1 144 230 ] concat
16758 160 348 175 333 Line
16773 [ 1 -0 -0 1 248 325 ] concat
16787 [ 1 -0 -0 1 248 345 ] concat
16805 [ 1 -0 -0 1 396 163 ] concat
16819 [ 1 0 0 1 0 -104 ] concat
16828 [ 1 0 0 1 289 -210 ] concat
16839 [ 1 -0 -0 1 174 230 ] concat
16841 100 483 100 433 Line
16854 [ 1 -0 -0 1 174 230 ] concat
16856 100 433 100 423 Line
16869 [ 1 -0 -0 1 174 230 ] concat
16871 120 483 120 423 Line
16884 [ 1 -0 -0 1 174 230 ] concat
16886 80 463 140 463 Line
16899 [ 1 -0 -0 1 174 230 ] concat
16901 80 443 140 443 Line
16914 [ 1 0 0 1 40 -105 ] concat
16923 [ 1 0 0 1 249 -105 ] concat
16934 [ 1 -0 -0 1 174 230 ] concat
16936 100 483 100 433 Line
16949 [ 1 -0 -0 1 174 230 ] concat
16951 100 433 100 423 Line
16964 [ 1 -0 -0 1 174 230 ] concat
16966 120 483 120 423 Line
16979 [ 1 -0 -0 1 174 230 ] concat
16981 80 463 140 463 Line
16994 [ 1 -0 -0 1 174 230 ] concat
16996 80 443 140 443 Line
17009 [ 1 0 0 1 221 -12 ] concat
17020 [ 1 -0 -0 1 174 230 ] concat
17022 145 348 130 333 Line
17035 [ 1 -0 -0 1 144 230 ] concat
17037 160 348 175 333 Line
17050 [ 1 0 0 1 159 -105 ] concat
17059 [ 1 0 0 1 90 0 ] concat
17070 [ 1 -0 -0 1 174 230 ] concat
17072 100 483 100 433 Line
17085 [ 1 -0 -0 1 174 230 ] concat
17087 100 433 100 423 Line
17100 [ 1 -0 -0 1 174 230 ] concat
17102 120 483 120 423 Line
17115 [ 1 -0 -0 1 174 230 ] concat
17117 80 463 140 463 Line
17130 [ 1 -0 -0 1 174 230 ] concat
17132 80 443 140 443 Line
17147 [ 1 -0 -0 1 290 326 ] concat
17159 [ 1 0 0 1 83 113 ] concat
17170 [ 1 -0 -0 1 174 230 ] concat
17172 145 348 130 333 Line
17185 [ 1 -0 -0 1 144 230 ] concat
17187 160 348 175 333 Line
17200 [ 1 0 0 1 62 113 ] concat
17211 [ 1 -0 -0 1 174 230 ] concat
17213 145 348 130 333 Line
17226 [ 1 -0 -0 1 144 230 ] concat
17228 160 348 175 333 Line
17241 [ 1 0 0 1 42 134 ] concat
17252 [ 1 -0 -0 1 174 230 ] concat
17254 145 348 130 333 Line
17267 [ 1 -0 -0 1 144 230 ] concat
17269 160 348 175 333 Line
17284 [ 1 -0 -0 1 248 325 ] concat
17298 [ 1 -0 -0 1 248 345 ] concat
17316 [ 1 -0 -0 1 488 155 ] concat
17330 [ 1 0 0 1 201 -182 ] concat
17341 [ 1 -0 -0 1 174 230 ] concat
17343 145 348 130 333 Line
17356 [ 1 -0 -0 1 144 230 ] concat
17358 160 348 175 333 Line
17373 [ 1 -0 -0 1 118 226 ] concat
17388 [ 1 -0 -0 1 222 226 ] concat
17390 351 173 351 113 Line
17397 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17398 Helvetica-Bold 14 SetF
17400 [ 1 0 0 1 169 332 ] concat
17410 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17411 Helvetica-Bold 14 SetF
17413 [ 1 0 0 1 249 437 ] concat
17423 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17424 Helvetica-Bold 14 SetF
17426 [ 1 0 0 1 329 332 ] concat
17436 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17437 Helvetica-Bold 14 SetF
17439 [ 1 0 0 1 409 437 ] concat
17449 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17450 Helvetica-Bold 14 SetF
17452 [ 1 0 0 1 488 332 ] concat
17462 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17463 Helvetica-Bold 14 SetF
17465 [ 1 0 0 1 568 332 ] concat
17481 [ 1 -0 -0 1 174 230 ] concat
17483 160 189 160 174 Line
17496 [ 1 -0 -0 1 174 230 ] concat
17498 319 189 319 174 Line
17511 [ 1 -0 -0 1 174 230 ] concat
17513 399 189 399 174 Line
17526 [ 1 -0 -0 1 122 230 ] concat
17541 [ 1 -0 -0 1 122 230 ] concat
17556 [ 1 -0 -0 1 122 230 ] concat
17558 122 293 132 278 Line
17571 [ 1 -0 -0 1 122 230 ] concat
17573 282 293 292 278 Line
17586 [ 1 -0 -0 1 122 230 ] concat
17588 212 278 222 293 Line
17601 [ 1 -0 -0 1 122 230 ] concat
17603 381 293 371 278 Line
17616 [ 1 -0 -0 1 226 230 ] concat
17618 337 293 347 278 Line
17631 [ 1 -0 -0 1 226 230 ] concat
17633 148 398 148 383 Line
17640 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17641 Helvetica-Bold 14 SetF
17643 [ 1 0 0 1 169 437 ] concat
17653 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17654 Helvetica-Bold 14 SetF
17656 [ 1 0 0 1 164 541 ] concat
17666 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17667 Helvetica-Bold 14 SetF
17669 [ 1 0 0 1 329 437 ] concat
17679 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17680 Helvetica-Bold 14 SetF
17682 [ 1 0 0 1 488 437 ] concat
17692 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17693 Helvetica-Bold 14 SetF
17695 [ 1 0 0 1 568 437 ] concat
17705 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17706 Helvetica-Bold 14 SetF
17708 [ 1 0 0 1 493 541 ] concat
17718 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17719 Helvetica-Bold 14 SetF
17721 [ 1 0 0 1 324 541 ] concat
17731 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
17732 Helvetica-Bold 14 SetF
17734 [ 1 0 0 1 314 646 ] concat
17737 (max\(-1,-1,0\) = 0)
17750 [ 1 -0 -0 1 174 230 ] concat
17752 40 383 135 408 Line
17765 [ 1 -0 -0 1 174 230 ] concat
17767 255 408 359 383 Line
17780 286 691 a Fk(Figure)14 b(1:)j(\(a\))d(Tic-T)m(ac-T)m(o)q(e)f(Game-T)m
17781 (ree,)g(\(b\))h(Game-T)m(ree)f(with)g(Minimax)e(V)m(alues)0
17782 826 y(successors)17 b(to)e(the)g(p)q(osition)e(at)i(ply)e(0,)h(and)h
17783 (so)f(on.)19 b(A)o(t)c(the)g Fi(terminal)g(p)n(ositions)f
17784 Fk(in)g(the)h(game-tree,)f(the)h(game)e(is)h(o)o(v)o(er)0
17785 876 y(and)f(a)h(v)n(alue)f(is)g(used)i(to)e(represen)o(t)j(the)e
17786 (outcome)f(of)g(the)h(game.)j(F)m(or)c(example,)f(a)h(win)h(for)f(the)h
17787 (pla)o(y)o(er)f(to)h(mo)o(v)o(e)e(w)o(ould)0 926 y(b)q(e)j(represen)o
17788 (ted)i(as)d(1,)f(a)h(loss)g(as)g(-1,)f(and)h(a)g(dra)o(w)g(as)g(0.)19
17789 b(The)14 b(left)g(hand)g(tree)h(in)f(Figure)g(1)g(sho)o(ws)g(a)g(t)o
17790 (ypical)f(game-tree)0 976 y(for)h(the)g(game)e(of)i(Tic-T)m(ac-T)m(o)q
17791 (e.)62 1025 y(The)22 b(game-tree)e(represen)o(tation)i(allo)o(ws)e(us)h
17792 (to)g(de\014ne)h(a)e(recursiv)o(e)i(depth-\014rst)h(tree)f(searc)o
17793 (hing)f(algorithm)d(to)0 1075 y(determine)i(the)h Fi(minimax)f(value)g
17794 Fk(of)g(eac)o(h)g(no)q(de)h(in)e(the)i(game-tree.)36
17795 b(The)20 b(minimax)c(v)n(alue)k(of)f(a)h(no)q(de)g(represen)o(ts)0
17796 1125 y(the)e(exp)q(ected)i(outcome)d(of)g(that)h(p)q(osition,)f(giv)o
17797 (en)h(b)q(est)g(pla)o(y)f(b)o(y)h(b)q(oth)f(sides.)31
17798 b(The)18 b Fi(minimax)g(algorithm)f Fk(w)o(orks)h(b)o(y)0
17799 1175 y(searc)o(hing)c(the)g(tree)g(in)f(a)g(depth-\014rst)i(manner.)i
17800 (W)m(e)c(tak)o(e)g(the)h(minim)n(um)9 b(of)j(all)h(the)g(v)n(alues)g
17801 (for)g(successor)j(p)q(ositions)d(at)0 1225 y(o)q(dd-n)o(um)o(b)q(ered)
17802 h(plies)g(in)g(the)h(tree,)g(since)g(this)g(is)f(where)h(the)g(opp)q
17803 (onen)o(t)g(mo)o(v)o(es.)j(Con)o(v)o(ersely)m(,)13 b(w)o(e)i(tak)o(e)f
17804 (the)h(maxim)n(um)0 1275 y(of)i(the)g(v)n(alues)g(of)g(successor)i(p)q
17805 (ositions)e(at)g(ev)o(en-n)o(um)o(b)q(ered)h(plies)f(within)f(the)i
17806 (game-tree.)28 b(The)17 b(righ)o(t)g(hand)g(tree)h(in)0
17807 1324 y(Figure)c(1)g(sho)o(ws)g(an)f(example)g(of)g(ho)o(w)h(to)g(deriv)
17808 o(e)g(the)g(minima)o(x)d(v)n(alues)j(of)f(eac)o(h)h(no)q(de)h(in)e(the)
17809 i(game-tree.)62 1374 y(A)f Fi(princip)n(al)f(variation)h
17810 Fk(through)f(a)g(game-tree)g(is)g(a)g(series)i(of)d(mo)o(v)o(es)g(that)
17811 i(yield)f(optimal)d(scores)15 b(for)e(b)q(oth)g(pla)o(y)o(ers.)0
17812 1424 y(F)m(or)k(example,)f(there)j(is)e(only)f(one)i(principal)e(v)n
17813 (ariation)g(in)g(the)i(game)e(tree)i(giv)o(en)f(in)g(Figure)g(1,)g(sho)
17814 o(wn)h(in)e(b)q(old.)28 b(In)0 1474 y(general,)15 b(once)h(the)g(tree)h
17815 (is)e(completely)f(searc)o(hed,)j(an)e(\\optimal")d(mo)o(v)o(e)h(w)o
17816 (ould)i(b)q(e)h(the)g(\014rst)g(mo)o(v)o(e)d(from)h(a)h(principal)0
17817 1524 y(v)n(ariation.)62 1573 y(F)m(or)d(games)f(suc)o(h)i(as)g(c)o
17818 (hess,)g(some)f(game-trees)g(are)h(so)f(large,)g(the)h(determination)e
17819 (of)g(a)h(minima)o(x)e(v)n(alue)h(for)h(the)h(ro)q(ot)0
17820 1623 y(is)h(e\013ectiv)o(ely)g(in)o(tractable.)k(Th)o(us,)c(a)g
17821 (heuristic)g Fi(evaluation)i(function)e Fk(is)g(normally)d(used)k(to)f
17822 (estimate)f(the)h(p)q(oten)o(tial)g(of)0 1673 y(winning)h(from)f(a)i(p)
17823 q(osition)g(at)g(a)g(\014xed)g(ply)g(in)g(the)g(game-tree.)25
17824 b(These)17 b(are)g(the)g Fi(le)n(af)f(no)n(des)h Fk(of)f(the)g
17825 (truncated)i(searc)o(h)0 1723 y(tree,)d(and)e(this)h(limit)d(is)j
17826 (called)g(the)g Fi(horizon)g Fk(of)g(the)g(game-tree.)62
17827 1773 y(The)f Fi(alpha-b)n(eta)h Fk(\()p Fj(\013\014)r
17828 Fk(\))f(algorithm)d(impro)o(v)o(es)h(the)j(minim)o(ax)c(algorithm)g(b)o
17829 (y)i(prev)o(en)o(ting)h(exploration)f(of)g(mo)o(v)o(es)g(that)0
17830 1822 y(can)j(pro)o(v)n(ably)e(b)q(e)j(demonstrated)f(not)f(to)h
17831 (a\013ect)h(the)f(minim)o(ax)d(v)n(alue)i(ab)q(o)o(v)o(e)g(the)i(giv)o
17832 (en)e(no)q(de.)21 b(The)15 b(name)f(is)g(deriv)o(ed)0
17833 1872 y(from)f(the)i(t)o(w)o(o)f(b)q(ounds:)20 b Fj(\013)14
17834 b Fk(and)g Fj(\014)r Fk(,)h(whic)o(h)g(are)g(lo)o(w)o(er)f(and)g(upp)q
17835 (er)i(b)q(ounds)f(on)f(the)h(minim)o(ax)d(v)n(alue)i(w)o(e)g(are)h(in)o
17836 (terested)0 1922 y(in.)22 b(The)16 b(pair)f(of)g(b)q(ounds)h(is)g
17837 (often)f(referred)j(to)d(as)h(the)g Fi(se)n(ar)n(ch)g(window)f
17838 Fk(for)g(a)g(p)q(osition,)g(and)h(the)g Fj(\013\014)i
17839 Fk(algorithm)12 b(will)0 1972 y(return)j(the)g(correct)g(minim)o(ax)c
17840 (v)n(alue)i(if)g(the)i(ro)q(ot)f(is)f(searc)o(hed)j(with)d(the)i(windo)
17841 o(w)e Fj(\013)e Fk(=)h Fh(\0001)i Fk(and)f Fj(\014)i
17842 Fk(=)c(+)p Fh(1)p Fk(.)62 2022 y(An)17 b(example)e(of)h(ho)o(w)g(the)i
17843 Fj(\013\014)h Fk(algorithm)13 b(w)o(ould)j(prune)i(a)e(tree)i(is)e(giv)
17844 o(en)g(in)h(Figure)f(2.)26 b(W)m(e)16 b(kno)o(w)g(that)h(the)g(left)0
17845 2072 y(subtree)e(has)f(a)f(minim)o(ax)d(v)n(alue)j(of)g(4,)g(so)g(w)o
17846 (e)h(set)g Fj(\013)d Fk(=)h(4)h(b)q(efore)i(w)o(e)e(searc)o(h)i(the)f
17847 (righ)o(t)f(subtree.)20 b(Note)13 b(that)h(w)o(e)g(set)g
17848 Fj(\013)f Fk(at)0 2121 y(ev)o(en)i(ply)m(,)f(and)g Fj(\014)j
17849 Fk(at)e(o)q(dd)f(ply)h(from)d(the)k(ro)q(ot.)k(After)15
17850 b(lo)q(oking)e(at)i(the)g(\014rst)g(leaf)f(of)g(the)i(righ)o(t)e
17851 (subtree,)i(w)o(e)f(kno)o(w)f(that)0 2171 y(the)g(minim)o(ax)c(v)n
17852 (alue)i(of)g(the)i(righ)o(t)e(subtree)j(will)d(b)q(e)h(less)h(than)f
17853 (1.)k(Since)d Fj(\013)d Fk(=)h(4,)g(w)o(e)i(do)e(not)h(searc)o(h)h(the)
17854 g(other)g(mo)o(v)o(es)d(in)0 2221 y(the)j(righ)o(t)g(subtree.)62
17855 2271 y(If)j(w)o(e)g(searc)o(h)h(a)f(tree)h(of)e(depth)i
17856 Fj(d)f Fk(whic)o(h)f(has)i Fj(w)f Fk(mo)o(v)o(es)f(from)f(an)o(y)i(p)q
17857 (osition,)f(there)i(are)g(\002\()p Fj(w)1624 2256 y Fc(d)1643
17858 2271 y Fk(\))g(no)q(des)f(searc)o(hed)0 2321 y(with)d(the)h(minim)o(ax)
17859 c(algorithm.)17 b(Ho)o(w)o(ev)o(er,)d(if)f(a)h(\\b)q(est")h(mo)o(v)o(e)
17860 e(is)h(alw)o(a)o(ys)f(searc)o(hed)j(\014rst,)f Fj(\013\014)h
17861 Fk(can)f(reduce)h(this)e(size)h(to)0 2370 y(\002\()p
17862 Fj(w)79 2355 y Fc(d=)p Fe(2)132 2370 y Fk(\))g([13)o(].)k(The)c
17863 (structure)i(of)d(the)h Fi(critic)n(al)f(tr)n(e)n(e)g
17864 Fk(ev)n(aluated)g(in)g(the)i(optimal)11 b(case)1413 2355
17865 y Fe(2)1446 2370 y Fk(is)k(illustrated)f(in)g(in)g(Figure)h(3.)0
17866 2420 y(A)o(t)f Fb(ALL)g Fk(and)g Fb(PV)f Fk(\(Principal)h(V)m
17867 (ariation\))f(no)q(des,)h(all)f(c)o(hildren)i(are)f(searc)o(hed,)i
17868 (while)d(only)h(one)g(c)o(hild)g(of)f(eac)o(h)i Fb(CUT)f
17869 Fk(no)q(de)0 2470 y(is)g(searc)o(hed.)19 b(Note)c(that)f(in)f
17870 (practice,)i(y)o(ou)e(are)h(nev)o(er)h(certain)g(of)e(the)h(no)q(de's)h
17871 (t)o(yp)q(e)f Fi(a)h(priori)p Fk(.)62 2520 y(If)d(a)f(p)q(osition)h(o)q
17872 (ccurs)h(t)o(wice)f(within)f(the)i(tree,)g(w)o(e)f(can)g(sa)o(v)o(e)g
17873 (the)h(w)o(ork)f(of)f(exploring)g(the)i(tree)g(underneath)g(the)g(no)q
17874 (de)0 2570 y(through)f(the)h(use)g(of)e(a)h(large)g(hash)g(table)g
17875 (whic)o(h)g(stores)h(previously)f(ev)n(aluated)g(p)q(ositions)g(and)g
17876 (scores.)19 b(This)12 b(hash)g(table)p 0 2604 780 2 v
17877 46 2631 a Fd(2)64 2643 y Fg(The)e(critical)e(tree)i(is)g(not)g
17878 (necessarily)e(the)h(smallest)g(tree)g(that)h(can)f(b)q(e)h(searc)o
17879 (hed)e(in)i(practice,)f(since)g(transp)q(osition)o(s)f(are)i(not)f(tak)
17880 o(en)g(in)o(to)0 2682 y(accoun)o(t)g([21)o(].)965 2790
17884 13640505 7104430 9341009 26641612 30851645 37824512 startTexFig
17886 %%BeginDocument: candid23.ps
17888 /arrowHeight 10 def
17891 /IdrawDict 52 dict def
17895 dup dup findfont dup length dict begin
17896 { 1 index /FID ne { def }{ pop pop } ifelse } forall
17897 /Encoding ISOLatin1Encoding def
17898 currentdict end definefont
17901 /ISOLatin1Encoding [
17902 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
17903 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
17904 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
17905 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
17906 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
17907 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
17908 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
17909 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
17910 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
17911 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
17912 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
17913 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
17914 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
17915 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
17916 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
17917 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
17918 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
17919 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
17920 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
17921 /guillemotright/onequarter/onehalf/threequarters/questiondown
17922 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
17923 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
17924 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
17925 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
17926 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
17927 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
17928 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
17929 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
17930 /yacute/thorn/ydieresis
17932 /Helvetica reencodeISO def
17933 /Helvetica-Bold reencodeISO def
17936 /numGraphicParameters 17 def
17937 /stringLimit 65535 def
17941 numGraphicParameters dict begin
17950 dup type /nulltype eq {
17952 false /brushRightArrow idef
17953 false /brushLeftArrow idef
17954 true /brushNone idef
17956 /brushDashOffset idef
17957 /brushDashArray idef
17958 0 ne /brushRightArrow idef
17959 0 ne /brushLeftArrow idef
17961 false /brushNone idef
17983 dup type /nulltype eq {
17984 pop true /patternNone idef
17987 /patternGrayLevel idef
17988 /patternString idef
17990 /patternGrayLevel idef
17992 false /patternNone idef
18001 0 0 0 0 0 0 1 1 true subspline
18003 0 0 0 0 1 1 2 2 false subspline
18006 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
18008 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
18010 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
18011 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
18012 brushNone not { istroke } if
18014 n 2 sub dup n 1 sub dup rightarrow
18017 } dup 0 4 dict put def
18022 patternNone not { ifill } if
18023 brushNone not { istroke } if
18031 n 1 sub dup 0 0 1 1 2 2 true subspline
18034 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
18036 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
18037 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
18038 patternNone not { ifill } if
18039 brushNone not { istroke } if
18044 } dup 0 4 dict put def
18053 patternNone not { ifill } if
18054 brushNone not { istroke } if
18056 } dup 0 1 dict put def
18062 x 0 get y 0 get moveto
18063 x 1 get y 1 get lineto
18064 brushNone not { istroke } if
18068 } dup 0 4 dict put def
18075 x 0 get y 0 get moveto
18078 x i get y i get lineto
18080 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
18081 brushNone not { istroke } if
18083 n 2 sub dup n 1 sub dup rightarrow
18086 } dup 0 4 dict put def
18095 patternNone not { ifill } if
18096 brushNone not { istroke } if
18111 patternNone not { ifill } if
18112 brushNone not { istroke } if
18114 } dup 0 4 dict put def
18121 dup where { pop pop pop } { exch def } ifelse
18127 patternGrayLevel -1 ne {
18128 fgred bgred fgred sub patternGrayLevel mul add
18129 fggreen bggreen fggreen sub patternGrayLevel mul add
18130 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
18134 originalCTM setmatrix
18135 pathbbox /t exch def /r exch def /b exch def /l exch def
18136 /w r l sub ceiling cvi def
18137 /h t b sub ceiling cvi def
18138 /imageByteWidth w 8 div ceiling cvi def
18140 bgred bggreen bgblue setrgbcolor
18142 fgred fggreen fgblue setrgbcolor
18143 w 0 gt h 0 gt and {
18144 l b translate w h scale
18145 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
18150 } dup 0 8 dict put def
18154 brushDashOffset -1 eq {
18158 brushDashArray brushDashOffset setdash
18159 fgred fggreen fgblue setrgbcolor
18161 brushWidth setlinewidth
18162 originalCTM setmatrix
18170 fgred fggreen fgblue setrgbcolor
18171 /fontDict printFont printSize scalefont dup setfont def
18172 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
18173 transform exch pop def
18174 /vertoffset 1 printSize sub descender sub def {
18175 0 vertoffset moveto show
18176 /vertoffset vertoffset printSize sub def
18180 } dup 0 3 dict put def
18183 /patternByteLength patternString length def
18184 /patternHeight patternByteLength 8 mul sqrt cvi def
18185 /patternWidth patternHeight def
18186 /patternByteWidth patternWidth 8 idiv def
18187 /imageByteMaxLength imageByteWidth imageHeight mul
18188 stringLimit patternByteWidth sub min def
18189 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
18190 patternHeight mul patternHeight max def
18191 /imageHeight imageHeight imageMaxHeight sub store
18192 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
18193 0 1 imageMaxHeight 1 sub {
18195 /patternRow y patternByteWidth mul patternByteLength mod def
18196 /patternRowString patternString patternRow patternByteWidth getinterval def
18197 /imageRow y imageByteWidth mul def
18198 0 patternByteWidth imageByteWidth 1 sub {
18200 imageString imageRow x add patternRowString putinterval
18205 } dup 0 12 dict put def
18208 dup 3 2 roll dup 4 3 roll lt { exch } if pop
18212 dup 3 2 roll dup 4 3 roll gt { exch } if pop
18224 } dup 0 4 dict put def
18232 x0 2 mul x1 add 3 div
18233 y0 2 mul y1 add 3 div
18235 } dup 0 4 dict put def
18239 /movetoNeeded exch def
18240 y exch get /y3 exch def
18241 x exch get /x3 exch def
18242 y exch get /y2 exch def
18243 x exch get /x2 exch def
18244 y exch get /y1 exch def
18245 x exch get /x1 exch def
18246 y exch get /y0 exch def
18247 x exch get /x0 exch def
18248 x1 y1 x2 y2 thirdpoint
18251 x2 y2 x1 y1 thirdpoint
18254 x1 y1 x0 y0 thirdpoint
18258 x2 y2 x3 y3 thirdpoint
18262 movetoNeeded { p0x p0y moveto } if
18263 p1x p1y p2x p2y p3x p3y curveto
18265 } dup 0 17 dict put def
18279 fgred fggreen fgblue setrgbcolor
18280 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
18284 dup 3 -1 roll dup 4 1 roll exch
18288 exch dup 3 1 roll exch lineto
18291 bgred bggreen bgblue setrgbcolor
18297 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
18303 transform originalCTM itransform
18306 transform originalCTM itransform
18309 /dy tipy taily sub def
18310 /dx tipx tailx sub def
18311 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
18313 originalCTM setmatrix
18314 tipx tipy translate
18317 arrowHeight neg arrowWidth 2 div moveto
18319 arrowHeight neg arrowWidth 2 div neg lineto
18321 originalCTM setmatrix
18322 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
18324 /padtail brushWidth 2 div def
18325 tipx tipy translate
18328 arrowHeight padtip add padtail add arrowHeight div dup scale
18333 originalCTM setmatrix
18334 tipx tipy translate
18341 } dup 0 9 dict put def
18345 arrowHeight neg arrowWidth 2 div moveto
18347 arrowHeight neg arrowWidth 2 div neg lineto
18352 y exch get /taily exch def
18353 x exch get /tailx exch def
18354 y exch get /tipy exch def
18355 x exch get /tipx exch def
18356 brushLeftArrow { tipx tipy tailx taily arrowhead } if
18358 } dup 0 4 dict put def
18362 y exch get /tipy exch def
18363 x exch get /tipx exch def
18364 y exch get /taily exch def
18365 x exch get /tailx exch def
18366 brushRightArrow { tipx tipy tailx taily arrowhead } if
18368 } dup 0 4 dict put def
18371 %I Idraw 10 Grid 2.49158 2.49158
18381 [ 0.799705 0 0 0.799705 0 0 ] concat
18382 /originalCTM matrix currentmatrix def
18393 [ 1 -0 -0 1 174 230 ] concat
18408 [ 1 -0 -0 1 174 230 ] concat
18423 [ 1 -0 -0 1 174 230 ] concat
18425 65 368 110 293 Line
18438 [ 1 0 0 1 85 230 ] concat
18440 304 368 260 293 Line
18446 1 0 0 [12 4] 0 SetB
18453 [ 1 0 0 1 85 230 ] concat
18455 304 368 304 293 Line
18461 1 0 0 [12 4] 0 SetB
18468 [ 1 0 0 1 85 230 ] concat
18470 304 368 349 293 Line
18483 [ 1 -0 -0 1 174 230 ] concat
18485 65 368 140 443 Line
18498 [ 1 -0 -0 1 174 230 ] concat
18500 140 443 215 368 Line
18514 [ 1 -0 -0 1 174 230 ] concat
18529 [ 1 -0 -0 1 174 230 ] concat
18544 [ 1 -0 -0 1 174 230 ] concat
18559 [ 1 -0 -0 1 174 230 ] concat
18574 [ 1 -0 -0 1 174 230 ] concat
18589 [ 1 -0 -0 1 174 230 ] concat
18604 [ 1 -0 -0 1 174 230 ] concat
18619 [ 1 -0 -0 1 174 230 ] concat
18634 [ 1 -0 -0 1 174 230 ] concat
18642 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
18645 [ 1 0 0 1 237 601 ] concat
18655 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
18658 [ 1 0 0 1 192 526 ] concat
18668 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
18671 [ 1 0 0 1 236 526 ] concat
18681 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
18684 [ 1 0 0 1 282 527 ] concat
18694 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
18697 [ 1 0 0 1 341 526 ] concat
18707 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
18710 [ 1 0 0 1 388 527 ] concat
18720 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
18723 [ 1 0 0 1 423 527 ] concat
18732 1 0 0 [12 4] 0 SetB
18740 [ 1 -0 -0 1 122 228 ] concat
18742 272 480 326 480 Line
18749 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
18750 Helvetica-Bold 14 SetF
18752 [ 1 0 0 1 199 651 ] concat
18761 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
18762 Helvetica-Bold 14 SetF
18764 [ 1 0 0 1 359 653 ] concat
18774 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
18777 [ 1 0 0 1 379 603 ] concat
18794 [ 1 -0 -0 1 122 230 ] concat
18796 257 328 297 338 Line
18803 %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
18804 Helvetica-Bold 14 SetF
18806 [ 1 0 0 1 458 716 ] concat
18810 (are never explored)
18823 648 541 a Fk(Figure)14 b(2:)k(Example)12 b(of)i(an)f
18824 Fj(\013\014)k Fk(Cut-o\013)637 599 y
18825 10656645 7104430 5130977 18813583 31443681 36245749 startTexFig
18827 %%BeginDocument: candid24.ps
18829 /arrowHeight 10 def
18832 /IdrawDict 51 dict def
18836 dup dup findfont dup length dict begin
18837 { 1 index /FID ne { def }{ pop pop } ifelse } forall
18838 /Encoding ISOLatin1Encoding def
18839 currentdict end definefont
18842 /ISOLatin1Encoding [
18843 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
18844 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
18845 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
18846 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
18847 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
18848 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
18849 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
18850 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
18851 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
18852 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
18853 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
18854 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
18855 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
18856 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
18857 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
18858 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
18859 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
18860 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
18861 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
18862 /guillemotright/onequarter/onehalf/threequarters/questiondown
18863 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
18864 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
18865 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
18866 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
18867 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
18868 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
18869 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
18870 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
18871 /yacute/thorn/ydieresis
18873 /Helvetica reencodeISO def
18876 /numGraphicParameters 17 def
18877 /stringLimit 65535 def
18881 numGraphicParameters dict begin
18890 dup type /nulltype eq {
18892 false /brushRightArrow idef
18893 false /brushLeftArrow idef
18894 true /brushNone idef
18896 /brushDashOffset idef
18897 /brushDashArray idef
18898 0 ne /brushRightArrow idef
18899 0 ne /brushLeftArrow idef
18901 false /brushNone idef
18923 dup type /nulltype eq {
18924 pop true /patternNone idef
18927 /patternGrayLevel idef
18928 /patternString idef
18930 /patternGrayLevel idef
18932 false /patternNone idef
18941 0 0 0 0 0 0 1 1 true subspline
18943 0 0 0 0 1 1 2 2 false subspline
18946 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
18948 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
18950 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
18951 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
18952 brushNone not { istroke } if
18954 n 2 sub dup n 1 sub dup rightarrow
18957 } dup 0 4 dict put def
18962 patternNone not { ifill } if
18963 brushNone not { istroke } if
18971 n 1 sub dup 0 0 1 1 2 2 true subspline
18974 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
18976 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
18977 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
18978 patternNone not { ifill } if
18979 brushNone not { istroke } if
18984 } dup 0 4 dict put def
18993 patternNone not { ifill } if
18994 brushNone not { istroke } if
18996 } dup 0 1 dict put def
19002 x 0 get y 0 get moveto
19003 x 1 get y 1 get lineto
19004 brushNone not { istroke } if
19008 } dup 0 4 dict put def
19015 x 0 get y 0 get moveto
19018 x i get y i get lineto
19020 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
19021 brushNone not { istroke } if
19023 n 2 sub dup n 1 sub dup rightarrow
19026 } dup 0 4 dict put def
19035 patternNone not { ifill } if
19036 brushNone not { istroke } if
19051 patternNone not { ifill } if
19052 brushNone not { istroke } if
19054 } dup 0 4 dict put def
19061 dup where { pop pop pop } { exch def } ifelse
19067 patternGrayLevel -1 ne {
19068 fgred bgred fgred sub patternGrayLevel mul add
19069 fggreen bggreen fggreen sub patternGrayLevel mul add
19070 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
19074 originalCTM setmatrix
19075 pathbbox /t exch def /r exch def /b exch def /l exch def
19076 /w r l sub ceiling cvi def
19077 /h t b sub ceiling cvi def
19078 /imageByteWidth w 8 div ceiling cvi def
19080 bgred bggreen bgblue setrgbcolor
19082 fgred fggreen fgblue setrgbcolor
19083 w 0 gt h 0 gt and {
19084 l b translate w h scale
19085 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
19090 } dup 0 8 dict put def
19094 brushDashOffset -1 eq {
19098 brushDashArray brushDashOffset setdash
19099 fgred fggreen fgblue setrgbcolor
19101 brushWidth setlinewidth
19102 originalCTM setmatrix
19110 fgred fggreen fgblue setrgbcolor
19111 /fontDict printFont printSize scalefont dup setfont def
19112 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
19113 transform exch pop def
19114 /vertoffset 1 printSize sub descender sub def {
19115 0 vertoffset moveto show
19116 /vertoffset vertoffset printSize sub def
19120 } dup 0 3 dict put def
19123 /patternByteLength patternString length def
19124 /patternHeight patternByteLength 8 mul sqrt cvi def
19125 /patternWidth patternHeight def
19126 /patternByteWidth patternWidth 8 idiv def
19127 /imageByteMaxLength imageByteWidth imageHeight mul
19128 stringLimit patternByteWidth sub min def
19129 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
19130 patternHeight mul patternHeight max def
19131 /imageHeight imageHeight imageMaxHeight sub store
19132 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
19133 0 1 imageMaxHeight 1 sub {
19135 /patternRow y patternByteWidth mul patternByteLength mod def
19136 /patternRowString patternString patternRow patternByteWidth getinterval def
19137 /imageRow y imageByteWidth mul def
19138 0 patternByteWidth imageByteWidth 1 sub {
19140 imageString imageRow x add patternRowString putinterval
19145 } dup 0 12 dict put def
19148 dup 3 2 roll dup 4 3 roll lt { exch } if pop
19152 dup 3 2 roll dup 4 3 roll gt { exch } if pop
19164 } dup 0 4 dict put def
19172 x0 2 mul x1 add 3 div
19173 y0 2 mul y1 add 3 div
19175 } dup 0 4 dict put def
19179 /movetoNeeded exch def
19180 y exch get /y3 exch def
19181 x exch get /x3 exch def
19182 y exch get /y2 exch def
19183 x exch get /x2 exch def
19184 y exch get /y1 exch def
19185 x exch get /x1 exch def
19186 y exch get /y0 exch def
19187 x exch get /x0 exch def
19188 x1 y1 x2 y2 thirdpoint
19191 x2 y2 x1 y1 thirdpoint
19194 x1 y1 x0 y0 thirdpoint
19198 x2 y2 x3 y3 thirdpoint
19202 movetoNeeded { p0x p0y moveto } if
19203 p1x p1y p2x p2y p3x p3y curveto
19205 } dup 0 17 dict put def
19219 fgred fggreen fgblue setrgbcolor
19220 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
19224 dup 3 -1 roll dup 4 1 roll exch
19228 exch dup 3 1 roll exch lineto
19231 bgred bggreen bgblue setrgbcolor
19237 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
19243 transform originalCTM itransform
19246 transform originalCTM itransform
19249 /dy tipy taily sub def
19250 /dx tipx tailx sub def
19251 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
19253 originalCTM setmatrix
19254 tipx tipy translate
19257 arrowHeight neg arrowWidth 2 div moveto
19259 arrowHeight neg arrowWidth 2 div neg lineto
19261 originalCTM setmatrix
19262 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
19264 /padtail brushWidth 2 div def
19265 tipx tipy translate
19268 arrowHeight padtip add padtail add arrowHeight div dup scale
19273 originalCTM setmatrix
19274 tipx tipy translate
19281 } dup 0 9 dict put def
19285 arrowHeight neg arrowWidth 2 div moveto
19287 arrowHeight neg arrowWidth 2 div neg lineto
19292 y exch get /taily exch def
19293 x exch get /tailx exch def
19294 y exch get /tipy exch def
19295 x exch get /tipx exch def
19296 brushLeftArrow { tipx tipy tailx taily arrowhead } if
19298 } dup 0 4 dict put def
19302 y exch get /tipy exch def
19303 x exch get /tipx exch def
19304 y exch get /taily exch def
19305 x exch get /tailx exch def
19306 brushRightArrow { tipx tipy tailx taily arrowhead } if
19308 } dup 0 4 dict put def
19311 %I Idraw 10 Grid 4.98316 4.98316
19321 [ 0.799705 0 0 0.799705 0 0 ] concat
19322 /originalCTM matrix currentmatrix def
19334 [ 1 -0 -0 1 174 230 ] concat
19336 200 443 200 353 Line
19350 [ 1 -0 -0 1 174 230 ] concat
19352 200 443 349 353 Line
19366 [ 1 -0 -0 1 174 230 ] concat
19368 200 443 50 353 Line
19382 [ 1 -0 -0 1 174 230 ] concat
19398 [ 1 -0 -0 1 174 230 ] concat
19400 50 353 110 263 Line
19414 [ 1 -0 -0 1 174 230 ] concat
19430 [ 1 -0 -0 1 70 230 ] concat
19432 109 263 65 174 Line
19446 [ 1 -0 -0 1 70 230 ] concat
19448 109 263 109 174 Line
19462 [ 1 -0 -0 1 70 230 ] concat
19464 109 263 154 174 Line
19478 [ 1 -0 -0 1 70 230 ] concat
19480 169 263 199 174 Line
19494 [ 1 -0 -0 1 70 230 ] concat
19496 214 263 244 174 Line
19510 [ 1 -0 -0 1 70 230 ] concat
19526 [ 1 -0 -0 1 70 230 ] concat
19542 [ 1 -0 -0 1 70 230 ] concat
19558 [ 1 -0 -0 1 70 230 ] concat
19574 [ 1 -0 -0 1 70 230 ] concat
19590 [ 1 -0 -0 1 70 230 ] concat
19592 109 174 102 129 Line
19606 [ 1 -0 -0 1 70 230 ] concat
19608 154 174 147 129 Line
19622 [ 1 -0 -0 1 70 230 ] concat
19624 199 174 184 129 Line
19638 [ 1 -0 -0 1 70 230 ] concat
19640 199 174 192 129 Line
19654 [ 1 -0 -0 1 70 230 ] concat
19656 199 174 199 129 Line
19670 [ 1 -0 -0 1 70 230 ] concat
19672 199 174 207 129 Line
19686 [ 1 -0 -0 1 70 230 ] concat
19688 199 174 214 129 Line
19702 [ 1 -0 -0 1 70 230 ] concat
19704 244 174 229 129 Line
19718 [ 1 -0 -0 1 70 230 ] concat
19720 236 129 244 174 Line
19734 [ 1 -0 -0 1 70 230 ] concat
19736 244 174 244 129 Line
19750 [ 1 -0 -0 1 70 230 ] concat
19752 244 174 251 129 Line
19766 [ 1 -0 -0 1 70 230 ] concat
19768 244 174 259 129 Line
19782 [ 1 -0 -0 1 70 230 ] concat
19794 [ 1 0 0 1 150 0 ] concat
19806 [ 1 -0 -0 1 70 230 ] concat
19808 139 428 169 458 Rect
19814 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
19817 [ 1 0 0 1 214 676 ] concat
19833 [ 1 0 0 1 0 -90 ] concat
19845 [ 1 -0 -0 1 70 230 ] concat
19847 139 428 169 458 Rect
19853 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
19856 [ 1 0 0 1 214 676 ] concat
19872 [ 1 0 0 1 -45 -180 ] concat
19884 [ 1 -0 -0 1 70 230 ] concat
19886 139 428 169 458 Rect
19892 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
19895 [ 1 0 0 1 214 676 ] concat
19911 [ 1 0 0 1 -89 -269 ] concat
19923 [ 1 -0 -0 1 70 230 ] concat
19925 139 428 169 458 Rect
19931 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
19934 [ 1 0 0 1 214 676 ] concat
19950 [ 1 0 0 1 46 -269 ] concat
19962 [ 1 -0 -0 1 70 230 ] concat
19964 139 428 169 458 Rect
19970 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
19973 [ 1 0 0 1 214 676 ] concat
19989 [ 1 0 0 1 90 -269 ] concat
20001 [ 1 -0 -0 1 70 230 ] concat
20003 139 428 169 458 Rect
20009 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20012 [ 1 0 0 1 214 676 ] concat
20031 [ 1 0 0 1 85 230 ] concat
20033 304 263 274 174 Line
20047 [ 1 0 0 1 85 230 ] concat
20049 304 263 319 174 Line
20063 [ 1 0 0 1 85 230 ] concat
20065 304 263 364 174 Line
20079 [ 1 0 0 1 189 230 ] concat
20081 304 174 349 263 Line
20095 [ 1 0 0 1 189 230 ] concat
20097 349 263 349 174 Line
20111 [ 1 0 0 1 189 230 ] concat
20113 349 263 394 174 Line
20127 [ 1 0 0 1 85 230 ] concat
20129 274 174 274 129 Line
20143 [ 1 0 0 1 85 230 ] concat
20145 319 174 319 129 Line
20159 [ 1 0 0 1 85 230 ] concat
20161 364 174 364 136 Line
20175 [ 1 0 0 1 85 230 ] concat
20177 364 136 364 129 Line
20191 [ 1 0 0 1 241 230 ] concat
20193 252 174 252 136 Line
20207 [ 1 0 0 1 241 230 ] concat
20209 297 174 297 129 Line
20223 [ 1 0 0 1 241 230 ] concat
20225 252 136 252 129 Line
20239 [ 1 0 0 1 241 230 ] concat
20241 342 174 342 129 Line
20252 [ 1 0 0 1 224 -269 ] concat
20264 [ 1 -0 -0 1 70 230 ] concat
20272 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20275 [ 1 0 0 1 124 678 ] concat
20294 [ 1 -0 -0 1 226 230 ] concat
20296 148 353 163 263 Line
20307 [ 1 0 0 1 165 -180 ] concat
20319 [ 1 -0 -0 1 70 230 ] concat
20321 139 428 169 458 Rect
20327 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20330 [ 1 0 0 1 214 676 ] concat
20349 [ 1 -0 -0 1 226 230 ] concat
20351 297 353 312 263 Line
20362 [ 1 0 0 1 314 -180 ] concat
20374 [ 1 -0 -0 1 70 230 ] concat
20376 139 428 169 458 Rect
20382 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20385 [ 1 0 0 1 214 676 ] concat
20401 [ 1 0 0 1 89 -269 ] concat
20413 [ 1 -0 -0 1 70 230 ] concat
20421 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20424 [ 1 0 0 1 124 678 ] concat
20440 [ 1 0 0 1 44 -269 ] concat
20452 [ 1 -0 -0 1 70 230 ] concat
20460 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20463 [ 1 0 0 1 124 678 ] concat
20479 [ 1 0 0 1 269 -269 ] concat
20491 [ 1 -0 -0 1 70 230 ] concat
20499 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20502 [ 1 0 0 1 124 678 ] concat
20518 [ 1 0 0 1 149 -180 ] concat
20530 [ 1 -0 -0 1 70 230 ] concat
20538 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20541 [ 1 0 0 1 124 678 ] concat
20557 [ 1 0 0 1 104 -180 ] concat
20569 [ 1 -0 -0 1 70 230 ] concat
20577 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20580 [ 1 0 0 1 124 678 ] concat
20596 [ 1 0 0 1 239 -90 ] concat
20608 [ 1 -0 -0 1 70 230 ] concat
20616 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20619 [ 1 0 0 1 124 678 ] concat
20635 [ 1 0 0 1 388 -90 ] concat
20647 [ 1 -0 -0 1 70 230 ] concat
20655 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20658 [ 1 0 0 1 124 678 ] concat
20674 [ 1 0 0 1 313 -269 ] concat
20686 [ 1 -0 -0 1 70 230 ] concat
20694 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20697 [ 1 0 0 1 124 678 ] concat
20713 [ 1 0 0 1 358 -269 ] concat
20725 [ 1 -0 -0 1 70 230 ] concat
20733 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20736 [ 1 0 0 1 124 678 ] concat
20752 [ 1 0 0 1 403 -269 ] concat
20764 [ 1 -0 -0 1 70 230 ] concat
20772 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20775 [ 1 0 0 1 124 678 ] concat
20791 [ 1 0 0 1 448 -269 ] concat
20803 [ 1 -0 -0 1 70 230 ] concat
20811 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20814 [ 1 0 0 1 124 678 ] concat
20826 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20829 [ 1 0 0 1 339 684 ] concat
20839 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20842 [ 1 0 0 1 189 594 ] concat
20852 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20855 [ 1 0 0 1 144 504 ] concat
20865 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
20868 [ 1 0 0 1 100 415 ] concat
20884 557 1141 a Fk(Figure)d(3:)k(Structure)e(of)d(the)i(Critical)e(Game-T)m
20885 (ree)0 1273 y(is)h(kno)o(wn)f(as)h(a)g Fi(tr)n(ansp)n(osition)g(table)p
20886 Fk(.)62 1323 y(Most)e(comp)q(etitiv)o(e)e(game-tree)h(programs)f(use)i
20887 Fi(iter)n(ative)f(de)n(ep)n(ening)h Fk(to)g(searc)o(h)g(the)g(tree)g
20888 ([26)o(].)17 b(After)12 b(a)f Fj(k)q Fk(-ply)f(searc)o(h,)0
20889 1373 y(a)i Fj(k)c Fk(+)g(1-ply)j(searc)o(h)j(is)f(executed)h(on)f(the)g
20890 (same)f(p)q(osition.)17 b(Although)12 b(this)h(seems)g(w)o(asteful,)f
20891 (a)h(transp)q(osition)f(table)h(and)0 1423 y(other)j(mo)o(v)o(e)d
20892 (ordering)j(tec)o(hniques)g(can)f(often)h(pro)o(vide)f(a)g(v)o(ery)g
20893 (accurate)i(guess)f(at)f(what)g(the)h(b)q(est)g(mo)o(v)o(e)d(is,)i(and)
20894 g(the)0 1472 y(tree)h(searc)o(hed)h(is)e(close)g(to)g(the)h(critical)f
20895 (tree)h(in)e(size.)23 b(Exp)q(erience)17 b(sho)o(ws)e(that)g(the)h(b)q
20896 (ene\014ts)g(gained)f(b)o(y)g(a)f Fj(k)q Fk(-ply)h(tree)0
20897 1522 y(as)f(a)g(prelude)g(to)g(searc)o(hing)g(a)g Fj(k)c
20898 Fk(+)g(1-ply)j(tree)i(out)o(w)o(eigh)e(the)h(costs)h([27)o(].)0
20899 1638 y Fv(2.2)56 b(P)n(arallel)18 b(Game-T)-5 b(ree)16
20900 b(Searc)n(h)0 1715 y Fk(The)e(idea)g(b)q(ehind)g(the)g(PV-Split)g
20901 (algorithm)d(has)j(pro)o(v)o(en)g(to)g(b)q(e)g(a)g(fundamen)o(tal)d
20902 (building)i(blo)q(c)o(k)g(in)h(dev)o(eloping)f(high-)0
20903 1765 y(p)q(erformance)i(parallel)e(game-tree)h(algorithms)f([17)o(].)20
20904 b(Simply)12 b(stated,)k(the)f(\014rst)g(mo)o(v)o(e)f(at)g(a)h
20905 (principal)e(v)n(ariation)h(no)q(de)0 1815 y(m)o(ust)19
20906 b(b)q(e)h(completely)f(ev)n(aluated)g(b)q(efore)i(the)f(subsequen)o(t)i
20907 (mo)o(v)o(es)c(can)i(b)q(e)g(handed)h(out)e(to)h(other)g(pro)q(cessors)
20908 i(and)0 1864 y(ev)n(aluated)13 b(in)h(parallel.)i(P)o(arallelism)c(o)q
20909 (ccurs)j(only)e(at)g(the)h Fb(PV)g Fk(no)q(des,)g(and)f(the)h(nature)h
20910 (of)e(the)h(algorithm)d(ensures)16 b(that)0 1914 y(an)10
20911 b(accurate)i(searc)o(h)g(windo)o(w)e(is)g(determined)h(b)q(efore)g
20912 (allo)q(cating)e(w)o(ork)i(to)f(the)h(sla)o(v)o(es)g(in)f(parallel,)g
20913 (whic)o(h)g(reduces)j(searc)o(h)0 1964 y(o)o(v)o(erhead.)18
20914 b(Although)c(it)f(is)h(easy)g(to)g(con)o(trol)f(the)i(PV-Split)e
20915 (algorithm)e(since)k(only)e(one)h Fb(PV)f Fk(no)q(de)h(can)g(b)q(e)h
20916 (ev)n(aluated)e(in)0 2014 y(parallel)h(at)g(a)h(giv)o(en)f(momen)o(t)e
20917 (in)i(time,)f(a)i(di\013eren)o(t)h(approac)o(h)e(is)h(needed)h(if)e(y)o
20918 (ou)g(ha)o(v)o(e)h(more)f(pro)q(cessors)j(than)d(mo)o(v)o(es)0
20919 2064 y(at)g(the)g(curren)o(t)i Fb(PV)d Fk(no)q(de.)62
20920 2114 y(Newb)q(orn's)k(UIDP)m(ABS)f(algorithm)d([19)o(])i(w)o(as)h(the)g
20921 (\014rst)g(attempt)f(to)h(async)o(hronously)g(start)g(the)g(next)h(lev)
20922 o(el)e(of)g(an)0 2163 y(iterativ)o(ely)e(deep)q(ened)k(searc)o(h)e
20923 (instead)f(of)g(sync)o(hronizing)g(at)g(the)g(ro)q(ot)g(of)g(the)h
20924 (game-tree.)j(The)c(mo)o(v)o(es)f(from)f(the)j(ro)q(ot)0
20925 2213 y(p)q(osition)d(are)h(partitioned)f(among)f(the)i(pro)q(cessors,)i
20926 (and)d(the)i(pro)q(cessors)g(searc)o(h)g(their)f(o)o(wn)g(subset)h(of)e
20927 (the)h(mo)o(v)o(es)e(with)0 2263 y(iterativ)o(e)k(deep)q(ening.)21
20928 b(Eac)o(h)15 b(pro)q(cessor)h(is)f(giv)o(en)f(the)h(same)f(initial)e
20929 (windo)o(w,)i(but)h(some)e(of)h(the)i(pro)q(cessors)g(ma)o(y)d(ha)o(v)o
20930 (e)0 2313 y(c)o(hanged)g(their)h(windo)o(ws,)e(based)i(on)f(the)g
20931 (searc)o(h)i(results)f(of)e(their)i(mo)o(v)o(es.)i(The)e(UIDP)m(ABS)f
20932 (algorithm)d(then)k(com)o(bines)0 2363 y(the)f(results)h(once)g(a)e
20933 (predetermined)h(time)f(limit)e(has)j(b)q(een)h(reac)o(hed.)k(The)c
20934 (APHID)f(algorithm)d(uses)j(the)h(basic)f(concept)0 2412
20935 y(of)g(ho)o(w)h(to)f(implemen)o(t)f(async)o(hronous)i(searc)o(h)h(from)
20936 d(UIDP)m(ABS,)i(as)g(w)o(e)g(shall)f(see)i(in)f(Section)g(3.)62
20937 2462 y(Hsu's)g(family)c(of)i(algorithms)f([9)o(])i(are)g(similar)e(in)i
20938 (design)g(to)g(the)g(APHID)h(algorithm.)h(A)e(host)g(pro)q(cessor)i(is)
20939 e(resp)q(on-)0 2512 y(sible)i(for)g(main)o(taining)d(a)k(queue)g(of)f
20940 (critical)g(tree)i(and)e(non-critical)g(tree)h(w)o(ork)g(to)f(do)g(for)
20941 g(a)g Fj(d)1548 2497 y Fa(0)1575 2512 y Fk(ply)g(searc)o(h)i(tree.)24
20942 b(The)0 2562 y(sp)q(ecial-purp)q(ose)18 b(pro)q(cessors)h(are)e(resp)q
20943 (onsible)h(for)f(the)g Fj(d)11 b Fh(\000)g Fj(d)1023
20944 2547 y Fa(0)1051 2562 y Fk(ply)16 b(at)h(the)g(b)q(ottom)f(of)g(the)h
20945 (tree,)i(b)o(y)d(con)o(tin)o(ually)f(re-)0 2612 y(questing)e(pieces)g
20946 (of)f(w)o(ork)g(from)f(the)i(t)o(w)o(o)f(queues.)18 b(As)13
20947 b(the)g(w)o(ork)f(is)h(completed)e(and)i(sen)o(t)g(bac)o(k)f(to)g(the)h
20948 (main)e(pro)q(cessor,)0 2661 y(the)j(tree)h(is)e(incremen)o(tally)f(up)
20949 q(dated)i(up)f(from)f(the)i(leaf)f(no)q(de,)g(and)g(new)h(w)o(ork)f(is)
20950 h(added)f(to)h(the)g(non-critical)e(tree)j(list,)965
20953 5 6 bop 0 42 a Fk(as)15 b(necessary)m(.)21 b(Hsu)15 b(has)g(not)f
20954 (published)h(results)h(with)e(the)h(v)o(ersion)g(of)e(Deep)j(Blue)f
20955 (that)f(pla)o(y)o(ed)g(against)g(Kasparo)o(v)g(in)0 91
20956 y(F)m(ebruary)i(1996.)21 b(The)16 b(sim)o(ulation)d(results)j(presen)o
20957 (ted)i(in)d(his)g(thesis)h(predict)h(a)e(sp)q(eedup)i(of)e(350)f(on)h
20958 (1000)g(pro)q(cessors)0 141 y(although)e(these)i(results)g(ha)o(v)o(e)f
20959 (not)g(b)q(een)h(b)q(orne)f(out)g(in)g(practice)h([8)o(].)62
20960 191 y(Although)h(APHID)g(is)g(similar)d(to)j(Hsu's)g(family)d(of)i
20961 (algorithms,)f(there)j(are)g(imp)q(ortan)o(t)d(di\013erences)k(b)q(et)o
20962 (w)o(een)f(the)0 241 y(t)o(w)o(o)j(approac)o(hes.)37
20963 b(It)20 b(is)g(imp)q(ortan)o(t)f(to)h(note)g(that)g(the)h
20964 Fj(d)986 226 y Fa(0)1017 241 y Fk(ply)f(critical)f(tree)j(is)e(only)f
20965 (generated)i(once,)h(and)e(then)0 291 y(incremen)o(tally)12
20966 b(c)o(hanged)i(as)g(results)h(come)e(in)g(from)f(the)j(pro)q(cessors.)
20967 20 b(F)m(urthermore,)13 b(although)g(iterativ)o(e)g(deep)q(ening)i(is)0
20968 340 y(used)f(to)g(accomplish)e(the)i Fj(d)8 b Fh(\000)g
20969 Fj(d)520 325 y Fa(0)545 340 y Fk(ply)13 b(searc)o(h)i(on)e(the)h(sp)q
20970 (ecialized)g(pro)q(cessors,)i(there)e(is)g(no)f(concept)i(of)e(o)o
20971 (wnership)g(of)g(a)0 390 y(subtree)j(b)o(y)e(a)g(pro)q(cessor)i(in)d
20972 (Hsu's)i(algorithm.)h(Hsu's)e(original)f(design)h(did)g(not)g(include)g
20973 (a)g(concept)h(of)f(a)g(m)o(ulti-tiered)0 440 y(hierarc)o(h)o(y)e(of)e
20974 (pro)q(cessors.)20 b(Hsu's)11 b(w)o(ork)g(priorit)o(y)g(sc)o(heme)g(is)
20975 h(sligh)o(tly)d(di\013eren)o(t)k(than)e(the)h(one)f(implemen)o(ted)e
20976 (in)i(APHID.)0 490 y(Finally)m(,)f(Hsu's)i(algorithm)d(giv)o(es)j(no)g
20977 (sp)q(eculativ)o(e)g(w)o(ork)g(to)f(the)i(sp)q(ecialized)f(pro)q
20978 (cessors)i(in)e(when)g(the)h(t)o(w)o(o)e(w)o(ork)h(queues)0
20979 540 y(are)i(empt)o(y)m(.)62 589 y(The)f(Y)m(oung)f(Brothers)i(W)m(ait)c
20980 (\(YBW\))j(algorithm)d(extends)k(PV-Split)d(to)h(state)i(that)e(the)h
20981 (other)g(mo)o(v)o(es)e(\(the)i(\\y)o(oung)0 639 y(brothers"\))19
20982 b(can)e(b)q(e)h(searc)o(hed)h(in)e(parallel)f(only)g(if)h(the)h
20983 (\014rst)g(mo)o(v)o(e)e(of)g(a)h(no)q(de)h(has)g(b)q(een)g(completely)e
20984 (searc)o(hed)j(and)0 689 y(has)e(not)f(caused)h(the)g
20985 Fj(\013\014)i Fk(searc)o(h)f(to)e(b)q(e)h(pruned)g([5].)25
20986 b(Assuming)15 b(w)o(e)h(start)i(with)e(an)g(in\014nite)g(searc)o(h)i
20987 (windo)o(w)d(at)h(the)0 739 y(ro)q(ot)f(p)q(osition,)f(this)h(is)f(alw)
20988 o(a)o(ys)g(true)i(at)f Fb(PV)f Fk(no)q(des,)i(and)e(is)h(generally)f
20989 (true)i(at)f Fb(ALL)f Fk(no)q(des.)22 b(Th)o(us,)15 b(there)h(are)f(m)o
20990 (ultiple)0 789 y(p)q(oten)o(tial)d(parallel)g(no)q(des)i(at)f(an)o(y)f
20991 (giv)o(en)g(time)g(when)h(searc)o(hing)h(the)f(tree.)19
20992 b(Ho)o(w)o(ev)o(er,)13 b(the)h(searc)o(h)g(is)f(still)f(sync)o
20993 (hronized)0 839 y(in)f(the)i(same)e(w)o(a)o(y)g(that)g(PV-Split)h(is)f
20994 (sync)o(hronized.)19 b(Un)o(til)11 b(a)g(searc)o(h)i(of)e(all)g(c)o
20995 (hildren)h(of)f(a)h(giv)o(en)f Fb(PV)g Fk(no)q(de)h(is)g(completed,)0
20996 888 y(the)i(other)h(c)o(hildren)f(of)f(the)i Fb(PV)e
20997 Fk(no)q(de's)h(paren)o(t)h(cannot)f(b)q(e)g(searc)o(hed.)62
20998 938 y(Although)i(the)i Fi(synchr)n(onization)g(overhe)n(ad)f
20999 Fk(in)f(YBW)h(is)g(a)f(lot)g(smaller)f(than)i(in)f(PV-Split,)h(w)o(ork)
21000 o(ers)g(still)f(searc)o(h)0 988 y(for)e(a)h(pro)q(cessor)h(that)f(has)g
21001 (w)o(ork)g(to)f(do)h(\(according)g(to)f(the)i(YBW)e(criterion\))i(b)o
21002 (y)e(sending)h(a)g(message)f(to)h(a)f(pro)q(cessor)0
21003 1038 y(at)f(random.)j(This)e(dynamic)d(load-balancing)h(metho)q(d,)g
21004 (\\w)o(ork-stealing")g([14)o(],)g(is)h(e\013ectiv)o(e)i(in)e(balancing)
21005 f(the)i(share)h(of)0 1088 y(w)o(ork)f(done)g(on)f(eac)o(h)i(pro)q
21006 (cessor,)g(but)f(p)q(erio)q(dically)f(imp)q(oses)g(a)h(hea)o(vy)g(comm)
21007 o(unicati)o(on)d(load.)62 1137 y(In)h(the)g(implemen)o(tatio)o(n)d(of)i
21008 Ff(Zugzw)l(ang)h Fk(presen)o(ted)i(in)d(F)m(eldmann's)e(thesis)k([5)o
21009 (],)e(a)g(distributed)i(transp)q(osition)e(table)0 1187
21010 y(w)o(as)g(implemen)o(ted)e(with)j(message)f(passing)g(across)h(a)f
21011 (series)i(of)e(T)m(ransputers)i(to)e(impro)o(v)o(e)f(the)i(results)g
21012 (of)f(the)h(algorithm.)0 1237 y(On)j(a)g(system)f(where)i(only)e(a)h
21013 (small)d(n)o(um)o(b)q(er)i(of)h(no)q(des)g(can)g(b)q(e)h(pro)q(cessed)h
21014 (p)q(er)f(a)o(v)o(erage)e(message)h(latency)g(ratio,)f(this)0
21015 1287 y(t)o(yp)q(e)g(of)g(distributed)g(transp)q(osition)g(table)g(is)g
21016 (practical)f(and)h(is)g(useful)g(in)f(con)o(trolling)g(the)h(searc)o(h)
21017 h(o)o(v)o(erhead.)62 1337 y(An)i(alternativ)o(e)g(to)f(a)g(shared)i
21018 (transp)q(osition)f(table)f(is)h(the)g(idea)f(of)g(recursiv)o(e)j
21019 (iterativ)o(e)d(deep)q(ening)i(to)e(ac)o(hiev)o(e)h(a)0
21020 1386 y(b)q(etter)d(mo)o(v)o(e)c(ordering)i([14)o(].)17
21021 b(The)c(additional)d(searc)o(h)j(o)o(v)o(erhead)g(of)e(recursiv)o(e)j
21022 (iterativ)o(e)e(deep)q(ening)h(in)f(a)g(w)o(ork-stealing)0
21023 1436 y(algorithm)j(with)j(only)e(lo)q(cal)h(transp)q(osition)h(tables)g
21024 (is)g(strongly)f(dep)q(enden)o(t)j(on)d(the)i(branc)o(hing)e(factor)h
21025 (of)f(the)h(trees)0 1486 y(b)q(eing)13 b(searc)o(hed.)19
21026 b(Although)12 b(he)h(did)f(not)h(in)o(v)o(en)o(t)f(the)i(idea)953
21027 1471 y Fe(3)972 1486 y Fk(,)e(Kuszmaul)g(ac)o(hiev)o(ed)h(reasonable)g
21028 (success)i(with)d(recursiv)o(e)0 1536 y(iterativ)o(e)g(deep)q(ening)h
21029 (in)e(the)i(StarT)m(ec)o(h)f(c)o(hess)h(program,)e(b)q(oth)h(in)f(the)i
21030 (sequen)o(tial)f(program)e(with)h(a)h(lo)q(cal)f(transp)q(osition)0
21031 1586 y(table)j(and)g(the)g(parallel)f(program)f(with)i(a)f(shared)i
21032 (transp)q(osition)f(table.)k(This)c(is)f(partially)g(due)h(to)g(the)g
21033 (test)h(set)g(b)q(eing)0 1636 y(used:)k(Kaufman's)11
21034 b(test)j(set)g(of)e(tactical)h(p)q(ositions)g([11)o(,)g(12)o(])g
21035 (yields)g(p)q(ositions)f(whic)o(h)h(ha)o(v)o(e)g(rapidly)f(c)o(hanging)
21036 h(principal)0 1685 y(v)n(ariations,)i(and)h(is)g(more)f(susceptible)j
21037 (to)e(sho)o(wing)f(the)i(adv)n(an)o(tages)f(of)f(recursiv)o(e)j
21038 (iterativ)o(e)e(deep)q(ening.)26 b(It)16 b(remains)0
21039 1735 y(to)f(b)q(e)h(sho)o(wn)f(whether)i(recursiv)o(e)g(iterativ)o(e)e
21040 (deep)q(ening)h(or)f(a)g(shared)h(transp)q(osition)f(table)h(b)o(y)f
21041 (themselv)o(es)g(is)g(a)g(more)0 1785 y(e\013ectiv)o(e)g(heuristic)g
21042 (in)e(sp)q(eeding)i(up)f(a)g(w)o(ork-stealing)f(algorithm)e(on)j(a)f
21043 (\\fair")g(test)i(set.)62 1835 y(Da)o(vid's)k Fj(\013\014)r
21044 Fh(\003)i Fk(framew)o(ork)e(uses)j(a)e(global)f(transp)q(osition)h
21045 (table)h(to)f(con)o(trol)g(where)i(the)f(pro)q(cessors)i(should)d(b)q
21046 (e)0 1885 y(searc)o(hing)g([4].)35 b(By)20 b(adding)f(a)h(\014eld)g(to)
21047 g(the)g(global)f(transp)q(osition)g(table)h(to)g(indicate)g(the)g(n)o
21048 (um)o(b)q(er)f(of)h(pro)q(cessors)0 1934 y(searc)o(hing)15
21049 b(that)f(no)q(de,)g(eac)o(h)g(pro)q(cessor)i(can)e(pretend)i(it)d(is)h
21050 (searc)o(hing)h(the)f(tree)i(sequen)o(tially)m(,)c(and)i(mak)o(e)f
21051 (decisions)h(on)0 1984 y(where)h(to)f(searc)o(h)h(based)f(on)g(the)g(n)
21052 o(um)o(b)q(er)f(of)g(pro)q(cessors)j(searc)o(hing)e(the)h(c)o(hildren)f
21053 (of)f(the)h(no)q(de.)19 b(When)14 b(an)o(y)f(pro)q(cessor)0
21054 2034 y(generates)j(a)e(v)n(alue)g(for)f(the)i(ro)q(ot)g(p)q(osition,)e
21055 (the)i(searc)o(h)g(is)f(\014nished.)20 b(Unfortunately)m(,)13
21056 b(Da)o(vid's)g(metho)q(d)h(of)f(con)o(trolling)0 2084
21057 y(where)h(the)f(pro)q(cessors)i(should)e(b)q(e)h(searc)o(hing)f(w)o(as)
21058 g(ine\016cien)o(t,)f(and)h(the)g(sc)o(heme)g(w)o(as)g(hamp)q(ered)g(b)o
21059 (y)f(the)i(use)g(of)e(half)g(of)0 2134 y(the)h(T)m(ransputers)g(as)f
21060 (transp)q(osition)g(table)g(storage)g(units,)g(limiting)d(the)j(sp)q
21061 (eedup)i(rep)q(orted)f(to)f(6.5)f(on)h(16)f(T)m(ransputers.)0
21062 2183 y(Regrettably)m(,)i(no)h(w)o(ork)f(is)h(rep)q(orted)h(that)f
21063 (addresses)i(these)g(shortcomings.)62 2233 y(W)m(eill)h([29)o(])g
21064 (recognized)j(that)e(the)h(YBW)f(criterion)h(could)f(b)q(e)h(used)g(in)
21065 f(conjunction)g(with)g(the)h Fj(\013\014)r Fh(\003)f
21066 Fk(framew)o(ork.)0 2283 y(W)m(eill)c(sho)o(w)o(ed)h(the)h(com)o
21067 (bination,)d(ABD)o(AD)o(A,)h(yields)i(comparable)e(p)q(erformance)h(to)
21068 g(a)g(YBW)g(implemen)o(tation)d(on)j(a)0 2333 y(CM-5.)k(On)14
21069 b(16)g(pro)q(cessors,)i(ABD)o(AD)o(A)e(yielded)g(an)g(10-fold)f(sp)q
21070 (eedup)j(for)e(a)g(c)o(hess)h(program,)d(while)i(YBW)h(generated)0
21071 2383 y(a)f(sp)q(eedup)h(of)e(just)h(under)h(8.)62 2433
21072 y(Unfortunately)m(,)k(neither)h(of)e(these)j(sc)o(heduling)e(metho)q
21073 (ds)f(deal)h(adequately)g(with)f(arc)o(hitectures)j(that)e(ha)o(v)o(e)g
21074 (can)0 2482 y(pro)q(cess)h(a)e(high)g(n)o(um)o(b)q(er)g(of)g(no)q(des)h
21075 (p)q(er)h(a)o(v)o(erage)e(message)g(latency)m(,)h(suc)o(h)g(as)g(a)f
21076 (net)o(w)o(ork)h(of)f(w)o(orkstations.)31 b(Using)0 2532
21077 y(YBW)12 b(on)f(a)h(system)f(with)h(only)e(transp)q(osition)i(tables)g
21078 (lo)q(cal)f(to)g(eac)o(h)i(pro)q(cess)g(will)d(yield)i(large)f(searc)o
21079 (h)i(o)o(v)o(erheads,)f(since)0 2582 y(there)18 b(is)f(no)f(guaran)o
21080 (tee)h(of)f(where)i(a)f(giv)o(en)f(no)q(de)h(will)e(end)i(up)g(when)g
21081 (w)o(e)g(use)h(the)f(c)o(haotic)g(w)o(ork-stealing)e(sc)o(heduler)p
21082 0 2617 780 2 v 46 2643 a Fd(3)64 2655 y Fg(Kuszmaul)9
21083 b(states)i(that)f(b)q(oth)g(T)m(ruscott)h(and)f(Berliner)g(ha)o(v)o(e)h
21084 (used)f(recursiv)o(e)f(iterativ)o(e)h(deep)q(ening)e(in)j(the)g(past.)
21085 965 2790 y Fk(5)p eop
21088 16766447 9472573 9669918 31246336 22892052 38679674 startTexFig
21090 %%BeginDocument: draw1b.ps
21092 /arrowHeight 10 def
21095 /IdrawDict 52 dict def
21099 dup dup findfont dup length dict begin
21100 { 1 index /FID ne { def }{ pop pop } ifelse } forall
21101 /Encoding ISOLatin1Encoding def
21102 currentdict end definefont
21105 /ISOLatin1Encoding [
21106 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
21107 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
21108 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
21109 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
21110 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
21111 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
21112 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
21113 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
21114 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
21115 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
21116 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
21117 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
21118 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
21119 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
21120 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
21121 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
21122 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
21123 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
21124 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
21125 /guillemotright/onequarter/onehalf/threequarters/questiondown
21126 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
21127 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
21128 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
21129 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
21130 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
21131 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
21132 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
21133 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
21134 /yacute/thorn/ydieresis
21136 /Times-Roman reencodeISO def
21137 /Helvetica reencodeISO def
21140 /numGraphicParameters 17 def
21141 /stringLimit 65535 def
21145 numGraphicParameters dict begin
21154 dup type /nulltype eq {
21156 false /brushRightArrow idef
21157 false /brushLeftArrow idef
21158 true /brushNone idef
21160 /brushDashOffset idef
21161 /brushDashArray idef
21162 0 ne /brushRightArrow idef
21163 0 ne /brushLeftArrow idef
21165 false /brushNone idef
21187 dup type /nulltype eq {
21188 pop true /patternNone idef
21191 /patternGrayLevel idef
21192 /patternString idef
21194 /patternGrayLevel idef
21196 false /patternNone idef
21205 0 0 0 0 0 0 1 1 true subspline
21207 0 0 0 0 1 1 2 2 false subspline
21210 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
21212 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
21214 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
21215 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
21216 brushNone not { istroke } if
21218 n 2 sub dup n 1 sub dup rightarrow
21221 } dup 0 4 dict put def
21226 patternNone not { ifill } if
21227 brushNone not { istroke } if
21235 n 1 sub dup 0 0 1 1 2 2 true subspline
21238 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
21240 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
21241 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
21242 patternNone not { ifill } if
21243 brushNone not { istroke } if
21248 } dup 0 4 dict put def
21257 patternNone not { ifill } if
21258 brushNone not { istroke } if
21260 } dup 0 1 dict put def
21266 x 0 get y 0 get moveto
21267 x 1 get y 1 get lineto
21268 brushNone not { istroke } if
21272 } dup 0 4 dict put def
21279 x 0 get y 0 get moveto
21282 x i get y i get lineto
21284 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
21285 brushNone not { istroke } if
21287 n 2 sub dup n 1 sub dup rightarrow
21290 } dup 0 4 dict put def
21299 patternNone not { ifill } if
21300 brushNone not { istroke } if
21315 patternNone not { ifill } if
21316 brushNone not { istroke } if
21318 } dup 0 4 dict put def
21325 dup where { pop pop pop } { exch def } ifelse
21331 patternGrayLevel -1 ne {
21332 fgred bgred fgred sub patternGrayLevel mul add
21333 fggreen bggreen fggreen sub patternGrayLevel mul add
21334 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
21338 originalCTM setmatrix
21339 pathbbox /t exch def /r exch def /b exch def /l exch def
21340 /w r l sub ceiling cvi def
21341 /h t b sub ceiling cvi def
21342 /imageByteWidth w 8 div ceiling cvi def
21344 bgred bggreen bgblue setrgbcolor
21346 fgred fggreen fgblue setrgbcolor
21347 w 0 gt h 0 gt and {
21348 l b translate w h scale
21349 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
21354 } dup 0 8 dict put def
21358 brushDashOffset -1 eq {
21362 brushDashArray brushDashOffset setdash
21363 fgred fggreen fgblue setrgbcolor
21365 brushWidth setlinewidth
21366 originalCTM setmatrix
21374 fgred fggreen fgblue setrgbcolor
21375 /fontDict printFont printSize scalefont dup setfont def
21376 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
21377 transform exch pop def
21378 /vertoffset 1 printSize sub descender sub def {
21379 0 vertoffset moveto show
21380 /vertoffset vertoffset printSize sub def
21384 } dup 0 3 dict put def
21387 /patternByteLength patternString length def
21388 /patternHeight patternByteLength 8 mul sqrt cvi def
21389 /patternWidth patternHeight def
21390 /patternByteWidth patternWidth 8 idiv def
21391 /imageByteMaxLength imageByteWidth imageHeight mul
21392 stringLimit patternByteWidth sub min def
21393 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
21394 patternHeight mul patternHeight max def
21395 /imageHeight imageHeight imageMaxHeight sub store
21396 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
21397 0 1 imageMaxHeight 1 sub {
21399 /patternRow y patternByteWidth mul patternByteLength mod def
21400 /patternRowString patternString patternRow patternByteWidth getinterval def
21401 /imageRow y imageByteWidth mul def
21402 0 patternByteWidth imageByteWidth 1 sub {
21404 imageString imageRow x add patternRowString putinterval
21409 } dup 0 12 dict put def
21412 dup 3 2 roll dup 4 3 roll lt { exch } if pop
21416 dup 3 2 roll dup 4 3 roll gt { exch } if pop
21428 } dup 0 4 dict put def
21436 x0 2 mul x1 add 3 div
21437 y0 2 mul y1 add 3 div
21439 } dup 0 4 dict put def
21443 /movetoNeeded exch def
21444 y exch get /y3 exch def
21445 x exch get /x3 exch def
21446 y exch get /y2 exch def
21447 x exch get /x2 exch def
21448 y exch get /y1 exch def
21449 x exch get /x1 exch def
21450 y exch get /y0 exch def
21451 x exch get /x0 exch def
21452 x1 y1 x2 y2 thirdpoint
21455 x2 y2 x1 y1 thirdpoint
21458 x1 y1 x0 y0 thirdpoint
21462 x2 y2 x3 y3 thirdpoint
21466 movetoNeeded { p0x p0y moveto } if
21467 p1x p1y p2x p2y p3x p3y curveto
21469 } dup 0 17 dict put def
21483 fgred fggreen fgblue setrgbcolor
21484 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
21488 dup 3 -1 roll dup 4 1 roll exch
21492 exch dup 3 1 roll exch lineto
21495 bgred bggreen bgblue setrgbcolor
21501 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
21507 transform originalCTM itransform
21510 transform originalCTM itransform
21513 /dy tipy taily sub def
21514 /dx tipx tailx sub def
21515 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
21517 originalCTM setmatrix
21518 tipx tipy translate
21521 arrowHeight neg arrowWidth 2 div moveto
21523 arrowHeight neg arrowWidth 2 div neg lineto
21525 originalCTM setmatrix
21526 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
21528 /padtail brushWidth 2 div def
21529 tipx tipy translate
21532 arrowHeight padtip add padtail add arrowHeight div dup scale
21537 originalCTM setmatrix
21538 tipx tipy translate
21545 } dup 0 9 dict put def
21549 arrowHeight neg arrowWidth 2 div moveto
21551 arrowHeight neg arrowWidth 2 div neg lineto
21556 y exch get /taily exch def
21557 x exch get /tailx exch def
21558 y exch get /tipy exch def
21559 x exch get /tipx exch def
21560 brushLeftArrow { tipx tipy tailx taily arrowhead } if
21562 } dup 0 4 dict put def
21566 y exch get /tipy exch def
21567 x exch get /tipx exch def
21568 y exch get /taily exch def
21569 x exch get /tailx exch def
21570 brushRightArrow { tipx tipy tailx taily arrowhead } if
21572 } dup 0 4 dict put def
21575 %I Idraw 10 Grid 3 3
21585 [ 0.799705 0 0 0.799705 0 0 ] concat
21586 /originalCTM matrix currentmatrix def
21597 [ 1 -0 -0 1 122 296 ] concat
21599 117 437 65 332 Line
21612 [ 1 -0 -0 1 122 296 ] concat
21614 117 437 162 332 Line
21627 [ 1 0 0 1 271 296 ] concat
21629 117 437 65 332 Line
21642 [ 1 0 0 1 271 296 ] concat
21644 117 437 162 332 Line
21651 %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-*
21652 Times-Roman 12 SetF
21654 [ 1 0 0 1 217 609 ] concat
21669 [ 1 0 0 1 26.5 123.5 ] concat
21680 [ 1 -0 -0 1 122 296 ] concat
21695 [ 1 -0 -0 1 122 296 ] concat
21711 [ 1 0 0 1 30.5 123 ] concat
21722 [ 1 -0 -0 1 122 296 ] concat
21737 [ 1 -0 -0 1 122 296 ] concat
21753 [ 1 0 0 1 33.5 123 ] concat
21764 [ 1 -0 -0 1 122 296 ] concat
21779 [ 1 -0 -0 1 122 296 ] concat
21795 [ 1 0 0 1 37.5 123 ] concat
21806 [ 1 -0 -0 1 122 296 ] concat
21821 [ 1 -0 -0 1 122 296 ] concat
21837 [ 1 0 0 1 42 123.5 ] concat
21848 [ 1 -0 -0 1 122 296 ] concat
21863 [ 1 -0 -0 1 122 296 ] concat
21879 [ 1 0 0 1 45 123.5 ] concat
21890 [ 1 -0 -0 1 122 296 ] concat
21905 [ 1 -0 -0 1 122 296 ] concat
21921 [ 1 0 0 1 49 123.5 ] concat
21932 [ 1 -0 -0 1 122 296 ] concat
21947 [ 1 -0 -0 1 122 296 ] concat
21963 [ 1 0 0 1 52.5 123.5 ] concat
21974 [ 1 -0 -0 1 122 296 ] concat
21989 [ 1 -0 -0 1 122 296 ] concat
22005 [ 1 0 0 1 56 123.5 ] concat
22016 [ 1 -0 -0 1 122 296 ] concat
22031 [ 1 -0 -0 1 122 296 ] concat
22047 [ 1 0 0 1 60 123.5 ] concat
22058 [ 1 -0 -0 1 122 296 ] concat
22073 [ 1 -0 -0 1 122 296 ] concat
22089 [ 1 0 0 1 22.5 123.5 ] concat
22100 [ 1 -0 -0 1 122 296 ] concat
22115 [ 1 -0 -0 1 122 296 ] concat
22131 [ 1 0 0 1 159 96 ] concat
22142 [ 1 -0 -0 1 122 296 ] concat
22157 [ 1 -0 -0 1 122 296 ] concat
22173 [ 1 0 0 1 162.5 104 ] concat
22184 [ 1 -0 -0 1 122 296 ] concat
22199 [ 1 -0 -0 1 122 296 ] concat
22215 [ 1 0 0 1 166 110.5 ] concat
22226 [ 1 -0 -0 1 122 296 ] concat
22241 [ 1 -0 -0 1 122 296 ] concat
22257 [ 1 0 0 1 170.5 118.5 ] concat
22268 [ 1 -0 -0 1 122 296 ] concat
22283 [ 1 -0 -0 1 122 296 ] concat
22299 [ 1 0 0 1 174 126.5 ] concat
22310 [ 1 -0 -0 1 122 296 ] concat
22325 [ 1 -0 -0 1 122 296 ] concat
22341 [ 1 0 0 1 177 134 ] concat
22352 [ 1 -0 -0 1 122 296 ] concat
22367 [ 1 -0 -0 1 122 296 ] concat
22383 [ 1 0 0 1 181 141 ] concat
22394 [ 1 -0 -0 1 122 296 ] concat
22409 [ 1 -0 -0 1 122 296 ] concat
22425 [ 1 0 0 1 185 149 ] concat
22436 [ 1 -0 -0 1 122 296 ] concat
22451 [ 1 -0 -0 1 122 296 ] concat
22467 [ 1 0 0 1 188.5 156 ] concat
22478 [ 1 -0 -0 1 122 296 ] concat
22493 [ 1 -0 -0 1 122 296 ] concat
22509 [ 1 0 0 1 191.5 164 ] concat
22520 [ 1 -0 -0 1 122 296 ] concat
22535 [ 1 -0 -0 1 122 296 ] concat
22551 [ 1 0 0 1 156 88.5 ] concat
22562 [ 1 -0 -0 1 122 296 ] concat
22577 [ 1 -0 -0 1 122 296 ] concat
22593 [ 1 0 0 1 151.5 80 ] concat
22604 [ 1 -0 -0 1 122 296 ] concat
22619 [ 1 -0 -0 1 122 296 ] concat
22635 [ 1 0 0 1 148 72.5 ] concat
22646 [ 1 -0 -0 1 122 296 ] concat
22661 [ 1 -0 -0 1 122 296 ] concat
22677 [ 1 0 0 1 192 149 ] concat
22688 [ 1 -0 -0 1 122 296 ] concat
22703 [ 1 -0 -0 1 122 296 ] concat
22719 [ 1 0 0 1 195.5 149 ] concat
22730 [ 1 -0 -0 1 122 296 ] concat
22745 [ 1 -0 -0 1 122 296 ] concat
22761 [ 1 0 0 1 198.5 149 ] concat
22772 [ 1 -0 -0 1 122 296 ] concat
22787 [ 1 -0 -0 1 122 296 ] concat
22803 [ 1 0 0 1 191 135 ] concat
22814 [ 1 -0 -0 1 122 296 ] concat
22829 [ 1 -0 -0 1 122 296 ] concat
22845 [ 1 0 0 1 195 135 ] concat
22856 [ 1 -0 -0 1 122 296 ] concat
22871 [ 1 -0 -0 1 122 296 ] concat
22887 [ 1 0 0 1 199 135 ] concat
22898 [ 1 -0 -0 1 122 296 ] concat
22913 [ 1 -0 -0 1 122 296 ] concat
22929 [ 1 0 0 1 203.5 135 ] concat
22940 [ 1 -0 -0 1 122 296 ] concat
22955 [ 1 -0 -0 1 122 296 ] concat
22971 [ 1 0 0 1 187 141 ] concat
22982 [ 1 -0 -0 1 122 296 ] concat
22997 [ 1 -0 -0 1 122 296 ] concat
23013 [ 1 0 0 1 190 141 ] concat
23024 [ 1 -0 -0 1 122 296 ] concat
23039 [ 1 -0 -0 1 122 296 ] concat
23055 [ 1 0 0 1 181 126.5 ] concat
23066 [ 1 -0 -0 1 122 296 ] concat
23081 [ 1 -0 -0 1 122 296 ] concat
23097 [ 1 0 0 1 185 126.5 ] concat
23108 [ 1 -0 -0 1 122 296 ] concat
23123 [ 1 -0 -0 1 122 296 ] concat
23139 [ 1 0 0 1 189 127 ] concat
23150 [ 1 -0 -0 1 122 296 ] concat
23165 [ 1 -0 -0 1 122 296 ] concat
23181 [ 1 0 0 1 188.5 118.5 ] concat
23192 [ 1 -0 -0 1 122 296 ] concat
23207 [ 1 -0 -0 1 122 296 ] concat
23223 [ 1 0 0 1 192.5 118.5 ] concat
23234 [ 1 -0 -0 1 122 296 ] concat
23249 [ 1 -0 -0 1 122 296 ] concat
23265 [ 1 0 0 1 196.5 118.5 ] concat
23276 [ 1 -0 -0 1 122 296 ] concat
23291 [ 1 -0 -0 1 122 296 ] concat
23307 [ 1 0 0 1 204.5 118.5 ] concat
23318 [ 1 -0 -0 1 122 296 ] concat
23333 [ 1 -0 -0 1 122 296 ] concat
23349 [ 1 0 0 1 178 110.5 ] concat
23360 [ 1 -0 -0 1 122 296 ] concat
23375 [ 1 -0 -0 1 122 296 ] concat
23391 [ 1 0 0 1 199 110.5 ] concat
23402 [ 1 -0 -0 1 122 296 ] concat
23417 [ 1 -0 -0 1 122 296 ] concat
23433 [ 1 0 0 1 213.5 111 ] concat
23444 [ 1 -0 -0 1 122 296 ] concat
23459 [ 1 -0 -0 1 122 296 ] concat
23475 [ 1 0 0 1 184 96 ] concat
23486 [ 1 -0 -0 1 122 296 ] concat
23501 [ 1 -0 -0 1 122 296 ] concat
23517 [ 1 0 0 1 208 95.5 ] concat
23528 [ 1 -0 -0 1 122 296 ] concat
23543 [ 1 -0 -0 1 122 296 ] concat
23559 [ 1 0 0 1 194 156 ] concat
23570 [ 1 -0 -0 1 122 296 ] concat
23585 [ 1 -0 -0 1 122 296 ] concat
23600 [ 1 0 0 1 -36.5 92.5 ] concat
23611 [ 0.5 -0 -0 0.5 174 494 ] concat
23613 100 84 116 100 Line
23626 [ 0.5 -0 -0 0.5 174 494 ] concat
23628 116 100 132 84 Line
23641 [ 0.5 -0 -0 0.5 174 494 ] concat
23643 132 84 148 116 Line
23656 [ 0.5 -0 -0 0.5 174 494 ] concat
23658 148 116 164 84 Line
23671 [ 0.5 -0 -0 0.5 174 494 ] concat
23673 164 84 180 116 Line
23686 [ 0.5 -0 -0 0.5 174 494 ] concat
23688 180 116 196 100 Line
23701 [ 0.5 -0 -0 0.5 174 494 ] concat
23703 196 100 212 116 Line
23716 [ 0.5 -0 -0 0.5 174 494 ] concat
23718 212 116 228 116 Line
23731 [ 0.5 -0 -0 0.5 174 494 ] concat
23733 228 116 244 100 Line
23746 [ 0.5 -0 -0 0.5 174 494 ] concat
23748 244 100 260 116 Line
23761 [ 0.5 -0 -0 0.5 174 494 ] concat
23763 260 116 276 100 Line
23776 [ 0.5 -0 -0 0.5 174 494 ] concat
23778 276 100 292 84 Line
23791 [ 1 0 0 1 112.5 93 ] concat
23802 [ 0.5 -0 -0 0.5 174 494 ] concat
23804 100 84 116 100 Line
23817 [ 0.5 -0 -0 0.5 174 494 ] concat
23819 116 100 132 84 Line
23832 [ 0.5 -0 -0 0.5 174 494 ] concat
23834 132 84 148 116 Line
23847 [ 0.5 -0 -0 0.5 174 494 ] concat
23849 148 116 164 84 Line
23862 [ 0.5 -0 -0 0.5 174 494 ] concat
23864 164 84 180 116 Line
23877 [ 0.5 -0 -0 0.5 174 494 ] concat
23879 180 116 196 100 Line
23892 [ 0.5 -0 -0 0.5 174 494 ] concat
23894 196 100 212 116 Line
23907 [ 0.5 -0 -0 0.5 174 494 ] concat
23909 212 116 228 116 Line
23922 [ 0.5 -0 -0 0.5 174 494 ] concat
23924 228 116 244 100 Line
23937 [ 0.5 -0 -0 0.5 174 494 ] concat
23939 244 100 260 116 Line
23952 [ 0.5 -0 -0 0.5 174 494 ] concat
23954 260 116 276 100 Line
23967 [ 0.5 -0 -0 0.5 174 494 ] concat
23969 276 100 292 84 Line
23984 [ 0.5 -0 -0 0.5 226 494 ] concat
23986 136 476 160 476 Line
23999 [ 0.5 -0 -0 0.5 244 596 ] concat
24001 136 272 160 272 Line
24014 [ 0.5 -0 -0 0.5 226 497 ] concat
24016 136 296 160 296 Line
24029 [ 0.5 -0 -0 0.5 244 554 ] concat
24031 136 272 160 272 Line
24038 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
24041 [ 1 0 0 1 297 692 ] concat
24051 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
24054 [ 1 0 0 1 313.5 716 ] concat
24070 [ 0.5 -0 -0 0.5 200 494 ] concat
24072 200 374 200 308 Line
24085 [ 0.5 -0 -0 0.5 200 494 ] concat
24087 200 404 200 470 Line
24100 [ 0.5 -0 -0 0.5 200 494 ] concat
24102 236 452 236 470 Line
24115 [ 0.5 -0 -0 0.5 200 494 ] concat
24117 236 422 236 398 Line
24124 %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-*
24125 Times-Roman 12 SetF
24127 [ 1 0 0 1 373 608 ] concat
24143 334 691 a Fk(Figure)14 b(4:)k(Lo)q(cation)13 b(of)h(P)o(arallelism)d
24144 (in)i(T)o(ypical)g(APHID)h(and)g(YBW)g(Searc)o(h)0 824
24145 y(in)i(com)o(bination)e(with)i(iterativ)o(e)g(deep)q(ening.)26
24146 b(Using)16 b(ABD)o(AD)o(A)g(is)h(infeasible)e(since)i(the)g(system)f
24147 (requires)i(a)e(shared)0 874 y(transp)q(osition)f(table,)h(whic)o(h)f
24148 (w)o(ould)g(b)q(e)h(extremely)f(slo)o(w)g(on)g(a)g(parallel)g(arc)o
24149 (hitecture)i(with)e(a)g(high)g(n)o(um)o(b)q(er)g(of)g(CPU)0
24150 924 y(cycles)g(p)q(er)g(a)o(v)o(erage)f(message)f(latency)m(.)0
24151 1061 y Fl(3)67 b(The)22 b(APHID)f(Algorithm)0 1152 y
24152 Fk(Y)m(oung)c(Brothers)i(W)m(ait)e(and)g(other)i(parallel)d(searc)o(h)j
24153 (algorithms)d(su\013er)j(from)d(three)j(serious)f(problems.)29
24154 b(First,)18 b(the)0 1202 y(n)o(umerous)g(sync)o(hronization)g(p)q(oin)o
24155 (ts)g(result)i(in)e(idle)g(time.)30 b(This)18 b(suggests)i(that)e(a)g
24156 (new)h(algorithm)d(m)o(ust)h(striv)o(e)i(to)0 1251 y(reduce)i(or)e
24157 (eliminate)f(sync)o(hronization)h(altogether.)34 b(Second,)21
24158 b(the)f(c)o(haotic)f(nature)h(of)f(a)g(w)o(ork-stealing)f(sc)o(heduler)
24159 0 1301 y(requires)12 b(algorithms)c(suc)o(h)k(as)f(YBW)g(and)f(Jam)o(b)
24160 q(oree)h(to)f(use)i(a)e(shared)i(transp)q(osition)f(table)f(and/or)h
24161 (recursiv)o(e)h(iterativ)o(e)0 1351 y(deep)q(ening)20
24162 b(to)f(ac)o(hiev)o(e)g(a)g(go)q(o)q(d)f(mo)o(v)o(e)g(ordering)h(and)f
24163 (reasonable)i(p)q(erformance.)33 b(Algorithms)17 b(based)j(on)e(the)i
24164 Fj(\013\014)r Fh(\003)0 1401 y Fk(framew)o(ork)14 b(cannot)h(w)o(ork)g
24165 (without)g(a)g(shared)h(transp)q(osition)f(table.)22
24166 b(Third,)15 b(the)g(program)f(ma)o(y)f(initiate)i(parallelism)0
24167 1451 y(at)h(no)q(des)g(whic)o(h)g(are)g(b)q(etter)h(done)f(sequen)o
24168 (tially)m(.)23 b(F)m(or)15 b(example,)f(ha)o(ving)h(searc)o(hed)i(the)f
24169 (\014rst)h(branc)o(h)f(at)g(a)f(no)q(de)h(and)0 1500
24170 y(not)e(ac)o(hiev)o(ed)g(a)g(cut-o\013,)g(Y)m(oung)f(Brothers)j(W)m
24171 (ait)c(\(in)i(its)g(simplest)f(form\))g(p)q(ermits)g(all)g(of)g(the)i
24172 (remaining)d(branc)o(hes)j(to)0 1550 y(b)q(e)h(searc)o(hed)h(in)e
24173 (parallel.)22 b(Ho)o(w)o(ev)o(er,)16 b(if)f(the)h(second)h(branc)o(h)f
24174 (causes)h(a)e(cut-o\013,)h(then)g(all)f(the)h(parallel)e(w)o(ork)h
24175 (done)h(on)0 1600 y(the)f(third)f(\(and)g(subsequen)o(t\))h(branc)o
24176 (hes)h(has)e(b)q(een)h(w)o(asted.)k(This)14 b(suggests)h(parallelism)c
24177 (should)j(only)f(b)q(e)i(initiated)e(at)0 1650 y(no)q(des)i(where)g
24178 (there)g(is)f(a)f(v)o(ery)h(high)g(probabilit)o(y)e(that)i(all)f(branc)
24179 o(hes)i(m)o(ust)e(b)q(e)h(considered.)62 1700 y(This)g(section)h(in)o
24180 (tro)q(duces)g(the)f(Async)o(hronous)h(P)o(arallel)e(Hierarc)o(hical)h
24181 (Iterativ)o(e)g(Deep)q(ening)h(\(APHID\))f(game-tree)0
24182 1750 y(searc)o(hing)i(algorithm.)21 b(APHID)15 b(has)h(b)q(een)h
24183 (designed)f(to)g(address)h(the)f(ab)q(o)o(v)o(e)f(three)i(issues.)25
24184 b(The)16 b(algorithm)d(is)i(asyn-)0 1799 y(c)o(hronous)g(in)f(nature;)h
24185 (it)e(remo)o(v)o(es)h(all)f(sync)o(hronization)i(p)q(oin)o(ts)f(from)e
24186 (the)j Fj(\013\014)i Fk(searc)o(h)e(and)g(from)d(iterativ)o(e)i(deep)q
24187 (ening.)0 1849 y(Also,)f(parallelism)e(is)j(only)f(applied)g(at)h(no)q
24188 (des)g(that)g(ha)o(v)o(e)g(a)f(high)g(probabilit)o(y)g(of)g(needing)h
24189 (parallelism.)h(The)f(top)g(plies)0 1899 y(of)k(a)g(game-tree)g(\(near)
24190 g(the)h(ro)q(ot\))g(v)n(ary)f(infrequen)o(tly)g(b)q(et)o(w)o(een)h
24191 (steps)h(of)e(iterativ)o(e)g(deep)q(ening)h([22)o(].)31
24192 b(This)18 b(relativ)o(e)0 1949 y(in)o(v)n(ariance)13
24193 b(of)g(the)i(top)f(p)q(ortion)f(of)h(the)g(game-tree)g(is)f(exploited)h
24194 (b)o(y)g(the)g(APHID)g(algorithm.)62 1999 y(In)e(its)f(simplest)g
24195 (form,)f(APHID)i(can)g(b)q(e)g(view)o(ed)g(as)f(a)h(master/sla)o(v)o(e)
24196 e(program)g(although,)h(as)h(discussed)h(later,)e(it)h(can)0
24197 2048 y(b)q(e)k(generalized)g(to)g(a)f(hierarc)o(hical)g(pro)q(cessor)i
24198 (tree.)24 b(F)m(or)15 b(a)g(depth)i Fj(d)e Fk(searc)o(h,)h(the)g
24199 (master)f(is)g(resp)q(onsible)i(for)e(the)h(top)0 2098
24200 y Fj(d)22 2083 y Fa(0)47 2098 y Fk(ply)d(of)g(the)i(tree,)f(and)g(the)g
24201 (remaining)e Fj(d)d Fh(\000)g Fj(d)770 2083 y Fa(0)795
24202 2098 y Fk(ply)k(are)h(searc)o(hed)i(in)d(parallel)f(b)o(y)i(the)g(sla)o
24203 (v)o(es.)k(Figure)c(4)g(sho)o(ws)g(where)0 2148 y(parallel)f
24204 (activities)g(o)q(ccur)j(in)d(APHID)h(and)g(YBW.)g(Eac)o(h)g(lo)q
24205 (cation)f(mark)o(ed)g(with)g(an)h Fb(x)g Fk(sho)o(ws)g(where)h(the)g
24206 (parallelism)0 2198 y(t)o(ypically)10 b(tak)o(es)i(place.)18
24207 b(Although)11 b(more)f(parallelism)f(could)j(b)q(e)g(generated)h(in)e
24208 (YBW,)g(eac)o(h)h Fb(x)g Fk(represen)o(ts)i(a)d(p)q(oten)o(tially)0
24209 2248 y(costly)16 b(sync)o(hronization)g(p)q(oin)o(t.)23
24210 b(The)17 b(parallelism)c(is)j(more)f(constrained)h(in)g(APHID)g(and,)g
24211 (hence,)h(is)f(more)f(lik)o(ely)f(to)0 2297 y(su\013er)h(from)d(load)h
24212 (im)o(balances)g(than)g(other)i(dynamic)d(sc)o(heduling)i(routines)h
24213 (\(suc)o(h)f(as)g(YBW,)g(Jam)o(b)q(oree,)f(or)h Fj(\013\014)r
24214 Fh(\003)p Fk(\).)0 2414 y Fv(3.1)56 b(Op)r(eration)17
24215 b(of)i(the)f(Master)h(in)f(APHID)0 2490 y Fk(The)d(master)e(is)h(resp)q
24216 (onsible)i(for)d(searc)o(hing)i(the)g(top)f Fj(d)892
24217 2475 y Fa(0)918 2490 y Fk(ply)f(of)h(the)h(tree.)20 b(It)14
24218 b(rep)q(eatedly)h(tra)o(v)o(erses)h(this)f(tree)g(un)o(til)e(the)0
24219 2540 y(correct)g(minim)o(ax)8 b(v)n(alue)j(has)g(b)q(een)i(determined.)
24220 k(The)12 b(master)f(is)g(executing)h(a)f(normal)e Fj(\013\014)14
24221 b Fk(searc)o(h,)e(with)f(the)h(exception)0 2590 y(that)i(APHID)g
24222 (enforces)h(an)f(arti\014cial)f(searc)o(h)i(horizon)f(at)f
24223 Fj(d)967 2575 y Fa(0)992 2590 y Fk(ply)h(from)e(the)i(ro)q(ot.)62
24224 2640 y(Eac)o(h)i(leaf)e(no)q(de)i(in)f(the)h(master's)e
24225 Fj(d)657 2625 y Fa(0)684 2640 y Fk(ply)h(game-tree)f(is)i(b)q(eing)f
24226 (async)o(hronously)g(searc)o(hed)i(b)o(y)e(the)h(sla)o(v)o(es.)22
24227 b(Before)0 2690 y(describing)15 b(ho)o(w)e(the)i(master)f(kno)o(ws)f
24228 (when)i(the)g Fj(d)e Fk(ply)h(searc)o(h)h(is)f(complete,)f(w)o(e)h(m)o
24229 (ust)f(\014rst)i(describ)q(e)h(ho)o(w)e(the)g(master)965
24232 7 8 bop 0 42 a Fk(searc)o(hes)16 b(the)e Fj(d)254 26
24233 y Fa(0)279 42 y Fk(ply)g(tree.)62 91 y(When)j(the)g(master)f(reac)o
24234 (hes)i(a)f(leaf)f(of)f(the)j Fj(d)810 76 y Fa(0)837 91
24235 y Fk(ply)e(tree,)i(it)f(uses)g(a)g(reliable)f(or)g(appro)o(ximate)f(v)n
24236 (alue)h(for)g(the)h(leaf,)0 141 y(dep)q(ending)g(on)f(the)h
24237 (information)d(a)o(v)n(ailable.)24 b(If)16 b(a)g Fj(d)10
24238 b Fh(\000)i Fj(d)938 126 y Fa(0)965 141 y Fk(ply)k(searc)o(h)i(result)f
24239 (is)g(a)o(v)n(ailable)d(from)g(the)k(sla)o(v)o(e,)e(that)g(will)0
24240 191 y(b)q(e)g(used.)22 b(\(In)15 b(the)h(curren)o(t)g(implemen)o
24241 (tation,)11 b(w)o(e)16 b(do)e(not)h(use)h(deep)q(er)h(ply)e(v)n(alues,)
24242 f(ev)o(en)i(if)e(they)h(are)h(a)o(v)n(ailable.)j(This)0
24243 241 y(will)12 b(b)q(e)h(discussed)i(in)e(Section)g(4.\))18
24244 b(Ho)o(w)o(ev)o(er,)13 b(if)f(the)i Fj(d)7 b Fh(\000)h
24245 Fj(d)949 226 y Fa(0)973 241 y Fk(ply)k(result)i(is)f(not)g(a)o(v)n
24246 (ailable,)d(then)k(the)g(algorithm)c(uses)k(the)0 291
24247 y(\\b)q(est)h(a)o(v)n(ailable")d(ply)h(result)i(that)g(had)e(b)q(een)j
24248 (returned)g(b)o(y)e(the)g(sla)o(v)o(e)g(to)g(generate)i(a)d(guessed)j
24249 (minim)o(ax)11 b(v)n(alue)1826 276 y Fe(4)1844 291 y
24250 Fk(.)19 b(An)o(y)0 340 y(no)q(de)14 b(where)h(w)o(e)f(are)h(forced)f
24251 (to)g(guess)h(is)f(mark)o(ed)e(as)i Fi(unc)n(ertain)p
24252 Fk(.)62 390 y(As)g(v)n(alues)g(get)g(bac)o(k)o(ed)g(up)f(the)h(tree,)h
24253 (the)f(master)f(main)o(tains)e(a)j(coun)o(t)g(of)f(ho)o(w)g(man)o(y)f
24254 (uncertain)i(no)q(des)g(ha)o(v)o(e)g(b)q(een)0 440 y(visited)d(in)f(a)h
24255 (pass)h(of)e(the)i(tree.)18 b(As)11 b(long)g(as)g(the)g(score)h(at)f
24256 (an)o(y)g(of)f(the)i(lea)o(v)o(es)f(is)g(uncertain,)h(the)f(master)g(m)
24257 o(ust)f(do)h(another)0 490 y(pass)j(of)g(the)g(tree.)19
24258 b(Once)c(the)g(master)e(has)h(a)f(reliable)h(v)n(alue)f(for)g(all)g
24259 (the)h(lea)o(v)o(es)g(in)g(its)g Fj(d)1423 475 y Fa(0)1448
24260 490 y Fk(ply)f(tree,)h(the)h(searc)o(h)g(of)e(the)h Fj(d)0
24261 540 y Fk(ply)h(tree)h(is)f(complete.)22 b(The)16 b(con)o(trolling)d
24262 (program)h(w)o(ould)h(then)h(pro)q(ceed)g(to)f(the)h(next)g(iteration)f
24263 (b)o(y)g(incremen)o(ting)f Fj(d)0 589 y Fk(and)g(asking)f(the)h(master)
24264 g(to)g(searc)o(h)h(the)f(tree)h(again.)62 639 y(Note)e(that)f(this)g
24265 (de\014nition)f(of)h(the)g(master)g(solv)o(es)g(one)g(of)g(the)g
24266 (problems)f(that)h(some)f(algorithms)f(ha)o(v)o(e)i(with)g(resp)q(ect)0
24267 689 y(to)k(initializing)d(parallelism)g(to)q(o)j(quic)o(kly)f(at)g(a)h
24268 (p)q(oten)o(tial)f Fb(CUT)g Fk(no)q(de.)24 b(By)17 b(using)e(the)i
24269 (guessed)g(scores)g(when)g(accurate)0 739 y(information)9
24270 b(is)j(not)f(a)o(v)n(ailable,)f(the)i(APHID)g(algorithm)e
24271 (automatically)e(determines)k(if)f(a)h(subsequen)o(t)i(c)o(hild)d(is)h
24272 (lik)o(ely)e(to)0 789 y(generate)k(a)e(cut-o\013)h(at)f(a)g(failed)g
24273 Fb(CUT)g Fk(no)q(de.)18 b(If)12 b(it)g(seems)g(lik)o(ely)g(that)g(a)g
24274 (c)o(hild)g(will)f(generate)j(a)e(cut-o\013)h(based)g(on)f(guessed)0
24275 839 y(v)n(alues,)f(the)g(c)o(hildren)g(of)f(the)h(failed)e
24276 Fb(CUT)h Fk(no)q(de)h(are)g(ev)n(aluated)g(sequen)o(tially)m(.)16
24277 b(If)10 b(it)g(seems)h(unlik)o(ely)e(that)i(the)g(no)q(de)g(will)e(b)q
24278 (e)0 888 y(pruned)j(due)g(to)f(lo)o(w)f(minim)o(ax)e(v)n(alues,)j(the)h
24279 (searc)o(h)g(w)o(ould)e(con)o(tin)o(ue)i(for)f(a)f(promising)f(no)q(de)
24280 j(at)f(that)g(branc)o(h)h(in)f(parallel.)0 938 y(This)k(is)g(all)f
24281 (handled)i(automatically)c(b)o(y)j(the)h Fj(\013\014)i
24282 Fk(routine.)k(The)16 b(handling)e(of)h(a)g(h)o(yp)q(othesized)h
24283 Fb(CUT)f Fk(no)q(de)h(is)f(stronger)0 988 y(than)g(the)g(equiv)n(alen)o
24284 (t)f(scenario)i(in)e(the)h(YBW)g(algorithm,)d(whic)o(h)j(ignores)g
24285 (previous)g(score)h(information)c(a)o(v)n(ailable)g(for)0
24286 1038 y(some)f(branc)o(hes)i(of)f(the)h(failed)e Fb(CUT)g
24287 Fk(no)q(de.)18 b(In)12 b(the)h(full)d(v)o(ersion)j(of)e(YBW,)h
24288 (application-dep)q(enden)o(t)g(information)d(is)j(used)0
24289 1088 y(to)i(do)f(what)h(APHID)g(handles)g(automatically)d(with)j(the)g
24290 Fj(\013\014)i Fk(searc)o(h)f(windo)o(w.)62 1137 y(The)g(sla)o(v)o(es)g
24291 (are)g(resp)q(onsible)g(for)f(setting)h(their)g(o)o(wn)f(searc)o(h)i
24292 (windo)o(ws,)e(based)h(on)f(information)e(from)h(the)i(master.)0
24293 1187 y(Sometimes,)10 b(the)j(information)d(returned)k(b)o(y)e(the)h
24294 (sla)o(v)o(e)f(ma)o(y)f(not)h(b)q(e)h(useful)g(to)f(the)h(master.)k(F)m
24295 (or)12 b(example,)f(a)i(sla)o(v)o(e)f(can)0 1237 y(tell)h(the)i(master)
24296 e(that)h(the)g(score)h(of)f(a)f(giv)o(en)g(no)q(de)i(is)e(less)i(than)f
24297 (30,)e(but)i(the)h(master)e(ma)o(y)f(w)o(an)o(t)h(to)h(kno)o(w)f(if)g
24298 (the)i(score)0 1287 y(is)e(in)g(b)q(et)o(w)o(een)i(-5)e(and)g(5.)18
24299 b(In)13 b(this)h(case,)g(a)f(\\bad)g(b)q(ound")h(searc)o(h)g(is)f
24300 (generated,)i(and)e(the)h(searc)o(h)h(windo)o(w)d(parameters,)0
24301 1337 y Fj(\013)j Fk(and)f Fj(\014)r Fk(,)h(m)o(ust)f(b)q(e)i(comm)o
24302 (unicated)c(to)j(the)h(sla)o(v)o(e)e(pro)q(cessor.)23
24303 b(An)o(y)15 b(no)q(des)g(where)h(w)o(e)f(are)h(w)o(aiting)d(for)i
24304 (\\bad)f(b)q(ound")0 1386 y(information)g(to)j(b)q(e)h(up)q(dated)g(b)o
24305 (y)f(the)h(sla)o(v)o(e)f(are)h(considered)g(as)g(uncertain)g(b)o(y)f
24306 (the)g(master.)28 b(Ev)o(en)o(tually)m(,)16 b(the)i(sla)o(v)o(e)0
24307 1436 y(will)11 b(return)j(up)q(dated)f(information)c(that)k(is)f
24308 (consisten)o(t)h(with)f(b)q(oth)h(the)g(original)e(information)e(and)j
24309 (the)h(searc)o(h)h(windo)o(w)0 1486 y(requested)170 1471
24310 y Fe(5)191 1486 y Fk(.)0 1602 y Fv(3.2)56 b(The)18 b(APHID)h(T)-5
24311 b(able)0 1679 y Fk(If)15 b(a)f(leaf)h(no)q(de)g(is)g(visited)g(b)o(y)g
24312 (the)g(master)g(for)g(the)g(\014rst)h(time,)d(it)i(is)g(statically)f
24313 (allo)q(cated)h(to)f(a)h(sla)o(v)o(e)g(pro)q(cessor.)23
24314 b(This)0 1729 y(information)14 b(is)j(recorded)h(in)f(a)f(table,)i(the)
24315 f Fi(APHID)h(table)p Fk(,)f(that)g(is)g(shared)h(b)o(y)e(all)g(pro)q
24316 (cessors.)29 b(Figure)17 b(5)g(sho)o(ws)g(an)0 1779 y(example)c(of)g
24317 (ho)o(w)g(the)i(APHID)f(table)g(w)o(ould)f(b)q(e)h(organized)g(at)g(a)f
24318 (giv)o(en)h(p)q(oin)o(t)f(in)h(time.)62 1828 y(The)h(APHID)f(table)g
24319 (is)g(partitioned)g(in)o(to)g(t)o(w)o(o)f(parts:)20 b(one)14
24320 b(whic)o(h)g(only)g(the)g(master)g(can)g(write)h(to,)f(and)g(one)g
24321 (whic)o(h)0 1878 y(only)g(the)h(sla)o(v)o(e)g(that)f(has)h(b)q(een)h
24322 (assigned)f(that)g(piece)h(of)e(w)o(ork)g(can)h(write)g(to.)21
24323 b(An)o(y)14 b(attempt)g(to)h(write)g(in)o(to)f(the)h(table)0
24324 1928 y(generates)k(a)e(message)g(that)g(informs)f(the)i(sla)o(v)o(e)f
24325 (or)g(the)h(master)f(pro)q(cess)i(of)e(the)h(up)q(date)g(to)f(the)h
24326 (information.)26 b(The)0 1978 y(master)13 b(and)f(sla)o(v)o(e)h(only)f
24327 (read)i(their)f(lo)q(cal)f(copies)i(of)e(the)i(information;)c(there)k
24328 (are)f(no)g(explicit)g(messages)g(sen)o(t)h(b)q(et)o(w)o(een)0
24329 2028 y(the)g(master)g(and)g(the)g(sla)o(v)o(e)g(asking)f(for)g
24330 (information.)62 2077 y(The)g(master's)f(half)f(of)h(the)h(table)f(is)h
24331 (illustrated)f(ab)q(o)o(v)o(e)g(the)h(dotted)g(line)f(in)g(Figure)g(5.)
24332 17 b(F)m(or)12 b(eac)o(h)h(leaf)f(that)g(has)h(b)q(een)0
24333 2127 y(visited)h(b)o(y)f(the)h(master,)f(there)i(is)f(an)f(en)o(try)i
24334 (in)e(the)h(APHID)g(table.)k(Information)11 b(main)o(tained)h(on)h(the)
24335 i(lea)o(v)o(es)e(includes)0 2177 y(the)g(mo)o(v)o(es)e(required)j(to)e
24336 (generate)i(the)f(leaf)f(p)q(ositions)g(from)f(the)i(ro)q(ot)g
24337 Fb(R)p Fk(,)f(the)h(appro)o(ximate)e(lo)q(cation)g(of)h(the)h(leaf)f
24338 (in)g(the)0 2227 y(tree)17 b(\(whic)o(h)e(is)h(used)g(b)o(y)f(the)h
24339 (sla)o(v)o(e)f(to)h(prioritize)f(w)o(ork\),)g(whether)i(this)f(leaf)f
24340 (w)o(as)g(visited)g(on)h(the)g(last)f(pass)h(that)f(the)0
24341 2277 y(master)e(executed,)j(and)d(the)i(n)o(um)o(b)q(er)e(of)g(the)i
24342 (sla)o(v)o(e)e(that)h(the)h(leaf)e(w)o(as)h(allo)q(cated)f(to.)62
24343 2326 y(In)h(our)f(example,)f(w)o(e)i(can)g(see)g(that)g(the)g(same)f(n)
24344 o(um)o(b)q(er)f(of)h(lea)o(v)o(es)h(ha)o(v)o(e)f(b)q(een)i(allo)q
24345 (cated)e(to)g(eac)o(h)h(sla)o(v)o(e.)k(Note)c(that)0
24346 2376 y(there)i(is)f(an)g(additional)f(leaf,)g(8,)h(that)g(is)g(not)g
24347 (represen)o(ted)j(in)c(the)i(master's)f Fj(d)1286 2361
24348 y Fa(0)1312 2376 y Fk(ply)f(searc)o(h)j(tree.)23 b(This)15
24349 b(leaf)f(no)q(de)i(has)0 2426 y(b)q(een)h(visited)e(on)g(a)g(previous)h
24350 (pass)g(of)e(the)i Fj(d)731 2411 y Fa(0)758 2426 y Fk(ply)f(searc)o(h)h
24351 (tree,)h(and)e(w)o(as)g(not)h(visited)f(on)g(the)h(latest)g(pass.)23
24352 b(Ho)o(w)o(ev)o(er,)p 0 2461 780 2 v 46 2488 a Fd(4)64
24353 2499 y Fg(Man)o(y)12 b(game-tree)f(searc)o(h)h(programs)e(exhibit)i(an)
24354 g(e\013ect)g(based)g(on)h(the)g(parit)o(y)e(of)i(the)g(searc)o(h)f
24355 (depth)f(\(o)q(dd)h(or)h(ev)o(en)f(n)o(um)o(b)q(er)g(of)g(ply\).)0
24356 2539 y(Scores)d(are)g(stable)g(when)h(y)o(ou)f(lo)q(ok)h(at)f(results)g
24357 (from)g(the)h(o)q(dd)f(plies)g(only)m(,)h(or)g(ev)o(en)f(plies)g(only)m
24358 (,)g(but)h(are)f(sometimes)f(unstable)g(when)i(y)o(ou)f(mix)0
24359 2578 y(the)i(t)o(w)o(o.)k(Th)o(us,)c(w)o(e)h(use)f(the)g(deep)q(est)f
24360 (ply)g(v)n(alue)h(with)g(the)g(same)f(parit)o(y)m(,)g(instead)g(of)h
24361 (alw)o(a)o(ys)g(using)f(the)h(deep)q(est)e(ply)i(v)n(alue)f(a)o(v)n
24362 (ailable.)46 2606 y Fd(5)64 2618 y Fg(It)j(ma)o(y)g(happ)q(en)f(that)h
24363 (the)g(original)f(searc)o(h)g(and)h(the)h(\\bad)e(b)q(ound")g(searc)o
24364 (h)h(are)g(inconsisten)o(t)e(with)j(one)f(another,)f(through)g(the)h
24365 (use)0 2657 y(of)h(searc)o(h)e(extensions)f(that)i(ma)o(y)g(or)h(ma)o
24366 (y)f(not)g(b)q(e)g(triggered)f(based)g(on)i(the)f(searc)o(h)g(windo)o
24367 (w)g(used.)22 b(In)13 b(this)h(case,)f(the)g(searc)o(h)g(explicitly)0
24368 2697 y(requested)c(b)o(y)i(the)g(master)f(o)o(v)o(errides)f(the)i
24369 (informatio)o(n)e(that)h(had)h(b)q(een)f(previously)f(stored.)965
24373 15345564 14208860 8420065 17234821 28417720 35653713 startTexFig
24375 %%BeginDocument: draw2.ps
24377 /arrowHeight 10 def
24380 /IdrawDict 51 dict def
24384 dup dup findfont dup length dict begin
24385 { 1 index /FID ne { def }{ pop pop } ifelse } forall
24386 /Encoding ISOLatin1Encoding def
24387 currentdict end definefont
24390 /ISOLatin1Encoding [
24391 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
24392 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
24393 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
24394 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
24395 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
24396 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
24397 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
24398 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
24399 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
24400 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
24401 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
24402 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
24403 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
24404 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
24405 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
24406 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
24407 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
24408 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
24409 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
24410 /guillemotright/onequarter/onehalf/threequarters/questiondown
24411 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
24412 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
24413 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
24414 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
24415 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
24416 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
24417 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
24418 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
24419 /yacute/thorn/ydieresis
24421 /Helvetica reencodeISO def
24424 /numGraphicParameters 17 def
24425 /stringLimit 65535 def
24429 numGraphicParameters dict begin
24438 dup type /nulltype eq {
24440 false /brushRightArrow idef
24441 false /brushLeftArrow idef
24442 true /brushNone idef
24444 /brushDashOffset idef
24445 /brushDashArray idef
24446 0 ne /brushRightArrow idef
24447 0 ne /brushLeftArrow idef
24449 false /brushNone idef
24471 dup type /nulltype eq {
24472 pop true /patternNone idef
24475 /patternGrayLevel idef
24476 /patternString idef
24478 /patternGrayLevel idef
24480 false /patternNone idef
24489 0 0 0 0 0 0 1 1 true subspline
24491 0 0 0 0 1 1 2 2 false subspline
24494 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
24496 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
24498 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
24499 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
24500 brushNone not { istroke } if
24502 n 2 sub dup n 1 sub dup rightarrow
24505 } dup 0 4 dict put def
24510 patternNone not { ifill } if
24511 brushNone not { istroke } if
24519 n 1 sub dup 0 0 1 1 2 2 true subspline
24522 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
24524 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
24525 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
24526 patternNone not { ifill } if
24527 brushNone not { istroke } if
24532 } dup 0 4 dict put def
24541 patternNone not { ifill } if
24542 brushNone not { istroke } if
24544 } dup 0 1 dict put def
24550 x 0 get y 0 get moveto
24551 x 1 get y 1 get lineto
24552 brushNone not { istroke } if
24556 } dup 0 4 dict put def
24563 x 0 get y 0 get moveto
24566 x i get y i get lineto
24568 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
24569 brushNone not { istroke } if
24571 n 2 sub dup n 1 sub dup rightarrow
24574 } dup 0 4 dict put def
24583 patternNone not { ifill } if
24584 brushNone not { istroke } if
24599 patternNone not { ifill } if
24600 brushNone not { istroke } if
24602 } dup 0 4 dict put def
24609 dup where { pop pop pop } { exch def } ifelse
24615 patternGrayLevel -1 ne {
24616 fgred bgred fgred sub patternGrayLevel mul add
24617 fggreen bggreen fggreen sub patternGrayLevel mul add
24618 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
24622 originalCTM setmatrix
24623 pathbbox /t exch def /r exch def /b exch def /l exch def
24624 /w r l sub ceiling cvi def
24625 /h t b sub ceiling cvi def
24626 /imageByteWidth w 8 div ceiling cvi def
24628 bgred bggreen bgblue setrgbcolor
24630 fgred fggreen fgblue setrgbcolor
24631 w 0 gt h 0 gt and {
24632 l b translate w h scale
24633 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
24638 } dup 0 8 dict put def
24642 brushDashOffset -1 eq {
24646 brushDashArray brushDashOffset setdash
24647 fgred fggreen fgblue setrgbcolor
24649 brushWidth setlinewidth
24650 originalCTM setmatrix
24658 fgred fggreen fgblue setrgbcolor
24659 /fontDict printFont printSize scalefont dup setfont def
24660 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
24661 transform exch pop def
24662 /vertoffset 1 printSize sub descender sub def {
24663 0 vertoffset moveto show
24664 /vertoffset vertoffset printSize sub def
24668 } dup 0 3 dict put def
24671 /patternByteLength patternString length def
24672 /patternHeight patternByteLength 8 mul sqrt cvi def
24673 /patternWidth patternHeight def
24674 /patternByteWidth patternWidth 8 idiv def
24675 /imageByteMaxLength imageByteWidth imageHeight mul
24676 stringLimit patternByteWidth sub min def
24677 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
24678 patternHeight mul patternHeight max def
24679 /imageHeight imageHeight imageMaxHeight sub store
24680 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
24681 0 1 imageMaxHeight 1 sub {
24683 /patternRow y patternByteWidth mul patternByteLength mod def
24684 /patternRowString patternString patternRow patternByteWidth getinterval def
24685 /imageRow y imageByteWidth mul def
24686 0 patternByteWidth imageByteWidth 1 sub {
24688 imageString imageRow x add patternRowString putinterval
24693 } dup 0 12 dict put def
24696 dup 3 2 roll dup 4 3 roll lt { exch } if pop
24700 dup 3 2 roll dup 4 3 roll gt { exch } if pop
24712 } dup 0 4 dict put def
24720 x0 2 mul x1 add 3 div
24721 y0 2 mul y1 add 3 div
24723 } dup 0 4 dict put def
24727 /movetoNeeded exch def
24728 y exch get /y3 exch def
24729 x exch get /x3 exch def
24730 y exch get /y2 exch def
24731 x exch get /x2 exch def
24732 y exch get /y1 exch def
24733 x exch get /x1 exch def
24734 y exch get /y0 exch def
24735 x exch get /x0 exch def
24736 x1 y1 x2 y2 thirdpoint
24739 x2 y2 x1 y1 thirdpoint
24742 x1 y1 x0 y0 thirdpoint
24746 x2 y2 x3 y3 thirdpoint
24750 movetoNeeded { p0x p0y moveto } if
24751 p1x p1y p2x p2y p3x p3y curveto
24753 } dup 0 17 dict put def
24767 fgred fggreen fgblue setrgbcolor
24768 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
24772 dup 3 -1 roll dup 4 1 roll exch
24776 exch dup 3 1 roll exch lineto
24779 bgred bggreen bgblue setrgbcolor
24785 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
24791 transform originalCTM itransform
24794 transform originalCTM itransform
24797 /dy tipy taily sub def
24798 /dx tipx tailx sub def
24799 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
24801 originalCTM setmatrix
24802 tipx tipy translate
24805 arrowHeight neg arrowWidth 2 div moveto
24807 arrowHeight neg arrowWidth 2 div neg lineto
24809 originalCTM setmatrix
24810 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
24812 /padtail brushWidth 2 div def
24813 tipx tipy translate
24816 arrowHeight padtip add padtail add arrowHeight div dup scale
24821 originalCTM setmatrix
24822 tipx tipy translate
24829 } dup 0 9 dict put def
24833 arrowHeight neg arrowWidth 2 div moveto
24835 arrowHeight neg arrowWidth 2 div neg lineto
24840 y exch get /taily exch def
24841 x exch get /tailx exch def
24842 y exch get /tipy exch def
24843 x exch get /tipx exch def
24844 brushLeftArrow { tipx tipy tailx taily arrowhead } if
24846 } dup 0 4 dict put def
24850 y exch get /tipy exch def
24851 x exch get /tipx exch def
24852 y exch get /taily exch def
24853 x exch get /tailx exch def
24854 brushRightArrow { tipx tipy tailx taily arrowhead } if
24856 } dup 0 4 dict put def
24859 %I Idraw 10 Grid 6 6
24869 [ 0.799705 0 0 0.799705 0 0 ] concat
24870 /originalCTM matrix currentmatrix def
24879 [ 1 0 0 1 5.99997 0 ] concat
24884 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
24887 [ 1 0 0 1 342 674 ] concat
24901 [ 1 0 0 1 8 26 ] concat
24906 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
24909 [ 1 0 0 1 315 543.5 ] concat
24925 [ 0.5 -0 -0 0.5 278 428 ] concat
24939 [ 1 0 0 1 -4 26 ] concat
24950 [ 0.5 -0 -0 0.5 278 428 ] concat
24958 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
24961 [ 1 0 0 1 339 543.5 ] concat
24977 [ 1 0 0 1 -10 26 ] concat
24988 [ 0.5 -0 -0 0.5 278 428 ] concat
24996 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
24999 [ 1 0 0 1 357 544 ] concat
25015 [ 1 0 0 1 -16 26 ] concat
25026 [ 0.5 -0 -0 0.5 278 428 ] concat
25034 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25037 [ 1 0 0 1 375 544 ] concat
25053 [ 1 0 0 1 -22 26 ] concat
25064 [ 0.5 -0 -0 0.5 278 428 ] concat
25072 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25075 [ 1 0 0 1 393 544 ] concat
25091 [ 1 0 0 1 104 26 ] concat
25102 [ 0.5 -0 -0 0.5 278 428 ] concat
25110 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25113 [ 1 0 0 1 291 543.5 ] concat
25129 [ 1 0 0 1 -28 26 ] concat
25140 [ 0.5 -0 -0 0.5 278 428 ] concat
25148 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25151 [ 1 0 0 1 411 544 ] concat
25169 [ 0.5 -0 -0 0.5 278 428 ] concat
25171 68 260 164 452 Line
25184 [ 0.5 -0 -0 0.5 278 428 ] concat
25186 68 260 272 260 Line
25199 [ 0.5 -0 -0 0.5 278 428 ] concat
25201 164 452 272 260 Line
25212 [ 1 0 0 1 -71.5 99 ] concat
25223 [ 0.5 -0 -0 0.5 278 428 ] concat
25231 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25234 [ 1 0 0 1 428.5 544 ] concat
25246 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25249 [ 1 0 0 1 284 612.5 ] concat
25265 [ 0.5 -0 -0 0.5 226 395 ] concat
25267 148 518 100 518 Line
25280 [ 0.5 -0 -0 0.5 226 395 ] concat
25282 148 326 100 326 Line
25295 [ 0.5 -0 -0 0.5 226 395 ] concat
25297 124 446 124 506 Line
25310 [ 0.5 -0 -0 0.5 226 395 ] concat
25312 124 410 124 338 Line
25325 [ 1 0 0 1 18 -24 ] concat
25336 [ 0.5 -0 -0 0.5 278 428 ] concat
25344 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25347 [ 1 0 0 1 339 543.5 ] concat
25363 [ 1 0 0 1 84 -24 ] concat
25374 [ 0.5 -0 -0 0.5 278 428 ] concat
25382 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25385 [ 1 0 0 1 357 544 ] concat
25401 [ 1 0 0 1 -108 -24 ] concat
25412 [ 0.5 -0 -0 0.5 278 428 ] concat
25420 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25423 [ 1 0 0 1 375 544 ] concat
25439 [ 1 0 0 1 0 -24 ] concat
25450 [ 0.5 -0 -0 0.5 278 428 ] concat
25458 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25461 [ 1 0 0 1 393 544 ] concat
25477 [ 1 0 0 1 66 -24 ] concat
25488 [ 0.5 -0 -0 0.5 278 428 ] concat
25496 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25499 [ 1 0 0 1 411 544 ] concat
25515 [ 1 0 0 1 -84 -24 ] concat
25520 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25523 [ 1 0 0 1 315 543.5 ] concat
25539 [ 0.5 -0 -0 0.5 278 428 ] concat
25553 [ 1 0 0 1 12 -24 ] concat
25564 [ 0.5 -0 -0 0.5 278 428 ] concat
25572 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25575 [ 1 0 0 1 291 543.5 ] concat
25593 [ 0.458861 0 0 0.489848 235.544 397.7 ] concat
25595 232 170 388 266 Rect
25607 [ 0.815325 0 0 0.489848 236.845 397.7 ] concat
25609 232 170 364 266 Rect
25614 1 0 0 [12 4] 0 SetB
25621 [ 1.21519 0 0 0.046875 83.0438 492.703 ] concat
25623 100 241 376 241 Line
25630 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25633 [ 1 0 0 1 162 515 ] concat
25643 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25646 [ 1 0 0 1 162 503 ] concat
25656 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25659 [ 1 0 0 1 222 497 ] concat
25669 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25672 [ 1 0 0 1 258 497 ] concat
25682 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25685 [ 1 0 0 1 297.5 497 ] concat
25701 [ 0.5 0 0 0.5 148 395 ] concat
25703 136 170 352 266 Rect
25709 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25712 [ 1 0 0 1 348 497 ] concat
25722 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
25725 [ 1 0 0 1 468 497 ] concat
25741 [ 1 0 0 1 130 131 ] concat
25743 140 331 98 217 Line
25756 [ 1 0 0 1 130 131 ] concat
25758 140 331 170 235 Line
25771 [ 1 0 0 1 130 131 ] concat
25773 98 217 110 229 Line
25786 [ 1 0 0 1 130 131 ] concat
25788 110 229 116 217 Line
25801 [ 1 0 0 1 130 131 ] concat
25803 116 217 122 247 Line
25816 [ 1 0 0 1 130 131 ] concat
25818 122 247 140 235 Line
25831 [ 1 0 0 1 130 131 ] concat
25833 140 235 146 247 Line
25846 [ 1 0 0 1 130 131 ] concat
25848 146 247 152 229 Line
25861 [ 1 0 0 1 130 131 ] concat
25863 152 229 158 247 Line
25876 [ 1 0 0 1 130 131 ] concat
25878 158 247 170 235 Line
25891 [ 0.5 0 0 0.5 234 263 ] concat
25893 288 398 204 194 Line
25906 [ 0.5 0 0 0.5 234 263 ] concat
25908 204 194 240 218 Line
25921 [ 0.5 0 0 0.5 234 263 ] concat
25923 240 218 252 230 Line
25936 [ 0.5 0 0 0.5 234 263 ] concat
25938 252 230 264 218 Line
25951 [ 0.5 0 0 0.5 234 263 ] concat
25953 264 218 276 182 Line
25966 [ 0.5 0 0 0.5 234 263 ] concat
25968 276 182 288 206 Line
25981 [ 0.5 0 0 0.5 234 263 ] concat
25983 288 206 300 230 Line
25996 [ 0.5 0 0 0.5 234 263 ] concat
25998 300 230 312 206 Line
26011 [ 0.5 0 0 0.5 234 263 ] concat
26013 312 206 324 230 Line
26026 [ 0.5 0 0 0.5 234 263 ] concat
26028 288 398 348 230 Line
26041 [ 0.5 0 0 0.5 234 263 ] concat
26043 324 230 348 230 Line
26056 [ 0.5 0 0 0.5 338 230 ] concat
26058 188 248 212 284 Line
26071 [ 0.5 0 0 0.5 338 230 ] concat
26073 212 284 236 248 Line
26086 [ 0.5 0 0 0.5 338 230 ] concat
26088 236 248 248 296 Line
26101 [ 0.5 0 0 0.5 338 230 ] concat
26103 248 296 272 260 Line
26116 [ 0.5 0 0 0.5 338 230 ] concat
26118 272 260 284 296 Line
26131 [ 0.5 0 0 0.5 338 230 ] concat
26133 284 296 308 272 Line
26146 [ 0.5 0 0 0.5 338 230 ] concat
26148 308 272 320 296 Line
26161 [ 0.5 0 0 0.5 338 230 ] concat
26163 260 464 320 296 Line
26176 [ 0.5 0 0 0.5 338 230 ] concat
26178 260 464 188 248 Line
26185 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
26188 [ 1 0 0 1 246 341 ] concat
26198 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
26201 [ 1 0 0 1 354 341 ] concat
26211 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
26214 [ 1 0 0 1 444 341 ] concat
26228 [ 1 0 0 1 35.5 -97.5 ] concat
26239 [ 0.5 -0 -0 0.5 278 428 ] concat
26247 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
26250 [ 1 0 0 1 339 543.5 ] concat
26266 [ 1 0 0 1 54 -97 ] concat
26277 [ 0.5 -0 -0 0.5 278 428 ] concat
26285 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
26288 [ 1 0 0 1 411 544 ] concat
26304 [ 1 0 0 1 -24.5 -99 ] concat
26315 [ 0.5 -0 -0 0.5 278 428 ] concat
26323 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
26326 [ 1 0 0 1 291 543.5 ] concat
26344 [ 0.5 0 0 0.5 130 296 ] concat
26346 100 320 148 320 Line
26359 [ 0.5 0 0 0.5 130 296 ] concat
26361 100 164 148 164 Line
26368 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
26371 [ 1 0 0 1 180.5 421.5 ] concat
26387 [ 0.5 0 0 0.5 130 296 ] concat
26389 124 224 124 176 Line
26402 [ 0.5 0 0 0.5 130 296 ] concat
26404 124 260 124 308 Line
26411 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
26414 [ 1 0 0 1 384 497 ] concat
26428 [ 1 0 0 1 60 -36 ] concat
26439 [ 0.5 -0 -0 0.5 278 362 ] concat
26447 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
26450 [ 1 0 0 1 453 555.5 ] concat
26462 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
26465 [ 1 0 0 1 504 497 ] concat
26475 %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
26478 [ 1 0 0 1 432 497 ] concat
26494 490 991 a Fk(Figure)14 b(5:)k(A)c(Snapshot)g(of)f(APHID)h(Searc)o(h)h
26495 (in)e(Op)q(eration)0 1124 y(the)h(information)c(that)k(the)g(sla)o(v)o
26496 (e)f(has)g(generated)i(ma)o(y)c(b)q(e)j(needed)h(in)e(a)g(later)g(pass)
26497 h(of)f(the)h(tree)g(and)f(is)h(not)f(deleted)h(b)o(y)0
26498 1174 y(the)g(master.)k(Lea)o(v)o(es)c(are)g(initially)e(allo)q(cated)h
26499 (to)h(the)g(sla)o(v)o(es)g(in)f(a)h(round-robin)f(manner,)f(and)i(ma)o
26500 (y)e(mo)o(v)o(e)g(due)i(to)g(load)0 1224 y(balancing)g(\(as)h(describ)q
26501 (ed)i(in)e(Section)h(3.4\).)k(Although)15 b(there)i(ma)o(y)c(b)q(e)i(b)
26502 q(etter)i(metho)q(ds)e(of)f(allo)q(cating)g(lea)o(v)o(es,)h(it)g(has)0
26503 1273 y(b)q(een)f(found)f(that)h(this)f(is)g(a)g(reasonable)h(metho)q(d)
26504 f(of)f(initially)f(balancing)h(the)i(load)f(on)g(a)g(small)e(n)o(um)o
26505 (b)q(er)h(of)h(pro)q(cessors.)62 1323 y(The)j(sla)o(v)o(e's)e(part)h
26506 (of)g(the)g(table,)g(illustrated)f(b)o(y)h(the)h(area)f(b)q(elo)o(w)f
26507 (the)i(dotted)g(line,)e(con)o(tains)h(information)d(on)i(the)0
26508 1373 y(result)f(of)e(searc)o(hing)i(the)g(p)q(osition)e(to)h(v)n
26509 (arious)f(depths)j(of)d(searc)o(h.)19 b(The)12 b(\\b)q(est")h
26510 (information)c(and)j(the)h(ply)e(to)h(whic)o(h)g(the)0
26511 1423 y(leaf)j(w)o(as)g(examined)f(is)i(giv)o(en)f(underneath)h(eac)o(h)
26512 g(leaf)f(no)q(de)h(in)f(the)h(tree.)24 b(F)m(or)15 b(leaf)g(1,)g(the)h
26513 (score)h(returned)g(is)e(-1)g(with)0 1473 y(a)f(searc)o(h)h(depth)f(of)
26514 g(4.)j(Leaf)d(3)g(illustrates)g(that)g(the)g(score)h(information)c
26515 (returned)16 b(b)o(y)e(the)g(sla)o(v)o(e)g(is)f(not)h(necessarily)h(an)
26516 0 1522 y(exact)h(n)o(um)o(b)q(er.)k(The)15 b(sla)o(v)o(es)g(main)o
26517 (tain)d(an)j(upp)q(er)h(b)q(ound)e(and)h(a)g(lo)o(w)o(er)f(b)q(ound)h
26518 (on)g(the)g(score)h(for)f(eac)o(h)g(ply)g(of)f(searc)o(h)0
26519 1572 y(depth.)19 b(The)14 b(score)h(is)f(kno)o(wn)f(to)h(b)q(e)h(exact)
26520 f(when)h(the)f(upp)q(er)h(and)f(lo)o(w)o(er)f(b)q(ounds)i(are)f(the)g
26521 (same.)0 1688 y Fv(3.3)56 b(Op)r(eration)17 b(of)i(Sla)n(v)n(e)g(in)f
26522 (APHID)0 1765 y Fk(A)c(sla)o(v)o(e)f(pro)q(cess)i(essen)o(tially)e
26523 (executes)j(the)e(same)e(co)q(de)j(that)e(a)g(sequen)o(tial)h
26524 Fj(\013\014)i Fk(searc)o(her)f(w)o(ould.)i(The)d(pro)q(cess)h(simply)0
26525 1815 y(rep)q(eats)g(the)g(follo)o(wing)c(three)k(steps)h(un)o(til)d
26526 (the)h(master)g(tells)f(it)h(that)g(the)g(searc)o(h)h(is)f(complete:)51
26527 1898 y(1.)20 b(Lo)q(ok)13 b(in)h(its)f(p)q(ortion)h(of)f(its)h(lo)q
26528 (cal)f(cop)o(y)h(of)f(the)i(APHID)f(table,)f(and)h(\014nd)g(the)g
26529 (highest)h(priorit)o(y)e(no)q(de)h(to)g(searc)o(h.)51
26530 1981 y(2.)20 b(Execute)15 b(the)g(searc)o(h.)51 2064
26531 y(3.)20 b(Rep)q(ort)14 b(the)g(result)h(bac)o(k)f(to)g(the)g(master)g
26532 (\(getting)f(an)h(up)q(date)h(to)e(its)h(APHID)g(table)g(in)g
26533 (return\).)62 2147 y(The)19 b(w)o(ork)e(selection)i(criterion)f(is)g
26534 (primarily)d(based)k(on)f(the)g(depth)h(to)f(whic)o(h)f(the)i(sla)o(v)o
26535 (e)f(has)g(already)f(searc)o(hed)0 2197 y(a)h(no)q(de.)31
26536 b(As)18 b(w)o(e)g(can)h(see)g(for)e(Sla)o(v)o(e)h(1)g(in)f(Figure)h(5,)
26537 h(lea)o(v)o(es)f(1,)g(4)g(and)g(7)f(ha)o(v)o(e)h(b)q(een)h(searc)o(hed)
26538 h(to)e(4,)g(3)g(and)g(0)f(ply)m(,)0 2247 y(resp)q(ectiv)o(ely)m(.)i(Th)
26539 o(us,)14 b(Sla)o(v)o(e)f(1)g(is)h(attempting)e(to)i(searc)o(h)h(leaf)e
26540 (7)h(to)f(1)h(ply)m(,)e(and)i(will)e(con)o(tin)o(ue)i(to)g(searc)o(h)h
26541 (leaf)e(7)h(up)g(to)f(3)0 2296 y(ply)g(b)o(y)h(using)g(iterativ)o(e)f
26542 (deep)q(ening,)i(if)e(no)h(new)g(w)o(ork)f(arriv)o(es)i(from)d(the)i
26543 (master.)62 2346 y(The)c(secondary)h(criterion)f(is)g(the)g(lo)q
26544 (cation)f(of)g(the)h(no)q(de)h(within)d(the)j(master's)e(game-tree.)16
26545 b(This)10 b(secondary)h(criterion)0 2396 y(is)f(necessary)i(since)f(it)
26546 f(is)f(usually)h(b)q(ene\014cial)g(to)g(generate)h(the)g(results)g(in)f
26547 (a)g(left-to-righ)o(t)f(order)h(for)g(the)h(master.)16
26548 b(Children)0 2446 y(of)e(no)q(des)h(are)g(usually)f(considered)h(in)g
26549 (a)f(b)q(est-to-w)o(orst)h(ordering,)f(implying)e(that)i(the)h
26550 (left-most)e(branc)o(hes)j(at)e(a)h(no)q(de)0 2496 y(ha)o(v)o(e)g(a)g
26551 (higher)g(probabilit)o(y)e(of)i(b)q(eing)g(useful)g(than)g(the)h(righ)o
26552 (t-most)d(ones.)22 b(F)m(or)15 b(Sla)o(v)o(e)f(2)h(in)g(Figure)g(5,)f
26553 (lea)o(v)o(es)i(2)e(and)h(5)0 2545 y(ha)o(v)o(e)f(b)q(oth)h(b)q(een)g
26554 (searc)o(hed)h(to)e(5)g(ply)m(,)f(but)h(leaf)g(2)g(is)g(b)q(eing)h
26555 (searc)o(hed)g(in)f(the)h(sla)o(v)o(e)f(to)g(6)g(ply)g(since)h(it)f(is)
26556 g(further)h(left)f(in)0 2595 y(the)g(tree)i(than)d(leaf)h(5.)62
26557 2645 y(A)g(no)q(de)h(that)f(has)g(a)f(priorit)o(y)h(of)f(zero)i(\(b)q
26558 (ecause)h(it)d(is)h(no)g(longer)f(part)i(of)e(the)h(master's)g(tree\))h
26559 (will)e(not)h(b)q(e)g(selected)0 2695 y(for)f(further)h(searc)o(h.)19
26560 b(F)m(or)13 b(Sla)o(v)o(e)g(3,)g(w)o(e)g(notice)h(that)f(Leaf)g(8)g(w)o
26561 (ould)g(b)q(e)h(searc)o(hed)h(if)d(it)h(had)h(b)q(een)g(visited)f(b)o
26562 (y)g(the)h(master)965 2790 y(8)p eop
26564 9 10 bop 0 42 a Fk(on)18 b(the)g(latest)g(pass.)30 b(Leaf)18
26565 b(8)f(is)h(ignored)f(b)o(y)h(the)g(sc)o(heduling)g(algorithm)d(b)q
26566 (ecause)20 b(it)d(is)h(not)g(curren)o(tly)g(part)g(of)f(the)0
26567 91 y(master's)c(tree.)62 141 y(Before)19 b(a)f(searc)o(h)h(can)f(b)q(e)
26568 h(executed,)h(an)e Fj(\013\014)i Fk(searc)o(h)f(windo)o(w)e(m)o(ust)g
26569 (b)q(e)i(generated)g(b)o(y)f(the)g(sla)o(v)o(e.)30 b(The)18
26570 b(master)0 191 y(con)o(tin)o(ually)f(advises)j(the)f(sla)o(v)o(es)g(of)
26571 g(the)g(leaf)s('s)f(lo)q(cation)h(within)f(the)h(master's)g(tree,)i
26572 (and)d(the)i(h)o(yp)q(othetical)f(v)n(alue)0 241 y(of)e(the)g(ro)q(ot)h
26573 (of)e(the)i(master's)f(tree.)29 b(Although)17 b(the)h(width)f(of)f(the)
26574 i(searc)o(h)g(windo)o(w)f(is)g(application-dep)q(enden)o(t,)h(one)0
26575 291 y(normally)12 b(w)o(an)o(ts)i(to)g(cen)o(ter)i(the)f(windo)o(w)f
26576 (around)g(this)h(h)o(yp)q(othesized)g(ro)q(ot)g(v)n(alue,)e(plus)h(or)h
26577 (min)o(us)d(a)j(factor)f(to)g(re\015ect)0 340 y(the)g(uncertain)o(t)o
26578 (y)h(in)e(it.)62 390 y(There)19 b(are)e(three)h(t)o(yp)q(es)g(of)f(up)q
26579 (date)h(messages)f(that)g(a)g(sla)o(v)o(e)g(receiv)o(es)h(from)e(the)h
26580 (master:)24 b(a)17 b(new)h(piece)g(of)e(w)o(ork)0 440
26581 y(has)g(b)q(een)h(added)f(to)f(the)i(sla)o(v)o(e)e(pro)q(cessor's)j
26582 (APHID)e(table,)f(the)i(lo)q(cation)d(of)h(a)h(leaf)f(no)q(de)h(within)
26583 f(the)i(master's)e(tree)0 490 y(has)g(c)o(hanged)h(\(c)o(hanging)e(the)
26584 i(secondary)g(w)o(ork)e(sc)o(heduling)i(criterion\),)f(and)g(a)g
26585 (noti\014cation)f(of)g(a)h(\\bad)g(b)q(ound")f(on)h(a)0
26586 540 y(no)q(de.)21 b(The)15 b(bad)g(b)q(ound)g(message)f(alerts)i(the)f
26587 (sla)o(v)o(e)f(that)h(a)g(p)q(osition's)f(searc)o(h)i(information)c(is)
26588 i(not)h(su\016cien)o(t)g(to)g(sa)o(v)o(e)0 589 y(the)g(no)q(de)h(from)d
26589 (b)q(eing)h(uncertain.)22 b(In)15 b(this)g(case,)g(the)h(sla)o(v)o(e)e
26590 (m)o(ust)g(re-searc)o(h)i(the)g(no)q(de)f(with)f(the)i
26591 Fj(\013\014)h Fk(searc)o(h)f(windo)o(w)0 639 y(sen)o(t)f(b)o(y)e(the)i
26592 (master)e(to)h(the)g(ply)g(requested.)62 689 y(As)19
26593 b(a)g(p)q(erformance)f(impro)o(v)o(emen)o(t,)f(w)o(e)i(w)o(an)o(t)f(to)
26594 h(force)g(the)g(sla)o(v)o(e)f(to)h(alw)o(a)o(ys)f(w)o(ork)g(on)g(no)q
26595 (des)i(for)e(the)h(curren)o(t)0 739 y(searc)o(h)c(depth)f(of)f(the)h
26596 (master.)j(When)d(all)e(the)i(sla)o(v)o(e's)f(w)o(ork)h(has)f(b)q(een)i
26597 (searc)o(hed)g(to)e(the)h(required)h(depth,)f(rather)g(than)0
26598 789 y(b)q(ecoming)h(idle,)g(it)g(starts)i(re-searc)o(hing)g(its)f(w)o
26599 (ork)f(sp)q(eculativ)o(ely)h(an)g(additional)e(ply)h(deep)q(er,)i(in)f
26600 (an)o(ticipation)e(of)h(the)0 839 y(next)g(iteration)f(\(depth)h
26601 Fj(d)9 b Fk(+)h(1\).)20 b(When)14 b(sp)q(eculativ)o(e)h(searc)o(h)h(is)
26602 e(running)g(on)g(a)h(pro)q(cessor,)g(the)g(sla)o(v)o(e)g(routinely)f(c)
26603 o(hec)o(ks)0 888 y(the)j(comm)o(unicati)o(on)c(c)o(hannel)j(for)g
26604 (messages)g(from)f(the)h(master.)24 b(If)16 b(the)h(sla)o(v)o(e)e
26605 (receiv)o(es)j(a)e(new)g(piece)h(of)f(w)o(ork)f(to)h(do)0
26606 938 y(at)h Fj(d)11 b Fh(\000)h Fj(d)153 923 y Fa(0)181
26607 938 y Fk(ply)17 b(or)g(less,)h(the)g(sp)q(eculativ)o(e)f(searc)o(h)i
26608 (is)e(imm)o(ediately)d(ab)q(orted)k(and)f(con)o(trol)g(is)g(returned)i
26609 (to)e(the)g(sla)o(v)o(e's)0 988 y(sc)o(heduling)d(algorithm.)0
26610 1104 y Fv(3.4)56 b(Load)18 b(Balancing)0 1181 y Fk(Although)13
26611 b(the)h(master)e(attempts)h(to)h(giv)o(e)e(an)h(equal)g(amoun)o(t)f(of)
26612 h(w)o(ork)g(to)g(eac)o(h)g(sla)o(v)o(e)g(in)g(APHID,)g(neither)i(the)e
26613 (master)0 1231 y(nor)i(the)h(sla)o(v)o(e)e(can)i(predict)g(the)f(amoun)
26614 o(t)f(of)g(e\013ort)i(required)g(to)f(complete)f(a)h
26615 Fj(d)9 b Fh(\000)i Fj(d)1377 1216 y Fa(0)1403 1231 y
26616 Fk(ply)j(searc)o(h)j(for)d(a)h(giv)o(en)g(piece)h(of)0
26617 1280 y(w)o(ork.)i(In)13 b(games)f(suc)o(h)i(as)f(c)o(hess,)i(there)f
26618 (are)g(no)f(completely)f(reliable)h(indicators)g(of)g(the)h
26619 (\\e\013ort")f(required)i(for)d(a)h(giv)o(en)0 1330 y(searc)o(h.)19
26620 b(Th)o(us,)14 b(load)f(im)o(balances)f(can)i(o)q(ccur)h(based)g(on)e
26621 (the)i(allo)q(cation)d(of)h(w)o(ork)h(to)g(sla)o(v)o(es.)62
26622 1380 y(The)j(master)g(kno)o(ws)f(all)g(of)g(the)i(information)13
26623 b(ab)q(out)k(ho)o(w)g(man)o(y)d(uncertain)k(no)q(des)g(it)e(is)h(w)o
26624 (aiting)e(for)h(from)f(eac)o(h)0 1430 y(sla)o(v)o(e.)24
26625 b(Th)o(us,)16 b(the)g(master)g(has)g(information)d(on)i(when)i(to)e(mo)
26626 o(v)o(e)g(lea)o(v)o(es)h(from)e(the)i Fj(d)1405 1415
26627 y Fa(0)1432 1430 y Fk(ply)g(tree)h(from)d(an)i Fi(overworke)n(d)0
26628 1480 y(slave)f Fk(\(a)g(sla)o(v)o(e)g(with)g(a)g(large)h(n)o(um)o(b)q
26629 (er)e(of)h(uncertain)h(no)q(des\))g(to)f(an)g Fi(underworke)n(d)i
26630 (slave)e Fk(\(a)g(sla)o(v)o(e)g(with)g(no)g(uncertain)0
26631 1529 y(no)q(des\).)24 b(This)15 b(yields)g(a)g(tradeo\013)h(b)q(et)o(w)
26632 o(een)h(faster)f(con)o(v)o(ergence)h(for)e(a)h(giv)o(en)f(ply)f(searc)o
26633 (h)j(of)e(the)h(tree)h(and)e(additional)0 1579 y(searc)o(h)g(o)o(v)o
26634 (erhead.)0 1695 y Fv(3.5)56 b(Implem)o(en)n(tation)0
26635 1772 y Fk(The)17 b(APHID)f(algorithm)e(has)j(b)q(een)g(written)g(as)g
26636 (an)f(application-indep)q(enden)o(t)g(library)g(of)f(C)i(routines.)26
26637 b(The)17 b(library)0 1822 y(w)o(as)12 b(written)g(to)f(pro)o(vide)h
26638 (minim)o(al)c(in)o(terv)o(en)o(tion)j(in)o(to)g(a)h(w)o(orking)e(v)o
26639 (ersion)i(of)f(sequen)o(tial)h Fj(\013\014)i Fk(\(or)e(its)f(common)e
26640 (v)n(arian)o(ts:)0 1872 y(NegaScout[20,)k(23)o(])g(and)g(Principal)g(V)
26641 m(ariation)f(Searc)o(h)i(\(PVS\))g([17)o(]\).)k(Since)c(the)g(library)e
26642 (is)i(application-indep)q(enden)o(t,)0 1922 y(a)c(p)q(oten)o(tial)g
26643 (user)i(m)o(ust)e(write)g(a)h(few)f(application-dep)q(enden)o(t)h
26644 (routines)g(\(suc)o(h)h(as)f(mo)o(v)o(e)d(format,)h(ho)o(w)i(to)f(mak)o
26645 (e/unmak)o(e)0 1971 y(mo)o(v)o(es,)j(p)q(osition)i(format,)e(setting)i
26646 (a)g(windo)o(w)f(for)g(a)h(sla)o(v)o(e's)f(searc)o(h,)i
26647 Fi(etc)p Fk(.\).)21 b(APHID's)15 b(message)g(passing)g(w)o(as)f
26648 (written)0 2021 y(using)g(PVM)g([28)o(])f(to)h(allo)o(w)e(for)i(the)g
26649 (maxim)o(um)9 b(p)q(ortabilit)o(y)k(among)e(a)o(v)n(ailable)h(hardw)o
26650 (are.)62 2071 y(T)m(o)h(parallelize)f(a)i(sequen)o(tial)f
26651 Fj(\013\014)j Fk(program,)11 b(the)j(user)g(mo)q(di\014es)f(his)g(or)g
26652 (her)h(searc)o(h)h(routine)f(as)f(sho)o(wn)g(in)g(Figure)h(6.)0
26653 2121 y(The)h(APHID)f(c)o(hanges)h(are)f(mark)o(ed)f(b)o(y)h(shading,)f
26654 (and)h(easily)g(\014t)g(in)o(to)g(standard)g Fj(\013\014)j
26655 Fk(framew)o(orks.)g(This)d(one)h(piece)g(of)0 2171 y(co)q(de)g
26656 (functions)f(as)g(the)g(searc)o(h)h(algorithm)c(for)j(b)q(oth)g(the)g
26657 (master)g(and)g(the)g(sla)o(v)o(e)g(pro)q(cesses.)62
26658 2220 y(There)i(are)f(a)g(few)f(additional)f(calls)i(that)f(ha)o(v)o(e)h
26659 (to)f(b)q(e)i(added)f(to)f(the)i(iterativ)o(e)e(deep)q(ening)i(routine)
26660 f(that)g(calls)f Fj(\013\014)r Fk(,)0 2270 y(outlined)f(in)h(Figure)g
26661 (7.)62 2320 y(Initially)m(,)c(it)i(w)o(as)g(an)o(ticipated)g(that)h
26662 (all)e(users)j(w)o(ould)d(w)o(an)o(t)h(to)h(searc)o(h)g(in)f(parallel)f
26663 (from)g(the)i(ro)q(ot)f(of)g(the)h(game)e(tree.)0 2370
26664 y(Ho)o(w)o(ev)o(er,)i(there)i(are)e(some)f(programs)g(that)h(wish)g(to)
26665 g(handle)g(the)h(ro)q(ot)f(of)f(the)i(game)d(tree)k(in)d(a)h
26666 (di\013eren)o(t)h(w)o(a)o(y)e(than)h(the)0 2420 y(other)j(lea)o(v)o(es)
26667 f(of)f(the)i(searc)o(h)g(tree)g(\(b)o(y)f(adding)f(calls)h(to)g(the)g
26668 (time-con)o(trol)f(mec)o(hanism,)e(and)j(sp)q(ecial)g(handling)f(of)g
26669 (the)0 2470 y Fj(\013\014)19 b Fk(searc)o(h)f(windo)o(w\).)25
26670 b(APHID)17 b(has)g(b)q(een)h(generalized)f(to)g(in)o(tegrate)g(with)f
26671 (this)h(st)o(yle)g(of)f(searc)o(hing)h(the)g(game)e(tree;)0
26672 2519 y(Figure)e(8)f(illustrates)g(the)h(c)o(hanges)g(necessary)m(.)20
26673 b(The)12 b(only)g(signi\014can)o(t)g(c)o(hange)h(from)d(Figure)j(7)f
26674 (is)g(the)h(addition)f(of)g(a)g(call)0 2569 y(to)i Fb(aphid)p
26675 164 2569 14 2 v 14 w(intnode)p 332 2569 V 15 w(premove)p
26676 Fk(.)62 2619 y(There)h(are)g(t)o(w)o(o)e(calls)g(that)h(are)h(inserted)
26677 g(in)o(to)e(the)i(main)c(program,)h(whic)o(h)i(are)g(illustrated)g(in)f
26678 (Figure)h(9.)965 2790 y(9)p eop
26681 15582380 33154007 1184071 3025960 24010342 51178209 startTexFig
26683 %%BeginDocument: code4.ps
26685 /arrowHeight 10 def
26688 /IdrawDict 51 dict def
26692 dup dup findfont dup length dict begin
26693 { 1 index /FID ne { def }{ pop pop } ifelse } forall
26694 /Encoding ISOLatin1Encoding def
26695 currentdict end definefont
26698 /ISOLatin1Encoding [
26699 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
26700 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
26701 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
26702 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
26703 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
26704 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
26705 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
26706 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
26707 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
26708 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
26709 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
26710 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
26711 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
26712 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
26713 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
26714 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
26715 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
26716 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
26717 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
26718 /guillemotright/onequarter/onehalf/threequarters/questiondown
26719 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
26720 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
26721 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
26722 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
26723 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
26724 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
26725 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
26726 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
26727 /yacute/thorn/ydieresis
26729 /Courier reencodeISO def
26732 /numGraphicParameters 17 def
26733 /stringLimit 65535 def
26737 numGraphicParameters dict begin
26746 dup type /nulltype eq {
26748 false /brushRightArrow idef
26749 false /brushLeftArrow idef
26750 true /brushNone idef
26752 /brushDashOffset idef
26753 /brushDashArray idef
26754 0 ne /brushRightArrow idef
26755 0 ne /brushLeftArrow idef
26757 false /brushNone idef
26779 dup type /nulltype eq {
26780 pop true /patternNone idef
26783 /patternGrayLevel idef
26784 /patternString idef
26786 /patternGrayLevel idef
26788 false /patternNone idef
26797 0 0 0 0 0 0 1 1 true subspline
26799 0 0 0 0 1 1 2 2 false subspline
26802 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
26804 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
26806 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
26807 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
26808 brushNone not { istroke } if
26810 n 2 sub dup n 1 sub dup rightarrow
26813 } dup 0 4 dict put def
26818 patternNone not { ifill } if
26819 brushNone not { istroke } if
26827 n 1 sub dup 0 0 1 1 2 2 true subspline
26830 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
26832 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
26833 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
26834 patternNone not { ifill } if
26835 brushNone not { istroke } if
26840 } dup 0 4 dict put def
26849 patternNone not { ifill } if
26850 brushNone not { istroke } if
26852 } dup 0 1 dict put def
26858 x 0 get y 0 get moveto
26859 x 1 get y 1 get lineto
26860 brushNone not { istroke } if
26864 } dup 0 4 dict put def
26871 x 0 get y 0 get moveto
26874 x i get y i get lineto
26876 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
26877 brushNone not { istroke } if
26879 n 2 sub dup n 1 sub dup rightarrow
26882 } dup 0 4 dict put def
26891 patternNone not { ifill } if
26892 brushNone not { istroke } if
26907 patternNone not { ifill } if
26908 brushNone not { istroke } if
26910 } dup 0 4 dict put def
26917 dup where { pop pop pop } { exch def } ifelse
26923 patternGrayLevel -1 ne {
26924 fgred bgred fgred sub patternGrayLevel mul add
26925 fggreen bggreen fggreen sub patternGrayLevel mul add
26926 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
26930 originalCTM setmatrix
26931 pathbbox /t exch def /r exch def /b exch def /l exch def
26932 /w r l sub ceiling cvi def
26933 /h t b sub ceiling cvi def
26934 /imageByteWidth w 8 div ceiling cvi def
26936 bgred bggreen bgblue setrgbcolor
26938 fgred fggreen fgblue setrgbcolor
26939 w 0 gt h 0 gt and {
26940 l b translate w h scale
26941 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
26946 } dup 0 8 dict put def
26950 brushDashOffset -1 eq {
26954 brushDashArray brushDashOffset setdash
26955 fgred fggreen fgblue setrgbcolor
26957 brushWidth setlinewidth
26958 originalCTM setmatrix
26966 fgred fggreen fgblue setrgbcolor
26967 /fontDict printFont printSize scalefont dup setfont def
26968 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
26969 transform exch pop def
26970 /vertoffset 1 printSize sub descender sub def {
26971 0 vertoffset moveto show
26972 /vertoffset vertoffset printSize sub def
26976 } dup 0 3 dict put def
26979 /patternByteLength patternString length def
26980 /patternHeight patternByteLength 8 mul sqrt cvi def
26981 /patternWidth patternHeight def
26982 /patternByteWidth patternWidth 8 idiv def
26983 /imageByteMaxLength imageByteWidth imageHeight mul
26984 stringLimit patternByteWidth sub min def
26985 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
26986 patternHeight mul patternHeight max def
26987 /imageHeight imageHeight imageMaxHeight sub store
26988 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
26989 0 1 imageMaxHeight 1 sub {
26991 /patternRow y patternByteWidth mul patternByteLength mod def
26992 /patternRowString patternString patternRow patternByteWidth getinterval def
26993 /imageRow y imageByteWidth mul def
26994 0 patternByteWidth imageByteWidth 1 sub {
26996 imageString imageRow x add patternRowString putinterval
27001 } dup 0 12 dict put def
27004 dup 3 2 roll dup 4 3 roll lt { exch } if pop
27008 dup 3 2 roll dup 4 3 roll gt { exch } if pop
27020 } dup 0 4 dict put def
27028 x0 2 mul x1 add 3 div
27029 y0 2 mul y1 add 3 div
27031 } dup 0 4 dict put def
27035 /movetoNeeded exch def
27036 y exch get /y3 exch def
27037 x exch get /x3 exch def
27038 y exch get /y2 exch def
27039 x exch get /x2 exch def
27040 y exch get /y1 exch def
27041 x exch get /x1 exch def
27042 y exch get /y0 exch def
27043 x exch get /x0 exch def
27044 x1 y1 x2 y2 thirdpoint
27047 x2 y2 x1 y1 thirdpoint
27050 x1 y1 x0 y0 thirdpoint
27054 x2 y2 x3 y3 thirdpoint
27058 movetoNeeded { p0x p0y moveto } if
27059 p1x p1y p2x p2y p3x p3y curveto
27061 } dup 0 17 dict put def
27075 fgred fggreen fgblue setrgbcolor
27076 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
27080 dup 3 -1 roll dup 4 1 roll exch
27084 exch dup 3 1 roll exch lineto
27087 bgred bggreen bgblue setrgbcolor
27093 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
27099 transform originalCTM itransform
27102 transform originalCTM itransform
27105 /dy tipy taily sub def
27106 /dx tipx tailx sub def
27107 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
27109 originalCTM setmatrix
27110 tipx tipy translate
27113 arrowHeight neg arrowWidth 2 div moveto
27115 arrowHeight neg arrowWidth 2 div neg lineto
27117 originalCTM setmatrix
27118 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
27120 /padtail brushWidth 2 div def
27121 tipx tipy translate
27124 arrowHeight padtip add padtail add arrowHeight div dup scale
27129 originalCTM setmatrix
27130 tipx tipy translate
27137 } dup 0 9 dict put def
27141 arrowHeight neg arrowWidth 2 div moveto
27143 arrowHeight neg arrowWidth 2 div neg lineto
27148 y exch get /taily exch def
27149 x exch get /tailx exch def
27150 y exch get /tipy exch def
27151 x exch get /tipx exch def
27152 brushLeftArrow { tipx tipy tailx taily arrowhead } if
27154 } dup 0 4 dict put def
27158 y exch get /tipy exch def
27159 x exch get /tipx exch def
27160 y exch get /taily exch def
27161 x exch get /tailx exch def
27162 brushRightArrow { tipx tipy tailx taily arrowhead } if
27164 } dup 0 4 dict put def
27167 %I Idraw 10 Grid 6 6
27177 [ 0.799705 0 0 0.799705 0 0 ] concat
27178 /originalCTM matrix currentmatrix def
27189 [ 0.99763 -0 -0 3.92857 18.0284 -414.643 ] concat
27191 12 231 432 243 Rect
27203 [ 0.99763 -0 -0 3.07143 18.0284 -128.357 ] concat
27205 12 231 432 243 Rect
27217 [ 1 -0 -0 1 18 477 ] concat
27219 12 231 432 243 Rect
27231 [ 1 -0 -0 1 18 -57 ] concat
27233 12 231 432 243 Rect
27245 [ 1 -0 -0 1 18 -27 ] concat
27247 12 231 432 243 Rect
27259 [ 1 -0 -0 1 18 177 ] concat
27261 12 231 432 243 Rect
27273 [ 1 -0 -0 1 18 219 ] concat
27275 12 231 432 243 Rect
27287 [ 1 -0 -0 1 18 81 ] concat
27289 12 231 432 243 Rect
27295 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27298 [ 1 0 0 1 42 957 ] concat
27301 (int PVS\(p, alpha, beta, depth, plytogo\))
27308 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27311 [ 1 0 0 1 42 945 ] concat
27321 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27324 [ 1 0 0 1 42 933 ] concat
27334 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27337 [ 1 0 0 1 42 921 ] concat
27340 (int depth, plytogo;)
27347 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27350 [ 1 0 0 1 42 909 ] concat
27360 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27363 [ 1 0 0 1 72 873 ] concat
27366 (int h_length; /* ply position previously searched to */)
27373 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27376 [ 1 0 0 1 72 897 ] concat
27379 (char *p_hash; /* pointer to hash value */)
27386 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27389 [ 1 0 0 1 72 885 ] concat
27392 (char *p_key; /* pointer to hash table "lock" */)
27399 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27402 [ 1 0 0 1 72 861 ] concat
27405 (int h_score; /* score for h_length ply */)
27412 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27415 [ 1 0 0 1 72 849 ] concat
27418 (int h_flag; /* VALID, LBOUND or UBOUND */)
27425 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27428 [ 1 0 0 1 72 837 ] concat
27431 (move *h_move; /* recommended move for h_length ply */)
27438 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27441 [ 1 0 0 1 72 825 ] concat
27444 (int width; /* number of moves in move list */)
27451 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27454 [ 1 0 0 1 72 813 ] concat
27457 (int i; /* move counter */)
27464 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27467 [ 1 0 0 1 72 801 ] concat
27470 (int value; /* score of child PVS call */)
27477 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27480 [ 1 0 0 1 72 783 ] concat
27483 (/* Generate hash value and key for this position */)
27490 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27493 [ 1 0 0 1 72 771 ] concat
27496 (generate_hash\(p, p_hash, p_key\);)
27503 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27506 [ 1 0 0 1 72 759 ] concat
27509 (/* Fetch information from local transposition table */)
27516 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27519 [ 1 0 0 1 72 747 ] concat
27522 (retrieve\(p_hash, p_kley, h_length, h_score, h_flag, h_move\);)
27529 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27532 [ 1 0 0 1 72 729 ] concat
27535 (/* If we have searched position deep enough, use score info */)
27542 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27545 [ 1 0 0 1 96 705 ] concat
27548 (if \(flag == VALID\) { return\(h_score\); })
27555 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27558 [ 1 0 0 1 96 669 ] concat
27561 (if \(alpha >= beta\) { return\(h_score\); })
27568 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27571 [ 1 0 0 1 72 657 ] concat
27581 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27584 [ 1 0 0 1 72 639 ] concat
27587 (/* Evaluate position if at bottom of the tree */)
27594 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27597 [ 1 0 0 1 72 591 ] concat
27607 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27610 [ 1 0 0 1 72 573 ] concat
27613 (/* Generate move list, evaluate position if no moves */)
27620 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27623 [ 1 0 0 1 72 549 ] concat
27626 (if \(width == 0\) { return\(evaluate\(p\)\); })
27633 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27636 [ 1 0 0 1 72 501 ] concat
27646 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27649 [ 1 0 0 1 96 681 ] concat
27652 (if \(flag == UBOUND\) { beta = min\(beta,h_score\); })
27659 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27662 [ 1 0 0 1 96 693 ] concat
27665 (if \(flag == LBOUND\) { alpha = max\(alpha,h_score\); })
27672 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27675 [ 1 0 0 1 72 483 ] concat
27678 (score = -INFINITY;)
27685 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27688 [ 1 0 0 1 72 471 ] concat
27691 (lower = alpha; upper = beta;)
27698 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27701 [ 1 0 0 1 72 441 ] concat
27704 (/* Loop through moves in move list */)
27711 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27714 [ 1 0 0 1 72 429 ] concat
27717 (for\(i=1; \(i <= width && score <= beta\); i++ \) {)
27724 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27727 [ 1 0 0 1 96 405 ] concat
27730 (make_move\(p, move[i]\);)
27737 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27740 [ 1 0 0 1 96 387 ] concat
27743 (value = -PVS\(p, -upper, -lower, depth+1, plytogo-1\);)
27750 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27753 [ 1 0 0 1 96 375 ] concat
27756 (if \(value > score && i > 1\) {)
27763 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27766 [ 1 0 0 1 120 363 ] concat
27769 (value = -PVS\(p, -beta, -value, depth+1, plytogo-1\);)
27776 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27779 [ 1 0 0 1 96 351 ] concat
27789 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27792 [ 1 0 0 1 96 333 ] concat
27795 (unmake_move\(p,move[i]\);)
27802 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27805 [ 1 0 0 1 96 309 ] concat
27808 (if \(value > score\) {)
27815 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27818 [ 1 0 0 1 120 297 ] concat
27828 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27831 [ 1 0 0 1 120 285 ] concat
27834 (move_opt = move[i];)
27841 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27844 [ 1 0 0 1 96 273 ] concat
27854 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27857 [ 1 0 0 1 96 255 ] concat
27860 (/* Set bounds for next search */)
27867 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27870 [ 1 0 0 1 96 243 ] concat
27873 (lower = max\(alpha, score\); upper = lower+1;)
27880 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27883 [ 1 0 0 1 72 231 ] concat
27886 (} /* for all moves */)
27893 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27896 [ 1 0 0 1 72 195 ] concat
27899 (/* Write information into local trans. table */)
27906 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27909 [ 1 0 0 1 72 171 ] concat
27919 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27922 [ 1 0 0 1 72 561 ] concat
27925 (width = generate\(p, h_move\);)
27932 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27935 [ 1 0 0 1 72 159 ] concat
27938 (if \(score <= alpha\) { h_flag = UBOUND; })
27945 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27948 [ 1 0 0 1 72 147 ] concat
27951 (if \(score >= beta\) { h_flag = LBOUND; })
27958 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27961 [ 1 0 0 1 72 135 ] concat
27964 (if \(h_length <= plytogo\) {)
27971 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27974 [ 1 0 0 1 96 123 ] concat
27977 (store\(p_hash, p_key, plytogo, score, h_flag, move_opt\);)
27984 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
27987 [ 1 0 0 1 72 111 ] concat
27997 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28000 [ 1 0 0 1 72 99 ] concat
28010 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28013 [ 1 0 0 1 48 87 ] concat
28016 (} /* function PVS */)
28029 [ 2 -0 -0 2 -190 -34 ] concat
28031 107 47 323 503 Rect
28037 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28040 [ 1 0 0 1 72 627 ] concat
28043 (if \(plytogo <= 0\) { return\(evaluate\(p\)\); })
28050 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28053 [ 1 0 0 1 72 717 ] concat
28056 (if \(aphid_master\(\) == FALSE && h_length == plytogo\) {)
28063 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28066 [ 1 0 0 1 72 615 ] concat
28069 (if \(aphid_horizon\(depth\)\) {)
28076 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28079 [ 1 0 0 1 72 537 ] concat
28082 (if \(aphid_checkalarm\(\) != FALSE\) {)
28089 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28092 [ 1 0 0 1 72 459 ] concat
28095 (aphid_intnode_start\(depth, p_hash, p_key\);)
28102 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28105 [ 1 0 0 1 96 417 ] concat
28108 (aphid_intnode_move\(depth, &\(move[i]\)\);)
28115 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28118 [ 1 0 0 1 96 321 ] concat
28121 (aphid_intnode_update\(depth, value\);)
28128 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28131 [ 1 0 0 1 72 213 ] concat
28134 (if \(score >= beta\) { aphid_intnode_fixbound\(depth\); })
28141 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28144 [ 1 0 0 1 72 183 ] concat
28147 (aphid_intnode_end\(depth, &score\);)
28154 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28157 [ 1 0 0 1 96 525 ] concat
28160 (terminate_search = TRUE;)
28167 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28170 [ 1 0 0 1 96 603 ] concat
28173 (return\(aphid_eval_leaf\(alpha,beta,depth,p_hash,p_key\)\);)
28180 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28183 [ 1 0 0 1 96 513 ] concat
28186 (return\(0\); /* Should exit PVS quickly when alarm on */)
28199 395 2208 a Fk(Figure)14 b(6:)k(Ho)o(w)13 b(APHID)h(Mo)q(di\014es)g(a)g
28200 (T)o(ypical)f(PVS)h(Implemen)o(tation)459 2284 y
28201 16292818 4736286 1184071 44665815 23615651 51178209 startTexFig
28204 %%BeginDocument: code5.ps
28206 /arrowHeight 10 def
28209 /IdrawDict 51 dict def
28213 dup dup findfont dup length dict begin
28214 { 1 index /FID ne { def }{ pop pop } ifelse } forall
28215 /Encoding ISOLatin1Encoding def
28216 currentdict end definefont
28219 /ISOLatin1Encoding [
28220 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
28221 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
28222 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
28223 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
28224 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
28225 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
28226 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
28227 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
28228 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
28229 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
28230 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
28231 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
28232 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
28233 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
28234 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
28235 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
28236 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
28237 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
28238 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
28239 /guillemotright/onequarter/onehalf/threequarters/questiondown
28240 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
28241 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
28242 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
28243 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
28244 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
28245 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
28246 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
28247 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
28248 /yacute/thorn/ydieresis
28250 /Courier reencodeISO def
28253 /numGraphicParameters 17 def
28254 /stringLimit 65535 def
28258 numGraphicParameters dict begin
28267 dup type /nulltype eq {
28269 false /brushRightArrow idef
28270 false /brushLeftArrow idef
28271 true /brushNone idef
28273 /brushDashOffset idef
28274 /brushDashArray idef
28275 0 ne /brushRightArrow idef
28276 0 ne /brushLeftArrow idef
28278 false /brushNone idef
28300 dup type /nulltype eq {
28301 pop true /patternNone idef
28304 /patternGrayLevel idef
28305 /patternString idef
28307 /patternGrayLevel idef
28309 false /patternNone idef
28318 0 0 0 0 0 0 1 1 true subspline
28320 0 0 0 0 1 1 2 2 false subspline
28323 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
28325 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
28327 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
28328 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
28329 brushNone not { istroke } if
28331 n 2 sub dup n 1 sub dup rightarrow
28334 } dup 0 4 dict put def
28339 patternNone not { ifill } if
28340 brushNone not { istroke } if
28348 n 1 sub dup 0 0 1 1 2 2 true subspline
28351 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
28353 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
28354 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
28355 patternNone not { ifill } if
28356 brushNone not { istroke } if
28361 } dup 0 4 dict put def
28370 patternNone not { ifill } if
28371 brushNone not { istroke } if
28373 } dup 0 1 dict put def
28379 x 0 get y 0 get moveto
28380 x 1 get y 1 get lineto
28381 brushNone not { istroke } if
28385 } dup 0 4 dict put def
28392 x 0 get y 0 get moveto
28395 x i get y i get lineto
28397 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
28398 brushNone not { istroke } if
28400 n 2 sub dup n 1 sub dup rightarrow
28403 } dup 0 4 dict put def
28412 patternNone not { ifill } if
28413 brushNone not { istroke } if
28428 patternNone not { ifill } if
28429 brushNone not { istroke } if
28431 } dup 0 4 dict put def
28438 dup where { pop pop pop } { exch def } ifelse
28444 patternGrayLevel -1 ne {
28445 fgred bgred fgred sub patternGrayLevel mul add
28446 fggreen bggreen fggreen sub patternGrayLevel mul add
28447 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
28451 originalCTM setmatrix
28452 pathbbox /t exch def /r exch def /b exch def /l exch def
28453 /w r l sub ceiling cvi def
28454 /h t b sub ceiling cvi def
28455 /imageByteWidth w 8 div ceiling cvi def
28457 bgred bggreen bgblue setrgbcolor
28459 fgred fggreen fgblue setrgbcolor
28460 w 0 gt h 0 gt and {
28461 l b translate w h scale
28462 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
28467 } dup 0 8 dict put def
28471 brushDashOffset -1 eq {
28475 brushDashArray brushDashOffset setdash
28476 fgred fggreen fgblue setrgbcolor
28478 brushWidth setlinewidth
28479 originalCTM setmatrix
28487 fgred fggreen fgblue setrgbcolor
28488 /fontDict printFont printSize scalefont dup setfont def
28489 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
28490 transform exch pop def
28491 /vertoffset 1 printSize sub descender sub def {
28492 0 vertoffset moveto show
28493 /vertoffset vertoffset printSize sub def
28497 } dup 0 3 dict put def
28500 /patternByteLength patternString length def
28501 /patternHeight patternByteLength 8 mul sqrt cvi def
28502 /patternWidth patternHeight def
28503 /patternByteWidth patternWidth 8 idiv def
28504 /imageByteMaxLength imageByteWidth imageHeight mul
28505 stringLimit patternByteWidth sub min def
28506 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
28507 patternHeight mul patternHeight max def
28508 /imageHeight imageHeight imageMaxHeight sub store
28509 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
28510 0 1 imageMaxHeight 1 sub {
28512 /patternRow y patternByteWidth mul patternByteLength mod def
28513 /patternRowString patternString patternRow patternByteWidth getinterval def
28514 /imageRow y imageByteWidth mul def
28515 0 patternByteWidth imageByteWidth 1 sub {
28517 imageString imageRow x add patternRowString putinterval
28522 } dup 0 12 dict put def
28525 dup 3 2 roll dup 4 3 roll lt { exch } if pop
28529 dup 3 2 roll dup 4 3 roll gt { exch } if pop
28541 } dup 0 4 dict put def
28549 x0 2 mul x1 add 3 div
28550 y0 2 mul y1 add 3 div
28552 } dup 0 4 dict put def
28556 /movetoNeeded exch def
28557 y exch get /y3 exch def
28558 x exch get /x3 exch def
28559 y exch get /y2 exch def
28560 x exch get /x2 exch def
28561 y exch get /y1 exch def
28562 x exch get /x1 exch def
28563 y exch get /y0 exch def
28564 x exch get /x0 exch def
28565 x1 y1 x2 y2 thirdpoint
28568 x2 y2 x1 y1 thirdpoint
28571 x1 y1 x0 y0 thirdpoint
28575 x2 y2 x3 y3 thirdpoint
28579 movetoNeeded { p0x p0y moveto } if
28580 p1x p1y p2x p2y p3x p3y curveto
28582 } dup 0 17 dict put def
28596 fgred fggreen fgblue setrgbcolor
28597 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
28601 dup 3 -1 roll dup 4 1 roll exch
28605 exch dup 3 1 roll exch lineto
28608 bgred bggreen bgblue setrgbcolor
28614 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
28620 transform originalCTM itransform
28623 transform originalCTM itransform
28626 /dy tipy taily sub def
28627 /dx tipx tailx sub def
28628 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
28630 originalCTM setmatrix
28631 tipx tipy translate
28634 arrowHeight neg arrowWidth 2 div moveto
28636 arrowHeight neg arrowWidth 2 div neg lineto
28638 originalCTM setmatrix
28639 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
28641 /padtail brushWidth 2 div def
28642 tipx tipy translate
28645 arrowHeight padtip add padtail add arrowHeight div dup scale
28650 originalCTM setmatrix
28651 tipx tipy translate
28658 } dup 0 9 dict put def
28662 arrowHeight neg arrowWidth 2 div moveto
28664 arrowHeight neg arrowWidth 2 div neg lineto
28669 y exch get /taily exch def
28670 x exch get /tailx exch def
28671 y exch get /tipy exch def
28672 x exch get /tipx exch def
28673 brushLeftArrow { tipx tipy tailx taily arrowhead } if
28675 } dup 0 4 dict put def
28679 y exch get /tipy exch def
28680 x exch get /tipx exch def
28681 y exch get /taily exch def
28682 x exch get /tailx exch def
28683 brushRightArrow { tipx tipy tailx taily arrowhead } if
28685 } dup 0 4 dict put def
28688 %I Idraw 10 Grid 8 8
28698 [ 0.799705 0 0 0.799705 0 0 ] concat
28699 /originalCTM matrix currentmatrix def
28710 [ 1 -0 -0 1 -125 612 ] concat
28712 155 342 563 354 Rect
28718 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28721 [ 1 0 0 1 36 951 ] concat
28724 (for\(plytogo=1;\(plytogo <= MAXDEPTH && done == FALSE\); plytogo++\) {)
28731 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28734 [ 1 0 0 1 60 939 ] concat
28737 (/* Set up search */)
28750 [ 1.00951 -0 -0 1.12603 -126.417 566.628 ] concat
28752 149 252 569 360 Rect
28758 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28761 [ 1 0 0 1 36 963 ] concat
28764 (aphid_initsearch\(MAXDEPTH\);)
28777 [ 1 0 0 1 -125 596 ] concat
28779 155 294 563 318 Rect
28791 [ 1 0 0 1 -125 596 ] concat
28793 155 258 563 270 Rect
28799 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28802 [ 1 0 0 1 60 887 ] concat
28805 (/* Print out results of search */)
28812 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28815 [ 1 0 0 1 36 875 ] concat
28825 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28828 [ 1 0 0 1 60 911 ] concat
28831 (/* Call to aphid_rootsearch replaces call to PVS */)
28838 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28841 [ 1 0 0 1 60 899 ] concat
28844 (score = aphid_rootsearch\(0,plytogo,guess-eps,guess+eps\);)
28851 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28854 [ 1 0 0 1 36 863 ] concat
28857 (aphid_endsearch\(\);)
28864 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
28867 [ 1 0 0 1 61 925 ] concat
28870 (/* Search at root around value \(guess\) with small error \(eps\) */)
28883 385 2675 a Fk(Figure)g(7:)k(Ho)o(w)c(APHID)g(Mo)q(di\014es)g(the)g
28884 (Iterativ)o(e)h(Deep)q(ening)f(Routine)954 2790 y(10)p
28887 11 12 bop 465 197 a
28888 16117604 19418804 1184071 24405032 23549870 51178209 startTexFig
28890 %%BeginDocument: code6.ps
28892 /arrowHeight 10 def
28895 /IdrawDict 51 dict def
28899 dup dup findfont dup length dict begin
28900 { 1 index /FID ne { def }{ pop pop } ifelse } forall
28901 /Encoding ISOLatin1Encoding def
28902 currentdict end definefont
28905 /ISOLatin1Encoding [
28906 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
28907 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
28908 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
28909 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
28910 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
28911 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
28912 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
28913 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
28914 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
28915 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
28916 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
28917 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
28918 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
28919 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
28920 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
28921 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
28922 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
28923 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
28924 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
28925 /guillemotright/onequarter/onehalf/threequarters/questiondown
28926 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
28927 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
28928 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
28929 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
28930 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
28931 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
28932 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
28933 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
28934 /yacute/thorn/ydieresis
28936 /Courier reencodeISO def
28939 /numGraphicParameters 17 def
28940 /stringLimit 65535 def
28944 numGraphicParameters dict begin
28953 dup type /nulltype eq {
28955 false /brushRightArrow idef
28956 false /brushLeftArrow idef
28957 true /brushNone idef
28959 /brushDashOffset idef
28960 /brushDashArray idef
28961 0 ne /brushRightArrow idef
28962 0 ne /brushLeftArrow idef
28964 false /brushNone idef
28986 dup type /nulltype eq {
28987 pop true /patternNone idef
28990 /patternGrayLevel idef
28991 /patternString idef
28993 /patternGrayLevel idef
28995 false /patternNone idef
29004 0 0 0 0 0 0 1 1 true subspline
29006 0 0 0 0 1 1 2 2 false subspline
29009 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
29011 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
29013 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
29014 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
29015 brushNone not { istroke } if
29017 n 2 sub dup n 1 sub dup rightarrow
29020 } dup 0 4 dict put def
29025 patternNone not { ifill } if
29026 brushNone not { istroke } if
29034 n 1 sub dup 0 0 1 1 2 2 true subspline
29037 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
29039 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
29040 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
29041 patternNone not { ifill } if
29042 brushNone not { istroke } if
29047 } dup 0 4 dict put def
29056 patternNone not { ifill } if
29057 brushNone not { istroke } if
29059 } dup 0 1 dict put def
29065 x 0 get y 0 get moveto
29066 x 1 get y 1 get lineto
29067 brushNone not { istroke } if
29071 } dup 0 4 dict put def
29078 x 0 get y 0 get moveto
29081 x i get y i get lineto
29083 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
29084 brushNone not { istroke } if
29086 n 2 sub dup n 1 sub dup rightarrow
29089 } dup 0 4 dict put def
29098 patternNone not { ifill } if
29099 brushNone not { istroke } if
29114 patternNone not { ifill } if
29115 brushNone not { istroke } if
29117 } dup 0 4 dict put def
29124 dup where { pop pop pop } { exch def } ifelse
29130 patternGrayLevel -1 ne {
29131 fgred bgred fgred sub patternGrayLevel mul add
29132 fggreen bggreen fggreen sub patternGrayLevel mul add
29133 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
29137 originalCTM setmatrix
29138 pathbbox /t exch def /r exch def /b exch def /l exch def
29139 /w r l sub ceiling cvi def
29140 /h t b sub ceiling cvi def
29141 /imageByteWidth w 8 div ceiling cvi def
29143 bgred bggreen bgblue setrgbcolor
29145 fgred fggreen fgblue setrgbcolor
29146 w 0 gt h 0 gt and {
29147 l b translate w h scale
29148 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
29153 } dup 0 8 dict put def
29157 brushDashOffset -1 eq {
29161 brushDashArray brushDashOffset setdash
29162 fgred fggreen fgblue setrgbcolor
29164 brushWidth setlinewidth
29165 originalCTM setmatrix
29173 fgred fggreen fgblue setrgbcolor
29174 /fontDict printFont printSize scalefont dup setfont def
29175 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
29176 transform exch pop def
29177 /vertoffset 1 printSize sub descender sub def {
29178 0 vertoffset moveto show
29179 /vertoffset vertoffset printSize sub def
29183 } dup 0 3 dict put def
29186 /patternByteLength patternString length def
29187 /patternHeight patternByteLength 8 mul sqrt cvi def
29188 /patternWidth patternHeight def
29189 /patternByteWidth patternWidth 8 idiv def
29190 /imageByteMaxLength imageByteWidth imageHeight mul
29191 stringLimit patternByteWidth sub min def
29192 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
29193 patternHeight mul patternHeight max def
29194 /imageHeight imageHeight imageMaxHeight sub store
29195 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
29196 0 1 imageMaxHeight 1 sub {
29198 /patternRow y patternByteWidth mul patternByteLength mod def
29199 /patternRowString patternString patternRow patternByteWidth getinterval def
29200 /imageRow y imageByteWidth mul def
29201 0 patternByteWidth imageByteWidth 1 sub {
29203 imageString imageRow x add patternRowString putinterval
29208 } dup 0 12 dict put def
29211 dup 3 2 roll dup 4 3 roll lt { exch } if pop
29215 dup 3 2 roll dup 4 3 roll gt { exch } if pop
29227 } dup 0 4 dict put def
29235 x0 2 mul x1 add 3 div
29236 y0 2 mul y1 add 3 div
29238 } dup 0 4 dict put def
29242 /movetoNeeded exch def
29243 y exch get /y3 exch def
29244 x exch get /x3 exch def
29245 y exch get /y2 exch def
29246 x exch get /x2 exch def
29247 y exch get /y1 exch def
29248 x exch get /x1 exch def
29249 y exch get /y0 exch def
29250 x exch get /x0 exch def
29251 x1 y1 x2 y2 thirdpoint
29254 x2 y2 x1 y1 thirdpoint
29257 x1 y1 x0 y0 thirdpoint
29261 x2 y2 x3 y3 thirdpoint
29265 movetoNeeded { p0x p0y moveto } if
29266 p1x p1y p2x p2y p3x p3y curveto
29268 } dup 0 17 dict put def
29282 fgred fggreen fgblue setrgbcolor
29283 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
29287 dup 3 -1 roll dup 4 1 roll exch
29291 exch dup 3 1 roll exch lineto
29294 bgred bggreen bgblue setrgbcolor
29300 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
29306 transform originalCTM itransform
29309 transform originalCTM itransform
29312 /dy tipy taily sub def
29313 /dx tipx tailx sub def
29314 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
29316 originalCTM setmatrix
29317 tipx tipy translate
29320 arrowHeight neg arrowWidth 2 div moveto
29322 arrowHeight neg arrowWidth 2 div neg lineto
29324 originalCTM setmatrix
29325 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
29327 /padtail brushWidth 2 div def
29328 tipx tipy translate
29331 arrowHeight padtip add padtail add arrowHeight div dup scale
29336 originalCTM setmatrix
29337 tipx tipy translate
29344 } dup 0 9 dict put def
29348 arrowHeight neg arrowWidth 2 div moveto
29350 arrowHeight neg arrowWidth 2 div neg lineto
29355 y exch get /taily exch def
29356 x exch get /tailx exch def
29357 y exch get /tipy exch def
29358 x exch get /tipx exch def
29359 brushLeftArrow { tipx tipy tailx taily arrowhead } if
29361 } dup 0 4 dict put def
29365 y exch get /tipy exch def
29366 x exch get /tipx exch def
29367 y exch get /taily exch def
29368 x exch get /tailx exch def
29369 brushRightArrow { tipx tipy tailx taily arrowhead } if
29371 } dup 0 4 dict put def
29374 %I Idraw 10 Grid 8 8
29384 [ 0.799705 0 0 0.799705 0 0 ] concat
29385 /originalCTM matrix currentmatrix def
29396 [ 1 -0 -0 1 -125 559 ] concat
29398 155 173 563 197 Rect
29410 [ 1 -0 -0 1 -125 559 ] concat
29412 155 209 563 221 Rect
29424 [ 1 -0 -0 1 -125 559 ] concat
29426 155 323 563 335 Rect
29438 [ 1 -0 -0 1 -125 612 ] concat
29440 155 342 563 354 Rect
29446 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29449 [ 1 0 0 1 36 951 ] concat
29452 (for\(plytogo=1;\(plytogo <= MAXDEPTH && done == FALSE\); plytogo++\) {)
29459 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29462 [ 1 0 0 1 36 903 ] concat
29478 [ 1.00711 -0 -0 4.68604 -126.059 -714.975 ] concat
29480 149 252 569 360 Rect
29486 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29489 [ 1 0 0 1 60 915 ] concat
29492 (/* Print out results of search */)
29499 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29502 [ 1 0 0 1 60 927 ] concat
29505 (score = ROOT_PVS\(root_pos,guess-eps,guess+eps,0,plytogo\);)
29512 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29515 [ 1 0 0 1 36 867 ] concat
29518 (ROOT_PVS\(root_pos, alpha, beta, depth, plytogo\))
29525 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29528 [ 1 0 0 1 36 855 ] concat
29538 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29541 [ 1 0 0 1 36 843 ] concat
29551 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29554 [ 1 0 0 1 60 831 ] concat
29564 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29567 [ 1 0 0 1 60 819 ] concat
29570 (/* Search PV Move */)
29577 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29580 [ 1 0 0 1 60 807 ] concat
29590 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29593 [ 1 0 0 1 36 789 ] concat
29596 (search_best_move:)
29603 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29606 [ 1 0 0 1 60 765 ] concat
29609 (make_move\(p,bestmove\);)
29616 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29619 [ 1 0 0 1 60 729 ] concat
29622 (unmake_move\(p,bestmove\);)
29629 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29632 [ 1 0 0 1 36 963 ] concat
29635 (aphid_initsearch\(MAXDEPTH\);)
29642 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29645 [ 1 0 0 1 36 891 ] concat
29648 (aphid_endsearch\(\);)
29655 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29658 [ 1 0 0 1 60 777 ] concat
29661 (aphid_intnode_premove\(depth, &bestmove\);)
29668 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29671 [ 1 0 0 1 60 753 ] concat
29674 (/* aphid_rootsearch replaces typical call to PVS */)
29681 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29684 [ 1 0 0 1 60 939 ] concat
29687 (/* Set up search with small window \(eps\) around guess */)
29694 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29697 [ 1 0 0 1 60 741 ] concat
29700 (oldscore = -aphid_rootsearch\(depth+1,plytogo-1,-beta,-lower\);)
29713 [ 1 0 0 1 -125 437 ] concat
29715 155 159 563 183 Rect
29727 [ 1 0 0 1 -125 437 ] concat
29729 155 207 563 219 Rect
29735 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29738 [ 1 0 0 1 84 641 ] concat
29741 (make_move\(p,move[i]\);)
29748 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29751 [ 1 0 0 1 84 629 ] concat
29754 (/* Check if move beats PV move by more than delta */)
29761 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29764 [ 1 0 0 1 60 581 ] concat
29774 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29777 [ 1 0 0 1 84 539 ] concat
29780 (bestmove = move[i];)
29787 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29790 [ 1 0 0 1 84 527 ] concat
29793 (lower = newscore;)
29800 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29803 [ 1 0 0 1 60 503 ] concat
29813 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29816 [ 1 0 0 1 60 491 ] concat
29826 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29829 [ 1 0 0 1 36 479 ] concat
29832 (} /* function ROOT_PVS */)
29839 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29842 [ 1 0 0 1 84 653 ] concat
29845 (aphid_intnode_premove\(depth,&move[i]\);)
29852 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29855 [ 1 0 0 1 84 593 ] concat
29858 (unmake_move\(p,move[i]\);)
29865 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29868 [ 1 0 0 1 210 605 ] concat
29871 (-oldscore-delta-1, -oldscore-delta\);)
29878 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29881 [ 1 0 0 1 84 617 ] concat
29884 (newscore = -aphid_rootsearch\(depth+1, plytogo-1,)
29891 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29894 [ 1 0 0 1 84 515 ] concat
29897 (if \(newscore < beta\) { goto search_best_move; })
29904 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29907 [ 1 0 0 1 84 551 ] concat
29910 (/* set new best move and score and research \(if necc.\) */)
29917 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29920 [ 1 0 0 1 60 665 ] concat
29923 (for\(i=2;\(i<=width && newscore <= oldscore+delta; i++\) {)
29930 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29933 [ 1 0 0 1 60 677 ] concat
29936 (newscore = oldscore;)
29943 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29946 [ 1 0 0 1 60 563 ] concat
29949 (if \(newscore > oldscore+delta\) {)
29956 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29959 [ 1 0 0 1 60 711 ] concat
29962 (/* Search other moves at root, and only switch if move beats */)
29969 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
29972 [ 1 0 0 1 59 698 ] concat
29975 (/* PV score \(oldscore\) by a small margin \(delta\) */)
29988 248 1518 a Fk(Figure)14 b(8:)j(Ho)o(w)d(APHID)g(Mo)q(di\014es)g(Sp)q
29989 (ecial)g(Handling)f(of)g(the)i(Ro)q(ot)e(of)g(the)i(Game)d(T)m(ree)489
29991 15345567 7104430 1447198 41639854 22102671 51178209 startTexFig
29993 %%BeginDocument: code7.ps
29995 /arrowHeight 10 def
29998 /IdrawDict 51 dict def
30002 dup dup findfont dup length dict begin
30003 { 1 index /FID ne { def }{ pop pop } ifelse } forall
30004 /Encoding ISOLatin1Encoding def
30005 currentdict end definefont
30008 /ISOLatin1Encoding [
30009 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
30010 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
30011 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
30012 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
30013 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
30014 /parenleft/parenright/asterisk/plus/comma/minus/period/slash
30015 /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
30016 /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
30017 /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
30018 /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
30019 /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
30020 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
30021 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
30022 /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
30023 /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
30024 /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
30025 /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
30026 /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
30027 /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
30028 /guillemotright/onequarter/onehalf/threequarters/questiondown
30029 /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
30030 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
30031 /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
30032 /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
30033 /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
30034 /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
30035 /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
30036 /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
30037 /yacute/thorn/ydieresis
30039 /Courier reencodeISO def
30042 /numGraphicParameters 17 def
30043 /stringLimit 65535 def
30047 numGraphicParameters dict begin
30056 dup type /nulltype eq {
30058 false /brushRightArrow idef
30059 false /brushLeftArrow idef
30060 true /brushNone idef
30062 /brushDashOffset idef
30063 /brushDashArray idef
30064 0 ne /brushRightArrow idef
30065 0 ne /brushLeftArrow idef
30067 false /brushNone idef
30089 dup type /nulltype eq {
30090 pop true /patternNone idef
30093 /patternGrayLevel idef
30094 /patternString idef
30096 /patternGrayLevel idef
30098 false /patternNone idef
30107 0 0 0 0 0 0 1 1 true subspline
30109 0 0 0 0 1 1 2 2 false subspline
30112 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
30114 n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
30116 n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
30117 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
30118 brushNone not { istroke } if
30120 n 2 sub dup n 1 sub dup rightarrow
30123 } dup 0 4 dict put def
30128 patternNone not { ifill } if
30129 brushNone not { istroke } if
30137 n 1 sub dup 0 0 1 1 2 2 true subspline
30140 i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
30142 n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
30143 n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
30144 patternNone not { ifill } if
30145 brushNone not { istroke } if
30150 } dup 0 4 dict put def
30159 patternNone not { ifill } if
30160 brushNone not { istroke } if
30162 } dup 0 1 dict put def
30168 x 0 get y 0 get moveto
30169 x 1 get y 1 get lineto
30170 brushNone not { istroke } if
30174 } dup 0 4 dict put def
30181 x 0 get y 0 get moveto
30184 x i get y i get lineto
30186 patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
30187 brushNone not { istroke } if
30189 n 2 sub dup n 1 sub dup rightarrow
30192 } dup 0 4 dict put def
30201 patternNone not { ifill } if
30202 brushNone not { istroke } if
30217 patternNone not { ifill } if
30218 brushNone not { istroke } if
30220 } dup 0 4 dict put def
30227 dup where { pop pop pop } { exch def } ifelse
30233 patternGrayLevel -1 ne {
30234 fgred bgred fgred sub patternGrayLevel mul add
30235 fggreen bggreen fggreen sub patternGrayLevel mul add
30236 fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
30240 originalCTM setmatrix
30241 pathbbox /t exch def /r exch def /b exch def /l exch def
30242 /w r l sub ceiling cvi def
30243 /h t b sub ceiling cvi def
30244 /imageByteWidth w 8 div ceiling cvi def
30246 bgred bggreen bgblue setrgbcolor
30248 fgred fggreen fgblue setrgbcolor
30249 w 0 gt h 0 gt and {
30250 l b translate w h scale
30251 w h true [w 0 0 h neg 0 h] { patternproc } imagemask
30256 } dup 0 8 dict put def
30260 brushDashOffset -1 eq {
30264 brushDashArray brushDashOffset setdash
30265 fgred fggreen fgblue setrgbcolor
30267 brushWidth setlinewidth
30268 originalCTM setmatrix
30276 fgred fggreen fgblue setrgbcolor
30277 /fontDict printFont printSize scalefont dup setfont def
30278 /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
30279 transform exch pop def
30280 /vertoffset 1 printSize sub descender sub def {
30281 0 vertoffset moveto show
30282 /vertoffset vertoffset printSize sub def
30286 } dup 0 3 dict put def
30289 /patternByteLength patternString length def
30290 /patternHeight patternByteLength 8 mul sqrt cvi def
30291 /patternWidth patternHeight def
30292 /patternByteWidth patternWidth 8 idiv def
30293 /imageByteMaxLength imageByteWidth imageHeight mul
30294 stringLimit patternByteWidth sub min def
30295 /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
30296 patternHeight mul patternHeight max def
30297 /imageHeight imageHeight imageMaxHeight sub store
30298 /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
30299 0 1 imageMaxHeight 1 sub {
30301 /patternRow y patternByteWidth mul patternByteLength mod def
30302 /patternRowString patternString patternRow patternByteWidth getinterval def
30303 /imageRow y imageByteWidth mul def
30304 0 patternByteWidth imageByteWidth 1 sub {
30306 imageString imageRow x add patternRowString putinterval
30311 } dup 0 12 dict put def
30314 dup 3 2 roll dup 4 3 roll lt { exch } if pop
30318 dup 3 2 roll dup 4 3 roll gt { exch } if pop
30330 } dup 0 4 dict put def
30338 x0 2 mul x1 add 3 div
30339 y0 2 mul y1 add 3 div
30341 } dup 0 4 dict put def
30345 /movetoNeeded exch def
30346 y exch get /y3 exch def
30347 x exch get /x3 exch def
30348 y exch get /y2 exch def
30349 x exch get /x2 exch def
30350 y exch get /y1 exch def
30351 x exch get /x1 exch def
30352 y exch get /y0 exch def
30353 x exch get /x0 exch def
30354 x1 y1 x2 y2 thirdpoint
30357 x2 y2 x1 y1 thirdpoint
30360 x1 y1 x0 y0 thirdpoint
30364 x2 y2 x3 y3 thirdpoint
30368 movetoNeeded { p0x p0y moveto } if
30369 p1x p1y p2x p2y p3x p3y curveto
30371 } dup 0 17 dict put def
30385 fgred fggreen fgblue setrgbcolor
30386 dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
30390 dup 3 -1 roll dup 4 1 roll exch
30394 exch dup 3 1 roll exch lineto
30397 bgred bggreen bgblue setrgbcolor
30403 exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
30409 transform originalCTM itransform
30412 transform originalCTM itransform
30415 /dy tipy taily sub def
30416 /dx tipx tailx sub def
30417 /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
30419 originalCTM setmatrix
30420 tipx tipy translate
30423 arrowHeight neg arrowWidth 2 div moveto
30425 arrowHeight neg arrowWidth 2 div neg lineto
30427 originalCTM setmatrix
30428 /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
30430 /padtail brushWidth 2 div def
30431 tipx tipy translate
30434 arrowHeight padtip add padtail add arrowHeight div dup scale
30439 originalCTM setmatrix
30440 tipx tipy translate
30447 } dup 0 9 dict put def
30451 arrowHeight neg arrowWidth 2 div moveto
30453 arrowHeight neg arrowWidth 2 div neg lineto
30458 y exch get /taily exch def
30459 x exch get /tailx exch def
30460 y exch get /tipy exch def
30461 x exch get /tipx exch def
30462 brushLeftArrow { tipx tipy tailx taily arrowhead } if
30464 } dup 0 4 dict put def
30468 y exch get /tipy exch def
30469 x exch get /tipx exch def
30470 y exch get /taily exch def
30471 x exch get /tailx exch def
30472 brushRightArrow { tipx tipy tailx taily arrowhead } if
30474 } dup 0 4 dict put def
30477 %I Idraw 10 Grid 8 8
30487 [ 0.799705 0 0 0.799705 0 0 ] concat
30488 /originalCTM matrix currentmatrix def
30499 [ 1 -0 -0 1 -125 612 ] concat
30501 161 216 539 228 Rect
30513 [ 1 -0 -0 1 -125 612 ] concat
30515 161 276 539 288 Rect
30521 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
30524 [ 1 0 0 1 42 963 ] concat
30527 (int main\(argc, argv\))
30534 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
30537 [ 1 0 0 1 42 951 ] concat
30547 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
30550 [ 1 0 0 1 42 939 ] concat
30560 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
30563 [ 1 0 0 1 42 927 ] concat
30573 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
30576 [ 1 0 0 1 72 915 ] concat
30579 (/* Initialization required by any process in system */)
30586 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
30589 [ 1 0 0 1 72 867 ] concat
30592 (/* Initialization required only by the master process */)
30599 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
30602 [ 1 0 0 1 72 825 ] concat
30612 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
30615 [ 1 0 0 1 42 813 ] concat
30625 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
30628 [ 1 0 0 1 72 855 ] concat
30644 [ 0.997449 -0 -0 0.962766 -124.605 625.404 ] concat
30646 155 174 545 360 Rect
30652 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
30655 [ 1 0 0 1 72 885 ] concat
30658 (/* Only the absolute master process gets here */)
30665 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
30668 [ 1 0 0 1 72 897 ] concat
30671 (aphid_startup\(argv\);)
30678 %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
30681 [ 1 0 0 1 72 837 ] concat
30697 510 2495 a Fk(Figure)i(9:)k(Ho)o(w)13 b(APHID)h(Mo)q(di\014es)h(the)f
30698 (Main)f(Program)954 2790 y(11)p eop
30700 12 13 bop 62 42 a Fk(A)18 b(brief)g(explanation)f(of)g(the)i
30701 (parameters)f(and)g(function)f(of)h(eac)o(h)g(of)g(these)h
30702 Fb(aphid)p 1461 42 14 2 v 33 w Fk(routines)f(can)g(b)q(e)h(found)e(in)0
30703 91 y(App)q(endix)d(A.)62 141 y(Along)h(with)g(the)i(additional)c(calls)
30704 j(added)g(to)f(PVS,)h(the)g(iterativ)o(e)f(deep)q(ening)i(routine,)f
30705 (and)f(the)i(main)c(program,)0 191 y(roughly)d(100)f(lines)h(of)g
30706 (application-dep)q(enden)o(t)h(co)q(de)g(ha)o(v)o(e)f(to)g(b)q(e)h
30707 (de\014ned)h(for)e(the)h Fb(aphid)p 1432 191 V 14 w(stub)p
30708 1534 191 V 26 w Fk(routines.)17 b(The)11 b(APHID)0 241
30709 y(library)i(is)h(game-indep)q(enden)o(t,)g(but)g(it)g(needs)h(to)f(kno)
30710 o(w)g(some)f(game-dep)q(enden)o(t)h(prop)q(erties)i(suc)o(h)e(as)g
30711 (what)g(the)h(name)0 291 y(of)f(the)h(ev)n(aluation)e(function)h(is,)g
30712 (what)g(the)h(name)e(of)h(the)h(searc)o(h)g(routine)g(is,)f(ho)o(w)g
30713 (to)g(mak)o(e)f(and)h(unmak)o(e)f(mo)o(v)o(es,)f Fi(etc)p
30714 Fk(.)0 340 y(The)i Fb(aphid)p 198 340 V 15 w(stub)p 301
30715 340 V 29 w Fk(routines)g(are)g(also)g(brie\015y)g(describ)q(ed)i(in)d
30716 (App)q(endix)h(A.)0 478 y Fl(4)67 b(Exp)r(erimen)n(ts)0
30717 569 y Fk(The)20 b(APHID)g(game-indep)q(enden)o(t)f(library)g(has)h(b)q
30718 (een)g(inserted)h(in)o(to)e(three)i(di\013eren)o(t)g(programs)d(o)o(v)o
30719 (er)i(the)g(last)f(six)0 618 y(mon)o(ths.)e(F)m(or)c(this)h(initial)d
30720 (exp)q(erimen)o(t,)i(eac)o(h)i(of)e(the)h(programs)e(c)o(hosen)j(w)o
30721 (ere)f(written)h(at)e(the)h(Univ)o(ersit)o(y)g(of)f(Alb)q(erta,)0
30722 668 y(and)g(the)h(authors)g(of)f(the)h(program)e(w)o(ere)j(assisted)f
30723 (in)f(implemen)o(ting)d(the)15 b(APHID)e(library)g(in)o(to)g(their)h
30724 (programs.)j(The)0 718 y(\014rst)g(program)f(w)o(as)g
30725 Ff(Key)m(ano)p Fk(,)j(an)e(Othello)f(program)f(written)i(b)o(y)g(Mark)f
30726 (Bro)q(c)o(kington.)27 b(The)17 b(second)h(program)d(w)o(as)0
30727 768 y Ff(TheTurk)p Fk(,)i(a)e(c)o(hess)i(program)e(written)h(b)o(y)g
30728 (Yngvi)f(Bjornsson)h(and)g(Andreas)h(Junghanns.)24 b(The)17
30729 b(\014nal)e(program)f(w)o(as)0 818 y(the)k(curren)o(t)i(Man-Mac)o(hine)
30730 d(w)o(orld)h(c)o(hampion)d(c)o(hec)o(k)o(ers)20 b(program,)d
30731 Ff(Chinook)p Fk(,)i(written)g(b)o(y)e(a)h(team)f(that)g(includes)0
30732 867 y(Martin)d(Bry)o(an)o(t,)f(Rob)g(Lak)o(e,)h(P)o(aul)f(Lu,)g
30733 (Jonathan)h(Sc)o(hae\013er,)h(and)f(Norman)e(T)m(reloar)i([25)o(].)62
30734 917 y(P)o(arallel)h(tests)i(w)o(ere)g(run)f(on)f(up)h(to)g(16)f(w)o
30735 (orkstations)h(on)f(a)g(net)o(w)o(ork)h(of)g(SparcStation)f(IPC)h
30736 (computers)g(with)f(12)0 967 y(MB)h(of)f(RAM,)g(running)g(the)h(SunOS)g
30737 (4.1.4)e(op)q(erating)h(system.)23 b(The)16 b(SparcStations)g(are)g
30738 (link)o(ed)f(with)g(1)g(segmen)o(t)h(of)0 1017 y(10)e(base)g(2)g
30739 (\(thin)g(net\))h(Ethernet.)20 b(One)15 b(w)o(orkstation)e(in)h(eac)o
30740 (h)g(exp)q(erimen)o(t)g(w)o(as)g(completely)f(o)q(ccupied)i(b)o(y)f
30741 (the)g(master)0 1067 y(pro)q(cess,)h(while)f(the)g(other)h(w)o
30742 (orkstations)e(eac)o(h)i(ran)f(a)f(single)h(sla)o(v)o(e)f(pro)q(cess.)
30743 62 1117 y(More)18 b(sp)q(eci\014c)g(details)f(will)f(follo)o(w)f(in)h
30744 (the)i(subsequen)o(t)h(sections)f(ab)q(out)f(the)g(exp)q(erimen)o(ts)h
30745 (with)e(eac)o(h)i(program.)0 1166 y(Ho)o(w)o(ev)o(er,)j(w)o(e)f(m)o
30746 (ust)f(discuss)i(the)f(general)g(metho)q(dology)e(used)i(for)g(ev)n
30747 (aluating)e(the)j(p)q(erformance)e(of)g(the)i(APHID)0
30748 1216 y(algorithm.)62 1266 y(P)o(arallel)16 b(and)h(sequen)o(tial)g
30749 (algorithms)d(often)j(do)g(not)f(agree)i(with)e(eac)o(h)i(other)f(ab)q
30750 (out)g(minim)o(ax)d(v)n(alues)i(and)h(b)q(est)0 1316
30751 y(mo)o(v)o(es)10 b(when)h(the)g(full)f(v)o(ersion)h(of)f(the)h(program)
30752 e(is)i(used)h([15)o(].)k(F)m(or)11 b(example,)e(di\013eren)o(t)j(searc)
30753 o(h)g(windo)o(ws)e(cause)i(di\013eren)o(t)0 1366 y(searc)o(h)k
30754 (extensions)h(to)e(b)q(e)h(turned)g(on,)f(causing)g(di\013eren)o(t)h
30755 (alpha-b)q(eta)f(results.)24 b(Th)o(us,)15 b(all)f(searc)o(h)j
30756 (extensions,)f(searc)o(h)0 1415 y(reductions)h(and)f(n)o(ull)g(mo)o(v)o
30757 (e)e(searc)o(hing)j(w)o(ere)g(turned)g(o\013)f(for)g(the)h(purp)q(oses)
30758 h(of)d(this)h(exp)q(erimen)o(t.)25 b(Since)17 b(some)e(w)o(ork)0
30759 1465 y(could)g(b)q(e)g(ev)n(aluated)f(to)h Fj(d)9 b Fk(+)h(1-ply)k(b)q
30760 (efore)h(the)h Fj(d)p Fk(-ply)d(result)j(is)e(\014nished,)h(w)o(e)g
30761 (also)f(forced)i(the)f(transp)q(osition)g(table)f(to)0
30762 1515 y(rep)q(ort)g(only)f(transp)q(osition)g(table)g(scores)i(that)e
30763 (had)g(b)q(een)i(searc)o(hed)f(to)g(the)f(exact)h(depth)g(\(as)g(in)e
30764 (Figure)i(6\).)j(Although)0 1565 y(a)12 b(\014xed)h(depth)h(is)e
30765 (enforced)i(on)e(the)h(programs,)f(quiescence)i(searc)o(h)g(w)o(as)f
30766 (left)f(in)g Ff(TheTurk)h Fk(and)g Ff(Chinook)h Fk(to)e(prev)o(en)o(t)0
30767 1615 y(the)h(ev)n(aluations)e(from)g(b)q(eing)i(signi\014can)o(tly)e
30768 (unstable.)18 b(This)12 b(forced)h(the)g(parallel)f(and)g(sequen)o
30769 (tial)g(programs)f(to)i(return)0 1664 y(iden)o(tical)g(minima)o(x)e(v)n
30770 (alues,)i(allo)o(wing)f(for)h(a)h(fair)f(comparison.)62
30771 1714 y(A)k(suitable)f(b)q(enc)o(hmark)g(set)h(w)o(as)f(c)o(hosen)h(for)
30772 f(eac)o(h)h(program)e(\(see)i(appropriate)g(section\).)26
30773 b(Eac)o(h)16 b(game)f(also)h(has)0 1764 y(di\013eren)o(t)g(time)e
30774 (constrain)o(ts)i(in)f(t)o(ypical)f(p)q(ositions.)22
30775 b(F)m(or)15 b(example,)f(an)h(Othello)f(program)g(should)h(tak)o(e)g
30776 (an)g(a)o(v)o(erage)h(of)0 1814 y(90)f(seconds)j(to)e(mak)o(e)e(a)i(mo)
30777 o(v)o(e)e(for)i(a)f(midgam)o(e)f(searc)o(h,)j(and)f(a)f(c)o(hess)j
30778 (program)c(should)i(tak)o(e)g(ab)q(out)g(150)f(seconds)i(to)0
30779 1864 y(complete)c(a)h(searc)o(h.)19 b(The)14 b(searc)o(h)h(depth)g(w)o
30780 (as)f(c)o(hosen)g(so)g(that)g(the)h(a)o(v)o(erage)e(of)h(the)g
30781 (parallel)f(results)i(on)e(16)h(pro)q(cessors)0 1914
30782 y(did)f(not)h(exceed)i(this)e(time)e(constrain)o(t.)62
30783 1963 y(The)j Fi(sp)n(e)n(e)n(dup)f Fk(giv)o(en)g(in)g(this)g(section)h
30784 (compares)e(the)i(\014xed)f(depth)h(v)o(ersion)f(of)g(the)g(sequen)o
30785 (tial)h(program)d(v)o(ersus)j(the)0 2013 y(time)e(required)h(to)g
30786 (\014nd)g(the)h(result)f(in)g(parallel:)728 2124 y(sp)q(eedup)f(=)935
30787 2096 y(sequen)o(tial)d(time)p 935 2114 271 2 v 958 2152
30788 a(parallel)e(time)1210 2124 y Fj(:)0 2235 y Fk(It)17
30789 b(is)f(imp)q(ortan)o(t)f(to)h(note)h(that)f(neither)h(the)g(sequen)o
30790 (tial)g(nor)f(the)h(parallel)f(algorithm)d(b)q(eing)k(tested)h(is)e
30791 (the)h(one)g(that)0 2285 y(w)o(ould)11 b(b)q(e)i(used)g(under)f
30792 (tournamen)o(t)f(conditions,)h(b)q(ecause)i(the)e(searc)o(h)h
30793 (extension/reduction)g(algorithms)d(w)o(ere)j(turned)0
30794 2334 y(o\013.)k(F)m(or)9 b(the)i(purp)q(oses)h(of)d(the)i(exp)q(erimen)
30795 o(t,)f(the)h(parallel)e(and)h(sequen)o(tial)g(times)f(for)h(eac)o(h)h
30796 (searc)o(h)g(are)g(summed)d(together)0 2384 y(to)14 b(determine)g(the)g
30797 (aggregate)g(sp)q(eedup.)62 2434 y(The)f(aggregate)f(sp)q(eedups)i
30798 (will)d(b)q(e)i(illustrated)f(in)f(t)o(w)o(o)h(graphs.)18
30799 b(The)12 b(\014rst)h(graph)f(will)f(sho)o(w)h(the)h(breakdo)o(wn)f(of)f
30800 (the)0 2484 y(aggregate)i(sp)q(eedup)h(at)f(the)g(p)q(oin)o(t)f(where)i
30801 (the)f(depth)h Fj(d)e Fk(searc)o(h)i(has)e(b)q(een)i(completed.)j(The)c
30802 (second)h(graph)f(divides)f(the)0 2534 y(test)k(set)g(in)o(to)f(three)h
30803 (or)f(four)g(disjoin)o(t)f(subsets)j(\(based)f(on)f(size)h(of)f(the)h
30804 (sequen)o(tial)f(searc)o(h\),)h(and)f(giv)o(es)g(the)h(aggregate)0
30805 2584 y(sp)q(eedup)g(for)d(eac)o(h)i(subset.)k(F)m(or)14
30806 b(ev)o(ery)g(program)f(tested,)i(b)q(oth)f(graphs)g(illustrate)g(that)g
30807 (larger)g(searc)o(hes)i(yield)d(greater)0 2633 y(parallelism)e(than)i
30808 (smaller)f(searc)o(hes.)20 b(The)14 b(second)h(graph)f(also)e
30809 (illustrates)i(some)f(of)g(the)h(v)n(ariance)f(to)h(b)q(e)g(found)f(in)
30810 g(the)0 2683 y(aggregate)h(sp)q(eedup.)954 2790 y(12)p
30813 13 14 bop 62 42 a Fk(The)14 b(o)o(v)o(erheads)f(in)g(the)g(algorithm)d
30814 (will)i(b)q(e)h(illustrated)g(in)g(a)f(third)h(graph.)18
30815 b(The)13 b(third)g(graph)g(represen)o(ts)i(the)f(same)0
30816 91 y(scale)h(across)h(all)e(programs.)19 b(F)m(or)14
30817 b Ff(Key)m(ano)j Fk(and)e Ff(TheTurk)p Fk(,)g(a)g(fourth)f(graph)h(is)g
30818 (giv)o(en)f(to)g(illustrate)h(the)g(same)f(data)0 141
30819 y(on)g(a)f(magni\014ed)f(scale.)62 191 y(The)g Fi(total)g(overhe)n(ad)g
30820 Fk(represen)o(ts)i(the)d(additional)f(computing)f(time)h(required)i(b)o
30821 (y)f(the)h(parallel)e(algorithm)f(to)i(ac)o(hiev)o(e)0
30822 241 y(the)j(same)f(result:)480 343 y(total)c(o)o(v)o(erhead)j(=)796
30823 315 y(\(parallel)c(time)17 b Fh(\002)i Fk(n\))9 b Fh(\000)h
30824 Fk(sequen)o(tial)f(time)p 796 334 670 2 v 995 372 a(sequen)o(tial)g
30825 (time)0 452 y(where)14 b Fj(n)f Fk(is)f(the)i(n)o(um)o(b)q(er)e(of)g
30826 (pro)q(cessors.)20 b(The)13 b(total)f(o)o(v)o(erhead)h(can)g(also)g(b)q
30827 (e)g(computed)f(b)o(y)h(examining)d(the)k(o)o(v)o(erheads.)0
30828 502 y(The)19 b(three)i(main)16 b(o)o(v)o(erheads)k(are)f(using)g(a)f
30829 (pro)q(cessor)j(exclusiv)o(ely)e(as)g(a)g(master,)g(the)g(e\013ectiv)o
30830 (e)i(decrease)g(in)d(no)q(des)0 551 y(p)q(er)e(second)h(examined,)d
30831 (and)h(the)h(additional)e(n)o(um)o(b)q(er)g(of)h(no)q(des)h(searc)o
30832 (hed)h(b)o(y)e(the)h(parallel)f(algorithm.)k(There)e(is)e(no)0
30833 601 y(sync)o(hronization)c(o)o(v)o(erhead)h(in)f(the)h(APHID)g
30834 (algorithm,)c(since)13 b(the)f(algorithm)c(op)q(erates)13
30835 b(in)e(an)g(async)o(hronous)h(manner.)0 651 y(This)i(can)g(b)q(e)g
30836 (expressed)j(in)c(the)i(follo)o(wing)c(form)o(ula)850
30837 636 y Fe(6)880 651 y Fk(for)i(total)g(o)o(v)o(erhead:)302
30838 740 y(total)8 b(o)o(v)o(erhead)42 b(=)g(\(1)9 b(+)h(master)e(o)o(v)o
30839 (erhead)q(\))h Fh(\002)h Fk(\(1)f(+)g(parallelization)f(o)o(v)o
30840 (erhead\))681 802 y Fh(\002)i Fk(\(1)f(+)g(searc)o(h)i(o)o(v)o(erhead)e
30841 (+)h(sp)q(eculativ)o(e)g(searc)o(h)q(\))p Fj(:)62 891
30842 y Fk(The)17 b Fi(master)f(overhe)n(ad)h Fk(is)f(the)g(appro)o(ximate)e
30843 (p)q(enalt)o(y)i(incurred)h(b)o(y)f(ha)o(ving)f(a)h(single)g(pro)q
30844 (cessor)h(b)q(eing)f(allo)q(cated)0 941 y(completely)e(to)h(the)h
30845 (handling)e(of)h(the)h(master.)22 b(This)15 b(is)h(simply)d(1)p
30846 Fj(=)p Fk(\()p Fj(n)d Fh(\000)g Fk(1\),)15 b(the)h(b)q(ene\014t)h(of)e
30847 (adding)f(another)i(sla)o(v)o(e)f(to)0 991 y(the)f(other)h
30848 Fj(n)9 b Fh(\000)h Fk(1)j(sla)o(v)o(es.)62 1041 y(The)18
30849 b Fi(p)n(ar)n(al)r(lelization)e(overhe)n(ad)i Fk(is)f(the)g(p)q(enalt)o
30850 (y)g(incurred)h(b)o(y)f(the)g(APHID-library)g(on)f(the)i(sp)q(eed)g(of)
30851 f(the)g(sla)o(v)o(es.)0 1090 y(The)12 b(di\013erence)i(b)q(et)o(w)o
30852 (een)f(the)g(rate)f(at)g(whic)o(h)g(the)g(parallel)f(sla)o(v)o(es)h
30853 (explore)g(no)q(des)h(and)f(the)g(sequen)o(tial)g(program's)f(no)q(de)0
30854 1140 y(rate)17 b(is)f(assumed)g(to)g(b)q(e)h(the)g(parallelization)e(o)
30855 o(v)o(erhead.)25 b(This)17 b(parallelization)d(o)o(v)o(erhead)j(is)f
30856 (deriv)o(ed)h(partially)e(from)0 1190 y(the)h(o)o(v)o(erhead)f(of)f
30857 (using)h(PVM,)g(and)f(partially)g(from)f(the)i(w)o(ork-sc)o(heduling)g
30858 (algorithm)d(on)j(eac)o(h)h(sla)o(v)o(e.)k(In)15 b(e\013ect)i(this)0
30859 1240 y(includes)f(sync)o(hronization)g(o)o(v)o(erhead,)g(complexit)o(y)
30860 d(o)o(v)o(erhead)j(and)g(comm)o(unicatio)o(n)d(o)o(v)o(erhead,)j(as)g
30861 (used)g(in)g(previous)0 1290 y(parallel)d Fj(\013\014)j
30862 Fk(mo)q(dels)d([15)o(,)g(18,)g(24)o(].)62 1339 y(The)i
30863 Fi(se)n(ar)n(ch)g(overhe)n(ad)g Fk(represen)o(ts)i(the)f(additional)c
30864 (no)q(des)j(searc)o(hed)i(to)d(ac)o(hiev)o(e)h(the)g
30865 Fj(d)f Fk(ply)g(minim)o(ax)d(v)n(alue.)19 b(This)0 1389
30866 y(can)e(b)q(e)h(computed)e(b)o(y)h(dividing)e(the)j(no)q(des)f(searc)o
30867 (hed)i(to)e(generate)h Fj(d)e Fk(ply)h(searc)o(h)h(results)g(in)e(the)i
30868 (parallel)e(program)0 1439 y(b)o(y)g(the)h(no)q(des)g(searc)o(hed)h(b)o
30869 (y)e(the)h(sequen)o(tial)f(program.)24 b(Most)16 b(of)g(the)h(searc)o
30870 (h)g(o)o(v)o(erhead)g(is)f(incurred)h(b)o(y)f(attempting)0
30871 1489 y(to)f(do)g(searc)o(hes)j(b)q(efore)e(the)g(correct)h(searc)o(h)f
30872 (windo)o(w)f(is)g(a)o(v)n(ailable.)20 b(Th)o(us,)15 b(the)h(sla)o(v)o
30873 (es)g(use)g Fj(\013\014)i Fk(searc)o(h)e(windo)o(ws)f(that)0
30874 1539 y(are)j(larger)g(than)g(those)h(in)e(the)i(sequen)o(tial)e
30875 (program.)29 b(Most)18 b(of)f(the)i(increase)g(in)e(searc)o(h)i(o)o(v)o
30876 (erhead)g(as)f(w)o(e)g(increase)0 1589 y(the)c(n)o(um)o(b)q(er)f(of)f
30877 (pro)q(cessors)k(can)d(b)q(e)h(attributed)g(to)f(information)e
30878 (de\014ciency)m(,)j(since)g(there)g(is)f(no)h(common)c(shared)k(data)0
30879 1638 y(b)q(et)o(w)o(een)h(the)g(pro)q(cesses)h(\(suc)o(h)f(as)f(a)g
30880 (shared)g(transp)q(osition)g(table\).)62 1688 y(Since)e(w)o(e)g(only)f
30881 (searc)o(h)h(eac)o(h)g(p)q(osition)f(to)h Fj(d)f Fk(ply)m(,)f(the)i
30882 (async)o(hronous)g(nature)h(of)e(the)h(sla)o(v)o(es)f(will)f(result)j
30883 (in)e(some)f(w)o(ork)0 1738 y(b)q(eing)j(done)f(at)h
30884 Fj(d)7 b Fk(+)g(1)k(ply)h(\(or)h(more\).)j(The)d Fi(sp)n(e)n(culative)h
30885 (se)n(ar)n(ch)e Fk(represen)o(ts)k(the)d(amoun)o(t)d(of)i(additional)f
30886 (searc)o(h)j(b)q(ey)o(ond)0 1788 y(what)k(the)g(sequen)o(tial)g
30887 (algorithm)d(w)o(ould)i(ha)o(v)o(e)h(done.)30 b(The)18
30888 b(sp)q(eculativ)o(e)h(searc)o(h)g(can)f(b)q(e)g(computed)g(b)o(y)f
30889 (taking)g(the)0 1838 y(n)o(um)o(b)q(er)d(of)g(sp)q(eculativ)o(e)h(no)q
30890 (des)g(searc)o(hed)i(and)d(dividing)f(that)i(b)o(y)f(the)h(n)o(um)o(b)q
30891 (er)f(of)g(no)q(des)h(searc)o(hed)i(in)d(the)h(sequen)o(tial)0
30892 1887 y(case.)k(In)12 b(our)h(exp)q(erimen)o(ts,)g(the)g(sp)q(eculativ)o
30893 (e)g(searc)o(h)h(results)g(w)o(ere)g(not)e(used)i(so)f(that)f(the)i
30894 (parallel)d(program)g(pro)q(duces)0 1937 y(the)17 b(iden)o(tical)e
30895 (results)i(as)f(the)g(sequen)o(tial)g(v)o(ersion,)h(v)o(erifying)d
30896 (APHID's)i(correctness.)27 b(In)16 b(a)g(real)g(tournamen)o(t)f(game,)0
30897 1987 y(this)f(sp)q(eculativ)o(e)g(searc)o(h)h(could)f(b)q(e)g(used)h
30898 (to)f(lo)q(ok)f(an)g(extra)i(mo)o(v)o(e)d(ahead)i(on)f(some)g(k)o(ey)h
30899 (v)n(ariations,)e(since)j(it)e(is)h(highly)0 2037 y(lik)o(ely)f(that)h
30900 (the)h(mo)o(v)o(es)e(extended)j(a)e(ply)f(ahead)i(w)o(ould)e(b)q(e)i
30901 (in)f(the)g(left-most)f(branc)o(hes)j(of)d(the)i(tree.)20
30902 b(Note)15 b(that)f(other)0 2087 y(algorithms,)f(suc)o(h)k(as)f(Y)m
30903 (oung)f(Brothers)i(W)m(ait,)d(ha)o(v)o(e)i(pro)q(cessors)i(go)d(idle)g
30904 (when)i(there)g(is)e(no)h(w)o(ork)f(left)h(to)f(do)h(on)f(the)0
30905 2136 y(curren)o(t)g(iteration.)0 2252 y Fv(4.1)56 b(Key)n(ano)18
30906 b(\(F)-5 b(ebruary)19 b(1996\))0 2329 y Fk(The)13 b(\014rst)g(program)e
30907 (that)i(the)g(APHID)f(library)g(w)o(as)g(implemen)o(ted)e(in)i(w)o(as)h
30908 Ff(Key)m(ano)p Fk(,)h(an)e(Othello)h(program)d(whic)o(h)j(has)0
30909 2379 y(comp)q(eted)h(in)f(in)o(ternational)g(Othello)h(tournamen)o(ts)f
30910 (for)h(the)g(last)g(three)h(y)o(ears.)62 2429 y(APHID)k(did)e(not)h(ha)
30911 o(v)o(e)g(load)f(balancing)g(at)h(the)h(time)e(the)h(algorithm)e(w)o
30912 (as)i(originally)e(b)q(enc)o(hmark)o(ed;)j(the)g(load)0
30913 2478 y(balancing)13 b(w)o(as)h(in)o(tro)q(duced)h(to)e(the)i(ev)o
30914 (olving)e(APHID)h(library)f(in)h(Marc)o(h.)k(T)m(o)13
30915 b(b)q(e)i(consisten)o(t)g(with)f(results)h(presen)o(ted)0
30916 2528 y(elsewhere)h([3)o(],)d(the)i(F)m(ebruary)f(1996)f(results)i(are)f
30917 (giv)o(en)f(here.)62 2578 y(T)m(o)g(test)h(the)g(algorithm,)c(Key)o
30918 (ano)j(w)o(as)h(programmed)c(to)k(searc)o(h)g(with)f(its)g(midgam)o(e)e
30919 (searc)o(h)k(algorithm)10 b(to)j(a)g(depth)0 2628 y(of)g
30920 Fj(d)e Fk(=)h(12)i(ply)m(,)e(with)i(the)g(master)f(con)o(trolling)g
30921 (the)h(top)g Fj(d)934 2613 y Fa(0)957 2628 y Fk(=)e(4)h(ply)h(of)f(the)
30922 i(tree.)p 0 2661 780 2 v 46 2688 a Fd(6)64 2700 y Fg(This)c(form)o(ula)
30923 e(is)j(not)f(the)f(same)h(as)g(the)g(form)o(ula)e(presen)o(ted)g(in)j
30924 (earlier)d(v)o(ersions)h(of)h(this)g(pap)q(er.)954 2790
30928 14796136 10419816 3289088 3289088 50651955 36443095 startTexFig
30930 %%BeginDocument: graph2.ps
30931 /gnudict 40 dict def
30935 /gnulinewidth 5.000 def
30940 /M {moveto} bind def
30941 /L {lineto} bind def
30942 /R {rmoveto} bind def
30943 /V {rlineto} bind def
30944 /vpt2 vpt 2 mul def
30945 /hpt2 hpt 2 mul def
30946 /Lshow { currentpoint stroke M
30947 0 vshift R show } def
30948 /Rshow { currentpoint stroke M
30949 dup stringwidth pop neg vshift R show } def
30950 /Cshow { currentpoint stroke M
30951 dup stringwidth pop -2 div vshift R show } def
30952 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
30953 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
30954 /BL { stroke gnulinewidth 2 mul setlinewidth } def
30955 /AL { stroke gnulinewidth 2 div setlinewidth } def
30956 /PL { stroke gnulinewidth setlinewidth } def
30957 /LTb { BL [] 0 0 0 DL } def
30958 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
30959 /LT0 { PL [] 0 1 0 DL } def
30960 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
30961 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
30962 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
30963 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
30964 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
30965 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
30966 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
30967 /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
30968 /P { stroke [] 0 setdash
30969 currentlinewidth 2 div sub M
30970 0 currentlinewidth V stroke } def
30971 /D { stroke [] 0 setdash 2 copy vpt add M
30972 hpt neg vpt neg V hpt vpt neg V
30973 hpt vpt V hpt neg vpt V closepath stroke
30975 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
30976 currentpoint stroke M
30977 hpt neg vpt neg R hpt2 0 V stroke
30979 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
30980 0 vpt2 neg V hpt2 0 V 0 vpt2 V
30981 hpt2 neg 0 V closepath stroke
30983 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
30984 hpt2 vpt2 neg V currentpoint stroke M
30985 hpt2 neg 0 R hpt2 vpt2 V stroke } def
30986 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
30987 hpt neg vpt -1.62 mul V
30989 hpt neg vpt 1.62 mul V closepath stroke
30991 /S { 2 copy A C} def
30998 /Helvetica findfont 140 scalefont setfont
31108 currentpoint gsave translate 90 rotate 0 0 M
31112 (Number of Processors) Cshow
31202 14796136 10419816 3289088 3289088 50651955 36443095 startTexFig
31204 %%BeginDocument: graph3.ps
31205 /gnudict 40 dict def
31209 /gnulinewidth 5.000 def
31214 /M {moveto} bind def
31215 /L {lineto} bind def
31216 /R {rmoveto} bind def
31217 /V {rlineto} bind def
31218 /vpt2 vpt 2 mul def
31219 /hpt2 hpt 2 mul def
31220 /Lshow { currentpoint stroke M
31221 0 vshift R show } def
31222 /Rshow { currentpoint stroke M
31223 dup stringwidth pop neg vshift R show } def
31224 /Cshow { currentpoint stroke M
31225 dup stringwidth pop -2 div vshift R show } def
31226 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
31227 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
31228 /BL { stroke gnulinewidth 2 mul setlinewidth } def
31229 /AL { stroke gnulinewidth 2 div setlinewidth } def
31230 /PL { stroke gnulinewidth setlinewidth } def
31231 /LTb { BL [] 0 0 0 DL } def
31232 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
31233 /LT0 { PL [] 0 1 0 DL } def
31234 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
31235 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
31236 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
31237 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
31238 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
31239 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
31240 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
31241 /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
31242 /P { stroke [] 0 setdash
31243 currentlinewidth 2 div sub M
31244 0 currentlinewidth V stroke } def
31245 /D { stroke [] 0 setdash 2 copy vpt add M
31246 hpt neg vpt neg V hpt vpt neg V
31247 hpt vpt V hpt neg vpt V closepath stroke
31249 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
31250 currentpoint stroke M
31251 hpt neg vpt neg R hpt2 0 V stroke
31253 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
31254 0 vpt2 neg V hpt2 0 V 0 vpt2 V
31255 hpt2 neg 0 V closepath stroke
31257 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
31258 hpt2 vpt2 neg V currentpoint stroke M
31259 hpt2 neg 0 R hpt2 vpt2 V stroke } def
31260 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
31261 hpt neg vpt -1.62 mul V
31263 hpt neg vpt 1.62 mul V closepath stroke
31265 /S { 2 copy A C} def
31272 /Helvetica findfont 140 scalefont setfont
31382 currentpoint gsave translate 90 rotate 0 0 M
31386 (Number of Processors) Cshow
31451 277 751 a Fk(Figure)14 b(10:)j Ff(Key)m(ano)f Fk(-)e(Sp)q(eedups)i(b)o
31452 (y)d(Depth)i(of)e(Searc)o(h)i(and)e(Sequen)o(tial)h(T)m(ree)g(Size)38
31454 14796136 10419816 3289088 3289088 50651955 36443095 startTexFig
31456 %%BeginDocument: graph1.ps
31457 /gnudict 40 dict def
31461 /gnulinewidth 5.000 def
31466 /M {moveto} bind def
31467 /L {lineto} bind def
31468 /R {rmoveto} bind def
31469 /V {rlineto} bind def
31470 /vpt2 vpt 2 mul def
31471 /hpt2 hpt 2 mul def
31472 /Lshow { currentpoint stroke M
31473 0 vshift R show } def
31474 /Rshow { currentpoint stroke M
31475 dup stringwidth pop neg vshift R show } def
31476 /Cshow { currentpoint stroke M
31477 dup stringwidth pop -2 div vshift R show } def
31478 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
31479 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
31480 /BL { stroke gnulinewidth 2 mul setlinewidth } def
31481 /AL { stroke gnulinewidth 2 div setlinewidth } def
31482 /PL { stroke gnulinewidth setlinewidth } def
31483 /LTb { BL [] 0 0 0 DL } def
31484 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
31485 /LT0 { PL [] 0 1 0 DL } def
31486 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
31487 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
31488 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
31489 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
31490 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
31491 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
31492 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
31493 /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
31494 /P { stroke [] 0 setdash
31495 currentlinewidth 2 div sub M
31496 0 currentlinewidth V stroke } def
31497 /D { stroke [] 0 setdash 2 copy vpt add M
31498 hpt neg vpt neg V hpt vpt neg V
31499 hpt vpt V hpt neg vpt V closepath stroke
31501 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
31502 currentpoint stroke M
31503 hpt neg vpt neg R hpt2 0 V stroke
31505 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
31506 0 vpt2 neg V hpt2 0 V 0 vpt2 V
31507 hpt2 neg 0 V closepath stroke
31509 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
31510 hpt2 vpt2 neg V currentpoint stroke M
31511 hpt2 neg 0 R hpt2 vpt2 V stroke } def
31512 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
31513 hpt neg vpt -1.62 mul V
31515 hpt neg vpt 1.62 mul V closepath stroke
31517 /S { 2 copy A C} def
31524 /Helvetica findfont 140 scalefont setfont
31622 currentpoint gsave translate 90 rotate 0 0 M
31623 (Percent Overhead) Cshow
31626 (Number of Processors) Cshow
31629 (Search Overhead) Rshow
31641 (Speculative Search) Rshow
31653 (Parallelization Overhead) Rshow
31665 (Master Overhead) Rshow
31677 (Total Overhead) Rshow
31695 14796136 10419816 3289088 3289088 50651955 36443095 startTexFig
31697 %%BeginDocument: graph1c.ps
31698 /gnudict 40 dict def
31702 /gnulinewidth 5.000 def
31707 /M {moveto} bind def
31708 /L {lineto} bind def
31709 /R {rmoveto} bind def
31710 /V {rlineto} bind def
31711 /vpt2 vpt 2 mul def
31712 /hpt2 hpt 2 mul def
31713 /Lshow { currentpoint stroke M
31714 0 vshift R show } def
31715 /Rshow { currentpoint stroke M
31716 dup stringwidth pop neg vshift R show } def
31717 /Cshow { currentpoint stroke M
31718 dup stringwidth pop -2 div vshift R show } def
31719 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
31720 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
31721 /BL { stroke gnulinewidth 2 mul setlinewidth } def
31722 /AL { stroke gnulinewidth 2 div setlinewidth } def
31723 /PL { stroke gnulinewidth setlinewidth } def
31724 /LTb { BL [] 0 0 0 DL } def
31725 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
31726 /LT0 { PL [] 0 1 0 DL } def
31727 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
31728 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
31729 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
31730 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
31731 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
31732 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
31733 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
31734 /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
31735 /P { stroke [] 0 setdash
31736 currentlinewidth 2 div sub M
31737 0 currentlinewidth V stroke } def
31738 /D { stroke [] 0 setdash 2 copy vpt add M
31739 hpt neg vpt neg V hpt vpt neg V
31740 hpt vpt V hpt neg vpt V closepath stroke
31742 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
31743 currentpoint stroke M
31744 hpt neg vpt neg R hpt2 0 V stroke
31746 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
31747 0 vpt2 neg V hpt2 0 V 0 vpt2 V
31748 hpt2 neg 0 V closepath stroke
31750 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
31751 hpt2 vpt2 neg V currentpoint stroke M
31752 hpt2 neg 0 R hpt2 vpt2 V stroke } def
31753 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
31754 hpt neg vpt -1.62 mul V
31756 hpt neg vpt 1.62 mul V closepath stroke
31758 /S { 2 copy A C} def
31765 /Helvetica findfont 140 scalefont setfont
31851 currentpoint gsave translate 90 rotate 0 0 M
31852 (Percent Overhead) Cshow
31855 (Number of Processors) Cshow
31858 (Search Overhead) Rshow
31870 (Speculative Search) Rshow
31882 (Parallelization Overhead) Rshow
31894 (Master Overhead) Rshow
31906 (Total Overhead) Rshow
31923 365 1561 a Fk(Figure)g(11:)j Ff(Key)m(ano)f Fk(-)e(Ov)o(erheads)h(and)
31924 f(Magni\014ed)g(View)f(of)h(Ov)o(erheads)62 1693 y(The)k(74)f(p)q
31925 (ositions)g(examined)f(w)o(ere)j(the)f(p)q(ositions)f(from)e(mo)o(v)o
31926 (e)h(2)h(to)g(mo)o(v)o(e)f(38)h(in)g(the)h(t)o(w)o(o)f(games)f(of)h
31927 (the)h(1994)0 1743 y(W)m(orld)13 b(Championship)e(\014nal)j(b)q(et)o(w)
31928 o(een)h(Da)o(vid)d(Shaman)h(and)g(Emman)o(uel)e(Caspard)1384
31929 1728 y Fe(7)1403 1743 y Fk(.)62 1793 y(In)j(Figure)g(10,)f(w)o(e)i(see)
31930 g(the)g(graph)e(on)h(the)h(left)f(con)o(tains)f(the)i(sp)q(eedups)h
31931 (brok)o(en)e(do)o(wn)g(b)o(y)g(ply)m(.)j(The)e(graph)f(on)f(the)0
31932 1843 y(righ)o(t)h(con)o(tains)h(the)h(12)e(ply)g(results)i(brok)o(en)g
31933 (do)o(wn)e(in)o(to)g(four)h(quartiles.)21 b(The)15 b(\014rst)h
31934 (quartile)e(represen)o(ts)k(the)d(smallest)0 1892 y(sequen)o(tial)f
31935 (searc)o(hes,)h(while)f(the)g(fourth)g(quartile)f(represen)o(ts)k(the)e
31936 (largest)f(sequen)o(tial)g(searc)o(hes.)62 1942 y(In)h(Figure)g(11,)f
31937 (w)o(e)h(see)h(the)f(relativ)o(e)g(size)g(of)g(eac)o(h)g(of)f(the)h(o)o
31938 (v)o(erheads)h(describ)q(ed)g(earlier.)21 b(The)16 b(results)g(for)e
31939 (Key)o(ano)0 1992 y(are,)g(in)f(man)o(y)f(w)o(a)o(ys,)h(the)i(most)e
31940 (encouraging)g(of)h(the)g(three)h(programs)e(tested.)62
31941 2042 y(There)19 b(is)e(a)g(lo)o(w)f(searc)o(h)i(o)o(v)o(erhead)g(whic)o
31942 (h)f(increases)i(sligh)o(tly)d(as)h(w)o(e)g(go)g(from)e(4)i(to)g(16)g
31943 (pro)q(cessors.)30 b(The)18 b(paral-)0 2092 y(lelization)e(o)o(v)o
31944 (erhead)h(is)g(not)g(large.)27 b(Key)o(ano)17 b(w)o(en)o(t)h(from)d(in)
31945 o(v)o(estigating)h(8700)g(no)q(des)i(p)q(er)f(second)i(in)d(the)i
31946 (sequen)o(tial)0 2141 y(program)11 b(to)h(in)o(v)o(estigating)f(b)q(et)
31947 o(w)o(een)j(7400)e(to)g(7600)f(no)q(des)j(p)q(er)f(second)g(in)f(the)h
31948 (APHID)g(v)o(ersion)g(of)f(the)h(program.)j(The)0 2191
31949 y(only)f(o)o(v)o(erhead)h(that)f(increases)i(rapidly)e(is)h(the)g(sp)q
31950 (eculativ)o(e)g(searc)o(h)h(o)o(v)o(erhead,)e(but)h(this)g(is)f(not)h
31951 (a)f(concern)i(during)e(a)0 2241 y(tournamen)o(t)e(game)f(\(as)i
31952 (previously)g(stated\).)62 2291 y(W)m(eill)g(tested)k(YBW)e(and)f(ABD)o
31953 (AD)o(A)h(on)f(a)h(CM-5)f(using)h(a)f(di\013eren)o(t)i(Othello)f
31954 (program)e([29)o(].)23 b(YBW)16 b(ac)o(hiev)o(ed)g(a)0
31955 2341 y(9.5-fold)c(sp)q(eedup)17 b(and)d(ABD)o(AD)o(A)h(ac)o(hiev)o(ed)f
31956 (a)h(11-fold)e(sp)q(eedup)j(on)e(16)g(pro)q(cessors.)23
31957 b(Although)14 b(the)h(APHID)g(results)0 2391 y(are)d(not)f(as)h(go)q(o)
31958 q(d,)f(they)h(w)o(ere)h(ac)o(hiev)o(ed)f(without)f(a)g(shared)i(transp)
31959 q(osition)e(table.)17 b(Both)12 b(ABD)o(AD)o(A)f(and)h(YBW)g(will)e
31960 (get)0 2440 y(p)q(o)q(or)16 b(p)q(erformance)f(on)h(a)f(net)o(w)o(ork)h
31961 (of)f(w)o(orkstations,)g(since)i(the)f(shared)g(transp)q(osition)g
31962 (table)f(is)h(critical)f(to)h(e\013ectiv)o(e)0 2490 y(mo)o(v)o
31963 (e-ordering)c(and)i(limiting)c(the)15 b(searc)o(h)g(o)o(v)o(erhead.)p
31964 0 2525 780 2 v 46 2552 a Fd(7)64 2563 y Fg(Bey)o(ond)d(mo)o(v)o(e)h
31965 (38,)h(Key)o(ano)f(w)o(ould)h(attempt)e(endgame)g(searc)o(hes)g(b)q
31966 (efore)h(completing)e(a)j(12-ply)e(sequen)o(tial)g(searc)o(h.)22
31967 b(Mo)o(v)o(e)14 b(1)g(in)g(an)0 2603 y(Othello)c(game)h(is)g
31968 (completely)d(symmetric,)h(and)i(Key)o(ano)f(do)q(es)h(not)f(searc)o(h)
31969 g(for)h(the)g(\014rst)g(mo)o(v)o(e)f(in)h(the)g(game.)954
31973 14796136 10419816 3289088 3289088 50651955 36443095 startTexFig
31975 %%BeginDocument: graph5.ps
31976 /gnudict 40 dict def
31980 /gnulinewidth 5.000 def
31985 /M {moveto} bind def
31986 /L {lineto} bind def
31987 /R {rmoveto} bind def
31988 /V {rlineto} bind def
31989 /vpt2 vpt 2 mul def
31990 /hpt2 hpt 2 mul def
31991 /Lshow { currentpoint stroke M
31992 0 vshift R show } def
31993 /Rshow { currentpoint stroke M
31994 dup stringwidth pop neg vshift R show } def
31995 /Cshow { currentpoint stroke M
31996 dup stringwidth pop -2 div vshift R show } def
31997 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
31998 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
31999 /BL { stroke gnulinewidth 2 mul setlinewidth } def
32000 /AL { stroke gnulinewidth 2 div setlinewidth } def
32001 /PL { stroke gnulinewidth setlinewidth } def
32002 /LTb { BL [] 0 0 0 DL } def
32003 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
32004 /LT0 { PL [] 0 1 0 DL } def
32005 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
32006 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
32007 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
32008 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
32009 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
32010 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
32011 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
32012 /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
32013 /P { stroke [] 0 setdash
32014 currentlinewidth 2 div sub M
32015 0 currentlinewidth V stroke } def
32016 /D { stroke [] 0 setdash 2 copy vpt add M
32017 hpt neg vpt neg V hpt vpt neg V
32018 hpt vpt V hpt neg vpt V closepath stroke
32020 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
32021 currentpoint stroke M
32022 hpt neg vpt neg R hpt2 0 V stroke
32024 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
32025 0 vpt2 neg V hpt2 0 V 0 vpt2 V
32026 hpt2 neg 0 V closepath stroke
32028 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
32029 hpt2 vpt2 neg V currentpoint stroke M
32030 hpt2 neg 0 R hpt2 vpt2 V stroke } def
32031 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
32032 hpt neg vpt -1.62 mul V
32034 hpt neg vpt 1.62 mul V closepath stroke
32036 /S { 2 copy A C} def
32043 /Helvetica findfont 140 scalefont setfont
32153 currentpoint gsave translate 90 rotate 0 0 M
32157 (Number of Processors) Cshow
32231 14796136 10419816 3289088 3289088 50651955 36443095 startTexFig
32233 %%BeginDocument: graph6.ps
32234 /gnudict 40 dict def
32238 /gnulinewidth 5.000 def
32243 /M {moveto} bind def
32244 /L {lineto} bind def
32245 /R {rmoveto} bind def
32246 /V {rlineto} bind def
32247 /vpt2 vpt 2 mul def
32248 /hpt2 hpt 2 mul def
32249 /Lshow { currentpoint stroke M
32250 0 vshift R show } def
32251 /Rshow { currentpoint stroke M
32252 dup stringwidth pop neg vshift R show } def
32253 /Cshow { currentpoint stroke M
32254 dup stringwidth pop -2 div vshift R show } def
32255 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
32256 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
32257 /BL { stroke gnulinewidth 2 mul setlinewidth } def
32258 /AL { stroke gnulinewidth 2 div setlinewidth } def
32259 /PL { stroke gnulinewidth setlinewidth } def
32260 /LTb { BL [] 0 0 0 DL } def
32261 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
32262 /LT0 { PL [] 0 1 0 DL } def
32263 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
32264 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
32265 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
32266 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
32267 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
32268 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
32269 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
32270 /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
32271 /P { stroke [] 0 setdash
32272 currentlinewidth 2 div sub M
32273 0 currentlinewidth V stroke } def
32274 /D { stroke [] 0 setdash 2 copy vpt add M
32275 hpt neg vpt neg V hpt vpt neg V
32276 hpt vpt V hpt neg vpt V closepath stroke
32278 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
32279 currentpoint stroke M
32280 hpt neg vpt neg R hpt2 0 V stroke
32282 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
32283 0 vpt2 neg V hpt2 0 V 0 vpt2 V
32284 hpt2 neg 0 V closepath stroke
32286 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
32287 hpt2 vpt2 neg V currentpoint stroke M
32288 hpt2 neg 0 R hpt2 vpt2 V stroke } def
32289 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
32290 hpt neg vpt -1.62 mul V
32292 hpt neg vpt 1.62 mul V closepath stroke
32294 /S { 2 copy A C} def
32301 /Helvetica findfont 140 scalefont setfont
32411 currentpoint gsave translate 90 rotate 0 0 M
32415 (Number of Processors) Cshow
32474 261 751 a Fk(Figure)14 b(12:)j Ff(TheTurk)e Fk(-)e(Sp)q(eedups)j(b)o
32475 (y)e(Depth)g(of)f(Searc)o(h)i(and)f(Sequen)o(tial)f(T)m(ree)i(Size)38
32477 14796136 10419816 3289088 3289088 50651955 36443095 startTexFig
32479 %%BeginDocument: graph4.ps
32480 /gnudict 40 dict def
32484 /gnulinewidth 5.000 def
32489 /M {moveto} bind def
32490 /L {lineto} bind def
32491 /R {rmoveto} bind def
32492 /V {rlineto} bind def
32493 /vpt2 vpt 2 mul def
32494 /hpt2 hpt 2 mul def
32495 /Lshow { currentpoint stroke M
32496 0 vshift R show } def
32497 /Rshow { currentpoint stroke M
32498 dup stringwidth pop neg vshift R show } def
32499 /Cshow { currentpoint stroke M
32500 dup stringwidth pop -2 div vshift R show } def
32501 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
32502 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
32503 /BL { stroke gnulinewidth 2 mul setlinewidth } def
32504 /AL { stroke gnulinewidth 2 div setlinewidth } def
32505 /PL { stroke gnulinewidth setlinewidth } def
32506 /LTb { BL [] 0 0 0 DL } def
32507 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
32508 /LT0 { PL [] 0 1 0 DL } def
32509 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
32510 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
32511 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
32512 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
32513 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
32514 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
32515 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
32516 /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
32517 /P { stroke [] 0 setdash
32518 currentlinewidth 2 div sub M
32519 0 currentlinewidth V stroke } def
32520 /D { stroke [] 0 setdash 2 copy vpt add M
32521 hpt neg vpt neg V hpt vpt neg V
32522 hpt vpt V hpt neg vpt V closepath stroke
32524 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
32525 currentpoint stroke M
32526 hpt neg vpt neg R hpt2 0 V stroke
32528 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
32529 0 vpt2 neg V hpt2 0 V 0 vpt2 V
32530 hpt2 neg 0 V closepath stroke
32532 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
32533 hpt2 vpt2 neg V currentpoint stroke M
32534 hpt2 neg 0 R hpt2 vpt2 V stroke } def
32535 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
32536 hpt neg vpt -1.62 mul V
32538 hpt neg vpt 1.62 mul V closepath stroke
32540 /S { 2 copy A C} def
32547 /Helvetica findfont 140 scalefont setfont
32645 currentpoint gsave translate 90 rotate 0 0 M
32646 (Percent Overhead) Cshow
32649 (Number of Processors) Cshow
32652 (Search Overhead) Rshow
32666 (Speculative Search) Rshow
32680 (Parallelization Overhead) Rshow
32694 (Master Overhead) Rshow
32708 (Total Overhead) Rshow
32728 14796136 10419816 3289088 3289088 50651955 36443095 startTexFig
32730 %%BeginDocument: graph4c.ps
32731 /gnudict 40 dict def
32735 /gnulinewidth 5.000 def
32740 /M {moveto} bind def
32741 /L {lineto} bind def
32742 /R {rmoveto} bind def
32743 /V {rlineto} bind def
32744 /vpt2 vpt 2 mul def
32745 /hpt2 hpt 2 mul def
32746 /Lshow { currentpoint stroke M
32747 0 vshift R show } def
32748 /Rshow { currentpoint stroke M
32749 dup stringwidth pop neg vshift R show } def
32750 /Cshow { currentpoint stroke M
32751 dup stringwidth pop -2 div vshift R show } def
32752 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
32753 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
32754 /BL { stroke gnulinewidth 2 mul setlinewidth } def
32755 /AL { stroke gnulinewidth 2 div setlinewidth } def
32756 /PL { stroke gnulinewidth setlinewidth } def
32757 /LTb { BL [] 0 0 0 DL } def
32758 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
32759 /LT0 { PL [] 0 1 0 DL } def
32760 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
32761 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
32762 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
32763 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
32764 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
32765 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
32766 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
32767 /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
32768 /P { stroke [] 0 setdash
32769 currentlinewidth 2 div sub M
32770 0 currentlinewidth V stroke } def
32771 /D { stroke [] 0 setdash 2 copy vpt add M
32772 hpt neg vpt neg V hpt vpt neg V
32773 hpt vpt V hpt neg vpt V closepath stroke
32775 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
32776 currentpoint stroke M
32777 hpt neg vpt neg R hpt2 0 V stroke
32779 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
32780 0 vpt2 neg V hpt2 0 V 0 vpt2 V
32781 hpt2 neg 0 V closepath stroke
32783 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
32784 hpt2 vpt2 neg V currentpoint stroke M
32785 hpt2 neg 0 R hpt2 vpt2 V stroke } def
32786 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
32787 hpt neg vpt -1.62 mul V
32789 hpt neg vpt 1.62 mul V closepath stroke
32791 /S { 2 copy A C} def
32798 /Helvetica findfont 140 scalefont setfont
32914 currentpoint gsave translate 90 rotate 0 0 M
32915 (Percent Overhead) Cshow
32918 (Number of Processors) Cshow
32921 (Search Overhead) Rshow
32935 (Speculative Search) Rshow
32949 (Parallelization Overhead) Rshow
32963 (Master Overhead) Rshow
32977 (Total Overhead) Rshow
32996 349 1561 a Fk(Figure)f(13:)j Ff(TheTurk)e Fk(-)e(Ov)o(erheads)j(and)d
32997 (Magni\014ed)h(View)g(of)f(Ov)o(erheads)0 1693 y Fv(4.2)56
32998 b(TheT)-5 b(urk)18 b(\(April)g(1996\))0 1770 y Fk(The)13
32999 b(exp)q(erimen)o(ts)g(with)g Ff(TheTurk)p Fk(,)g(the)g(c)o(hess)h
33000 (program)e(b)o(y)g(Andreas)i(Junghanns)f(and)g(Yngvi)f(Bjornsson,)h(w)o
33001 (ere)h(run)0 1820 y(so)q(on)i(after)f(the)i(load)d(balancing)h(w)o(as)g
33002 (inserted)i(in)o(to)e(the)h(APHID)g(library)m(.)22 b(Although)15
33003 b(it)g(w)o(as)h(unclear)g(whether)h(load)0 1869 y(balancing)10
33004 b(w)o(ould)g(b)q(e)i(necessary)h(with)e(the)g(APHID)g(library)g(when)g
33005 (testing)h(the)f(program)f(with)h Ff(Key)m(ano)p Fk(,)i(the)e(necessit)
33006 o(y)0 1919 y(for)j(load)e(balancing)h(in)h(other)g(games)f(suc)o(h)i
33007 (as)f(c)o(hess)h(w)o(as)f(clear)g(to)g(the)g(authors.)62
33008 1969 y(T)m(o)d(test)j(the)e(program,)e(the)j(24)f(Bratk)o(o-Kop)q(ec)h
33009 (p)q(ositions)e(w)o(ere)i(used.)18 b(Although)12 b(there)h(are)g(kno)o
33010 (wn)e(problems)g(with)0 2019 y(these)18 b(p)q(ositions,)e(using)h(this)
33011 f(test)i(set)g(allo)o(ws)d(for)h(comparison)f(with)i(other)g(w)o(ork.)
33012 26 b(Eac)o(h)16 b(p)q(osition)g(w)o(as)h(searc)o(hed)h(to)0
33013 2069 y(depth)e Fj(d)c Fk(=)i(8,)g(while)h(the)g(master)g(con)o(trolled)
33014 f(the)i(top)e Fj(d)928 2054 y Fa(0)953 2069 y Fk(=)f(3)i(ply)f(of)h
33015 (the)g(tree,)h(since)g Fj(d)1447 2054 y Fa(0)1471 2069
33016 y Fk(=)e(4)g(w)o(as)h(not)g(feasible)f(giv)o(en)0 2118
33017 y(the)i(amoun)o(t)f(of)g(memory)e(on)j(the)g(SparcStations.)25
33018 b(Figure)16 b(12)f(represen)o(ts)k(the)d(sp)q(eedups)i(generated)f(b)o
33019 (y)f Ff(TheTurk)p Fk(,)0 2168 y(while)d(Figure)h(13)g(giv)o(es)f(the)i
33020 (o)o(v)o(erheads)g(in)e(the)h(parallel)f(program.)62
33021 2218 y(Although)d(the)h(results)g(presen)o(ted)h(here)g(for)e(c)o(hess)
33022 h(are)g(promising,)d(w)o(e)j(b)q(eliev)o(e)f(that)h(b)q(etter)g
33023 (results)h(can)e(b)q(e)h(ac)o(hiev)o(ed.)0 2268 y(The)16
33024 b(main)e(di\013erence)j(b)q(et)o(w)o(een)g(the)f(results)h(for)e
33025 Ff(Key)m(ano)j Fk(and)e Ff(TheTurk)g Fk(rev)o(olv)o(e)f(around)h(the)g
33026 (size)h(of)e(the)h(searc)o(h)0 2318 y(o)o(v)o(erhead.)62
33027 2368 y(W)m(e)e(ha)o(v)o(e)h(come)e(up)i(with)f(three)i(p)q(ossible)f(h)
33028 o(yp)q(otheses)h(for)e(this)g(di\013erence.)22 b(The)15
33029 b(\014rst)g(is)g(that)f Ff(Key)m(ano)j Fk(do)q(es)e(not)0
33030 2417 y(use)g(quiescen)o(t)g(searc)o(h.)20 b(As)15 b(a)f(consequence,)i
33031 (the)f(sizes)g(of)e(the)i(v)n(arious)f(pieces)h(of)f(w)o(ork)f(are)i
33032 (more)e(predictable)i(in)f(size,)0 2467 y(and)h(Key)o(ano's)g(results)i
33033 (did)e(not)g(need)h(load)e(balancing.)21 b(Load)15 b(balancing)f
33034 (causes)j(searc)o(h)f(o)o(v)o(erhead)g(since)g(it)f(forces)h(a)0
33035 2517 y(new)11 b(pro)q(cessor)i(to)e(rep)q(eat)h(searc)o(hes)h(done)e(b)
33036 o(y)g(a)g(di\013eren)o(t)h(pro)q(cessor.)19 b(The)11
33037 b(load)f(balancing)g(is)h(partially)e(resp)q(onsible)j(for)0
33038 2567 y(the)h(di\013erence)g(in)f(searc)o(h)h(o)o(v)o(erhead.)18
33039 b(The)12 b(second)h(p)q(ossible)g(reason)f(is)g(that)g(the)h(searc)o(h)
33040 g(windo)o(ws)e(in)h(the)g(sla)o(v)o(es)g(can,)g(in)0
33041 2617 y(some)f(cases,)i(b)q(e)f(larger)f(than)h(the)g(minim)o(al)c
33042 (windo)o(w)j(used)h(in)f(the)h(sequen)o(tial)g(program.)k(Although)11
33043 b(this)g(larger)h(windo)o(w)0 2666 y(is)i(common)d(to)j(b)q(oth)h
33044 (parallel)e(implem)o(en)o(tations,)e(it)j(has)g(a)g(m)o(uc)o(h)f
33045 (larger)h(e\013ect)i(on)e(the)h(size)g(of)e(the)i(trees)h(searc)o(hed)f
33046 (in)954 2790 y(15)p eop
33049 14796136 10419816 3289088 3289088 50651955 36443095 startTexFig
33051 %%BeginDocument: graph8.ps
33052 /gnudict 40 dict def
33056 /gnulinewidth 5.000 def
33061 /M {moveto} bind def
33062 /L {lineto} bind def
33063 /R {rmoveto} bind def
33064 /V {rlineto} bind def
33065 /vpt2 vpt 2 mul def
33066 /hpt2 hpt 2 mul def
33067 /Lshow { currentpoint stroke M
33068 0 vshift R show } def
33069 /Rshow { currentpoint stroke M
33070 dup stringwidth pop neg vshift R show } def
33071 /Cshow { currentpoint stroke M
33072 dup stringwidth pop -2 div vshift R show } def
33073 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
33074 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
33075 /BL { stroke gnulinewidth 2 mul setlinewidth } def
33076 /AL { stroke gnulinewidth 2 div setlinewidth } def
33077 /PL { stroke gnulinewidth setlinewidth } def
33078 /LTb { BL [] 0 0 0 DL } def
33079 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
33080 /LT0 { PL [] 0 1 0 DL } def
33081 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
33082 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
33083 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
33084 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
33085 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
33086 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
33087 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
33088 /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
33089 /P { stroke [] 0 setdash
33090 currentlinewidth 2 div sub M
33091 0 currentlinewidth V stroke } def
33092 /D { stroke [] 0 setdash 2 copy vpt add M
33093 hpt neg vpt neg V hpt vpt neg V
33094 hpt vpt V hpt neg vpt V closepath stroke
33096 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
33097 currentpoint stroke M
33098 hpt neg vpt neg R hpt2 0 V stroke
33100 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
33101 0 vpt2 neg V hpt2 0 V 0 vpt2 V
33102 hpt2 neg 0 V closepath stroke
33104 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
33105 hpt2 vpt2 neg V currentpoint stroke M
33106 hpt2 neg 0 R hpt2 vpt2 V stroke } def
33107 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
33108 hpt neg vpt -1.62 mul V
33110 hpt neg vpt 1.62 mul V closepath stroke
33112 /S { 2 copy A C} def
33119 /Helvetica findfont 140 scalefont setfont
33229 currentpoint gsave translate 90 rotate 0 0 M
33233 (Number of Processors) Cshow
33307 14796136 10419816 3289088 3289088 50651955 36443095 startTexFig
33309 %%BeginDocument: graph9.ps
33310 /gnudict 40 dict def
33314 /gnulinewidth 5.000 def
33319 /M {moveto} bind def
33320 /L {lineto} bind def
33321 /R {rmoveto} bind def
33322 /V {rlineto} bind def
33323 /vpt2 vpt 2 mul def
33324 /hpt2 hpt 2 mul def
33325 /Lshow { currentpoint stroke M
33326 0 vshift R show } def
33327 /Rshow { currentpoint stroke M
33328 dup stringwidth pop neg vshift R show } def
33329 /Cshow { currentpoint stroke M
33330 dup stringwidth pop -2 div vshift R show } def
33331 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
33332 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
33333 /BL { stroke gnulinewidth 2 mul setlinewidth } def
33334 /AL { stroke gnulinewidth 2 div setlinewidth } def
33335 /PL { stroke gnulinewidth setlinewidth } def
33336 /LTb { BL [] 0 0 0 DL } def
33337 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
33338 /LT0 { PL [] 0 1 0 DL } def
33339 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
33340 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
33341 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
33342 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
33343 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
33344 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
33345 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
33346 /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
33347 /P { stroke [] 0 setdash
33348 currentlinewidth 2 div sub M
33349 0 currentlinewidth V stroke } def
33350 /D { stroke [] 0 setdash 2 copy vpt add M
33351 hpt neg vpt neg V hpt vpt neg V
33352 hpt vpt V hpt neg vpt V closepath stroke
33354 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
33355 currentpoint stroke M
33356 hpt neg vpt neg R hpt2 0 V stroke
33358 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
33359 0 vpt2 neg V hpt2 0 V 0 vpt2 V
33360 hpt2 neg 0 V closepath stroke
33362 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
33363 hpt2 vpt2 neg V currentpoint stroke M
33364 hpt2 neg 0 R hpt2 vpt2 V stroke } def
33365 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
33366 hpt neg vpt -1.62 mul V
33368 hpt neg vpt 1.62 mul V closepath stroke
33370 /S { 2 copy A C} def
33377 /Helvetica findfont 140 scalefont setfont
33487 currentpoint gsave translate 90 rotate 0 0 M
33491 (Number of Processors) Cshow
33550 268 751 a Fk(Figure)14 b(14:)k Ff(Chinook)d Fk(-)f(Sp)q(eedups)h(b)o
33551 (y)f(Depth)g(of)f(Searc)o(h)i(and)f(Sequen)o(tial)g(T)m(ree)g(Size)506
33553 14796136 10419816 3289088 3289088 50651955 36443095 startTexFig
33555 %%BeginDocument: graph7.ps
33556 /gnudict 40 dict def
33560 /gnulinewidth 5.000 def
33565 /M {moveto} bind def
33566 /L {lineto} bind def
33567 /R {rmoveto} bind def
33568 /V {rlineto} bind def
33569 /vpt2 vpt 2 mul def
33570 /hpt2 hpt 2 mul def
33571 /Lshow { currentpoint stroke M
33572 0 vshift R show } def
33573 /Rshow { currentpoint stroke M
33574 dup stringwidth pop neg vshift R show } def
33575 /Cshow { currentpoint stroke M
33576 dup stringwidth pop -2 div vshift R show } def
33577 /DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
33578 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
33579 /BL { stroke gnulinewidth 2 mul setlinewidth } def
33580 /AL { stroke gnulinewidth 2 div setlinewidth } def
33581 /PL { stroke gnulinewidth setlinewidth } def
33582 /LTb { BL [] 0 0 0 DL } def
33583 /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
33584 /LT0 { PL [] 0 1 0 DL } def
33585 /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def
33586 /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def
33587 /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
33588 /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
33589 /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
33590 /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
33591 /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
33592 /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
33593 /P { stroke [] 0 setdash
33594 currentlinewidth 2 div sub M
33595 0 currentlinewidth V stroke } def
33596 /D { stroke [] 0 setdash 2 copy vpt add M
33597 hpt neg vpt neg V hpt vpt neg V
33598 hpt vpt V hpt neg vpt V closepath stroke
33600 /A { stroke [] 0 setdash vpt sub M 0 vpt2 V
33601 currentpoint stroke M
33602 hpt neg vpt neg R hpt2 0 V stroke
33604 /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
33605 0 vpt2 neg V hpt2 0 V 0 vpt2 V
33606 hpt2 neg 0 V closepath stroke
33608 /C { stroke [] 0 setdash exch hpt sub exch vpt add M
33609 hpt2 vpt2 neg V currentpoint stroke M
33610 hpt2 neg 0 R hpt2 vpt2 V stroke } def
33611 /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
33612 hpt neg vpt -1.62 mul V
33614 hpt neg vpt 1.62 mul V closepath stroke
33616 /S { 2 copy A C} def
33623 /Helvetica findfont 140 scalefont setfont
33721 currentpoint gsave translate 90 rotate 0 0 M
33722 (Percent Overhead) Cshow
33725 (Number of Processors) Cshow
33728 (Search Overhead) Rshow
33742 (Speculative Search) Rshow
33756 (Parallelization Overhead) Rshow
33770 (Master Overhead) Rshow
33784 (Total Overhead) Rshow
33803 671 1561 a Fk(Figure)g(15:)j Ff(Chinook)e Fk(-)f(Ov)o(erheads)0
33804 1693 y Ff(TheTurk)i Fk(than)f(in)g Ff(Key)m(ano)p Fk(.)25
33805 b(The)15 b(third)h(h)o(yp)q(othesis)g(is)f(that)g(the)h(game)e(of)h(c)o
33806 (hess)i(has)e(more)f(transp)q(ositions)i(than)0 1743
33807 y(the)f(game)e(of)g(Othello.)19 b(Th)o(us,)14 b(the)h(information)d
33808 (de\014ciency)j(caused)h(b)o(y)e(doing)f(the)i(searc)o(h)h(on)e(m)o
33809 (ultiple)e(pro)q(cessors)k(is)0 1793 y(greater)f(in)e(c)o(hess)j(than)e
33810 (in)f(Othello.)62 1843 y(Other)f(results)f(for)f(parallel)f(searc)o(h)j
33811 (algorithms)c(on)i(a)g(net)o(w)o(ork)h(of)e(w)o(orkstations)h(ha)o(v)o
33812 (e)h(b)q(een)g(presen)o(ted)i(for)d(the)g(game)0 1892
33813 y(of)k(c)o(hess)h([24].)j(A)d(distributed)g(transp)q(osition)f(table)g
33814 (w)o(as)g(used)h(to)g(impro)o(v)o(e)d(the)j(p)q(erformance)f(of)g(the)h
33815 Ff(P)l(araPhoenix)0 1942 y Fk(c)o(hess)c(searc)o(hes,)h(and)e(a)f(sp)q
33816 (eedup)j(of)d(7)g(w)o(as)h(ac)o(hiev)o(ed)g(on)f(16)h(pro)q(cessors.)19
33817 b(Although)9 b(these)i(results)g(are)f(marginally)c(b)q(etter)0
33818 1992 y(than)14 b(the)g(results)h(presen)o(ted)h(here,)e(the)h
33819 (scalabilit)o(y)d(of)h(the)h(algorithm)e(w)o(as)h(extrap)q(olated)h(to)
33820 g(a)f(sp)q(eedup)j(of)d(at)h(most)e(8)0 2042 y(on)g(32)f(pro)q
33821 (cessors.)20 b(Based)13 b(on)f(the)g(graphs)h(presen)o(ted)h(earlier)e
33822 (in)g(this)g(section,)h(w)o(e)f(b)q(eliev)o(e)g(the)h(APHID)f
33823 (algorithm)d(will)0 2092 y(outp)q(erform)16 b(on)g(a)g(larger)h(n)o(um)
33824 o(b)q(er)f(of)g(pro)q(cessors.)28 b(The)17 b(b)q(ene\014cial)g
33825 (e\013ects)i(of)d(the)h(distributed)h(transp)q(osition)e(table)0
33826 2141 y(are)i(deriv)o(ed)g(primarily)d(in)j(the)g(top)g(plies)f(of)g
33827 (the)i(searc)o(h)g(tree,)g(and)f(these)h(b)q(ene\014ts)g(are)f
33828 (duplicated)g(in)f(APHID)h(b)o(y)0 2191 y(main)o(taining)10
33829 b(the)15 b(top)f Fj(d)397 2176 y Fa(0)422 2191 y Fk(ply)f(exclusiv)o
33830 (ely)h(on)g(the)g(master)g(pro)q(cessor.)0 2307 y Fv(4.3)56
33831 b(Chino)r(ok)18 b(\(June)g(1996\))0 2384 y Fk(Due)10
33832 b(to)g(resource)i(limitations,)c(w)o(e)i(could)g(not)g(run)g(the)h(exp)
33833 q(erimen)o(ts)f(with)g Ff(Chinook)h Fk(un)o(til)e(late)h(June.)18
33834 b(The)10 b(b)q(enc)o(hmark)0 2434 y(p)q(ositions)g(used)h(are)f(a)g
33835 (series)h(of)f(p)q(ositions)f(whic)o(h)h Ff(Chinook)i
33836 Fk(has)e(misev)n(aluated)e(in)i(previous)g(tournamen)o(t)f(games.)16
33837 b(Eac)o(h)0 2484 y(of)d(these)j(p)q(ositions)d(w)o(as)h(searc)o(hed)i
33838 (to)d Fj(d)e Fk(=)h(17)i(ply)m(,)e(while)h(the)i(master)e(con)o
33839 (trolled)h(the)g(top)g Fj(d)1513 2469 y Fa(0)1536 2484
33840 y Fk(=)e(6)h(ply)h(of)f(the)i(tree.)62 2534 y(Figures)g(14)e(and)h(15)f
33841 (sho)o(w)h(the)g(sp)q(eedups)i(and)e(o)o(v)o(erheads)h(for)e
33842 (parallelism)e(in)j Ff(Chinook)p Fk(.)62 2583 y(This)f(o)o(v)o(erhead)h
33843 (mo)q(del)d(hea)o(vily)i(relies)g(on)g(the)h(fact)f(that)g(the)h(a)o(v)
33844 o(erage)f(no)q(de)h(cost)f(is)g(constan)o(t)h(o)o(v)o(er)f(the)h(en)o
33845 (tire)g(test)0 2633 y(set.)19 b(F)m(or)12 b Ff(Key)m(ano)j
33846 Fk(and)e Ff(TheTurk)p Fk(,)g(this)g(is)g(generally)f(true;)i(the)f(n)o
33847 (um)o(b)q(er)f(of)h(no)q(des)g(p)q(er)h(second)g(visited)f(v)n(aries)g
33848 (b)o(y)f(no)0 2683 y(more)g(than)h(5\045.)j(Ho)o(w)o(ev)o(er,)d(this)g
33849 (is)g(not)g(true)g(for)g Ff(Chinook)p Fk(.)19 b(The)13
33850 b(n)o(um)o(b)q(er)f(of)g(no)q(des)i(p)q(er)f(second)h(visited)f(v)n
33851 (aries)g(b)o(y)f(at)954 2790 y(16)p eop
33853 17 18 bop 0 42 a Fk(least)13 b(30\045,)e(due)i(to)f(n)o(umerous)f
33854 (time-sa)o(ving)f(tric)o(ks)j(in)f(the)h(co)q(de.)18
33855 b(Th)o(us,)13 b(the)g(analysis)e(of)h(the)h(o)o(v)o(erheads)g(for)f
33856 Ff(Chinook)0 91 y Fk(is)i(not)g(as)g(reliable)f(as)h(it)f(is)h(for)g
33857 (the)g(other)h(programs)d(giv)o(en)i(in)f(this)h(tec)o(hnical)g(rep)q
33858 (ort.)62 141 y(In)i(an)o(y)f(case,)i(there)g(are)g(ob)o(vious)e
33859 (problems)f(with)i(the)g(parallelization)e(in)i Ff(Chinook)p
33860 Fk(.)25 b(Unlik)o(e)15 b(the)h(previous)g(t)o(w)o(o)0
33861 191 y(programs,)d(w)o(e)h(see)i(that)e(the)h(APHID)g(algorithm)c(in)j
33862 Ff(Chinook)i Fk(incurs)f(a)f(lot)g(of)f(additional)g(sp)q(eculativ)o(e)
33863 i(searc)o(h,)g(and)0 241 y(a)e(rapidly)g(increasing)h(searc)o(h)h(o)o
33864 (v)o(erhead.)k(The)14 b(n)o(um)o(b)q(er)f(of)g(pieces)i(of)e(w)o(ork)h
33865 (at)f(depth)i Fj(d)1429 226 y Fa(0)1452 241 y Fk(=)d(6)h(w)o(as)h
33866 (insu\016cien)o(t)g(to)f(k)o(eep)0 291 y(a)j(large)g(n)o(um)o(b)q(er)f
33867 (of)g(sla)o(v)o(es)h(busy)m(.)25 b(Ho)o(w)o(ev)o(er,)16
33868 b(when)h(testing)f Fj(d)1032 276 y Fa(0)1059 291 y Fk(=)f(8)h(ply)m(,)f
33869 (w)o(e)h(disco)o(v)o(ered)h(that)f(serious)h(in\015exibilities)0
33870 340 y(w)o(ere)h(encoun)o(tered,)i(prev)o(en)o(ting)e(us)f(from)f
33871 (running)h(a)g(full)f(test)i(set)h(without)e(remo)o(ving)e(the)j
33872 (transp)q(osition)f(table)g(in)0 390 y Ff(Chinook)p Fk(.)26
33873 b(As)16 b(w)o(ell,)g(the)g(impact)f(of)g(transp)q(ositions)i(in)e(the)i
33874 (game)e(of)g(c)o(hec)o(k)o(ers)j(is)e(m)o(uc)o(h)f(more)g(imp)q(ortan)o
33875 (t)f(than)i(in)0 440 y(either)e(c)o(hess)g(or)e(Othello.)18
33876 b(This)12 b(causes)i(the)g(searc)o(h)f(o)o(v)o(erhead)g(to)g(increase)h
33877 (at)e(a)h(m)o(uc)o(h)e(faster)j(rate)f(for)f Ff(Chinook)i
33878 Fk(than)0 490 y(either)h(of)e(the)h(previous)h(test)g(programs.)62
33879 540 y(Although)d(the)i(sp)q(eedups)h(are)e(v)o(ery)g(lo)o(w)f(in)g
33880 (magnitude,)f(parallelizing)g(a)h(high-p)q(erformance)g(c)o(hec)o(k)o
33881 (ers)j(programs)c(is)0 589 y(a)h(v)o(ery)i(di\016cult)e(task.)17
33882 b(P)o(aul)c(Lu)f(sp)q(en)o(t)i(o)o(v)o(er)f(a)f(y)o(ear)h(w)o(orking)f
33883 (on)g(the)i(tournamen)o(t)e(v)o(ersion)g(of)h(parallel)e
33884 Ff(Chinook)j Fk(and)0 639 y(ac)o(hiev)o(ed)g(sp)q(eedups)i(of)d(3.32)f
33885 (using)i(a)f(shared-memory)f(system)i(with)f(16)g(pro)q(cessors)j([16)o
33886 (].)i(The)c(v)o(ery)g(thin)f(game)f(trees)0 689 y(of)i(c)o(hec)o(k)o
33887 (ers)j(do)e(not)g(yield)f(easily)h(to)g(parallelism)d(based)k(on)f(the)
33888 g(critical)g(tree.)23 b(The)15 b(authors)g(b)q(eliev)o(e)h(that)f(when)
33889 g(the)0 739 y(APHID)f(library)f(is)h(mo)q(di\014ed)e(to)i(address)h
33890 (these)h(problems,)c(the)j(APHID)f(library)f(should)g(yield)h(a)f(b)q
33891 (etter)j(sp)q(eedup)f(for)0 789 y(Chino)q(ok.)0 926 y
33892 Fl(5)67 b(Conclusions)22 b(and)h(F)-6 b(uture)24 b(W)-6
33893 b(ork)0 1017 y Fk(The)14 b(APHID)f(algorithm)e(yields)i(go)q(o)q(d)g
33894 (sp)q(eedups)i(on)e(a)g(net)o(w)o(ork)g(of)g(w)o(orkstations)g(without)
33895 g(the)h(necessit)o(y)g(of)f(a)g(shared)0 1067 y(transp)q(osition)g
33896 (table.)18 b(Although)13 b(the)i(authors)f(are)g(pleased)g(with)f
33897 (these)i(preliminary)c(results,)k(a)e(lot)g(of)g(w)o(ork)g(is)h(left)f
33898 (to)0 1117 y(b)q(e)i(done.)62 1166 y(As)d(men)o(tioned)e(in)h(Section)h
33899 (4.3,)e(the)i(secondary)g(in)o(terface)g(and)f(underlying)g(co)q(de)h
33900 (within)e(the)i(APHID)f(library)g(m)o(ust)0 1216 y(b)q(e)k(\014xed)f
33901 (to)g(allo)o(w)e(for)h(greater)i(parallelism.)62 1266
33902 y(Our)e(curren)o(t)h(implemen)o(tation)9 b(of)j(APHID)g(uses)i(a)e
33903 (\014xed-depth)h(horizon)g(for)f(the)h(master's)e(tree.)19
33904 b(As)13 b(men)o(tioned)e(in)0 1316 y(our)i(discussion)h(of)f(load)f
33905 (balancing,)g(all)g(p)q(ositions)h(are)h(not)f(equal)g(in)g(the)h
33906 (amoun)o(t)e(of)h(searc)o(h)h(e\013ort)g(they)g(require)g(for)f(a)0
33907 1366 y(\014xed)h(depth)h(of)e(searc)o(h.)19 b(APHID)14
33908 b(will)f(b)q(e)h(generalized)h(to)f(supp)q(ort)g(a)g(more)f(dynamic)f
33909 (searc)o(h)j(horizon)f(in)f(the)i(master.)62 1415 y(Instead)f(of)e
33910 (basing)h(the)g(results)i(of)d(the)i(algorithm)c(on)j(the)g(sp)q
33911 (eedup,)i(w)o(e)e(are)g(also)g(in)o(terested)h(in)f(the)g(qualit)o(y)f
33912 (of)g(the)0 1465 y(results)g(returned)g(b)o(y)e(the)h(algorithm.)j
33913 (This)d(will)e(b)q(e)i(necessary)i(when)e(the)g(algorithm)d(is)i
33914 (tested)i(b)q(ey)o(ond)f(the)g(\014xed-depth)0 1515 y(limitations)f
33915 (giv)o(en)i(here.)18 b(The)13 b(b)q(ene\014ts)i(and)d(disadv)n(an)o
33916 (tages)g(of)g(these)i(alternativ)o(e)f(views)g(of)f(parallel)f(p)q
33917 (erformance)i(are)0 1565 y(curren)o(tly)i(b)q(eing)f(explored.)62
33918 1615 y(The)h(results)g(rep)q(orted)h(here)f(are)g(based)g(on)e(a)h
33919 (simple)f(master/sla)o(v)o(e)g(relationship.)18 b(As)d(the)g(n)o(um)o
33920 (b)q(er)e(of)h(pro)q(cessors)0 1664 y(increases,)f(the)f(master)f
33921 (increasingly)h(b)q(ecomes)f(a)h(b)q(ottlenec)o(k.)18
33922 b(APHID)11 b(has)h(b)q(een)h(generalized)f(to)f(w)o(ork)h(in)f(a)g
33923 (hierarc)o(hi-)0 1714 y(cal)j(pro)q(cess)j(tree,)e(although)f(this)h
33924 (asp)q(ect)h(of)e(the)h(algorithm)d(has)j(not)f(b)q(een)i(tested)g
33925 (here.)22 b(Mid-lev)o(el)13 b(pro)q(cesses)18 b(w)o(ould)0
33926 1764 y(b)q(eha)o(v)o(e)c(as)f(a)g(sla)o(v)o(e)g(to)o(w)o(ard)g(their)h
33927 (master,)e(and)i(as)f(a)g(master)g(to)o(w)o(ard)g(their)h(sla)o(v)o
33928 (es.)j(The)d(scalabilit)o(y)e(of)h(the)h(algorithm)0
33929 1814 y(has)g(y)o(et)h(to)f(b)q(e)h(demonstrated)f(on)g(arc)o
33930 (hitectures)i(of)e(more)f(than)h(16)g(pro)q(cessors,)i(due)f(to)f
33931 (resource)i(limitations)11 b(during)0 1864 y(the)j(academic)f(y)o(ear.)
33932 62 1914 y(P)o(erhaps)i(the)e(biggest)h(con)o(tribution)f(of)f(APHID)i
33933 (is)f(that)g(it)g(easily)g(\014ts)h(in)f(to)g(an)g(existing)g(sequen)o
33934 (tial)g Fj(\013\014)j Fk(program.)0 1963 y(Although)e(the)h(\014rst)h
33935 (stage)f(of)f(the)h(exp)q(erimen)o(t)f(uses)i(programs)d(written)j(at)e
33936 (the)h(Univ)o(ersit)o(y)g(of)f(Alb)q(erta,)g(the)i(authors)0
33937 2013 y(b)q(eliev)o(e)e(that)h(the)f(same)g(ease)h(of)e(in)o(tegration)h
33938 (will)e(b)q(e)j(demonstrated)f(in)g(the)h(second)g(stage)g(of)e(the)i
33939 (exp)q(erimen)o(t,)e(when)0 2063 y(the)h(APHID)h(library)e(is)g(giv)o
33940 (en)h(to)g(b)q(eta-testers)i(outside)e(of)f(the)i(Univ)o(ersit)o(y)f
33941 (of)f(Alb)q(erta.)0 2200 y Fl(6)67 b(Ac)n(kno)n(wledgemen)n(ts)0
33942 2291 y Fk(Man)o(y)10 b(p)q(eople)h(ha)o(v)o(e)f(con)o(tributed)h(to)f
33943 (the)h(success)i(of)d(this)h(pro)r(ject.)18 b(W)m(e)10
33944 b(w)o(ould)f(lik)o(e)h(to)g(thank)g(the)h(other)g(mem)o(b)q(ers)f(of)f
33945 (the)0 2341 y(Univ)o(ersit)o(y)k(of)f(Alb)q(erta)h(GAMES)g(group)f(for)
33946 h(n)o(umerous)f(discussions)h(and)g(impro)o(v)o(emen)o(ts)d(to)j(the)g
33947 (presen)o(tation)h(of)e(this)0 2391 y(pap)q(er)h(and)f(the)h(library:)k
33948 (Yngvi)12 b(Bjornsson,)h(Y)m(ao)q(qing)e(Gao,)g(Andreas)i(Junghanns,)g
33949 (T)m(on)o(y)e(Marsland)i(and)f(Ask)o(e)h(Plaat.)0 2441
33950 y(W)m(e)i(w)o(ould)f(also)g(lik)o(e)h(to)g(thank)g(P)o(aul)f(Lu)h(for)g
33951 (his)g(commen)o(ts)e(on)i(the)h(APHID)f(library)m(,)f(and)h(the)h
33952 (Computing)d(Science)0 2490 y(Instructional)20 b(Supp)q(ort)h(Group)f
33953 (at)h(the)g(Univ)o(ersit)o(y)f(of)g(Alb)q(erta)g(for)g(giving)f(us)i
33954 (the)g(computer)f(time)f(for)h(running)0 2540 y(the)f(exp)q(erimen)o
33955 (ts.)32 b(W)m(e)19 b(w)o(ould)e(also)h(lik)o(e)g(to)g(thank)h(the)g
33956 (anon)o(ymous)e(referees)j(that)f(ha)o(v)o(e)f(help)q(ed)i(us)f(impro)o
33957 (v)o(e)d(the)0 2590 y(presen)o(tation)f(of)e(p)q(ortions)h(of)f(this)h
33958 (do)q(cumen)o(t.)62 2640 y(This)g(w)o(ork)g(w)o(as)f(supp)q(orted)j(b)o
33959 (y)d(the)i(Natural)e(Sciences)j(and)e(Engineering)g(Researc)o(h)h
33960 (Council)e(of)g(Canada.)954 2790 y(17)p eop
33962 18 19 bop 0 42 a Fl(References)21 124 y Fk([1])19 b(M.)f(G.)f(Bro)q(c)o
33963 (kington.)30 b(A)19 b(Taxonom)o(y)c(of)j(Parallel)f(Game-Tree)g(Searc)o
33964 (h)i(Algorithms.)28 b Fi(ICCA)18 b(Journal)p Fk(,)h(19\(3\),)85
33965 166 y(1996.)e(In)d(press.)21 240 y([2])19 b(M.)13 b(G.)f(Bro)q(c)o
33966 (kington)h(and)f(J.)h(Sc)o(hae\013er.)18 b(APHID)13 b(Game)e(Tree)j
33967 (Searc)o(h.)j(In)c Fi(A)n(dvanc)n(es)i(in)f(Computer)g(Chess)g(VIII)p
33968 Fk(,)85 282 y(Maastric)o(h)o(t,)g(The)g(Netherlands,)h(June)g(1996.)i
33969 (In)c(press.)21 357 y([3])19 b(M.)11 b(G.)g(Bro)q(c)o(kington)g(and)h
33970 (J.)f(Sc)o(hae\013er.)16 b(The)c(APHID)f(Parallel)g Fj(\013\014)j
33971 Fk(Searc)o(h)e(Algorithm.)g(In)f Fi(Pr)n(o)n(c)n(e)n(e)n(dings)i(of)g
33972 (IEEE)85 398 y(SPDP)j('96)p Fk(,)e(New)g(Orleans,)g(Louisiana,)e(Octob)
33973 q(er)k(1996.)h(In)d(press.)21 473 y([4])19 b(V.)12 b(Da)o(vid.)h
33974 Fi(A)o(lgorithmique)f(p)n(ar)n(al)r(l)o(\022)-20 b(ele)12
33975 b(sur)h(les)g(arbr)n(es)f(de)i(d)o(\023)-20 b(ecision)13
33976 b(et)g(r)n(aisonnement)g(en)h(temps)f(c)n(ontr)n(aint)g(-)f(Etude)85
33977 514 y(et)j(applic)n(ation)g(au)h(minimax)p Fk(.)i(PhD)13
33978 b(thesis,)i(ENSAE,)f(T)m(oulouse,)f(F)m(rance,)h(1993.)21
33979 589 y([5])19 b(R.)34 b(F)m(eldmann.)78 b Fi(Spielb)n(aumsuche)35
33980 b(mit)e(massiv)h(p)n(ar)n(al)r(lelen)g(Systemen)p Fk(.)80
33981 b(PhD)35 b(thesis,)40 b(Univ)o(ersit\177)-21 b(at-)85
33982 631 y(Gesam)o(tho)q(c)o(hsc)o(h)o(ule)13 b(P)o(aderb)q(orn,)h(P)o
33983 (aderb)q(orn,)g(German)o(y)m(,)c(Ma)o(y)j(1993.)j(In)d(German)f({)h
33984 (English)g(translation)f(a)o(v)n(ail-)85 672 y(able.)21
33985 747 y([6])19 b(E.)f(W.)e(F)m(elten)i(and)f(S.)h(W.)e(Otto.)29
33986 b(Chess)19 b(on)f(a)f(Hyp)q(ercub)q(e.)31 b(In)17 b(G.)g(F)m(o)o(x,)g
33987 (editor,)h Fi(Pr)n(o)n(c)n(e)n(e)n(dings)g(of)h(The)f(Thir)n(d)85
33988 788 y(Confer)n(enc)n(e)13 b(on)g(Hyp)n(er)n(cub)n(e)f(Concurr)n(ent)h
33989 (Computers)f(and)h(Applic)n(ations)p Fk(,)e(v)o(olume)f(I)q
33990 (I-Applications,)h(pages)g(1329{)85 830 y(1341,)i(P)o(assadena,)h(CA,)f
33991 (1988.)21 905 y([7])19 b(C.)c(F)m(erguson)h(and)g(R.)f(E.)g(Korf.)23
33992 b(Distributed)16 b(T)m(ree)g(Searc)o(h)h(and)e(its)h(Application)f(to)g
33993 (Alpha-Beta)h(Pruning.)23 b(In)85 946 y Fi(Pr)n(o)n(c)n(e)n(e)n(dings)
33994 15 b(of)g(AAAI-88)p Fk(,)e(pages)h(128{132,)e(Sain)o(t)h(P)o(aul,)g
33995 (MN,)h(August)g(1988.)21 1021 y([8])19 b(F.)14 b(Hsu.)k(Priv)n(ate)c
33996 (comm)o(unication,)c(1996.)21 1095 y([9])19 b(F.-h.)c(Hsu.)22
33997 b Fi(L)n(ar)n(ge)16 b(Sc)n(ale)g(Par)n(al)r(lelization)f(of)h(A)o
33998 (lpha-Beta)h(Se)n(ar)n(ch:)k(A)o(n)c(A)o(lgorithmic)d(and)j(A)o(r)n
33999 (chite)n(ctur)n(al)e(Study)p Fk(.)85 1137 y(PhD)g(thesis,)h(Carnegie)g
34000 (Mellon)e(Univ)o(ersit)o(y)m(,)g(Pittsburgh,)i(U.S.A.,)e(1990.)20
34001 b(Also)15 b(T)m(ec)o(h.)g(Rept.)g(CMU-CS-90-108,)85 1179
34002 y(Carnegie)f(Mellon)g(Univ)o(ersit)o(y)m(,)f(F)m(eb.)g(1990.)0
34003 1253 y([10])19 b(R.)11 b(M.)h(Hy)o(att,)g(B.)g(W.)f(Suter,)i(and)e(H.)h
34004 (L.)f(Nelson.)16 b(A)c(P)o(arallel)f(Alpha/Beta)h(T)m(ree)g(Searc)o
34005 (hing)g(Algorithm.)h Fi(Par)n(al)r(lel)85 1295 y(Computing)p
34006 Fk(,)h(10\(3\):299{308,)d(1989.)0 1369 y([11])19 b(L.)d(Kaufman.)24
34007 b(Rate)16 b(Your)h(Own)g(Computer.)24 b Fi(Computer)17
34008 b(Chess)h(R)n(ep)n(orts)p Fk(,)e(3\(1\):17{19,)f(1992.)24
34009 b(\(Published)17 b(b)o(y)85 1411 y(ICD,)c(21)h(W)m(alt)e(Whitman)g
34010 (Rd.,)g(Hun)o(tington)i(Station,)f(NY)h(11746.\).)0 1486
34011 y([12])19 b(L.)14 b(Kaufman.)i(Rate)e(Your)g(Own)g(Computer)f(-)h(Part)
34012 g(I)q(I.)k Fi(Computer)c(Chess)h(R)n(ep)n(orts)p Fk(,)e(3\(2\):13{15,)f
34013 (1993.)0 1560 y([13])19 b(D.)10 b(E.)g(Kn)o(uth)g(and)g(R.)g(W.)f(Mo)q
34014 (ore.)j(An)f(Analysis)e(of)h(Alpha-Beta)g(Pruning.)i
34015 Fi(A)o(rti\014cial)f(Intel)r(ligenc)n(e)p Fk(,)f(6\(3\):293{326,)85
34016 1602 y(1975.)0 1677 y([14])19 b(B.)14 b(C.)g(Kuszmaul.)k
34017 Fi(Synchr)n(onize)n(d)e(MIMD)g(Computing)p Fk(.)k(PhD)14
34018 b(thesis,)h(Massac)o(h)o(usetts)h(Institute)f(of)f(T)m(ec)o(hnology)m
34019 (,)85 1718 y(Cam)o(bridge,)e(MA,)i(1994.)0 1793 y([15])19
34020 b(C.-P)m(.)11 b(P)m(.)g(Lu.)j(P)o(arallel)d(Searc)o(h)h(of)f(Narro)o(w)
34021 h(Game)e(Trees.)16 b(Master's)d(thesis,)f(Departmen)o(t)f(of)g
34022 (Computing)f(Science,)85 1834 y(Univ)o(ersit)o(y)k(of)f(Alb)q(erta,)h
34023 (Edmon)o(ton,)e(Canada,)h(1993.)0 1909 y([16])19 b(P)m(.)13
34024 b(Lu.)18 b(Priv)n(ate)c(comm)o(unication,)c(1996.)0 1984
34025 y([17])19 b(T.)11 b(A.)f(Marsland)h(and)g(M.)f(S.)h(Campb)q(ell.)g
34026 (Parallel)f(Searc)o(h)i(of)e(Strongly)g(Ordered)j(Game)c(Trees.)15
34027 b Fi(A)o(CM)d(Computing)85 2025 y(Surveys)p Fk(,)i(14\(4\):533{551,)d
34028 (1982.)0 2100 y([18])19 b(T.)c(A.)g(Marsland,)g(M.)g(Olafsson,)g(and)g
34029 (J.)g(Sc)o(hae\013er.)24 b(Multipro)q(cessor)17 b(Tree-Searc)o(h)g(Exp)
34030 q(erimen)o(ts.)22 b(In)16 b(D.)e(Beal,)85 2142 y(editor,)g
34031 Fi(A)n(dvanc)n(es)h(in)g(Computer)g(Chess)g(4)p Fk(,)e(pages)i(37{51.)d
34032 (P)o(ermagon)g(Press,)j(Oxford,)f(1985.)0 2216 y([19])19
34033 b(M.)14 b(M.)f(Newb)q(orn.)20 b(Unsync)o(hronized)15
34034 b(Iterativ)o(e)g(Deep)q(ening)f(P)o(arallel)f(Alpha-Beta)h(Searc)o(h.)
34035 20 b Fi(IEEE)15 b(T)m(r)n(ansactions)85 2258 y(on)h(Pattern)e(A)o
34036 (nalysis)h(and)h(Machine)g(Intel)r(ligenc)n(e)p Fk(,)d(P)m
34037 (AMI-10\(5\):687{694,)d(1988.)0 2333 y([20])19 b(J.)c(P)o(earl.)21
34038 b(Asymptotic)14 b(Prop)q(erties)j(of)d(Minimax)e(Trees)17
34039 b(and)d(Game-Searc)o(hing)g(Pro)q(cedures.)23 b Fi(A)o(rti\014cial)15
34040 b(Intel)r(li-)85 2374 y(genc)n(e)p Fk(,)f(14:113{138,)d(1980.)0
34041 2449 y([21])19 b(A.)14 b(Plaat.)j Fi(R)n(ese)n(ar)n(ch)e(R)n(e:)7
34042 b(se)n(ar)n(ch)15 b(&)g(R)n(e-se)n(ar)n(ch)p Fk(.)i(PhD)d(thesis,)h
34043 (Erasm)o(us)e(Univ)o(ersit)o(y)m(,)g(Rotterdam,)f(NL,)h(1996.)0
34044 2523 y([22])19 b(A.)f(Plaat,)g(J.)g(Sc)o(hae\013er,)i(W.)d(Pijls,)h
34045 (and)f(A.)h(de)g(Bruin.)31 b(Exploiting)16 b(Graph)i(Prop)q(erties)i
34046 (of)d(Game)f(Trees.)32 b(In)85 2565 y Fi(Pr)n(o)n(c)n(e)n(e)n(dings)15
34047 b(of)g(AAAI)f('96)p Fk(,)g(v)o(olume)e(1,)h(pages)h(234{239,)e(P)o
34048 (ortland,)h(Oregon,)h(August)g(1996.)0 2640 y([23])19
34049 b(A.)14 b(Reinefeld.)k(An)c(Impro)o(v)o(emen)o(t)d(to)j(the)g(Scout)h
34050 (Tree-Searc)o(h)g(Algorithm.)h Fi(ICCA)e(Journal)p Fk(,)g(6\(4\):4{14,)
34051 d(1983.)954 2790 y(18)p eop
34053 19 20 bop 0 42 a Fk([24])19 b(J.)11 b(Sc)o(hae\013er.)k(Distributed)d
34054 (Game-T)m(ree)e(Searc)o(hing.)j Fi(Journal)g(of)f(Par)n(al)r(lel)f(and)
34055 i(Distribute)n(d)f(Computing)p Fk(,)f(6\(2\):90{)85 83
34056 y(114,)i(1989.)0 158 y([25])19 b(J.)11 b(Sc)o(hae\013er,)i(J.)d(Culb)q
34057 (erson,)i(N.)e(T)m(reloar,)h(B.)g(Knigh)o(t,)f(P)m(.)g(Lu,)h(and)g(D.)f
34058 (Szafron.)j(A)e(W)m(orld)f(Championship)e(Calib)q(er)85
34059 199 y(Chec)o(k)o(ers)16 b(Program.)g Fi(A)o(rti\014cial)e(Intel)r
34060 (ligenc)n(e)p Fk(,)f(53\(2-3\):273{290,)e(1992.)0 274
34061 y([26])19 b(J.)d(J.)f(Scott.)24 b(A)16 b(Chess-Pla)o(ying)f(Program.)22
34062 b(In)16 b(B.)f(Meltzer)i(and)f(D.)f(Mic)o(hie,)g(editors,)h
34063 Fi(Machine)i(Intel)r(ligenc)n(e)e(4)p Fk(,)85 315 y(pages)f(255{265.)c
34064 (Edin)o(burgh)j(Univ)o(ersit)o(y)g(Press,)h(1969.)0 390
34065 y([27])k(D.)c(J.)g(Slate)g(and)h(L.)e(R.)h(A)o(tkin.)22
34066 b(Chess)16 b(4.5)f(-)g(The)h(North)o(w)o(estern)h(Univ)o(ersit)o(y)e
34067 (Chess)i(Program.)j(In)c(P)m(.W.)e(F)m(rey)m(,)85 432
34068 y(editor,)g Fi(Chess)h(Skil)r(l)f(in)h(Man)h(and)f(Machine)p
34069 Fk(,)g(pages)f(82{118.)e(Springer-V)m(erlag,)h(New)h(Y)m(ork,)f(1977.)0
34070 506 y([28])19 b(V.)e(Sunderam.)28 b(PVM:)17 b(A)h(F)m(ramew)o(ork)d
34071 (for)i(P)o(arallel)g(Distributed)g(Computing.)26 b Fi(Concurr)n(ency:)g
34072 (Pr)n(actic)n(e)17 b(and)85 548 y(Exp)n(erienc)n(e)p
34073 Fk(,)d(2\(4\):315{339,)d(Decem)o(b)q(er)j(1990.)0 623
34074 y([29])19 b(J.-C.)25 b(W)m(eill.)51 b Fi(Pr)n(o)n(gr)n(ammes)25
34075 b(d')o(\023)-20 b(eche)n(cs)26 b(de)g(championnat:)41
34076 b(ar)n(chite)n(ctur)n(e)25 b(lo)n(giciel)r(le)f(synth)o(\022)-20
34077 b(ese)27 b(de)f(fonctions)85 664 y(d')o(\023)-20 b(evaluations,)15
34078 b(p)n(ar)n(al)r(l)o(\023)-20 b(elisme)14 b(de)h(r)n(e)n(cher)n(che)p
34079 Fk(.)j(PhD)13 b(thesis,)i(Univ)o(ersit)o(\023)-20 b(e)14
34080 b(P)o(aris)g(8,)f(Jan)o(uary)h(1995.)954 2790 y(19)p
34083 20 21 bop 0 42 a Fl(A)67 b(Description)23 b(of)f(APHID)f(In)n(terface)0
34084 141 y Fv(A.1)56 b(T)n(yp)r(es)18 b(of)h(Pro)r(cesses)f(within)g(APHID)
34085 62 209 y Fh(\017)j Fb(absolute)f(master)p Fk(:)25 b(The)18
34086 b(single)g(pro)q(cess)h(whic)o(h)f(in)o(v)o(ok)o(es)g(all)e(other)j
34087 (pro)q(cesses)h(within)e(the)g(APHID)g(pro)q(cess)104
34088 251 y(hierarc)o(h)o(y)m(,)13 b(whic)o(h)h(o)q(ccupies)h(the)f(highest)h
34089 (lev)o(el)e(in)h(the)g(pro)q(cess)i(hierarc)o(h)o(y)m(.)62
34090 325 y Fh(\017)21 b Fb(slave)p Fk(:)g(An)o(y)16 b(pro)q(cess)i(that)e(m)
34091 o(ust)f(rep)q(ort)i(its)f(searc)o(h)h(results)g(to)f(a)g(pro)q(cess)i
34092 (ab)q(o)o(v)o(e)d(it)h(in)g(the)g(hierarc)o(h)o(y)m(.)25
34093 b(With)104 367 y(this)14 b(de\014nition,)f(a)g(pro)q(cess)j(is)e
34094 (either)h(the)f(absolute)g(master)f(or)h(a)g(sla)o(v)o(e,)f(and)h
34095 (cannot)g(b)q(e)g(b)q(oth.)62 442 y Fh(\017)21 b Fb(master)p
34096 Fk(:)e(An)o(y)14 b(pro)q(cess)j(that)e(has)g(pro)q(cesses)j(underneath)
34097 e(it)e(in)h(the)g(hierarc)o(h)o(y)m(.)21 b(Note)15 b(that)g(it)g(is)g
34098 (p)q(ossible)g(for)f(a)104 483 y(pro)q(cess)h(to)f(b)q(e)h(b)q(oth)f(a)
34099 f(master)h(and)f(a)h(sla)o(v)o(e)g(if)f(the)h(pro)q(cess)i(hierarc)o(h)
34100 o(y)e(has)g(m)o(ultiple)e(lev)o(els.)0 599 y Fv(A.2)56
34101 b(Constan)n(ts)20 b(T)-5 b(o)19 b(Be)f(De\014ned)0 668
34102 y Fk(Since)c(the)h(library)e(is)h(application-indep)q(enden)o(t,)f
34103 (some)g(de\014nitions)h(of)f(ho)o(w)g(things)h(are)h(implem)o(en)o(ted)
34104 d(m)o(ust)h(b)q(e)h(giv)o(en)0 709 y(to)g(the)g(APHID)g(library)m(.)62
34105 792 y Fh(\017)21 b Fb(APHID)p 217 792 14 2 v 14 w(HASHTYPESIZE)p
34106 Fk(:)11 b(The)k(size)f(\(in)g(b)o(ytes\))h(of)e(the)h(hash)g(v)n(alue)g
34107 (used)h(in)e(y)o(our)h(program.)62 867 y Fh(\017)21 b
34108 Fb(APHID)p 217 867 V 14 w(HASHKEYSIZE)p Fk(:)10 b(The)i(size)h(\(in)f
34109 (b)o(ytes\))h(of)f(the)h(\\lo)q(c)o(k")e(used)i(to)f(guaran)o(tee)h
34110 (that)f(t)o(w)o(o)g(p)q(ositions)f(sharing)h(the)104
34111 908 y(same)h(hash)h(v)n(alue)f(are)h(the)h(same.)62 983
34112 y Fh(\017)21 b Fb(APHID)p 217 983 V 14 w(MOVESIZE)p Fk(:)12
34113 b(The)i(size)h(\(in)f(b)o(ytes\))g(of)g(the)g(represen)o(tation)i(of)d
34114 (a)h(mo)o(v)o(e)e(in)h(the)i(application.)62 1058 y Fh(\017)21
34115 b Fb(APHID)p 217 1058 V 14 w(MINUSINF)15 b Fk(and)h Fb(APHID)p
34116 615 1058 V 15 w(PLUSINF)p Fk(:)e(Sp)q(eci\014cations)j(of)e(v)n(alues)h
34117 (smaller)f(than)h(the)h(minim)n(um)o(,)c(and)j(larger)104
34118 1099 y(than)e(the)g(maxim)n(um)o(,)c(that)k(the)h(\\ev)n(aluation")d
34119 (could)i(p)q(ossibly)f(return,)i(resp)q(ectiv)o(ely)m(.)62
34120 1174 y Fh(\017)21 b Fb(APHID)p 217 1174 V 14 w(INVALIDSCORE)p
34121 Fk(:)13 b(A)j(v)n(alue)g(that)g(is)g(outside)g(the)g(range)h(represen)o
34122 (ted)h(b)o(y)e(the)h(minim)n(um)11 b(and)16 b(maxim)n(um)104
34123 1215 y(v)n(alues)d(sp)q(eci\014ed)j(previously)m(.)62
34124 1290 y Fh(\017)21 b Fb(APHID)p 217 1290 V 14 w(LOG2)p
34125 319 1290 V 15 w(TABSIZE)p Fk(:)16 b(The)j(size)g(of)e(the)i(APHID)f
34126 (table)g(that)g(y)o(ou)g(in)o(tend)g(on)g(using)g(to)g(share)h(b)q(et)o
34127 (w)o(een)g(the)104 1332 y(master)c(and)h(the)g(sla)o(v)o(es,)g(tak)o
34128 (en)f(to)h(a)f(base)i(2)e(logarithm.)21 b(F)m(or)15 b(example,)g(a)g(v)
34129 n(alue)g(of)g(14)g(indicates)h(an)g(APHID)104 1378 y(table)e(with)f(2)
34130 323 1363 y Fe(14)370 1378 y Fk(=)e(16384)i(en)o(tries.)62
34131 1452 y Fh(\017)21 b Fb(APHID)p 217 1452 V 14 w(MAXSLAVEPLYSEARCH)p
34132 Fk(:)7 b(The)j(maxim)o(um)c("plytogo")i(v)n(alue)i(that)g(y)o(ou)g
34133 (could)g(p)q(ossibly)g(exp)q(ect)i(to)e(hand)g(to)g(a)104
34134 1494 y(sla)o(v)o(e)g(to)g(searc)o(h.)18 b(Note)10 b(that)g(this)h(v)n
34135 (alue)e(should)h(not)g(b)q(e)h(excessiv)o(ely)g(large,)g(since)g(this)f
34136 (and)g Fb(APHID)p 1683 1494 V 15 w(LOG2)p 1786 1494 V
34137 14 w(TABSIZE)104 1535 y Fk(are)k(the)h(leading)e(determinan)o(ts)g(in)h
34138 (the)g(amoun)o(t)e(of)h(memory)f(used)j(b)o(y)e(the)i(APHID)f(library)m
34139 (.)62 1610 y Fh(\017)21 b Fb(APHID)p 217 1610 V 14 w
34140 (MAXMASTERPLYSEARCH)p Fk(:)10 b(The)k(maxim)o(um)9 b(depth)15
34141 b(that)f(w)o(e)g(exp)q(ect)h(the)g(master)e(should)h(reac)o(h.)62
34142 1685 y Fh(\017)21 b Fb(APHID)p 217 1685 V 14 w(SLAVENODESTOCOMM)p
34143 Fk(:)15 b(This)j(should)g(b)q(e)g(set)h(to)f(the)h(n)o(um)o(b)q(er)e
34144 (of)h(no)q(des)h(that)f(the)g(sequen)o(tial)h(program)104
34145 1726 y(visits)13 b(on)h(the)h(t)o(yp)q(e)f(of)f(pro)q(cessor)j(b)q
34146 (eing)e(used,)g(divided)g(b)o(y)f(10.)0 1843 y Fv(A.3)56
34147 b(Standard)19 b(V)-5 b(ariables)19 b(Used)62 1911 y Fh(\017)i
34148 Fb(argv)p Fk(:)e(Standard)c(argumen)o(t)e(list.)20 b(Used)c(to)f
34149 (instan)o(tiate)f(the)h(sla)o(v)o(es)g(with)g(the)g(same)f(parameters)h
34150 (as)g(the)g(initial)104 1952 y(program.)62 2027 y Fh(\017)21
34151 b Fb(depth)p Fk(:)c(The)d(n)o(um)o(b)q(er)f(of)g(ply)h(the)g(curren)o
34152 (t)i(no)q(de)e(is)g(a)o(w)o(a)o(y)f(from)f(the)i(ro)q(ot)g(of)f(the)i
34153 (game)d(tree.)62 2102 y Fh(\017)21 b Fb(plytogo)p Fk(:)15
34154 b(The)c(n)o(um)o(b)q(er)f(of)g(ply)h(un)o(til)f(w)o(e)h(reac)o(h)g(the)
34155 h(b)q(ottom)d(of)h(the)i(game)d(tree.)18 b(In)11 b(a)g(searc)o(h)h
34156 (with)e(no)h(extensions)104 2143 y(or)j(forw)o(ard)f(pruning,)g
34157 Fb(plytogo)21 b(+)g(depth)13 b Fk(should)h(b)q(e)g(constan)o(t.)62
34158 2218 y Fh(\017)21 b Fb(&move[i])10 b Fk(or)i Fb(&bestmove)p
34159 Fk(:)j(A)d(p)q(oin)o(ter)g(to)f(an)h(area)g(of)f Fb(APHID)p
34160 1098 2218 V 15 w(MOVESIZE)f Fk(b)o(ytes)i(whic)o(h)g(sp)q(eci\014es)h
34161 (the)g(mo)o(v)o(e)d(b)q(eing)104 2260 y(pla)o(y)o(ed.)62
34162 2334 y Fh(\017)21 b Fb(p)p 129 2334 V 15 w(hash)p Fk(:)c(A)d(p)q(oin)o
34163 (ter)g(to)g(an)g(area)g(of)f Fb(APHID)p 805 2334 V 15
34164 w(HASHTYPESIZE)e Fk(b)o(ytes)k(that)f(con)o(tains)g(the)g(curren)o(t)h
34165 (hash)g(v)n(alue.)62 2409 y Fh(\017)21 b Fb(p)p 129 2409
34166 V 15 w(key)p Fk(:)c(A)c(p)q(oin)o(ter)g(to)f(an)g(area)h
34167 Fb(APHID)p 729 2409 V 15 w(HASHKEYSIZE)d Fk(b)o(ytes)k(that)e(con)o
34168 (tains)h(a)f(lo)q(c)o(k)g(whic)o(h)h(can)g(\\guaran)o(tee")f(the)104
34169 2451 y(b)q(oard)i(stored)h(in)e(the)h(lo)q(cation)f(of)h(the)g(hash)g
34170 (table)g(is)g(correct.)62 2525 y Fh(\017)21 b Fb(alpha)13
34171 b Fk(and)g Fb(beta)p Fk(:)k(Searc)o(h)e(windo)o(w)e(used)i(b)o(y)f
34172 Fj(\013\014)i Fk(implemen)o(tatio)o(n;)11 b(they)j(are)g(exp)q(ected)i
34173 (to)e(b)q(e)h(32-bit)e(in)o(tegers.)62 2600 y Fh(\017)21
34174 b Fb(value)13 b Fk(and)g Fb(score)p Fk(:)k(V)m(alues)d(of)f(leaf)g(no)q
34175 (des;)i(they)f(are)g(exp)q(ected)i(to)e(b)q(e)h(32-bit)e(in)o(tegers)h
34176 (for)g(this)g(library)m(.)954 2790 y(20)p eop
34178 21 22 bop 0 42 a Fv(A.4)56 b(Stubs)19 b(T)-5 b(o)19 b(Be)f(W)-5
34179 b(ritten)62 110 y Fh(\017)21 b Fb(int)g(aphid)p 304 110
34180 14 2 v 15 w(stub)p 407 110 V 14 w(encodeinit\(char)e(*msg\))p
34181 Fk(:)k(Pro)o(vides)17 b(the)g(absolute)g(master)f(with)h(a)f(4000-b)o
34182 (yte)g(bu\013er)i(to)104 151 y(store)g(all)e(p)q(ertinen)o(t)j
34183 (information)14 b(ab)q(out)j(the)h(ro)q(ot)g(of)e(the)i(game)e(tree,)j
34184 (suc)o(h)f(as)g(the)g(p)q(osition)e(and)h(the)h(game)104
34185 193 y(history)d(\(if)g(this)h(is)f(relev)n(an)o(t)h(to)f(the)h(searc)o
34186 (h)h(algorithm\).)k(The)16 b(return)g(v)n(alue)f(is)h(the)g(n)o(um)o(b)
34187 q(er)f(of)g(b)o(ytes)h(used)g(in)104 234 y(the)e(string)g
34188 Fb(msg)p Fk(.)62 309 y Fh(\017)21 b Fb(int)g(aphid)p
34189 304 309 V 15 w(stub)p 407 309 V 14 w(decodeinit\(int)e(msg)p
34190 814 309 V 15 w(ln,)j(char)f(*msg\))p Fk(:)15 b(All)9
34191 b(other)i(pro)q(cesses)j(in)c(the)h(system,)f(aside)h(from)104
34192 351 y(the)i(absolute)f(master,)g(receiv)o(e)i(the)f(message)f(length)g
34193 (and)g(the)h(message)f(enco)q(ded)i(b)o(y)e Fb(aphid)p
34194 1606 351 V 15 w(stub)p 1709 351 V 15 w(encodeinit)p Fk(,)104
34195 392 y(and)h(should)h(set)h(the)f(ro)q(ot)g(of)g(their)g(game)e(tree,)j
34196 (accordingly)m(.)62 467 y Fh(\017)21 b Fb(void)g(aphid)p
34197 326 467 V 14 w(stub)p 428 467 V 15 w(movedownpath\(int)e(num)p
34198 880 467 V 15 w(moves,)h(char)h(*movepath\))p Fk(:)15
34199 b(Called)10 b(b)o(y)h(the)h(sla)o(v)o(es,)f(a)g(series)i(of)104
34200 508 y Fb(num)p 173 508 V 15 w(moves)d Fk(mo)o(v)o(es)h(is)g(giv)o(en)h
34201 (in)f Fb(movepath)p Fk(,)f(with)h(eac)o(h)h(mo)o(v)o(e)e(b)q(eing)i
34202 Fb(APHID)p 1328 508 V 15 w(MOVESIZE)e Fk(b)o(ytes)i(long.)17
34203 b(The)12 b(routine)104 550 y(should)h(pla)o(y)g(through)h(the)h(mo)o(v)
34204 o(es)d(giv)o(en)i(in)f Fb(movepath)f Fk(from)h(the)h(ro)q(ot)g(of)f
34205 (the)i(game)d(tree.)62 625 y Fh(\017)21 b Fb(void)g(aphid)p
34206 326 625 V 14 w(stub)p 428 625 V 15 w(moveuppath\(int)e(num)p
34207 836 625 V 15 w(moves,)i(char)g(*movepath\))p Fk(:)14
34208 b(Called)d(b)o(y)g(the)h(sla)o(v)o(es,)f(should)g(com-)104
34209 666 y(pletely)j(undo)f(an)o(y)h(c)o(hanges)g(made)f(b)o(y)h
34210 Fb(aphid)p 856 666 V 14 w(stub)p 958 666 V 15 w(movedownpath)p
34211 Fk(.)62 741 y Fh(\017)21 b Fb(int)g(aphid)p 304 741 V
34212 15 w(stub)p 407 741 V 14 w(iterativedeepening\(i)o(nt)e(depth,)h(int)h
34213 (last,)g(int)g(max\))p Fk(:)d(Called)13 b(b)o(y)h(the)h(sla)o(v)o(es,)f
34214 (this)104 782 y(routine)i(should)f(return)i(the)g(searc)o(h)g(depth)f
34215 (for)g(the)g(subsequen)o(t)i(searc)o(h)f(of)e(a)h(leaf)f(no)q(de.)24
34216 b(F)m(or)16 b(most)e(programs)104 824 y(that)g(do)f(iterativ)o(e)h
34217 (deep)q(ening)h(in)f(1)f(ply)g(steps,)i(this)f(should)g(simply)e
34218 (return)j Fb(last)21 b(+)g(1)p Fk(.)62 899 y Fh(\017)g
34219 Fb(void)g(aphid)p 326 899 V 14 w(stub)p 428 899 V 15
34220 w(preparesearch\(int)e(depth,)h(int)h(plytogo,)f(int)i(winstats[],)d
34221 (int)i(*alpha,)104 940 y(int)g(*beta\))p Fk(:)16 b(Called)10
34222 b(b)o(y)i(the)g(sla)o(v)o(es,)f(this)h(routine)g(sets)g(the)g(initial)e
34223 (windo)o(w)h(searc)o(hed)i(b)o(y)e(the)h(sla)o(v)o(es.)17
34224 b(Statistics)104 982 y(on)12 b(previous)h(searc)o(hes)h(and)f(the)g
34225 (curren)o(t)h(guessed)g(score)g(at)e(the)h(ro)q(ot)g(are)f(passed)i(in)
34226 e(via)g(the)h Fb(winstats[])d Fk(arra)o(y)m(.)104 1023
34227 y(The)j(routine)f(should)h(set)g Fb(*alpha)e Fk(and)h
34228 Fb(*beta)g Fk(b)q(efore)h(terminating.)j(F)m(urthermore,)c(this)g
34229 (routine)h(should)f(ensure)104 1065 y(that)i(an)o(y)f(global)f
34230 (\\alarm")g(states)j(ha)o(v)o(e)e(b)q(een)i(turned)g(o\013.)62
34231 1139 y Fh(\017)21 b Fb(int)g(aphid)p 304 1139 V 15 w(stub)p
34232 407 1139 V 14 w(alphabeta\(int)f(depth,)g(int)h(plytogo,)f(int)i
34233 (alpha,)e(int)h(beta\))p Fk(:)c(Called)c(b)o(y)h(b)q(oth)104
34234 1181 y(the)f(master)e(and)h(the)h(sla)o(v)o(es,)f(this)g(routine)g
34235 (should)g(call)g(y)o(our)g(implem)o(en)o(tation)d(of)j
34236 Fj(\013\014)r Fk(,)g(and)g(return)h(the)g(minim)o(ax)104
34237 1222 y(v)n(alue)g(bac)o(k)h(to)g(the)g(APHID)g(library)m(.)62
34238 1297 y Fh(\017)21 b Fb(int)g(aphid)p 304 1297 V 15 w(stub)p
34239 407 1297 V 14 w(evaluate\(int)f(depth,)g(int)i(alpha,)e(int)h(beta\))p
34240 Fk(:)c(Called)c(b)o(y)g(the)h(master)f(the)h(\014rst)g(time)104
34241 1339 y(it)g(visits)h(a)f(leaf)g(of)g(its)h(tree,)g(this)g(routine)g
34242 (should)f(simply)f(call)h(y)o(our)g(ev)n(aluation)f(routine)i(and)g
34243 (return)g(the)h(score)104 1380 y(for)d(the)i(p)q(osition)e(reac)o(hed)i
34244 (at)f Fb(depth)f Fk(ply)g(within)g(the)i(tree.)62 1455
34245 y Fh(\017)21 b Fb(int)g(aphid)p 304 1455 V 15 w(stub)p
34246 407 1455 V 14 w(stopsearch\(int)e(pass)p 836 1455 V 15
34247 w(stats[]\))p Fk(:)j(Called)16 b(only)f(b)o(y)i(the)g(absolute)f
34248 (master)g(pro)q(cess,)j(this)104 1496 y(routine)12 b(should)g(c)o(hec)o
34249 (k)h(y)o(our)f(timer)f(and)g(determine)h(if)f(y)o(our)h(time)f(limit)e
34250 (has)j(b)q(een)i(exceeded)g(for)d(a)h(searc)o(h.)19 b(If)11
34251 b(the)104 1538 y(time)i(limit)e(has)j(b)q(een)i(exceeded,)g(this)e
34252 (routine)g(should)g(return)h(1;)f(otherwise,)h(0.)j(A)c(n)o(um)o(b)q
34253 (er)g(of)f(parameters)i(are)104 1579 y(passed)h(in)e(to)g(this)h
34254 (routine)g(via)f(the)h(pass)p 782 1579 13 2 v 16 w(stats)g(arra)o(y)m
34255 (,)f(suc)o(h)h(as)g(the)g(n)o(um)o(b)q(er)f(of)g(uncertain)i(no)q(des)f
34256 (outstanding)104 1621 y(for)e(a)h(giv)o(en)f(searc)o(h,)i(to)f(mak)o(e)
34257 e(the)i(decision)h(to)e(terminate)g(a)h(searc)o(h)h(more)e(robust.)62
34258 1696 y Fh(\017)21 b Fb(int)g(aphid)p 304 1696 14 2 v
34259 15 w(stub)p 407 1696 V 14 w(visited\(\))p Fk(:)c(Called)d(b)o(y)g(the)g
34260 (sla)o(v)o(es,)g(this)g(should)g(return)i(a)e(global)e(coun)o(t)j(of)e
34261 (the)i(n)o(um)o(b)q(er)f(of)104 1737 y(no)q(des)g(visited)g(b)o(y)g
34262 (the)g(pro)q(cess.)0 1853 y Fv(A.5)56 b(In)n(terface)18
34263 b(Calls)h(Used)f(b)n(y)h(Master)g(and)g(Sla)n(v)n(e)62
34264 1922 y Fh(\017)i Fb(void)g(aphid)p 326 1922 V 14 w(startup\(argv\))p
34265 Fk(:)k(In)19 b(the)g(\014rst)h(pro)q(cess)g(run,)g(PVM)f(is)g(spa)o
34266 (wned)g(on)g(the)g(mac)o(hines)f(sp)q(eci\014ed,)104
34267 1963 y(and)c(a)f(sla)o(v)o(e)h(pro)q(cess)i(is)e(spa)o(wned)g(with)g
34268 (the)h(same)e(argumen)o(t)g(list)g Fb(\(argv\))g Fk(as)h(the)h(master,)
34269 e(as)h(sp)q(eci\014ed)i(b)o(y)d(the)104 2005 y Fb(aphid.config)e
34270 Fk(\014le.)18 b(In)c(a)g(spa)o(wned)g(pro)q(cess,)h(the)g(APHID)f
34271 (library)f(nev)o(er)i(exits)f(this)g(function)g(call.)62
34272 2079 y Fh(\017)21 b Fb(void)g(aphid)p 326 2079 V 14 w(exit\(\))p
34273 Fk(:)j(This)17 b(routine)h(remo)o(v)o(es)e(a)h(pro)q(cess)j(from)15
34274 b(the)j(PVM)g(group,)f(and)g(it)g(should)g(b)q(e)h(called)104
34275 2121 y(b)q(efore)e(an)o(y)f(pro)q(cess)j(exits)e(\(due)g(to)g(errors)h
34276 (or)e(normal)f(completion\).)21 b(If)16 b(the)g(pro)q(cess)h(is)f(the)g
34277 (absolute)g(master,)104 2162 y(completion)11 b(of)i(this)h(routine)f
34278 (ensures)j(that)d(all)f(of)h(the)h(spa)o(wned)g(pro)q(cesses)i(ha)o(v)o
34279 (e)d(b)q(een)i(sh)o(ut)f(do)o(wn)f(successfully)m(.)62
34280 2237 y Fh(\017)21 b Fb(int)g(aphid)p 304 2237 V 15 w(master\(\))p
34281 Fk(:)16 b(Returns)f(1)e(if)g(the)i(pro)q(cess)h(is)d(a)h(master)f(in)h
34282 (the)g(hierarc)o(h)o(y)m(,)g(and)f(0)h(otherwise.)62
34283 2312 y Fh(\017)21 b Fb(int)g(aphid)p 304 2312 V 15 w(slave\(\))p
34284 Fk(:)14 b(Returns)d(1)f(if)g(the)h(pro)q(cess)h(w)o(as)e(spa)o(wned,)h
34285 (returns)h(0)e(if)f(it)h(is)g(the)h(absolute)f(master)g(pro)q(cess)104
34286 2353 y(whic)o(h)k(spa)o(wned)h(the)g(other)g(pro)q(cesses.)23
34287 b(Note)15 b(that)f(a)h(pro)q(cess)h(can)f(b)q(e)g(b)q(oth)f(a)h(sla)o
34288 (v)o(e)f(and)g(a)g(master)g(dep)q(ending)104 2395 y(on)f(the)i(hierarc)
34289 o(h)o(y)f(sp)q(eci\014ed)i(in)d Fb(aphid.config)p Fk(.)954
34292 22 23 bop 0 42 a Fv(A.6)56 b(In)n(terface)18 b(Calls)h(Used)f(b)n(y)h
34293 (Masters)g(Only)62 110 y Fh(\017)i Fb(void)g(aphid)p
34294 326 110 14 2 v 14 w(initserach\(int)e(maxdepth\))p Fk(:)d(Called)d(b)o
34295 (y)h(the)g(absolute)g(master)g(pro)q(cess,)h(this)f(pro)q(cedure)h
34296 (pre-)104 151 y(pares)i(to)g(start)g(a)f(searc)o(h)i(in)e(parallel.)26
34297 b(This)16 b(routine)h(calls)f Fb(aphid)p 1212 151 V 15
34298 w(stub)p 1315 151 V 15 w(encodeinit)p Fk(,)f(and)h(then)h(informs)e
34299 (all)104 193 y(of)e(the)i(other)g(pro)q(cesses)i(of)c(the)i(curren)o(t)
34300 h(state)f(of)e(the)i(game.)i(The)e(parameter)f(indicates)g(the)h(maxim)
34301 n(um)10 b(depth)104 234 y(that)k(an)o(y)f(pro)q(cess)j(is)e(nominall)o
34302 (y)d(allo)o(w)o(ed)i(to)g(searc)o(h,)i Fi(not)g(including)h(se)n(ar)n
34303 (ch)e(extensions)p Fk(.)62 309 y Fh(\017)21 b Fb(int)g(aphid)p
34304 304 309 V 15 w(rootsearch\(int)e(depth,)h(int)h(plytogo,)f(int)i
34305 (alpha,)e(int)h(beta\))p Fk(:)26 b(This)18 b(routine)h(is)f(called)104
34306 350 y(b)o(y)d(the)h(absolute)g(master,)e(instead)i(of)f(calling)f(the)i
34307 (t)o(ypical)f Fj(\013\014)i Fk(implemen)o(taiton.)i(It)d(allo)o(ws)e(a)
34308 h(master)g(pro)q(cess)104 392 y(to)i(do)g(m)o(ultiple)e(passes)k(of)e
34309 (the)h(tree)g(un)o(til)f(the)h(searc)o(h)g(is)g(completed,)f(or)g(the)h
34310 (alarm)d(has)j(b)q(een)g(signalled)f(via)104 433 y Fb(aphid)p
34311 217 433 V 14 w(stub)p 319 433 V 15 w(stopsearch)p Fk(.)f(If)e(the)g
34312 (searc)o(h)i(is)d(allo)o(w)o(ed)g(to)h(complete,)f(this)h(routine)g
34313 (returns)h(the)g(minim)o(ax)c(v)n(alue)104 475 y(of)i(the)i(tree)g
34314 (that)f(it)f(has)h(b)q(een)h(ask)o(ed)f(to)g(searc)o(h.)62
34315 549 y Fh(\017)21 b Fb(int)g(aphid)p 304 549 V 15 w(intnode)p
34316 473 549 V 14 w(premove\(int)e(depth,)i(char)g(*moveptr\))p
34317 Fk(:)15 b(Called)d(b)o(y)h(the)g(absolute)g(master,)e(this)i(rou-)104
34318 591 y(tine)h(stores)h(mo)o(v)o(es)e(made)f(b)q(efore)j(a)f(call)f(to)g
34319 Fb(aphid)p 938 591 V 15 w(rootsearch)f Fk(in)h(the)i(mo)o(v)o(e)d
34320 (list.)62 665 y Fh(\017)21 b Fb(void)g(aphid)p 326 665
34321 V 14 w(endsearch\(\))p Fk(:)15 b(The)e(absolute)f(master)g(should)g
34322 (call)f(this)i(routine)f(when)h(it)f(is)g(\014nished)h(searc)o(hing)f
34323 (a)104 707 y(tree)i(that)e(has)h(b)q(een)h(called)e(;)h(it)f(stops)h
34324 (the)g(sla)o(v)o(es)g(from)e(w)o(orking)g(on)i(the)g(lea)o(v)o(es)g(of)
34325 f(the)h(game)e(tree)j(and)e(prepares)104 748 y(the)i(sla)o(v)o(es)g(to)
34326 g(receiv)o(e)h(a)f(new)g(ro)q(ot)g(p)q(osition.)62 823
34327 y Fh(\017)21 b Fb(void)g(aphid)p 326 823 V 14 w(horizon\(int)f(depth\))
34328 p Fk(:)f(A)14 b(master)h(pro)q(cess)h(calls)f(this)g(routine)g(to)f
34329 (determine)h(if)f(it)h(has)g(reac)o(hed)104 864 y(its)f(arti\014cial)f
34330 (horizon.)62 939 y Fh(\017)21 b Fb(void)g(aphid)p 326
34331 939 V 14 w(eval)p 428 939 V 15 w(leaf\(int)f(alpha,)h(int)g(beta,)g
34332 (int)g(depth,)g(char)g(*p)p 1403 939 V 15 w(hash,)g(char)g(*p)p
34333 1702 939 V 15 w(key\))p Fk(:)104 980 y(This)10 b(routine)h(determines)g
34334 (a)f(score)i(v)n(alue)d(for)h(the)i(leaf,)e(based)h(on)f(the)h(b)q(est)
34335 h(information)7 b(a)o(v)n(ailable)h(to)j(the)g(master.)104
34336 1022 y Fb(p)p 129 1022 V 15 w(hash)i Fk(and)h Fb(p)p
34337 348 1022 V 15 w(key)g Fk(are)g(required)h(to)f(determine)f(if)g(this)h
34338 (no)q(de)h(has)f(b)q(een)h(previously)e(visited.)62 1096
34339 y Fh(\017)21 b Fb(void)g(aphid)p 326 1096 V 14 w(intnode)p
34340 494 1096 V 15 w(start\(int)f(depth,)g(char)h(*p)p 1032
34341 1096 V 15 w(hash,)g(char)g(*p)p 1331 1096 V 15 w(key\))p
34342 Fk(:)16 b(Called)11 b(b)o(y)g(a)h(master)f(pro)q(cess,)104
34343 1138 y(this)j(routine)g(initializes)e(b)q(ound)i(gathering)g
34344 (information)d(for)i(an)h(in)o(terior)f(no)q(de)h(within)f(the)i(game)d
34345 (tree.)19 b Fb(p)p 1850 1138 V 16 w(hash)104 1179 y Fk(and)13
34346 b Fb(p)p 209 1179 V 16 w(key)g Fk(are)h(required)h(to)f(determine)g(if)
34347 f(this)h(no)q(de)g(has)g(b)q(een)h(previously)f(visited.)62
34348 1254 y Fh(\017)21 b Fb(void)g(aphid)p 326 1254 V 14 w(intnode)p
34349 494 1254 V 15 w(move\(int)f(depth,)g(char)h(*moveptr\))p
34350 Fk(:)k(Called)18 b(b)o(y)g(a)g(master)g(pro)q(cess,)i(this)f(routine)
34351 104 1295 y(inserts)c(the)f(mo)o(v)o(e)e(p)q(oin)o(ted)i(to)f(b)o(y)h
34352 Fb(moveptr)e Fk(in)o(to)h(a)h(hidden)g(mo)o(v)o(e)e(list)h(that)h(will)
34353 e(ev)o(en)o(tually)h(b)q(e)i(sen)o(t)f(to)g(a)f(sla)o(v)o(e)104
34354 1337 y(in)g Fb(aphid)p 265 1337 V 15 w(eval)p 368 1337
34355 V 15 w(leaf)p Fk(.)62 1411 y Fh(\017)21 b Fb(void)g(aphid)p
34356 326 1411 V 14 w(intnode)p 494 1411 V 15 w(update\(int)e(depth,)i(int)g
34357 (value\))p Fk(:)27 b(Called)19 b(b)o(y)f(the)i(master)f(pro)q(cess,)j
34358 (this)d(routine)104 1453 y(tak)o(es)d(the)g(v)n(alue)f(returned)j(b)o
34359 (y)d(the)i(c)o(hild)e Fj(\013\014)j Fk(call)d(and)h(uses)h(it)e(to)h
34360 (up)q(date)g(the)h(hidden)e(\\b)q(ound")h(information)104
34361 1494 y(gathered)f(for)e(ev)o(ery)i(no)q(de)f(in)f(the)i(master's)e
34362 (tree.)62 1569 y Fh(\017)21 b Fb(void)g(aphid)p 326 1569
34363 V 14 w(intnode)p 494 1569 V 15 w(fixbound\(int)e(depth\))p
34364 Fk(:)f(In)d(the)g(case)h(of)e(a)g(cut-o\013,)h(this)g(routine)g(will)e
34365 (\014x)h(the)i(hidden)104 1610 y(b)q(ound)e(information)d(when)j(not)g
34366 (all)f(mo)o(v)o(es)f(ha)o(v)o(e)i(b)q(een)h(fully)d(explored.)62
34367 1685 y Fh(\017)21 b Fb(void)g(aphid)p 326 1685 V 14 w(intnode)p
34368 494 1685 V 15 w(end\(int)f(depth,)h(int)g(*score\))p
34369 Fk(;)12 b(This)j(routine)f(is)g(called)g(b)o(y)h(a)f(master)f(for)h(ev)
34370 o(ery)i(in-)104 1726 y(ternal)d(no)q(de)g(within)f(the)i(tree,)g(and)e
34371 (ensures)j(that)e(the)g(score)i(returned)f(is)f(consisten)o(t)h(with)e
34372 (previously)h(gathered)104 1768 y(information)e(ab)q(out)j(the)g(no)q
34373 (de.)0 1884 y Fv(A.7)56 b(In)n(terface)18 b(Calls)h(Used)f(b)n(y)h(Sla)
34374 n(v)n(es)g(Only)62 1952 y Fh(\017)i Fb(int)g(aphid)p
34375 304 1952 V 15 w(checkalarm\(\))p Fk(:)e(This)d(routine)h(c)o(hec)o(ks)g
34376 (to)f(see)h(if)f(a)f(searc)o(h)j(should)e(b)q(e)g(terminated.)24
34377 b(If)16 b(the)h(v)n(alue)104 1994 y(returned)f(is)e(equal)f(to)h(0,)g
34378 (the)h(searc)o(h)g(should)f(con)o(tin)o(ue.)19 b(If)13
34379 b(the)i(v)n(alue)f(returned)h(is)f(not)h(equal)e(to)h(0,)g(the)g
34380 (curren)o(t)104 2035 y(searc)o(h)h(has)f(b)q(een)h(in)o(terrupted,)g
34381 (and)e(w)o(e)h(should)g(terminate)f(it)h(in)f(a)h(\\nice")g(w)o(a)o(y)m
34382 (.)0 2151 y Fv(A.8)56 b(The)18 b(\\aphid.con\014g")h(File)e
34383 (Description)62 2220 y Fh(\017)k Fk(The)15 b(\014rst)g(line)f(con)o
34384 (tains)h(t)o(w)o(o)f(in)o(tegers:)21 b(The)15 b(n)o(um)o(b)q(er)f(of)g
34385 (lev)o(els)g(in)g(the)i(pro)q(cess)g(hierarc)o(h)o(y)m(,)e(and)h(the)g
34386 (minim)n(um)104 2261 y(depth)f(of)g(w)o(ork)f(that)h(can)g(b)q(e)h
34387 (handed)f(out)g(to)g(a)f(sla)o(v)o(e.)62 2336 y Fh(\017)21
34388 b Fk(The)d(next)g(lines)g(eac)o(h)g(con)o(tain)g(one)g(in)o(teger,)g
34389 (eac)o(h)g(in)o(teger)h(represen)o(ting)g(the)f(v)n(alue)g(of)f
34390 Fj(d)1607 2321 y Fa(0)1636 2336 y Fk(for)g(a)h(lev)o(el)f(in)g(the)104
34391 2377 y(pro)q(cess)e(hierarc)o(h)o(y)m(.)62 2452 y Fh(\017)21
34392 b Fk(The)14 b(last)g(lines)g(indicate)h(what)f(mac)o(hines)f(the)i(pro)
34393 q(cesses)i(should)c(b)q(e)i(spa)o(wned)g(on,)f(and)g(what)g(executable)
34394 h(is)f(to)104 2493 y(b)q(e)j(run,)g(one)g(line)f(p)q(er)i(pro)q(cess)g
34395 (to)f(b)q(e)g(spa)o(wned.)27 b(By)17 b(default,)f(APHID)h(will)e(spa)o
34396 (wn)i(an)f(executable)i(with)e(the)104 2535 y(same)d(program)f(name)h
34397 (as)h(the)h(original)d(program)g(unless)j(a)f Fb(#)f
34398 Fk(c)o(haracter)j(app)q(ears)e(on)g(the)h(line,)e(whic)o(h)h(indicates)
34399 104 2576 y(a)h(separation)h(b)q(et)o(w)o(een)h(the)f(mac)o(hine)e(name)
34400 g(and)i(the)g(program)e(name.)22 b(The)16 b(absolute)f(master)g(pro)q
34401 (cess)j(is)d(not)104 2618 y(listed)c(in)f(this)h(hierarc)o(h)o(y)m(.)17
34402 b(A)10 b(pro)q(cess)j(hierarc)o(h)o(y)e(can)g(b)q(e)g(sp)q(eci\014ed)i
34403 (using)d(tabs)h(to)g(mo)o(v)o(e)e(the)i(start)h(of)e(the)h(mac)o(hine)
34404 104 2659 y(name)h(o)o(v)o(er)i(in)g(the)g(\014le.)954
34408 userdict /end-hook known{end-hook}if