diff options
Diffstat (limited to 'parallel/jpdc.ps')
| -rwxr-xr-x | parallel/jpdc.ps | 12898 |
1 files changed, 12898 insertions, 0 deletions
diff --git a/parallel/jpdc.ps b/parallel/jpdc.ps new file mode 100755 index 0000000..87d8934 --- /dev/null +++ b/parallel/jpdc.ps @@ -0,0 +1,12898 @@ +%!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 +D<C00000E000007000003800001C00000E00000F000007800003C00003C00001E00000F0 +0000F000007800007C00003C00003E00001E00001F00001F00000F80000F80000F800007 +C00007C00007C00003E00003E00003E00003F00003F00001F00001F00001F80001F80001 +F80001F80000F80000F80000F80000FC0000FC0000FC0000FC0000FC0000FC0000FC0000 +FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000 +FC0000F80000F80000F80001F80001F80001F80001F80001F00001F00003F00003F00003 +E00003E00003E00007C00007C00007C0000F80000F80000F80001F00001F00001E00003E +00003C00007C0000780000F00000F00001E00003C00003C0000780000F00000E00001C00 +00380000700000E00000C0000016647BCA26>I<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>I<FFFFF001FFFCFFFFF001FFFCFFFFF001FFFC07FF0000 +7FE003FE00001F8001FE00001F0001FE00000E0000FE00000E0000FE00000C00007F0000 +1800007F00001800007F80001800003F80003000003F80003000003FC0007000001FC000 +6000001FE0006000000FE000C000000FE000C000000FF001C0000007F00180000007F001 +80000003F80300000003F80300000003FC0700000001FC0600000001FC0600000000FE0C +00000000FE0C00000000FF0C000000007F18000000007F18000000007FB8000000003FB0 +000000003FF0000000001FE0000000001FE0000000001FE0000000000FC0000000000FC0 +00000000078000000000078000000000078000000000030000002E2C7EAA33>I<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>I<FFFF80FFFF80FFFF800003 +800003800003800003800003800003800003800003800003800003800003800003800003 +800003800003800003800003800003800003800003800003800003800003800003800003 +800003800003800003800003800003800003800003800003800003800003800003800003 +800003800003800003800003800003800003800003800003800003800003800003800003 +800003800003800003800003800003800003800003800003800003800003800003800003 +8000038000038000018011437FB11F>I 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 |
