%!PS-Adobe-2.0 %%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software %%Title: journal.dvi %%Pages: 39 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: Times-Roman Times-Bold Times-Italic Courier %%DocumentPaperSizes: Letter %%EndComments %DVIPSCommandLine: dvips journal -t letter -o journal.ps %DVIPSParameters: dpi=600, comments removed %DVIPSSource: TeX output 1999.02.12:1313 %%BeginProcSet: tex.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /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{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} 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{ 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{ 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 a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginFont: Times-Roman % @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", % version = "0.6", % date = "22 June 1996", % filename = "8r.enc", % email = "kb@@mail.tug.org", % address = "135 Center Hill Rd. // Plymouth, MA 02360", % codetable = "ISO/ASCII", % checksum = "119 662 4424", % docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX." % @} % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndFont %%BeginProcSet: texps.pro TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} ifelse}forall Metrics /Metrics currentdict end def[2 index currentdict end definefont 3 -1 roll makefont /setfont load]cvx def}def /ObliqueSlant{dup sin S cos div neg}B /SlantFont{4 index mul add}def /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding exch def}def end %%EndProcSet %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 40258431 52099146 1000 600 600 (journal.dvi) @start /Fa 165[49 58 1[75 1[58 49 1[53 2[58 58 2[58 1[27 58 58 44 49 3[58 65[{ TeXBase1Encoding ReEncodeFont }15 79.999924 /Times-Roman rf /Fb 133[60 1[60 1[60 60 60 60 60 1[60 60 60 60 60 60 1[60 60 2[60 60 60 1[60 14[60 16[60 65[{ TeXBase1Encoding ReEncodeFont }21 100.000000 /Courier rf /Fc 1 51 df<01FC0007FF801C0FC03003E06001F06000F8F800F8FC00FC FC00FCFC007C78007C3000FC0000FC0000F80000F80001F00003E00003C0000780000F00 001E0000380000700000E00001C00C03800C0600180C00181800183FFFF87FFFF8FFFFF0 FFFFF016217CA01E>50 D E /Fd 1 101 df<000003E000003FC000003FC0000003C000 0003C00000078000000780000007800000078000000F0000000F0000000F0000000F0000 1F1E0000FF9E0001E0DE0003807E0007007C000F003C001E003C003E003C003C0078007C 0078007C0078007C007800F800F000F800F000F800F040F800F060F801E0C07801E0C078 03E0C03807E1801C1CF3000FF87F0007E03C001B247EA220>100 D E /Fe 1 101 df<0000001F000003FF000003FF0000003F0000003F0000003E000000 3E0000007E0000007E0000007C0000007C000000FC000000FC000000F8000000F8000001 F80007E1F8001FF9F0007C1DF000F80FF001F00FF003E007E007C007E00FC007E01F8007 E01F8007C03F0007C03F000FC07F000FC07E000F807E000F807E001F80FE001F80FC001F 00FC001F00FC003F02FC003F06FC003E06F8003E06F8007E0E7C00FE0C7C00FC0C7C01FC 1C3E07BE181F0E1E380FFC0FF003F003C0202F7DAD24>100 D E /Ff 2 13 df<0000003FE000000000000001FFFC0000000000000FFFFF0000000000003F E03FC00000000000FF000FE00000000001FC0007F00003C00007F80003F80003C0000FF0 0001FC000380001FE00001FE000380003FC00000FE000780007F800000FF00070000FF00 0000FF00070001FE0000007F800F0003FE0000007F800E0003FC0000007F800E0007F800 00007FC01E000FF80000003FC01C000FF80000003FC03C001FF00000003FC038001FF000 00003FC078003FE00000003FC070003FE00000003FC0F0007FE00000003FC0E0007FC000 00003FC1E0007FC00000003FC1C0007FC00000003FC3C000FFC00000003FC78000FF8000 00003FC78000FF800000003FCF0000FF800000003FDE0000FF800000003FDE0000FF0000 00003FFC0000FF000000003FF80000FF000000003FF00000FF000000003FF00000FF0000 00003FE00000FF000000003FC00000FF000000003FC00000FF000000003FC00000FF0000 00003FC00000FF000000003FC000007F00000000FFC000007F80000001FFE000003F8000 0003FFE000003F8000000F9FE00E001FC000001F1FE01E000FE000007C0FE01C0007F000 01F80FE03C0003F8000FE007F0780001FE00FF8003F8F800007FFFFE0001FFF000001FFF F00000FFC0000003FF0000003F000042357BB34A>11 D<000000000001FF000000000000 000FFFC00000000000007FFFF0000000000000FE01FC000000000003F000FE0000000000 0FC0007F00000000001F00003F00000000003C00003F80000000007800001F8000000000 F000001FC000000001E000001FC000000003C000001FC0000000078000001FC00000000F 0000001FE00000001E0000001FE00000001C0000001FE00000003C0000001FE000000078 0000003FE0000000700000003FC0000000F00000003FC0000001E00000003FC0000001C0 0000007FC0000003C00000007F80000003800000007F80000007800000007F8000000700 000000FF0000000700000000FF0000000F00000001FE0000000E00000001FC0000000E00 000003FC0000001E00000007F80000001C00000007F00000001C0000000FE00000003C00 07FF1FC000000038001FFFFF8000000038003FFFFE0000000038003803FE000000007800 3FFFFF0000000070003FFFFF8000000070000FFE1FC0000000700000000FE0000000F000 00000FE0000000E000000007F0000000E000000007F0000000E000000007F8000001E000 000003F8000001C000000003F8000001C000000003FC000001C000000003FC000003C000 000003FC0000038000000003FC0000038000000003FC0000038000000007FC0000078000 000007FC0000070000000007FC0000070000000007FC0000070000000007FC00000F0000 00000FFC00000E000000000FF800000E000000000FF800000E000000000FF800001E0000 00001FF800001E000000001FF000001E000000001FF000001C000000001FF000003C0000 00003FE000003C000000003FE000003E000000007FC000003E000000007FC000007E0000 0000FF8000007E00000000FF0000007E00000001FF0000007F00000001FE000000F70000 0003FC000000E780000007F8000000E38000000FF0000000E3C000000FE0000001E1E000 001FC0000001C1F000007F80000001C0F80000FF00000001C07E0001FC00000003C01F80 0FF000000003800FFFFFE0000000038003FFFF00000000038000FFFC0000000007800000 00000000000700000000000000000700000000000000000700000000000000000F000000 00000000000E00000000000000000E00000000000000000E00000000000000001E000000 00000000001C00000000000000001C00000000000000001C00000000000000003C000000 000000000038000000000000000038000000000000000038000000000000000078000000 0000000000700000000000000000700000000000000000700000000000000000F0000000 0000000000F00000000000000000436B7ED342>I E /Fg 134[60 60 1[60 66 40 47 53 2[60 66 100 33 2[33 66 60 40 53 66 53 66 60 12[80 66 86 1[73 93 1[113 80 2[47 93 2[80 86 1[80 86 11[60 60 60 60 60 2[30 40 45[{ TeXBase1Encoding ReEncodeFont } 40 119.999947 /Times-Bold rf /Fh 103[50 32[50 1[50 50 50 50 1[50 2[50 50 2[50 50 50 1[50 50 50 50 50 38[50 10[50 50 46[{ TeXBase1Encoding ReEncodeFont }20 83.333336 /Courier rf /Fi 134[42 42 60 42 42 23 32 28 42 42 42 42 65 23 42 23 23 42 42 28 37 42 37 42 37 3[28 1[28 3[78 60 1[51 46 55 1[46 60 60 74 51 60 1[28 60 60 2[60 55 55 60 7[42 42 42 42 42 42 42 42 42 42 1[21 28 21 2[28 28 2[69 34[46 2[{ TeXBase1Encoding ReEncodeFont }62 83.333336 /Times-Roman rf /Fj 8 57 df<00380000780001F8001FF800FEF800E0F80000F80000 F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000 F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000 F80000F80000F80000F80001FC00FFFFF8FFFFF815267BA521>49 D<00FF000003FFE0000E03F0001800F80030007C0060007E0078003F00FC003F00FE001F 80FE001F80FE001F80FE001F807C001F8000001F8000001F0000003F0000003E0000007E 0000007C000000F8000001F0000003E0000003C00000078000000E0000001C0000003800 000070018000E001800180018003000300060003000C0003001FFFFF003FFFFF007FFFFE 00FFFFFE00FFFFFE0019267DA521>I<00FF000003FFE0000F01F8001C007C0030007E00 3C003E007E003F007E003F007E003F007E003F003C003F0000003E0000007E0000007C00 0000F8000001F0000007E00001FF800001FF00000001E0000000F00000007C0000003E00 00003F0000001F0000001F8000001F8038001F807C001F80FE001F80FE001F80FE001F00 FC003F0078003E0070007C003800F8001F01F00007FFC00000FF000019277DA521>I<00 00380000003800000078000000F8000001F8000001F8000003F8000007F8000006F80000 0CF800001CF8000018F8000030F8000070F8000060F80000C0F80001C0F8000180F80003 00F8000700F8000E00F8000C00F8001C00F8003800F8003000F8006000F800E000F800FF FFFFE0FFFFFFE00000F8000000F8000000F8000000F8000000F8000000F8000000F80000 01FC00003FFFE0003FFFE01B277EA621>I<18000C001F007C001FFFF8001FFFF0001FFF E0001FFF800019FC00001800000018000000180000001800000018000000180000001800 0000187F000019FFE0001F81F0001E0078001C003C0018003E0000003E0000001F000000 1F0000001F8000001F8030001F807C001F80FC001F80FC001F80FC001F80FC001F00F000 1F0060003E0070003E0030007C001C00F8000F03E00003FFC00000FE000019277DA521> I<000FE000003FF80000F81C0001E0060003C01F0007803F000F003F001F003F001E003F 003E001E003E0000007C0000007C0000007C0400007C3FC000FCFFF000FDC07800FF003C 00FF003E00FE001E00FE001F00FE001F00FC001F80FC001F80FC001F80FC001F807C001F 807C001F807C001F807C001F803C001F003E001F001E001E001E003E000F003C00078078 0003C1F00001FFC000007F000019277DA521>I<300000003C0000003FFFFFE03FFFFFE0 3FFFFFC07FFFFF807FFFFF807000070060000E0060000C00C0001C00C0003800C0007000 0000E0000000C0000001C000000380000003800000070000000F0000000E0000001E0000 001E0000001E0000003E0000003C0000003C0000007C0000007C0000007C0000007C0000 00FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000780000 1B287DA621>I<007F000003FFE0000781F8000E007C001C001E0038001E0038000F0078 000F0078000F0078000F007C000F007E001E003F801E003FE03C001FF078000FFCF00007 FFC00003FF800000FFE00001FFF000079FFC000F07FE001E03FE003C00FF0078003F0078 001F80F0000F80F0000F80F0000780F0000780F0000780F00007007800070078000E003C 001C001E0038000F80F00003FFE000007F000019277DA521>I E /Fk 5 50 df<7FFFFFFFFFFFFFE0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF07FFFFFFFFFFF FFE03C04789A4D>0 D<600000000006F8000000000FFC000000001F7E000000003F3F00 0000007E1F80000000FC0FC0000001F807E0000003F003F0000007E001F800000FC000FC 00001F80007E00003F00003F00007E00001F8000FC00000FC001F8000007E003F0000003 F007E0000001F80FC0000000FC1F800000007E3F000000003F7E000000001FFC00000000 0FF80000000007F00000000007F0000000000FF8000000001FFC000000003F7E00000000 7E3F00000000FC1F80000001F80FC0000003F007E0000007E003F000000FC001F800001F 8000FC00003F00007E00007E00003F0000FC00001F8001F800000FC003F0000007E007E0 000003F00FC0000001F81F80000000FC3F000000007E7E000000003FFC000000001FF800 0000000F600000000006303072B04D>2 D<00000000000000E000000000000003F00000 000000000FF00000000000003FE0000000000000FF80000000000003FE0000000000000F F80000000000003FE0000000000000FF80000000000003FE0000000000000FF800000000 00003FE0000000000000FF80000000000003FE0000000000001FF80000000000007FE000 0000000001FF80000000000007FE0000000000001FF00000000000007FC0000000000001 FF00000000000007FC0000000000001FF00000000000007FC0000000000001FF00000000 000007FC0000000000001FF00000000000007FC0000000000000FF00000000000000FF00 0000000000007FC00000000000001FF000000000000007FC00000000000001FF00000000 0000007FC00000000000001FF000000000000007FC00000000000001FF00000000000000 7FC00000000000001FF000000000000007FC00000000000001FF800000000000007FE000 00000000001FF800000000000007FE00000000000000FF800000000000003FE000000000 00000FF800000000000003FE00000000000000FF800000000000003FE00000000000000F F800000000000003FE00000000000000FF800000000000003FE00000000000000FF00000 0000000003F000000000000000E000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000007FFF FFFFFFFFFFE0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF07FFFFFFFFFFFFFE03C4E78BE4D> 20 D<7000000000000000FC00000000000000FF000000000000007FC00000000000001F F000000000000007FC00000000000001FF000000000000007FC00000000000001FF00000 0000000007FC00000000000001FF000000000000007FC00000000000001FF00000000000 0007FC00000000000001FF800000000000007FE00000000000001FF800000000000007FE 00000000000000FF800000000000003FE00000000000000FF800000000000003FE000000 00000000FF800000000000003FE00000000000000FF800000000000003FE000000000000 00FF800000000000003FE00000000000000FF00000000000000FF00000000000003FE000 0000000000FF80000000000003FE0000000000000FF80000000000003FE0000000000000 FF80000000000003FE0000000000000FF80000000000003FE0000000000000FF80000000 000003FE0000000000001FF80000000000007FE0000000000001FF80000000000007FE00 00000000001FF00000000000007FC0000000000001FF00000000000007FC000000000000 1FF00000000000007FC0000000000001FF00000000000007FC0000000000001FF0000000 0000007FC0000000000000FF00000000000000FC00000000000000700000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000007FFFFFFFFFFFFFE0FFFFFFFFFFFFFFF0FF FFFFFFFFFFFFF07FFFFFFFFFFFFFE03C4E78BE4D>I<0001FF00000000003FC00000000F FFE000000003FFF80000003FFFFC0000000FFFFE0000007FFFFF0000003FE01F000001FF FFFF8000007E0007C00003F803FFE00001F80001E00007E0007FF00003F00000F0000780 003FF80007C0000070000F00001FFC000F80000038001E000007FE001F0000001C001C00 0003FF003E0000000C0038000001FF807C0000000E0038000001FFC0F800000006007000 0000FFE0F80000000700700000007FF1F00000000700600000003FF3E000000003006000 00001FFBC00000000300E00000001FFFC00000000380C00000000FFF800000000180C000 000007FF000000000180C000000003FF000000000180C000000001FF800000000180C000 000001FFC00000000180C000000000FFC00000000180C0000000007FE00000000180C000 0000007FF00000000180C000000000FFF80000000180E000000001FFFC00000003806000 000001EFFC00000003006000000003E7FE00000003007000000007C7FF00000007007000 00000F83FF8000000700300000000F81FFC000000E00380000001F00FFC000000E001800 00003E007FE000001C001C0000007C003FF000003C000E000000F8001FFC000078000700 0001F0000FFE0000F00007800007E00007FF0003F00003C0000FC00003FFE00FE00001F0 003F000000FFFFFFC000007C03FE0000007FFFFF0000003FFFF80000001FFFFE0000000F FFE000000003FFF800000001FE00000000007FC00000592D7BAB64>49 D E /Fl 26 123 df<00000C00001C0000380000700000E00001C00003C0000780000F00 000F00001E00003C00003C0000780000F80000F00001F00001E00003E00003E00007C000 07C00007C0000F80000F80000F80001F00001F00001F00003F00003F00003E00003E0000 7E00007E00007E00007E00007C00007C00007C0000FC0000FC0000FC0000FC0000FC0000 FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000 FC0000FC0000FC00007C00007C00007C00007E00007E00007E00007E00003E00003E0000 3F00003F00001F00001F00001F00000F80000F80000F800007C00007C00007C00003E000 03E00001E00001F00000F00000F800007800003C00003C00001E00000F00000F00000780 0003C00001C00000E000007000003800001C00000C166476CA26>40 DI<00000000C00000000000000001E00000 000000000001E00000000000000001E00000000000000001E00000000000000001E00000 000000000001E00000000000000001E00000000000000001E00000000000000001E00000 000000000001E00000000000000001E00000000000000001E00000000000000001E00000 000000000001E00000000000000001E00000000000000001E00000000000000001E00000 000000000001E00000000000000001E00000000000000001E00000000000000001E00000 000000000001E00000000000000001E00000000000000001E00000000000000001E00000 000000000001E00000000000000001E00000000000000001E00000000000000001E00000 00007FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF807FFFFFFFFFFFFF FF0000000001E00000000000000001E00000000000000001E00000000000000001E00000 000000000001E00000000000000001E00000000000000001E00000000000000001E00000 000000000001E00000000000000001E00000000000000001E00000000000000001E00000 000000000001E00000000000000001E00000000000000001E00000000000000001E00000 000000000001E00000000000000001E00000000000000001E00000000000000001E00000 000000000001E00000000000000001E00000000000000001E00000000000000001E00000 000000000001E00000000000000001E00000000000000001E00000000000000001E00000 000000000001E00000000000000000C00000000041407BB84C>43 D<0000FF00000007FFE000001F81F800003E007C0000FC003F0001F8001F8001F0000F80 03E00007C007C00003E007C00003E00FC00003F00F800001F01F800001F81F800001F83F 800001FC3F800001FC3F800001FC3F000000FC7F000000FE7F000000FE7F000000FE7F00 0000FE7F000000FEFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF0000 00FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000 FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FF FF000000FFFF000000FF7F000000FE7F000000FE7F000000FE7F000000FE7F000000FE7F 800001FE3F800001FC3F800001FC3F800001FC1F800001F81F800001F80FC00003F00FC0 0003F00FC00003F007E00007E003E00007C003F0000FC001F8001F8000FC003F00003E00 7C00001F81F8000007FFE0000000FF000028447CC131>48 D<000030000000F0000001F0 000003F000001FF00000FFF000FFFFF000FFE7F000FF07F0000007F0000007F0000007F0 000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0 000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0 000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0 000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0 000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0 000007F0000007F0000007F0000007F000000FF800001FFC007FFFFFFF7FFFFFFF7FFFFF FF204278C131>I<0000000380000000000380000000000780000000000F80000000000F 80000000001F80000000003F80000000003F80000000007F8000000000FF8000000000FF 8000000001FF8000000003BF80000000033F80000000073F80000000063F800000000C3F 800000001C3F80000000183F80000000303F80000000703F80000000603F80000000C03F 80000001C03F80000001803F80000003003F80000007003F80000006003F8000000C003F 8000001C003F80000018003F80000030003F80000070003F80000060003F800000E0003F 800001C0003F80000180003F80000380003F80000300003F80000600003F80000E00003F 80000C00003F80001800003F80003800003F80003000003F80006000003F8000E000003F 8000FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC00000003F80000000003F80000000003F 80000000003F80000000003F80000000003F80000000003F80000000003F80000000003F 80000000003F80000000003F80000000003F80000000003F8000000000FFE00000007FFF FFC000007FFFFFC000007FFFFFC02A437DC231>52 D<06000000C007C00007C007FC007F 8007FFFFFF0007FFFFFE0007FFFFFC0007FFFFF80007FFFFE00007FFFF8000063FFC0000 060000000006000000000600000000060000000006000000000600000000060000000006 000000000600000000060000000006000000000600000000060000000006000000000600 FF00000607FFC000061F01F000063800FC0006F0007E0007C0003F000780001F80078000 1FC00700000FC00600000FE000000007F000000007F000000007F000000007F800000003 F800000003F800000003FC00000003FC00000003FC00000003FC00000003FC3E000003FC 7F000003FCFF800003FCFF800003FCFF800003FCFF800003FCFF800003F8FF000007F8FE 000007F860000007F060000007F07000000FF03000000FE03800001FC01C00001FC01E00 003F800F00007F00078000FE0003C001FC0001F807F000007FFFE000001FFF00000007F8 000026447BC131>I<7FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF80 7FFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000007FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF80 7FFFFFFFFFFFFFFF0041187BA44C>61 D<0007FC000000003FFF80000000F80FE0000003 C003F00000070001F800000E0000FC00000FC0007E00001FE0007F00001FF0003F80001F F0003F80001FF0003F80001FF0001FC0001FF0001FC0000FE0001FC0000380001FC00000 00001FC0000000001FC0000000001FC0000000001FC00000000FFFC0000001FFFFC00000 0FFE1FC000003FC01FC00000FF001FC00003FC001FC00007F8001FC0000FF0001FC0001F E0001FC0003FC0001FC0007FC0001FC0007F80001FC0007F80001FC060FF00001FC060FF 00001FC060FF00001FC060FF00003FC060FF00003FC060FF00003FC060FF80007FC0607F 8000EFC0607FC000C7E0C03FC001C7E0C01FE00783F1C007F81E03FF8001FFFC01FF0000 1FE0007C002B2E7CAC31>97 D<00007F80000003FFF000000FC07C00003F000F0000FC00 038001F80001C003F8000FC007F0001FE007E0003FE00FE0003FE01FC0003FE01FC0003F E03F80003FE03F80001FC07F800007007F800000007F800000007F00000000FF00000000 FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF 00000000FF00000000FF000000007F000000007F800000007F800000003F800000003F80 0000303FC00000301FC00000700FE00000600FE00000E007F00000C003F80001C001F800 038000FC000700003F001E00001FC078000007FFF0000000FF8000242E7DAC2B>99 D<000000007F000000003FFF000000003FFF000000003FFF0000000001FF0000000000FF 00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F 00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F 00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F 00000000007F0000007F807F000003FFF07F00000FC07C7F00003F000E7F00007E00077F 0000FC0003FF0003F80001FF0007F00000FF0007E00000FF000FE000007F001FC000007F 001FC000007F003F8000007F003F8000007F007F8000007F007F8000007F007F0000007F 00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F 00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F007F0000007F 007F8000007F007F8000007F003F8000007F003F8000007F001FC000007F001FC000007F 000FC00000FF000FE00000FF0007F00001FF0003F00003FF0001F800077F8000FC000E7F C0003F001C7FFE000FC0F87FFE0003FFE07FFE00007F007F002F467DC436>I<0001FE00 000007FFC000001F03F000007E00FC0000FC007E0001F8003F0003F0003F0007E0001F80 0FE0001FC00FC0000FC01FC0000FC03F80000FE03F800007E03F800007E07F800007F07F 000007F07F000007F0FF000007F0FF000007F0FF000007F0FFFFFFFFF0FFFFFFFFF0FF00 000000FF00000000FF00000000FF00000000FF00000000FF000000007F000000007F0000 00007F800000007F800000003F800000003F800000301FC00000301FC00000700FC00000 600FE00000E007F00000C003F00001C001F800038000FC000700003E001E00001F80F800 0003FFE0000000FF0000242E7DAC2B>I<01FC00000000FFFC00000000FFFC00000000FF FC0000000007FC0000000003FC0000000001FC0000000001FC0000000001FC0000000001 FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 FC0000000001FC0000000001FC0000000001FC0000000001FC01FE000001FC07FFC00001 FC1E07F00001FC3801F80001FC7001FC0001FCE000FC0001FDC000FE0001FD8000FE0001 FF80007F0001FF00007F0001FF00007F0001FE00007F0001FE00007F0001FE00007F0001 FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001 FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001 FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001 FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001 FC00007F0001FC00007F0003FE0000FF80FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFE2F 457DC436>104 D<01E00007F80007F8000FFC000FFC000FFC000FFC0007F80007F80001 E00000000000000000000000000000000000000000000000000000000000000000000000 000000000001FC00FFFC00FFFC00FFFC0007FC0003FC0001FC0001FC0001FC0001FC0001 FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001 FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001 FC0001FC0001FC0001FC0001FC0001FC0003FE00FFFFF8FFFFF8FFFFF815437DC21C>I< 01FC00FFFC00FFFC00FFFC0007FC0003FC0001FC0001FC0001FC0001FC0001FC0001FC00 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 01FC0001FC0001FC0001FC0001FC0003FE00FFFFF8FFFFF8FFFFF815457DC41C>108 D<01FC00FF00001FE00000FFFC07FFE000FFFC0000FFFC0F03F801E07F0000FFFC3C01FC 07803F800007FC7000FE0E001FC00003FCE0007E1C000FC00001FDC0007F38000FE00001 FD80007F30000FE00001FF80003FF00007F00001FF00003FE00007F00001FF00003FE000 07F00001FE00003FC00007F00001FE00003FC00007F00001FE00003FC00007F00001FC00 003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F0 0001FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F 800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001 FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F8000 07F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00 003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F0 0001FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F 800007F00003FE00007FC0000FF800FFFFF81FFFFF03FFFFE0FFFFF81FFFFF03FFFFE0FF FFF81FFFFF03FFFFE04B2C7DAB52>I<01FC01FE0000FFFC07FFC000FFFC1E07F000FFFC 3801F80007FC7001FC0003FCE000FC0001FDC000FE0001FD8000FE0001FF80007F0001FF 00007F0001FF00007F0001FE00007F0001FE00007F0001FE00007F0001FC00007F0001FC 00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC 00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC 00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC 00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC 00007F0003FE0000FF80FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFE2F2C7DAB36>I<00 007F8000000003FFF00000000FC0FC0000003E001F0000007C000F800000F80007C00001 F00003E00003E00001F00007C00000F8000FC00000FC000FC00000FC001F8000007E003F 8000007F003F8000007F003F0000003F007F0000003F807F0000003F807F0000003F807F 0000003F80FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF 0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC07F0000003F807F 0000003F807F8000007F803F8000007F003F8000007F001F8000007E001FC00000FE000F C00000FC000FE00001FC0007E00001F80003F00003F00001F80007E00000FC000FC00000 3E001F0000001FC0FE00000007FFF8000000007F8000002A2E7DAC31>I<01FC03FC0000 FFFC0FFF8000FFFC3C07E000FFFC7001F80007FDE000FE0001FD80007F0001FF80003F80 01FF00001FC001FE00001FE001FC00000FE001FC00000FF001FC000007F001FC000007F8 01FC000003F801FC000003FC01FC000003FC01FC000003FC01FC000001FE01FC000001FE 01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE 01FC000001FE01FC000001FE01FC000001FE01FC000003FC01FC000003FC01FC000003FC 01FC000007F801FC000007F801FC000007F001FC00000FF001FE00000FE001FE00001FC0 01FF00003FC001FF00003F8001FF80007E0001FDC000FC0001FCF003F80001FC3C0FE000 01FC1FFF800001FC03FC000001FC0000000001FC0000000001FC0000000001FC00000000 01FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000000 01FC0000000001FC0000000001FC0000000001FC0000000003FE00000000FFFFF8000000 FFFFF8000000FFFFF80000002F3F7DAB36>I<00007F8003000003FFE00700000FE07807 00003F801C0F00007E000E0F0000FC00071F0003F800039F0007F80001BF0007F00001FF 000FE00000FF001FE00000FF001FC00000FF003FC000007F003FC000007F007F8000007F 007F8000007F007F8000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F 00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F 00FF0000007F007F8000007F007F8000007F007F8000007F003F8000007F003FC000007F 001FC000007F001FE00000FF000FE00000FF000FF00001FF0007F00001FF0003F80003FF 0001FC00077F0000FE000E7F00003F001C7F00000FC0F87F000003FFE07F0000007F007F 00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F 00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F 00000000007F00000000007F0000000000FF800000003FFFFE0000003FFFFE0000003FFF FE2F3F7DAB33>I<03F803F0FFF81FFCFFF83C3EFFF8707F07F8E0FF03F9C0FF01F980FF 01FB80FF01FB007E01FB003C01FF000001FE000001FE000001FE000001FE000001FC0000 01FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0000 01FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0000 01FC000001FC000001FC000001FC000001FC000001FC000003FF0000FFFFFE00FFFFFE00 FFFFFE00202C7DAB26>I<003FE01801FFFC3807E01F780F0003F81E0001F83C0000F87C 00007878000078F8000038F8000038F8000018F8000018FC000018FC000018FE000018FF 8000007FC000007FFC00003FFFE0001FFFFC000FFFFF0007FFFFC003FFFFE000FFFFF000 1FFFF80000FFF800000FFC000003FCC00001FEC00000FEC000007EE000007EE000003EE0 00003EF000003EF000003EF000003EF800003CFC00007CFC000078FE0000F8FF0001F0F3 8003E0F1F00F80E07FFE00C00FF0001F2E7DAC26>I<0006000000060000000600000006 000000060000000E0000000E0000000E0000000E0000001E0000001E0000001E0000003E 0000007E0000007E000000FE000001FE000007FE00001FFFFFF0FFFFFFF0FFFFFFF000FE 000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE 000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE 000000FE000000FE000000FE000000FE000C00FE000C00FE000C00FE000C00FE000C00FE 000C00FE000C00FE000C00FE000C00FE000C007E001C007F0018007F0018003F0038001F 8030001FC0700007E0E00001FFC000007F001E3E7EBC26>I<01FC00007F00FFFC003FFF 00FFFC003FFF00FFFC003FFF0007FC0001FF0003FC0000FF0001FC00007F0001FC00007F 0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F 0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F 0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F 0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F 0001FC0000FF0001FC0000FF0001FC0000FF0001FC0001FF0001FC0001FF0000FC0001FF 0000FE0003FF00007E00077F80007F000E7FC0003F001C7FFE000FC0787FFE0003FFF07F FE00007F807F002F2D7DAB36>II<3FFFFF FFE03FFFFFFFE03FC0003FE03F00003FC03C00007F80380000FF00380000FF00300001FE 00700003FC00700003FC00700007F80060000FF00060000FF00060001FE00060003FC000 60003FC00000007F80000000FF00000001FF00000001FE00000003FC00000007FC000000 07F80000000FF00000001FF00000001FE00060003FC00060007F800060007F80006000FF 0000C001FE0000C001FE0000C003FC0000C007F80000C007F80001C00FF00001C01FE000 03C01FE00003C03FC00007807F80001F80FF8000FF80FFFFFFFF80FFFFFFFF80232B7DAA 2B>122 D E /Fm 75[33 29[50 27[39 44 44 66 44 50 28 39 39 1[50 50 50 72 28 44 1[28 50 50 28 44 50 44 50 50 7[55 1[83 61 72 55 50 61 1[61 72 66 83 55 1[44 33 72 72 61 61 72 66 61 61 6[33 50 1[50 1[50 50 50 5[33 25 4[33 8[33 27[50 2[{ TeXBase1Encoding ReEncodeFont }59 100.000000 /Times-Italic rf /Fn 8 57 df<000C00003C00007C0003FC00FFFC00FC7C00007C00 007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00 007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00 007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000FE007FFFFE 7FFFFE172C7AAB23>49 D<007F800001FFF0000780FC000E003F001C001F8038000FC070 000FC0600007E0F00007E0FC0007F0FE0007F0FE0003F0FE0003F0FE0003F07C0007F000 0007F0000007F0000007E000000FE000000FC000001FC000001F8000003F0000007E0000 007C000000F8000001F0000003E0000007C000000F8000001E0000003C00000078000000 F0003000E0003001C0003003800060070000600E0000E01FFFFFE03FFFFFE07FFFFFC0FF FFFFC0FFFFFFC01C2C7DAB23>I<003FC00001FFF00007C0FC000E007E001C003F001C00 1F803F001FC03F001FC03F800FC03F000FC03F000FC00C001FC000001FC000001F800000 1F8000003F0000003E0000007C000000F8000003F00000FFC00000FFF0000000FC000000 3F0000001F8000001FC000000FC000000FE000000FE0000007F0000007F0380007F07C00 07F0FE0007F0FE0007F0FE0007F0FE000FE0F8000FE060000FC070001FC038001F801E00 3F000780FC0001FFF000007FC0001C2D7DAB23>I<00000E0000000E0000001E0000003E 0000003E0000007E000000FE000000FE000001BE000003BE0000033E0000063E00000E3E 00000C3E0000183E0000383E0000303E0000603E0000E03E0000C03E0001803E0003803E 0003003E0006003E000E003E000C003E0018003E0038003E0030003E0060003E00E0003E 00FFFFFFFCFFFFFFFC00003E0000003E0000003E0000003E0000003E0000003E0000003E 0000003E0000003E0000007F00001FFFFC001FFFFC1E2D7EAC23>I<0C0001800FC01F80 0FFFFF000FFFFE000FFFFC000FFFF0000FFFC0000C7E00000C0000000C0000000C000000 0C0000000C0000000C0000000C0000000C0000000C1FC0000C7FF8000DE07C000F801F00 0F001F800E000F800C0007C0000007E0000007E0000003E0000003F0000003F0000003F0 000003F0780003F0FC0003F0FC0003F0FC0003F0FC0003F0F80007E0E00007E0600007C0 70000FC038000F801C001F000E003E000780F80001FFE000007F80001C2D7DAB23>I<00 03F800000FFE00003E078000F8018001F007C003E00FC007C00FC00F800FC00F800FC01F 0007801F0000003E0000003E0000007E0000007E0000007C0000007C0FC000FC3FF000FC F07C00FDC01E00FF800F00FF000F80FF0007C0FE0007E0FE0007E0FE0003E0FC0003F0FC 0003F0FC0003F0FC0003F07C0003F07C0003F07C0003F07E0003F07E0003F03E0003E03E 0007E01E0007E01F0007C00F000F8007801F0003C03E0001E07C00007FF000001FC0001C 2D7DAB23>I<300000003C0000003FFFFFF83FFFFFF83FFFFFF07FFFFFF07FFFFFE07000 01C06000018060000380C0000700C0000E00C0000C0000001C0000003800000030000000 70000000E0000001C0000001C00000038000000380000007000000070000000F0000000E 0000001E0000001E0000003E0000003E0000003E0000003C0000007C0000007C0000007C 0000007C000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC 000000FC0000007800001D2E7CAC23>I<001FC00000FFF00003E07C0007801E000F000F 001E0007801E0007803C0003C03C0003C03C0003C03C0003C03E0003C03E0007C03F0007 801FC00F801FE00F001FF81E000FFC3C0007FFF80003FFE00000FFE000003FF80000FFFC 0003C7FF000783FF801F00FFC01E003FC03C001FE07C0007E0780003F0F80003F0F00001 F0F00000F0F00000F0F00000F0F00000F0F80000E0780001E07C0001C03C0003C01E0007 800F800F0007E03C0001FFF000003FC0001C2D7DAB23>I E /Fo 135[72 104 72 80 48 56 64 1[80 72 80 120 40 80 1[40 80 72 48 64 80 64 1[72 9[143 2[96 80 104 1[88 2[135 3[56 112 112 1[96 104 104 96 104 10[72 72 72 72 72 72 9[48 39[{ TeXBase1Encoding ReEncodeFont }42 144.000000 /Times-Bold rf /Fp 5 102 df<007800FE01FE01FE01FE03FE03FC03FC03FC07F807F807F807F007F0 0FE00FE00FE00FC01FC01F801F801F803F003F003F003E007E007C007C007C00F800F800 F800F0000F227EA413>48 D<600000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000FFFF80FFFF807FFF80114374 B11F>98 D<00018000038000038000038000038000038000038000038000038000038000 038000038000038000038000038000038000038000038000038000038000038000038000 038000038000038000038000038000038000038000038000038000038000038000038000 038000038000038000038000038000038000038000038000038000038000038000038000 038000038000038000038000038000038000038000038000038000038000038000038000 0380000380000380000380000380000380FFFF80FFFF80FFFF8011437FB11F>I<7FFF80 FFFF80FFFF80E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000600000114374B11F>II E /Fq 12 119 df<000003FC00000000001FFF 0000000000FE07C000000003F001F000000007E000F80000001FC000FC000E003F80007C 000E007F00003E000C00FE00003F000C01FC00003F001C03F800001F001807F800001F80 1807F000001F80380FF000001F80301FE000001F80701FE000001FC0603FC000001FC060 3FC000001FC0E03FC000000FC0C07F8000000FC1C07F8000000FC1807F8000000FC380FF 8000000FC700FF0000000FC600FF0000000FCE00FF0000000FDC00FF0000001FD800FE00 00001FF800FE0000001FF000FE0000001FE000FE0000001FC000FE0000001FC000FE0000 001FC000FE0000001FC000FE0000001FC0007E0000003FC0007E0000007FC0003F000000 EFC0383F000003CFC0381F80000F07C0300FC0001C07C07007E000F803E0E001F00FE001 E1C0007FFF0000FF80001FF000003E00372D7CAB3E>11 D<0000000003F800000000001F FF00000000007C0F8000000001E003E0000000078001F00000000E0001F00000001C0000 F8000000380000F8000000700000FC000000E00000FC000001C00000FC000001800000FC 000003800000FC000007000000FC000006000000FC00000E000001FC00000C000001FC00 001C000001F8000018000001F8000038000003F0000030000003F0000070000007E00000 60000007E000006000000FC00000E000000F800000C000001F000000C000003E000001C0 07FE7C000001801FFFF8000001801807E0000001801FFFF80000038007FCFC0000030000 007E0000030000007E0000030000003F0000070000003F0000060000003F800006000000 1F8000060000001FC0000E0000001FC0000C0000001FC0000C0000001FC0000C0000003F C0001C0000003FC000180000003FC000180000003FC000180000003FC000380000007FC0 00300000007F8000300000007F8000300000007F800070000000FF800070000000FF0000 70000000FF000070000001FE0000F0000001FE0000F0000001FC0000F0000003FC0000F0 000003F80001F0000007F80001B8000007F000019800000FE000019800001FC000039C00 003F8000030E00007F000003060000FE000003078001F800000701C003F000000600F01F C0000006003FFF00000006000FF00000000E0000000000000C0000000000000C00000000 00000C0000000000001C0000000000001800000000000018000000000000180000000000 003800000000000030000000000000300000000000003000000000000070000000000000 600000000000006000000000000060000000000000E0000000000000E000000000000036 597DC537>I<1E007F807F80FFC0FFC0FFC0FFC07F807F801E000A0A78891B>58 D<00000000000001C000000000000007E00000000000001FE00000000000007FC0000000 000001FF00000000000007FC0000000000001FF00000000000007FC0000000000001FF00 00000000000FFC0000000000003FF0000000000000FFC0000000000003FF000000000000 0FF80000000000003FE0000000000000FF80000000000003FE0000000000001FF8000000 0000007FE0000000000001FF80000000000007FE0000000000001FF00000000000007FC0 000000000001FF00000000000007FC0000000000001FF00000000000007FC00000000000 00FF00000000000000FF000000000000007FC00000000000001FF000000000000007FC00 000000000001FF000000000000007FC00000000000001FF000000000000007FE00000000 000001FF800000000000007FE00000000000001FF800000000000003FE00000000000000 FF800000000000003FE00000000000000FF800000000000003FF00000000000000FFC000 00000000003FF00000000000000FFC00000000000001FF000000000000007FC000000000 00001FF000000000000007FC00000000000001FF000000000000007FC00000000000001F E000000000000007E000000000000001C03B3878B44C>60 D<0000000018000000003C00 0000007C000000007C000000007800000000F800000000F800000000F000000001F00000 0001F000000001E000000003E000000003E000000003C000000007C000000007C0000000 07800000000F800000000F800000001F000000001F000000001E000000003E000000003E 000000003C000000007C000000007C000000007800000000F800000000F800000000F000 000001F000000001F000000003E000000003E000000003C000000007C000000007C00000 0007800000000F800000000F800000000F000000001F000000001F000000001E00000000 3E000000003E000000003C000000007C000000007C00000000F800000000F800000000F0 00000001F000000001F000000001E000000003E000000003E000000003C000000007C000 000007C000000007800000000F800000000F800000000F000000001F000000001F000000 003E000000003E000000003C000000007C000000007C000000007800000000F800000000 F800000000F000000001F000000001F000000001E000000003E000000003E000000007C0 00000007C000000007800000000F800000000F800000000F000000001F000000001F0000 00001E000000003E000000003E000000003C000000007C000000007C0000000078000000 00F800000000F800000000F000000000600000000026647BCA31>I<7000000000000000 FC00000000000000FF000000000000007FC00000000000001FF000000000000007FC0000 0000000001FF000000000000007FC00000000000001FF000000000000007FE0000000000 0001FF800000000000007FE00000000000001FF800000000000003FE00000000000000FF 800000000000003FE00000000000000FF800000000000003FF00000000000000FFC00000 000000003FF00000000000000FFC00000000000001FF000000000000007FC00000000000 001FF000000000000007FC00000000000001FF000000000000007FC00000000000001FE0 0000000000001FE00000000000007FC0000000000001FF00000000000007FC0000000000 001FF00000000000007FC0000000000001FF0000000000000FFC0000000000003FF00000 00000000FFC0000000000003FF0000000000000FF80000000000003FE0000000000000FF 80000000000003FE0000000000001FF80000000000007FE0000000000001FF8000000000 0007FE0000000000001FF00000000000007FC0000000000001FF00000000000007FC0000 000000001FF00000000000007FC0000000000000FF00000000000000FC00000000000000 70000000000000003B3878B44C>I<000FE0000007FFE0000007FFE0000007FFE0000000 1FC00000000FC00000001FC00000001FC00000001F800000001F800000001F800000003F 800000003F000000003F000000003F000000007F000000007E000000007E000000007E00 000000FE00000000FC00000000FC00000000FC00000001FC00000001F800000001F80FC0 0001F83FF00003F8F07C0003F3C03E0003F7001F0003FE001F8007FC000F8007F8000FC0 07F0000FC007F0000FE00FE0000FE00FC0000FE00FC0000FE00FC0000FE01FC0000FE01F 80000FE01F80000FE01F80001FE03F80001FE03F00001FE03F00001FE03F00003FE07F00 003FC07E00003FC07E00003FC07E00007FC07E00007F80FC00007F80FC00007F00FC0000 FF00FC0000FF00FC0001FE007C0001FC007C0001FC007C0003F8007C0007F0007C0007E0 003C000FE0003E001FC0001E003F80001F007E00000F00FC000007C1F0000001FFC00000 007F00000023467CC429>98 D<0000000001FC00000000FFFC00000000FFFC00000000FF FC0000000003F80000000001F80000000003F80000000003F80000000003F00000000003 F00000000007F00000000007F00000000007E00000000007E0000000000FE0000000000F E0000000000FC0000000000FC0000000001FC0000000001FC0000000001F80000000001F 80000000003F80000000003F80000000003F0000000FC03F0000007FF07F000001F8387F 000007E01C7E00000FC00E7E00003F0007FE00007F0003FE0000FE0003FC0001FC0003FC 0001F80001FC0003F80001FC0007F00001F8000FF00001F8000FE00003F8001FE00003F8 001FE00003F0003FC00003F0003FC00007F0007FC00007F0007F800007E0007F800007E0 007F80000FE000FF80000FE000FF00000FC000FF00000FC000FF00001FC000FF00001FC0 00FE00001F8000FE00001F8000FE00003F8030FE00003F8070FE00003F0060FE00003F00 60FE00007F00E0FE00007F00C0FE0000FE00C07E0001FE00C07E0003FE01C03E00073E01 803F000E3E03801F001C3E03000F80381F070007C0F00F0E0001FFC007FC00007F0001F0 002E467CC433>100 D<0000007E0000000003FF800000000FC1E0E000001F0073F00000 7E0033F00000FC003FF00001F8001FF00003F8001FE00007F0000FE0000FE0000FE0000F E0000FE0001FC0000FC0003FC0000FC0003F80001FC0007F80001FC0007F00001F8000FF 00001F8000FF00003F8001FF00003F8001FE00003F0001FE00003F0001FE00007F0003FE 00007F0003FC00007E0003FC00007E0003FC0000FE0003FC0000FE0003F80000FC0003F8 0000FC0003F80001FC0003F80001FC0003F80001F80003F80001F80003F80003F80003F8 0007F80001F80007F00001F8000FF00000F8001FF00000FC003FF000007C0077E000003E 01E7E000001F078FE0000007FE0FE0000001F80FC0000000000FC0000000001FC0000000 001FC0000000001F80000000001F80000000003F80000000003F80000000003F00000000 003F00001C00007E00007F0000FE0000FF0000FC0000FF0001F80000FF0003F80000FE00 07F00000FE000FC00000F8001F8000007C00FE0000001FFFF800000003FFC00000002C40 7EAB2F>103 D<0000FE000000007FFE000000007FFE000000007FFE0000000001FC0000 000000FC0000000001FC0000000001FC0000000001F80000000001F80000000003F80000 000003F80000000003F00000000003F00000000007F00000000007F00000000007E00000 000007E0000000000FE0000000000FE0000000000FC0000000000FC0000000001FC00000 00001FC0000000001F80000000001F80003F00003F8000FFC0003F8003C0E0003F000703 E0003F001E0FE0007F00380FE0007F00701FE0007E00E01FE0007E01C01FE000FE01801F C000FE0380070000FC0700000000FC0E00000001FC1C00000001FC3800000001F8700000 0001F8E000000003FBC000000003FF0000000003FF8000000003FFF800000007F1FE0000 0007F03F80000007E00FE0000007E007F000000FE003F000000FE003F800000FC001F800 000FC001F800001FC001F801C01FC001F801801F8001F801801F8001F801803F8001F803 803F8001F803003F0001F003003F0001F007007F0001F006007F0001F00E007E0001F00C 007E0001F01C00FE0000F03800FE0000787000FC00003FE0003800000F80002B467BC433 >107 D<00F80003FC000003FE001FFF0000071F007C0FC0000E0F80E007E0000C07C3C0 03E0001C07C70003F0001807CE0001F0003807DC0001F8003007D80001F800300FF80001 F800700FF00001F800600FE00001F800600FE00001F800E00FC00003F800C01FC00003F0 00C01F800003F000001F800003F000001F800007F000003F800007E000003F000007E000 003F000007E000003F00000FE000007F00000FC000007E00000FC000007E00001FC00000 7E00001F800000FE00001F800000FC00003F800000FC00003F000000FC00003F007001FC 00007F006001F800007E006001F80000FE006001F80000FC00E003F80000FC00C003F000 00FC01C003F00000F8018003F00000F8038007F00000F8030007E00000F8070007E00000 F80E0007E00000781C000FE000007C38000FC000001FF0000380000007C000342D7DAB3A >110 D<003E00000E0000FF80003F8003C3C0007F800703E0007F800601F0007F800E01 F0007F801C01F0007F801803F0003F803803F0001F803003F0000F803003F0000F807007 F00007806007E00007806007E0000780E00FE0000700C00FC0000300001FC0000300001F 80000700001F80000600003F80000600003F00000600003F00000E00007F00000C00007E 00000C00007E00000C00007E00001C0000FE0000180000FC0000180000FC0000380000FC 0000300000FC0000700001F80000600001F80000E00001F80000C00001F80001C00000F8 0001800000F80003800000FC0007000000FC00060000007C000E0000007E001C0000003F 00780000000F81E000000007FFC000000000FE000000292D7DAB2F>118 D E /Fr 134[45 45 66 45 45 25 35 30 45 45 45 45 71 25 45 1[25 45 45 30 40 45 40 45 40 12[56 3[51 66 1[81 3[30 66 3[66 2[66 18[23 30 23 41[51 2[{ TeXBase1Encoding ReEncodeFont }36 91.249977 /Times-Roman rf /Fs 139[30 35 40 14[40 51 45 31[66 65[{ TeXBase1Encoding ReEncodeFont }7 91.249977 /Times-Bold rf /Ft 134[50 3[55 33 39 44 2[50 55 83 28 55 1[28 55 50 33 44 55 44 55 50 12[66 55 72 1[61 2[94 66 1[50 1[78 5[66 7[33 58[{ TeXBase1Encoding ReEncodeFont }29 100.000000 /Times-Bold rf /Fu 75[33 11[33 17[50 1[44 44 24[44 50 50 72 50 50 28 39 33 50 50 50 50 78 28 50 28 28 50 50 33 44 50 44 50 44 3[33 1[33 61 72 1[94 72 72 61 55 66 1[55 72 72 89 61 72 39 33 72 72 55 61 72 66 66 72 1[44 1[56 1[28 28 50 50 50 50 50 50 50 50 50 50 28 25 33 25 1[50 33 33 33 1[83 33[55 55 2[{ TeXBase1Encoding ReEncodeFont }82 100.000000 /Times-Roman rf /Fv 134[60 2[60 60 33 47 40 1[60 60 60 93 33 60 1[33 60 60 40 53 60 53 60 53 11[86 73 66 5[106 2[47 1[86 86 66 73 86 80 80 86 7[60 2[60 3[60 60 2[30 1[30 44[{ TeXBase1Encoding ReEncodeFont }40 119.999947 /Times-Roman rf /Fw 134[86 3[86 1[67 57 2[86 86 134 48 3[86 2[76 1[76 1[76 12[105 96 2[96 6[57 124 124 2[124 2[124 6[48 12[57 45[{ TeXBase1Encoding ReEncodeFont }22 172.833374 /Times-Roman rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%PaperSize: Letter %%EndSetup %%Page: 1 1 1 0 bop 195 506 a Fw(APHID:)44 b(Asynchronous)g(P)m(arallel)h(Game-T)-6 b(ree)46 b(Search)863 805 y Fv(Mark)29 b(G.)h(Brockington)f(and)h (Jonathan)e(Schaef)m(fer)1118 955 y(Department)j(of)e(Computing)g (Science)1441 1104 y(Uni)m(v)n(ersity)h(of)f(Alberta)1249 1254 y(Edmonton,)g(Alberta)i(T6G)f(2H1)1771 1403 y(Canada)1510 1637 y(February)g(12,)f(1999)1925 5589 y Fu(1)p eop %%Page: 2 2 2 1 bop 146 100 a Ft(Running)26 b(Head:)31 b Fu(APHID:)25 b(Asynchronous)f(P)o(arallel)g(Game-T)m(ree)h(Search)146 199 y Ft(Send)i(Pr)n(oofs)d(T)-9 b(o:)146 299 y Fu(Jonathan)24 b(Schaef)n(fer)146 399 y(615)h(General)g(Services)g(Building)146 498 y(Department)g(of)f(Computing)g(Science)146 598 y(Uni)n(v)o(ersity) f(Of)i(Alberta)146 697 y(Edmonton,)e(AB)j(T6G)e(2H1)146 797 y(Canada)146 897 y(\(403\))h(492-3851)1781 1117 y Fs(Abstract)380 1293 y Fr(Most)30 b(parallel)i(game-tree)f(search)g (approaches)i(use)d(synchronous)k(methods,)e(where)e(the)h(w)o(ork)e (is)244 1406 y(concentrated)j(within)d(a)f(speci\002c)h(part)h(of)e (the)h(tree,)h(or)e(at)g(a)g(gi)n(v)o(en)h(search)h(depth.)45 b(This)28 b(article)i(sho)n(ws)244 1519 y(that)19 b(asynchronous)k (game-tree)d(search)g(algorithms)h(can)e(be)g(as)g(ef)n(\002cient)h(as) e(or)h(better)h(than)g(synchronous)244 1632 y(methods)25 b(in)e(determining)j(the)e(minimax)g(v)n(alue.)380 1745 y(APHID,)f(a)h(ne)n(w)g(asynchronous)29 b(parallel)e(game-tree)f (search)g(algorithm,)g(is)f(presented.)35 b(APHID)22 b(is)244 1857 y(implemented)j(as)e(a)g(freely-a)n(v)n(ailable)28 b(portable)e(library)-6 b(,)24 b(making)g(the)g(algorithm)h(easy)f(to)f (inte)o(grate)j(into)244 1970 y(a)i(sequential)k(game-tree)e(searching) h(program.)45 b(APHID)27 b(has)i(been)g(added)h(to)f(four)g(programs)i (written)244 2083 y(by)d(dif)n(ferent)h(authors.)43 b(APHID)26 b(yields)j(better)g(speedups)h(than)f(synchronous)i(search)e(methods)g (for)f(an)244 2196 y(Othello)c(and)g(a)f(check)o(ers)j(program,)f(and)f (comparable)h(speedups)h(on)e(tw)o(o)f(chess)i(programs.)146 2495 y Fu(K)n(e)o(yw)o(ords:)k(parallel)c(search,)g(alpha-beta,)g (computer)f(games,)g(heuristic)g(search.)p eop %%Page: 3 3 3 2 bop 146 100 a Ft(List)25 b(of)g(Symbols:)146 299 y Fq(\013)q(\014)6 b Fu(:)30 b(alpha,)25 b(beta)146 498 y Fq(d)p Fu(:)31 b(dee)146 697 y Fq(d)197 661 y Fp(0)220 697 y Fu(:)g(dee)25 b(prime)p eop %%Page: 1 4 1 3 bop 0 100 a Fo(1)143 b(Intr)m(oduction)0 402 y Fu(Making)21 b(computers)g(play)g(games)g(in)g(a)h(skillful)e(manner)l(,)i (comparable)g(to)f(that)h(of)f(a)h(strong)f(human)g(player)l(,)i(is)0 601 y(a)e(challenging)g(problem)f(that)h(has)g(attracted)g(the)g (attention)f(of)h(man)o(y)f(computer)h(scientists)e(o)o(v)o(er)h(the)h (last)g(\002fty)0 800 y(years.)30 b(T)-8 b(w)o(o-player)22 b(zero-sum)g(games)f(with)g(perfect)i(information,)e(such)h(as)g (chess,)g(Othello)3301 764 y Fn(1)3362 800 y Fu(and)g(check)o(ers,)0 1000 y(are)32 b(programmed)f(using)g(the)g(same)h(basic)g(techniques.) 50 b(The)32 b Fq(\013)q(\014)37 b Fu(algorithm)30 b([9])i(is)f(used)h (to)f(e)o(xhausti)n(v)o(ely)0 1199 y(search)c(v)n(ariations)d(that)i (are)g Fq(d)g Fu(mo)o(v)o(es)e(deep)i(in)g(a)g(depth-\002rst)g(manner)g (to)g(determine)f(the)h(best)f(mo)o(v)o(e)g(and)h(its)0 1398 y(v)n(alue.)k(A)25 b(lar)n(ge)g(hash)g(table,)g(called)f(the)h Fm(tr)o(ansposition)c(table)k Fu([5],)g(is)f(used)h(to)f(store)h(pre)n (viously)e(determined)0 1598 y(best)31 b(mo)o(v)o(es)e(and)i(v)n(alues) g(for)g(positions.)48 b(The)31 b(v)n(alues)f(from)h(this)f(table)h(are) h(re-used)f(during)g(the)g(search)g(to)0 1797 y(pre)n(v)o(ent)24 b(the)g(same)h(position)e(from)i(being)f(e)o(xplored)g(twice.)146 1996 y(Instead)31 b(of)h(immediately)d(searching)i(a)h(v)n(ariation)e Fq(d)h Fu(mo)o(v)o(es)e(deep)j(\(or)f Fq(d)g Fm(ply)p Fu(\),)i(most)d(programs)h(search)0 2195 y(to)c(1)g(ply)-6 b(,)27 b(then)f(to)h(2)g(ply)-6 b(,)27 b Fm(et)g(ceter)o(a)p Fu(.)38 b(This)26 b(technique)h(is)g(kno)n(wn)f(as)h Fm(iter)o(ative)f(deepening)h Fu([16)o(],)h(and)g(is)e(used)0 2395 y(to)i(acquire)g(mo)o(v)o(e-ordering)f(information)f(in)i(the)g (transposition)e(table.)41 b(The)28 b(best)g(mo)o(v)o(e)e(for)j(a)f Fl(\()p Fq(d)d Fk(\000)g Fl(1\))p Fu(-ply)0 2594 y(search)30 b(is)f(lik)o(ely)f(to)h(be)g(the)g(best)g(mo)o(v)o(e)f(for)h(a)h Fq(d)p Fu(-ply)e(search,)j(and)e(the)g Fq(\013)q(\014)35 b Fu(algorithm)28 b(will)g(b)n(uild)g(a)i(smaller)0 2793 y(search)25 b(tree)h(\(by)e(eliminating,)f(or)i(cutting-of)n(f,)e (irrele)n(v)n(ant)h(subtrees\))h(if)f(the)h(best)f(mo)o(v)o(e)g(is)g (searched)h(\002rst.)146 2992 y(A)f(game-playing)f(program)g(that)h (can)g(out-search)g(its)f(opponent)g(has)g(a)i(high)e(probability)f(of) i(winning.)29 b(It)0 3192 y(has)23 b(been)g(sho)n(wn)f(that)h(there)g (is)g(a)g(strong)f(correlation)h(between)g(the)g(search)h(depth)e(and)h (the)g(relati)n(v)o(e)f(strength)0 3391 y(of)j(chess,)f(Othello)g(and)h (check)o(ers)g(programs)f([8].)31 b(Thus,)24 b(programs)g(are)h(de)n(v) o(eloped)e(to)i(search)g(as)g(deeply)f(as)0 3590 y(possible)f(while)i (staying)e(within)h(the)h(time)f(constraints)f(imposed)h(by)g(the)h (rules)g(of)f(the)h(game.)146 3789 y(When)c(using)f(parallelism)f(to)h (search)i(game)e(trees)h(deeper)l(,)h(almost)d(all)i(of)f(the)h (research)g(has)g(concentrated)0 3989 y(on)32 b(synchronous)e(parallel) i(search)g(algorithms.)50 b(These)32 b(algorithms)e(force)j(w)o(ork)f (on)f(one)h(part)g(of)g(the)g(tree)0 4188 y(to)c(be)g(completed)g (before)g(w)o(ork)h(on)f(the)g(rest)g(of)g(the)g(tree)h(can)g(be)f (carried)h(out.)40 b(There)29 b(are)g(global)e(synchro-)0 4387 y(nization)j(points)g(during)g(the)h(search)h(that)e(all)h (processors)g(must)f(reach)i(before)f(an)o(y)g(process)g(is)f(allo)n (wed)g(to)0 4586 y(proceed.)j(In)25 b(some)g(synchronous)f(algorithms,) g(the)h(w)o(ork)g(is)g(synchronized)g(at)g(e)n(v)o(ery)g(choice)h (along)e(the)i(hy-)0 4786 y(pothesized)i(best-mo)o(v)o(e)e(sequence,)k (commonly)c(kno)n(wn)h(as)i(the)f(principal)g(v)n(ariation.)40 b(In)29 b(all)f(synchronized)0 4985 y(algorithms,)23 b(the)i(w)o(ork)f(is)h(synchronized)f(at)h(the)g(root)f(of)h(the)g (tree)g(between)g(steps)f(of)h(iterati)n(v)o(e)f(deepening;)g(a)p 0 5074 1560 4 v 112 5136 a Fj(1)149 5166 y Fi(Othello)c(is)h(a)g(re)o (gistered)e(trademark)f(of)i(Tsukuda)f(Original,)g(licensed)h(by)g (Anjar)f(Co.)1925 5589 y Fu(1)p eop %%Page: 2 5 2 4 bop 0 100 a Fu(complete)24 b Fq(d)p Fu(-ply)g(search)i(must)d(be)i (\002nished)g(before)g(the)g Fl(\()p Fq(d)c Fl(+)h(1\))p Fu(-ply)j(search)g(can)g(be)o(gin.)146 299 y(The)33 b(adv)n(antage)f (of)h(the)f(synchronous)f(approaches)i(is)f(that)g(the)o(y)g(can)h(use) f(the)h(v)n(alue)f(of)g(the)h(principal)0 498 y(v)n(ariation)19 b(in)h(the)h(same)f(w)o(ay)g(as)h(the)f(sequential)g(search)h (algorithm)e(does.)29 b(Synchronous)19 b(parallel)i(algorithms)0 697 y(are)32 b(successful)e(at)h(k)o(eeping)f(the)h(size)f(of)h(the)g (search)g(tree)h(b)n(uilt)d(close)i(to)f(the)h(sequential)f(search)h (tree)g(size,)0 897 y(assuming)d(that)h(processors)g(are)i(able)e(to)g (share)h(transposition)e(table)h(information)f(in)h(an)h(ef)n (\002cient)g(manner)-5 b(.)0 1096 y(Ho)n(we)n(v)o(er)l(,)23 b(there)j(are)f(fundamental)f(problems)g(with)g(synchronous)f(parallel) i Fq(\013)q(\014)30 b Fu(search)c(algorithms:)120 1347 y(1.)49 b(There)28 b(are)g(man)o(y)e(times)h(when)g(there)h(is)f(insuf) n(\002cient)f(parallelism)g(to)h(k)o(eep)h(all)f(the)g(processors)g(b)n (usy)-6 b(.)244 1546 y(If)29 b(there)f(are)i(more)e(processors)g(than)g (w)o(ork)g(granules)h(at)f(a)h(synchronization)e(point,)h(then)g(some)g (pro-)244 1746 y(cessors)23 b(must)g(go)g(idle.)30 b(This)23 b(idle)g(time)g(increases)h(in)f(magnitude)f(\(and)i(signi\002cance\))g (as)f(the)h(number)244 1945 y(of)35 b(processors)f(increases.)61 b(This)35 b(problem)f(is)g(e)o(xacerbated)h(in)g(games)f(that)g(ha)n(v) o(e)h(a)g(small)f(a)n(v)o(erage)244 2144 y(number)24 b(of)h(mo)o(v)o(e)e(choices.)120 2412 y(2.)49 b(The)o(y)33 b(require)i(an)f(ef)n(\002cient)h(implementation)c(of)k(a)f(shared)h (transposition)d(table)i(between)g(the)g(pro-)244 2612 y(cesses)24 b(to)f(achie)n(v)o(e)g(high)f(performance.)31 b(T)-8 b(ypically)i(,)22 b(the)i(algorithms)e(will)g(e)o(xhibit)g(poor) i(performance)244 2811 y(without)19 b(such)i(a)g(table,)g(since)g(each) h(processor')-5 b(s)20 b(search)h(results)f(must)g(be)h(made)g(a)n(v)n (ailable)f(to)h(all)f(other)244 3010 y(processes.)37 b(Because)28 b(of)f(this,)g(most)e(synchronous)h(algorithms)f(are)j (tested)f(on)f(shared)h(memory)g(sys-)244 3209 y(tems.)45 b(On)29 b(distrib)n(uted)g(memory)f(systems,)i(sharing)f(a)h(table)g (is)f(not)g(as)h(ef)n(\002cient,)h(and)f(the)g(speedups)244 3409 y(portrayed)25 b(in)f(the)h(literature)f(for)h(shared)g(memory)f (systems)g(are)h(not)f(achie)n(v)n(able.)120 3677 y(3.)49 b(Man)o(y)25 b(synchronous)f(algorithms)g(attempt)h(to)g(initiate)g (parallelism)f(at)i(nodes)f(which)g(are)i(better)e(done)244 3876 y(sequentially)-6 b(.)59 b(F)o(or)35 b(e)o(xample,)h(ha)n(ving)e (searched)h(the)g(\002rst)g(branch)g(at)g(a)g(node)g(and)g(not)f(achie) n(v)o(ed)g(a)244 4075 y(cut-of)n(f,)40 b(the)d(remaining)f(branches)i (are)g(usually)e(searched)h(in)g(parallel.)68 b(Ho)n(we)n(v)o(er)l(,)39 b(if)e(the)g(second)244 4275 y(branch)26 b(causes)f(a)h(cut-of)n(f,)f (then)g(all)h(of)f(the)h(w)o(ork)f(done)g(on)g(the)h(third)f(and)g (subsequent)f(branches)i(w)o(as)244 4474 y(unnecessary)-6 b(.)38 b(This)26 b(suggests)g(that)h(parallelism)f(should)g(only)h(be)g (initiated)f(at)h(nodes)g(where)h(there)g(is)244 4673 y(a)d(high)f(probability)f(that)i(all)f(branches)h(must)f(be)h (considered.)120 4941 y(4.)49 b(Man)o(y)21 b(of)h(the)f(synchronous)g (algorithms)f(do)i(not)f(inte)o(grate)g(well)h(into)f(typical)g (sequential)g(algorithms.)244 5141 y(This)h(causes)h(man)o(y)f(changes) h(to)g(the)f(main)h(search)g(algorithm)f(to)g(incorporate)h (parallelism.)29 b(This)22 b(will)244 5340 y(lik)o(ely)i(result)g(in)g (a)i(parallel)e(program)h(for)g(which)f(it)g(is)h(dif)n(\002cult)f(to)g (v)o(erify)g(its)h(correctness.)1925 5589 y(2)p eop %%Page: 3 6 3 5 bop 146 100 a Fu(In)28 b(other)e(w)o(ork,)i(a)f(theoretical)g (model)f(w)o(as)h(de)n(v)o(eloped)f(for)i(comparing)e(a)h(typical)g (synchronous)f(game-)0 299 y(tree)31 b(search)g(algorithm)e(to)h(an)g (asynchronous)g(one)g([2].)48 b(The)30 b(theoretical)g(results)g (indicated)g(that)g(an)g(asyn-)0 498 y(chronous)22 b(algorithm)f(could) i(outperform)f(a)h(synchronous)f(algorithm)f(on)h(game)h(trees)g (similar)e(to)i(those)f(seen)0 697 y(in)j(practice.)34 b(This)25 b(paper)h(sho)n(ws)f(that)g(it)g(is)g(possible)g(for)h (asynchronous)e(search)i(algorithms)e(to)i(outperform)0 897 y(their)f(synchronous)e(counterparts)h(in)h(practice.)146 1096 y(The)g(paper')-5 b(s)25 b(major)f(contrib)n(utions)f(include:)120 1365 y(1.)49 b(The)36 b(APHID)g(\(Asynchronous)f(P)o(arallel)h (Hierarchical)h(Iterati)n(v)o(e)e(Deepening\))h(algorithm)e(is)i (intro-)244 1564 y(duced)19 b(that)f(addresses)h(the)f(pre)n(viously)f (mentioned)h(problems.)28 b(First,)19 b(the)g(algorithm)e(is)i (asynchronous)244 1764 y(in)k(nature;)h(it)f(remo)o(v)o(es)f(all)h (global)f(synchronization)g(points)h(from)g(the)g Fq(\013)q(\014)29 b Fu(search)24 b(and)f(from)h(iterati)n(v)o(e)244 1963 y(deepening.)62 b(Second,)38 b(the)d(algorithm)f(does)h(not)g(require)h (a)f(shared)h(transposition)d(table)i(for)h(mo)o(v)o(e)244 2162 y(ordering)22 b(information.)28 b(Third,)23 b(parallelism)e(is)h (only)f(applied)h(at)g(nodes)g(that)g(ha)n(v)o(e)g(a)h(high)f (probability)244 2361 y(of)j(needing)f(parallelism.)120 2634 y(2.)49 b(APHID)25 b(has)g(been)g(designed)f(to)g(conform)h(to)f (the)h(structure)f(of)h(the)g(sequential)f Fq(\013)q(\014)6 b Fu(-based)24 b(game-tree)244 2833 y(search)35 b(algorithm.)57 b(Consequently)-6 b(,)35 b(parallelism)e(can)i(be)f(added)g(to)g(an)g (e)o(xisting)f(application)g(with)244 3033 y(minimal)d(ef)n(fort.)50 b(APHID)32 b(has)g(been)g(programmed)e(as)i(an)g (application-independent)d(and)j(portable)244 3232 y(library)-6 b(.)529 3196 y Fn(2)624 3232 y Fu(This)33 b(w)o(as)g(used)g(to)g (generate)h(all)f(of)h(the)f(parallel)g(applications)f(reported)i(in)f (this)f(article.)244 3431 y(Each)25 b(of)g(the)g(implementations)e (took)h(less)h(than)g(a)g(day)g(of)h(programming)d(time)i(to)f(achie)n (v)o(e)h(a)g(parallel)244 3630 y(program)k(that)g(e)o(x)o(ecuted)f(in)h (the)h(same)f(w)o(ay)g(as)h(the)f(sequential)f(program,)i(and)g(a)f(fe) n(w)h(days)f(of)g(addi-)244 3830 y(tional)i(tuning)g(to)h(achie)n(v)o (e)g(the)g(reported)g(speedups.)53 b(In)32 b(contrast,)i(adding)e(a)g (synchronous)f(parallel)244 4029 y(algorithm)23 b(to)i(an)g(e)o (xisting)e(sequential)g(algorithm)h(may)g(tak)o(e)h(months)e(of)i(w)o (ork.)120 4302 y(3.)49 b(APHID')-5 b(s)31 b(performance)h(for)g(four)f (game-playing)f(programs)h(is)g(presented.)50 b(APHID)32 b(yields)e(better)244 4501 y(speedups)38 b(than)h(synchronous)f(search) h(methods)f(for)h(an)g(Othello)f(and)h(a)g(check)o(ers)h(program,)i (and)244 4700 y(comparable)25 b(speedups)f(on)g(tw)o(o)h(chess)f (programs.)146 4969 y(Section)37 b(2)g(gi)n(v)o(es)e(a)j(brief)f(surv)o (e)o(y)e(of)i(rele)n(v)n(ant)f(parallel)h(search)g(methods.)66 b(Section)37 b(3)g(describes)f(the)0 5169 y(APHID)26 b(algorithm)e(in)i(detail,)f(along)g(with)g(an)h(illustrati)n(v)o(e)d (e)o(xample)i(of)g(ho)n(w)g(to)g(add)h(APHID)g(into)f(e)o(xisting)p 0 5249 1560 4 v 112 5310 a Fj(2)149 5340 y Fi(It)c(is)g(freely)e(a)n(v) n(ailable)h(at)h Fh(http://www.cs.ualberta.ca/\230games/a)o(phid/)p Fi(.)1925 5589 y Fu(3)p eop %%Page: 4 7 4 6 bop 0 100 a Fu(sequential)28 b(game-tree)i(search)g(code.)45 b(Section)29 b(4)g(sho)n(ws)f(the)i(e)o(xperimental)e(results)g(of)i (adding)f(APHID)g(to)0 299 y(four)c(applications.)k(Section)c(5)g (summarizes)e(this)h(paper)-5 b(.)0 637 y Fo(2)143 b(Pr)m(e)n(vious)34 b(W)-11 b(ork)0 889 y Fg(2.1)119 b(The)30 b Ff(\013)q(\014)37 b Fg(Algorithm)0 1156 y Fu(In)25 b(a)h(tw)o(o)e(player)i(zero-sum)f (game)f(with)h(perfect)g(information)f(and)h(a)h(\002nite)f(number)g (of)g(mo)o(v)o(es,)e(an)j(optimal)0 1355 y(strate)o(gy)g(can)h(be)g (determined)f(by)h(the)f(minimax)g(algorithm.)35 b(In)27 b(general,)g(minimax)f(is)g(a)h(depth-\002rst)g(search)0 1554 y(of)h(a)h(game)f(tree.)41 b(Each)29 b(node)f(represents)g(a)g (position,)g(and)g(the)g(links)f(between)h(nodes)g(represent)h(the)f (mo)o(v)o(e)0 1753 y(required)k(to)f(reach)h(the)g(ne)o(xt)e(position.) 50 b(The)31 b(player)h(to)f(mo)o(v)o(e)f(alternates)h(at)h(each)g(le)n (v)o(el)f(of)g(the)h(tree.)51 b(The)0 1953 y(e)n(v)n(aluation)18 b(of)i(each)h(leaf)g(node)f(in)f(the)h(search)h(is)f(based)g(on)f(an)i (approximation)d(of)i(whether)g(the)g(\002rst)g(player)h(is)0 2152 y(going)f(to)h(win)g(the)h(game)e(\(heuristic)h(e)n(v)n(aluation)f (function\).)29 b(Whene)n(v)o(er)21 b(the)g(\002rst)g(player)h(mo)o(v)o (es,)e(he)i(chooses)0 2351 y(a)i(mo)o(v)o(e)f(to)g(maximize)g(his)h(e)n (v)n(aluation)e(\(so-called)h(Max)h(nodes)g(in)f(the)h(search)g (tree\).)31 b(Con)l(v)o(ersely)-6 b(,)23 b(when)h(the)0 2550 y(second)i(player)g(has)h(to)f(mo)o(v)o(e)e(at)j(a)f(node,)h(he)f (will)g(choose)g(the)g(mo)o(v)o(e)f(that)h(minimizes)e(the)i(e)n(v)n (aluation)f(\(Min)0 2750 y(nodes\).)146 2949 y(Although)c(the)h(tree)g (is)g(\002nite,)g(it)g(can)g(get)g(quite)f(lar)n(ge.)30 b(T)-8 b(o)22 b(search)h(a)f(tree)h(of)f(depth)f Fq(d)h Fu(and)g(with)f Fq(b)i Fu(branches)0 3148 y(at)35 b(e)n(v)o(ery)g (node,)j Fq(b)658 3112 y Fe(d)735 3148 y Fu(nodes)c(w)o(ould)h(be)h(e)n (v)n(aluated.)61 b(F)o(ortunately)-6 b(,)37 b(there)e(are)h (straightforw)o(ard)f(\223bounding\224)0 3347 y(techniques)e(that)g (can)h(pro)o(v)o(e)e(some)h(e)n(v)n(aluations)e(are)k(irrele)n(v)n (ant.)55 b(The)34 b(most)e(popular)h(of)h(these)f(is)g(the)h Fq(\013)q(\014)0 3547 y Fu(algorithm,)23 b(gi)n(v)o(en)h(in)g(Figure)h (1.)146 3746 y(The)k Fq(\013)q(\014)35 b Fu(algorithm)27 b(only)h(considers)h(nodes)f(that)h(are)g(rele)n(v)n(ant)f(to)h(the)g (search)g(windo)n(w)f([)p Fq(\013)q Fu(,)i Fq(\014)6 b Fu(].)43 b Fq(\013)30 b Fu(rep-)0 3945 y(resents)g(the)f(best)h(v)n (alue)f(that)h(the)g(side)f(to)h(mo)o(v)o(e)e(can)i(achie)n(v)o(e)g (thus)f(f)o(ar)h(in)g(the)g(search.)46 b(Additional)29 b(search)0 4144 y(at)i(this)g(node)g(is)f(intended)h(to)g(\002nd)g(mo)o (v)o(es)e(that)i(impro)o(v)o(e)f(this)g(lo)n(wer)h(bound)f(\(i.e.)50 b(ha)n(v)o(e)31 b(a)g(v)n(alue)g Fq(>)40 b(\013)q Fu(\).)49 b Fq(\014)0 4344 y Fu(is)26 b(the)f(best)h(that)g(the)f(player)i(to)e (mo)o(v)o(e)g(can)h(achie)n(v)o(e)f(or)l(,)i(con)l(v)o(ersely)-6 b(,)25 b(the)h(smallest)e(v)n(alue)i(that)f(the)h(opponent)0 4543 y(can)35 b(pro)o(v)n(ably)e(restrict)h(the)g(side)h(to)f(mo)o(v)o (e)f(to.)59 b(When)35 b Fq(\013)46 b Fk(\025)g Fq(\014)6 b Fu(,)37 b(no)d(additional)f(search)j(is)e(needed)g(at)h(this)0 4742 y(node)c(\(a)g Fm(cut-of)n(f)f Fu(occurs\).)49 b(In)31 b(ef)n(fect,)h(this)e Fm(prunes)g Fu(parts)g(of)h(the)g(tree)g(that)f (pro)o(v)n(ably)f(cannot)i(contrib)n(ute)e(to)0 4941 y(the)c(minimax)e(v)n(alue.)30 b(It)25 b(has)g(been)g(sho)n(wn)f(that)g (the)h Fq(\013)q(\014)30 b Fu(algorithm)23 b(will)h(return)h(the)g (correct)g(minimax)f(v)n(alue)0 5141 y(if)30 b(the)g(root)f(position)f (is)h(searched)i(with)e Fq(\013)38 b Fl(=)f Fk(\0001)p Fu(,)31 b Fq(\014)43 b Fl(=)36 b(+)p Fk(1)30 b Fu([9].)46 b(F)o(or)30 b(a)g(depth)f Fq(d)h Fu(tree)g(with)f Fq(b)i Fu(branches)0 5340 y(at)g(e)n(v)o(ery)f(node,)h Fq(\013)q(\014)36 b Fu(has)31 b(the)g(potential)e(to)h(search)h(the)g(minimum)d(number)i (of)h(leaf)g(nodes)f(possible)g(to)g(de-)1925 5589 y(4)p eop %%Page: 5 8 5 7 bop 818 0 a 17879478 11840716 9275228 18879365 30917427 33154007 startTexFig 818 0 a %%BeginDocument: pics/alphabeta-code.ps %Magnification: 1.00 /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save 79.5 561.5 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit n 0 792 m 0 0 l 612 0 l 612 792 l cp clip 0.06000 0.06000 sc 7.500 slw % Polyline n 1050 975 m 6500 975 l 6500 4550 l 1050 4550 l cp gs col-1 s gr /Courier ff 180.00 scf sf 1500 3000 m gs 1 -1 sc (for\(i=1; i <= numOfSuccessors; i++\) {) col-1 sh gr /Courier ff 180.00 scf sf 6000 1800 m gs 1 -1 sc (/* move counter */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 6000 2000 m gs 1 -1 sc (/* score returned by search */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 1500 2000 m gs 1 -1 sc (int sc;) col-1 sh gr /Courier ff 180.00 scf sf 1200 4400 m gs 1 -1 sc (} /* AlphaBeta */) col-1 sh gr /Courier ff 180.00 scf sf 1500 4000 m gs 1 -1 sc (return\(alpha\);) col-1 sh gr /Courier ff 180.00 scf sf 1500 3800 m gs 1 -1 sc (}) col-1 sh gr /Courier ff 180.00 scf sf 1800 3600 m gs 1 -1 sc (if \(alpha >= beta\) { return\(alpha\); }) col-1 sh gr /Courier ff 180.00 scf sf 1800 3400 m gs 1 -1 sc (alpha = max\(alpha, sc\);) col-1 sh gr /Courier ff 180.00 scf sf 1800 3200 m gs 1 -1 sc (sc = -AlphaBeta\(p.succ[i],-beta,-alpha\);) col-1 sh gr /Courier ff 180.00 scf sf 1500 2800 m gs 1 -1 sc (numOfSuccessors = GenerateSuccessors\(p\);) col-1 sh gr /Courier ff 180.00 scf sf 1500 2400 m gs 1 -1 sc (if \(EndOfSearch\(p\)\) { return\(Evaluate\(p\)\); }) col-1 sh gr /Courier ff 180.00 scf sf 1500 1800 m gs 1 -1 sc (int i;) col-1 sh gr /Courier ff 180.00 scf sf 1500 1600 m gs 1 -1 sc (int numOfSuccessors;) col-1 sh gr /Courier ff 180.00 scf sf 6000 1600 m gs 1 -1 sc (/* total moves */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 1200 1200 m gs 1 -1 sc (int AlphaBeta\(position p, int alpha, int beta\) {) col-1 sh gr showpage $F2psEnd rs %%EndDocument endTexFig 836 1703 a Fu(Figure)25 b(1:)30 b(A)25 b(Ne)o(gamax)f(F)o(ormulation)f (of)h(the)h Fq(\013)q(\014)30 b Fu(Algorithm)0 1989 y(termine)24 b(the)h(minimax)e(v)n(alue:)30 b Fq(b)1168 1952 y Fp(d)1209 1925 y Fd(d)p 1210 1937 33 4 v 1211 1978 a Fc(2)1251 1952 y Fp(e)1309 1989 y Fl(+)22 b Fq(b)1448 1952 y Fp(b)1489 1925 y Fd(d)p 1489 1937 V 1490 1978 a Fc(2)1531 1952 y Fp(c)1589 1989 y Fk(\000)g Fl(1)j Fu(\(assuming)e(that)h(there)h(are) h(no)e(transpositions)f(in)h(the)h(tree\).)0 2188 y(This)i(best)h(case) h(is)f(achie)n(v)o(ed)f(when)h(the)g(\223best\224)h(mo)o(v)o(e)d(is)i (considered)g(\002rst)g(at)g(all)g(nodes)g(in)g(the)g(search)h(tree)0 2388 y(\(a)c(perfectly-ordered)h(tree\).)146 2587 y(There)e(is)f(a)g (portion)f(of)h(the)g Fq(\013)q(\014)29 b Fu(tree)23 b(that)g(must)f(al)o(w)o(ays)h(be)g(searched)h(to)f(determine)f(the)h (minimax)f(v)n(alue.)0 2786 y(This)k Fm(critical)f(tr)l(ee)i Fu(is)f(de\002ned)h(as)g(the)g(perfectly-ordered)g(tree)g(that)f(is)g (generated)h(when)f Fq(\013)q(\014)32 b Fu(is)27 b(started)f(with)0 2985 y(the)32 b(search)i(windo)n(w)d(\()p Fk(\0001)p Fu(,)p Fl(+)p Fk(1)p Fu(\).)54 b(Figure)33 b(2)g(sho)n(ws)e(the)h (structure)h(of)f(the)h(critical)f(tree.)55 b(Nodes)32 b(mark)o(ed)0 3185 y(ALL)22 b(ha)n(v)o(e)g(all)g(of)g(their)g (successors)g(e)o(xplored)f(by)h Fq(\013)q(\014)6 b Fu(.)29 b(Nodes)22 b(mark)o(ed)g(CUT)g(ha)n(v)o(e)g(at)g(least)g(one)g(branch)h (that)0 3384 y(can)32 b(cut)f(of)n(f)g(further)g(search)h(at)f(this)g (node.)50 b(In)31 b(the)g(critical)g(tree,)j(\002rst)d(mo)o(v)o(e)f (searched)i(at)f(all)g(CUT)h(nodes)0 3583 y(causes)23 b(a)g(cut-of)n(f.)29 b(CUT)23 b(and)g(ALL)f(nodes)g(are)h(also)g(kno)n (wn)e(as)i(type-2)f(and)g(type-3)g(nodes,)h(respecti)n(v)o(ely)e([9].) 146 3782 y(The)26 b(principal)f(v)n(ariation)g(\(type-1)h(nodes,)g (labeled)f(PV)i(in)e(Figure)h(2\))g(of)g(an)g Fq(\013)q(\014)32 b Fu(critical)25 b(tree)i(is)e(the)h(\002rst)0 3982 y(\(left-most\))e (branch)g(searched.)32 b(All)24 b(of)g(the)h(PV)g(nodes)f(are)h (searched)g(with)f(the)g(windo)n(w)f(\()p Fk(\0001)p Fu(,)p Fl(+)p Fk(1)p Fu(\).)31 b(Thus,)0 4181 y(all)25 b(children)f(at)h(PV)g(nodes)f(are)i(searched,)f(meaning)f(that)h(the)o (y)e(are)j(ef)n(fecti)n(v)o(ely)d(ALL)i(nodes.)0 4476 y Fg(2.2)119 b(P)o(arallel)30 b Ff(\013)q(\014)7 b Fg(-based)30 b(Sear)n(ch)h(Algorithms)0 4742 y Fu(The)h Fm(PV)-5 b(-Split)30 b Fu(algorithm)h([13])h(is)g(based)g(on)f(the)h(re)o(gular)g(structure) g(of)g(the)g(critical)g(game)f(tree.)53 b(The)32 b(\002rst)0 4941 y(stage)38 b(of)f(the)h(algorithm)e(in)l(v)n(olv)o(es)g(a)j (recursi)n(v)o(e)e(call)g(to)h(itself)f(as)h(PV)-10 b(-Split)37 b(tra)n(v)o(els)g(do)n(wn)g(the)h(principal)0 5141 y(v)n(ariation.)28 b(Once)20 b(the)f(left)h(subtree)f(of)h(a)g(PV)g(node)f(has)h(been)f(e) o(xamined,)h(all)f(of)h(the)f(other)h(subtrees)f(belo)n(w)g(that)0 5340 y(PV)27 b(node)f(are)h(searched)f(in)g(parallel.)35 b(Each)27 b(processor)f(is)f(gi)n(v)o(en)g(one)h(subtree)g(at)h(a)f (time)g(to)g(search,)h(without)1925 5589 y(5)p eop %%Page: 6 9 6 8 bop 825 0 a 17761071 11840716 5130977 18813583 31443681 36245749 startTexFig 825 0 a %%BeginDocument: pics/candidacy2-4.ps /arrowHeight 10 def /arrowWidth 5 def /IdrawDict 51 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright /parenleft/parenright/asterisk/plus/comma/minus/period/slash /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Helvetica reencodeISO def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def /SSten { fgred fggreen fgblue setrgbcolor dup true exch 1 0 0 -1 0 6 -1 roll matrix astore } def /FSten { dup 3 -1 roll dup 4 1 roll exch newpath 0 0 moveto dup 0 exch lineto exch dup 3 1 roll exch lineto 0 lineto closepath bgred bggreen bgblue setrgbcolor eofill SSten } def /Rast { exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def %I Idraw 10 Grid 4.98316 4.98316 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.799705 0 0 0.799705 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 174 230 ] concat %I 200 443 200 353 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 174 230 ] concat %I 200 443 349 353 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 174 230 ] concat %I 200 443 50 353 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 174 230 ] concat %I 50 353 5 263 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 174 230 ] concat %I 50 353 110 263 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 174 230 ] concat %I 50 353 65 263 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 109 263 65 174 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 109 263 109 174 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 109 263 154 174 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 169 263 199 174 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 214 263 244 174 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 174 50 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 174 65 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 174 79 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 174 57 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 174 72 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 109 174 102 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 154 174 147 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 199 174 184 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 199 174 192 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 199 174 199 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 199 174 207 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 199 174 214 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 244 174 229 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 236 129 244 174 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 244 174 244 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 244 174 251 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 244 174 259 129 Line %I 1 End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 304 443 15 15 Elli End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 150 0 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 139 428 169 458 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 214 676 ] concat %I [ (ALL) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 0 -90 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 139 428 169 458 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 214 676 ] concat %I [ (ALL) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -45 -180 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 139 428 169 458 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 214 676 ] concat %I [ (ALL) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -89 -269 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 139 428 169 458 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 214 676 ] concat %I [ (ALL) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 46 -269 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 139 428 169 458 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 214 676 ] concat %I [ (ALL) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 90 -269 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 139 428 169 458 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 214 676 ] concat %I [ (ALL) ] Text End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 85 230 ] concat %I 304 263 274 174 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 85 230 ] concat %I 304 263 319 174 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 85 230 ] concat %I 304 263 364 174 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 189 230 ] concat %I 304 174 349 263 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 189 230 ] concat %I 349 263 349 174 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 189 230 ] concat %I 349 263 394 174 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 85 230 ] concat %I 274 174 274 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 85 230 ] concat %I 319 174 319 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 85 230 ] concat %I 364 174 364 136 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 85 230 ] concat %I 364 136 364 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 241 230 ] concat %I 252 174 252 136 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 241 230 ] concat %I 297 174 297 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 241 230 ] concat %I 252 136 252 129 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 241 230 ] concat %I 342 174 342 129 Line %I 1 End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 224 -269 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 443 14 15 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 124 678 ] concat %I [ (CUT) ] Text End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 226 230 ] concat %I 148 353 163 263 Line %I 1 End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 165 -180 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 139 428 169 458 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 214 676 ] concat %I [ (ALL) ] Text End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 226 230 ] concat %I 297 353 312 263 Line %I 1 End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 314 -180 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 139 428 169 458 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 214 676 ] concat %I [ (ALL) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 89 -269 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 443 14 15 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 124 678 ] concat %I [ (CUT) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 44 -269 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 443 14 15 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 124 678 ] concat %I [ (CUT) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 269 -269 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 443 14 15 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 124 678 ] concat %I [ (CUT) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 149 -180 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 443 14 15 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 124 678 ] concat %I [ (CUT) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 104 -180 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 443 14 15 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 124 678 ] concat %I [ (CUT) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 239 -90 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 443 14 15 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 124 678 ] concat %I [ (CUT) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 388 -90 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 443 14 15 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 124 678 ] concat %I [ (CUT) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 313 -269 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 443 14 15 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 124 678 ] concat %I [ (CUT) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 358 -269 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 443 14 15 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 124 678 ] concat %I [ (CUT) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 403 -269 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 443 14 15 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 124 678 ] concat %I [ (CUT) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 448 -269 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 -0 -0 1 70 230 ] concat %I 65 443 14 15 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 124 678 ] concat %I [ (CUT) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 339 684 ] concat %I [ (PV) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 189 594 ] concat %I [ (PV) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 144 504 ] concat %I [ (PV) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 100 415 ] concat %I [ (PV) ] Text End End %I eop showpage end %%EndDocument endTexFig 1412 1703 a Fu(Figure)25 b(2:)30 b(The)25 b(Critical)g(T)m(ree)0 1991 y(assistance)f(from)h(other)f(processors.)30 b(After)25 b(all)g(of)f(the)h(subtrees)f(ha)n(v)o(e)g(been)h(completely)f(e)o (xplored,)f(that)i(PV)0 2190 y(node)32 b(returns)f(its)g(score)h(to)g (the)f(PV)h(node)g(abo)o(v)o(e)f(it.)51 b(At)31 b(an)o(y)g(time,)i (only)e(one)h(node')-5 b(s)31 b(subtrees)g(are)i(being)0 2389 y(e)o(xamined)f(in)g(parallel.)54 b(The)32 b(major)g(problem)g (with)g(PV)-10 b(-Split)32 b(is)g(the)h(lar)n(ge)g(amount)e(of)i (synchronization;)0 2588 y(man)o(y)21 b(processors)h(are)h(often)f (forced)g(to)g(w)o(ait)g(for)g(long)f(periods)h(of)g(time)f(while)h (the)g(last)f(une)n(v)n(aluated)g(branch)0 2788 y(of)k(a)g(PV)g(node)g (is)f(\002nished.)146 2987 y(The)35 b(best)g(speedups)g(for)g(parallel) g Fq(\013)q(\014)40 b Fu(ha)n(v)o(e)35 b(been)g(reported)g(for)h(the)f Fm(Y)-9 b(oung)34 b(Br)l(other)o(s)g(W)-9 b(ait)34 b(Concept)0 3186 y Fu(\(YBWC\))22 b(algorithm)d([3].)30 b(In)21 b(this)e(paper)l(,) j(YBWC)g(is)e(used)g(as)h(a)g(representati)n(v)o(e)f(of)h(a)g(lar)n(ge) g(group)f(of)h(popular)0 3385 y(synchronous)e(algorithms)f(\(including) h(ABD)l(AD)l(A)h([17],)h(Dynamic)f(T)m(ree)g(Splitting)e([7])j(and)f (Jamboree)g([11]\))0 3585 y(which)28 b(all)h(share)g(the)f(same)h (underlying)e(parallel)i(algorithm)e(and)i(dif)n(fer)f(only)g(in)h (implementation)d(details.)0 3784 y(All)38 b(of)h(these)g(algorithms)e (synchronize)i(at)f(the)h(end)g(of)g(each)g(iteration,)j(and)d(may)f (also)h(synchronize)f(at)0 3983 y(additional)23 b(points)h(within)f (each)j(iteration.)146 4182 y(In)32 b(a)g(game)f(tree)h(that)f(has)h (near)n(-perfect)h(mo)o(v)o(e)d(ordering,)j(there)f(is)f(a)h(high)f (probability)f(that)h(a)h(node)g(is)0 4382 y(an)c(ALL)g(node)g(if)g (the)g(left-most)f(branch)h(is)f(e)n(v)n(aluated)g(and)h(does)g(not)f (cause)i(a)f(cut-of)n(f.)40 b(The)28 b(basic)g(YBWC)0 4581 y(states)j(that)h(the)g(left-most)e(branch)i(\(the)g(eldest)g (brother\))g(must)e(be)j(e)n(v)n(aluated)d(before)j(an)o(y)e(other)h (branches)0 4780 y(\(the)d(young)g(brothers\))g(can)h(be)f(distrib)n (uted)f(to)h(other)g(processors.)44 b(This)29 b(is)g(not)f(necessarily) h(limited)f(to)h(the)0 4979 y(principal)35 b(v)n(ariation)g(\(i.e.)65 b(PV)-10 b(-Split\))37 b(or)f(a)g(pseudo-principal)f(v)n(ariation)g(as) h(in)g(other)g(algorithms;)k(it)c(can)0 5179 y(happen)g(at)f(an)o(y)g (node)h(within)e(the)i(game)f(tree.)64 b(The)36 b(optimized)e (algorithm)g(is)h(called)h(YBWC*.)64 b(In)36 b(this)1925 5589 y(6)p eop %%Page: 7 10 7 9 bop 0 100 a Fu(v)n(ariant,)27 b(young)f(brothers)h(are)g(not)g (forced)g(to)g(w)o(ait)g(at)g(ALL)g(nodes,)g(allo)n(wing)e(sequential)h (e)n(v)n(aluation)f(of)i(all)0 299 y(\223reasonable\224)e(mo)o(v)o(es)e (at)i(CUT)g(nodes.)146 498 y(The)h(UIDP)-9 b(ABS)26 b(algorithm)e(\()p Fm(Unsync)o(hr)l(onized)g(Iter)o(atively)g(Deepening)h(P)-8 b(ar)o(allel)24 b(Alpha-Beta)g(Sear)l(c)o(h)p Fu(\))0 697 y([14])29 b(w)o(as)h(the)f(\002rst)g(attempt)f(to)h(asynchronously) f(start)h(the)g(ne)o(xt)g(le)n(v)o(el)f(of)h(an)h(iterati)n(v)o(ely)d (deepened)j(search)0 897 y(instead)d(of)g(synchronizing)f(at)h(the)g (root)g(of)g(the)g(game)g(tree.)38 b(The)27 b(mo)o(v)o(es)f(from)h(the) g(root)g(position)e(are)j(parti-)0 1096 y(tioned)20 b(among)f(the)i (processors,)g(and)f(the)g(processors)h(search)g(their)f(o)n(wn)f (subset)h(of)h(the)f(mo)o(v)o(es)f(with)h(iterati)n(v)o(e)0 1295 y(deepening.)29 b(Each)21 b(processor)f(is)g(gi)n(v)o(en)f(the)h (same)g(initial)f(search)i(windo)n(w)-6 b(,)20 b(b)n(ut)g(some)g(of)g (the)g(processors)g(may)0 1494 y(ha)n(v)o(e)26 b(changed)g(their)f (windo)n(ws)g(based)h(on)g(the)f(search)i(results)e(of)h(their)g(mo)o (v)o(es.)32 b(The)26 b(UIDP)-9 b(ABS)28 b(algorithm)0 1694 y(combines)h(all)i(the)f(processors')g(results)g(once)g(a)h (predetermined)f(time)g(limit)e(has)j(been)f(reached.)49 b(Some)30 b(of)0 1893 y(the)i(mo)o(v)o(es)e(may)i(ha)n(v)o(e)g(been)g (e)n(v)n(aluated)f(to)h(lar)n(ger)h(depths)e(than)h(those)f(on)h(other) g(processors,)i(which)d(may)0 2092 y(yield)e(a)h(better)f(quality)f(mo) o(v)o(e)g(choice.)45 b(Ho)n(we)n(v)o(er)l(,)29 b(it)g(is)g(important)f (to)h(note)g(that)g(each)h(mo)o(v)o(e)e(may)h(only)g(be)0 2291 y(searched)23 b(by)g(one)f(processor;)h(thus,)g(the)f(algorithm)f (can)i(only)f(use)h(as)g(man)o(y)e(processors)i(as)f(there)h(are)h(mo)o (v)o(es)0 2491 y(at)h(the)f(root)h(of)g(the)f(game)h(tree.)0 2830 y Fo(3)143 b(The)35 b(APHID)f(Algorithm)0 3133 y Fu(This)18 b(section)g(describes)h(the)g(Asynchronous)e(P)o(arallel)i (Hierarchical)g(Iterati)n(v)o(e)f(Deepening)g(\(APHID)3589 3096 y Fn(3)3629 3133 y Fu(\))i(game-)0 3332 y(tree)29 b(search)g(algorithm.)40 b(APHID)29 b(represents)g(a)g(departure)g (from)f(the)g(synchronous)f(algorithms)g(described)0 3531 y(in)d(Section)g(2)g(and)g(has)g(been)h(designed)e(to)h(address)g (the)g(problems)f(described)h(in)g(Section)g(1.)30 b(First,)24 b(the)g(algo-)0 3730 y(rithm)k(is)g(asynchronous)f(in)i(nature;)h(it)e (remo)o(v)o(es)f(all)i(global)e(synchronization)g(points)h(from)g(the)h Fq(\013)q(\014)34 b Fu(search)0 3930 y(and)28 b(from)f(iterati)n(v)o(e) f(deepening.)39 b(Second,)29 b(the)e(algorithm)g(does)g(not)g(require)h (a)g(shared)g(transposition)d(table)0 4129 y(for)h(mo)o(v)o(e)d (ordering)i(information,)f(although)g(one)h(can)h(be)f(used)g(if)h (duplicate)e(detection)h(is)g(important)e(in)i(the)0 4328 y(underlying)33 b(application.)59 b(Third,)36 b(parallelism)e(is)g (only)f(applied)h(at)h(nodes)f(that)g(ha)n(v)o(e)g(a)h(high)f (probability)0 4527 y(of)g(needing)g(parallelism,)h(and)g(this)e (decision)g(is)h(based)g(on)g(the)g(best)g(information)f(a)n(v)n (ailable)h(at)g(the)g(time.)0 4727 y(Finally)-6 b(,)24 b(APHID)h(is)f(designed)g(to)h(easily)f(\002t)h(into)f(an)h(e)o (xisting)e(sequential)h Fq(\013)q(\014)6 b Fu(-based)24 b(search)h(algorithm.)146 4926 y(APHID)k(subdi)n(vides)d(the)j(tree)g (into)e(man)o(y)h(distinct)f(pieces)h(which)g(each)h(process)g(can)f (search)h(indepen-)p 0 5016 1560 4 v 112 5077 a Fj(3)149 5107 y Fi(An)d(aphid)e(is)i(a)f(soft-bodied)e(insect)i(that)g(sucks)g (the)h(sap)f(from)f(plants.)39 b(One)25 b(could)f(say)i(the)f(APHID)g (algorithm)e(sucks)j(the)0 5206 y(minimax)19 b(v)n(alue)g(from)h(a)g (game)f(tree.)1925 5589 y Fu(7)p eop %%Page: 8 11 8 10 bop 992 0 a 15132435 7104430 4670504 18813583 35522150 33285570 startTexFig 992 0 a %%BeginDocument: pics/aphid-partition.ps %Magnification: 1.00 /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save 34.5 576.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit n 0 792 m 0 0 l 612 0 l 612 792 l cp clip 0.06000 0.06000 sc 60.000 slw % Polyline n 2775 3075 m 2925 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 2775 2925 m 2925 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 3000 3075 m 3150 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 3000 2925 m 3150 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 3225 3075 m 3375 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 3225 2925 m 3375 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 3450 3075 m 3600 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 3450 2925 m 3600 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 5175 3075 m 5325 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 5175 2925 m 5325 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 5400 3075 m 5550 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 5400 2925 m 5550 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 5625 3075 m 5775 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 5625 2925 m 5775 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 5850 3075 m 6000 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 5850 2925 m 6000 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 6075 3075 m 6225 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 6075 2925 m 6225 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 4425 3075 m 4575 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 4425 2925 m 4575 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 4200 3075 m 4350 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 4200 2925 m 4350 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 3975 3075 m 4125 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 3975 2925 m 4125 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 3750 3075 m 3900 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 3750 2925 m 3900 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 4875 3075 m 5025 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 4875 2925 m 5025 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 4650 3075 m 4800 2925 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 4650 2925 m 4800 3075 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 675 1425 m 825 1275 l gs 1.00 setgray ef gr gs col-1 s gr % Polyline n 675 1275 m 825 1425 l gs 1.00 setgray ef gr gs col-1 s gr 7.500 slw % Ellipse n 5400 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 5175 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 4950 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr 15.000 slw % Polyline n 3675 3000 m 3075 4800 l gs col-1 s gr 7.500 slw % Polyline n 4626 3004 m 4926 4804 l gs col-1 s gr 15.000 slw % Polyline n 4626 3004 m 4926 4804 l gs col-1 s gr 7.500 slw % Polyline n 2700 3000 m 6300 3000 l gs col-1 s gr 30.000 slw % Polyline gs clippath 8430 4599 m 8400 4719 l 8370 4599 l 8370 4845 l 8430 4845 l cp clip 8370 1401 m 8400 1281 l 8430 1401 l 8430 1155 l 8370 1155 l cp clip n 8400 1200 m 8400 4800 l gs 1.00 setgray ef gr gs col-1 s gr gr % arrowhead n 8370 1401 m 8400 1281 l 8430 1401 l col-1 s % arrowhead n 8430 4599 m 8400 4719 l 8370 4599 l col-1 s % Polyline gs clippath 7830 2799 m 7800 2919 l 7770 2799 l 7770 3045 l 7830 3045 l cp clip 7770 1401 m 7800 1281 l 7830 1401 l 7830 1155 l 7770 1155 l cp clip n 7800 1200 m 7800 3000 l gs 1.00 setgray ef gr gs col-1 s gr gr % arrowhead n 7770 1401 m 7800 1281 l 7830 1401 l col-1 s % arrowhead n 7830 2799 m 7800 2919 l 7770 2799 l col-1 s 15.000 slw % Polyline n 4500 1200 m 900 4800 l 8100 4800 l 4500 1200 l gs col-1 s gr % Polyline n 5100 3000 m 6000 4800 l gs col-1 s gr /Helvetica ff 270.00 scf sf 4500 2400 m gs 1 -1 sc (MASTER) dup sw pop 2 div neg 0 rm col-1 sh gr /Helvetica ff 270.00 scf sf 2400 4200 m gs 1 -1 sc (SLAVE 1) dup sw pop 2 div neg 0 rm col-1 sh gr /Helvetica ff 270.00 scf sf 6450 4200 m gs 1 -1 sc (SLAVE K) dup sw pop 2 div neg 0 rm col-1 sh gr /Helvetica ff 270.00 scf sf 4050 4200 m gs 1 -1 sc (SLAVE 2) dup sw pop 2 div neg 0 rm col-1 sh gr /Helvetica ff 270.00 scf sf 900 1425 m gs 1 -1 sc (= PIECE OF WORK) col-1 sh gr /Helvetica ff 270.00 scf sf 7500 2100 m gs 1 -1 sc (d') col-1 sh gr /Helvetica ff 270.00 scf sf 8175 3150 m gs 1 -1 sc (d) col-1 sh gr showpage $F2psEnd rs %%EndDocument endTexFig 720 1103 a Fu(Figure)25 b(3:)30 b(APHID)25 b(P)o(artitioning)e(Game)i (T)m(ree)g(Amongst)e(Processes)888 1225 y 16766447 9472573 9669918 31246336 22892052 38679674 startTexFig 888 1225 a %%BeginDocument: pics/location_parallelism.ps /arrowHeight 10 def /arrowWidth 5 def /IdrawDict 52 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright /parenleft/parenright/asterisk/plus/comma/minus/period/slash /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Times-Roman reencodeISO def /Helvetica reencodeISO def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def /SSten { fgred fggreen fgblue setrgbcolor dup true exch 1 0 0 -1 0 6 -1 roll matrix astore } def /FSten { dup 3 -1 roll dup 4 1 roll exch newpath 0 0 moveto dup 0 exch lineto exch dup 3 1 roll exch lineto 0 lineto closepath bgred bggreen bgblue setrgbcolor eofill SSten } def /Rast { exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def %I Idraw 10 Grid 3 3 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.799705 0 0 0.799705 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 117 437 65 332 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 117 437 162 332 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 271 296 ] concat %I 117 437 65 332 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 271 296 ] concat %I 117 437 162 332 Line %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 217 609 ] concat %I [ (APHID) ] Text End Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 26.5 123.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 30.5 123 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 33.5 123 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 37.5 123 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 42 123.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 45 123.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 49 123.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 52.5 123.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 56 123.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 60 123.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 22.5 123.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 159 96 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 162.5 104 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 166 110.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 170.5 118.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 174 126.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 177 134 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 181 141 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 185 149 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 188.5 156 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 191.5 164 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 156 88.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 151.5 80 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 148 72.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 192 149 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 195.5 149 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 198.5 149 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 191 135 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 195 135 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 199 135 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 203.5 135 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 187 141 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 190 141 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 181 126.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 185 126.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 189 127 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 188.5 118.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 192.5 118.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 196.5 118.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 204.5 118.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 178 110.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 199 110.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 213.5 111 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 184 96 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 208 95.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 194 156 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 272 76 268 Line %I 1 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 122 296 ] concat %I 72 268 76 272 Line %I 1 End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -36.5 92.5 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 100 84 116 100 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 116 100 132 84 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 132 84 148 116 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 148 116 164 84 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 164 84 180 116 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 180 116 196 100 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 196 100 212 116 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 212 116 228 116 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 228 116 244 100 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 244 100 260 116 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 260 116 276 100 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 276 100 292 84 Line %I 2 End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 112.5 93 ] concat Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 100 84 116 100 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 116 100 132 84 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 132 84 148 116 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 148 116 164 84 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 164 84 180 116 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 180 116 196 100 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 196 100 212 116 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 212 116 228 116 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 228 116 244 100 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 244 100 260 116 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 260 116 276 100 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 174 494 ] concat %I 276 100 292 84 Line %I 2 End End %I eop Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 226 494 ] concat %I 136 476 160 476 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 244 596 ] concat %I 136 272 160 272 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 226 497 ] concat %I 136 296 160 296 Line %I 2 End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 244 554 ] concat %I 136 272 160 272 Line %I 2 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 297 692 ] concat %I [ (d) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 313.5 716 ] concat %I [ (d') ] Text End Begin %I Line %I b 65535 2 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 200 494 ] concat %I 200 374 200 308 Line %I 2 End Begin %I Line %I b 65535 2 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 200 494 ] concat %I 200 404 200 470 Line %I 2 End Begin %I Line %I b 65535 2 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 200 494 ] concat %I 236 452 236 470 Line %I 2 End Begin %I Line %I b 65535 2 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 200 494 ] concat %I 236 422 236 398 Line %I 2 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 367 609 ] concat %I [ (YBWC*) ] Text End End %I eop showpage end %%EndDocument endTexFig 491 2628 a Fu(Figure)i(4:)30 b(Location)24 b(of)h(P)o(arallelism)f(in) g(T)-8 b(ypical)25 b(APHID)g(and)g(YBWC*)g(Search)0 2915 y(dently)j(of)g(each)h(other)-5 b(.)41 b(Figure)29 b(3)f(gi)n(v)o(es)f (an)i(e)o(xample)f(of)g(ho)n(w)g(the)g(tree)h(w)o(ould)f(be)g(di)n (vided)f(by)h(the)h(APHID)0 3114 y(algorithm.)g(The)23 b(\002gure)h(sho)n(ws)e(us)i(a)f(single-le)n(v)o(el)f(master/sla)n(v)o (e)g(hierarchy)h(\(multiple)f(le)n(v)o(els)g(are)i(possible\).)0 3314 y(The)k(master)g(process)h(controls)e(the)h(top)g Fq(d)1511 3278 y Fp(0)1563 3314 y Fu(ply)f(of)i(the)f(game)g(tree,)h (including)e(the)h(root.)41 b(The)29 b(lea)n(v)o(es)f(of)g(the)0 3513 y(master')-5 b(s)28 b Fq(d)412 3477 y Fp(0)435 3513 y Fu(-ply)h(tree)h(are)g(the)f(pieces)g(of)h(w)o(ork)f(that)g(each)h (sla)n(v)o(e)e(process)h(e)o(xamines.)43 b(Each)30 b(of)f(the)g Fq(k)k Fu(sla)n(v)o(e)0 3712 y(processes)c(gets)g(a)g(portion)f(of)h (the)g(master')-5 b(s)28 b(lea)n(v)o(es)h(to)g(search,)h(implicitly)d (di)n(viding)g(the)i(remainder)g(of)g(the)0 3912 y(tree)d(as)g(sho)n (wn)e(in)h(Figure)h(3.)33 b(Note)25 b(that)g(the)g(diagram)h(is)f (partially)f(misleading)g(in)h(that,)h(for)f(load)h(balancing)0 4111 y(purposes,)e(a)h(sla)n(v)o(e')-5 b(s)24 b(pieces)h(of)f(w)o(ork)h (are)h(actually)e(distrib)n(uted)f(across)i(the)g(bottom)e(of)i(the)f (master')-5 b(s)24 b(tree.)146 4310 y(It)31 b(is)g(interesting)f(to)h (compare)g(APHID)h(against)e(a)h(synchronous)f(parallel)h(algorithm.)49 b(Figure)31 b(4)g(illus-)0 4509 y(trates)22 b(graphically)f(where)i(w)o (ork)f(is)f(allocated)h(o)o(v)o(er)f(the)h(course)g(of)h(a)f(typical)f (APHID)i(and)f(YBWC*)h(search.)0 4709 y(Each)g(location)f(mark)o(ed)h (with)f(an)h Fb(x)f Fu(sho)n(ws)g(where)h(the)g(parallelism)e (typically)h(tak)o(es)h(place.)30 b(Although)21 b(more)0 4908 y(parallelism)j(could)g(be)h(generated)h(in)e(YBWC*,)i(one)f(must) f(be)h(careful)h(because)f(each)h Fb(x)e Fu(along)h(the)g(left)g(side)0 5107 y(of)j(the)g(YBWC*)h(tree)f(represents)g(a)h(global)e (synchronization)f(point,)i(and)g(the)g(rest)g(are)h(local)e (synchroniza-)0 5306 y(tion)d(points.)1925 5589 y(8)p eop %%Page: 9 12 9 11 bop 146 100 a Fu(In)23 b(APHID,)g(the)g(master)g(process)f(mak)o (es)h(repeated)g(searches)g(or)g Fm(passes)f Fu(o)o(v)o(er)g(its)g (part)h(of)g(the)g(game)f(tree.)0 299 y(The)k(master')-5 b(s)25 b(tree)i(is)f(small)f(and)h(is)f(quickly)g(searched.)35 b(The)27 b(master)e(is)h(responsible)f(for)h(ensuring)g(that)f(the)0 498 y(sla)n(v)o(es)h(determine)g(all)g(of)g(the)h(minimax)e(v)n(alues)g (required)i(to)f(get)g(a)h Fq(d)p Fu(-ply)f Fq(\013)q(\014)32 b Fu(search)27 b(of)f(the)h(full)f(game)g(tree)0 697 y(\002nished,)h(after)g(which)g(it)f(proceeds,)h(via)g(iterati)n(v)o(e) e(deepening,)i(to)f(the)h(ne)o(xt)f(search)h(depth)f(repeatedly)h (until)0 897 y(the)e(time)f(limit)f(e)o(xpires.)146 1096 y(Each)28 b(sla)n(v)o(e)e(searches)h(its)f(pieces)h(of)g(w)o(ork)g Fl(\()p Fq(d)d Fk(\000)g Fq(d)1968 1060 y Fp(0)1991 1096 y Fl(\))j Fu(plies)f(deep,)i(plus)e(an)o(y)g(search)i(e)o(xtensions)d (that)h(the)0 1295 y(master)j(requires.)45 b(If)30 b(APHID)g(were)g(a)g (synchronous)e(algorithm,)h(the)g(sla)n(v)o(es)g(w)o(ould)f(\002nish)h (their)h(w)o(ork)f(for)0 1494 y(the)23 b(master')-5 b(s)23 b(depth)g Fq(d)g Fu(iteration,)f(and)i(then)f(w)o(ait)g(for)g(the)h(ne) o(xt)e(iteration)h(\()p Fq(d)16 b Fl(+)h(1)p Fu(\))24 b(to)f(be)o(gin.)29 b(APHID')-5 b(s)23 b(sla)n(v)o(es)0 1694 y(do)g(not)h(sit)f(idle)g(w)o(aiting.)29 b(Instead,)24 b(the)o(y)f(use)g(iterati)n(v)o(e)f(deepening)i(to)f(search)h(their)g (w)o(ork)f(lists)g(an)g(additional)0 1893 y(ply)30 b(deeper)h(\(and)f (be)o(yond,)h(if)f(there)h(is)f(time\))f(without)g(con\002rmation)h (from)g(the)g(master)-5 b(.)47 b(Thus,)31 b(the)f(sla)n(v)o(es)0 2092 y(attempt)c(to)h(determine)f(minimax)g(v)n(alues)g(that)h(may)f (be)i(necessary)-6 b(,)27 b(in)g(anticipation)e(of)j(the)e(master)h (process)0 2291 y(asking)g(for)h(them.)38 b(The)27 b(sla)n(v)o(es)g (continue)g(searching)g(until)f(the)i(master)f(signals)f(that)h(the)h (search)g(at)f(the)h(root)0 2491 y(of)d(the)g(tree)g(has)f(been)h (terminated.)146 2690 y(By)39 b(partitioning)d(the)i(tree)h(in)f(this)f (manner)l(,)k(APHID')-5 b(s)38 b(performance)h(does)f(not)g(rely)g(on)g (the)g(imple-)0 2889 y(mentation)c(of)h(a)g(global)g(shared)g(memory)f (or)h(a)h(f)o(ast)f(interconnection)f(netw)o(ork)g(between)h(the)g (processes.)0 3088 y(This)25 b(mak)o(es)g(the)g(APHID)h(algorithm)e (suitable)h(for)h(loosely-coupled)e(architectures)h(\(such)h(as)f(a)h (netw)o(ork)f(of)0 3288 y(w)o(orkstations\),)e(as)i(well)g(as)f (tightly-coupled)f(architectures.)146 3487 y(This)37 b(section)f(contains)g(a)i(description)e(of)h(the)g(master)g(process)g (\(Section)g(3.1\),)j(the)d(sla)n(v)o(e)f(processes)0 3686 y(\(Section)g(3.3\),)i(and)d(the)h(APHID)g(table)f(through)g (which)g(the)h(master)f(and)g(sla)n(v)o(e)g(communicate)g(\(Section)0 3885 y(3.2\).)29 b(Balancing)19 b(the)h(w)o(ork)f(load)h(between)f(the) h(sla)n(v)o(es)e(is)h(discussed)g(in)g(Section)h(3.4.)28 b(The)20 b(interf)o(ace)g(between)0 4085 y(APHID)25 b(and)g(the)g (application)e(is)i(described)f(in)h(Section)g(3.5.)0 4380 y Fg(3.1)119 b(The)30 b(APHID)g(Master)0 4646 y Fu(The)i(master)f(is)g(responsible)f(for)i(ensuring)f(that)g(the)h (result)f(of)g(a)h Fq(d)p Fu(-ply)f(search)h(is)f(obtained.)51 b(The)31 b(amount)0 4846 y(of)c(w)o(ork)g(retained)g(by)f(the)h(master) l(,)g Fq(d)1329 4809 y Fp(0)1379 4846 y Fu(ply)-6 b(,)27 b(is)f(automatically)g(determined)g(based)h(on)f(the)h(characteristics) g(of)0 5045 y(the)f(search)g(tree)g(generated)h(for)f(the)g(root)f (position)f(and)i(domain-dependent)f(information)f(pro)o(vided)h(by)g (the)0 5244 y(user)-5 b(.)30 b(Further)25 b(details)g(on)f(the)h (automatic)f(determination)f(of)i Fq(d)2246 5208 y Fp(0)2294 5244 y Fu(can)g(be)g(found)f(else)n(where)h([2].)1925 5589 y(9)p eop %%Page: 10 13 10 12 bop 146 100 a Fu(APHID)26 b(completes)d(a)j Fq(d)p Fu(-ply)e Fq(\013)q(\014)30 b Fu(search)25 b(by)g(repeating)f(the)h (follo)n(wing)e(steps:)120 407 y(1.)49 b(Ex)o(ecute)37 b(a)h(quick)f(search)h(\(or)g Fm(pass)p Fu(\))f(of)h(the)f Fq(d)1967 371 y Fp(0)1990 407 y Fu(-ply)g(tree)h(using)f(the)g (application')-5 b(s)36 b(sequential)h Fq(\013)q(\014)244 606 y Fu(algorithm)23 b(\(where)j Fq(d)1009 570 y Fp(0)1059 606 y Fq(<)i(d)p Fu(\),)d(aided)f(by)h(a)g(transposition)e(table)h (\(if)h(a)n(v)n(ailable\).)120 888 y(2.)49 b(If)25 b(the)g(search)g (returns)g(an)g(accurate)g Fq(d)p Fu(-ply)f(v)n(alue,)h(then)f(e)o(xit) g(the)h(loop.)120 1171 y(3.)49 b(Based)24 b(on)g(the)f(leaf)h(nodes)f (visited)g(during)g(this)f(pass,)i(report)g(an)o(y)f(changes)g(to)h (the)f(sla)n(v)o(es')g(w)o(ork)g(lists.)120 1453 y(4.)49 b(W)-8 b(ait)24 b(for)i(ne)n(w)e(information)f(from)i(a)g(sla)n(v)o(e)f (process.)120 1735 y(5.)49 b(Go)25 b(to)f(step)g(1.)146 2042 y(The)32 b Fq(d)384 2006 y Fp(0)407 2042 y Fu(-ply)g(tree)h(is)e (not)h(k)o(ept)g(in)f(memory)-6 b(.)51 b(Thus,)34 b(on)d(each)i(pass)f (the)g(tree)g(is)g(tra)n(v)o(ersed)g(to)g(determine)0 2242 y(an)o(y)g(changes)g(to)f(the)h(w)o(ork)g(required.)53 b(The)32 b(tree)g(is)g(re)o(generated)g(on)g(each)h(pass)f(by)f(the)h (application')-5 b(s)31 b Fq(\013)q(\014)0 2441 y Fu(algorithm)23 b(and)i(transposition)e(table.)30 b(Since)c Fq(d)1668 2405 y Fp(0)1715 2441 y Fu(is)f(usually)e(small,)h(the)h(cost)f(of)h(a) g(pass)g(is)f(also)g(small.)146 2640 y(During)e(a)g(pass,)g(when)g(the) g(master)f(reaches)i(a)f(leaf)h(of)f(the)f Fq(d)2263 2604 y Fp(0)2286 2640 y Fu(-ply)h(tree,)h(an)f(e)n(v)n(aluation)e(of)i (that)g(node)f(must)0 2839 y(be)h(done.)29 b(If)22 b(the)f(subtree)g (underneath)g(that)g(node)g(\()p Fq(d)9 b Fk(\000)g Fq(d)1984 2803 y Fp(0)2008 2839 y Fu(\))22 b(is)f(smaller)f(than)h Fq(g)k Fu(ply)c(\(the)g Fm(minimum)g(gr)o(anularity)0 3039 y Fu(for)j(a)h(piece)f(of)h(parallel)f(w)o(ork\),)g(then)g(the)g (master)f(searches)i(the)f(remaining)f(\()p Fq(d)d Fk(\000)g Fq(d)2979 3002 y Fp(0)3002 3039 y Fu(\))k(ply)g(itself.)30 b(Otherwise,)0 3238 y(the)25 b(node)f(is)h(assigned)f(to)g(a)h(sla)n(v) o(e)f(processor)-5 b(.)146 3437 y(Assuming)32 b(that)h(the)h(master)f (does)g(not)g(search)h(the)f(tree)h(underneath)g(a)g(gi)n(v)o(en)e (node)h(\()p Fq(g)47 b Fk(\024)e Fl(\()p Fq(d)28 b Fk(\000)h Fq(d)3781 3401 y Fp(0)3804 3437 y Fl(\))p Fu(\),)0 3636 y(APHID)c(must)f(determine)h(a)g(v)n(alue)f(with)g(respect)i(to)e(the)h Fq(\013)q(\014)30 b Fu(search)c(windo)n(w)d(at)i(that)g(node)f(without) g(further)0 3836 y(search.)60 b(F)o(or)35 b(e)o(xample,)h(an)f Fq(\013)q(\014)40 b Fu(search)35 b(windo)n(w)e(of)h(\(0,5\))h(says)f (that)g(the)h Fq(\013)q(\014)k Fu(algorithm)33 b(needs)i(to)f(kno)n(w)0 4035 y(whether)e(the)g(node')-5 b(s)32 b(minimax)e(v)n(alue)i(is)g Fk(\024)42 b Fl(0)p Fu(,)34 b Fk(\025)42 b Fl(5)p Fu(,)34 b(or)e(the)g(e)o(xact)g(v)n(alue)g(if)g(it)g(lies)g(in)g(between)g(0)g (and)g(5.)0 4234 y(W)l(ithout)23 b(kno)n(wing)h(which)g(case)h(is)g (correct,)g(the)g Fq(\013)q(\014)30 b Fu(search)25 b(may)g(gi)n(v)o(e)e (inaccurate)i(results.)146 4433 y(If)34 b(the)e(sla)n(v)o(e)h(has)f (already)h(gi)n(v)o(en)f(the)g(master)h(a)g Fl(\()p Fq(d)28 b Fk(\000)h Fq(d)2181 4397 y Fp(0)2204 4433 y Fl(\))p Fu(-ply)j(search)h(result,)i(that)d(v)n(alue)g(is)h(used.)3740 4397 y Fn(4)3834 4433 y Fu(If)0 4633 y(the)25 b Fl(\()p Fq(d)d Fk(\000)h Fq(d)409 4596 y Fp(0)432 4633 y Fl(\))p Fu(-ply)i(result)g(is)g(una)n(v)n(ailable)f(because)h(the)h(sla)n(v)o (e)e(has)h(not)g(reached)h(that)f(depth)g(of)g(search,)h(or)f(the)0 4832 y Fl(\()p Fq(d)e Fk(\000)h Fq(d)264 4796 y Fp(0)287 4832 y Fl(\))p Fu(-ply)h(result)h(has)g(returned)h(a)f(bound)g(that)g (yields)f(insuf)n(\002cient)g(information)g(on)h(the)g(minimax)f(v)n (alue)0 5031 y(with)31 b(respect)i(to)f(the)g Fq(\013)q(\014)37 b Fu(search)c(windo)n(w)-6 b(,)32 b(then)g(the)g(algorithm)e(guesses)i (at)g(the)g(minimax)f(v)n(alue.)52 b(Going)p 0 5121 1560 4 v 112 5182 a Fj(4)149 5212 y Fi(In)30 b(the)g(implementations)f (presented)f(here,)k(the)e(deeper)f(ply)h(v)n(alues)g(are)g(not)f(used) h(e)n(v)o(en)f(if)i(the)o(y)e(are)h(a)n(v)n(ailable.)54 b(This)31 b(is)0 5312 y(discussed)20 b(in)g(Section)g(4.)1900 5589 y Fu(10)p eop %%Page: 11 14 11 13 bop 0 100 a Fu(back)36 b(to)f(our)h(earlier)g(e)o(xample,)i(a)e (v)n(alue)f(of)h Fk(\024)49 b Fl(10)35 b Fu(does)g(not)h(yield)f (useful)g(information)f(at)i(a)g(node)g(with)0 299 y(an)d Fq(\013)q(\014)39 b Fu(search)33 b(windo)n(w)f(of)h(\(0,5\),)i(hence)f (a)f(guessed)g(v)n(alue)f(for)h(this)f(node)h(w)o(ould)g(be)g(used)f (until)g(a)i(sla)n(v)o(e)0 498 y(could)24 b(return)h(better)f (information.)30 b(An)o(y)23 b(node)i(where)g(APHID)g(has)g(to)f(guess) g(at)h(the)f(v)n(alue)g(is)h(mark)o(ed)f(as)h(an)0 697 y Fm(uncertain)f Fu(node.)146 897 y(F)o(or)j(uncertain)g(nodes,)g (information)e(gathered)i(from)g(both)f(pre)n(vious)f(searches)j(and)f (the)f(current)i(search)0 1096 y(is)23 b(used)g(to)f(determine)h(a)h (guessed)e(v)n(alue.)30 b(The)23 b(guessed)g(v)n(alue)f(is)h(chosen)g (so)g(that)f(it)h(will)f(not)h(alter)g(the)g(shape)0 1295 y(or)e(ordering)g(of)h(mo)o(v)o(es)d(within)h(the)h(game)g(tree)g (until)f(ne)n(w)h(information)f(is)h(recei)n(v)o(ed)g(from)g(a)g(sla)n (v)o(e)g(processor)-5 b(.)0 1494 y(Details)24 b(of)h(the)g(guessed)f (score)h(algorithm)e(are)j(pro)o(vided)e(in)g(Appendix)g(A.)146 1694 y(As)c(minimax)f(v)n(alues)g(get)i(back)o(ed)f(up)g(the)g Fq(d)1681 1657 y Fp(0)1704 1694 y Fu(-ply)g(tree)h(during)e(the)h (search,)i(the)e(master)g(maintains)f(a)i(count)0 1893 y(of)26 b(ho)n(w)f(man)o(y)g(uncertain)h(nodes)f(ha)n(v)o(e)h(been)g(e) n(v)n(aluated.)33 b(When)26 b(the)g(master)g(has)g(no)f(uncertain)h(e)n (v)n(aluations)0 2092 y(in)e(its)g Fq(d)272 2056 y Fp(0)295 2092 y Fu(-ply)h(tree,)g(the)g(v)n(alue)f(of)h(the)f(complete)h Fq(d)p Fu(-ply)f(tree)h(is)f(accurate,)i(and)f(APHID)g(e)o(xits)f(the)g (loop.)146 2291 y(Sometimes,)f(the)g Fl(\()p Fq(d)17 b Fk(\000)g Fq(d)1034 2255 y Fp(0)1056 2291 y Fl(\))p Fu(-ply)23 b(result)g(may)g(be)g(insuf)n(\002cient)f(for)i(the)f (master)g(to)g(determine)g(the)g(minimax)0 2491 y(v)n(alue.)47 b(A)30 b(further)h(search)g(at)f(the)h(same)f(depth,)h(with)f(a)g(dif)n (ferent)g(search)h(windo)n(w)-6 b(,)30 b(is)g(required)h(when)f(this)0 2690 y(happens.)k(The)26 b(master)f(sends)h(a)g(message)g(to)f(the)h (sla)n(v)o(e)g(responsible)e(for)j(searching)f(the)f(node)h(that)g(it)f (needs)0 2889 y(to)31 b(re-e)o(x)o(ecute)g(the)h(search)g(with)e(a)i (re)n(vised)f(search)h(windo)n(w)-6 b(.)49 b(The)31 b(sla)n(v)o(e)g (will)g(e)n(v)o(entually)e(return)j(updated)0 3088 y(information)23 b(that)g(is)h(consistent)e(with)i(both)f(the)h(original)f(information)f (and)i(the)g(search)h(windo)n(w)d(requested.)146 3288 y(APHID)e(solv)o(es)e(one)h(of)g(the)g(problems)f(that)h(synchronous)f (algorithms)f(ha)n(v)o(e)i(with)f(respect)h(to)g(initializing)0 3487 y(parallelism)33 b(incorrectly)h(at)g(a)g(potential)f(CUT)h(node.) 58 b(Most)33 b(synchronous)g(algorithms)f(use)i(application-)0 3686 y(dependent)j(information)g(to)g(determine)h(when)g(to)f(initiate) g(parallelism.)69 b(By)38 b(using)f(the)h(guessed)f(scores)0 3885 y(when)d(accurate)h(information)d(is)h(not)h(a)n(v)n(ailable,)h (the)f(APHID)g(algorithm)e(automatically)h(determines)g(if)h(a)0 4085 y(subsequent)26 b(child)h(is)g(lik)o(ely)g(to)g(generate)h(a)g (cut-of)n(f)g(at)f(a)h(f)o(ailed)g(CUT)g(node.)38 b(Nodes)28 b(which)f(are)h(pruned)f(by)0 4284 y(the)f(master)l(,)g(using)f(either) h(real)g(or)g(guessed)g(scores,)g(are)h(not)e(searched)i(by)f(the)f (sla)n(v)o(es.)34 b(If)26 b(it)g(seems)f(unlik)o(ely)0 4483 y(that)g(the)f(node)h(will)f(be)h(pruned)g(\(e.g.)31 b(due)25 b(to)g(lo)n(w)f(real/guessed)h(v)n(alues\),)f(then)g(all)h (children)g(are)g(visited)f(and)0 4682 y(the)e(w)o(ork)h(w)o(ould)e(be) i(initiated)e(in)h(parallel.)30 b(This)22 b(is)g(all)g(handled)g (implicitly)e(in)i(an)h(application-independent)0 4882 y(w)o(ay)i(by)f(the)h Fq(\013)q(\014)30 b Fu(routine.)1900 5589 y(11)p eop %%Page: 12 15 12 14 bop 978 0 a 15345564 14208860 8420065 17234821 28417720 35653713 startTexFig 978 0 a %%BeginDocument: pics/aphid-snapshot.ps /arrowHeight 10 def /arrowWidth 5 def /IdrawDict 51 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright /parenleft/parenright/asterisk/plus/comma/minus/period/slash /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Helvetica reencodeISO def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def /SSten { fgred fggreen fgblue setrgbcolor dup true exch 1 0 0 -1 0 6 -1 roll matrix astore } def /FSten { dup 3 -1 roll dup 4 1 roll exch newpath 0 0 moveto dup 0 exch lineto exch dup 3 1 roll exch lineto 0 lineto closepath bgred bggreen bgblue setrgbcolor eofill SSten } def /Rast { exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def %I Idraw 10 Grid 6 6 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.799705 0 0 0.799705 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 5.99997 0 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 342 674 ] concat %I [ (Master) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 8 26 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 315 543.5 ] concat %I [ (1) ] Text End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 80 224 12 12 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -4 26 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 128 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 339 543.5 ] concat %I [ (2) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -10 26 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 164 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 357 544 ] concat %I [ (3) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -16 26 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 200 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 375 544 ] concat %I [ (4) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -22 26 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 236 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 393 544 ] concat %I [ (5) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 104 26 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 32 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 291 543.5 ] concat %I [ (7) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -28 26 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 272 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 411 544 ] concat %I [ (6) ] Text End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 68 260 164 452 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 68 260 272 260 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 164 452 272 260 Line %I 2 End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -71.5 99 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 308 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 428.5 544 ] concat %I [ (R) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 284 612.5 ] concat %I [ (d') ] Text End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 226 395 ] concat %I 148 518 100 518 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 226 395 ] concat %I 148 326 100 326 Line %I 2 End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 226 395 ] concat %I 124 446 124 506 Line %I 2 End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 226 395 ] concat %I 124 410 124 338 Line %I 2 End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 18 -24 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 128 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 339 543.5 ] concat %I [ (2) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 84 -24 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 164 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 357 544 ] concat %I [ (3) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -108 -24 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 200 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 375 544 ] concat %I [ (4) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 0 -24 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 236 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 393 544 ] concat %I [ (5) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 66 -24 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 272 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 411 544 ] concat %I [ (6) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -84 -24 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 315 543.5 ] concat %I [ (1) ] Text End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 80 224 12 12 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 12 -24 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 32 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 291 543.5 ] concat %I [ (7) ] Text End End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.458861 0 0 0.489848 235.544 397.7 ] concat %I 232 170 388 266 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.815325 0 0 0.489848 236.845 397.7 ] concat %I 232 170 364 266 Rect End Begin %I Line %I b 65520 1 0 0 [12 4] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1.21519 0 0 0.046875 83.0438 492.703 ] concat %I 100 241 376 241 Line %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 162 515 ] concat %I [ (APHID) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 162 503 ] concat %I [ (Table) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 222 497 ] concat %I [ (-1/4) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 258 497 ] concat %I [ (+2/3) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 297.5 497 ] concat %I [ (?/0) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 148 395 ] concat %I 136 170 352 266 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 348 497 ] concat %I [ (+5/5) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 468 497 ] concat %I [ (+1/3) ] Text End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 130 131 ] concat %I 140 331 98 217 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 130 131 ] concat %I 140 331 170 235 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 130 131 ] concat %I 98 217 110 229 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 130 131 ] concat %I 110 229 116 217 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 130 131 ] concat %I 116 217 122 247 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 130 131 ] concat %I 122 247 140 235 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 130 131 ] concat %I 140 235 146 247 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 130 131 ] concat %I 146 247 152 229 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 130 131 ] concat %I 152 229 158 247 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 130 131 ] concat %I 158 247 170 235 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 234 263 ] concat %I 288 398 204 194 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 234 263 ] concat %I 204 194 240 218 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 234 263 ] concat %I 240 218 252 230 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 234 263 ] concat %I 252 230 264 218 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 234 263 ] concat %I 264 218 276 182 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 234 263 ] concat %I 276 182 288 206 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 234 263 ] concat %I 288 206 300 230 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 234 263 ] concat %I 300 230 312 206 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 234 263 ] concat %I 312 206 324 230 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 234 263 ] concat %I 288 398 348 230 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 234 263 ] concat %I 324 230 348 230 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 338 230 ] concat %I 188 248 212 284 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 338 230 ] concat %I 212 284 236 248 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 338 230 ] concat %I 236 248 248 296 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 338 230 ] concat %I 248 296 272 260 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 338 230 ] concat %I 272 260 284 296 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 338 230 ] concat %I 284 296 308 272 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 338 230 ] concat %I 308 272 320 296 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 338 230 ] concat %I 260 464 320 296 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 338 230 ] concat %I 260 464 188 248 Line %I 2 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 246 341 ] concat %I [ (Slave 1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 354 341 ] concat %I [ (Slave 2) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 444 341 ] concat %I [ (Slave 3) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 35.5 -97.5 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 128 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 339 543.5 ] concat %I [ (2) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 54 -97 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 272 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 411 544 ] concat %I [ (6) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -24.5 -99 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 428 ] concat %I 32 224 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 291 543.5 ] concat %I [ (7) ] Text End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 130 296 ] concat %I 100 320 148 320 Line %I 2 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 130 296 ] concat %I 100 164 148 164 Line %I 2 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 180.5 421.5 ] concat %I [ (d-d') ] Text End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 130 296 ] concat %I 124 224 124 176 Line %I 2 End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 130 296 ] concat %I 124 260 124 308 Line %I 2 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 384 497 ] concat %I [ (+4/5) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 60 -36 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 -0 -0 0.5 278 362 ] concat %I 356 380 12 12 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 453 555.5 ] concat %I [ (8) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 504 497 ] concat %I [ (-3/1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* Helvetica 12 SetF %I t [ 1 0 0 1 432 497 ] concat %I [ (<0/4) ] Text End End %I eop showpage end %%EndDocument endTexFig 893 2003 a Fu(Figure)25 b(5:)30 b(A)25 b(Snapshot)f(of)h(APHID)g (Search)h(in)f(Operation)0 2291 y Fg(3.2)119 b(The)30 b(APHID)g(T)-11 b(able)0 2557 y Fu(If)35 b(a)g(leaf)h(node)e(is)h (visited)e(by)i(the)g(master)f(for)h(the)g(\002rst)g(time,)h(it)f(is)f (allocated)g(to)h(a)g(sla)n(v)o(e)f(process.)61 b(This)0 2756 y(information)33 b(is)i(recorded)g(in)g(the)f Fm(APHID)h(table)f Fu(that)h(is)f(shared)h(by)f(all)h(processes.)61 b(Figure)35 b(5)f(sho)n(ws)g(an)0 2956 y(e)o(xample)24 b(of)h(ho)n(w)f(the)g(APHID) i(table)e(w)o(ould)g(be)h(or)n(ganized)g(at)g(a)g(gi)n(v)o(en)e(point)h (in)g(time.)146 3155 y(The)k(table)f(is)g(replicated)h(on)f(the)g (master)g(and)h(sla)n(v)o(e)f(processes.)38 b(Ho)n(we)n(v)o(er)l(,)27 b(each)h(sla)n(v)o(e)f(only)g(kno)n(ws)f(of)0 3354 y(the)i(entries)h (rele)n(v)n(ant)e(to)h(it)g(within)f(the)i(table.)41 b(F)o(or)29 b(e)o(xample,)f(in)g(Figure)h(5,)g(sla)n(v)o(e)f(1)g(only)g (kno)n(ws)f(about)h(the)0 3553 y(entries)23 b(for)h(1,)f(4)g(and)g(7.) 30 b(The)24 b(master)l(,)f(which)g(is)g(responsible)f(for)h(distrib)n (uting)e(the)i(w)o(ork)g(to)g(all)g(of)h(its)e(sla)n(v)o(es,)0 3753 y(has)j(copies)f(of)h(e)n(v)o(ery)f(table)h(entry)-6 b(.)146 3952 y(The)39 b(master)f(and)h(sla)n(v)o(e)f(only)g(read)h (their)f(local)h(copies)f(of)h(the)f(information;)44 b(there)39 b(are)g(no)g(e)o(xplicit)0 4151 y(messages)19 b(sent)h(between)g(them)f(asking)g(for)h(information.)28 b(The)20 b(entries)f(in)h(the)g(APHID)g(table)g(are)g(partitioned)0 4350 y(into)k(tw)o(o)g(parts:)30 b(one)25 b(which)f(only)g(the)g (master)h(can)g(write)f(to,)g(and)h(one)g(which)f(only)g(the)g(sla)n(v) o(e)g(that)g(has)h(been)0 4550 y(assigned)i(that)g(piece)h(of)g(w)o (ork)g(can)g(write)g(to.)39 b(An)o(y)27 b(attempt)f(to)i(write)f(into)g (the)h(table)f(generates)h(a)g(message)0 4749 y(that)c(informs)g(the)h (master)f(or)h(sla)n(v)o(e)f(process)h(to)f(update)h(its)f(replicated)h (cop)o(y)f(of)h(the)g(table)f(entry)-6 b(.)146 4948 y(The)33 b(master')-5 b(s)32 b(half)h(of)g(the)g(table)g(is)g(illustrated)e(abo) o(v)o(e)h(the)h(dashed)g(line)f(in)h(Figure)g(5.)55 b(F)o(or)33 b(each)h(leaf)0 5147 y(visited)26 b(by)i(the)f(master)l(,)h(there)g(is) f(an)g(entry)h(in)f(the)g(APHID)h(table.)39 b(Information)27 b(maintained)f(on)h(the)h(lea)n(v)o(es)1900 5589 y(12)p eop %%Page: 13 16 13 15 bop 0 100 a Fu(includes)20 b(the)g(mo)o(v)o(es)f(required)i(to)f (generate)h(the)f(leaf)h(positions)e(from)h(the)g(root)h Fb(R)p Fu(,)f(the)g(approximate)g(location)0 299 y(of)27 b(the)f(leaf)i(in)e(the)h(tree)g(\(which)f(is)h(used)f(by)h(the)f(sla)n (v)o(e)g(to)h(prioritize)f(w)o(ork\),)h(whether)g(this)e(leaf)j(w)o(as) e(visited)0 498 y(on)e(the)g(last)f(pass)h(that)g(the)g(master)g(e)o(x) o(ecuted,)f(and)h(the)g(number)f(of)i(the)f(sla)n(v)o(e)f(that)h(the)g (leaf)g(w)o(as)g(assigned)g(to.)146 697 y(In)32 b(our)f(e)o(xample,)i (roughly)d(the)i(same)f(number)g(of)h(lea)n(v)o(es)f(ha)n(v)o(e)g(been) h(allocated)f(to)g(each)h(sla)n(v)o(e.)50 b(Note)0 897 y(that)22 b(there)h(is)g(an)g(additional)e(leaf,)j(8,)f(that)f(is)g (not)g(represented)i(in)e(the)h(master')-5 b(s)21 b Fq(d)2862 860 y Fp(0)2885 897 y Fu(-ply)i(search)g(tree.)31 b(This)22 b(leaf)0 1096 y(node)i(w)o(as)g(visited)f(on)h(a)g(pre)n(vious)f(pass)h (by)g(the)g(master)l(,)g(b)n(ut)f(w)o(as)h(not)g(visited)f(on)h(the)g (latest)f(pass.)30 b(Ho)n(we)n(v)o(er)l(,)0 1295 y(the)e(information)e (that)h(the)h(sla)n(v)o(e)f(has)h(generated)g(about)f(this)g(node)h (may)f(be)h(needed)g(in)g(a)g(later)g(pass,)g(and)g(is)0 1494 y(not)23 b(deleted)g(from)g(the)g(table.)30 b(Lea)n(v)o(es)23 b(are)h(initially)d(allocated)i(to)g(the)g(sla)n(v)o(es)f(in)h(a)h (round-robin)e(manner)l(,)h(and)0 1694 y(may)h(mo)o(v)o(e)g(due)h(to)f (load)g(balancing)h(\(as)g(described)f(in)h(Section)g(3.4\).)146 1893 y(The)i(sla)n(v)o(e')-5 b(s)25 b(part)h(of)h(the)f(table)g(\(the)g (area)h(belo)n(w)f(the)g(dashed)g(line\))g(contains)g(information)f(on) h(the)g(min-)0 2092 y(imax)31 b(v)n(alue)g(at)g(v)n(arious)g(depths)f (of)i(search.)51 b(The)32 b(best)f(information)f(\(with)h(respect)h(to) f(search)h(depth\))f(and)0 2291 y(the)e(ply)g(to)g(which)g(the)h(leaf)g (w)o(as)f(e)o(xamined)g(is)g(gi)n(v)o(en)f(underneath)h(each)h(leaf)g (node.)45 b(F)o(or)29 b(leaf)h(1,)g(the)g(score)0 2491 y(returned)i(is)f(-1)h(with)f(a)h(search)g(depth)f(of)h(4.)51 b(Leaf)33 b(3)e(illustrates)g(that)g(the)g(score)h(information)f (returned)g(by)0 2690 y(the)25 b(sla)n(v)o(e)f(may)h(not)g(al)o(w)o (ays)g(be)g(an)g(e)o(xact)g(number)-5 b(.)31 b(The)25 b(sla)n(v)o(es)f(maintain)g(upper)h(and)g(lo)n(wer)f(bounds)g(on)h(the) 0 2889 y(minimax)g(v)n(alue)h(of)h(each)h(node)e(for)h(each)h(ply)e(of) h(search)g(depth.)2306 2853 y Fn(5)2382 2889 y Fu(This)f(information)f (is)i(determined)f(by)g(the)0 3088 y(minimax)31 b(v)n(alue)h(returned)h (and)g(the)g(search)g(windo)n(w)f(used)g(by)h(the)g(sla)n(v)o(e.)54 b(F)o(or)33 b(simplicity)-6 b(,)32 b(only)g(a)h(single)0 3288 y(bound)24 b(is)g(sho)n(wn.)146 3487 y(The)32 b(APHID)f(table)g (data)h(structure)e(must)g(support)h(tw)o(o)f(time)h(critical)g (operations:)42 b(\002nding)31 b(a)h(node)e(in)0 3686 y(the)i(table,)i(and)e(adding)f(a)h(node)g(to)g(the)g(table.)52 b(Hence,)35 b(the)d(APHID)g(table)g(has)g(been)g(implemented)f(as)h(an) 0 3885 y(e)o(xtendible)f(hash)g(table.)52 b(Applications)31 b(that)g(w)o(ould)g(use)h(APHID)h(generally)f(ha)n(v)o(e)f(a)i (transposition)d(table;)0 4085 y(the)21 b(transposition)e(table)i (hashing)g(function)f(can)i(also)f(be)h(used)f(to)g(\002nd)g(and)g(add) h(lea)n(v)o(es)e(to)h(the)h(APHID)f(table.)0 4380 y Fg(3.3)119 b(The)30 b(APHID)g(Sla)m(v)o(e)0 4646 y Fu(A)20 b(sla)n(v)o(e)f (process)g(essentially)f(e)o(x)o(ecutes)h(the)g(same)h(code)f(that)h(a) f(sequential)g Fq(\013)q(\014)25 b Fu(searcher)c(w)o(ould.)28 b(The)19 b(sla)n(v)o(e')-5 b(s)0 4846 y(main)24 b(loop)g(simply)f (repeats)i(the)g(follo)n(wing)e(steps)h(until)g(the)g(master)h(tells)f (it)g(that)g(the)h(search)g(is)g(complete:)p 0 4935 1560 4 v 112 4996 a Fj(5)149 5027 y Fi(Note)c(that)f(tw)o(o)g(bounds)f(may)h (be)g(needed.)j(A)e(search)f(may)g(return)f(an)h(upper)f(bound)f(on)i (a)g(score.)25 b(That)20 b(node)f(may)h(ha)n(v)o(e)f(to)i(be)0 5126 y(re-searched)e(to)i(get)g(more)e(information)g(on)h(its)i(score.) k(The)21 b(second)e(search)i(may)f(return)g(a)h(lo)n(wer)f(bound)f (that)i(is)g(good)f(enough)e(to)0 5226 y(cause)i(a)h(cutof)n(f.)1900 5589 y Fu(13)p eop %%Page: 14 17 14 16 bop 120 100 a Fu(1.)49 b(Look)24 b(in)h(its)f(local)g(cop)o(y)h (of)g(the)f(APHID)i(table)e(and)h(\002nd)g(the)f(best)h(node)f(to)h (search.)120 382 y(2.)49 b(Ex)o(ecute)24 b(the)h(search.)120 664 y(3.)49 b(Report)25 b(the)g(result)f(back)h(to)f(the)h(master)f (\(fetching)h(an)o(y)f(update)h(to)f(its)g(APHID)i(table)e(in)h (return\).)120 946 y(4.)49 b(Go)25 b(to)f(step)g(1.)146 1254 y(A)g(sla)n(v)o(e)f(chooses)g(the)h(\223best\224)f(node)h(based)f (on)h(tw)o(o)f(criteria:)30 b(the)24 b(depth)f(to)g(which)g(the)h(node) f(has)h(already)0 1453 y(been)35 b(searched)g(by)g(the)f(sla)n(v)o(e,)j (and)d(the)h(node')-5 b(s)34 b(\223priority\224)g(within)f(the)i (search)g(tree.)61 b(The)35 b(\002rst)f(criterion)0 1652 y(ensures)28 b(that)g(all)h(pieces)f(of)h(w)o(ork)f(are)h(searched)h (to)e(equal)g(depths.)41 b(Nodes)28 b(searched)h(to)f(shallo)n(wer)g (depths)0 1851 y(are)f(preferred)h(o)o(v)o(er)e(those)g(searched)i(to)e (deeper)i(depths,)e(because)h(the)o(y)f(represent)h(more)g(w)o(ork)f (to)h(be)f(done.)0 2051 y(In)j(Figure)g(5,)g(sla)n(v)o(e)g(1)f(has)h (master)f(leaf)i(nodes)e(1,)i(4)e(and)h(7,)h(and)e(the)o(y)g(ha)n(v)o (e)h(been)g(searched)g(to)g(depths)f(4,)h(3)0 2250 y(and)23 b(0,)f(respecti)n(v)o(ely)-6 b(.)28 b(Thus,)23 b(sla)n(v)o(e)f(1)g(is)g (attempting)f(to)h(search)h(leaf)g(7)g(to)f(1)g(ply)-6 b(,)22 b(and)h(will)f(continue)f(to)i(search)0 2449 y(leaf)i(7)g(up)f (to)h(3)g(ply)f(using)g(iterati)n(v)o(e)f(deepening,)h(if)h(no)g(ne)n (w)f(high-priority)f(w)o(ork)i(arri)n(v)o(es)f(from)g(the)h(master)-5 b(.)146 2648 y(The)33 b(second)e(criterion)h(is)g(the)g(location)f(of)i (the)f(node)g(within)f(the)h(master')-5 b(s)31 b(latest)h(pass)f(o)o(v) o(er)h(the)g(tree.)0 2848 y(Children)e(of)g(nodes)g(are)h(usually)e (considered)h(in)g(a)g(best-to-w)o(orst)f(ordering,)i(implying)d(that)i (the)g(left-most)0 3047 y(branches)g(at)f(a)h(node)f(are)h(less)f(lik)o (ely)f(to)h(be)h(pruned)f(than)g(the)g(right-most)e(ones.)44 b(F)o(or)30 b(sla)n(v)o(e)e(2)i(in)f(Figure)g(5,)0 3246 y(lea)n(v)o(es)i(2)h(and)f(5)h(ha)n(v)o(e)f(both)g(been)g(searched)h (to)g(5)f(ply)-6 b(,)32 b(b)n(ut)f(leaf)h(2)f(is)g(being)g(searched)i (to)e(6)g(ply)g(since)h(it)f(is)0 3445 y(further)25 b(left)g(in)f(the)h (tree)g(than)f(leaf)i(5.)146 3645 y(Unfortunately)-6 b(,)27 b(maintaining)f(a)i(complete)f(ordering)h(of)g(each)g(leaf)g(in) g(the)f(master')-5 b(s)27 b Fq(d)3251 3609 y Fp(0)3274 3645 y Fu(-ply)h(tree)g(can)g(be)0 3844 y(e)o(xpensi)n(v)o(e.)33 b(Thus,)25 b(APHID)i(uses)f(a)g(priority)f(scheme)h(to)g(gi)n(v)o(e)f (an)h(approximation)e(of)j(the)f(second)g(criterion.)0 4043 y(The)k(formula)f(for)h(the)g(priority)f(is)g(as)h(follo)n(ws:)39 b(F)o(or)30 b(each)g(principal)f(v)n(ariation)g(node)h(that)f(lies)g (on)h(the)f(path)0 4242 y(from)d(the)h(root)f(of)h(the)f(tree)h(to)f (the)h(node)f(in)h(question,)e(four)i(points)e(are)j(added)e(to)g(the)h (node')-5 b(s)26 b(priority)-6 b(.)34 b(T)-8 b(w)o(o)0 4442 y(points)25 b(are)i(gi)n(v)o(en)e(to)g(the)h(node')-5 b(s)26 b(priority)f(if)h(it)g(is)g(considered)g(to)g(be)g(part)g(of)g (the)h(critical)f(tree.)35 b(The)26 b(priority)0 4641 y(scheme)k(ensures)g(that)g(the)g(search)h(proceeds)f(in)g(a)h(roughly) e(left-to-right)g(manner)l(,)j(and)e(that)g(nodes)f(within)0 4840 y(the)e(critical)f(tree)h(are)h(preferred)f(o)o(v)o(er)f(nodes)g (that)h(might)e(not)h(be)h(e)n(v)n(aluated.)35 b(Ev)o(ery)26 b(node)h(visited)e(in)h(a)h(pass)0 5039 y(of)c(the)g(game)g(tree)h(by)f (the)g(master)f(gets)h(at)h(least)e(4)i(points,)e(since)h(the)g(root)g (is)f(part)i(of)f(the)g(principal)f(v)n(ariation.)0 5239 y(Nodes)i(that)g(are)h(not)f(touched)g(on)g(the)g(master')-5 b(s)24 b(latest)g(pass)g(of)g(the)g(game)g(tree)h(are)g(gi)n(v)o(en)e (a)i(priority)e(of)i(zero.)1900 5589 y(14)p eop %%Page: 15 18 15 17 bop 146 100 a Fu(A)21 b(node)g(with)f(zero)h(priority)f(will)g (ne)n(v)o(er)g(be)h(selected)g(for)g(further)g(search)g(by)f(a)i(sla)n (v)o(e.)28 b(F)o(or)21 b(sla)n(v)o(e)f(3,)i(notice)0 299 y(that)h(leaf)g(8)h(has)f(been)g(searched)h(pre)n(viously)-6 b(,)21 b(b)n(ut)i(not)f(on)h(the)g(last)g(pass.)30 b(This)22 b(leaf)i(is)f(ignored)f(by)h(the)g(sla)n(v)o(e')-5 b(s)0 498 y(w)o(ork)25 b(selection)f(algorithm)f(because)i(it)g(is)f(not)g (currently)h(part)g(of)f(the)h(master')-5 b(s)24 b(tree.)146 697 y(If)e(there)g(are)g(nodes)g(that)f(must)f(be)i(searched)g(for)g (the)f(current)h(iteration)f(of)g(the)h(master)l(,)g(the)f(node)g(with) g(the)0 897 y(highest)27 b(priority)h(is)g(al)o(w)o(ays)g(scheduled)g (until)g(it)g(has)g(been)h(searched)g(to)f(the)h(requisite)e(depth.)42 b(This)27 b(allo)n(ws)0 1096 y(the)g(master')-5 b(s)26 b(de)n(v)o(elopment)f(of)i(the)g(search)g(tree)h(to)e(proceed)h(in)g (an)g(orderly)g(manner)-5 b(.)37 b(When)27 b(all)f(nodes)h(at)g(a)0 1295 y(sla)n(v)o(e)d(ha)n(v)o(e)h(been)g(searched)h(to)f(the)f(master') -5 b(s)25 b(required)g(depth,)f(the)h(nodes)g(at)g(the)g(lo)n(west)e (search)j(depth)e(ha)n(v)o(e)0 1494 y(their)h(search)g(e)o(xtended,)f (with)g(priority)g(v)n(alues)g(as)h(a)g(secondary)f(consideration.)146 1694 y(Before)32 b(a)f(search)g(can)g(be)f(e)o(x)o(ecuted,)h(an)g Fq(\013)q(\014)36 b Fu(search)31 b(windo)n(w)e(must)g(be)i(generated)g (by)f(the)g(sla)n(v)o(e.)47 b(The)0 1893 y(windo)n(w)29 b(selection)g(algorithm)g(is)g(application-dependent.)46 b(The)30 b(general-purpose)g(windo)n(w)f(selection)g(al-)0 2092 y(gorithm)i(used)h(by)f(the)h(applications)f(in)h(this)f(paper)i (in)l(v)n(olv)o(ed)d(centering)i(the)g(search)h(windo)n(w)d(around)i (the)0 2291 y(probable)c(minimax)e(v)n(alue)i(of)g(the)g(game)g(tree.) 41 b(The)28 b(search)g(windo)n(w)f(w)o(as)h(made)g(slightly)f(lar)n (ger)h(to)g(re\003ect)0 2491 y(the)f(amount)e(of)i(uncertainty)f(in)h (the)f(probable)h(minimax)e(v)n(alue.)36 b(Further)27 b(details)f(on)h(the)f(algorithm)g(can)h(be)0 2690 y(found)d(in)h (Appendix)f(B.)0 2985 y Fg(3.4)119 b(Load)30 b(Balancing)0 3252 y Fu(Although)21 b(the)i(master)g(attempts)f(to)g(gi)n(v)o(e)g(an) h(equal)g(amount)f(of)h(w)o(ork)f(to)h(each)g(sla)n(v)o(e)g(in)f (APHID,)i(neither)e(the)0 3451 y(master)h(nor)h(the)f(sla)n(v)o(e)g (can)h(predict)f(the)h(amount)e(of)i(ef)n(fort)f(required)h(to)f (complete)g(a)h Fl(\()p Fq(d)17 b Fk(\000)h Fq(d)3261 3415 y Fp(0)3284 3451 y Fl(\))p Fu(-ply)23 b(search)h(for)0 3650 y(a)h(gi)n(v)o(en)e(piece)j(of)e(w)o(ork.)31 b(Thus,)24 b(load)g(imbalances)h(can)g(occur)-5 b(.)146 3849 y(As)22 b(part)g(of)g(a)g(pass)f(of)h(the)g Fq(d)1120 3813 y Fp(0)1143 3849 y Fu(-ply)f(tree,)i(the)f(master)f(computes)g(ho)n(w)g (man)o(y)g(uncertain)g(nodes)g(it)h(is)f(w)o(aiting)0 4049 y(for)i(from)g(each)h(sla)n(v)o(e.)29 b(The)23 b(master)g(can)g (mo)o(v)o(e)e(lea)n(v)o(es)i(of)g(the)g Fq(d)2258 4012 y Fp(0)2281 4049 y Fu(-ply)f(tree)i(from)e(an)i Fm(o)o(verwork)o(ed)f (slave)g Fu(\(with)0 4248 y(a)g(lar)n(ge)g(number)f(of)h(uncertain)f (nodes\))g(to)g(an)h Fm(underwork)o(ed)g(slave)f Fu(\(with)g(no)g (uncertain)h(nodes\).)29 b(This)22 b(yields)0 4447 y(a)39 b(tradeof)n(f)g(between)g(f)o(aster)g(con)l(v)o(er)n(gence)g(for)g(a)g (gi)n(v)o(en)f(ply)g(search)h(of)g(the)g(tree)g(and)g(additional)f (search)0 4646 y(o)o(v)o(erhead,)31 b(since)f(the)g(pre)n(vious)f (searches)i(for)f(the)g(piece)h(of)f(w)o(ork)g(to)g(be)h(mo)o(v)o(ed)d (must)i(be)g(re-searched)h(on)0 4846 y(another)25 b(processor)-5 b(.)146 5045 y(The)39 b(load-balancing)e(algorithm)g(al)o(w)o(ays)h (attempts)f(to)h(strip)g(pieces)g(of)h(w)o(ork)f(a)o(w)o(ay)g(from)g (the)g(most)0 5244 y(o)o(v)o(erw)o(ork)o(ed)c(sla)n(v)o(e.)60 b(The)35 b(algorithm)e(prefers)j(to)e(tak)o(e)h(pieces)g(of)g(w)o(ork)g (that)f(are)i(small,)g(since)f(the)o(y)f(lead)1900 5589 y(15)p eop %%Page: 16 19 16 18 bop 0 100 a Fu(to)30 b(less)f(duplicated)g(w)o(ork.)47 b(The)30 b(\002rst)g(uncertain)g(node)f(encountered)h(for)h(each)f(sla) n(v)o(e)g(during)f(a)h(pass)g(is)g(not)0 299 y(considered)c(for)g (load-balancing)f(purposes,)g(since)h(it)f(is)h(lik)o(ely)f(being)g (searched)i(by)e(that)h(sla)n(v)o(e)f(at)h(this)f(time.)0 498 y(Another)f(stipulation)f(is)h(that)g(the)h(same)f(piece)h(of)g(w)o (ork)g(cannot)f(be)h(mo)o(v)o(ed)e(twice)h(in)h(a)g(ro)n(w;)f(this)f (pre)n(v)o(ents)h(a)0 697 y(v)o(ery)g(small)g(piece)h(of)g(w)o(ork)g (from)f(being)h(passed)f(from)h(process)g(to)f(process.)146 897 y(Another)i(cause)h(of)f(a)h(load)f(imbalance)g(is)g(a)g(piece)h (of)f(w)o(ork)g(that)g(is)g(much)g(lar)n(ger)h(than)f(the)g(other)g (pieces)0 1096 y(of)k(w)o(ork.)47 b(F)o(or)30 b(e)o(xample,)h(the)f (search)h(tree)f(for)h(a)g(node)f(along)f(the)h(principal)g(v)n (ariation)f(is)h(generally)g(much)0 1295 y(lar)n(ger)39 b(than)f(the)g(last)g(subtrees)g(e)o(xamined)f(during)h(a)h(sequential) e(search.)72 b(When)38 b(there)h(is)f(such)g(a)h(lar)n(ge)0 1494 y(piece)d(of)f(w)o(ork,)j(multiple)33 b(processes)i(should)f (participate)h(in)g(computing)e(the)j(minimax)d(v)n(alue.)62 b(Thus,)37 b(a)0 1694 y(mechanism)27 b(is)g(needed)i(for)f(breaking)g (a)g(lar)n(ge)g(piece)h(of)f(w)o(ork)g(into)f(a)h(number)g(of)g (smaller)f(pieces)h(that)g(can)0 1893 y(be)35 b(distrib)n(uted)e(\(via) i(the)g(load-balancing)f(algorithm\))g(to)g(other)h(processes.)61 b(This)34 b(can)h(be)g(accomplished)0 2092 y(by)e(mo)o(ving)e(the)i (master')-5 b(s)32 b(parallelization)g(horizon)h(deeper)h(within)e(the) h(tree)g(for)h(a)f(lar)n(ge)h(piece)f(of)g(w)o(ork.)0 2291 y(This)c(allo)n(ws)f(the)h(master)g(to)g(subdi)n(vide)f(a)i (single)e(piece)i(of)g(w)o(ork)f(into)g(man)o(y)f(smaller)h(pieces.)45 b(It)29 b(could)g(be)0 2491 y(said)f(that)h(the)f(lar)n(ge)h(piece)h (of)e(w)o(ork)h(is)f Fm(e)n(xempted)h Fu(from)g(the)g(parallelization)e (horizon)i(at)f Fq(d)3283 2455 y Fp(0)3306 2491 y Fu(-ply)-6 b(.)42 b(Note)29 b(that)0 2690 y(ne)n(w)c(pieces)h(of)g(w)o(ork)g (created)g(from)f(e)o(x)o(emptions)f(can)i(also)f(be)h(e)o(x)o(empted.) 32 b(Thus,)25 b(Figure)h(4)g(is)f(misleading;)0 2889 y(APHID)g(parallelism)f(does)g(not)h(necessarily)f(occur)h(at)g(the)g (same)f(depth)h(in)f(the)h(tree.)146 3088 y(The)32 b(master)f(is)g (responsible)g(for)h(determining)e(the)i(pieces)f(of)h(w)o(ork)f(to)h (be)g(e)o(x)o(empted.)49 b(It)32 b(bases)f(these)0 3288 y(decisions)22 b(on)g(the)g(sla)n(v)o(e')-5 b(s)22 b(feedback)h(on)f (the)h(ef)n(fort)f(required)h(to)f(search)h(each)g(piece)g(of)g(w)o (ork)f(\(subtree)h(size\).)0 3487 y(Periodically)-6 b(,)35 b(the)f(master)g(determines)f(the)h(lar)n(gest)g(pieces)g(of)g(w)o(ork) g(that)g(ha)n(v)o(e)f(been)h(e)o(xplored)g(recently)-6 b(,)0 3686 y(along)22 b(with)g(the)h(a)n(v)o(erage)g(size)g(of)g(each)h (piece)f(of)g(w)o(ork.)30 b(If)23 b(the)g(size)g(of)g(the)f(lar)n(gest) h(piece)g(of)g(w)o(ork)g(is)f Fq(v)27 b Fu(times)0 3885 y(the)f(size)g(of)g(the)g(a)n(v)o(erage)g(piece)g(of)g(w)o(ork,)h(the)e (lar)n(gest)h(piece)h(of)f(w)o(ork)f(is)h(subdi)n(vided)e(in)h(future)h (searches.)35 b Fq(v)0 4085 y Fu(is)24 b(an)h(application-dependent)f (parameter)h(in)f(APHID.)146 4284 y(The)38 b(nature)h(of)f(the)g Fq(\013)q(\014)43 b Fu(algorithm)37 b(does)h(not)f(guarantee)i(that)e (man)o(y)g(more)h(w)o(ork)g(granules)g(will)f(be)0 4483 y(created)27 b(if)g(the)f(search)h(horizon)f(is)g(e)o(xtended)g(by)g(a) h(single)f(ply)-6 b(.)34 b(F)o(or)27 b(e)o(xample,)f(if)g(the)h(node)f (to)g(be)h(e)o(x)o(empted)0 4682 y(is)h(a)g(CUT)h(node,)g(then)f(the)g (search)g(will)g(lik)o(ely)f(generate)i(a)f(single)g(ALL)g(node.)40 b(When)29 b(APHID)f(e)o(x)o(empts)f(a)0 4882 y(lar)n(ge)i(piece)f(of)g (w)o(ork,)h(the)f(horizon)g(is)f(e)o(xtended)h(by)g(2)g(ply)f(to)h (guarantee)h(that)e(the)h(w)o(ork)g(will)g(be)g(split)f(into)0 5081 y(multiple)c(pieces.)1900 5589 y(16)p eop %%Page: 17 20 17 19 bop 0 100 a Fg(3.5)119 b(Exter)n(nal)30 b(Interface)g(of)f(the)h (APHID)g(Algorithm)0 366 y Fu(The)25 b(APHID)g(algorithm)f(has)h(been)g (written)f(as)h(an)g(application-independent)e(library)h(of)h(C)h (routines)e(\(using)0 565 y(PVM)37 b(for)g(process)g(communication)f ([4]\).)68 b(It)37 b(w)o(as)g(designed)f(to)h(pro)o(vide)f(minimal)f (interv)o(ention)h(into)g(a)0 765 y(w)o(orking)29 b(v)o(ersion)f(of)i (sequential)e Fq(\013)q(\014)6 b Fu(.)44 b(F)o(or)30 b(a)g(program)f(to)g(use)g(the)h(library)-6 b(,)29 b(a)h(fe)n(w)g (application-dependent)0 964 y(routines)22 b(\(such)h(as)h(mo)o(v)o(e)d (format,)i(ho)n(w)g(to)g(mak)o(e/unmak)o(e)f(mo)o(v)o(es,)f(setting)h (a)i(windo)n(w)e(for)h(a)h(sla)n(v)o(e')-5 b(s)22 b(search,)0 1163 y Fm(etc)p Fu(.\))39 b(must)27 b(be)h(written)e(so)i(that)f(APHID) h(can)g(access)g(the)f(required)h(information)e(without)g(ha)n(ving)h (to)g(kno)n(w)0 1362 y(the)e(data)g(structures)f(used)g(in)h(the)f (application.)146 1562 y(T)-8 b(o)25 b(parallelize)f(a)h(sequential)e Fq(\013)q(\014)30 b Fu(program,)24 b(the)g(user)h(modi\002es)e(their)i (search)g(routine)e(as)i(sho)n(wn)e(in)h(Fig-)0 1761 y(ure)h(6.)32 b(The)25 b(changes)g(required)g(by)g(APHID)h(are)g(mark)o (ed)f(by)g(shading,)f(and)h(easily)f(\002t)i(into)e(the)h(standard)g Fq(\013)q(\014)0 1960 y Fu(frame)n(w)o(ork.)42 b(This)28 b(one)h(piece)g(of)g(code)g(functions)e(as)i(the)g(search)g(algorithm)e (for)i(both)f(the)h(master)g(and)f(the)0 2159 y(sla)n(v)o(e)22 b(processes.)30 b(The)22 b Fb(aphid)p 1144 2159 30 4 v 35 w(master)f Fu(routine)h(identi\002es)g(whether)h(the)f(process)h (is)f(a)h(master)f(or)h(a)g(sla)n(v)o(e.)0 2359 y(The)j(master)f(uses)h Fb(aphid)p 976 2359 V 34 w(horizon)f Fu(to)g(tell)g(if)h(it)f(is)h(at)f (a)i(leaf)f(node)f(in)h(its)f(tree.)34 b(Since)26 b(games)f(are)h (played)0 2558 y(under)31 b(real-time)g(constraints,)g Fb(aphid)p 1444 2558 V 35 w(checkalarm)e Fu(is)i(periodically)f(called) h(to)g(check)h(whether)f(there)0 2757 y(is)i(a)h(reason)g(to)g(abort)f (the)h(search.)58 b Fb(Aphid)p 1621 2757 V 35 w(intnode)p 2076 2757 V 34 w(start)33 b Fu(and)h Fb(aphid)p 2921 2757 V 35 w(intnode)p 3376 2757 V 34 w(end)f Fu(tell)g(the)0 2956 y(master)27 b(that)g(a)h(search)g(is)f(be)o(ginning/ending)e(for)j (this)e(interior)h(node.)39 b(Which)27 b(searching)h(an)f(interior)g (node,)0 3156 y Fb(aphid)p 306 3156 V 35 w(intmnode)p 821 3156 V 34 w(move)18 b Fu(k)o(eeps)h(track)g(of)g(which)f(mo)o(v)o (e)f(is)i(being)f(searched,)j(and)d Fb(aphid)p 3359 3156 V 35 w(intnode)p 3814 3156 V 34 w(update)0 3355 y Fu(records)25 b(the)g(v)n(alue)f(of)h(the)g(search.)146 3554 y(In)32 b(addition)e(to)i(the)f(abo)o(v)o(e,)h(approximately)e(10)i(lines)f(of) g(code)h(ha)n(v)o(e)f(to)h(be)f(added)h(outside)f(of)g(the)h Fq(\013)q(\014)0 3753 y Fu(algorithm)25 b(to)g(allo)n(w)g(APHID)i(to)f (mak)o(e)g(the)g(sequential)f(program)h(into)f(a)h(parallel)g(program.) 35 b(More)26 b(speci\002c)0 3953 y(information)d(on)i(each)g(of)g(the)g Fb(aphid)p 1388 3953 V 59 w Fu(functions)f(and)h(call-back)g(routines)f (can)h(be)g(found)f(else)n(where)h([2].)146 4152 y(Other)31 b(parallel)f Fq(\013)q(\014)6 b Fu(-based)30 b(algorithms)f(require)i (signi\002cant)f(changes)h(to)f(the)g(sequential)g(search)h(algo-)0 4351 y(rithms)24 b(used)i(in)f(practice.)34 b(If)26 b(the)f(search)i (algorithm)d(has)i(been)f(designed)g(without)g(re)o(gard)g(for)h (multitasking)0 4550 y(or)f(a)f(speci\002c)h(parallel)g(model,)e(inte)o (grating)g(a)i(parallel)f(algorithm)f(into)h(the)g(code)h(can)f(be)h(a) g(signi\002cant)f(task.)0 4750 y(By)33 b(using)e(the)h(sequential)f (algorithm)g(and)h(call-back)h(functions)e(to)h(the)g(user')-5 b(s)31 b(code)i(whene)n(v)o(er)f(possible,)0 4949 y(APHID)25 b(represents)f(a)g(signi\002cant)g(decrease)h(in)e(the)h(ef)n(fort)g (required)h(to)e(achie)n(v)o(e)h(a)g(w)o(orking)g(parallel)g(game-)0 5148 y(tree)h(search)h(program)e(o)o(v)o(er)g(its)g(synchronous)g (counterparts.)1900 5589 y(17)p eop %%Page: 18 21 18 20 bop 789 188 a 18334146 37416636 11972280 9472573 28220375 42626580 startTexFig 789 188 a %%BeginDocument: pics/aphidcode-alphabeta.ps %Magnification: 0.50 /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save 151.5 664.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit n 0 792 m 0 0 l 612 0 l 612 792 l cp clip 0.03000 0.03000 sc % Polyline n 1150 5445 m 9150 5445 l 9150 5645 l 1150 5645 l cp gs 0.90 setgray ef gr % Polyline n 1150 7245 m 9150 7245 l 9150 7845 l 1150 7845 l cp gs 0.90 setgray ef gr % Polyline n 1150 8645 m 9150 8645 l 9150 9445 l 1150 9445 l cp gs 0.90 setgray ef gr % Polyline n 1150 10045 m 9150 10045 l 9150 10245 l 1150 10245 l cp gs 0.90 setgray ef gr % Polyline n 1150 10645 m 9150 10645 l 9150 10845 l 1150 10845 l cp gs 0.90 setgray ef gr % Polyline n 1150 12645 m 9150 12645 l 9150 12845 l 1150 12845 l cp gs 0.90 setgray ef gr % Polyline n 1150 14645 m 9150 14645 l 9150 14845 l 1150 14845 l cp gs 0.90 setgray ef gr 7.500 slw % Polyline n 1050 575 m 9250 575 l 9250 17300 l 1050 17300 l cp gs col-1 s gr /Courier ff 180.00 scf sf 1500 1400 m gs 1 -1 sc (int numOfSuccessors;) col-1 sh gr /Courier ff 180.00 scf sf 1500 1600 m gs 1 -1 sc (int gamma;) col-1 sh gr /Courier ff 180.00 scf sf 1500 1800 m gs 1 -1 sc (int i;) col-1 sh gr /Courier ff 180.00 scf sf 1500 2000 m gs 1 -1 sc (int sc;) col-1 sh gr /Courier ff 180.00 scf sf 1500 2200 m gs 1 -1 sc (int under;) col-1 sh gr /Courier ff 180.00 scf sf 9000 1800 m gs 1 -1 sc (/* move counter */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 9000 2000 m gs 1 -1 sc (/* score returned by search */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 9000 2200 m gs 1 -1 sc (/* alpha for move to be searched */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 9000 2400 m gs 1 -1 sc (/* beta for move to be searched */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 1500 4400 m gs 1 -1 sc (/* Generate hash value and key for this position */) col-1 sh gr /Courier ff 180.00 scf sf 1500 4800 m gs 1 -1 sc (/* Fetch information from transposition table */) col-1 sh gr /Courier ff 180.00 scf sf 1500 5600 m gs 1 -1 sc (if \(aphid_master\(\) == FALSE && h_length >= plytogo\) {) col-1 sh gr /Courier ff 180.00 scf sf 1800 5800 m gs 1 -1 sc (if \(flag == VALID\) { return\(h_score\); }) col-1 sh gr /Courier ff 180.00 scf sf 1800 6000 m gs 1 -1 sc (if \(flag == LBOUND\) { alpha = max\(alpha,h_score\); }) col-1 sh gr /Courier ff 180.00 scf sf 1800 6200 m gs 1 -1 sc (if \(flag == UBOUND\) { beta = min\(beta,h_score\); }) col-1 sh gr /Courier ff 180.00 scf sf 1800 6400 m gs 1 -1 sc (if \(alpha >= beta\) { return\(h_score\); }) col-1 sh gr /Courier ff 180.00 scf sf 1500 6600 m gs 1 -1 sc (}) col-1 sh gr /Courier ff 180.00 scf sf 1500 7000 m gs 1 -1 sc (/* Evaluate position if at bottom of tree */) col-1 sh gr /Courier ff 180.00 scf sf 1500 5400 m gs 1 -1 sc (/* If we have searched position deep enough, use score info */) col-1 sh gr /Courier ff 180.00 scf sf 1500 7200 m gs 1 -1 sc (if \(plytogo == 0\) { return\(Evaluate\(p\)\); }) col-1 sh gr /Courier ff 180.00 scf sf 1500 4600 m gs 1 -1 sc (generate_hash\(p, p_hash, p_key\);) col-1 sh gr /Courier ff 180.00 scf sf 1500 5000 m gs 1 -1 sc (retrieve\(p_hash, p_key, p_entry, h_length, h_score, h_flag, h_move\);) col-1 sh gr /Courier ff 180.00 scf sf 1500 7400 m gs 1 -1 sc (if \(aphid_horizon\(depth, plytogo, p_hash, p_key\) == TRUE\) {) col-1 sh gr /Courier ff 180.00 scf sf 1800 7600 m gs 1 -1 sc (return\(aphid_eval_leaf\(alpha, beta, depth, plytogo, p_hash, p_key\)\);) col-1 sh gr /Courier ff 180.00 scf sf 1500 7800 m gs 1 -1 sc (}) col-1 sh gr /Courier ff 180.00 scf sf 1500 8200 m gs 1 -1 sc (/* Generate move list, evaluate position if no moves */) col-1 sh gr /Courier ff 180.00 scf sf 1500 8400 m gs 1 -1 sc (numOfSuccessors = GenerateSuccessors\(p\);) col-1 sh gr /Courier ff 180.00 scf sf 1500 8600 m gs 1 -1 sc (if \(numOfSuccessors == 0\) { return\(Evaluate\(p\)\); }) col-1 sh gr /Courier ff 180.00 scf sf 1500 8800 m gs 1 -1 sc (if \(aphid_checkalarm\(FALSE\) != FALSE\) {) col-1 sh gr /Courier ff 180.00 scf sf 1800 9000 m gs 1 -1 sc (terminate_search = TRUE;) col-1 sh gr /Courier ff 180.00 scf sf 1500 9400 m gs 1 -1 sc (}) col-1 sh gr /Courier ff 180.00 scf sf 1500 10000 m gs 1 -1 sc (under = alpha; over = beta;) col-1 sh gr /Courier ff 180.00 scf sf 1500 10200 m gs 1 -1 sc (aphid_intnode_start\(depth, p_hash, p_key\);) col-1 sh gr /Courier ff 180.00 scf sf 1800 11800 m gs 1 -1 sc (if \(sc > under && i > 1 && sc < beta && plytogo > 2\) {) col-1 sh gr /Courier ff 180.00 scf sf 2100 12000 m gs 1 -1 sc (sc = -AlphaBeta\(p,-beta,-sc,plytogo-1\);) col-1 sh gr /Courier ff 180.00 scf sf 1800 11600 m gs 1 -1 sc (/* Is a research necessary? */) col-1 sh gr /Courier ff 180.00 scf sf 1800 11400 m gs 1 -1 sc (sc = -AlphaBeta\(p,-over,-under,plytogo-1\);) col-1 sh gr /Courier ff 180.00 scf sf 1800 10800 m gs 1 -1 sc (aphid_intnode_move\(depth, &\(movelist[i]\)\);) col-1 sh gr /Courier ff 180.00 scf sf 1800 11000 m gs 1 -1 sc (make_move\(p, movelist[i]\);) col-1 sh gr /Courier ff 180.00 scf sf 1500 3000 m gs 1 -1 sc (char *p_hash;) col-1 sh gr /Courier ff 180.00 scf sf 1500 3200 m gs 1 -1 sc (char *p_key;) col-1 sh gr /Courier ff 180.00 scf sf 1500 3400 m gs 1 -1 sc (int h_length;) col-1 sh gr /Courier ff 180.00 scf sf 1500 3600 m gs 1 -1 sc (int h_score;) col-1 sh gr /Courier ff 180.00 scf sf 1500 3800 m gs 1 -1 sc (int h_flag;) col-1 sh gr /Courier ff 180.00 scf sf 1500 2800 m gs 1 -1 sc (char *p_entry;) col-1 sh gr /Courier ff 180.00 scf sf 9000 2800 m gs 1 -1 sc (/* pointer to physical location of TT entry */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 9000 3000 m gs 1 -1 sc (/* pointer to hash value */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 9000 3200 m gs 1 -1 sc (/* pointer to hash table lock */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 9000 3400 m gs 1 -1 sc (/* ply position previously searched to */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 9000 3600 m gs 1 -1 sc (/* score at h_length ply from TT */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 9000 3800 m gs 1 -1 sc (/* type of score \(VALID, LBOUND or UBOUND\) */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 9000 4000 m gs 1 -1 sc (/* recommended move from TT */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 1500 4000 m gs 1 -1 sc (move h_move;) col-1 sh gr /Courier ff 180.00 scf sf 1500 2400 m gs 1 -1 sc (int over;) col-1 sh gr /Courier ff 180.00 scf sf 1500 2600 m gs 1 -1 sc (move move_opt;) col-1 sh gr /Courier ff 180.00 scf sf 9000 2600 m gs 1 -1 sc (/* current best move */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 1800 12800 m gs 1 -1 sc (aphid_intnode_update\(depth, value\);) col-1 sh gr /Courier ff 180.00 scf sf 1500 1200 m gs 1 -1 sc (move movelist[MAX_LEGAL_MOVES];) col-1 sh gr /Courier ff 180.00 scf sf 9000 1200 m gs 1 -1 sc (/* ordered list of all moves */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 9000 1400 m gs 1 -1 sc (/* total number of moves in movelist[] */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 9000 1600 m gs 1 -1 sc (/* current best minimax value */) dup sw pop neg 0 rm col-1 sh gr /Courier ff 180.00 scf sf 1500 10600 m gs 1 -1 sc (for\(i=1; \(i <= numOfSuccessors && score <= beta\); i++\) {) col-1 sh gr /Courier ff 180.00 scf sf 1800 14000 m gs 1 -1 sc (/* set window for next child */) col-1 sh gr /Courier ff 180.00 scf sf 1800 14200 m gs 1 -1 sc (under = max\(gamma, alpha\); over = under + 1;) col-1 sh gr /Courier ff 180.00 scf sf 1500 14400 m gs 1 -1 sc (}) col-1 sh gr /Courier ff 180.00 scf sf 1500 15200 m gs 1 -1 sc (/* Write information into transposition table */) col-1 sh gr /Courier ff 180.00 scf sf 1800 13000 m gs 1 -1 sc (if \(sc > gamma\) {) col-1 sh gr /Courier ff 180.00 scf sf 2100 13200 m gs 1 -1 sc (gamma = sc;) col-1 sh gr /Courier ff 180.00 scf sf 2100 13400 m gs 1 -1 sc (move_opt = movelist[i];) col-1 sh gr /Courier ff 180.00 scf sf 1800 13600 m gs 1 -1 sc (}) col-1 sh gr /Courier ff 180.00 scf sf 1500 9800 m gs 1 -1 sc (gamma = -INFINITY;) col-1 sh gr /Courier ff 180.00 scf sf 1500 14800 m gs 1 -1 sc (aphid_intnode_end\(depth, score, beta\); ) col-1 sh gr /Courier ff 180.00 scf sf 1800 12200 m gs 1 -1 sc (}) col-1 sh gr /Courier ff 180.00 scf sf 1800 12600 m gs 1 -1 sc (unmake_move\(p, movelist[i]\);) col-1 sh gr /Courier ff 180.00 scf sf 1500 15400 m gs 1 -1 sc (h_flag = VALID;) col-1 sh gr /Courier ff 180.00 scf sf 1500 15600 m gs 1 -1 sc (if \(score <= alpha\) { h_flag = LBOUND; }) col-1 sh gr /Courier ff 180.00 scf sf 1500 16000 m gs 1 -1 sc (if \(h_length <= plytogo\) {) col-1 sh gr /Courier ff 180.00 scf sf 1500 15800 m gs 1 -1 sc (if \(score >= beta\) { h_flag = UBOUND; }) col-1 sh gr /Courier ff 180.00 scf sf 1500 16400 m gs 1 -1 sc (}) col-1 sh gr /Courier ff 180.00 scf sf 1800 16200 m gs 1 -1 sc (p_entry = store\(p_hash, p_key, plytogo, score, h_flag, move_opt\);) col-1 sh gr /Courier ff 180.00 scf sf 1200 17200 m gs 1 -1 sc (} /* AlphaBeta */) col-1 sh gr /Courier ff 180.00 scf sf 1200 800 m gs 1 -1 sc (int AlphaBeta\(position p, int alpha, int beta, int depth, int plytogo\) {) col-1 sh gr /Courier ff 180.00 scf sf 1800 9200 m gs 1 -1 sc (return\(0\); /* Should exit AlphaBeta quickly when alarm on */) col-1 sh gr /Courier ff 180.00 scf sf 1500 16800 m gs 1 -1 sc (return\(gamma\);) col-1 sh gr showpage $F2psEnd rs %%EndDocument endTexFig 770 5131 a Fu(Figure)25 b(6:)30 b(Code)c(Example:)j(APHID)d(within)d (the)i Fq(\013)q(\014)30 b Fu(Algorithm)1900 5589 y(18)p eop %%Page: 19 22 19 21 bop 146 100 a Fu(It)23 b(should)f(also)h(be)g(noted)f(that,)h(in) g(terms)f(of)h(ease)h(of)f(use,)g(the)g(APHID)g(library)g(is)f(almost)g (unique.)29 b(Gi)n(v)o(en)0 299 y(an)22 b Fq(\013)q(\014)27 b Fu(program)21 b(with)g(the)g(code)h(structured)f(to)g(use)g(the)h (Cilk)f(directi)n(v)o(es,)g(then)g(parallel)g Fm(sync)o(hr)l(onous)f Fu(search)0 498 y(algorithms,)f(such)g(as)h(YBWC)h(and)e(PV)-10 b(-Split,)21 b(can)f(be)f(easily)h(implemented)e([1].)29 b(Cilk)19 b(uses)g(multiple)f(threads)0 697 y(to)27 b(coordinate)g(the) g(search,)h(where)g(each)f(thread)h(represents)f(a)g(node)g(where)h(w)o (ork)f(has)g(been)g(split)f(of)n(f)h(from)0 897 y(its)d(parent.)0 1236 y Fo(4)143 b(Experimental)33 b(Results)0 1539 y Fu(Most)c(authors)g(demonstrate)h(the)g(ef)n(fecti)n(v)o(eness)e(of)i (their)g(parallel)g(algorithm)f(using)g(a)h(single)f(application.)0 1738 y(Chess)40 b(is)f(often)h(chosen)g(because)g(synchronous)f (algorithms)f(usually)h(yield)g(good)g(speedups)g(when)h(the)0 1937 y(branching)24 b(f)o(actor)i(is)e(lar)n(ge.)31 b(In)25 b(contrast,)g(APHID')-5 b(s)25 b(performance)g(will)f(be)h(presented)g (using)f(four)g(dif)n(ferent)0 2136 y(applications,)35 b(each)g(written)f(by)g(dif)n(ferent)g(authors)g(and)g(with)f(dif)n (ferent)h(coding)g(styles.)58 b(This)34 b(ambitious)0 2336 y(comparison)27 b(of)i(performance)g(in)f(multiple)e(application)i (domains)f(is)h(feasible)g(because)h(of)f(APHID')-5 b(s)29 b(ease)0 2535 y(of)c(inte)o(gration)e(into)h(an)h(e)o(xisting)e (sequential)h(program.)146 2734 y(This)34 b(section)f(presents)h(e)o (xperimental)e(results)i(for)g(APHID.)g(Section)g(4.1)g(describes)g (the)g(e)o(xperimen-)0 2933 y(tal)h(methodology)-6 b(.)60 b(Section)36 b(4.2)f(describes)g(the)g(o)o(v)o(erhead)g(model)g(used)g (to)g(analyze)h(performance.)63 b(The)0 3133 y(e)o(xperimental)24 b(results)g(are)h(presented)g(in)f(Section)h(4.3.)0 3428 y Fg(4.1)119 b(Methodology)0 3694 y Fu(APHID)19 b(has)g(been)g (implemented)e(in)i(four)g(applications:)28 b(C)t Fa(H)t(I)t(N)t(O)t(O) t(K)r Fu(,)e(C)t Fa(R)t(A)t(F)t(T)t(Y)r Fu(,)h(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)25 b Fu(and)c(T)t Fa(H)t(E)t Fu(T)t Fa(U)t(R)t(K)r Fu(.)2 3893 y(C)t Fa(H)t(I)t(N)t(O)t(O)t(K)26 b Fu(is)20 b(the)g(Man)g(vs.)28 b(Machine)20 b(W)-8 b(orld)20 b(Check)o(ers)h (Champion)e(program)h(\(principal)f(author:)28 b(Jonathan)0 4093 y(Schaef)n(fer\).)37 b(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)32 b Fu(is)25 b(a)h(state-of-the-art)g(Othello)e(program,)i(which)f(rank)o (ed)h(among)f(the)h(top)f(\002)n(v)o(e)g(com-)0 4292 y(puter)32 b(Othello)e(programs)h(w)o(orldwide)g(from)h(1992)f(to)g (1996)g(\(author:)44 b(Mark)32 b(Brockington\).)52 b(C)t Fa(R)t(A)t(F)t(T)t(Y)40 b Fu(is)0 4491 y(a)35 b(strong)f(free)n(w)o (are)i(chess)f(program)g(\(author:)51 b(Robert)35 b(Hyatt\).)63 b(T)t Fa(H)t(E)t Fu(T)t Fa(U)t(R)t(K)42 b Fu(is)34 b(a)h(strong)g (chess)f(program)0 4690 y(designed)g(by)h(tw)o(o)g(graduate)g(students) f(at)h(the)g(Uni)n(v)o(ersity)e(of)i(Alberta)g(\(Andreas)g(Junghanns)f (and)h(Yngvi)0 4890 y(Bjornsson\).)63 b(Both)36 b(chess)g(programs)g (ha)n(v)o(e)f(been)h(participants)f(in)h(a)g(W)-8 b(orld)36 b(Computer)f(Chess)h(Champi-)0 5089 y(onsip.)52 b(All)32 b(of)g(the)g(applications)f(ha)n(v)o(e)h(a)h(\002nely-tuned)f (sequential)f(search)i(algorithm)e(that)h(considers)f(the)0 5288 y(best)e(mo)o(v)o(e)e(\002rst)i(approximately)e(90\045)i(\(or)g (more\))g(of)g(the)g(time.)42 b(In)29 b(practice,)h(the)o(y)e(each)i (search)f(trees)h(that)1900 5589 y(19)p eop %%Page: 20 23 20 22 bop 0 100 a Fu(are)26 b(close)e(to)h(the)f(critical)h(tree)g(in)f (size.)146 299 y(All)g(e)o(xperiments)f(were)j(performed)e(on)g(a)h (Silicon)f(Graphics)h(Origin)e(2000)h(with)g(64)g(processors.)3631 263 y Fn(6)3701 299 y Fu(Each)0 498 y(of)34 b(the)g(applications)e (were)j(compiled)e(with)g(SGI')-5 b(s)34 b Fb(cc)g Fu(compiler)-5 b(.)57 b(F)o(or)34 b(the)g(parallel)g(tests,)h(tw)o(o)e(dif)n(ferent)0 697 y(v)o(ersions)h(of)i(the)g(code)g(were)g(compiled.)62 b(The)36 b(\002rst)g(parallel)f(program)h(could)f(be)h(used)f(at)h (run-time)f(as)h(a)0 897 y(master)30 b(or)g(a)g(sla)n(v)o(e)g(by)f (APHID.)i(The)f(second)g(program)g(w)o(as)g(an)g(e)o(x)o(ecutable)f (that)h(could)f(only)g(be)i(used)e(by)0 1096 y(APHID)34 b(as)f(a)h(sla)n(v)o(e.)55 b(This)33 b(separation)g(impro)o(v)o(ed)e (performance,)36 b(since)d(a)h(number)e(of)i(callback)f(routines)0 1295 y(used)25 b(only)f(by)g(the)h(master)f(impacted)g(the)h (performance)g(of)g(the)g(sla)n(v)o(es)f(when)g(left)h(in)g(the)f Fq(\013)q(\014)30 b Fu(algorithm.)146 1494 y(P)o(arallel)i(and)g (sequential)f(algorithms)f(often)h(do)h(not)f(agree)i(with)e(each)h (other)f(about)h(the)f(search)i(result)0 1694 y(\(v)n(alue)24 b(and/or)g(best)g(mo)o(v)o(e\))f(when)h(the)h(full)f(v)o(ersion)f(of)h (the)h(program)f(is)g(used)g([12].)31 b(F)o(or)24 b(e)o(xample,)f(dif)n (ferent)0 1893 y(search)g(windo)n(ws)e(can)i(cause)g(dif)n(ferent)f (search)h(e)o(xtensions)e(to)h(be)g(turned)h(on,)f(resulting)g(in)g(a)h (dif)n(ferent)f(v)n(alue)0 2092 y(at)33 b(the)h(root.)56 b(One)33 b(w)o(ould)g(prefer)h(that)f(the)g(parallel)g(and)h (sequential)e(algorithms)g(return)h(identical)g(v)n(alues)0 2291 y(and)26 b(principal)f(v)n(ariations,)g(allo)n(wing)f(for)i(a)g (meaningful)f(comparison.)33 b(It)26 b(is)f(dif)n(\002cult)g(to)h(mak)o (e)f(this)g(happen)0 2491 y(without)i(se)n(v)o(erely)h(crippling)g(the) h(program')-5 b(s)28 b(sequential)f(search)j(algorithm.)41 b(As)29 b(a)g(compromise,)f(most)g(of)0 2690 y(the)20 b(search)i(result)e(dif)n(ferences)h(can)g(be)f(eliminated)g(by)g (disabling)f(all)h Fq(\013)q(\014)26 b Fu(windo)n(w-based)20 b(search)h(e)o(xtensions)0 2889 y(and)h(reductions.)30 b(This)21 b(does)i(not)f(imply)f(that)h(a)h(\002x)o(ed)f(search)h (depth)f(w)o(as)h(enforced)g(on)f(the)g(programs.)30 b(As)22 b(an)0 3088 y(e)o(xample,)30 b(the)g(check)o(ers)g(and)g(chess) g(programs)f(still)g(used)g(quiescence)h(search)h(to)e(e)o(xtend)g(the) h(search)g(well)0 3288 y(be)o(yond)24 b(the)g Fq(d)p Fu(-ply)g(search)i(horizon.)146 3487 y(The)g(size)f(of)g(each)h(of)g (the)f(searches)h(is)f(important)e(to)i(the)g(observ)o(ed)g(speedup.)32 b(In)25 b(synchronous)f(parallel)0 3686 y(game-tree)h(search)g (algorithms,)e(the)i(speedup)f(can)h(be)g(impro)o(v)o(ed)e(arbitrarily) h(by)h(increasing)f(the)h(size)f(of)h(the)0 3885 y(search)e([15].)30 b(Ho)n(we)n(v)o(er)l(,)21 b(searching)h(game)g(trees)g(that)g(occur)g (under)g(tournament)f(time)h(controls)f(is)h(critical)f(to)0 4085 y(assessing)e(a)h(parallel)f(game-tree)h(search)g(algorithm')-5 b(s)18 b(performance.)29 b(Thus,)20 b(the)g(size)f(of)h(the)g(indi)n (vidual)d(tests)0 4284 y(w)o(as)24 b(limited)e(so)h(that)h(the)f(a)n(v) o(erage)h(time)f(spent)g(searching)h(on)f(a)h(64-processor)g(machine)f (did)g(not)g(e)o(xceed)h(the)0 4483 y(usual)e(time)h(controls)f(in)g (the)h(game)f(being)h(studied.)29 b(This)22 b(is)h(180)f(seconds)h(in)f (chess,)h(60)g(seconds)g(in)f(Othello,)0 4682 y(and)29 b(120)g(seconds)g(in)f(the)h(game)g(of)g(check)o(ers.)45 b(Consequently)-6 b(,)29 b(the)g(search)g(depth)g(achie)n(v)o(ed)f (depended)h(on)0 4882 y(the)f(game)g(being)g(studied)f(and)i(the)f (position)e(being)i(tested.)41 b(F)o(or)29 b(check)o(ers,)g(the)g (search)g(depth)e(v)n(aried)h(from)0 5081 y(25)h(to)f(29)h(ply)-6 b(,)29 b(while)f(for)h(chess)g(it)g(w)o(as)g(11)f(or)i(12)e(ply)-6 b(.)42 b(F)o(or)29 b(Othello,)g(all)g(positions)e(were)i(searched)h(15) f(ply)p 0 5171 1560 4 v 112 5232 a Fj(6)149 5262 y Fi(Additional)19 b(e)o(xperiments)g(ha)n(v)o(e)g(been)h(done)f(using)h(Sun)g(equipment)e (to)i(test)h(the)f(portability)f(of)h(the)g(APHID)h(library)e([2)o(].) 1900 5589 y Fu(20)p eop %%Page: 21 24 21 23 bop 0 100 a Fu(deep.)60 b(The)35 b(parallelization)f(horizon)g(v) n(aried)g(from)g(4)h(to)f(8)g(ply)g(\(4)h(in)f(chess)h(and)f(Othello,)i (6)f(to)f(8)g(ply)g(in)0 299 y(check)o(ers\).)63 b(A)36 b(suitable)e(benchmark)h(set)g(w)o(as)h(chosen)f(for)g(each)h(game:)51 b(the)35 b(Bratk)o(o-K)m(opec)h(test)f(set)g(for)0 498 y(chess)25 b([10],)g(positions)e(from)i(the)g(\002rst)g(Chinook-T)m (insle)o(y)e(match)h(for)i(check)o(ers)g([12)o(],)g(and)f(positions)e (from)i(a)0 697 y(W)-8 b(orld)24 b(Championship)g(game)g(for)h(Othello) f([2].)146 897 y(Using)j(a)g(transposition)e(table)i(that)g(is)g(lar)n (ge)g(enough)g(to)g(accommodate)f(results)h(disco)o(v)o(ered)f(during)g (the)0 1096 y(search)g(is)f(important.)32 b(that)25 b(k)o(ept)g(the)g (o)o(v)o(erall)g(size)g(of)h(the)f(program)g(and)h(data)f(belo)n(w)g (400)g(MB)h(w)o(as)f(chosen.)0 1295 y(It)c(w)o(as)h(unanticipated)e (that)g(this)h(limitation)e(w)o(ould)h(dramatically)g(af)n(fect)i(the)f (speedup)g(on)g(a)h(lar)n(ge)f(number)g(of)0 1494 y(processors)g(b)n (ut,)g(as)g(discussed)f(later)l(,)i(400)f(MB)g(pro)o(v)o(ed)f(to)h(be)g (inadequate)g(for)g(the)g(lar)n(ge)g(searches)h(attempted)0 1694 y(in)i(the)h(chess)g(and)g(check)o(ers)g(programs.)146 1893 y(Distrib)n(uted)g(transposition)f(table)i(schemes)g(quickly)g (become)g(communication-bound)e(on)i(modern)f(ar)n(-)0 2092 y(chitectures.)58 b(Thus,)35 b(it)f(is)f(usually)g(infeasible)g (to)h(implement)e(sharing)h(of)h(transposition)e(table)i(entries)f(on)0 2291 y(systems)21 b(where)j(shared)f(memory)f(is)g(not)g(a)n(v)n (ailable)g(in)h(hardw)o(are.)30 b(The)23 b(APHID)h(library)e(contains)g (a)h(method)0 2491 y(for)g(distrib)n(uting)d(transposition)h(table)h (information)f(that)i(does)f(not)g(o)o(v)o(erload)g(the)g (interconnection)g(netw)o(ork.)0 2690 y(Experiments)30 b(with)g(APHID)h(using)f(distrib)n(uted)f(transposition)g(tables)h(are) i(a)n(v)n(ailable)e(else)n(where)h([2].)49 b(The)0 2889 y(e)o(xperiments)19 b(reported)i(in)f(this)g(paper)h(were)g(run)g(on)f (a)h(shared-memory)g(computer)l(,)f(allo)n(wing)f(us)i(to)f(compare)0 3088 y(our)25 b(results)f(with)g(those)g(reported)h(in)f(the)h(recent)g (literature.)146 3288 y(Note)31 b(that)f(the)g(transposition)f(table)h (size)h(did)f(not)g(increase)h(as)g(the)g(number)f(of)h(processors)f (increased.)0 3487 y(The)k(sequential)g(tests)f(used)h(e)o(xactly)g (the)g(same)g(number)g(of)h(table)f(entries)g(as)g(each)h(of)g(the)f (parallel)g(tests.)0 3686 y(If)d(the)g(parallel)g(run)g(used)g(64)f (processors,)i(then)f(each)g(process)g(recei)n(v)o(ed)g(1/64th)e(of)i (the)g(table)g(entries)g(that)0 3885 y(the)d(sequential)f(process)h (recei)n(v)o(ed.)40 b(Thus,)29 b(the)f(e)o(xperiments)e(measured)i(the) g(scalability)f(of)h(the)g(number)g(of)0 4085 y(processors)d(and)h(not) f(the)g(scalability)g(of)h(memory)-6 b(.)32 b(Other)25 b(researchers)i(ha)n(v)o(e)e(allo)n(wed)g(the)g(number)h(of)f(table)0 4284 y(entries)34 b(to)g(increase)h(in)f(tandem)g(with)g(the)g(number)g (of)g(processors.)60 b(This)33 b(can)i(result)f(in)g(an)h(unf)o(air)f (com-)0 4483 y(parison)29 b(\(and)h(signi\002cantly)f(in\003ated)g (speedups\))h(because)g(the)f(sequential)g(algorithm')-5 b(s)28 b(table)h(may)h(not)f(be)0 4682 y(lar)n(ge)e(enough)f(to)h(hold) f(the)h(critical)f(tree)h(in)g(memory)-6 b(,)26 b(whereas)h(the)g (parallel)f(v)o(ersion)g(can.)37 b(When)27 b(e)o(xamin-)0 4882 y(ing)i(the)h(game-tree)g(search)g(literature,)h(the)e(reader)i (should)e(a)n(v)n(oid)g(directly)g(comparing)g(speedups)h(without)0 5081 y(understanding)23 b(the)i(conditions)e(under)i(which)f(the)o(y)g (were)i(achie)n(v)o(ed.)146 5280 y(The)21 b(standard)g(set)g(of)g (tests)f(for)h(each)h(program)e(in)l(v)n(olv)o(ed)g(e)o(xamining)f(a)i (\002x)o(ed-depth)g(game)f(tree)h(\(modulo)1900 5589 y(21)p eop %%Page: 22 25 22 24 bop 0 100 a Fu(an)o(y)28 b(quiescence)g(search\))h(and)f(using)f (a)h(shared)h(memory)e(transposition)f(table,)j(o)o(v)o(er)e(a)h(v)n (arying)f(number)h(of)0 299 y(processors.)g(Each)20 b(program)e(w)o(as) h(tested)g(on)g Fq(n)p Fu(=16,)h(32)f(and)g(64)f(processors,)i(using)e (a)i(single-le)n(v)o(el)d(hierarchy:)0 498 y(one)25 b(master)f (allocated)h(w)o(ork)f(to)h Fq(n)d Fk(\000)h Fl(1)i Fu(sla)n(v)o(es)e (for)j(each)f(test)f(position.)146 697 y(There)34 b(are)g(tw)o(o)e (methods)g(of)h(reporting)g(speedups)f(and)h(o)o(v)o(erheads)f(for)h(a) h(lar)n(ge)f(number)g(of)g(samples.)0 897 y(The)28 b(\002rst)f(is)g(to) g(add)h(all)f(of)h(the)f(searches)h(for)g(the)f(multiple)f(positions)f (together)l(,)j(and)g(perform)f(the)h(speedup)0 1096 y(and)j(o)o(v)o(erhead)f(analysis)g(on)g(the)h(combined)e(data.)49 b(The)31 b(second)f(method)g(is)g(to)h(perform)f(the)h(speedup)f(and)0 1295 y(o)o(v)o(erhead)c(analysis)h(on)f(each)i(indi)n(vidual)d (position,)h(and)h(a)n(v)o(erage)g(the)g(speedups)g(and)g(o)o(v)o (erheads.)36 b(The)28 b(sec-)0 1494 y(ond)36 b(method)f(is)h(preferred) h(\(and)g(used)f(in)g(this)f(paper\))i(because)f(it)g(will)g(not)f(o)o (v)o(erestimate)g(the)h(observ)o(ed)0 1694 y(speedup)24 b(for)h(a)h(lar)n(ge)f(number)f(of)h(test)f(positions.)0 1989 y Fg(4.2)119 b(Ov)o(erheads)30 b(in)h(APHID)0 2255 y Fu(The)36 b(performance)h(of)g(APHID)g(will)e(be)i(analyzed)f(in)g (terms)g(of)h(the)f(impediments)e(\(o)o(v)o(erheads\))i(to)g(high)0 2455 y(parallel)28 b(performance.)41 b(Since)28 b(the)g(o)o(v)o(erhead) f(model)g(used)h(in)f(this)g(section)h(is)f(slightly)f(dif)n(ferent)i (than)g(that)0 2654 y(used)d(by)f(other)h(authors,)f(the)g(terminology) f(used)i(is)f(de\002ned)i(here.)146 2853 y(The)e Fm(total)e(o)o (verhead)h Fu(represents)g(the)g(additional)e(computing)h(time)g (required)i(by)e(the)i(parallel)f(algorithm)0 3052 y(on)i Fq(n)g Fu(processors)f(to)h(achie)n(v)o(e)f(the)g(same)h(result)f(as)h (the)g(sequential)f(v)o(ersion:)772 3351 y Fl(total)c(o)m(v)m(erhead)30 b(=)1512 3284 y(\(parallel)20 b(time)43 b Fk(\002)h Fl(n\))23 b Fk(\000)f Fl(sequen)m(tial)h(time)p 1512 3328 1580 4 v 1984 3420 a(sequen)m(tial)g(time)3101 3351 y Fq(:)0 3650 y Fu(The)29 b(total)g(o)o(v)o(erhead)f(can)i(also)f(be)h(computed) e(by)h(e)o(xamining)e(the)j(component)e(o)o(v)o(erheads)g (independently)-6 b(.)0 3849 y(The)32 b(three)h(main)e(o)o(v)o(erheads) g(are)i(\(1\))g(dedicating)e(a)i(processor)f(to)g(be)g(used)g(e)o (xclusi)n(v)o(ely)d(as)k(a)f(master)g(\(the)0 4049 y(master)f(o)o(v)o (erhead\),)i(\(2\))f(the)g(ef)n(fecti)n(v)o(e)e(decrease)j(in)e(nodes)h (per)g(second)f(e)o(xamined)g(\(parallelization)g(o)o(v)o(er)n(-)0 4248 y(head\),)e(and)f(\(3\))g(the)g(lar)n(ger)g(search)g(tree)h(b)n (uilt)d(by)i(the)g(parallel)f(algorithm)g(\(total)g(search)h(o)o(v)o (erhead\).)40 b(There)0 4447 y(is)29 b(no)g(synchronization)f(o)o(v)o (erhead)g(in)h(the)g(APHID)h(algorithm)e(since)h(the)g(algorithm)f (operates)h(in)g(an)g(asyn-)0 4646 y(chronous)24 b(manner)-5 b(.)30 b(The)25 b(breakdo)n(wn)f(of)h(o)o(v)o(erheads)f(can)h(be)g(e)o (xpressed)f(in)h(the)f(follo)n(wing)f(formula:)380 4945 y Fl(total)e(o)m(v)m(erhead)85 b(=)d(\(1)22 b(+)g(master)g(o)m(v)m (erhead)r(\))g Fk(\002)h Fl(\(1)e(+)h(parallelization)c(o)m(v)m(erhead) r(\))1244 5169 y Fk(\002)k Fl(\(1)g(+)g(total)f(searc)m(h)i(o)m(v)m (erhead)r(\))p Fq(:)1900 5589 y Fu(22)p eop %%Page: 23 26 23 25 bop 146 100 a Fu(The)30 b Fm(master)g(o)o(verhead)g Fu(is)f(the)h(approximate)f(penalty)h(incurred)g(by)g(ha)n(ving)f(a)i (single)e(processor)h(being)0 299 y(allocated)24 b(completely)f(to)h (the)h(handling)e(of)h(the)h(master)-5 b(.)29 b(This)24 b(is)g(simply)f Fl(1)p Fq(=)p Fl(\()p Fq(n)d Fk(\000)h Fl(1\))p Fu(,)j(the)h(bene\002t)f(of)h(adding)0 498 y(another)g(sla)n (v)o(e)f(to)g(the)h(other)g Fq(n)d Fk(\000)h Fl(1)h Fu(sla)n(v)o(es.) 146 697 y(The)37 b Fm(par)o(allelization)32 b(o)o(verhead)k Fu(is)g(the)g(penalty)f(incurred)i(by)e(the)h(APHID)h(library)f(on)g (the)g(speed)g(of)0 897 y(the)h(sla)n(v)o(es.)65 b(The)37 b(dif)n(ference)g(between)g(the)g(rate)g(at)g(which)f(the)h(parallel)f (sla)n(v)o(es)g(e)o(xplore)g(nodes)h(and)f(the)0 1096 y(sequential)29 b(program')-5 b(s)28 b(node)i(rate)g(is)f(the)g (parallelization)g(o)o(v)o(erhead.)44 b(This)29 b(o)o(v)o(erhead)f(is)i (deri)n(v)o(ed)e(partially)0 1295 y(from)g(the)h(cost)f(of)h(using)f (PVM,)g(and)h(partially)f(from)g(the)h(w)o(ork-scheduling)e(algorithm)h (on)g(each)h(sla)n(v)o(e.)42 b(In)0 1494 y(ef)n(fect,)34 b(the)d(parallelization)g(o)o(v)o(erhead)f(includes)h(synchronization)f (o)o(v)o(erhead,)j(comple)o(xity)c(o)o(v)o(erhead)i(and)0 1694 y(communication)23 b(o)o(v)o(erhead,)h(as)h(used)f(in)h(pre)n (vious)e(parallel)i Fq(\013)q(\014)30 b Fu(models)24 b([12)o(,)h(15].)146 1893 y(The)d Fm(total)f(sear)l(c)o(h)g(o)o (verhead)h Fu(represents)f(the)h(number)f(of)h(additional)f(nodes)g (searched)h(by)g(the)g(algorithm)0 2092 y(while)37 b(attempting)f(to)h (determine)f(the)i Fq(d)p Fu(-ply)e(minimax)g(v)n(alue.)68 b(In)37 b(the)h(case)g(of)f(APHID,)h(there)f(are)i(tw)o(o)0 2291 y(o)o(v)o(erheads)29 b(that)g(combine)g(to)g(mak)o(e)h(the)f (total)g(search)h(o)o(v)o(erhead:)40 b(the)29 b(search)h(o)o(v)o (erhead)f(\(as)h(seen)g(in)f(other)0 2491 y(parallel)c(models\))f(and)g (the)h(speculati)n(v)o(e)e(search.)146 2690 y(The)33 b Fm(sear)l(c)o(h)g(o)o(verhead)g Fu(represents)g(the)g(additional)f (nodes)g(searched)i(to)f(achie)n(v)o(e)f(the)h Fq(d)p Fu(-ply)g(minimax)0 2889 y(v)n(alue.)60 b(This)34 b(can)i(be)f (computed)e(by)i(di)n(viding)e(the)h(number)h(of)g(nodes)f(e)o(xamined) g(in)g(the)h(parallel)g(search)0 3088 y(by)29 b(the)g(number)g(of)g (nodes)g(e)o(xamined)f(in)h(the)g(corresponding)g(sequential)f(search.) 45 b(Most)28 b(of)i(this)e(o)o(v)o(erhead)0 3288 y(is)j(incurred)g (when)g(the)g(parallel)g(v)o(ersion)f(uses)h(a)g(search)h(windo)n(w)d (that)i(is)g(not)f(as)h(precise)h(as)f(that)g(used)f(by)0 3487 y(the)i(sequential)f(v)o(ersion.)51 b(If)32 b(a)g(shared-memory)g (transposition)e(table)h(is)h(not)f(used,)i(some)f(of)g(the)g(increase) 0 3686 y(in)c(search)g(o)o(v)o(erhead)f(can)i(be)f(attrib)n(uted)f(to)g (information)g(de\002cienc)o(y)-6 b(,)28 b(since)g(data)g(is)f(not)g (shared)i(ef)n(\002ciently)0 3885 y(between)c(the)g(processes.)146 4085 y(The)19 b(remainder)g(of)g(the)g(increase)h(in)e(search)i(o)o(v)o (erhead)e(is)g(attrib)n(utable)g(to)h(the)g(load-balancing)f (algorithm.)0 4284 y(The)k(APHID)f(algorithm)f(forces)i(w)o(ork)g(to)f (be)h(recalculated)f(when)h(it)f(is)g(mo)o(v)o(ed)f(to)h(another)g (processor)-5 b(.)29 b(When)0 4483 y(there)e(are)h(more)f(processors)g (in)g(the)g(system,)f(the)h(load-balancing)f(algorithm)g(is)h(more)g (acti)n(v)o(e)f(in)h(balancing)0 4682 y(the)e(w)o(orkload,)f(thus)g (causing)g(more)h(search)g(o)o(v)o(erhead.)146 4882 y(Since)33 b(each)g(position)e(is)h(searched)h(to)f Fq(d)g Fu(ply)-6 b(,)33 b(the)g(asynchronous)e(nature)i(of)f(the)g(sla)n(v)o(es)g(will)g (result)f(in)0 5081 y(some)22 b(w)o(ork)g(being)h(done)f(at)h(depth)f Fl(\()p Fq(d)14 b Fl(+)g(1\))22 b Fu(or)g(greater)-5 b(.)31 b(The)22 b Fm(speculative)g(sear)l(c)o(h)g Fu(represents)h(the)f (amount)g(of)0 5280 y(additional)d(search)h(that)g(APHID)g(has)g (undertak)o(en)g(which)g(is)f(be)o(yond)g(what)h(the)g(sequential)f (algorithm)g(w)o(ould)1900 5589 y(23)p eop %%Page: 24 27 24 26 bop 0 100 a Fu(attempt)22 b(for)i(a)f Fq(d)p Fu(-ply)g(search.)31 b(It)23 b(can)h(be)f(computed)f(by)h(taking)g(the)g(number)g(of)g (speculati)n(v)o(e)f(nodes)h(searched)0 299 y(and)35 b(di)n(viding)f(that)h(by)g(the)g(number)g(of)h(nodes)f(searched)h(in)f (the)h(sequential)e(case.)64 b(In)35 b(our)h(e)o(xperiments,)0 498 y(speculati)n(v)o(e)d(search)i(results)e(are)i(computed,)h(b)n(ut)e (these)g(results)f(are)j(not)d(used)h(to)g(in\003uence)h(the)f(v)n (alue)g(of)0 697 y(shallo)n(wer)27 b(searches.)43 b(This)27 b(allo)n(wed)h(the)g(APHID)h(algorithm)e(to)h(produce)h(the)f(same)g (search)h(v)n(alues)f(as)g(the)0 897 y(sequential)c(v)o(ersion)g(in)g (most)g(cases.)146 1096 y(Ignoring)32 b(the)g(speculati)n(v)o(e)e (search)j(results)e(understates)g(the)h(potential)f(of)h(the)g(APHID)h (algorithm.)51 b(In)0 1295 y(a)32 b(real)g(tournament)e(game,)j (speculati)n(v)o(e)d(search)i(could)f(be)h(used)f(to)g(look)g(an)h(e)o (xtra)f(mo)o(v)o(e)f(ahead)i(on)g(some)0 1494 y(k)o(e)o(y)24 b(v)n(ariations.)29 b(It)c(is)f(highly)g(lik)o(ely)f(that)i(the)f(v)n (ariations)f(that)i(were)g(speculati)n(v)o(ely)d(e)o(xtended)i(will)g (be)h(in)f(the)0 1694 y(left-most)j(branches)h(of)g(the)g(tree.)41 b(Thus,)28 b(sometimes)f(k)o(e)o(y)g(v)n(ariations)g(will)g(be)h (searched)h(an)f(additional)f(ply)0 1893 y(\(or)21 b(more\))g(deeper)-5 b(.)30 b(This)20 b(allo)n(ws)g(APHID)i(to)e(\002nd)i(important)d(v)n (ariations)h(much)g(sooner)h(than)g(a)g(synchronous)0 2092 y(parallel)k(program)f(with)g(the)h(same)f(observ)o(ed)h(speedup.) 146 2291 y(T)-8 b(o)34 b(quantify)f(the)h(ef)n(fects)f(of)h(speculati)n (v)o(e)e(search)j(is)e(dif)n(\002cult.)57 b(T)-8 b(o)33 b(do)h(so)f(means)h(that)f(there)h(must)f(be)0 2491 y(a)j(metric)g(for) g(measuring)f(the)g(quality)g(of)h(the)f(mo)o(v)o(e)g(selected)g(by)h (an)g(algorithm.)62 b(There)36 b(are)h(a)f(fe)n(w)g(test)0 2690 y(sets)27 b(that)g(measure)h(mo)o(v)o(e)e(quality)h(in)g(chess,)h (where)g(the)g(performance)g(metric)f(is)g(ho)n(w)g(quickly)g(a)g (program)0 2889 y(determines)32 b(the)g(best)g(mo)o(v)o(e)e(in)i(a)h (tactical)f(position.)51 b(There)33 b(is)f(insuf)n(\002cient)f(kno)n (wledge)g(about)h(tactics)f(in)0 3088 y(Othello)h(to)h(design)f(a)i (similar)e(test.)55 b(Thus,)35 b(the)e(performance)h(metric)f(used)f (is)h(to)g(compare)g(speedups)g(for)0 3288 y(each)25 b(program.)0 3583 y Fg(4.3)119 b(T)-11 b(est)29 b(Results)0 3849 y Fu(Figure)23 b(7)f(gi)n(v)o(es)f(the)h(speedups)g(for)h(each)g (of)f(the)g(programs)g(tested,)g(while)g(Figure)h(8)f(gi)n(v)o(es)f (the)h(o)o(v)o(erheads)g(for)0 4049 y(each)j(program)g(on)f(separate)i (graphs.)146 4248 y(Figure)33 b(7)e(sho)n(ws)g(that)h(the)g(speedups)f (for)h(the)g(Othello)f(program,)k(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)r Fu(,)38 b(are)33 b(signi\002cantly)d(lar)n(ger)0 4447 y(than)k(the)f(speedups)h(for)g(the)f(other)h(three)g(programs.)58 b(There)34 b(are)h(tw)o(o)e(reasons)h(for)g(this.)57 b(First,)36 b(the)e(trees)0 4646 y(that)28 b(were)i(measured)e(in)j(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)34 b Fu(are)c(\002x)o(ed-depth)e(trees,)h (whereas)h(the)e(other)h(programs)f(had)h(a)g(v)n(ariable)0 4846 y(search)h(depth)f(due)g(to)g(quiescence)h(searches.)45 b(This)28 b(mak)o(es)h(the)g(load)g(balancing)g(v)o(ery)g(easy)h(for)h (K)t Fa(E)t(Y)-6 b(A)t(N)t(O)r Fu(.)0 5045 y(APHID)25 b(thri)n(v)o(es)d(when)i(there)g(is)g(little)f(v)n(ariance)h(in)g(the)g (size)g(of)g(each)h(piece)f(of)h(w)o(ork.)30 b(When)24 b(the)g(equi)n(v)n(alent)0 5244 y(of)h(quiescence)g(search)g(is)g (added)f(to)j(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)r Fu(,)28 b(the)d(speedup)f (drops)h(from)f(37)h(to)f(22)h(on)f(64)h(processors)f([2].)1900 5589 y(24)p eop %%Page: 25 28 25 27 bop 1178 0 a 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig 1178 0 a %%BeginDocument: pics/speedup_all.ps /gnudict 40 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /vshift -60 def /dl {10 mul} def /hpt 31.5 def /vpt 31.5 def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def /BL { stroke gnulinewidth 2 mul setlinewidth } def /AL { stroke gnulinewidth 2 div setlinewidth } def /PL { stroke gnulinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 0 1 0 DL } def /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /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 /P { stroke [] 0 setdash currentlinewidth 2 div sub M 0 currentlinewidth V stroke } def /D { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke P } def /A { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke P } def /C { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke P } def /S { 2 copy A C} def end gnudict begin gsave 50 50 translate 0.100 0.100 scale 0 setgray /Helvetica findfont 180 scalefont setfont newpath LTa 1080 451 M 4544 0 V -4544 0 R 0 4498 V LTb 1080 451 M 63 0 V 4481 0 R -63 0 V 972 451 M (0) Rshow 1080 951 M 63 0 V 4481 0 R -63 0 V 972 951 M (8) Rshow 1080 1451 M 63 0 V 4481 0 R -63 0 V -4589 0 R (16) Rshow 1080 1950 M 63 0 V 4481 0 R -63 0 V -4589 0 R (24) Rshow 1080 2450 M 63 0 V 4481 0 R -63 0 V -4589 0 R (32) Rshow 1080 2950 M 63 0 V 4481 0 R -63 0 V -4589 0 R (40) Rshow 1080 3450 M 63 0 V 4481 0 R -63 0 V -4589 0 R (48) Rshow 1080 3949 M 63 0 V 4481 0 R -63 0 V -4589 0 R (56) Rshow 1080 4449 M 63 0 V 4481 0 R -63 0 V -4589 0 R (64) Rshow 1080 4949 M 63 0 V 4481 0 R -63 0 V -4589 0 R (72) Rshow 1080 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (0) Cshow 1585 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (8) Cshow 2090 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (16) Cshow 2595 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (24) Cshow 3100 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (32) Cshow 3604 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (40) Cshow 4109 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (48) Cshow 4614 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (56) Cshow 5119 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (64) Cshow 5624 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (72) Cshow 1080 451 M 4544 0 V 0 4498 V -4544 0 V 0 -4498 V 504 2700 M currentpoint gsave translate 90 rotate 0 0 M (Speedup) Cshow grestore 3352 -89 M (Number of Processors) Cshow LT0 3163 4637 M (Perfect Speedup) Rshow 3271 4637 M 324 0 V 1080 451 M 505 500 V 505 500 V 1010 999 V 5119 4449 L 505 500 V LT1 3163 4457 M (Keyano) Rshow 3271 4457 M 324 0 V 1585 810 M 505 345 V 1010 670 V 2019 965 V 3379 4457 D 1585 810 D 2090 1155 D 3100 1825 D 5119 2790 D LT2 3163 4277 M (Chinook) Rshow 3271 4277 M 324 0 V 2090 973 M 1010 154 V 2019 220 V 3379 4277 A 2090 973 A 3100 1127 A 5119 1347 A LT3 3163 4097 M (Crafty) Rshow 3271 4097 M 324 0 V 2090 998 M 1010 488 V 2019 89 V 3379 4097 B 2090 998 B 3100 1486 B 5119 1575 B LT4 3163 3917 M (TheTurk) Rshow 3271 3917 M 324 0 V 2090 981 M 1010 280 V 2019 187 V 3379 3917 C 2090 981 C 3100 1261 C 5119 1448 C stroke grestore end showpage %%EndDocument endTexFig 1212 1523 a Fu(Figure)25 b(7:)31 b(Speedups)25 b(for)g(All)f(Programs) 146 1811 y(The)h(second)g(reason)g(is)g(that)f(the)h(transposition)e (table)i(is)g(not)f(as)h(critical)g(in)g(Othello)f(as)h(it)f(is)h(in)f (the)h(other)0 2010 y(three)37 b(programs.)65 b(When)36 b(all)g(64)g(processors)g(attempt)g(to)g(write)g(into)f(a)i(400)f(MB)h (transposition)d(table,)39 b(a)0 2209 y(processor)32 b(o)o(v)o(erwrites)f(another)h(processor')-5 b(s)32 b(table)g(entries)g (frequently)-6 b(.)52 b(This)31 b(inhibits)g(the)h(ability)f(of)h(the)0 2408 y(processors)f(to)g(detect)g(positions)e(that)i(ha)n(v)o(e)g (already)g(been)h(searched.)50 b(Duplicate)31 b(node)g(detection)f(via) h(the)0 2608 y(transposition)k(table)h(is)h(important)e(to)h (controlling)f(the)i(size)g(of)g(the)f(search)i(tree)f(in)f(chess)h (and)g(check)o(ers)0 2807 y(programs.)49 b(The)31 b(limited)e(size)j (of)f(the)g(transposition)e(table)h(is)h(of)g(little)f(importance)h(in) f(searching)h(Othello)0 3006 y(game)k(trees)g(in)g(parallel,)i(because) f(achie)n(ving)e(the)h(same)g(position)f(by)h(dif)n(ferent)g(sequences) g(of)g(mo)o(v)o(es)f(is)0 3205 y(much)27 b(more)h(dif)n(\002cult.)39 b(Thus,)28 b(better)g(results)f(are)i(obtained)e(when)h(searching)g (Othello)f(trees)h(than)f(chess)h(or)0 3405 y(check)o(ers)d(trees.)585 3369 y Fn(7)146 3604 y Fu(In)c(an)g(algorithm)f(that)g(does)g(not)h (synchronize,)g(it)f(should)g(not)g(be)h(surprising)e(to)i(disco)o(v)o (er)e(that)i(the)f(lar)n(gest)0 3803 y(portion)29 b(of)h(the)g(total)g (o)o(v)o(erhead)f(is)h(accounted)g(for)h(by)f(the)g(search)g(o)o(v)o (erhead)g(and)g(the)g(speculati)n(v)o(e)f(search.)0 4002 y(As)j(the)g(number)f(of)h(processes)g(increases,)i(the)d(processors)h (get)g(fe)n(wer)g(pieces)g(of)g(w)o(ork)g(and)g(the)g(need)g(for)0 4202 y(load)d(balancing)g(increases.)46 b(This)28 b(also)i(allo)n(ws)e (some)h(of)h(the)f(less)g(b)n(usy)g(sla)n(v)o(es)g(to)g(get)h(further)f (ahead)h(than)0 4401 y(the)25 b(o)o(v)o(erw)o(ork)o(ed)e(sla)n(v)o(es,) h(causing)g(a)i(rise)e(in)h(the)f(speculati)n(v)o(e)g(search.)146 4600 y(T)-8 b(o)19 b(put)f(the)h(APHID)g(results)f(in)h(perspecti)n(v)o (e,)f(a)i(v)o(ersion)d(of)i(YBWC)h(has)f(been)g(implemented)e(in)j(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)r Fu(.)0 4799 y(The)27 b(algorithm)f(w)o(as)h (tak)o(en)h(directly)e(from)h(Feldmann')-5 b(s)27 b(thesis)f([3].)39 b(A)27 b(considerable)g(ef)n(fort)g(w)o(as)g(spent)g(at-)0 4999 y(tempting)33 b(to)h(optimize)g(the)g(performance)h(of)g(the)g (algorithm.)58 b(YBWC)36 b(and)f(APHID)g(were)g(tested)f(under)p 0 5088 1560 4 v 112 5150 a Fj(7)149 5180 y Fi(A)h(lar)o(ger)e (transposition)f(table)i(\(4-8)f(GB)i(of)e(RAM\))i(for)e(both)g(the)h (sequential)f(and)h(parallel)f(tests)j(w)o(ould)d(impro)o(v)o(e)f(the)0 5279 y(speedups)19 b(of)h(the)g(check)o(ers)g(and)f(chess)i(programs.)i (This)d(w)o(as)h(not)f(possible)g(to)g(test)h(because)f(of)g(resource)f (constraints.)1900 5589 y Fu(25)p eop %%Page: 26 29 26 28 bop 406 0 a 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig 406 0 a %%BeginDocument: pics/overhead_keyano.ps /gnudict 40 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /vshift -60 def /dl {10 mul} def /hpt 31.5 def /vpt 31.5 def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def /BL { stroke gnulinewidth 2 mul setlinewidth } def /AL { stroke gnulinewidth 2 div setlinewidth } def /PL { stroke gnulinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 0 1 0 DL } def /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /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 /P { stroke [] 0 setdash currentlinewidth 2 div sub M 0 currentlinewidth V stroke } def /D { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke P } def /A { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke P } def /C { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke P } def /S { 2 copy A C} def end gnudict begin gsave 50 50 translate 0.100 0.100 scale 0 setgray /Helvetica findfont 180 scalefont setfont newpath LTa 1080 451 M 4544 0 V -4544 0 R 0 4498 V LTb 1080 451 M 63 0 V 4481 0 R -63 0 V 972 451 M (0) Rshow 1080 901 M 63 0 V 4481 0 R -63 0 V 972 901 M (50) Rshow 1080 1351 M 63 0 V 4481 0 R -63 0 V -4589 0 R (100) Rshow 1080 1800 M 63 0 V 4481 0 R -63 0 V -4589 0 R (150) Rshow 1080 2250 M 63 0 V 4481 0 R -63 0 V -4589 0 R (200) Rshow 1080 2700 M 63 0 V 4481 0 R -63 0 V -4589 0 R (250) Rshow 1080 3150 M 63 0 V 4481 0 R -63 0 V -4589 0 R (300) Rshow 1080 3600 M 63 0 V 4481 0 R -63 0 V -4589 0 R (350) Rshow 1080 4049 M 63 0 V 4481 0 R -63 0 V -4589 0 R (400) Rshow 1080 4499 M 63 0 V 4481 0 R -63 0 V -4589 0 R (450) Rshow 1080 4949 M 63 0 V 4481 0 R -63 0 V -4589 0 R (500) Rshow 1080 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (0) Cshow 1585 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (8) Cshow 2090 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (16) Cshow 2595 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (24) Cshow 3100 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (32) Cshow 3604 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (40) Cshow 4109 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (48) Cshow 4614 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (56) Cshow 5119 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (64) Cshow 5624 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (72) Cshow 1080 451 M 4544 0 V 0 4498 V -4544 0 V 0 -4498 V 504 2700 M currentpoint gsave translate 90 rotate 0 0 M (Overhead \(in Percent\)) Cshow grestore 3352 -89 M (Number of Processors) Cshow 3163 4724 M (Keyano-APHID) Rshow LT0 3163 4454 M (Total Overhead) Rshow 3271 4454 M 324 0 V 1585 885 M 505 10 V 1010 50 V 2019 296 V 3379 4454 D 1585 885 D 2090 895 D 3100 945 D 5119 1241 D LT1 3163 4274 M (Master Overhead) Rshow 3271 4274 M 324 0 V 1585 579 M 505 -68 V 3100 480 L 5119 465 L 3379 4274 A 1585 579 A 2090 511 A 3100 480 A 5119 465 A LT2 3163 4094 M (Search Overhead) Rshow 3271 4094 M 324 0 V 1585 511 M 505 35 V 1010 34 V 5119 847 L 3379 4094 B 1585 511 B 2090 546 B 3100 580 B 5119 847 B LT3 3163 3914 M (Speculative Search) Rshow 3271 3914 M 324 0 V 1585 473 M 505 38 V 1010 70 V 5119 745 L 3379 3914 C 1585 473 C 2090 511 C 3100 581 C 5119 745 C LT4 3163 3734 M (Parallelization Overhead) Rshow 3271 3734 M 324 0 V 1585 626 M 505 2 V 3100 593 L 5119 493 L 3379 3734 T 1585 626 T 2090 628 T 3100 593 T 5119 493 T stroke grestore end showpage %%EndDocument endTexFig 1950 0 a 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig 1950 0 a %%BeginDocument: pics/overhead_chinook.ps /gnudict 40 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /vshift -60 def /dl {10 mul} def /hpt 31.5 def /vpt 31.5 def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def /BL { stroke gnulinewidth 2 mul setlinewidth } def /AL { stroke gnulinewidth 2 div setlinewidth } def /PL { stroke gnulinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 0 1 0 DL } def /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /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 /P { stroke [] 0 setdash currentlinewidth 2 div sub M 0 currentlinewidth V stroke } def /D { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke P } def /A { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke P } def /C { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke P } def /S { 2 copy A C} def end gnudict begin gsave 50 50 translate 0.100 0.100 scale 0 setgray /Helvetica findfont 180 scalefont setfont newpath LTa 1080 451 M 4544 0 V -4544 0 R 0 4498 V LTb 1080 451 M 63 0 V 4481 0 R -63 0 V 972 451 M (0) Rshow 1080 901 M 63 0 V 4481 0 R -63 0 V 972 901 M (50) Rshow 1080 1351 M 63 0 V 4481 0 R -63 0 V -4589 0 R (100) Rshow 1080 1800 M 63 0 V 4481 0 R -63 0 V -4589 0 R (150) Rshow 1080 2250 M 63 0 V 4481 0 R -63 0 V -4589 0 R (200) Rshow 1080 2700 M 63 0 V 4481 0 R -63 0 V -4589 0 R (250) Rshow 1080 3150 M 63 0 V 4481 0 R -63 0 V -4589 0 R (300) Rshow 1080 3600 M 63 0 V 4481 0 R -63 0 V -4589 0 R (350) Rshow 1080 4049 M 63 0 V 4481 0 R -63 0 V -4589 0 R (400) Rshow 1080 4499 M 63 0 V 4481 0 R -63 0 V -4589 0 R (450) Rshow 1080 4949 M 63 0 V 4481 0 R -63 0 V -4589 0 R (500) Rshow 1080 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (0) Cshow 1585 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (8) Cshow 2090 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (16) Cshow 2595 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (24) Cshow 3100 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (32) Cshow 3604 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (40) Cshow 4109 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (48) Cshow 4614 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (56) Cshow 5119 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (64) Cshow 5624 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (72) Cshow 1080 451 M 4544 0 V 0 4498 V -4544 0 V 0 -4498 V 504 2700 M currentpoint gsave translate 90 rotate 0 0 M (Overhead \(in Percent\)) Cshow grestore 3352 -89 M (Number of Processors) Cshow 3163 4724 M (Chinook-APHID) Rshow LT0 3163 4454 M (Total Overhead) Rshow 3271 4454 M 324 0 V 2090 1569 M 3100 3051 L 5119 4570 L 3379 4454 D 2090 1569 D 3100 3051 D 5119 4570 D LT1 3163 4274 M (Master Overhead) Rshow 3271 4274 M 324 0 V 2090 511 M 3100 480 L 5119 465 L 3379 4274 A 2090 511 A 3100 480 A 5119 465 A LT2 3163 4094 M (Search Overhead) Rshow 3271 4094 M 324 0 V 2090 782 M 1010 672 V 2019 583 V 3379 4094 B 2090 782 B 3100 1454 B 5119 2037 B LT3 3163 3914 M (Speculative Search) Rshow 3271 3914 M 324 0 V 2090 908 M 1010 354 V 5119 2401 L 3379 3914 C 2090 908 C 3100 1262 C 5119 2401 C LT4 3163 3734 M (Parallelization Overhead) Rshow 3271 3734 M 324 0 V 2090 617 M 1010 33 V 5119 531 L 3379 3734 T 2090 617 T 3100 650 T 5119 531 T stroke grestore end showpage %%EndDocument endTexFig 406 1448 a 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig 406 1448 a %%BeginDocument: pics/overhead_crafty.ps /gnudict 40 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /vshift -60 def /dl {10 mul} def /hpt 31.5 def /vpt 31.5 def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def /BL { stroke gnulinewidth 2 mul setlinewidth } def /AL { stroke gnulinewidth 2 div setlinewidth } def /PL { stroke gnulinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 0 1 0 DL } def /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /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 /P { stroke [] 0 setdash currentlinewidth 2 div sub M 0 currentlinewidth V stroke } def /D { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke P } def /A { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke P } def /C { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke P } def /S { 2 copy A C} def end gnudict begin gsave 50 50 translate 0.100 0.100 scale 0 setgray /Helvetica findfont 180 scalefont setfont newpath LTa 1080 451 M 4544 0 V -4544 0 R 0 4498 V LTb 1080 451 M 63 0 V 4481 0 R -63 0 V 972 451 M (0) Rshow 1080 901 M 63 0 V 4481 0 R -63 0 V 972 901 M (50) Rshow 1080 1351 M 63 0 V 4481 0 R -63 0 V -4589 0 R (100) Rshow 1080 1800 M 63 0 V 4481 0 R -63 0 V -4589 0 R (150) Rshow 1080 2250 M 63 0 V 4481 0 R -63 0 V -4589 0 R (200) Rshow 1080 2700 M 63 0 V 4481 0 R -63 0 V -4589 0 R (250) Rshow 1080 3150 M 63 0 V 4481 0 R -63 0 V -4589 0 R (300) Rshow 1080 3600 M 63 0 V 4481 0 R -63 0 V -4589 0 R (350) Rshow 1080 4049 M 63 0 V 4481 0 R -63 0 V -4589 0 R (400) Rshow 1080 4499 M 63 0 V 4481 0 R -63 0 V -4589 0 R (450) Rshow 1080 4949 M 63 0 V 4481 0 R -63 0 V -4589 0 R (500) Rshow 1080 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (0) Cshow 1585 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (8) Cshow 2090 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (16) Cshow 2595 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (24) Cshow 3100 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (32) Cshow 3604 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (40) Cshow 4109 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (48) Cshow 4614 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (56) Cshow 5119 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (64) Cshow 5624 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (72) Cshow 1080 451 M 4544 0 V 0 4498 V -4544 0 V 0 -4498 V 504 2700 M currentpoint gsave translate 90 rotate 0 0 M (Overhead \(in Percent\)) Cshow grestore 3352 -89 M (Number of Processors) Cshow 3163 4724 M (Crafty-APHID) Rshow LT0 3163 4454 M (Total Overhead) Rshow 3271 4454 M 324 0 V 2090 1447 M 1010 269 V 5119 3605 L 3379 4454 D 2090 1447 D 3100 1716 D 5119 3605 D LT1 3163 4274 M (Master Overhead) Rshow 3271 4274 M 324 0 V 2090 511 M 3100 480 L 5119 465 L 3379 4274 A 2090 511 A 3100 480 A 5119 465 A LT2 3163 4094 M (Search Overhead) Rshow 3271 4094 M 324 0 V 2090 982 M 1010 177 V 5119 2171 L 3379 4094 B 2090 982 B 3100 1159 B 5119 2171 B LT3 3163 3914 M (Speculative Search) Rshow 3271 3914 M 324 0 V 2090 549 M 3100 829 L 2019 607 V 3379 3914 C 2090 549 C 3100 829 C 5119 1436 C LT4 3163 3734 M (Parallelization Overhead) Rshow 3271 3734 M 324 0 V 2090 688 M 3100 563 L 2019 4 V 3379 3734 T 2090 688 T 3100 563 T 5119 567 T stroke grestore end showpage %%EndDocument endTexFig 1950 1448 a 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig 1950 1448 a %%BeginDocument: pics/overhead_theturk.ps /gnudict 40 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /vshift -60 def /dl {10 mul} def /hpt 31.5 def /vpt 31.5 def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def /BL { stroke gnulinewidth 2 mul setlinewidth } def /AL { stroke gnulinewidth 2 div setlinewidth } def /PL { stroke gnulinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 0 1 0 DL } def /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /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 /P { stroke [] 0 setdash currentlinewidth 2 div sub M 0 currentlinewidth V stroke } def /D { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke P } def /A { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke P } def /C { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke P } def /S { 2 copy A C} def end gnudict begin gsave 50 50 translate 0.100 0.100 scale 0 setgray /Helvetica findfont 180 scalefont setfont newpath LTa 1080 451 M 4544 0 V -4544 0 R 0 4498 V LTb 1080 451 M 63 0 V 4481 0 R -63 0 V 972 451 M (0) Rshow 1080 901 M 63 0 V 4481 0 R -63 0 V 972 901 M (50) Rshow 1080 1351 M 63 0 V 4481 0 R -63 0 V -4589 0 R (100) Rshow 1080 1800 M 63 0 V 4481 0 R -63 0 V -4589 0 R (150) Rshow 1080 2250 M 63 0 V 4481 0 R -63 0 V -4589 0 R (200) Rshow 1080 2700 M 63 0 V 4481 0 R -63 0 V -4589 0 R (250) Rshow 1080 3150 M 63 0 V 4481 0 R -63 0 V -4589 0 R (300) Rshow 1080 3600 M 63 0 V 4481 0 R -63 0 V -4589 0 R (350) Rshow 1080 4049 M 63 0 V 4481 0 R -63 0 V -4589 0 R (400) Rshow 1080 4499 M 63 0 V 4481 0 R -63 0 V -4589 0 R (450) Rshow 1080 4949 M 63 0 V 4481 0 R -63 0 V -4589 0 R (500) Rshow 1080 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (0) Cshow 1585 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (8) Cshow 2090 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (16) Cshow 2595 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (24) Cshow 3100 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (32) Cshow 3604 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (40) Cshow 4109 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (48) Cshow 4614 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (56) Cshow 5119 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (64) Cshow 5624 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (72) Cshow 1080 451 M 4544 0 V 0 4498 V -4544 0 V 0 -4498 V 504 2700 M currentpoint gsave translate 90 rotate 0 0 M (Overhead \(in Percent\)) Cshow grestore 3352 -89 M (Number of Processors) Cshow 3163 4724 M (TheTurk-APHID) Rshow LT0 3163 4454 M (Total Overhead) Rshow 3271 4454 M 324 0 V 2090 1341 M 1010 759 V 5119 3912 L 3379 4454 D 2090 1341 D 3100 2100 D 5119 3912 D LT1 3163 4274 M (Master Overhead) Rshow 3271 4274 M 324 0 V 2090 511 M 3100 480 L 5119 465 L 3379 4274 A 2090 511 A 3100 480 A 5119 465 A LT2 3163 4094 M (Search Overhead) Rshow 3271 4094 M 324 0 V 2090 927 M 1010 792 V 5119 2925 L 3379 4094 B 2090 927 B 3100 1719 B 5119 2925 B LT3 3163 3914 M (Speculative Search) Rshow 3271 3914 M 324 0 V 2090 517 M 1010 80 V 2019 841 V 3379 3914 C 2090 517 C 3100 597 C 5119 1438 C LT4 3163 3734 M (Parallelization Overhead) Rshow 3271 3734 M 324 0 V 2090 669 M 3100 544 L 4477 451 L 3379 3734 T 2090 669 T 3100 544 T stroke grestore end showpage %%EndDocument endTexFig 1191 2972 a Fu(Figure)25 b(8:)30 b(Ov)o(erheads)25 b(for)g(All)f (Programs)0 3259 y(similar)35 b(conditions:)53 b(the)36 b(same)h(test)f(set,)j(same)d(search)i(depth,)g(and)f(the)f(same)h (size)g(of)f(shared)h(memory)0 3458 y(transposition)22 b(table.)31 b(The)24 b(performance)h(of)g(APHID)g(v)o(ersus)f(YBWC)h (can)g(be)g(seen)g(in)f(Figure)h(9.)30 b(YBWC)c(is)0 3657 y(rapidly)i(starv)o(ed)h(out)f(of)h(w)o(ork)g(to)g(do)g(once)g(64) g(processors)f(are)i(reached.)44 b(The)29 b(synchronization)f(o)o(v)o (erhead)0 3857 y(increases)d(dramatically)f(and)h(the)f(processors)h (are)g(only)f(b)n(usy)h(60\045)f(of)h(the)g(time.)146 4056 y(The)33 b(search)g(o)o(v)o(erhead)f(in)g(YBWC)h(starts)f(at)g(a)h (higher)f(le)n(v)o(el)f(than)i(for)f(APHID)h(on)f(8)h(processors,)h(b)n (ut)0 4255 y(the)i(search)g(o)o(v)o(erhead)g(in)f(APHID)i(rapidly)e (increases)h(past)g(the)g(equi)n(v)n(alent)e(le)n(v)o(el)h(in)h(YBWC.)g (Ho)n(we)n(v)o(er)l(,)0 4454 y(it)c(is)g(important)f(to)i(note)f(that)g (the)h(o)o(v)o(erhead)e(in)i(APHID)g(is)f(partially)g(due)g(to)g (speculati)n(v)o(e)f(search.)55 b(When)0 4654 y(APHID)38 b(is)f(run)h(on)g(64)f(processors,)k(a)d(32.65\045)f(o)o(v)o(erhead)g (is)g(attrib)n(uted)g(to)g(speculati)n(v)o(e)f(search.)70 b(If)38 b(the)0 4853 y(search)25 b(were)g(e)o(xtended)f(an)h(e)o(xtra)f (ply)-6 b(,)23 b(these)i(speculati)n(v)o(e)d(search)j(results)f(w)o (ould)g(gi)n(v)o(e)f(APHID)i(a)g(head)f(start)0 5052 y(on)i(the)g(ne)o(xt)g(iteration;)g(YBWC)h(w)o(ould)f(be)h(forced)g(to) f(attempt)f(the)h(entire)h(search)g(from)f(scratch.)36 b(YBWC')-5 b(s)0 5251 y(parallelization)21 b(o)o(v)o(erhead)f(is)i (much)f(lo)n(wer)g(than)g(the)g(equi)n(v)n(alent)f(o)o(v)o(erheads)h (in)g(APHID.)h(Ho)n(we)n(v)o(er)l(,)f(APHID)1900 5589 y(26)p eop %%Page: 27 30 27 29 bop 406 0 a 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig 406 0 a %%BeginDocument: pics/aphidybw_keyano.ps /gnudict 40 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /vshift -60 def /dl {10 mul} def /hpt 31.5 def /vpt 31.5 def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def /BL { stroke gnulinewidth 2 mul setlinewidth } def /AL { stroke gnulinewidth 2 div setlinewidth } def /PL { stroke gnulinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 0 1 0 DL } def /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /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 /P { stroke [] 0 setdash currentlinewidth 2 div sub M 0 currentlinewidth V stroke } def /D { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke P } def /A { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke P } def /C { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke P } def /S { 2 copy A C} def end gnudict begin gsave 50 50 translate 0.100 0.100 scale 0 setgray /Helvetica findfont 180 scalefont setfont newpath LTa 1080 451 M 4544 0 V -4544 0 R 0 4498 V LTb 1080 451 M 63 0 V 4481 0 R -63 0 V 972 451 M (0) Rshow 1080 951 M 63 0 V 4481 0 R -63 0 V 972 951 M (8) Rshow 1080 1451 M 63 0 V 4481 0 R -63 0 V -4589 0 R (16) Rshow 1080 1950 M 63 0 V 4481 0 R -63 0 V -4589 0 R (24) Rshow 1080 2450 M 63 0 V 4481 0 R -63 0 V -4589 0 R (32) Rshow 1080 2950 M 63 0 V 4481 0 R -63 0 V -4589 0 R (40) Rshow 1080 3450 M 63 0 V 4481 0 R -63 0 V -4589 0 R (48) Rshow 1080 3949 M 63 0 V 4481 0 R -63 0 V -4589 0 R (56) Rshow 1080 4449 M 63 0 V 4481 0 R -63 0 V -4589 0 R (64) Rshow 1080 4949 M 63 0 V 4481 0 R -63 0 V -4589 0 R (72) Rshow 1080 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (0) Cshow 1585 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (8) Cshow 2090 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (16) Cshow 2595 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (24) Cshow 3100 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (32) Cshow 3604 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (40) Cshow 4109 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (48) Cshow 4614 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (56) Cshow 5119 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (64) Cshow 5624 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (72) Cshow 1080 451 M 4544 0 V 0 4498 V -4544 0 V 0 -4498 V 504 2700 M currentpoint gsave translate 90 rotate 0 0 M (Speedup) Cshow grestore 3352 -89 M (Number of Processors) Cshow LT0 3794 4637 M (Perfect Speedup) Rshow 3902 4637 M 324 0 V 1080 451 M 505 500 V 505 500 V 1010 999 V 5119 4449 L 505 500 V LT1 3794 4457 M (APHID, fixed-depth, shared TT) Rshow 3902 4457 M 324 0 V 1585 810 M 505 345 V 1010 670 V 2019 965 V 4010 4457 D 1585 810 D 2090 1155 D 3100 1825 D 5119 2790 D LT2 3794 4277 M (YBW, fixed-depth, shared TT) Rshow 3902 4277 M 324 0 V 1585 841 M 505 294 V 1010 462 V 2019 366 V 4010 4277 A 1585 841 A 2090 1135 A 3100 1597 A 5119 1963 A stroke grestore end showpage %%EndDocument endTexFig 1950 0 a 12191183 10419816 3289088 3289088 42100326 36443095 startTexFig 1950 0 a %%BeginDocument: pics/overhead_ybwkeyano.ps /gnudict 40 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /vshift -60 def /dl {10 mul} def /hpt 31.5 def /vpt 31.5 def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def /BL { stroke gnulinewidth 2 mul setlinewidth } def /AL { stroke gnulinewidth 2 div setlinewidth } def /PL { stroke gnulinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 0 1 0 DL } def /LT1 { PL [4 dl 2 dl] 0 0 1 DL } def /LT2 { PL [2 dl 3 dl] 1 0 0 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /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 /P { stroke [] 0 setdash currentlinewidth 2 div sub M 0 currentlinewidth V stroke } def /D { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke P } def /A { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke P } def /C { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke P } def /S { 2 copy A C} def end gnudict begin gsave 50 50 translate 0.100 0.100 scale 0 setgray /Helvetica findfont 180 scalefont setfont newpath LTa 1080 451 M 4544 0 V -4544 0 R 0 4498 V LTb 1080 451 M 63 0 V 4481 0 R -63 0 V 972 451 M (0) Rshow 1080 901 M 63 0 V 4481 0 R -63 0 V 972 901 M (50) Rshow 1080 1351 M 63 0 V 4481 0 R -63 0 V -4589 0 R (100) Rshow 1080 1800 M 63 0 V 4481 0 R -63 0 V -4589 0 R (150) Rshow 1080 2250 M 63 0 V 4481 0 R -63 0 V -4589 0 R (200) Rshow 1080 2700 M 63 0 V 4481 0 R -63 0 V -4589 0 R (250) Rshow 1080 3150 M 63 0 V 4481 0 R -63 0 V -4589 0 R (300) Rshow 1080 3600 M 63 0 V 4481 0 R -63 0 V -4589 0 R (350) Rshow 1080 4049 M 63 0 V 4481 0 R -63 0 V -4589 0 R (400) Rshow 1080 4499 M 63 0 V 4481 0 R -63 0 V -4589 0 R (450) Rshow 1080 4949 M 63 0 V 4481 0 R -63 0 V -4589 0 R (500) Rshow 1080 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (0) Cshow 1585 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (8) Cshow 2090 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (16) Cshow 2595 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (24) Cshow 3100 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (32) Cshow 3604 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (40) Cshow 4109 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (48) Cshow 4614 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (56) Cshow 5119 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (64) Cshow 5624 451 M 0 63 V 0 4435 R 0 -63 V 0 -4615 R (72) Cshow 1080 451 M 4544 0 V 0 4498 V -4544 0 V 0 -4498 V 504 2700 M currentpoint gsave translate 90 rotate 0 0 M (Overhead \(in Percent\)) Cshow grestore 3352 -89 M (Number of Processors) Cshow 3415 4724 M (Keyano-YBWC) Rshow LT0 3415 4454 M (Total Overhead) Rshow 3523 4454 M 324 0 V 1585 823 M 505 178 V 1010 355 V 2019 886 V 3631 4454 D 1585 823 D 2090 1001 D 3100 1356 D 5119 2242 D LT1 3415 4274 M (Synchronization Overhead) Rshow 3523 4274 M 324 0 V 1585 468 M 505 137 V 3100 717 L 2019 719 V 3631 4274 A 1585 468 A 2090 605 A 3100 717 A 5119 1436 A LT2 3415 4094 M (Search Overhead) Rshow 3523 4094 M 324 0 V 1585 670 M 505 13 V 3100 806 L 2019 77 V 3631 4094 B 1585 670 B 2090 683 B 3100 806 B 5119 883 B LT3 3415 3914 M (Parallelization Overhead) Rshow 3523 3914 M 324 0 V 1585 468 M 505 11 V 1010 20 V 2019 13 V 3631 3914 C 1585 468 C 2090 479 C 3100 499 C 5119 512 C stroke grestore end showpage %%EndDocument endTexFig 167 1523 a Fu(Figure)25 b(9:)30 b(Speedups)25 b(and)g(Ov)o(erheads)f (for)j(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)31 b Fu(\(YBWC,)26 b(Fix)o(ed-Depth,)d(Shared)j(Memory\))0 1811 y(ne)n(v)o(er)e(slo)n(ws)g (do)n(wn)f(to)i(w)o(ait)f(for)h(messages)f(from)h(another)g(processor)f (or)h(to)g(\002nd)g(w)o(ork.)146 2010 y(The)k(observ)o(ed)g(speedups)f (for)i(YBWC)g(are)g(in)e(line)h(with)f(other)h(published)f(performance) i(numbers)e(for)0 2209 y(this)g(algorithm.)41 b(W)-8 b(eill)28 b(tested)h(YBWC)g(and)g(ABD)l(AD)l(A)g(on)f(a)i(CM-5)e(using) g(a)h(dif)n(ferent)g(Othello)e(program)0 2408 y([17].)74 b(YBWC)40 b(achie)n(v)o(ed)f(a)g(9.5-fold)g(speedup)g(and)g(ABD)l(AD)l (A)g(achie)n(v)o(ed)g(an)g(11-fold)g(speedup)f(on)h(16)0 2608 y(processors,)24 b(comparable)h(numbers)f(to)g(that)h(achie)n(v)o (ed)f(by)g(the)j(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)31 b Fu(implementation.) 146 2807 y(Switching)38 b(to)g(the)g(check)o(ers)h(program)f(results,)j (the)d(speedups)g(for)i(C)t Fa(H)t(I)t(N)t(O)t(O)t(K)45 b Fu(could)38 b(be)g(described)0 3006 y(as)e(disappointing.)62 b(Ho)n(we)n(v)o(er)l(,)38 b(other)e(authors)f(that)h(ha)n(v)o(e)f (attempted)g(to)h(parallelize)g(check)o(ers)h(programs)0 3205 y(with)29 b(synchronous)f(algorithms)g(ha)n(v)o(e)h(met)g(with)g (limited)f(success.)44 b(The)30 b(best-kno)n(wn)e(speedup)h(for)h(a)f (syn-)0 3405 y(chronous)f(algorithm)f(on)i(a)g(high-performance)f (check)o(ers)i(program)e(is)g(3.32)g(for)h(Lu')-5 b(s)28 b(Principal)h(V)-11 b(ariation)0 3604 y(Frontier)29 b(Splitting)f(with) h(Load)g(Balancing)h([12)o(].)45 b(Thus,)30 b(the)f(observ)o(ed)g (speedup)g(of)g(14.35)g(on)g(64)g(proces-)0 3803 y(sors)24 b(for)h(APHID)g(is)f(a)h(four)n(-fold)f(impro)o(v)o(ement)e(o)o(v)o(er) i(pre)n(viously)f(published)g(results)h(for)g(an)o(y)g(synchronous)0 4002 y(algorithm)f(in)i(the)f(domain)g(of)h(check)o(ers.)146 4202 y(APHID)i(can)g(yield)f(lar)n(ger)h(observ)o(ed)e(speedups)h(than) g(synchronous)f(algorithms)f(in)i(domains)f(with)h(lo)n(w)0 4401 y(branching)h(f)o(actors)i(such)e(as)h(check)o(ers)h(and)f (Othello.)39 b(Higher)27 b(branching)h(f)o(actors)g(are)h(represented)f (by)g(tw)o(o)0 4600 y(computer)g(chess)h(programs:)41 b(C)t Fa(R)t(A)t(F)t(T)t(Y)36 b Fu(and)31 b(T)t Fa(H)t(E)t Fu(T)t Fa(U)t(R)t(K)r Fu(.)49 b(In)29 b(computer)f(chess)h(algorithms,) f(synchronous)0 4799 y(parallel)23 b(algorithms)f(achie)n(v)o(e)h (higher)g(ef)n(\002ciencies)h(because)g(of)f(the)g(increased)h(number)f (of)g(parallel)h(alterna-)0 4999 y(ti)n(v)o(es)i(a)n(v)n(ailable)h(at)h (ALL)g(nodes.)39 b(Consider)28 b(W)-8 b(eill')j(s)27 b(tests)g(on)h(a)g(32-processor)f(CM-5)h(as)g(representati)n(v)o(e)f (of)0 5198 y(synchronous)19 b(parallel)h(algorithm)f(performance.)30 b(W)-8 b(eill')j(s)19 b(implementation)f(of)i(YBWC)h(for)g(chess)f (achie)n(v)o(ed)1900 5589 y(27)p eop %%Page: 28 31 28 30 bop 0 100 a Fu(a)22 b(speedup)g(of)g(12)g(on)f(32)h(processors,)g (and)g(ABD)l(AD)l(A)g(achie)n(v)o(ed)g(a)g(speedup)g(of)g(16)f([17].)30 b(W)-8 b(eill')j(s)21 b(results)g(are)0 299 y(similar)h(to)g(other)h (reported)g(speedups)g(with)f(synchronous)g(game-tree)g(search)i (algorithms.)k(The)23 b(majority)f(of)0 498 y(these)i(algorithms)f(ha)n (v)o(e)h(been)h(tested)e(under)i(similar)e(conditions)g(to)h(those)f (used)i(for)f(the)g(chess)h(programs)e(in)0 697 y(this)i(paper)-5 b(.)33 b(Although)24 b(it)h(is)g(not)g(an)g(objecti)n(v)o(e)f (comparison)h(between)h(algorithms,)e(the)h(observ)o(ed)g(speedups)0 897 y(in)33 b(the)g(literature)g(for)g(most)f(synchronous)g(algorithms) f(are)j(comparable,)h(up)e(to)f(32)h(processors,)i(with)d(the)0 1096 y(observ)o(ed)24 b(speedups)g(seen)h(for)g(the)g(APHID)g (algorithm)e(in)i(both)h(T)t Fa(H)t(E)t Fu(T)t Fa(U)t(R)t(K)32 b Fu(and)26 b(C)t Fa(R)t(A)t(F)t(T)t(Y)r Fu(.)146 1295 y(Dynamic)h(T)m(ree)h(Splitting,)f(when)h(using)f(the)g(same)h(testing) e(methodology)g(as)i(described)g(in)f(this)g(paper)l(,)0 1494 y(achie)n(v)o(ed)18 b(a)i(speedup)f(of)g(8.81)g(on)g(16)g (processors)g([6].)29 b(Ho)n(we)n(v)o(er)l(,)19 b(a)h(latter)f(paper)g (which)g(used)g(a)h(non-standard)0 1694 y(testing)27 b(methodology)g(\(using)g(a)i(series)g(of)f(related)h(positions)e(with) g(transposition)g(table)h(data)h(carried)g(o)o(v)o(er)0 1893 y(from)24 b(search)g(to)g(search\))g(yielded)g(a)g(speedup)f(of)h (11.1)g(on)f(16)h(processors)f([7].)31 b(It)24 b(is)f(not)h(kno)n(wn)e (whether)i(the)0 2092 y(latter)h(testing)e(methodology)g(is)h (partially)g(responsible)g(for)h(the)g(dif)n(ference)g(in)f(the)h (observ)o(ed)f(results.)146 2291 y(Ho)n(we)n(v)o(er)l(,)c(there)f(is)h (one)f(important)f(data)i(point)f(that)g(is)g(signi\002cantly)f(lar)n (ger)i(than)g(the)f(reported)h(speedups)0 2491 y(by)g(an)o(y)g(other)g (author)-5 b(.)28 b(Feldmann')-5 b(s)20 b(Y)-11 b(oung)19 b(Brothers)i(W)-8 b(ait)20 b(algorithm)f(in)j(Z)t Fa(U)t(G)t(Z)t(W)-6 b(A)t(N)t(G)27 b Fu(achie)n(v)o(es)20 b(speedups)0 2690 y(of)27 b(21.83)g(on)g(32)g(processors)g(and)g(37.34)f(on)h(64)g (processors)g(for)h(7-ply)e(searches)i(for)g(chess)f(that)f(tak)o(e)i (place)0 2889 y(in)h(tournament)g(time)g([3].)46 b(Results)29 b(of)h(this)f(calibre)h(ha)n(v)o(e)f(not)g(been)h(reported)g(for)g(an)o (y)f(other)h(algorithm)e(or)0 3088 y(by)d(an)o(y)f(other)g(author)h (repeating)g(Feldmann')-5 b(s)23 b(w)o(ork.)146 3288 y(Why)32 b(are)i(Feldmann')-5 b(s)31 b(observ)o(ed)h(speedups)g(so)g (lar)n(ge?)55 b(One)33 b(reason)g(is)f(that)i(Z)t Fa(U)t(G)t(Z)t(W)-6 b(A)t(N)t(G)40 b Fu(is)32 b(a)h(slo)n(w)0 3487 y(sequential)26 b(program.)38 b(C)t Fa(R)t(A)t(F)t(T)t(Y)c Fu(searches)27 b(11-)f(and)h(12-ply)f(trees)h(on)f(32)g(processors)h(in)f(the)g(same)h (a)n(v)o(erage)0 3686 y(time)i(that)i(Z)t Fa(U)t(G)t(Z)t(W)-6 b(A)t(N)t(G)37 b Fu(searches)30 b(7-ply)e(trees)i(on)f(32)g (processors.)45 b(Although)28 b(there)h(is)g(a)h(dramatic)f(speed)0 3885 y(dif)n(ference)36 b(between)g(the)f(SGI)h(Origin)f(2000)g(\(on)g (which)g(Crafty)i(searches)f(130,000)e(nodes)h(per)h(second\))0 4085 y(and)23 b(the)g(T)m(ransputer)f(T)-9 b(-800)23 b(\(where)h(Zugzw)o(ang)e(visits)g(523)g(nodes)h(per)h(second\),)f (this)f(does)h(not)f(completely)0 4284 y(account)j(for)g(the)f(lar)n (ge)i(dif)n(ference)f(in)f(search)i(depths.)146 4483 y(Unlik)o(e)f(other)h(game-playing)e(programs,)k(Z)t Fa(U)t(G)t(Z)t(W)-6 b(A)t(N)t(G)33 b Fu(spends)25 b(a)h(lar)n(ge)g (amount)f(of)h(time)f(doing)g(mo)o(v)o(e)0 4682 y(ordering)39 b(at)h(each)h(node.)75 b(This)39 b(allo)n(ws)i(Z)t Fa(U)t(G)t(Z)t(W)-6 b(A)t(N)t(G)47 b Fu(to)40 b(use)g(a)g(netw)o(ork)f(of)h(T)m(ransputers) f(as)h(a)g(shared)0 4882 y(memory)30 b(system)g(with)g(v)o(ery)g (little)g(loss)g(in)g(performance.)50 b(The)31 b(time)f(spent)g(in)g (mo)o(v)o(e)g(ordering)g(impro)o(v)o(es)2 5081 y(Z)t Fa(U)t(G)t(Z)t(W)-6 b(A)t(N)t(G)r Fu(')h(s)37 b(parallel)c(tree)f (search:)47 b(it)31 b(searches)i(the)g(best)f(mo)o(v)o(e)f(\002rst)h (96\045)g(of)h(the)f(time,)h(signi\002cantly)0 5280 y(better)28 b(than)g(most)f(other)h(sequential)f(chess)h(programs.)40 b(On)28 b(the)g(other)g(hand,)h(most)e(programs)h(use)g(less)f(e)o(x-) 1900 5589 y(28)p eop %%Page: 29 32 29 31 bop 312 3 3256 4 v 312 20 V 310 120 4 100 v 493 120 V 510 120 V 510 120 V 754 90 a Fi(K)n(e)o(yano)p 1251 120 V 1268 120 V 1267 120 V 486 w(Chinook)p 2009 120 V 2026 120 V 2025 120 V 527 w(Crafty)p 2808 120 V 2825 120 V 2824 120 V 528 w(TheT)l(urk)p 3566 120 V 312 123 3256 4 v 310 222 4 100 v 493 222 V 510 222 V 895 222 V 990 193 a(T)-7 b(otal)p 1251 222 V 1268 222 V 1653 222 V 589 w(T)g(otal)p 2009 222 V 2026 222 V 2411 222 V 610 w(T)g(otal)p 2808 222 V 2825 222 V 3210 222 V 609 w(T)g(otal)p 3566 222 V 310 322 V 493 322 V 510 322 V 895 322 V 962 292 a(Search)p 1251 322 V 1268 322 V 1653 322 V 530 w(Search)p 2009 322 V 2026 322 V 2411 322 V 552 w(Search)p 2808 322 V 2825 322 V 3210 322 V 551 w(Search)p 3566 322 V 310 422 V 383 392 a(n)p 493 422 V 510 422 V 136 w(Speedup)p 895 422 V 135 w(Ov)o(er)i(.)p 1251 422 V 1268 422 V 153 w(Speedup)p 1653 422 V 135 w(Ov)o(er)g(.)p 2009 422 V 2026 422 V 153 w(Speedup)p 2411 422 V 155 w(Ov)o(er)g(.)p 2808 422 V 2825 422 V 174 w(Speedup)p 3210 422 V 135 w(Ov)o(er)g(.)p 3566 422 V 312 425 3256 4 v 310 525 4 100 v 383 495 a(8)p 493 525 V 510 525 V 206 w(5.74)p 895 525 V 189 w(9.12\045)p 1251 525 V 1268 525 V 265 w(-)p 1653 525 V 343 w(-)p 2009 525 V 2026 525 V 359 w(-)p 2411 525 V 363 w(-)p 2808 525 V 2825 525 V 380 w(-)p 3210 525 V 343 w(-)p 3566 525 V 312 528 3256 4 v 310 628 4 100 v 362 598 a(16)p 493 628 V 510 628 V 165 w(11.27)p 895 628 V 147 w(17.26\045)p 1251 628 V 1268 628 V 184 w(8.35)p 1653 628 V 168 w(87.45\045)p 2009 628 V 2026 628 V 185 w(8.76)p 2411 628 V 210 w(69.9\045)p 2808 628 V 2825 628 V 226 w(8.48)p 3210 628 V 168 w(59.26\045)p 3566 628 V 312 631 3256 4 v 310 731 4 100 v 362 701 a(32)p 493 731 V 510 731 V 165 w(21.99)p 895 731 V 147 w(28.78\045)p 1251 731 V 1268 731 V 163 w(10.82)p 1653 731 V 147 w(201.6\045)p 2009 731 V 2026 731 V 164 w(16.56)p 2411 731 V 168 w(120.7\045)p 2808 731 V 2825 731 V 184 w(12.96)p 3210 731 V 147 w(157.2\045)p 3566 731 V 312 734 3256 4 v 310 834 4 100 v 362 804 a(64)p 493 834 V 510 834 V 165 w(37.44)p 895 834 V 147 w(76.72\045)p 1251 834 V 1268 834 V 163 w(14.35)p 1653 834 V 147 w(393.1\045)p 2009 834 V 2026 834 V 164 w(18.00)p 2411 834 V 147 w(300.65\045)p 2808 834 V 2825 834 V 163 w(15.96)p 3210 834 V 147 w(384.8\045)p 3566 834 V 312 837 3256 4 v 312 853 V 513 1013 a Fu(T)d(able)25 b(I:)g(Speedup)g(Data)g(for)g(All)f(Programs)h(\(Fix)o(ed-Depth,)f (Shared)i(Memory\))0 1300 y(pensi)n(v)o(e)19 b(mo)o(v)o(e)g(ordering)i (heuristics)e(and)i(only)f(search)h(the)g(best)f(more)h(\002rst)f (80-90\045)h(of)f(the)h(time,)g(increasing)0 1499 y(the)j(node)h(rate)g (dramatically)-6 b(.)29 b(The)24 b(increase)i(in)e(nodes)g(per)h (second)f(easily)g(subsumes)f(the)h(additional)g(nodes)0 1698 y(that)g(must)g(be)h(searched,)g(allo)n(wing)e(most)h(programs)g (to)h(out-search)g(sequential)g(Z)t Fa(U)t(G)t(Z)t(W)-6 b(A)t(N)t(G)r Fu(.)146 1898 y(Another)34 b(reason)f(for)h(the)g(e)o (xtraordinary)f(speedups)g(is)g(that)g(the)g(transposition)f(table)h(w) o(as)h(allo)n(wed)e(to)0 2097 y(gro)n(w)g(as)h(more)f(T)m(ransputers)g (were)h(added)g(to)f(the)h(system.)53 b(Thus,)34 b(the)e(observ)o(ed)g (speedups)g(are)h(illustrat-)0 2296 y(ing)27 b(the)g(po)n(wer)g(of)h (adding)e(additional)g(processors)i(and)f(transposition)e(table)i (memory)-6 b(,)27 b(not)g(just)g(additional)0 2495 y(processors.)33 b(F)o(or)26 b(the)f(lar)n(gest)h(search)g(amongst)e(the)i(test)f(set,)i (Z)t Fa(U)t(G)t(Z)t(W)-6 b(A)t(N)t(G)33 b Fu(searches)27 b(61)e(million)f(nodes)h(se-)0 2695 y(quentially)c(with)h(a)i(small)d (transposition)g(table,)i(and)g(41)f(million)f(nodes)h(in)h(parallel)g (on)f(256)g(processors)h(with)0 2894 y(a)k(much)f(lar)n(ger)h (transposition)d(table.)35 b(The)26 b(number)g(of)g(nodes)i(Z)t Fa(U)t(G)t(Z)t(W)-6 b(A)t(N)t(G)34 b Fu(searches)27 b(sequentially)e(w) o(ould)0 3093 y(decrease)31 b(if)f(much)f(lar)n(ger)i(transposition)d (tables)h(were)i(used)f(during)f(the)h(sequential)f(test.)45 b(This)30 b(w)o(ould,)g(of)0 3293 y(course,)25 b(reduce)g(the)g(observ) o(ed)f(speedup.)146 3492 y(W)l(ith)33 b(a)g(f)o(ast)h(sequential)e (program,)j(operating)d(in)h(an)h(en)l(vironment)d(where)j(messages)f (are)h(not)e(f)o(ast)h(in)0 3691 y(relation)i(to)h(the)f(program,)j (less)e(than)f(superb)h(mo)o(v)o(e)e(ordering)h(and)h(constant)f (memory)g(usage)h(in)f(the)h(se-)0 3890 y(quential)23 b(and)g(parallel)g(runs,)h(it)f(is)g(unlik)o(ely)f(that)h(Feldmann')-5 b(s)22 b(observ)o(ed)h(speedups)g(can)h(be)f(duplicated)g(with)0 4090 y(an)o(y)k(synchronous)g(parallel)g(algorithm.)38 b(Gi)n(v)o(en)27 b(a)h(program)f(without)g(quiescence)h(search,)g(it)g (is)f(possible)f(to)0 4289 y(generate)i(equi)n(v)n(alent)d(speedups)i (with)f(asynchronous)h(search.)38 b(Earlier)28 b(it)e(w)o(as)i (demonstrated)e(that)h(APHID)0 4488 y(can)d(generate)g(speedups)f(of)h (that)g(calibre)g(in)f(the)h(\002x)o(ed-depth)f(v)o(ersion)f(of)k(K)t Fa(E)t(Y)-6 b(A)t(N)t(O)r Fu(.)34 b(Ho)n(we)n(v)o(er)l(,)23 b(quiescence)0 4687 y(search)29 b(is)f(inte)o(gral)f(to)h(modern)g (chess)g(programs.)41 b(Hence,)29 b(it)f(is)g(unlik)o(ely)f(that)h(an)o (y)g(asynchronous)f(parallel)0 4887 y(algorithm)c(in)i(chess)f(w)o (ould)g(achie)n(v)o(e)h(observ)o(ed)f(speedups)g(similar)f(to)i (Feldmann')-5 b(s)24 b(results.)1900 5589 y(29)p eop %%Page: 30 33 30 32 bop 0 100 a Fo(5)143 b(Conclusions)0 402 y Fu(In)25 b(this)f(paper)l(,)h(the)f(question)g(w)o(as)h(posed)f(as)h(to)f (whether)h(asynchronous)e(algorithms)g(could)i(be)g(competiti)n(v)o(e)0 601 y(with)32 b(synchronous)g(algorithms)g(in)h(real)g(applications)f (searching)h(real)h(game)e(trees.)57 b(The)33 b(results)f(in)h(Sec-)0 800 y(tion)26 b(4.3,)h(summarized)f(in)g(T)-8 b(able)27 b(I,)h(sho)n(w)e(that)g(the)h(APHID)g(algorithm)e(can)j(deli)n(v)o(er)d (superior/competiti)n(v)o(e)0 1000 y(results)f(to)g(that)g(achie)n(v)n (able)f(by)h(a)h(synchronous)e(algorithm.)29 b(Further)l(,)c(this)e (performance)i(is)f(easy)h(to)f(achie)n(v)o(e)0 1199 y(since)h(APHID)g(is)f(easy)h(to)g(inte)o(grate)f(into)g(an)g(e)o (xisting)f Fq(\013)q(\014)6 b Fu(-searching)25 b(program.)146 1398 y(Comparing)31 b(APHID)g(to)g(synchronous)f(approaches,)i(it)f(is) f(interesting)g(to)h(note)f(that)h(APHID')-5 b(s)31 b(results)0 1598 y(are)36 b(less)f(dependent)g(on)g(the)g(branching)g(f)o(actor)h (within)e(the)h(tree.)63 b(The)35 b(synchronous)f(search)i(results)e (are)0 1797 y(highly)d(dependent)h(on)g(the)g(branching)f(f)o(actor;)36 b(a)d(lar)n(ger)g(branching)e(f)o(actor)i(yields)e(more)h(parallelism)f (and)0 1996 y(less)26 b(idle)f(time.)34 b(Thus,)26 b(the)g (asynchronous)f(algorithm)g(in)g(APHID)i(is)f(a)g(better)g(choice)g(in) g(applications)f(with)0 2195 y(small)f(branching)g(f)o(actors,)h(such)g (as)f(check)o(ers)i(and)f(Othello.)146 2395 y(The)20 b(speedups)f(achie)n(v)n(able)g(by)h(the)g(APHID)g(algorithm)f(are)h (similar)f(to)g(those)h(achie)n(v)o(ed)f(by)g(synchronous)0 2594 y(parallel)k(algorithms)e(up)i(to)f(32)h(processors)f(for)i (chess.)29 b(Thus,)23 b(a)g(synchronous)f(parallel)h(algorithm)e(may)i (be)g(a)0 2793 y(reasonable)k(choice)g(for)g(wide)g(v)n(ariable-depth)e (game)i(trees.)37 b(Ho)n(we)n(v)o(er)l(,)26 b(when)g(one)h(considers)f (that)h(APHID)0 2992 y(is)f(\(1\))g(easy)h(to)f(inte)o(grate)f(into)h (e)o(xisting)e(le)o(gac)o(y)h(code,)i(\(2\))f(can)h(lik)o(ely)e(achie)n (v)o(e)h(better)g(speedups)g(with)f(more)0 3192 y(transposition)d (table)h(memory)-6 b(,)23 b(and)h(\(3\))g(has)g(the)g(additional)e (bene\002t)j(of)f(speculati)n(v)o(e)e(search)i(on)g(some)f(of)h(the)0 3391 y(k)o(e)o(y)g(v)n(ariations)g(at)g(the)h(ne)o(xt)f(search)h (depth,)g(then)f(APHID)h(becomes)g(the)f(algorithm)g(of)h(choice.)146 3590 y(It)h(is)g(hoped)g(that)f(this)g(document,)h(in)f(conjunction)g (with)g(the)h(freely-a)n(v)n(ailable)g(APHID)g(library)-6 b(,)26 b(will)f(be)0 3789 y(helpful)32 b(for)i(game-tree)f(researchers) h(to)f(in)l(v)o(estigate)e(these)i(and)g(other)g(ideas)f(surrounding)g (asynchronous)0 3989 y(game-tree)25 b(search.)0 4328 y Fo(6)143 b(Ackno)o(wledgements)0 4630 y Fu(P)o(aul)20 b(Masiar)g(and)h(Marc)g(Nolte)e(arranged)i(access)g(to)f(the)h (64-processor)f(SGI)h(Origin)f(2000)f(system)h(in)g(Eagan,)0 4830 y(Minnesota.)28 b(Charles)20 b(Leiserson,)h(Ask)o(e)f(Plaat)g(and) g(Boston)g(Uni)n(v)o(ersity)e(arranged)j(access)f(to)g(a)g (32-processor)0 5029 y(SGI)30 b(Origin)e(2000)g(system.)43 b(The)29 b(authors)f(w)o(ould)g(also)h(lik)o(e)f(to)h(thank)g(Darse)g (Billings,)g(Yngvi)f(Bj)8 b(\250)-41 b(ornsson,)0 5228 y(Murray)38 b(Campbell,)k(Joe)c(Culberson,)j(Y)-10 b(aoqing)38 b(Gao,)k(Andreas)d(Junghanns,)h(T)-8 b(on)o(y)37 b(Marsland,)42 b(Monroe)1900 5589 y(30)p eop %%Page: 31 34 31 33 bop 0 100 a Fu(Ne)n(wborn,)24 b(Denis)g(P)o(app,)h(John)f (Samson,)g(and)h(the)g(referees)h(for)f(their)f(helpful)h(suggestions.) 0 436 y Fo(Refer)m(ences)50 738 y Fu([1])49 b(R.)31 b(D.)f(Blumofe,)i (C.)f(F)-8 b(.)31 b(Joer)n(g,)h(B.)g(C.)f(K)o(uszmaul,)f(C.)h(E.)g (Leiserson,)g(K.)g(H.)f(Randall,)i(and)f(Y)-13 b(.)31 b(Zhou.)215 938 y(Cilk:)51 b(An)35 b(Ef)n(\002cient)g(Multithreaded)f (Runtime)h(System.)69 b(In)35 b Fm(Pr)l(oceedings)f(of)h(PPOPP)g('95)p Fu(,)j(pages)215 1137 y(207\226216,)23 b(Santa)j(Barbara,)g(CA,)f(July) f(1995.)50 1413 y([2])49 b(M.)36 b(G.)i(Brockington.)74 b Fm(Async)o(hrnous)36 b(P)-8 b(ar)o(allel)35 b(Game-T)-5 b(r)l(ee)38 b(Sear)l(c)o(h)p Fu(.)75 b(PhD)37 b(thesis,)i(Uni)n(v)o (ersity)c(of)215 1612 y(Alberta,)24 b(Department)h(of)f(Computing)g (Science,)h(Edmonton,)e(Canada,)j(December)f(1997.)50 1889 y([3])49 b(R.)32 b(Feldmann.)59 b Fm(Spielbaumsuc)o(he)31 b(auf)g(Massiv)h(P)-8 b(ar)o(allelen)30 b(Systemen)p Fu(.)60 b(PhD)32 b(thesis,)h(Uni)n(v)o(ersity)d(of)215 2088 y(P)o(aderborn,)22 b(P)o(aderborn,)f(German)o(y)-6 b(,)21 b(May)g(1993.)27 b(English)20 b(translation)g(a)n(v)n(ailable:) 27 b(Game)22 b(T)m(ree)f(Search)215 2287 y(on)j(Massi)n(v)o(ely)f(P)o (arallel)i(Systems.)50 2564 y([4])49 b(A.)25 b(Geist,)f(A.)h(Be)o (guelin,)g(J.)g(Dongarra,)g(W)-9 b(.)25 b(Jiang,)f(B.)i(Manchek,)f(and) g(V)-13 b(.)25 b(Sunderam.)37 b Fm(PVM:)25 b(P)-8 b(ar)o(allel)215 2763 y(V)h(irtual)33 b(Mac)o(hine)i(\226)h(A)f(User')l(s)g(Guide)g(and) h(T)-5 b(utorial)33 b(for)i(Network)o(ed)i(P)-8 b(ar)o(allel)33 b(Computing)p Fu(.)69 b(MIT)215 2962 y(Press,)25 b(1994.)50 3238 y([5])49 b(R.)36 b(D.)g(Greenblatt,)j(D.)d(E.)f(Eastlak)o(e,)k (and)d(S.)g(D.)g(Crock)o(er)-5 b(.)72 b(The)36 b(Greenblatt)g(Chess)g (Program.)72 b(In)215 3438 y Fm(Pr)l(oceedings)23 b(of)i(the)f(F)-7 b(all)24 b(J)n(oint)f(Computer)i(Confer)l(ence)p Fu(,)g(v)n(olume)f (31,)g(pages)h(801\226810,)f(1967.)50 3714 y([6])49 b(R.)34 b(M.)f(Hyatt.)63 b Fm(A)33 b(High-P)-8 b(erformance)33 b(P)-8 b(ar)o(allel)31 b(Algorithm)h(T)-9 b(o)34 b(Sear)l(c)o(h)f (Depth-F)l(ir)o(st)e(Game)j(T)-5 b(r)l(ees)p Fu(.)215 3913 y(PhD)25 b(thesis,)f(Uni)n(v)o(ersity)e(of)j(Alabama,)f (Birmingham,)g(Alabama,)g(1988.)50 4190 y([7])49 b(R.)22 b(M.)f(Hyatt.)28 b(The)22 b(Dynamic)f(T)m(ree)g(Splitting)f(P)o (arallel)i(Search)h(Algorithm.)k Fm(ICCA)22 b(J)n(ournal)p Fu(,)f(20\(1\):3\226)215 4389 y(19,)j(1997.)50 4665 y([8])49 b(A.)24 b(Junghanns)e(and)j(J.)e(Schaef)n(fer)-5 b(.)35 b(Search)25 b(V)-11 b(ersus)24 b(Kno)n(wledge)f(in)h(Game-Playing)f (Programs)h(Re)n(vis-)215 4864 y(ited.)35 b(In)25 b Fm(Pr)l(oceedings)e (of)i(IJCAI-97)p Fu(,)g(pages)g(692\226697,)f(Nago)o(ya,)g(Japan,)h (August)f(1997.)50 5141 y([9])49 b(D.)29 b(E.)f(Knuth)g(and)h(R.)h(W)-9 b(.)28 b(Moore.)49 b(An)28 b(Analysis)g(of)h(Alpha-Beta)g(Pruning.)49 b Fm(Arti\002cial)27 b(Intellig)o(ence)p Fu(,)215 5340 y(6\(3\):293\226326,)c(1975.)1900 5589 y(31)p eop %%Page: 32 35 32 34 bop 0 100 a Fu([10])49 b(D.)23 b(K)m(opec)g(and)g(I.)h(Bratk)o (o.)33 b(The)23 b(Bratk)o(o-K)m(opec)h(Experiment:)k(A)c(Comparison)e (of)i(Human)f(and)g(Com-)215 299 y(puter)g(Performance)h(in)f(Chess.)32 b(In)23 b(M.R.B.)g(Clark)o(e,)h(editor)l(,)f Fm(Advances)g(in)g (Computer)g(Chess)g(3)p Fu(,)g(pages)215 498 y(57\22672.)h(Permagon)h (Press,)g(1982.)0 780 y([11])49 b(B.)28 b(C.)h(K)o(uszmaul.)44 b(The)28 b(StarT)-7 b(ech)29 b(Massi)n(v)o(ely-P)o(arallel)d(Chess)i (Program.)46 b Fm(ICCA)29 b(J)n(ournal)p Fu(,)e(18\(1\):3\226)215 980 y(19,)d(1995.)0 1262 y([12])49 b(C.-P)-11 b(.)30 b(P)-11 b(.)30 b(Lu.)51 b(P)o(arallel)29 b(Search)i(of)e(Narro)n(w)h (Game)f(T)m(rees.)51 b(Master')-5 b(s)29 b(thesis,)g(Uni)n(v)o(ersity)f (of)h(Alberta,)215 1461 y(Department)24 b(of)h(Computing)e(Science,)j (Edmonton,)d(Canada,)i(1993.)0 1743 y([13])49 b(T)-7 b(.)24 b(A.)h(Marsland)f(and)g(M.)h(S.)g(Campbell.)35 b(P)o(arallel)25 b(Search)h(of)e(Strongly)g(Ordered)i(Game)e(T)m(rees.) 36 b Fm(A)m(CM)215 1943 y(Computing)23 b(Surve)m(ys)p Fu(,)i(14\(4\):533\226551,)e(1982.)0 2225 y([14])49 b(M.)28 b(M.)h(Ne)n(wborn.)48 b(Unsynchronized)28 b(Iterati)n(v)o(ely)f (Deepening)i(P)o(arallel)g(Alpha-Beta)g(Search.)50 b Fm(IEEE)215 2424 y(T)-5 b(r)o(ansactions)22 b(on)j(P)-8 b(attern)23 b(Analysis)h(and)g(Mac)o(hine)g(Intellig)o(ence)p Fu(,)g(P)-9 b(AMI-10\(5\):687\226694,)23 b(1988.)0 2707 y([15])49 b(J.)23 b(Schaef)n(fer)-5 b(.)33 b(Distrib)n(uted)21 b(Game-T)m(ree)j(Searching.)32 b Fm(J)n(ournal)22 b(of)h(P)-8 b(ar)o(allel)21 b(and)i(Distrib)n(uted)e(Comput-)215 2906 y(ing)p Fu(,)j(6\(2\):90\226114,)f(1989.)0 3188 y([16])49 b(J.)24 b(J.)g(Scott.)35 b(A)25 b(Chess-Playing)f(Program.)35 b(In)25 b(B.)g(Meltzer)g(and)f(D.)g(Michie,)g(editors,)g Fm(Mac)o(hine)g(Intelli-)215 3387 y(g)o(ence)h(4)p Fu(,)g(pages)f (255\226265.)g(Edinb)n(ur)n(gh)g(Uni)n(v)o(ersity)e(Press,)j(1969.)0 3670 y([17])49 b(J.-C.)35 b(W)-8 b(eill.)67 b Fm(Pr)l(o)o(gr)o(ammes)32 b(d')1389 3648 y(\264)1369 3670 y(Ec)o(hecs)j(de)f(Championnat:)50 b(Ar)l(c)o(hitectur)l(e)34 b(Lo)o(gicielle)o(,)j(Synth)3650 3671 y(\036)3645 3670 y(ese)d(de)215 3869 y(F)-10 b(onctions)23 b(d')730 3847 y(\264)711 3869 y(Evaluations,)f(P)-8 b(ar)o(all)1488 3870 y(\264)1483 3869 y(elisme)23 b(de)i(Rec)o(her)l(c)o(he)p Fu(.)35 b(PhD)25 b(thesis,)e(Uni)n(v)o(ersit)6 b(\264)-39 b(e)23 b(P)o(aris)i(8,)f(January)215 4068 y(1995.)35 b(In)25 b(French.)0 4408 y Fo(A)143 b(The)35 b(Master')-5 b(s)34 b(Guessed)g(Scor)m(e)h(Algorithm)0 4710 y Fu(APHID)j(has)f(all)g (of)g(the)h(information)d(about)i(the)g(pre)n(vious)f(depths)h(of)g Fq(\013)q(\014)43 b Fu(search)38 b(for)f(a)h(node,)i(such)d(as)0 4909 y(whether)26 b(the)g(score)g(w)o(as)g(a)h(lo)n(wer)e(bound,)h(an)g (upper)g(bound)f(or)h(an)g(e)o(xact)g(minimax)f(v)n(alue.)33 b(Other)26 b(informa-)0 5109 y(tion)21 b(includes)h(the)g(\002nal)g (minimax)f(v)n(alue)h(from)g(each)h(of)f(those)g(depths)f(of)h(search,) i(as)e(well)g(as)g(a)h(hypothetical)0 5308 y(minimax)28 b(v)n(alue)h(for)g(the)h(current)g Fq(d)p Fu(-ply)e(search)i(\(the)g (closest)f(node)g(on)g(the)g(principal)g(v)n(ariation)f(that)h(has)h(a) 1900 5589 y(32)p eop %%Page: 33 36 33 35 bop 0 100 a Fu(certain)28 b(v)n(alue\).)38 b(All)27 b(of)h(this)f(information)f(is)h(used)g(to)g(determine)g(a)h(guessed)f (score.)40 b(The)27 b(full)g(algorithm)g(is)0 299 y(gi)n(v)o(en)c(in)i (Figure)g(10.)146 498 y(Starting)i(with)f(the)g(information)g(for)h(a)g Fl(\()p Fq(d)c Fk(\000)h Fq(d)1817 462 y Fp(0)1863 498 y Fk(\000)g Fl(1\))p Fu(-ply)i(search,)i(the)f(algorithm)e(checks)i (successi)n(v)o(ely)0 697 y(shallo)n(wer)e(depths)g(of)h(search)g (returned)g(by)g(the)f(sla)n(v)o(e)h(until)e(a)j(rele)n(v)n(ant)d (result)i(is)f(found)h(with)f(respect)h(to)f(the)0 897 y Fq(\013)q(\014)33 b Fu(search)28 b(windo)n(w)-6 b(.)36 b(This)26 b(is)h(guaranteed)h(to)f(happen,)g(since)g(the)h(master)f (stores)f(an)i(e)o(xact)f(e)n(v)n(aluation)e(of)j(a)0 1096 y(leaf)d(node)g(\(a)g(0-ply)f(search\))i(when)f(the)f(leaf)h(is)g (\002rst)g(generated)g(and)g(gi)n(v)o(en)e(to)h(a)i(sla)n(v)o(e.)146 1295 y(Ho)n(we)n(v)o(er)l(,)k(the)f(result)g(returned)g(by)h(the)f(sla) n(v)o(e)g(should)f(not)h(be)g(used)h(without)e(an)h(adjustment)f(since) h(the)0 1494 y(minimax)24 b(v)n(alue)h(at)h(the)g(root)f(of)h(the)g (tree)g(may)g(v)n(ary)f(between)h(dif)n(ferent)g(depths)f(of)h(search.) 34 b(In)26 b(APHID,)g(the)0 1694 y(sla)n(v)o(e')-5 b(s)28 b(minimax)g(v)n(alue)h(is)g(scaled)h(by)f(the)g(dif)n(ference)h (between)g(the)f(v)n(alue)g(of)h(the)f(full)g(search)h(that)f(it)g(w)o (as)0 1893 y(generated)g(for)g(and)f(the)g(hypothetical)f(v)n(alue)h (of)g(the)g(current)h(search.)42 b(F)o(or)29 b(e)o(xample,)f(if)h(the)f (current)h(search)0 2092 y(has)k(a)g(hypothetical)d(minimax)h(v)n(alue) h(of)h(5,)i(and)d(the)h(result)f(of)h Fk(\024)g Fu(6)f(from)h(a)g (search)g(that)f(had)h(a)g(minimax)0 2291 y(v)n(alue)g(of)h(7)g(at)f (the)h(root)f(of)h(the)g(game)f(tree)h(is)f(to)h(be)g(used,)h(then)f (the)f(dif)n(ference)h(of)g(the)g(minimax)e(v)n(alues)0 2491 y(\(5-7\))26 b(w)o(ould)f(be)g(added)h(to)f(the)h(result.)33 b(Thus,)25 b(the)g(v)n(alue)g(changes)h(from)f Fk(\024)h Fu(6)g(for)g(the)f(earlier)i(search)f(to)f Fk(\024)h Fu(4)0 2690 y(for)g(use)g(as)f(a)h(guessed)f(minimax)g(v)n(alue)g(in)g (the)g(current)h(search.)34 b(This)25 b(preserv)o(es)h(the)f(mo)o(v)o (e)f(ordering)h(of)h(the)0 2889 y(pre)n(vious)e(iteration.)146 3088 y(This)c(algorithm)e(is)i(preferred)h(o)o(v)o(er)e(other)h (methods)f(for)h(determining)f(an)h(estimated)f(e)n(v)n(aluation)g (because)0 3288 y(it)k(guarantees)g(that)g(a)h(guessed)e(score)i(will)e (not)h(disrupt)f(the)h(search)h(tree.)31 b(If)23 b(the)g(old)g(search)h (result)f(\()p Fk(\024)h Fu(6\))f(w)o(as)0 3487 y(suf)n(\002cient)g(to) h(cause)h(the)e(tree)i(to)f(be)g(pruned)g(in)f(the)h(earlier)h(search,) f(the)g(guessed)g(v)n(alue)f(\()p Fk(\024)29 b Fl(4)p Fu(\))24 b(will)f(lik)o(ely)g(be)0 3686 y(suf)n(\002cient)h(to)h(prune) f(the)h(tree)g(in)g(the)f(current)h(search.)0 4026 y Fo(B)143 b(The)35 b(Sla)l(v)o(e')-5 b(s)34 b(W)m(indo)o(w)h(Selection)f (Algorithm)0 4328 y Fu(The)29 b(windo)n(w)f(selection)g(algorithm)g(is) g(application-dependent,)h(and)g(can)g(be)g(modi\002ed)g(by)g(editing)f (a)h(call-)0 4527 y(back)f(function)f(pro)o(vided)g(to)g(the)h (application)f(programmer)-5 b(.)38 b(Based)29 b(on)e(numerous)g (tests,)h(a)g(general)g(set)g(of)0 4727 y(rules)d(w)o(as)f(created)i (for)f(determining)e(small,)h(useful)g Fq(\013)q(\014)31 b Fu(search)25 b(windo)n(ws)e(in)i(APHID.)146 4926 y(The)39 b(\002rst)f(recommendation)f(is)h(that)g(the)g(sla)n(v)o(e')-5 b(s)38 b(search)g(windo)n(w)f(should)h(be)g(centered)h(around)f(the)0 5125 y(hypothetical)29 b(minimax)g(v)n(alue)i(\(as)g(de\002ned)g(in)g (Section)f(3.1\),)i(since)f(this)f(is)h(the)f(most)g(lik)o(ely)g(v)n (alue)g(of)h(the)1900 5589 y(33)p eop %%Page: 34 37 34 36 bop 0 100 a Fu(search.)279 63 y Fn(8)355 100 y Fu(The)26 b(second)h(recommendation)e(is)h(that)g(to)g(increase)h(the)g (windo)n(w)e(based)h(on)g(ho)n(w)g(\223unstable\224)g(the)0 299 y(principal)35 b(v)n(ariation)f(may)g(be.)63 b(F)o(or)35 b(e)o(xample,)i(if)e(the)g(master)g(says)g(that)g(the)g(highest)f (remaining)g(priority)0 498 y(w)o(ork)i(to)g(be)h(searched)f(is)g(the)g (same)h(as)f(the)g(piece)h(of)f(w)o(ork)g(that)g(is)g(currently)g (being)g(e)o(xamined,)i(then)e(a)0 697 y(small)29 b(search)h(windo)n(w) e(should)g(be)i(chosen)f(because)h(the)f(search)h(is)f(relati)n(v)o (ely)f(con\002dent)i(of)f(the)h(principal)0 897 y(v)n(ariation.)i(Ho)n (we)n(v)o(er)l(,)25 b(as)g(the)h(dif)n(ference)g(between)g(the)f(lar)n (gest)h(priority)e(that)h(the)h(master)f(needs)h(completed)0 1096 y(and)31 b(the)f(priority)f(of)i(the)f(sla)n(v)o(e')-5 b(s)30 b(piece)h(of)f(w)o(ork)h(gets)f(lar)n(ger)l(,)i(the)f(search)g (windo)n(w)e(needs)h(to)h(be)f(lar)n(ger)h(to)0 1295 y(re\003ect)d(the)f(uncertainty)f(in)h(the)g(principal)f(v)n(ariation.) 36 b(These)27 b(lar)n(ger)h(search)g(windo)n(ws)d(are)j(also)e(used)h (when)0 1494 y(starting)e(speculati)n(v)o(e)f(searches)i(for)h(future)e (iterations,)g(since)h(there)g(is)g(no)f(information)g(on)g(the)h(v)n (alue)f(of)h(the)0 1694 y(principal)e(v)n(ariation)g(at)g(the)h(ne)o (xt)f(ply)-6 b(.)146 1893 y(These)23 b(recommendations)e(were)i(used)f (in)g(the)g(windo)n(w)f(selection)g(algorithm)g(for)i(each)g(of)f(the)h (programs)0 2092 y(tested)h(in)g(Section)h(4.)30 b(The)25 b(scale)g(and)f(v)n(ariance)h(of)f(the)h(e)n(v)n(aluation)d(function)i (in)g(each)h(program)g(w)o(as)f(used)g(to)0 2291 y(determine)g(the)h (constants)f(used)g(to)h(increase)g(or)g(set)f(the)h(initial)e(size)i (of)g(the)g(sla)n(v)o(e')-5 b(s)23 b(windo)n(w)-6 b(.)p 0 5149 1560 4 v 112 5210 a Fj(8)149 5240 y Fi(When)23 b(the)g(hypothetical)d(minimax)h(v)n(alue)h(is)i(INV)-11 b(ALID,)21 b(then)h(this)i(must)e(be)h(a)g(PV)g(node,)f(and)g(an)h (in\002nite)f(search)h(windo)n(w)0 5340 y(should)c(be)h(chosen.)1900 5589 y Fu(34)p eop %%Page: 35 38 35 37 bop 195 608 a 27707274 30785863 11446026 16445440 28746629 35587932 startTexFig 195 608 a %%BeginDocument: pics/guessed-score.ps %Magnification: 0.50 /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save 143.5 569.5 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit n 0 792 m 0 0 l 612 0 l 612 792 l cp clip 0.03000 0.03000 sc 7.500 slw % Polyline n 1050 975 m 9775 975 l 9775 10600 l 1050 10600 l cp gs col-1 s gr /Courier ff 180.00 scf sf 1200 2000 m gs 1 -1 sc (int SlaveScoreUppBound\(position p, int d\);) col-1 sh gr /Courier ff 180.00 scf sf 1200 2800 m gs 1 -1 sc (int RootMinimax\(int d\);) col-1 sh gr /Courier ff 180.00 scf sf 1200 4000 m gs 1 -1 sc (first node visited during a pass by a master.\) */) col-1 sh gr /Courier ff 180.00 scf sf 1200 4400 m gs 1 -1 sc (int GuessedScore\(int alpha, int beta, position p, int d, int dprime\)) col-1 sh gr /Courier ff 180.00 scf sf 1200 4600 m gs 1 -1 sc ({) col-1 sh gr /Courier ff 180.00 scf sf 1600 5200 m gs 1 -1 sc (int hmm; /* working hypothetical minimax value for current depth */) col-1 sh gr /Courier ff 180.00 scf sf 1600 5800 m gs 1 -1 sc ({) col-1 sh gr /Courier ff 180.00 scf sf 2000 6000 m gs 1 -1 sc (hmm = HypotheticalMinimax\(\);) col-1 sh gr /Courier ff 180.00 scf sf 2000 6200 m gs 1 -1 sc (if \(hmm == INVALID\) { hmm = RootMinimax\(depth\); }) col-1 sh gr /Courier ff 180.00 scf sf 2000 6600 m gs 1 -1 sc (/* Scale lower and upper bounds if they are not INFINITE to change) col-1 sh gr /Courier ff 180.00 scf sf 2000 6800 m gs 1 -1 sc (bias of search result from previous search depth to current depth. */) col-1 sh gr /Courier ff 180.00 scf sf 2000 7000 m gs 1 -1 sc (lb = -INFINITY; ub = INFINITY;) col-1 sh gr /Courier ff 180.00 scf sf 2000 7200 m gs 1 -1 sc (if \(SlaveScoreLowBound\(p,depth-dprime\) != -INFINITY\)) col-1 sh gr /Courier ff 180.00 scf sf 2400 7400 m gs 1 -1 sc (lb = SlaveScoreLowBound\(p,depth-dprime\) + hmm - RootMinimax\(depth\);) col-1 sh gr /Courier ff 180.00 scf sf 2000 7600 m gs 1 -1 sc (if \(SlaveScoreUppBound\(p,depth-dprime\) != INFINITY\)) col-1 sh gr /Courier ff 180.00 scf sf 2400 7800 m gs 1 -1 sc (ub = SlaveScoreUppBound\(p,depth-dprime\) + hmm - RootMinimax\(depth\);) col-1 sh gr /Courier ff 180.00 scf sf 2000 8200 m gs 1 -1 sc (/* Check each bound to see if scaled bounds satisfy constraints. */) col-1 sh gr /Courier ff 180.00 scf sf 2000 8400 m gs 1 -1 sc (if \(ub <= alpha\) { return alpha; }) col-1 sh gr /Courier ff 180.00 scf sf 2000 8600 m gs 1 -1 sc (if \(lb >= beta\) { return beta; }) col-1 sh gr /Courier ff 180.00 scf sf 2000 9200 m gs 1 -1 sc (if \(lb == ub\) { return ub; }) col-1 sh gr /Courier ff 180.00 scf sf 2000 9000 m gs 1 -1 sc (/* An exact scaled value is always satisfactory for constraints. */) col-1 sh gr /Courier ff 180.00 scf sf 2000 9600 m gs 1 -1 sc (/* NOTE: Loop will always exit at or before depth = dprime, since) col-1 sh gr /Courier ff 180.00 scf sf 2000 9800 m gs 1 -1 sc (master stored SlaveScoreLowBound\(p,0\) = SlaveScoreUppBound\(p,0\) = ) col-1 sh gr /Courier ff 180.00 scf sf 2000 10000 m gs 1 -1 sc (static evaluation, yielding equal scaled upper/lower bounds. */) col-1 sh gr /Courier ff 180.00 scf sf 1600 5600 m gs 1 -1 sc (for \(depth = d-1; depth >= dprime; depth = depth - 1\)) col-1 sh gr /Courier ff 180.00 scf sf 1600 10200 m gs 1 -1 sc (}) col-1 sh gr /Courier ff 180.00 scf sf 1200 10400 m gs 1 -1 sc (}) col-1 sh gr /Courier ff 180.00 scf sf 1600 5000 m gs 1 -1 sc (int ub,lb; /* scaled upper/lower bounds \(if not infinite\) */) col-1 sh gr /Courier ff 180.00 scf sf 1600 4800 m gs 1 -1 sc (int depth; /* depth of search where estimate will be derived */) col-1 sh gr /Courier ff 180.00 scf sf 1200 3800 m gs 1 -1 sc (current pass, returns INVALID if no PV has been explored \(only happens when) col-1 sh gr /Courier ff 180.00 scf sf 1200 3600 m gs 1 -1 sc (/* HypotheticalMinimax returns highest accurate value along current PV in) col-1 sh gr /Courier ff 180.00 scf sf 1200 3400 m gs 1 -1 sc (int HypotheticalMinimax\(\);) col-1 sh gr /Courier ff 180.00 scf sf 1200 3000 m gs 1 -1 sc (/* RootMinimax returns minimax value from previous search at depth d */) col-1 sh gr /Courier ff 180.00 scf sf 1200 2400 m gs 1 -1 sc (position p at depth d if result was <= beta\(p,d\); INFINITY, otherwise. */) col-1 sh gr /Courier ff 180.00 scf sf 1200 2200 m gs 1 -1 sc (/* SlaveScoreUppBound returns value from slave's alphabeta search for) col-1 sh gr /Courier ff 180.00 scf sf 1200 1600 m gs 1 -1 sc (position p at depth d if result was >= alpha\(p,d\); -INFINITY, otherwise. */) col-1 sh gr /Courier ff 180.00 scf sf 1200 1400 m gs 1 -1 sc (/* SlaveScoreLowBound returns value from slave's alphabeta search for) col-1 sh gr /Courier ff 180.00 scf sf 1200 1200 m gs 1 -1 sc (int SlaveScoreLowBound\(position p, int d\);) col-1 sh gr showpage $F2psEnd rs %%EndDocument endTexFig 1015 4711 a Fu(Figure)25 b(10:)30 b(Code)c(F)o(or)e(Guessed)h(Score)h (Algorithm)1900 5589 y(35)p eop %%Page: 36 39 36 38 bop 146 100 a Ft(Mark)37 b(Br)n(ockington)h Fu(recei)n(v)o(ed)d (a)i(B.Math.)64 b(de)o(gree)36 b(in)g(Pure)h(Math)e(with)h(Computer)f (Science)i(from)0 299 y(the)c(Uni)n(v)o(ersity)e(of)j(W)-8 b(aterloo,)35 b(in)e(1992,)i(and)e(recei)n(v)o(ed)g(a)h(Ph.D.)g(in)f (Computing)f(Science)i(from)f(the)g(Uni-)0 498 y(v)o(ersity)i(of)g (Alberta)h(in)g(1997.)63 b(His)35 b(research)i(interests)e(include)g (arti\002cial)h(intelligence,)h(distrib)n(uted)d(and)0 697 y(parallel)26 b(processing,)h(cryptography)e(and)i(data)f(security) -6 b(.)35 b(Mark)27 b(is)f(currently)g(w)o(orking)g(at)h(BioW)-8 b(are)27 b(Corp.,)0 897 y(an)e(interacti)n(v)o(e)e(entertainment)h (\002rm)h(in)g(Edmonton,)d(Alberta,)j(Canada.)146 1096 y Ft(J)o(onathan)35 b(Schaeffer)i Fu(recei)n(v)o(ed)d(a)h(B.Sc.)62 b(de)o(gree)35 b(in)f(Computing)g(Science)h(from)g(the)g(Uni)n(v)o (ersity)d(of)0 1295 y(T)-8 b(oronto,)26 b(in)g(1978,)g(and)g(recei)n(v) o(ed)g(an)h(M.Math.)34 b(and)26 b(a)h(Ph.D.)g(in)f(Computer)g(Science)h (from)f(the)g(Uni)n(v)o(ersity)0 1494 y(of)34 b(W)-8 b(aterloo)34 b(in)f(1980)h(and)g(1986,)h(respecti)n(v)o(ely)-6 b(.)56 b(He)35 b(is)e(the)h(principal)f(author)h(of)i(C)t Fa(H)t(I)t(N)t(O)t(O)t(K)r Fu(,)k(the)34 b(Man-)0 1694 y(Machine)22 b(W)-8 b(orld)23 b(Champion)f(check)o(ers)h(program.)30 b(He)23 b(is)f(currently)g(a)h(Professor)g(of)g(Computing)e(Science)j (at)0 1893 y(the)i(Uni)n(v)o(ersity)e(of)i(Alberta.)35 b(His)25 b(current)i(research)g(interests)e(include)h(heuristic)f (search,)i(parallel)f(process-)0 2092 y(ing,)e(and)h(computer)f(games.) 1900 5589 y(36)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF