%!PS-Adobe-2.0 %%Creator: dvips 5.55 Copyright 1986, 1994 Radical Eye Software %%Title: aphidacc.dvi %%CreationDate: Thu Jun 13 23:50:30 1996 %%Pages: 20 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips aphidacc %DVIPSParameters: dpi=300, comments removed %DVIPSSource: TeX output 1996.06.13:2350 %%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 showpage userdict /eop-hook known{eop-hook}if}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 %%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 false 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 300 300 (/usr/maligne2/grad/brock/Writing/aphid/aphidacc.dvi) @start /Fa 6 112 df<00FC100383300E00B01C0070380030300030700010600010E000 10E00000E00000E00000E00000E00000E000106000107000103000203800201C00400E00 8003830000FC0014177E961A>67 D 104 DI107 D 110 D<03F0000C0C00180600300300600180400080C000C0C000C0C000C0C000C0C000C0 6001806001803003001806000C0C0003F00012117F9015>I E /Fb 1 111 df<30F8590C4E0C9C0C980C180C180C30183019303130316032601C100D7F8C15> 110 D E /Fc 49 122 df<000FF000007FFC0001F80E0003E01F0007C03F000F803F000F 803F000F801E000F800C000F8000000F8000000F8000000F800000FFFFFF00FFFFFF000F 801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F 801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F007F F0FFE07FF0FFE01B237FA21F>12 D<3803807C07C0FE0FE0FF0FF0FF0FF07F07F03B03B0 0300300300300700700600600600600C00C01C01C018018070070020020014117EA21D> 34 D<387CFEFEFE7C3807077C8610>46 D<00180000780001F800FFF800FFF80001F800 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 7FFFE07FFFE013207C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE 03F8FE01F87C01F83803F80003F80003F00003F00007E00007C0000F80001F00003E0000 380000700000E01801C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FF FFF015207D9F1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F8 1F03F00003F00003E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC 3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E 9F1C>I<0000E00001E00003E00003E00007E0000FE0001FE0001FE00037E00077E000E7 E001C7E00187E00307E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFEFFFF FE0007E00007E00007E00007E00007E00007E00007E000FFFE00FFFE17207E9F1C>I<10 00201E01E01FFFC01FFF801FFF001FFE001FF8001BC00018000018000018000018000019 FC001FFF001E0FC01807E01803E00003F00003F00003F80003F83803F87C03F8FE03F8FE 03F8FC03F0FC03F07007E03007C01C1F800FFF0003F80015207D9F1C>I<001F8000FFE0 03F07007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFFE0 FD80F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C 3E007C1E00F80F00F00783E003FFC000FF0017207E9F1C>I<6000007800007FFFFE7FFF FE7FFFFC7FFFF87FFFF87FFFF0E00060E000C0C00180C00300C00300000600000C00001C 0000180000380000780000780000F00000F00000F00001F00001F00001F00003F00003F0 0003F00003F00003F00003F00003F00001E00017227DA11C>I<00FE0003FFC00703E00E 00F01C00F01C00783C00783E00783F00783F80783FE0F01FF9E01FFFC00FFF8007FFC003 FFE007FFF01E7FF83C1FFC7807FC7801FEF000FEF0003EF0001EF0001EF0001CF8001C78 00383C00381F01F00FFFC001FF0017207E9F1C>I<000070000000007000000000F80000 0000F800000000F800000001FC00000001FC00000003FE00000003FE00000003FE000000 06FF000000067F0000000E7F8000000C3F8000000C3F800000183FC00000181FC0000038 1FE00000300FE00000300FE00000600FF000006007F00000E007F80000FFFFF80000FFFF F800018001FC00018001FC00038001FE00030000FE00030000FE000600007F000600007F 00FFE00FFFF8FFE00FFFF825227EA12A>65 DI<0003FE0080001FFF818000FF01E38001F8003F80 03E0001F8007C0000F800F800007801F800007803F000003803F000003807F000001807E 000001807E00000180FE00000000FE00000000FE00000000FE00000000FE00000000FE00 000000FE00000000FE000000007E000000007E000001807F000001803F000001803F0000 03801F800003000F8000030007C000060003F0000C0001F800380000FF00F000001FFFC0 000003FE000021227DA128>II70 D72 DI76 DI<0007FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E001F80 003F001F80003F003F00001F803F00001F807F00001FC07E00000FC07E00000FC0FE0000 0FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000F E0FE00000FE07E00000FC07F00001FC07F00001FC03F00001F803F80003F801F80003F00 0FC0007E0007E000FC0003F001F80000FC07E000003FFF80000007FC000023227DA12A> 79 DI<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC000CFC0000FF 0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F00003F00 003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA1 1F>83 D<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E003 F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F8 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800 000003F800000003F800000003F800000003F800000003F800000003F800000003F80000 0003F800000003F800000003F800000003F8000003FFFFF80003FFFFF80022227EA127> IIII<0400400E00E0180180380380 300300600600600600E00E00C00C00C00C00DC0DC0FE0FE0FF0FF0FF0FF07F07F03E03E0 1C01C014117AA21D>92 D<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F000 01F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81F F87F07E03F18167E951B>97 DI<00FF8007FFE00F83F01F03F03E03F07E03F07C01 E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00007E00003E00301F00 600FC0E007FF8000FE0014167E9519>I<0001FE000001FE0000003E0000003E0000003E 0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0001FC3E 0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E 00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE 000F83BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C 00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E 00181F00300FC07003FFC000FF0015167E951A>I<003F8000FFC001E3E003C7E007C7E0 0F87E00F83C00F80000F80000F80000F80000F80000F8000FFFC00FFFC000F80000F8000 0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000 0F80000F80000F80000F80007FF8007FF80013237FA211>I<03FC1E0FFF7F1F0F8F3E07 CF3C03C07C03E07C03E07C03E07C03E07C03E03C03C03E07C01F0F801FFF0013FC003000 003000003800003FFF801FFFF00FFFF81FFFFC3800FC70003EF0001EF0001EF0001EF000 1E78003C7C007C3F01F80FFFE001FF0018217E951C>II<1C003E007F007F007F00 3E001C000000000000000000000000000000FF00FF001F001F001F001F001F001F001F00 1F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I108 DII<00FE0007FFC00F83E01E00F03E00 F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C00 7C3E00F81F01F00F83E007FFC000FE0017167E951C>II114 D<0FF3003FFF00781F00600700E00300E00300F0 0300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E00380E00380F0 0700FC0E00EFFC00C7F00011167E9516>I<018000018000018000018000038000038000 0780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F8000 0F80000F80000F80000F80000F80000F81800F81800F81800F81800F81800F830007C300 03FE0000F80011207F9F16>II< FFE01FE0FFE01FE00F8006000F8006000FC00E0007C00C0007E01C0003E0180003E01800 01F0300001F0300000F8600000F86000007CC000007CC000007FC000003F8000003F8000 001F0000001F0000000E0000000E00001B167F951E>II121 D E /Fd 1 49 df<040E0E1C1C1C38383070706060C0C0070F7F8F0A>48 D E /Fe 59 123 df<0387000387000387000387000387000387007FFFC0FFFFE0FFFFE007 0E00070E00070E000E1C000E1C000E1C000E1C00FFFFE0FFFFE07FFFC01C38001C38001C 38001C38001C38001C380013197F9816>35 D<03800007E0000FE0001E70001C70001C70 001C70001C77E01CE7E01DE7E00FC7000F8E000F0E001E0E003F1C007F1C00739C00E3F8 00E1F800E0F1C0E0F1C071F9C07FFFC03F9F801E070013197F9816>38 D<00E001E0038007000E001C001C0038003800700070007000E000E000E000E000E000E0 00E000E000E000700070007000380038001C001C000E000700038001E000E00B217A9C16 >40 DI<01C00001C00001C00001C00071C700F9CF807FFF001FFC0007F00007F0001FFC 007FFF00F9CF8071C70001C00001C00001C00001C00011127E9516>I<01C00001C00001 C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8001C00001C00001C00001 C00001C00001C00001C00001C00011137E9516>I<387C7E7E3E0E1E1C78F060070B7984 16>I<70F8F8F8700505788416>46 D<01800380038007800F807F80FF80738003800380 0380038003800380038003800380038003800380038003807FF87FFC7FF80E197C9816> 49 D<07E0001FF8003FFC00783E00E00700F00780F00380600380000380000380000700 000700000E00001C0000380000700000E00001C0000380000F00001E03803803807FFF80 FFFF807FFF8011197E9816>I<00E00001F00001F00001B00001B00003B80003B80003B8 00031800071C00071C00071C00071C00071C000E0E000E0E000FFE000FFE001FFF001C07 001C07001C07007F1FC0FF1FE07F1FC013197F9816>65 D<7FF800FFFE007FFF001C0F00 1C07801C03801C03801C03801C07801C07001FFF001FFE001FFE001C1F001C03801C03C0 1C01C01C01C01C01C01C01C01C03C01C07807FFF80FFFF007FFC0012197F9816>I<01F1 8007FB800FFF801F0F803C0780380380700380700380F00000E00000E00000E00000E000 00E00000E00000E00000F000007003807003803803803C07001F0F000FFE0007FC0001F0 0011197E9816>I<7FF800FFFE007FFF001C0F001C07801C03C01C01C01C01C01C01E01C 00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C 0F807FFF00FFFE007FF8001319809816>I<7FFFC0FFFFC07FFFC01C01C01C01C01C01C0 1C01C01C00001C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00E0 1C00E01C00E01C00E01C00E07FFFE0FFFFE07FFFE013197F9816>II<03E30007FF000FFF001E1F003C0F00380700700700700700F00000E00000E00000E0 0000E00000E03F80E07FC0E03F80F00700700700700700380F003C0F001E1F000FFF0007 F70003E70012197E9816>I<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C0700 1C07001C07001FFF001FFF001FFF001C07001C07001C07001C07001C07001C07001C0700 1C07001C07007F1FC0FFBFE07F1FC013197F9816>II<7F0FE0FF8FF07F0FE01C07801C0F001C0E001C1C001C3C001C78001CF0 001CE0001DF0001FF0001FF8001F38001E1C001C1C001C0E001C0E001C07001C07001C03 807F07E0FF8FF07F07E01419809816>75 DII<7E1FC0FF3FE07F1FC01D07001D87001D87001D87001DC7001DC7001CC7001CC7001C E7001CE7001CE7001C67001C67001C77001C77001C37001C37001C37001C17007F1F00FF 9F007F0F0013197F9816>I<1FFC003FFE007FFF00780F00F00780E00380E00380E00380 E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780 F00780780F007FFF003FFE001FFC0011197E9816>I<7FF800FFFE007FFF001C0F801C03 801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FF8001C00001C00 001C00001C00001C00001C00001C00007F0000FF80007F000012197F9816>I<7FE000FF F8007FFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E001FFC001FF8001F FC001C1C001C0E001C0E001C0E001C0E001C0E201C0E701C0E707F07E0FF87E07F03C014 197F9816>82 D<07E3001FFF003FFF00781F00F00700E00700E00700E00000F000007800 003F80001FF00007FC0000FE00000F00000700000380000380600380E00380E00700F80F 00FFFE00FFFC00C7F00011197E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0 E0E000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00007FC000FFE0007FC0013197F9816>I<7F07F0FF8FF87F07F0 1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C0 1C01C01C01C01C01C01C01C00E03800E038007070007FF0003FE0000F8001519809816> II<7F1F807F3F807F1F800E1E000E1C00073C0007380003B80003 F00001F00001E00000E00001E00001F00003F00003B80007B800071C00071C000E0E000E 0E001C07007F1FC0FF1FE07F1FC013197F9816>88 DI<7FFF80FF FF80FFFF80E00700E00F00E01E00E01C00003C0000780000700000F00001E00001C00003 C0000780000700000F00001E03801C03803C0380780380700380FFFF80FFFF80FFFF8011 197E9816>II93 D<1FE0003FF0007FF800783C00300E00000E00000E0003FE001FFE003E0E0070 0E00E00E00E00E00E00E00783E007FFFE03FE7E00F83E013127E9116>97 D<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF000FFF800F83C00F00 E00E00E00E00700E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF 00063C001419809816>I<03F80FFC1FFE3C1E780C7000E000E000E000E000E000F00070 0778073E0E1FFC0FF803F010127D9116>I<003F00007F00003F00000700000700000700 00070003C7000FF7001FFF003C1F00780F00700700E00700E00700E00700E00700E00700 E00700700F00700F003C1F001FFFE00FE7F007C7E014197F9816>I<03E00FF81FFC3C1E 780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03F010127D9116>I<00 1F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF0001C00001C00001 C00001C00001C00001C00001C00001C00001C00001C00001C00001C0003FFE007FFF003F FE0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E00380E00380E00380E00380E00 1C1C000FF8001FF0001BE0003800001800001FFC001FFF003FFF807803C0E000E0E000E0 E000E0E000E07001C07C07C03FFF800FFE0003F800131C7F9116>I<7E0000FE00007E00 000E00000E00000E00000E00000E3C000EFE000FFF000F87800F03800E03800E03800E03 800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816 >I<018003C003C0018000000000000000007FC07FC07FC001C001C001C001C001C001C0 01C001C001C001C001C001C07FFFFFFF7FFF101A7D9916>I<7E0000FE00007E00000E00 000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E78000EF0000FF0 000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCFF07F87F01419809816>107 DII< 7E3C00FEFE007FFF000F87800F03800E03800E03800E03800E03800E03800E03800E0380 0E03800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E0000FF8001FFC003C1E 00780F00700700E00380E00380E00380E00380E00380F00780700700780F003C1E001FFC 000FF80003E00011127E9116>I<7E3E00FEFF007FFF800F83C00F00E00E00E00E00700E 00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF000E3C000E00000E 00000E00000E00000E00000E00007FC000FFE0007FC000141B809116>I114 D<0FEC3FFC7FFCF03CE01CE01C70007F 801FF007F8003C600EE00EF00EF81EFFFCFFF8C7E00F127D9116>I<0300000700000700 000700000700007FFF00FFFF00FFFF000700000700000700000700000700000700000700 0007010007038007038007038007870003FE0001FC0000F80011177F9616>I<7E1F80FE 3F807E1F800E03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E 03800E0F800FFFF007FBF803E3F01512809116>I<7F1FC0FF1FE07F1FC01C07001E0F00 0E0E000E0E000E0E00071C00071C00071C00071C0003B80003B80003B80001F00001F000 00E00013127F9116>II<7F 1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E00001E00001F00003B80007 3C00071C000E0E007F1FC0FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1FC01C0700 0E07000E0E000E0E00070E00071C00071C00039C00039C0003980001B80001B80000F000 00F00000F00000E00000E00000E00001C00079C0007BC0007F80003F00003C0000131B7F 9116>I<3FFFC07FFFC07FFFC0700780700F00701E00003C0000780001F00003E0000780 000F00001E01C03C01C07801C0FFFFC0FFFFC0FFFFC012127F9116>I E /Ff 2 13 df<0007E00000003838000000E00C004001C00E0040038007008007000780 800F000780801E000381003E0003C1003C0003C2007C0003C2007C0003C400F80003C400 F80003C800F80003D000F80003D000F80003E000F00003C000F00003C000F00003C00078 0003C00078000FC000380011C1001C0061C2000E0380E60001FC003800221A7E9926>11 D<000003F80000000C0C0000003006000000400700000080038000010003800002000380 000400038000040007800008000780000800078000100007000010000F000020000E0000 20001C00002000380000403FF000004040E00000403F300000400038000080001C000080 001E000080001E000080001E000100001F000100001F000100001F000100001F00020000 3E000200003E000200003E000200003C000600007C000600007800060000F800060000F0 00090001E000090003C000088007800008400E000010303C0000100FE000001000000000 100000000020000000002000000000200000000020000000004000000000400000000040 0000000040000000008000000000800000000021367FA922>I E /Fg 37 122 df<00FCF807839C0E079C1C07081C07001C07001C07001C07001C0700FFFF E01C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07 00FF1FE01617809615>11 D<60C0F1E0F1E070E01020102020402040408040800B0A7F96 12>34 D<0102040C1818303070606060E0E0E0E0E0E0E0E0E0E060606070303018180C04 020108227D980E>40 D<8040203018180C0C0E060606070707070707070707070606060E 0C0C18183020408008227E980E>I<60F0F070101020204040040A7D830A>44 DI<60F0F06004047D830A>I<001000003800003800003800005C 00005C00005C00008E00008E00008E0001070001070003078002038002038007FFC00401 C00401C00800E00800E01800E03800F0FE03FE17177F961A>65 D73 D77 D<0FC4302C601C400CC004C004C004E00070007F003FE00FF801FC001C000E0006800680 068006C004E008D81087E00F177E9614>83 D<7FFFF86038184038084038088038048038 048038040038000038000038000038000038000038000038000038000038000038000038 0000380000380000380000380007FFC016177F9619>I<204020404080408081008100E1 C0F1E0F1E060C00B0A7B9612>92 D<1FC0386038301038003803F81E3830387038E039E0 39E07970FF1F1E100E7F8D12>97 DI<07F01838303870106000E000E000E000E0 00600070083008183007C00D0E7F8D10>I<007E00000E00000E00000E00000E00000E00 000E00000E00000E0007CE001C3E00300E00700E00600E00E00E00E00E00E00E00E00E00 600E00700E00301E00182E0007CFC012177F9614>I<0FC0186030307038E018FFF8E000 E000E000600070083010183007C00D0E7F8D10>I<03E006700E701C201C001C001C001C 001C00FF801C001C001C001C001C001C001C001C001C001C001C001C00FF800C1780960B >I<0F9E18E33060707070707070306018C02F80200060003FE03FF83FFC600EC006C006 C006600C38380FE010157F8D12>II<183C3C1800000000007C1C1C1C1C1C1C1C 1C1C1C1C1CFF081780960A>I107 DI< FC7C1F001D8E63801E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0 1C0701C01C0701C01C0701C01C0701C0FF9FE7F81D0E808D1E>II<07C018303018600C600CE00EE00EE00EE00EE00E701C3018183007C00F0E7F8D 12>II<07C2 001C2600381E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E001C2E 0007CE00000E00000E00000E00000E00000E00007FC012147F8D13>II<1F4060C0C040C040 E000FF007F801FC001E080608060C060E0C09F000B0E7F8D0E>I<080008000800180018 003800FF80380038003800380038003800380038403840384038401C800F000A147F930E >IIIII I E /Fh 4 53 df<0C003C00CC000C000C000C000C000C000C000C000C000C000C000C00 0C00FF8009107E8F0F>49 D<1F00618040C08060C0600060006000C00180030006000C00 102020207FC0FFC00B107F8F0F>I<1F00218060C060C000C0008001800F000080004000 60C060C060804060801F000B107F8F0F>I<0300030007000F000B001300330023004300 C300FFE003000300030003001FE00B107F8F0F>I E /Fi 4 53 df<0C001C00EC000C00 0C000C000C000C000C000C000C000C000C000C000C000C000C000C00FFC00A137D9211> 49 D<1F0060C06060F070F030603000700070006000C001C00180020004000810101020 207FE0FFE00C137E9211>I<0FC030707038703870380038003000E00FC0007000380018 001C601CF01CF018E03860701FC00E137F9211>I<006000E000E00160026006600C6008 60106020606060C060FFFC0060006000600060006003FC0E137F9211>I E /Fj 19 123 df<000FE0200070186001C00460030003E0060001E00E0000E01C000060 38000060380000207800002070000020F0000000F0000000F0000000F0000000F0000000 F0000000F0000000F0000000700000207800002038000020380000201C0000400E000040 060000800300010001C0060000701800000FE0001B1E7D9C21>67 D75 D80 D<7FFFFFC0700F01C0600F00 C0400F0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F00 00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00 00000F0000000F0000000F0000000F0000000F0000001F800003FFFC001B1C7D9B21>84 D<7FFFFC7C00787000786000F06001E04001E04003C0400780400780000F00001E00001E 00003C0000780000780000F00001E00001E00403C0040780040780040F000C1E00081E00 083C00187800387800F8FFFFF8161C7D9B1C>90 D<00200000700000700000700000B800 00B80000B800011C00011C00011C00020E00020E0004070004070007FF00080380080380 0803801801C03803C0FE0FF815157F9419>97 D101 D<00FC200782600E01E01C00E038006078 0020700020F00020F00000F00000F00000F00FF8F000E0F000E07000E07800E03800E01C 00E00E00E007836000FC2015157E941B>103 DII107 D110 D<01F800070E000C03001C03803801C07801E07000E0F000F0F000F0F000F0F000F0F000 F0F000F0F000F07000E07801E03801C01C03801E0780070E0001F80014157E941A>I114 D117 D119 DIII E /Fk 3 16 df0 D<01800180018001804182F18F39 9C0FF003C003C00FF0399CF18F4182018001800180018010127E9215>3 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C010107E 9115>15 D E /Fl 60 123 df<0001FC3C00060E67000C0EC7001C0DC6001C01C0003801 C0003803800038038000380380003803800070038007FFFFF80070070000700700007007 0000E0070000E00E0000E00E0000E00E0000E00E0001C00E0001C01C0001C01C0001C01C 0001C01C0003801C00038038000380380003803800030038000700300007007000060060 00C6606000E470C000C8618000703E00002025819C19>11 D<0001FC000703000C03001C 07001C0300180000380000380000380000380000700007FFFC00701C00701C00701C00E0 3800E03800E03800E03800E07001C07001C07001C07001C0E201C0E201C0E20380E40380 64038038038000030000070000060000C60000E40000CC00007000001825819C17>I18 D<03070E1C3860C0800808729C15>I<183C3C3C0404 080810204080060C779C0D>39 D<00030006000800180030006000C000C0018003000300 060006000C000C001C0018001800380030003000700070006000600060006000E000E000 E000E000E0006000600060006000600020003000100008000800102A7B9E11>I<001000 100008000C00040006000600060006000600070007000700070007000600060006000600 0E000E000C000C001C001800180038003000300060006000C000C001800300030006000C 00180010006000C000102A809E11>I<183878380808101020404080050C7D830D>44 DI<3078F06005047C830D>I<003C0000C600018300030300 0603000603800E03800C03801C03801C0300380700380700380700380700700E00700E00 700E00700E00E01C00E01C00E01C00E03800E03800E03000C06000E0600060C000718000 1E0000111D7B9B15>48 D<00020006000C001C007C039C00380038003800380070007000 70007000E000E000E000E001C001C001C001C003800380038003800780FFF00F1C7C9B15 >I<003E0000C1800101800200C00400C00440C00841C00841C00841C008838007038000 0700000E0001F800003800000C00000C00000E00000E00000E00000E00700E00E01C0080 1C0080380080300040600021C0001F0000121D7C9B15>51 D<001E000061000081800180 800300C00300C006018006018006018007030007860003CC0003F00001F000037800063C 00081E00180E00300E00600600600600600600C00C00C00C00C0180060100060200030C0 000F0000121D7C9B15>56 D<003C0000C6000183000303000603000E03000C03801C0380 1C03001C0300380700380700380700380F00380E00181E00181E000C6C00079C00001C00 001800003800003000006000E0C000E0C0008180008600007C0000111D7B9B15>I<060F 0F06000000000000000000003078F06008127C910D>I<00001800000018000000380000 00380000007800000078000000B8000001B800000138000002380000023C0000041C0000 041C0000081C0000181C0000101C0000201C0000201C00007FFC0000401C0000801C0001 801C0001001C0002001C0002001C0004000E000C000E001C001E00FF00FFC01A1D7E9C1F >65 D<01FFFE00003C0780003803C0003801C0003801C0003801C0007001C0007003C000 7003C00070078000E0070000E00E0000E03C0000FFF80001C01C0001C00E0001C00F0001 C00F0003800F0003800F0003800F0003800F0007001E0007001C0007003C00070078000E 01E000FFFF80001A1C7D9B1D>I<0003F020001E0C60003002E000E003C001C001C00380 01C0070000C00E0000801E0000801C0000803C0000803C00000078000000780000007800 0000F0000000F0000000F0000000F0000000F0000400F0000400F0000400F00008007000 08007000100038002000180040000C0180000706000001F800001B1E7A9C1E>I<01FFFE 00003C0780003801C0003801C0003800E0003800E0007000F00070007000700070007000 F000E000F000E000F000E000F000E000F001C001E001C001E001C001E001C001C0038003 C003800380038007800380070007000E0007001C0007003800070070000E01C000FFFF00 001C1C7D9B1F>I<01FFFFE0003C00E00038006000380040003800400038004000700040 00700040007020400070200000E0400000E0400000E0C00000FFC00001C0800001C08000 01C0800001C0800003810100038001000380020003800200070004000700040007000C00 070018000E007800FFFFF0001B1C7D9B1C>I<01FFFFC0003C01C0003800C00038008000 380080003800800070008000700080007020800070200000E0400000E0400000E0C00000 FFC00001C0800001C0800001C0800001C080000381000003800000038000000380000007 0000000700000007000000070000000F000000FFF000001A1C7D9B1B>I<01FFCFFE003C 01E0003801C0003801C0003801C0003801C00070038000700380007003800070038000E0 070000E0070000E0070000FFFF0001C00E0001C00E0001C00E0001C00E0003801C000380 1C0003801C0003801C00070038000700380007003800070038000F007800FFE7FF001F1C 7D9B1F>72 D<01FFC0003C00003800003800003800003800007000007000007000007000 00E00000E00000E00000E00001C00001C00001C00001C000038000038000038000038000 0700000700000700000700000F0000FFE000121C7E9B10>I<007FF00007800007000007 00000700000700000E00000E00000E00000E00001C00001C00001C00001C000038000038 0000380000380000700000700000700000700060E000E0E000C0C00081C0008380004700 003C0000141D7B9B16>I<01FFE0003C0000380000380000380000380000700000700000 700000700000E00000E00000E00000E00001C00001C00001C00001C00003800803800803 80080380100700100700300700600700E00E03C0FFFFC0151C7D9B1A>76 D<01FE0007F8003E000780002E000F00002E001700002E001700002E002700004E002E00 004E004E00004E004E00004E008E00008E011C00008E011C00008E021C00008E021C0001 070438000107043800010708380001071038000207107000020720700002072070000207 407000040740E000040780E000040700E0000C0700E0001C0601E000FF861FFC00251C7D 9B25>I<01FC03FE001C0070003C0060002E0040002E0040002E00400047008000470080 00470080004380800083810000838100008181000081C1000101C2000101C2000100E200 0100E2000200E4000200740002007400020074000400380004003800040038000C001800 1C001000FF8010001F1C7D9B1F>I<0007F000001C1C0000700E0000E0070001C0038003 800380070003800E0003C01E0003C01C0003C03C0003C03C0003C0780003C0780003C078 0003C0F0000780F0000780F0000780F0000F00F0000F00F0000E00F0001E00F0003C0070 003800700070007800E0003801C0001C0380000E0E000003F800001A1E7A9C20>I<01FF FC00003C070000380380003801C0003801C0003801C0007003C0007003C0007003C00070 038000E0078000E0070000E00E0000E0380001FFE00001C0000001C0000001C000000380 0000038000000380000003800000070000000700000007000000070000000F000000FFE0 00001A1C7D9B1C>I<01FFF800003C0E0000380700003803800038038000380380007007 80007007800070078000700F0000E00E0000E01C0000E0700000FFC00001C0C00001C060 0001C0700001C07000038070000380700003807000038070000700F0000700F0400700F0 400700F0800F007880FFE0790000001E001A1D7D9B1E>82 D<000F8400304C00403C0080 1801001803001803001806001006001006000007000007000003E00003FC0001FF00007F 800007C00001C00001C00000C00000C02000C02000C0600180600180600300600200F004 00CC180083E000161E7D9C17>I<1FFFFFC01C0701C0300E00C0200E0080600E0080400E 0080401C0080801C0080801C0080001C0000003800000038000000380000003800000070 000000700000007000000070000000E0000000E0000000E0000000E0000001C0000001C0 000001C0000001C0000003C000007FFE00001A1C799B1E>I87 D89 D<03CC063C0C3C181C3838303870387038E070E070E070E0 70E0E2C0E2C0E261E462643C380F127B9115>97 D<3F00070007000E000E000E000E001C 001C001C001C0039C03E60383038307038703870387038E070E070E070E060E0E0C0C0C1 C0618063003C000D1D7B9C13>I<01F007080C08181C3838300070007000E000E000E000 E000E000E008E010602030C01F000E127B9113>I<001F80000380000380000700000700 000700000700000E00000E00000E00000E0003DC00063C000C3C00181C00383800303800 703800703800E07000E07000E07000E07000E0E200C0E200C0E20061E4006264003C3800 111D7B9C15>I<01E007100C1018083810701070607F80E000E000E000E000E000E00860 10602030C01F000D127B9113>I<0003C0000670000C70001C60001C00001C0000380000 380000380000380000380003FF8000700000700000700000700000700000E00000E00000 E00000E00000E00001C00001C00001C00001C00001C00003800003800003800003000003 0000070000C60000E60000CC00007800001425819C0D>I<00F3018F030F06070E0E0C0E 1C0E1C0E381C381C381C381C383830383038187818F00F700070007000E000E0C0C0E1C0 C3007E00101A7D9113>I<0FC00001C00001C00003800003800003800003800007000007 00000700000700000E78000E8C000F0E000E0E001C0E001C0E001C0E001C0E00381C0038 1C00381C00383800703880703880707080707100E03200601C00111D7D9C15>I<018003 80010000000000000000000000000000001C002600470047008E008E000E001C001C001C 0038003800710071007100720072003C00091C7C9B0D>I<0FC00001C00001C000038000 0380000380000380000700000700000700000700000E0F000E11000E23800E43801C8300 1C80001D00001E00003F800039C00038E00038E00070E20070E20070E20070E400E06400 603800111D7D9C13>107 D<1F800380038007000700070007000E000E000E000E001C00 1C001C001C0038003800380038007000700070007000E400E400E400E40068003800091D 7C9C0B>I<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380 E01C0701C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C03 20300C01C01D127C9122>I<3C3C002646004687004707008E07008E07000E07000E0700 1C0E001C0E001C0E001C1C00381C40381C40383840383880701900300E0012127C9117> I<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030E06060C031801E 000F127B9115>I<07870004D98008E0C008E0C011C0E011C0E001C0E001C0E00381C003 81C00381C00381800703800703000707000706000E8C000E70000E00000E00001C00001C 00001C00001C00003C0000FF8000131A7F9115>I<03C4062C0C3C181C38383038703870 38E070E070E070E070E0E0C0E0C0E061E063C03DC001C001C0038003800380038007803F F00E1A7B9113>I<3C3C26C2468747078E068E000E000E001C001C001C001C0038003800 380038007000300010127C9112>I<01F006080C080C1C18181C001F001FC00FF007F000 7800386030E030C030806060C01F000E127D9111>I<00C001C001C001C0038003800380 0380FFE00700070007000E000E000E000E001C001C001C001C0038403840384038801900 0E000B1A7D990E>I<1E0300270700470700470700870E00870E000E0E000E0E001C1C00 1C1C001C1C001C1C003838803838801838801839001C5900078E0011127C9116>I<1E06 270E470E4706870287020E020E021C041C041C041C0818083808181018200C4007800F12 7C9113>I<1E01832703874703874703838707018707010E07010E07011C0E021C0E021C 0E021C0E04180C04181C04181C081C1C100C263007C3C018127C911C>I<070E00199100 10E38020E38041C30041C00001C00001C000038000038000038000038000070200670200 E70400CB04008B080070F00011127D9113>I<1E03270747074707870E870E0E0E0E0E1C 1C1C1C1C1C1C1C38383838183818381C7007F00070007000E0E0C0E1C0818047003C0010 1A7C9114>I<038207C20FEC083810080010002000400080010002000400080810083830 67F043E081C00F127D9111>I E /Fm 5 111 df<00F000030C000E06041C070438070830 0708700790700790E003A0E003A0E003C0E00380E00380E00380600780601B883061900F 80E016127E911B>11 D<0001F000061800080C00100C00200E00400E00800E00801C0100 1C010018010038020FF00210C0020FE00200300400300400300400380400380800700800 700800700800E01800E01800C0140180140300230E0020F8002000002000004000004000 0040000040000080000080000017257F9C17>I<60F0F06004047C830C>58 D<0007E00000E00000E00001C00001C00001C00001C000038000038000038000038001E7 000717000C0F00180F00380E00300E00700E00700E00E01C00E01C00E01C00E01C00E038 80E03880E038806078803199001E0E00131D7E9C16>100 D<381F004E61804681C04701 C08F01C08E01C00E01C00E01C01C03801C03801C03801C0700380710380710380E10380E 2070064030038014127E9119>110 D E /Fn 84 128 df<007E1F0001C1B1800303E3C0 0703C3C00E03C1800E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC00 0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000 0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F87FC001A1D809C 18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E00000E00 00FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C007 03C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E 01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E 01C07FCFF8151D809C17>I<003F07E00001C09C18000380F018000701F03C000E01E03C 000E00E018000E00E000000E00E000000E00E000000E00E000000E00E00000FFFFFFFC00 0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E 00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00 E01C000E00E01C007FC7FCFF80211D809C23>I<1C1C3C3870C0800607779C15>19 D<6060F0F0F8F86868080808080808101010102020404080800D0C7F9C15>34 D<0F0000C0188000C030600380703807006027FB00E0100600E0100C00E0100C00E01018 00E0101800E0103000E0106000602060007020C00030418000188180000F0303C0000606 2000060C10000C1C08001818080018380400303804006038040060380400C0380400C038 04018038040300180803001C0806000C100C000620040003C01E217E9E23>37 D<60F0F8680808081010204080050C7C9C0C>39 D<004000800100020006000C000C0018 001800300030007000600060006000E000E000E000E000E000E000E000E000E000E000E0 00E000600060006000700030003000180018000C000C00060002000100008000400A2A7D 9E10>I<800040002000100018000C000C000600060003000300038001800180018001C0 01C001C001C001C001C001C001C001C001C001C001C00180018001800380030003000600 06000C000C00180010002000400080000A2A7E9E10>I<00060000000600000006000000 060000000600000006000000060000000600000006000000060000000600000006000000 060000FFFFFFE0FFFFFFE000060000000600000006000000060000000600000006000000 0600000006000000060000000600000006000000060000000600001B1C7E9720>43 D<60F0F0701010101020204080040C7C830C>II<60F0F0600404 7C830C>I<00010003000600060006000C000C000C001800180018003000300030006000 6000C000C000C0018001800180030003000300060006000C000C000C0018001800180030 0030003000600060006000C000C00010297E9E15>I<03C00C301818300C300C700E6006 6006E007E007E007E007E007E007E007E007E007E007E007E007E00760066006700E300C 300C18180C3007E0101D7E9B15>I<030007003F00C70007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000F80FFF80D 1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C 00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07E018 30201C201C781E780E781E381E001C001C00180030006007E00030001C001C000E000F00 0F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15>I<000C00000C00001C0000 3C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C0030 1C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C00001C0001 FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E02430281830 1C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D7E9B15 >I<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007 E007E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<4000007FFF 807FFF007FFF0040020080040080040080080000100000100000200000600000400000C0 0000C00001C0000180000180000380000380000380000380000780000780000780000780 00078000078000030000111D7E9B15>I<03E00C301008200C2006600660066006700678 0C3E083FB01FE007F007F818FC307E601E600FC007C003C003C003C00360026004300C1C 1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007E007 6007700F300F18170C2707C700060006000E300C780C78187010203030C00F80101D7E9B 15>I<60F0F0600000000000000000000060F0F06004127C910C>I<60F0F0600000000000 000000000060F0F0701010101020204080041A7C910C>I<7FFFFFC0FFFFFFE000000000 00000000000000000000000000000000000000000000000000000000FFFFFFE07FFFFFC0 1B0C7E8F20>61 D<0FE03038401CE00EF00EF00EF00E000C001C0030006000C000800180 0100010001000100010001000000000000000000000003000780078003000F1D7E9C14> 63 D<000600000006000000060000000F0000000F0000000F0000001780000017800000 1780000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F00001 80F8000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C 001F001E001F00FF80FFF01C1D7F9C1F>65 DI<001F808000E0618001801980070007800E0003801C0003801C000180380001807800 00807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F000 0000F0000000700000807800008078000080380000801C0001001C0001000E0002000700 04000180080000E03000001FC000191E7E9C1E>IIII<001F 808000E0618001801980070007800E0003801C0003801C00018038000180780000807800 008070000080F0000000F0000000F0000000F0000000F0000000F0000000F000FFF0F000 0F80700007807800078078000780380007801C0007801C0007800E00078007000B800180 118000E06080001F80001C1E7E9C21>III<1FFF00F800780078007800780078007800 780078007800780078007800780078007800780078007800787078F878F878F878F0F040 E021C01F00101D7F9B15>IIIII<003F800000E0E0000380380007001C00 0E000E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0 F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0 380003803C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C 20>II<003F800000E0E000038038000700 1C000E000E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F000 01E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C07800 03C0380003803C0E07801C1107000E208E0007205C0003A0780000F0E020003FE0200000 602000003060000038E000003FC000003FC000001F8000000F001B257E9C20>II<07E0801C1980300580700380600180E00180E00080E00080 E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C0 0001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17> I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F00 20000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00 00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F80 0003FFFC001B1C7F9B1E>IIII89 D91 D<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>II<1FC000307000783800781C00301C00001C00001C0001FC000F1C 00381C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E9115>97 DI<07E00C301878307870306000E0 00E000E000E000E000E00060007004300418080C3007C00E127E9112>I<003F00000700 00070000070000070000070000070000070000070000070000070003E7000C1700180F00 300700700700600700E00700E00700E00700E00700E00700E00700600700700700300700 180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000 E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E 000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C 00381C00381C001818001C38000C300013C0001000003000001800001FF8001FFF001FFF 803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215>II<18003C003C00180000000000000000 00000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C 001C001C00FF80091D7F9C0C>I<00C001E001E000C00000000000000000000000000000 0FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0 00E000E000E060E0F0C0F1C061803E000B25839C0D>IIIII<03F0000E1C00180600300300700380600180E001 C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F0001212 7F9115>II<03C1000C3300180B00300F00700700700700 E00700E00700E00700E00700E00700E00700600700700700300F00180F000C370007C700 000700000700000700000700000700000700000700003FE0131A7E9116>II<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D060 8FC00D127F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C 001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910>IIII<7F8FF00F03800F030007020003840001C80001 D80000F00000700000780000F800009C00010E00020E000607000403801E07C0FF0FF815 12809116>II<7FFC70386038407040F040E041C003C003 8007000F040E041C043C0C380870087038FFF80E127F9112>II<60 60F0F0F0F060600C047C9C15>127 D E /Fo 38 121 df<000E00001E00007E0007FE00 FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277B A622>49 D<00FF800003FFF0000FFFFC001F03FE003800FF007C007F80FE003FC0FF003F C0FF003FE0FF001FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F 8000007F000000FE000000FC000001F8000003F0000003E00000078000000F0000001E00 00003C00E0007000E000E000E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFF C07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC00 0F81FE001F00FF003F80FF003F807F803F807F803F807F801F807F800F007F800000FF00 0000FF000000FE000001FC000001F8000007F00000FFC00000FFF0000001FC0000007E00 00007F0000007F8000003FC000003FC000003FE000003FE03C003FE07E003FE0FF003FE0 FF003FE0FF003FC0FF007FC07E007F807C007F003F01FE001FFFFC0007FFF00000FF8000 1B277DA622>I<00000E0000001E0000003E0000007E000000FE000000FE000001FE0000 03FE0000077E00000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001 C07E0003807E0007007E000E007E000E007E001C007E0038007E0070007E00E0007E00FF FFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000FE0000 00FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622>I<0C0003000F803F000FFF FE000FFFFC000FFFF8000FFFF0000FFFE0000FFFC0000FFE00000E0000000E0000000E00 00000E0000000E0000000E0000000E7FC0000FFFF8000F80FC000E003E000C003F000000 1F8000001FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE00 1FE0FE001FC0FC001FC078003F8078003F803C007F001F01FE000FFFF80003FFF00000FF 80001B277DA622>I<0007F000003FFC0000FFFE0001FC0F0003F01F8007E03F800FC03F 801FC03F801F803F803F801F003F8000007F0000007F0000007F000000FF000000FF0FC0 00FF3FF800FF707C00FFC03E00FFC03F00FF801F80FF801FC0FF001FC0FF001FE0FF001F E0FF001FE07F001FE07F001FE07F001FE07F001FE03F001FE03F001FC01F801FC01F803F 800FC03F0007E07E0003FFFC0000FFF000003FC0001B277DA622>I<0000038000000000 07C00000000007C0000000000FE0000000000FE0000000000FE0000000001FF000000000 1FF0000000003FF8000000003FF8000000003FF80000000073FC0000000073FC00000000 F3FE00000000E1FE00000000E1FE00000001C0FF00000001C0FF00000003C0FF80000003 807F80000007807FC0000007003FC0000007003FC000000E003FE000000E001FE000001E 001FF000001C000FF000001FFFFFF000003FFFFFF800003FFFFFF80000780007FC000070 0003FC0000700003FC0000E00001FE0000E00001FE0001E00001FF0001C00000FF0001C0 0000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE2F297EA834>65 D<00003FF001800003FFFE0380000FFFFF8780003FF007DF8000FF8001FF8001FE00007F 8003FC00003F8007F000001F800FF000000F801FE0000007801FE0000007803FC0000007 803FC0000003807FC0000003807F80000003807F8000000000FF8000000000FF80000000 00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000 00FF80000000007F80000000007F80000000007FC0000003803FC0000003803FC0000003 801FE0000003801FE0000007000FF00000070007F000000E0003FC00001E0001FE00003C 0000FF8000F800003FF007E000000FFFFFC0000003FFFF000000003FF8000029297CA832 >67 DII< FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003FC000FE003FC0003E003FC0001E003 FC0001E003FC0000E003FC0000E003FC0000E003FC0000F003FC03807003FC03807003FC 03807003FC03800003FC07800003FC07800003FC1F800003FFFF800003FFFF800003FFFF 800003FC1F800003FC07800003FC07800003FC03800003FC03800003FC03800003FC0380 0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000 03FC00000003FC000000FFFFFC0000FFFFFC0000FFFFFC000024297DA82B>I72 DI80 D82 D<7FFFFFFFFFC07FFFFFFFFFC07FFF FFFFFFC07F803FC03FC07E003FC007C078003FC003C078003FC003C070003FC001C0F000 3FC001E0F0003FC001E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E0E000 3FC000E000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 3FC0000000003FC0000000003FC0000000003FC0000000003FC00000007FFFFFE000007F FFFFE000007FFFFFE0002B287EA730>84 D87 D<01FF800007FFF0000F81F8001FC07E001FC07E001FC03F000F803F8007003F8000003F 8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F803F803F803F003F807F003F 80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC03 FC1E1B7E9A21>97 D<001FF80000FFFE0003F01F0007E03F800FC03F801F803F803F801F 007F800E007F0000007F000000FF000000FF000000FF000000FF000000FF000000FF0000 00FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003F01E 0000FFFC00001FE0001A1B7E9A1F>99 D<00003FF80000003FF80000003FF800000003F8 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800 000003F800000003F800000003F800000003F800001FE3F80000FFFBF80003F03FF80007 E00FF8000FC007F8001F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF00 03F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003 F8007F0003F8007F0003F8003F8003F8001F8003F8000F8007F80007C00FF80003F03BFF 8000FFF3FF80003FC3FF80212A7EA926>I<003FE00001FFF80003F07E0007C01F000F80 1F801F800F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFF FFE0FF000000FF000000FF0000007F0000007F0000007F0000003F8000E01F8000E00FC0 01C007E0038003F81F0000FFFE00001FF0001B1B7E9A20>I<0007F0003FFC00FE3E01F8 7F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFF C0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0 0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF 807FFF807FFF80182A7EA915>I<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C383F00 7E107F007F007F007F007F007F007F007F007F007F007F007F003F007E001F007C001F80 FC000FC1F8001FFFE00018FF800038000000380000003C0000003E0000003FFFF8001FFF FF001FFFFF800FFFFFC007FFFFE01FFFFFF03E0007F07C0001F8F80000F8F80000F8F800 00F8F80000F87C0001F03C0001E01F0007C00FC01F8003FFFE00007FF0001E287E9A22> II<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0 FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 0FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I107 DIII<003FE00001FFFC0003F07E000FC01F801F800F C03F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007 F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800F C00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>II114 D<03FE300FFFF01E03F03800F0700070F00070F00070F80070FC0000FFE0007FFE007FFF 803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF0003CF00038F80038FC00 70FF01E0F7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000 F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007F00007 F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807F03807F03807 F03807F03807F03803F03803F87001F86000FFC0001F8015267FA51B>IIIII E /Fp 1 49 df<081C1C3838383070706060C0C0060D7E 8D09>48 D E /Fq 3 101 df<03E0000638101C1820381C20300E20700E40600E40E00E 80E00E80E00F00E00E00C00E00E00E00603E0020C6401F038014107E8F19>11 D<0007800018600020600040700080700080700100700100700200E00200C0023F800223 00043F800401C00400C00401C00801C00801C00801C0080180180380180300180700140E 0022180021F00020000020000040000040000040000040000080000014217F9916>I<00 3F000700070007000E000E000E000E001C001C039C0C5C1838383830387038E070E070E0 70E070C0E2C0E2C0E2E1E262643C38101A7E9914>100 D E /Fr 7 117 df<00030000000780000007800000078000000FC000000FC000001BE000001BE0 00001BE0000031F0000031F0000060F8000060F80000E0FC0000C07C0000C07C0001803E 0001FFFE0003FFFF0003001F0003001F0006000F8006000F800E000FC0FFC07FFCFFC07F FC1E1A7F9921>65 D<0FF0001C3C003E1E003E0E003E0F001C0F00000F0000FF000FCF00 3E0F007C0F00F80F00F80F00F80F00F817007C27E01FC3E013117F9015>97 DI<03FC000F0E001C1F003C1F00781F00780E00F80000F8 0000F80000F80000F800007800007800003C01801C03000F060003FC0011117F9014>I< FC78FC9C1D3E1D3E1E3E1E1C1E001E001E001E001E001E001E001E001E00FFC0FFC00F11 7F9012>114 D<1FB020704030C030C030F000FF807FE03FF807F8003CC00CC00CE00CE0 08F830CFE00E117F9011>I<06000600060006000E000E001E003FF0FFF01E001E001E00 1E001E001E001E001E001E181E181E181E181E180F3003E00D187F9711>I E /Fs 46 122 df<00FC7C0183C607078E0607040E07000E07000E07000E07000E07000E 0700FFFFF00E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E 07000E07000E07000E07007F0FF0171A809916>11 D<00FC000182000703000607000E02 000E00000E00000E00000E00000E0000FFFF000E07000E07000E07000E07000E07000E07 000E07000E07000E07000E07000E07000E07000E07000E07007F0FE0131A809915>I<00 7E1F8001C170400703C060060380E00E0380400E0380000E0380000E0380000E0380000E 038000FFFFFFE00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E 0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E07F8FE3FC1E1A809920 >14 D<00800100020004000C00080018003000300030006000600060006000E000E000E0 00E000E000E000E000E000E000E0006000600060006000300030003000180008000C0004 0002000100008009267D9B0F>40 D<8000400020001000180008000C0006000600060003 000300030003000380038003800380038003800380038003800380030003000300030006 00060006000C0008001800100020004000800009267E9B0F>I<60F0F070101010202040 80040B7D830B>44 DI<60F0F06004047D830B>I<03000700FF00 070007000700070007000700070007000700070007000700070007000700070007000700 07000700FFF00C187D9713>49 D<0F80106020304038803CC01CE01C401C003C00380038 0070006000C001800100020004040804100430083FF87FF8FFF80E187E9713>I<01E006 100C1818383038300070006000E000E7C0E860F030F018E018E01CE01CE01C601C601C70 1830183030186007C00E187E9713>54 D<000C0000000C0000000C0000001E0000001E00 00003F000000270000002700000043800000438000004380000081C0000081C0000081C0 000100E0000100E00001FFE000020070000200700006007800040038000400380008001C 0008001C001C001E00FF00FFC01A1A7F991D>65 D<003F0201C0C603002E0E001E1C000E 1C0006380006780002700002700002F00000F00000F00000F00000F00000F00000700002 7000027800023800041C00041C00080E000803003001C0C0003F00171A7E991C>67 DII<003F020001C0C60003 002E000E001E001C000E001C00060038000600780002007000020070000200F0000000F0 000000F0000000F0000000F0000000F001FFC070000E0070000E0078000E0038000E001C 000E001C000E000E000E000300160001C06600003F82001A1A7E991E>71 DI I80 D<0FC21836200E6006C006C002C002C002E00070007E 003FE01FF807FC003E000E00070003800380038003C002C006E004D81887E0101A7E9915 >83 D<7FFFFF00701C0700401C0100401C0100C01C0180801C0080801C0080801C008000 1C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C000000 1C0000001C0000001C0000001C0000001C0000001C0000001C0000001C000003FFE00019 1A7F991C>II<3F8070C070E020700070007007F01C7030 707070E070E071E071E0F171FB1E3C10107E8F13>97 DI< 07F80C1C381C30087000E000E000E000E000E000E0007000300438080C1807E00E107F8F 11>I<007E00000E00000E00000E00000E00000E00000E00000E00000E00000E0003CE00 0C3E00380E00300E00700E00E00E00E00E00E00E00E00E00E00E00E00E00600E00700E00 381E001C2E0007CFC0121A7F9915>I<07C01C3030187018600CE00CFFFCE000E000E000 E0006000300438080C1807E00E107F8F11>I<01F0031807380E100E000E000E000E000E 000E00FFC00E000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00D 1A80990C>I<0FCE187330307038703870387038303018602FC02000600070003FF03FFC 1FFE600FC003C003C003C0036006381C07E010187F8F13>II<18003C003C001800000000000000000000000000FC001C001C001C001C001C001C00 1C001C001C001C001C001C001C001C00FF80091A80990A>I107 DIII<07E01C38300C700E6006E007E007E007E007E007E0076006700E38 1C1C3807E010107F8F13>II<03C2000C2600381E00300E00700E00E00E00E00E 00E00E00E00E00E00E00E00E00700E00700E00381E001C2E0007CE00000E00000E00000E 00000E00000E00000E00007FC012177F8F14>II<1F2060E04020C020C020F0007F 003FC01FE000F080708030C030C020F0408F800C107F8F0F>I<0400040004000C000C00 1C003C00FFC01C001C001C001C001C001C001C001C001C201C201C201C201C200E400380 0B177F960F>IIIIII E /Ft 16 118 df<70F8F8F0E005057A840F>46 D<0000FE000007018000180060002000 100040001000800008010000040201F00404070804080C040210180202103003C2206001 C220E0038240C0038241C0038241C003828380070483800704838007048380070483800E 0883800E0881801E0881802E1080C04E2080618E60403E07804000000020000000200000 00100000E00C00078003007C0000FF80001F2379A225>64 D<00F8C00185C00705C00E03 800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E10F01C 20701C20703C20305C40308C400F078014157B9419>97 D<03C03F800380038003800700 0700070007000E000E000E000E001C001CF81D0C1E0E3C0638073807380F700F700F700F 700FE01EE01EE01EE03CE038E038607060E031C01F0010237BA216>I<007E0001C10003 01800703800E07801C07803C0000380000780000780000780000F00000F00000F00000F0 0000F00100700100700200300C001830000FC00011157B9416>I<00F803840E021C023C 0238027804F018FFE0F000F000E000E000E000E000E002E0026004701830600F800F157A 9416>101 D<00F0000FE00000E00000E00000E00001C00001C00001C00001C000038000 038000038000038000070000071F0007218007C0C00F00E00F00E00E00E00E00E01C01C0 1C01C01C01C01C01C0380380380380380380380704700708700E08700E10700610E00620 6003C016237DA219>104 D<0000E00001E00001E00000C0000000000000000000000000 000000000000000000000000001E00002300004380008380008380010380010380000700 000700000700000700000E00000E00000E00000E00001C00001C00001C00001C00003800 00380000380000380000700000700000700070E000F0C000F180006300003C0000132B82 A00F>106 D<00F0000FE00000E00000E00000E00001C00001C00001C00001C000038000 0380000380000380000700000701E0070210070C700E10F00E10F00E20600E40001D8000 1E00001FC0001C7000383800383800381C00381C20703840703840703840701880E01880 600F0014237DA216>I<01E01FC001C001C001C003800380038003800700070007000700 0E000E000E000E001C001C001C001C0038003800380038007000700070007100E200E200 E200E200640038000B237CA20C>I<1C0F002631C04740C08780E08780E08700E08700E0 0E01C00E01C00E01C00E01C01C03801C03801C03801C0704380708380E08380E10380610 7006203003C016157B941B>110 D<007E0001C3000381800701C00E01C01C01E03C01E0 3801E07801E07801E07801E0F003C0F003C0F00380F00780700700700E00700C00301800 18700007C00013157B9419>I<1C1F002620804741C08783C08703C08701808700000E00 000E00000E00000E00001C00001C00001C00001C00003800003800003800003800007000 0030000012157B9415>114 D<00FC000183000200800401800C03800C03000C00000F00 000FF00007FC0003FE00003E00000F00000700700700F00600F00600E004004008002030 001FC00011157D9414>I<00C001C001C001C001C003800380038003800700FFF8070007 000E000E000E000E001C001C001C001C003800380038003810702070207040708031001E 000D1F7C9E10>I<1E00602300E04380E04381C08381C08701C08701C00703800E03800E 03800E03801C07001C07001C07001C07081C0E10180E101C0E101C1E200C262007C3C015 157B941A>I E /Fu 24 118 df<001F83E000706E3000C07C780180F8780380F0780700 70000700700007007000070070000700700007007000070070000700700007007000FFFF FFC007007000070070000700700007007000070070000700700007007000070070000700 700007007000070070000700700007007000070070000700700007007000070070000700 7000070078007FE3FF801D2380A21C>11 D<70F8FCFC7404040404080810102040060F7C 840E>44 D<70F8F8F87005057C840E>46 D<008003800F80F38003800380038003800380 038003800380038003800380038003800380038003800380038003800380038003800380 038003800380038007C0FFFE0F217CA018>49 D<03F8000C1E001007002007804007C078 07C07803C07807C03807C0000780000780000700000F00000E0000380003F000001C0000 0F000007800007800003C00003C00003E02003E07003E0F803E0F803E0F003C04003C040 0780200780100F000C1C0003F00013227EA018>51 D<007E0001C1000300800601C00E03 C01C03C0180180380000380000780000700000700000F0F800F30C00F40600F40300F803 80F801C0F001C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801C03801 C01803801C03000C0600070C0001F00013227EA018>54 D<01F000060C000C0600180700 380380700380700380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E0 7003E03803E01805E00C05E00619E003E1E00001C00001C00001C0000380000380300300 780700780600700C002018001030000FC00013227EA018>57 D66 D<0007F008003C0C1800E0 021801C001B8038000F8070000780F0000381E0000381E0000183C0000183C0000187C00 00087800000878000008F8000000F8000000F8000000F8000000F8000000F8000000F800 0000F8001FFF780000F8780000787C0000783C0000783C0000781E0000781E0000780F00 007807000078038000B801C000B800E00318003C0C080007F00020247DA226>71 D<03FFF0001F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F 00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F 00000F00000F00700F00F80F00F80F00F80E00F01E00401C0020380018700007C0001423 7EA119>74 D77 D<03F0200C0C601802603001E07000E0600060E00060E00060E00020E00020E000 20F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E00000 F00000F0000070800070800070800070800070C00060C00060E000C0F000C0C80180C607 0081FC0014247DA21B>83 D<0FE0001838003C0C003C0E00180700000700000700000700 00FF0007C7001E07003C0700780700700700F00708F00708F00708F00F087817083C2390 0FC1E015157E9418>97 D<01FE000703000C07801C0780380300780000700000F00000F0 0000F00000F00000F00000F00000F000007000007800403800401C00800C010007060001 F80012157E9416>99 D<01FC000707000C03801C01C03801C07801E07000E0F000E0FFFF E0F00000F00000F00000F00000F000007000007800203800201C00400E008007030000FC 0013157F9416>101 D<00007001F198071E180E0E181C07001C07003C07803C07803C07 803C07801C07001C07000E0E000F1C0019F0001000001000001800001800001FFE000FFF C00FFFE03800F0600030400018C00018C00018C000186000306000303800E00E038003FE 0015217F9518>103 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00 000E00000E00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00700E00 700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00 700E0070FFE7FF18237FA21B>I<1C001E003E001E001C00000000000000000000000000 000000000E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E00 0E000E000E000E00FFC00A227FA10E>I<0E0000FE00001E00000E00000E00000E00000E 00000E00000E00000E00000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E 02000E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E 01C00E01E00E00F00E00F8FFE3FE17237FA21A>107 D<0E1F80FE60C01E80E00F00700F 00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E 00700E00700E00700E0070FFE7FF18157F941B>110 D<01FC000707000C01801800C038 00E0700070700070F00078F00078F00078F00078F00078F00078F000787000707800F038 00E01C01C00E038007070001FC0015157F9418>I<0E3CFE461E8F0F0F0F060F000E000E 000E000E000E000E000E000E000E000E000E000E000E000F00FFF010157F9413>114 D<02000200020002000600060006000E001E003E00FFF80E000E000E000E000E000E000E 000E000E000E000E000E040E040E040E040E040E040708030801F00E1F7F9E13>116 D<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E00700E00 700E00700E00700E00700E00700E00F00E00F006017003827800FC7F18157F941B>I E /Fv 15 115 df45 D<0000030000000000030000 0000000300000000000780000000000780000000000FC0000000000FC0000000000FC000 00000017E00000000013E00000000013E00000000023F00000000021F00000000021F000 00000040F80000000040F80000000040F800000000807C00000000807C00000001807E00 000001003E00000001003E00000002003F00000002001F00000002001F00000004000F80 000004000F80000004000F800000080007C00000080007C00000180007E000001FFFFFE0 00001FFFFFE00000200003F00000200001F00000200001F00000400001F80000400000F8 0000400000F800008000007C00008000007C00008000007C00010000003E00010000003E 00030000003F00030000001F00070000001F001F8000003F80FFE00003FFFCFFE00003FF FC2E327EB132>65 D68 D<00001FE000800000FFFC018000 07F00F0180000F80018380003E0000C38000780000278000F00000178001E000000F8003 C000000F800780000007800780000003800F00000003801F00000001801E00000001803E 00000001803C00000001803C00000000807C00000000807C0000000080780000000000F8 0000000000F80000000000F80000000000F80000000000F80000000000F80000000000F8 0000000000F80000000000F80000000000F80000000000F800000FFFFC7800000FFFFC7C 0000001FC07C0000000F803C0000000F803C0000000F803E0000000F801E0000000F801F 0000000F800F0000000F80078000000F8007C000000F8003C000000F8001E000000F8000 F000001780007C00001780003E00006380000F8000C3800007F00781800000FFFE008000 001FF000002E337CB134>71 DII< FFFFFFC000FFFFFFF80007E0007E0003E0001F0003E000078003E00003C003E00001E003 E00001F003E00001F003E00000F003E00000F803E00000F803E00000F803E00000F803E0 0000F803E00000F803E00000F003E00001F003E00001E003E00003E003E00003C003E000 078003E0001F0003E0007C0003FFFFF00003E000000003E000000003E000000003E00000 0003E000000003E000000003E000000003E000000003E000000003E000000003E0000000 03E000000003E000000003E000000003E000000003E000000003E000000003E000000003 E000000003E000000003E000000007F0000000FFFF800000FFFF80000025317CB02D>80 D<007F802001FFE02007C078600F001C601E0006E03C0003E0380001E0780000E0700000 E070000060F0000060F0000060F0000020F0000020F0000020F8000020F80000007C0000 007E0000003F0000003FC000001FF800000FFF800007FFF80003FFFC0000FFFF00000FFF 800000FFC000001FE0000007E0000003F0000001F0000000F0000000F8000000F8800000 7880000078800000788000007880000078C0000078C0000070E00000F0E00000E0F00000 E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D337CB125>83 D<7FFFFFFFFFE07FFFFFFFFFE07E000F8007E078000F8001E070000F8000E060000F8000 6040000F80002040000F800020C0000F800030C0000F80003080000F80001080000F8000 1080000F80001080000F80001080000F80001080000F80001000000F80000000000F8000 0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000 0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000 0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000 0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000 0000000F80000000000F80000000000F80000000000F80000000001FC00000000FFFFF80 00000FFFFF80002C317EB030>I<00FE00000303C0000C00E00010007000100038003C00 3C003E001C003E001E003E001E0008001E0000001E0000001E0000001E00000FFE0000FC 1E0003E01E000F801E001F001E003E001E003C001E007C001E00F8001E04F8001E04F800 1E04F8003E04F8003E0478003E047C005E043E008F080F0307F003FC03E01E1F7D9E21> 97 D<003F8000E0600380180700040F00041E001E1C003E3C003E7C003E7C0008780000 F80000F80000F80000F80000F80000F80000F80000F80000F800007800007C00007C0000 3C00011E00011E00020F000207000403801800E060003F80181F7D9E1D>99 D<003F800000E0E0000380380007003C000E001E001E001E001C000F003C000F007C000F 0078000F8078000780F8000780F8000780FFFFFF80F8000000F8000000F8000000F80000 00F8000000F8000000780000007C0000003C0000003C0000801E0000800E0001000F0002 000780020001C00C0000F03000001FC000191F7E9E1D>101 D<0780000000FF80000000 FF800000000F800000000780000000078000000007800000000780000000078000000007 800000000780000000078000000007800000000780000000078000000007800000000780 000000078000000007800000000780FE00000783078000078C03C000079001E00007A001 E00007A000F00007C000F00007C000F000078000F000078000F000078000F000078000F0 00078000F000078000F000078000F000078000F000078000F000078000F000078000F000 078000F000078000F000078000F000078000F000078000F000078000F000078000F00007 8000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF8021327EB125>104 D<0780FE001FC000FF83078060F000FF8C03C18078000F9001E2003C0007A001E4003C00 07A000F4001E0007C000F8001E0007C000F8001E00078000F0001E00078000F0001E0007 8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780 00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000 F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0 001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83 FFF0341F7E9E38>109 D<0783E0FF8C18FF907C0F907C07A07C07C03807C00007C00007 C00007800007800007800007800007800007800007800007800007800007800007800007 80000780000780000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E 19>114 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 591 369 a Fv(APHID)22 b(Game-T)-6 b(ree)22 b(Searc)n(h)516 490 y Fu(Mark)16 b(G.)g(Bro)q(c)o(kington,)g Ft(br)n(o)n(ck@cs.ualb)n (erta.c)n(a)504 548 y Fu(Jonathan)i(Sc)o(hae\013er,)d Ft(jonathan@cs.ualb)n(erta.c)n(a)685 606 y Fs(Departmen)o(t)f(of)f (Computing)h(Science)797 664 y(Univ)o(ersit)o(y)h(of)d(Alb)q(erta)727 722 y(Edmon)o(ton,)i(Alb)q(erta)g(T6G)f(2H1)911 780 y(Canada)828 878 y Fu(June)k(13,)f(1996)890 1017 y Fr(Abstract)161 1073 y Fs(This)g(pap)q(er)h(in)o(tro)q(duces)g(the)e(APHID)g(\(Async)o (hronous)j(P)o(arallel)f(Hierarc)o(hical)h(Iterativ)o(e)e(Deep)q (ening\))i(game-)104 1118 y(tree)13 b(searc)o(h)g(algorithm.)19 b(An)13 b(APHID)g(searc)o(h)h(is)f(con)o(trolled)j(b)o(y)d(a)g(master)g (and)h(a)f(series)h(of)f(sla)o(v)o(e)h(pro)q(cessors.)k(The)104 1164 y(master)d(searc)o(hes)g(the)g(\014rst)g Fq(d)551 1148 y Fp(0)576 1164 y Fs(ply)h(of)e(the)h(game-tree)g(rep)q(eatedly)m (.)24 b(The)14 b(sla)o(v)o(es)i(are)f(resp)q(onsible)i(for)e(the)g(b)q (ottom)104 1210 y(plies)k(of)f(the)f(game-tree.)32 b(The)17 b(sla)o(v)o(es)i(async)o(hronously)i(read)d(w)o(ork)g(lists)h(from)e (the)h(master)g(and)g(return)h(score)104 1255 y(information)g(to)d(the) h(master.)29 b(The)17 b(master)g(uses)g(the)g(returned)h(score)f (information)i(to)e(generate)g(appro)o(ximate)104 1301 y(minimax)e(v)n(alues,)f(un)o(til)g(all)h(of)d(the)i(required)g(score)f (information)j(is)d(a)o(v)n(ailable.)161 1346 y(APHID)e(has)g(b)q(een)g (programmed)g(as)g(an)g(easy)g(to)f(implemen)o(t,)j(game-indep)q(enden) o(t)g Fq(\013\014)f Fs(library)m(,)g(and)f(w)o(as)g(imple-)104 1392 y(men)o(ted)g(in)o(to)h(a)g(c)o(hess)f(program)h(with)g(one)f(da)o (y)h(of)f(programming)i(e\013ort.)k(APHID)11 b(yields)i(reasonable)g(p) q(erformance)104 1438 y(on)e(a)h(net)o(w)o(ork)f(of)g(w)o(orkstations,) i(an)f(arc)o(hitecture)h(where)e(it)h(is)g(extremely)g(di\016cult)h(to) f(use)f(a)h(shared)g(transp)q(osition)104 1483 y(table)i(e\013fectiv)o (ely)m(.)0 1619 y Fo(1)69 b(In)n(tro)r(duction)0 1722 y Fn(The)18 b(alpha-b)q(eta)f(\()p Fm(\013\014)r Fn(\))h(minim)o(ax)c (tree)19 b(searc)o(h)f(algorithm)d(has)j(pro)o(v)o(en)f(to)g(b)q(e)h(a) f(di\016cult)g(algorithm)e(to)i(parallelize.)0 1785 y(Although)e(sim)o (ulations)e(predict)k(excellen)o(t)f(parallel)f(p)q(erformance,)g(man)o (y)f(of)h(these)i(results)g(are)f(based)h(on)e(an)h(unrea-)0 1847 y(sonable)c(set)h(of)e(assumptions.)17 b(In)12 b(practice,)h(kno)o (wing)e(where)i(to)f(initiate)f(parallel)g(activit)o(y)g(is)h (di\016cult)g(since)h(the)f(result)0 1909 y(of)18 b(searc)o(hing)g(one) h(no)q(de)f(at)g(a)g(branc)o(h)h(ma)o(y)d(ob)o(viate)i(the)h(parallel)e (w)o(ork)g(of)h(the)h(other)g(branc)o(hes)g(\(a)f(so-called)g Fl(cut-)0 1972 y(o\013)p Fn(\).)h(In)14 b(real-w)o(orld)f(implemen)o (tations,)d(suc)o(h)15 b(as)f(for)g(high-p)q(erformance)f(c)o(hess,)i (c)o(hec)o(k)o(ers)h(and)d(Othello)h(game-pla)o(ying)0 2034 y(programs,)e(the)j(programs)d(su\013er)k(from)c(three)j(ma)r(jor) d(sources)k(of)d(parallel)g(ine\016ciency:)62 2121 y Fk(\017)21 b Fl(Synchr)n(onization)15 b(Overhe)n(ad)p Fn(:)i(The)d(searc)o(h)g(t)o(ypically)d(has)i(man)o(y)e(sync)o (hronization)i(p)q(oin)o(ts)f(that)h(result)h(in)e(a)h(high)104 2184 y(p)q(ercen)o(tage)i(of)f(pro)q(cessor)h(idle)f(time.)62 2275 y Fk(\017)21 b Fl(Communic)n(ation)f(Overhe)n(ad)p Fn(:)29 b(Pro)q(cesses)22 b(m)o(ust)c(comm)o(unicate)f(information)f(b) q(et)o(w)o(een)21 b(them;)f(the)g(impact)e(of)104 2338 y(comm)o(unicatio)o(n)11 b(dep)q(ends)16 b(on)d(the)i(frequency)g(of)e (messages)h(and)g(the)g(comm)o(unication)d(latency)m(.)62 2429 y Fk(\017)21 b Fl(Se)n(ar)n(ch)c(Overhe)n(ad)p Fn(:)22 b(Searc)o(h)16 b(trees)i(are)e(really)f(directed)i(graphs.)24 b(W)m(ork)15 b(p)q(erformed)g(on)h(one)g(pro)q(cessor)h(ma)o(y)d(b)q(e) 104 2491 y(useful)d(to)g(the)g(computations)f(of)g(another)i(pro)q (cessor.)18 b(If)11 b(this)g(information)d(is)j(not)g(a)o(v)n(ailable,) e(unnecessary)k(searc)o(h)104 2554 y(ma)o(y)f(b)q(e)i(done.)0 2641 y(These)h(o)o(v)o(erheads)f(are)g(not)f(indep)q(enden)o(t)i(of)d (eac)o(h)i(other.)19 b(F)m(or)13 b(example,)f(increased)i(comm)o (unication)c(can)k(help)f(reduce)0 2704 y(the)j(searc)o(h)h(o)o(v)o (erhead.)23 b(Reducing)15 b(the)h(n)o(um)o(b)q(er)f(of)f(sync)o (hronization)i(p)q(oin)o(ts)f(can)h(increase)g(the)g(searc)o(h)h(o)o(v) o(erhead.)23 b(In)965 2828 y(1)p eop %%Page: 2 2 2 1 bop 0 195 a Fn(practice,)14 b(the)h(righ)o(t)e(balance)h(b)q(et)o (w)o(een)h(these)g(sources)h(of)d(program)f(ine\016ciency)i(is)g (di\016cult)f(to)h(\014nd,)f(and)h(one)g(usually)0 257 y(p)q(erforms)f(man)o(y)f(exp)q(erimen)o(ts)j(to)e(\014nd)h(the)h(righ) o(t)e(trade-o\013s)i(to)f(maxim)o(ize)d(p)q(erformance.)62 320 y(Man)o(y)i(parallel)g Fm(\013\014)j Fn(algorithms)11 b(ha)o(v)o(e)j(app)q(eared)g(in)f(the)i(literature)f([1)o(,)f(2,)g(3,)g (9,)g(13)o(,)g(22].)k(The)d(PV-Split)g(algorithm)0 382 y(recognized)19 b(that)f(some)f(no)q(des)h(exist)h(in)e(the)h(searc)o (h)h(tree)g(where,)h(ha)o(ving)d(searc)o(hed)i(the)g(\014rst)f(branc)o (h)g(sequen)o(tially)m(,)0 444 y(the)f(remaining)e(branc)o(hes)i(can)g (b)q(e)g(searc)o(hed)h(in)e(parallel)g([16)o(].)25 b(Initiating)15 b(parallelism)f(along)h(the)i(b)q(est)h(line)e(of)g(pla)o(y)m(,)0 506 y(the)h Fl(princip)n(al)f(variation)p Fn(,)g(w)o(as)g(e\013ectiv)o (e)h(for)f(a)f(small)f(n)o(um)o(b)q(er)h(of)h(pro)q(cessors,)i (although)d(v)n(ariations)g(on)h(this)g(sc)o(heme)0 569 y(seemed)e(limited)e(to)i(sp)q(eedups)i(of)d(less)h(than)g(8)g([21)o (].)62 631 y(The)e(idea)f(can)h(b)q(e)g(generalized)g(to)g(other)g(no)q (des)g(in)f(the)h(tree.)18 b(A)o(t)12 b(no)q(des)g(where)h(the)f (\014rst)g(branc)o(h)g(has)g(b)q(een)g(searc)o(hed)0 693 y(and)17 b(no)g(cut-o\013)h(o)q(ccurs,)h(the)e(rest)i(can)e(lik)o (ely)f(b)q(e)i(searc)o(hed)h(in)e(parallel.)26 b(It)18 b(is)f(a)g(trade-o\013)g({)g(increased)i(parallelism)0 756 y(v)o(ersus)c(additional)d(searc)o(h)k(o)o(v)o(erhead,)e(since)g (one)h(of)e(these)j(parallel)d(tasks)h(could)g(cause)h(a)f(cuto\013.)19 b(This)14 b(idea)g(has)g(b)q(een)0 818 y(tried)e(b)o(y)g(a)f(n)o(um)o (b)q(er)h(of)f(researc)o(hers)k([6)o(,)c(7,)g(10].)17 b(The)12 b(b)q(est-kno)o(wn)g(instance)h(of)e(this)h(t)o(yp)q(e)h(of)e (algorithm)e(is)j(called)f Fl(Y)m(oung)0 880 y(Br)n(others)k(Wait)f Fn(\(YBW\))h(and)f(w)o(as)g(implemen)o(ted)e(b)o(y)i(F)m(eldmann)e(in)i (the)h Fj(Zugzw)l(ang)f Fn(c)o(hess)i(program)d([5)o(].)19 b(F)m(eldmann)0 942 y(ac)o(hiev)o(ed)f(a)f(344-fold)f(sp)q(eedup)j (using)e(YBW)h(on)f(1024)g(pro)q(cessors.)31 b(V)m(ariations)16 b(of)h(this)h(algorithm)d(ha)o(v)o(e)i(app)q(eared)0 1005 y(with)d(comparable)e(exp)q(erimen)o(tal)h(results,)i(suc)o(h)f (as)g(Jam)o(b)q(oree)g(searc)o(h)h([12)o(])e(and)h(ABD)o(AD)o(A)g([24)o (].)62 1067 y(This)20 b(class)f(of)g(algorithms)e(cannot)j(ac)o(hiev)o (e)g(a)f(linear)g(sp)q(eedup)i(primarily)c(due)i(to)h(sync)o (hronization)f(o)o(v)o(erhead;)0 1129 y(the)c(searc)o(h)h(tree)g(ma)o (y)d(ha)o(v)o(e)i(thousands)g(of)f(sync)o(hronization)h(p)q(oin)o(ts)g (and)f(there)j(are)e(n)o(umerous)f(o)q(ccasions)h(where)h(the)0 1191 y(pro)q(cesses)i(are)e(starv)o(ed)h(for)e(w)o(ork.)23 b(The)16 b(algorithms)e(ha)o(v)o(e)h(lo)o(w)g(searc)o(h)i(o)o(v)o (erhead,)f(but)f(this)h(is)g(primarily)d(due)j(to)f(the)0 1254 y(implemen)o(tatio)o(n)c(of)j(a)f(globally)f(shared)j(transp)q (osition)e(table)h([8].)62 1316 y(This)g(pap)q(er)h(in)o(tro)q(duces)h (the)f(Async)o(hronous)g(P)o(arallel)e(Hierarc)o(hical)h(Iterativ)o(e)h (Deep)q(ening)g(\(APHID)1723 1301 y Fi(1)1742 1316 y Fn(\))f(game-tree)0 1378 y(searc)o(h)i(algorithm.)k(The)c(algorithm)d (represen)o(ts)18 b(a)d(departure)i(from)c(the)j(approac)o(hes)g(used)h (in)d(practice.)24 b(In)15 b(con)o(trast)0 1440 y(to)d(other)h(sc)o (hemes,)g(APHID)g(de\014nes)h(a)e(fron)o(tier)h(\(a)f(\014xed)h(n)o(um) o(b)q(er)f(of)f(mo)o(v)o(es)h(a)o(w)o(a)o(y)f(from)g(the)i(ro)q(ot)f (of)g(the)h(searc)o(h)h(tree\),)0 1503 y(and)d(all)g(no)q(des)h(at)f (the)h(fron)o(tier)g(are)f(done)h(in)f(parallel.)16 b(Eac)o(h)c(w)o (ork)o(er)g(pro)q(cess)h(is)e(assigned)h(an)f(equal)g(n)o(um)o(b)q(er)g (of)g(fron)o(tier)0 1565 y(no)q(des)i(to)f(searc)o(h.)19 b(The)13 b(w)o(ork)o(ers)g(con)o(tin)o(ually)d(searc)o(h)k(these)g(no)q (des)f(deep)q(er)h(and)e(deep)q(er,)i(nev)o(er)f(ha)o(ving)f(to)g(sync) o(hronize)0 1627 y(with)j(a)g(con)o(trolling)f(master)h(pro)q(cess.)24 b(The)16 b(master)f(pro)q(cess)i(rep)q(eatedly)f(searc)o(hes)i(to)d (the)h(fron)o(tier)f(to)g(get)h(the)g(latest)0 1689 y(searc)o(h)g (results.)k(In)15 b(this)f(w)o(a)o(y)m(,)f(there)j(is)e(e\013ectiv)o (ely)i(no)e(idle)g(time;)f(searc)o(h)i(ine\016ciencies)h(are)f (primarily)d(due)j(to)f(searc)o(h)0 1752 y(o)o(v)o(erhead.)29 b(APHID's)18 b(p)q(erformance)f(do)q(es)h(not)g(rely)f(on)h(the)g (implemen)o(tati)o(on)d(of)i(a)g(global)f(shared)i(memory)m(,)d(whic)o (h)0 1814 y(mak)o(es)f(the)i(algorithm)d(suitable)i(for)g(lo)q (osely-coupled)f(arc)o(hitectures)k(\(suc)o(h)e(as)f(a)g(net)o(w)o(ork) h(of)e(w)o(orkstations\),)h(as)h(w)o(ell)0 1876 y(as)e(tigh)o (tly-coupled)f(arc)o(hitectures.)62 1939 y(Unlik)o(e)f(most)f(parallel) g Fm(\013\014)k Fn(algorithms,)9 b(APHID)k(is)f(designed)h(to)f(\014t)g (in)o(to)g(a)g(sequen)o(tial)g Fm(\013\014)j Fn(structure.)k(APHID)13 b(has)0 2001 y(b)q(een)i(implemen)o(ted)e(as)h(a)g(game-indep)q(enden)o (t)g(library)g(of)f(routines.)20 b(These,)c(com)o(bined)d(with)h (application-dep)q(enden)o(t)0 2063 y(routines)d(that)f(the)g(user)h (supplies,)g(allo)o(w)d(a)i(sequen)o(tial)g Fm(\013\014)j Fn(program)8 b(to)i(b)q(e)h(easily)e(con)o(v)o(erted)i(to)f(a)g (parallel)f Fm(\013\014)j Fn(program.)0 2125 y(Although)i(most)f (parallel)g Fm(\013\014)j Fn(programs)d(tak)o(e)h(mon)o(ths)f(to)h(dev) o(elop,)g(the)h(game-indep)q(enden)o(t)f(library)g(allo)o(ws)e(users)k (to)0 2188 y(in)o(tegrate)e(parallelism)d(in)o(to)j(their)g (application)e(with)i(only)f(a)h(few)g(hours)g(of)f(w)o(ork.)62 2250 y(This)j(pap)q(er)h(discusses)i(the)e(APHID)f(algorithm,)e(its)i (application-indep)q(enden)o(t)g(in)o(terface)h(and)f(the)h(p)q (erformance)0 2312 y(of)12 b(the)h(APHID)g(algorithm.)i(The)f(pap)q(er) f(is)g(organized)f(in)o(to)g(\014v)o(e)h(sections.)19 b(Section)13 b(2)g(is)f(a)h(brief)f(summary)e(of)j(previous)0 2374 y(w)o(ork)18 b(in)g(parallel)f(game-tree)h(searc)o(h.)33 b(Section)19 b(3)f(is)g(primarily)e(concerned)21 b(with)d(the)h (details)f(of)g(ho)o(w)g(the)h(APHID)0 2437 y(algorithm)d(op)q(erates,) 21 b(and)e(ho)o(w)g(the)g(library)f(in)o(tegrates)i(with)f(an)f (existing)h(sequen)o(tial)g Fm(\013\014)i Fn(algorithm.)31 b(Section)19 b(4)0 2499 y(describ)q(es)h(the)e(preliminary)d(results)k (of)e(in)o(tegrating)g(the)h(library)f(in)o(to)g(a)g(c)o(hess)i (program,)d(and)i(Section)g(5)f(describ)q(es)0 2561 y(some)c(of)g(the)i (researc)o(h)h(directions)e(that)g(w)o(e)g(are)g(curren)o(tly)h(w)o (orking)e(on.)p 0 2596 780 2 v 46 2623 a Fh(1)64 2634 y Fg(An)e(aphid)f(is)i(a)f(soft-b)q(o)q(died)e(insect)h(that)g(suc)o (ks)h(the)g(sap)g(from)f(plan)o(ts.)965 2828 y Fn(2)p eop %%Page: 3 3 3 2 bop 0 195 a Fo(2)69 b(Previous)23 b(W)-6 b(ork)24 b(on)g(P)n(arallel)d Ff(\013\014)26 b Fo(Algorithms)0 298 y Fn(The)14 b(idea)g(b)q(ehind)g(the)g(PV-Split)g(algorithm)d(has)j (pro)o(v)o(en)g(to)g(b)q(e)g(a)g(fundamen)o(tal)d(building)i(blo)q(c)o (k)g(in)h(dev)o(eloping)f(high-)0 361 y(p)q(erformance)i(parallel)e (game-tree)h(algorithms)f([16)o(].)20 b(Simply)12 b(stated,)k(the)f (\014rst)g(mo)o(v)o(e)f(at)g(a)h(principal)e(v)n(ariation)h(no)q(de)0 423 y(m)o(ust)19 b(b)q(e)h(completely)f(ev)n(aluated)g(b)q(efore)i(the) f(subsequen)o(t)i(mo)o(v)o(es)c(can)i(b)q(e)g(handed)h(out)e(to)h (other)g(pro)q(cessors)i(and)0 485 y(ev)n(aluated)13 b(in)h(parallel.)i(P)o(arallelism)c(o)q(ccurs)j(only)e(at)g(the)h Fe(PV)g Fn(no)q(des,)g(and)f(the)h(nature)h(of)e(the)h(algorithm)d (ensures)16 b(that)0 548 y(an)10 b(accurate)i(searc)o(h)g(windo)o(w)e (is)g(determined)h(b)q(efore)g(allo)q(cating)e(w)o(ork)i(to)f(the)h (sla)o(v)o(es)g(in)f(parallel,)g(whic)o(h)g(reduces)j(searc)o(h)0 610 y(o)o(v)o(erhead.)18 b(Although)c(it)f(is)h(easy)g(to)g(con)o(trol) f(the)i(PV-Split)e(algorithm)e(since)k(only)e(one)h Fe(PV)f Fn(no)q(de)h(can)g(b)q(e)h(ev)n(aluated)e(in)0 672 y(parallel)h(at)g(a) h(giv)o(en)f(momen)o(t)e(in)i(time,)f(a)i(di\013eren)o(t)h(approac)o(h) e(is)h(needed)h(if)e(y)o(ou)g(ha)o(v)o(e)h(more)f(pro)q(cessors)j(than) d(mo)o(v)o(es)0 734 y(at)g(the)g(curren)o(t)i Fe(PV)d Fn(no)q(de.)62 797 y(Newb)q(orn's)k(UIDP)m(ABS)f(algorithm)d([17)o(])i (w)o(as)h(the)g(\014rst)g(attempt)f(to)h(async)o(hronously)g(start)g (the)g(next)h(lev)o(el)e(of)g(an)0 859 y(iterativ)o(ely)e(deep)q(ened)k (searc)o(h)e(instead)f(of)g(sync)o(hronizing)g(at)g(the)g(ro)q(ot)g(of) g(the)h(game-tree.)j(The)c(mo)o(v)o(es)f(from)f(the)j(ro)q(ot)0 921 y(p)q(osition)d(are)h(partitioned)f(among)f(the)i(pro)q(cessors,)i (and)d(the)i(pro)q(cessors)g(searc)o(h)g(their)f(o)o(wn)g(subset)h(of)e (the)h(mo)o(v)o(es)e(with)0 983 y(iterativ)o(e)k(deep)q(ening.)21 b(Eac)o(h)15 b(pro)q(cessor)h(is)f(giv)o(en)f(the)h(same)f(initial)e (windo)o(w,)i(but)h(some)e(of)h(the)i(pro)q(cessors)g(ma)o(y)d(ha)o(v)o (e)0 1046 y(c)o(hanged)g(their)h(windo)o(ws,)e(based)i(on)f(the)g (searc)o(h)i(results)f(of)e(their)i(mo)o(v)o(es.)i(The)e(UIDP)m(ABS)f (algorithm)d(then)k(com)o(bines)0 1108 y(the)f(results)h(once)g(a)e (predetermined)h(time)f(limit)e(has)j(b)q(een)h(reac)o(hed.)k(The)c (APHID)f(algorithm)d(uses)j(the)h(basic)f(concept)0 1170 y(of)g(ho)o(w)h(to)f(implemen)o(t)f(async)o(hronous)i(searc)o(h)h(from) d(UIDP)m(ABS,)i(as)g(w)o(e)g(shall)f(see)i(in)f(Section)g(3.)62 1232 y(The)f(Y)m(oung)f(Brothers)i(W)m(ait)c(\(YBW\))j(algorithm)d (extends)k(PV-Split)d(to)h(state)i(that)e(the)h(other)g(mo)o(v)o(es)e (\(the)i(\\y)o(oung)0 1295 y(brothers"\))19 b(can)e(b)q(e)h(searc)o (hed)h(in)e(parallel)f(only)g(if)h(the)h(\014rst)g(mo)o(v)o(e)e(of)g(a) h(no)q(de)h(has)g(b)q(een)g(completely)e(searc)o(hed)j(and)0 1357 y(has)d(not)g(caused)h(the)g Fm(\013\014)h Fn(windo)o(w)d(to)h(b)q (e)h(cut)f(o\013)g([5)o(].)24 b(This)16 b(is)g(alw)o(a)o(ys)f(true)i (at)f Fe(PV)f Fn(no)q(des,)i(and)f(is)g(generally)f(true)i(at)0 1419 y Fe(ALL)c Fn(no)q(des,)i(assuming)e(w)o(e)h(start)h(with)f(an)g (in\014nite)f(searc)o(h)j(windo)o(w)d(at)h(the)h(ro)q(ot)f(p)q (osition.)k(Th)o(us,)c(there)i(are)e(m)o(ultiple)0 1482 y(p)q(oten)o(tial)e(parallel)g(no)q(des)i(at)f(an)o(y)f(giv)o(en)g (time)g(when)h(searc)o(hing)h(the)f(tree.)19 b(Ho)o(w)o(ev)o(er,)13 b(the)h(searc)o(h)g(is)f(still)f(sync)o(hronized)0 1544 y(in)f(the)i(same)e(w)o(a)o(y)g(that)g(PV-Split)h(is)f(sync)o (hronized.)19 b(Un)o(til)11 b(a)g(searc)o(h)i(of)e(all)g(c)o(hildren)h (of)f(a)h(giv)o(en)f Fe(PV)g Fn(no)q(de)h(is)g(completed,)0 1606 y(the)i(other)h(c)o(hildren)f(of)f(the)i Fe(PV)e Fn(no)q(de's)h(paren)o(t)h(cannot)f(b)q(e)g(searc)o(hed.)62 1668 y(Although)i(the)i Fl(synchr)n(onization)g(overhe)n(ad)f Fn(in)f(YBW)h(is)g(a)f(lot)g(smaller)f(than)i(in)f(PV-Split,)h(w)o(ork) o(ers)g(still)f(searc)o(h)0 1731 y(for)e(a)h(pro)q(cessor)h(that)f(has) g(w)o(ork)g(to)f(do)h(\(according)g(to)f(the)i(YBW)e(criterion\))i(b)o (y)e(sending)h(a)g(message)f(to)h(a)f(pro)q(cessor)0 1793 y(at)f(random.)j(This)e(dynamic)d(load-balancing)h(metho)q(d,)g (\\w)o(ork-stealing")g([12)o(],)g(is)h(e\013ectiv)o(e)i(in)e(balancing) f(the)i(share)h(of)0 1855 y(w)o(ork)f(done)g(on)f(eac)o(h)i(pro)q (cessor,)g(but)f(p)q(erio)q(dically)f(imp)q(oses)g(a)h(hea)o(vy)g(comm) o(unicati)o(on)d(load.)62 1917 y(In)h(the)g(implemen)o(tatio)o(n)d(of)i Fj(Zugzw)l(ang)h Fn(presen)o(ted)i(in)d(F)m(eldmann's)e(thesis)k([5)o (],)e(a)g(distributed)i(transp)q(osition)e(table)0 1980 y(w)o(as)g(implemen)o(ted)e(with)j(message)f(passing)g(across)h(a)f (series)i(of)e(T)m(ransputers)i(to)e(impro)o(v)o(e)f(the)i(results)g (of)f(the)h(algorithm.)0 2042 y(On)j(a)g(system)f(with)h(a)f(lo)o(w)g (CPU)h(cycle)h(to)e(message)h(latency)g(ratio,)f(this)h(t)o(yp)q(e)g (of)f(distributed)i(transp)q(osition)e(table)h(is)0 2104 y(practical)f(and)f(is)h(useful)g(in)g(con)o(trolling)e(the)j(searc)o (h)g(o)o(v)o(erhead.)62 2166 y(Da)o(vid's)k Fm(\013\014)r Fk(\003)i Fn(framew)o(ork)e(uses)j(a)e(global)f(transp)q(osition)h (table)h(to)f(con)o(trol)g(where)i(the)f(pro)q(cessors)i(should)d(b)q (e)0 2229 y(searc)o(hing)g([4].)35 b(By)20 b(adding)f(a)h(\014eld)g(to) g(the)g(global)f(transp)q(osition)g(table)h(to)g(indicate)g(the)g(n)o (um)o(b)q(er)f(of)h(pro)q(cessors)0 2291 y(searc)o(hing)15 b(that)f(no)q(de,)g(eac)o(h)g(pro)q(cessor)i(can)e(pretend)i(it)d(is)h (searc)o(hing)h(the)f(tree)i(sequen)o(tially)m(,)c(and)i(mak)o(e)f (decisions)h(on)0 2353 y(where)h(to)f(searc)o(h)h(based)f(on)g(the)g(n) o(um)o(b)q(er)f(of)g(pro)q(cessors)j(searc)o(hing)e(the)h(c)o(hildren)f (of)f(the)h(no)q(de.)19 b(When)14 b(an)o(y)f(pro)q(cessor)0 2416 y(generates)j(a)e(v)n(alue)g(for)f(the)i(ro)q(ot)g(p)q(osition,)e (the)i(searc)o(h)g(is)f(\014nished.)20 b(Unfortunately)m(,)13 b(Da)o(vid's)g(metho)q(d)h(of)f(con)o(trolling)0 2478 y(where)h(the)f(pro)q(cessors)i(should)e(b)q(e)h(searc)o(hing)f(w)o(as) g(ine\016cien)o(t,)f(and)h(the)g(sc)o(heme)g(w)o(as)g(hamp)q(ered)g(b)o (y)f(the)i(use)g(of)e(half)g(of)0 2540 y(the)h(T)m(ransputers)g(as)f (transp)q(osition)g(table)g(storage)g(units,)g(limiting)d(the)j(sp)q (eedup)i(rep)q(orted)f(to)f(6.5)f(on)h(16)f(T)m(ransputers.)0 2602 y(Regrettably)m(,)i(no)h(w)o(ork)f(is)h(rep)q(orted)h(that)f (addresses)i(these)g(shortcomings.)62 2665 y(W)m(eill)h([24)o(])g (recognized)j(that)e(the)h(YBW)f(criterion)h(could)f(b)q(e)h(used)g(in) f(conjunction)g(with)g(the)h Fm(\013\014)r Fk(\003)f Fn(framew)o(ork.)965 2828 y(3)p eop %%Page: 4 4 4 3 bop 0 195 a Fn(W)m(eill)14 b(sho)o(w)o(ed)h(the)h(com)o(bination,)d (ABD)o(AD)o(A,)h(yields)i(comparable)e(p)q(erformance)h(to)g(a)g(YBW)g (implemen)o(tation)d(on)j(a)0 257 y(CM-5.)k(On)14 b(16)g(pro)q (cessors,)i(ABD)o(AD)o(A)e(yielded)g(an)g(10-fold)f(sp)q(eedup)j(for)e (a)g(c)o(hess)h(program,)d(while)i(YBW)h(generated)0 320 y(a)f(sp)q(eedup)h(of)e(just)h(under)h(8.)62 382 y(Unfortunately)m(,)j(neither)g(of)f(these)i(sc)o(heduling)f(metho)q (ds)f(deal)g(adequately)h(with)f(arc)o(hitectures)j(that)d(ha)o(v)o(e)h (high)0 444 y(CPU)e(cycle/message)f(latency)h(ratios,)f(suc)o(h)h(as)g (a)f(net)o(w)o(ork)g(of)g(w)o(orkstations.)23 b(Using)15 b(YBW)g(on)g(a)h(system)f(with)g(only)0 506 y(transp)q(osition)i (tables)g(lo)q(cal)g(to)g(eac)o(h)g(pro)q(cess)i(will)d(yield)g(large)h (searc)o(h)i(o)o(v)o(erheads,)f(since)g(there)g(is)f(no)g(guaran)o(tee) h(of)0 569 y(where)12 b(a)f(giv)o(en)f(no)q(de)i(will)d(end)j(up)f (when)g(w)o(e)g(use)h(the)g(c)o(haotic)f(w)o(ork-stealing)f(sc)o (heduler)i(in)f(com)o(bination)d(with)j(iterativ)o(e)0 631 y(deep)q(ening.)18 b(Using)12 b(ABD)o(AD)o(A)g(is)g(infeasible)g (since)g(the)h(system)f(requires)h(a)f(shared)h(transp)q(osition)f (table,)g(whic)o(h)g(w)o(ould)0 693 y(b)q(e)j(extremely)e(slo)o(w)g(on) h(a)g(parallel)e(arc)o(hitecture)k(with)e(a)f(high)g(CPU)i (cycle/message)f(latency)g(ratio.)0 831 y Fo(3)69 b(The)23 b(APHID)f(Algorithm)0 934 y Fn(Y)m(oung)12 b(Brothers)i(W)m(ait)d(and)h (other)h(algorithms)e(su\013er)i(from)e(three)j(serious)f(problems.)k (First,)12 b(the)i(n)o(umerous)d(sync)o(hro-)0 996 y(nization)k(p)q (oin)o(ts)h(result)h(in)f(idle)f(time.)24 b(This)16 b(suggests)h(that)f (a)g(new)g(algorithm)e(m)o(ust)h(striv)o(e)h(to)g(reduce)i(or)e (eliminate)0 1058 y(sync)o(hronization)c(altogether.)18 b(Second,)13 b(the)g(c)o(haotic)g(nature)g(of)f(a)g(w)o(ork-stealing)f (sc)o(heduler)j(requires)g(algorithms)c(suc)o(h)0 1121 y(as)15 b(YBW)g(and)g(Jam)o(b)q(oree)f(to)h(use)h(a)e(shared)i(transp)q (osition)f(table)g(to)f(ac)o(hiev)o(e)i(reasonable)f(p)q(erformance.)21 b(Algorithms)0 1183 y(based)13 b(on)f(the)i Fm(\013\014)r Fk(\003)e Fn(framew)o(ork)f(require)j(a)e(shared)h(transp)q(osition)g (table)f(to)g(function.)18 b(Third,)12 b(the)h(program)e(ma)o(y)f (initi-)0 1245 y(ate)i(parallelism)e(at)h(no)q(des)i(whic)o(h)f(are)g (b)q(etter)i(done)e(sequen)o(tially)m(.)17 b(F)m(or)11 b(example,)g(ha)o(ving)g(searc)o(hed)i(the)g(\014rst)g(branc)o(h)f(at)0 1307 y(a)i(no)q(de)h(and)f(not)g(ac)o(hiev)o(ed)h(a)f(cut-o\013,)h(Y)m (oung)e(Brothers)j(W)m(ait)d(\(in)i(its)f(simplest)f(form\))g(p)q (ermits)h(all)f(of)h(the)h(remaining)0 1370 y(branc)o(hes)f(to)f(b)q(e) g(searc)o(hed)i(in)d(parallel.)17 b(Ho)o(w)o(ev)o(er,)c(if)f(the)h (second)h(branc)o(h)f(causes)h(a)f(cuto\013,)g(then)h(all)d(the)j (parallel)d(w)o(ork)0 1432 y(done)18 b(on)f(the)h(third)g(\(and)f (subsequen)o(t\))j(branc)o(hes)e(has)g(b)q(een)h(w)o(asted.)29 b(This)18 b(suggests)g(parallelism)d(should)j(only)e(b)q(e)0 1494 y(initiated)d(at)h(no)q(des)g(where)i(there)f(is)e(a)h(v)o(ery)g (high)f(probabilit)o(y)g(that)h(all)e(branc)o(hes)k(m)o(ust)c(b)q(e)j (considered.)62 1557 y(This)f(section)h(in)o(tro)q(duces)g(the)f(Async) o(hronous)h(P)o(arallel)e(Hierarc)o(hical)h(Iterativ)o(e)g(Deep)q (ening)h(\(APHID\))f(game-tree)0 1619 y(searc)o(hing)i(algorithm.)21 b(APHID)15 b(has)h(b)q(een)h(designed)f(to)g(address)h(the)f(ab)q(o)o (v)o(e)f(three)i(issues.)25 b(The)16 b(algorithm)d(is)i(asyn-)0 1681 y(c)o(hronous)g(in)f(nature;)h(it)e(remo)o(v)o(es)h(all)f(sync)o (hronization)i(p)q(oin)o(ts)f(from)e(the)j Fm(\013\014)i Fn(searc)o(h)e(and)g(from)d(iterativ)o(e)i(deep)q(ening.)0 1743 y(Also,)f(parallelism)e(is)j(only)f(applied)g(at)h(no)q(des)g (that)g(ha)o(v)o(e)g(a)f(high)g(probabilit)o(y)g(of)g(needing)h (parallelism.)h(The)f(top)g(plies)0 1806 y(of)k(a)g(game-tree)g(\(near) g(the)h(ro)q(ot\))g(v)n(ary)f(infrequen)o(tly)g(b)q(et)o(w)o(een)h (steps)h(of)e(iterativ)o(e)g(deep)q(ening)h([19)o(].)31 b(This)18 b(relativ)o(e)0 1868 y(in)o(v)n(ariance)13 b(of)g(the)i(top)f(p)q(ortion)f(of)h(the)g(game-tree)g(is)f(exploited)h (b)o(y)g(the)g(APHID)g(algorithm.)62 1930 y(In)e(its)f(simplest)g (form,)f(APHID)i(can)g(b)q(e)g(view)o(ed)g(as)f(a)h(master/sla)o(v)o(e) e(program)g(although,)h(as)h(discussed)h(later,)e(it)h(can)0 1992 y(b)q(e)k(generalized)g(to)g(a)f(hierarc)o(hical)g(pro)q(cessor)i (tree.)24 b(F)m(or)15 b(a)g(depth)i Fm(d)e Fn(searc)o(h,)h(the)g (master)f(is)g(resp)q(onsible)i(for)e(the)h(top)0 2055 y Fm(d)22 2040 y Fd(0)47 2055 y Fn(ply)d(of)g(the)i(tree,)f(and)g(the)g (remaining)e Fm(d)d Fk(\000)g Fm(d)770 2040 y Fd(0)795 2055 y Fn(ply)k(are)h(searc)o(hed)i(in)d(parallel)f(b)o(y)i(the)g(sla)o (v)o(es.)k(Figure)c(1)g(sho)o(ws)g(where)0 2117 y(parallel)f (activities)g(o)q(ccur)j(in)d(APHID)h(and)g(YBW.)g(Eac)o(h)g(lo)q (cation)f(mark)o(ed)g(with)g(an)h Fe(x)g Fn(sho)o(ws)g(where)h(the)g (parallelism)0 2179 y(t)o(ypically)10 b(tak)o(es)h(place.)17 b(Although)11 b(more)f(w)o(ork)h(could)g(b)q(e)g(generated)i(in)d(YBW,) h(eac)o(h)h Fe(x)e Fn(represen)o(ts)k(a)d(p)q(oten)o(tially)f(costly)0 2241 y(sync)o(hronization)16 b(p)q(oin)o(t.)25 b(The)17 b(parallelism)c(is)j(more)g(constrained)h(in)f(APHID)g(and,)g(hence,)i (is)e(more)g(lik)o(ely)f(to)h(su\013er)0 2304 y(from)c(load)h(im)o (balances)f(than)i(other)h(dynamic)d(sc)o(heduling)i(routines)g(\(suc)o (h)h(as)f(YBW,)g(Jam)o(b)q(oree,)f(or)h Fm(\013\014)r Fk(\003)p Fn(\).)0 2420 y Fc(3.1)56 b(Op)r(eration)17 b(of)i(the)f(Master)h(in)f(APHID)0 2509 y Fn(The)d(master)e(is)h(resp)q (onsible)i(for)d(searc)o(hing)i(the)g(top)f Fm(d)892 2494 y Fd(0)918 2509 y Fn(ply)f(of)h(the)h(tree.)20 b(It)14 b(rep)q(eatedly)h(tra)o(v)o(erses)h(this)f(tree)g(un)o(til)e(the)0 2571 y(correct)g(minim)o(ax)8 b(v)n(alue)j(has)g(b)q(een)i(determined.) k(The)12 b(master)f(is)g(executing)h(a)f(normal)e Fm(\013\014)14 b Fn(searc)o(h,)e(with)f(the)h(exception)0 2634 y(that)j(APHID)f (enforces)i(an)f(arti\014cial)e(searc)o(h)j(horizon)e(at)h Fm(d)973 2618 y Fd(0)999 2634 y Fn(ply)f(from)e(the)k(ro)q(ot.)k(Eac)o (h)15 b(leaf)e(no)q(de)i(in)g(the)g(master's)f Fm(d)1939 2618 y Fd(0)965 2828 y Fn(4)p eop %%Page: 5 5 5 4 bop 444 154 a 16766447 9472573 9669918 31246336 22892052 38679674 startTexFig 444 154 a %%BeginDocument: draw1b.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 373 608 ] concat %I [ (YBW) ] Text End End %I eop showpage end %%EndDocument endTexFig 334 845 a Fn(Figure)14 b(1:)k(Lo)q(cation)13 b(of)h(P)o(arallelism)d (in)i(T)o(ypical)g(APHID)h(and)g(YBW)g(Searc)o(h)0 978 y(ply)e(game-tree)f(is)h(b)q(eing)g(async)o(hronously)h(searc)o(hed)g (b)o(y)f(the)h(sla)o(v)o(es.)18 b(Before)13 b(describing)f(ho)o(w)g (the)h(master)e(kno)o(ws)h(when)0 1040 y(the)i Fm(d)g Fn(ply)f(searc)o(h)i(is)f(complete,)f(w)o(e)h(m)o(ust)f(\014rst)h (describ)q(e)i(ho)o(w)e(the)g(master)f(searc)o(hes)j(the)f Fm(d)1491 1025 y Fd(0)1516 1040 y Fn(ply)e(tree.)62 1102 y(When)k(the)g(master)f(reac)o(hes)i(a)f(leaf)f(of)f(the)j Fm(d)810 1087 y Fd(0)837 1102 y Fn(ply)e(tree,)i(it)f(uses)g(a)g (reliable)f(or)g(appro)o(ximate)f(v)n(alue)h(for)g(the)h(leaf,)0 1164 y(dep)q(ending)g(on)f(the)h(information)d(a)o(v)n(ailable.)24 b(If)16 b(a)g Fm(d)10 b Fk(\000)i Fm(d)938 1149 y Fd(0)965 1164 y Fn(ply)k(searc)o(h)i(result)f(is)g(a)o(v)n(ailable)d(from)g(the) k(sla)o(v)o(e,)e(that)g(will)0 1227 y(b)q(e)g(used.)22 b(\(In)15 b(the)h(curren)o(t)g(implemen)o(tation,)11 b(w)o(e)16 b(do)e(not)h(use)h(deep)q(er)h(ply)e(v)n(alues,)f(ev)o(en)i (if)e(they)h(are)h(a)o(v)n(ailable.)j(This)0 1289 y(will)12 b(b)q(e)h(discussed)i(in)e(Section)g(4.\))18 b(Ho)o(w)o(ev)o(er,)13 b(if)f(the)i Fm(d)7 b Fk(\000)h Fm(d)949 1274 y Fd(0)973 1289 y Fn(ply)k(result)i(is)f(not)g(a)o(v)n(ailable,)d(then)k(the)g (algorithm)c(uses)k(the)0 1351 y(\\b)q(est)h(a)o(v)n(ailable")d(ply)h (result)i(that)g(had)e(b)q(een)j(returned)g(b)o(y)e(the)g(sla)o(v)o(e)g (to)g(generate)i(a)d(guessed)j(minim)o(ax)11 b(v)n(alue)1826 1336 y Fi(2)1844 1351 y Fn(.)19 b(An)o(y)0 1413 y(no)q(de)14 b(where)h(w)o(e)f(are)h(forced)f(to)g(guess)h(are)f(mark)o(ed)f(as)h Fl(unc)n(ertain)p Fn(.)62 1476 y(As)g(v)n(alues)g(get)g(bac)o(k)o(ed)g (up)f(the)h(tree,)h(the)f(master)f(main)o(tains)e(a)j(coun)o(t)g(of)f (ho)o(w)g(man)o(y)f(uncertain)i(no)q(des)g(ha)o(v)o(e)g(b)q(een)0 1538 y(visited)d(in)f(a)h(pass)h(of)e(the)i(tree.)18 b(As)11 b(long)g(as)g(the)g(score)h(at)f(an)o(y)g(of)f(the)i(lea)o(v)o (es)f(is)g(uncertain,)h(the)f(master)g(m)o(ust)f(do)h(another)0 1600 y(pass)j(of)g(the)g(tree.)19 b(Once)c(the)g(master)e(has)h(a)f (reliable)h(v)n(alue)f(for)g(all)g(the)h(lea)o(v)o(es)g(in)g(its)g Fm(d)1423 1585 y Fd(0)1448 1600 y Fn(ply)f(tree,)h(the)h(searc)o(h)g (of)e(the)h Fm(d)0 1662 y Fn(ply)h(tree)h(is)f(complete.)22 b(The)16 b(con)o(trolling)d(program)h(w)o(ould)h(then)h(pro)q(ceed)g (to)f(the)h(next)g(iteration)f(b)o(y)g(incremen)o(ting)f Fm(d)0 1725 y Fn(and)g(asking)f(the)h(master)g(to)g(searc)o(h)h(the)f (tree)h(again.)62 1787 y(Note)e(that)f(this)g(de\014nition)f(of)h(the)g (master)g(solv)o(es)g(one)g(of)g(the)g(problems)f(that)h(some)f (algorithms)f(ha)o(v)o(e)i(with)g(resp)q(ect)0 1849 y(to)k (initializing)d(parallelism)g(to)q(o)j(quic)o(kly)f(at)g(a)h(p)q(oten)o (tial)f Fe(CUT)g Fn(no)q(de.)24 b(By)17 b(using)e(the)i(guessed)g (scores)g(when)g(accurate)0 1912 y(information)9 b(is)j(not)f(a)o(v)n (ailable,)f(the)i(APHID)g(algorithm)e(automatically)e(determines)k(if)f (a)h(subsequen)o(t)i(c)o(hild)d(is)h(lik)o(ely)e(to)0 1974 y(generate)15 b(a)f(cuto\013)g(at)g(a)f(failed)g Fe(CUT)g Fn(no)q(de.)19 b(If)13 b(it)h(seems)g(lik)o(ely)e(that)i(a)g (c)o(hild)f(will)f(generate)j(a)f(cuto\013)g(based)h(on)e(guessed)0 2036 y(v)n(alues,)e(the)g(c)o(hildren)g(of)f(the)h(failed)e Fe(CUT)h Fn(no)q(de)h(are)g(ev)n(aluated)g(sequen)o(tially)m(.)16 b(If)10 b(it)g(seems)h(unlik)o(ely)e(that)i(the)g(no)q(de)g(will)e(b)q (e)0 2098 y(cut)j(o\013)g(due)h(to)e(lo)o(w)g(minima)o(x)e(v)n(alues,)j (the)g(searc)o(h)h(w)o(ould)e(con)o(tin)o(ue)h(for)g(a)f(promising)f (no)q(de)i(at)g(that)g(branc)o(h)g(in)g(parallel.)0 2161 y(This)j(is)g(all)f(handled)i(automatically)c(b)o(y)j(the)h Fm(\013\014)i Fn(routine.)k(The)16 b(handling)e(of)h(a)g(h)o(yp)q (othesized)h Fe(CUT)f Fn(no)q(de)h(is)f(stronger)0 2223 y(than)g(the)g(equiv)n(alen)o(t)f(scenario)i(in)e(the)h(YBW)g (algorithm,)d(whic)o(h)j(ignores)g(previous)g(score)h(information)c(a)o (v)n(ailable)g(for)0 2285 y(some)f(branc)o(hes)i(of)f(the)h(failed)e Fe(CUT)g Fn(no)q(de.)18 b(In)12 b(the)h(full)d(v)o(ersion)j(of)e(YBW,)h (application-dep)q(enden)o(t)g(information)d(is)j(used)0 2347 y(to)i(do)f(what)h(APHID)g(handles)g(automatically)d(with)j(the)g Fm(\013\014)i Fn(searc)o(h)f(windo)o(w.)62 2410 y(The)g(sla)o(v)o(es)g (are)g(resp)q(onsible)g(for)f(setting)h(their)g(o)o(wn)f(searc)o(h)i (windo)o(ws,)e(based)h(on)f(information)e(from)h(the)i(master.)0 2472 y(Sometimes,)10 b(the)j(information)d(returned)k(b)o(y)e(the)h (sla)o(v)o(e)f(ma)o(y)f(not)h(b)q(e)h(useful)g(to)f(the)h(master.)k(F)m (or)12 b(example,)f(a)i(sla)o(v)o(e)f(can)0 2534 y(tell)h(the)i(master) e(that)h(the)g(score)h(of)f(a)f(giv)o(en)g(no)q(de)i(is)e(less)i(than)f (30,)e(but)i(the)h(master)e(ma)o(y)f(w)o(an)o(t)h(to)h(kno)o(w)f(if)g (the)i(score)p 0 2569 780 2 v 46 2596 a Fh(2)64 2607 y Fg(Man)o(y)d(game-tree)f(searc)o(h)h(programs)e(exhibit)i(an)g (e\013ect)g(based)g(on)h(the)g(parit)o(y)e(of)i(the)g(searc)o(h)f (depth)f(\(o)q(dd)h(or)h(ev)o(en)f(n)o(um)o(b)q(er)g(of)g(ply\).)0 2647 y(Scores)d(are)g(stable)g(when)h(y)o(ou)f(lo)q(ok)h(at)f(results)g (from)g(the)h(o)q(dd)f(plies)g(only)m(,)h(or)g(ev)o(en)f(plies)g(only)m (,)g(but)h(are)f(sometimes)f(unstable)g(when)i(y)o(ou)f(mix)0 2686 y(the)i(t)o(w)o(o.)k(Th)o(us,)c(w)o(e)h(use)f(the)g(largest)f(ply) h(v)n(alue)f(with)h(the)g(same)f(parit)o(y)m(,)g(instead)g(of)h(alw)o (a)o(ys)g(using)f(the)h(largest)f(ply)h(v)n(alue)f(a)o(v)n(ailable.)965 2828 y Fn(5)p eop %%Page: 6 6 6 5 bop 165 154 a 25575945 23681433 8420065 17234821 28417720 35653713 startTexFig 165 154 a %%BeginDocument: draw2.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 488 1745 a Fn(Figure)14 b(2:)k(A)c(Snapshot)g(of)f(APHID)i(Searc)o(h)f (In)g(Op)q(eration)0 1878 y(is)f(in)g(b)q(et)o(w)o(een)i(-5)e(and)g(5.) 18 b(In)13 b(this)h(case,)g(a)f(\\bad)g(b)q(ound")h(searc)o(h)g(is)f (generated,)i(and)e(the)h(searc)o(h)h(windo)o(w)d(parameters,)0 1940 y Fm(\013)j Fn(and)f Fm(\014)r Fn(,)h(m)o(ust)f(b)q(e)i(comm)o (unicated)c(to)j(the)h(sla)o(v)o(e)e(pro)q(cessor.)23 b(An)o(y)15 b(no)q(des)g(where)h(w)o(e)f(are)h(w)o(aiting)d(for)i (\\bad)f(b)q(ound")0 2002 y(information)f(are)k(considered)g(as)f (uncertain)h(b)o(y)f(the)g(master,)g(ev)o(en)h(though)f(w)o(e)g(ha)o(v) o(e)g(a)g(score)h(b)q(ound)f(for)g(the)h Fm(d)10 b Fk(\000)h Fm(d)1939 1987 y Fd(0)0 2064 y Fn(ply)k(searc)o(h.)25 b(Ev)o(en)o(tually)m(,)14 b(the)j(sla)o(v)o(e)e(will)f(return)j(up)q (dated)f(information)d(that)j(is)f(consisten)o(t)i(with)f(b)q(oth)g (the)g(original)0 2127 y(information)11 b(and)j(the)g(searc)o(h)h (windo)o(w)e(requested)824 2112 y Fi(3)845 2127 y Fn(.)0 2243 y Fc(3.2)56 b(The)18 b(APHID)h(T)-5 b(able)0 2332 y Fn(If)15 b(a)f(leaf)h(no)q(de)g(is)g(visited)g(b)o(y)g(the)g(master)g (for)g(the)g(\014rst)h(time,)d(it)i(is)g(statically)f(allo)q(cated)h (to)f(a)h(sla)o(v)o(e)g(pro)q(cessor.)23 b(This)0 2394 y(information)14 b(is)j(recorded)h(in)f(a)f(table,)i(the)f Fl(APHID)h(table)p Fn(,)f(that)g(is)g(shared)h(b)o(y)e(all)g(pro)q (cessors.)29 b(Figure)17 b(2)g(sho)o(ws)g(an)0 2456 y(example)c(of)g (ho)o(w)g(the)i(APHID)f(table)g(w)o(ould)f(b)q(e)h(organized)g(at)g(a)f (giv)o(en)h(p)q(oin)o(t)f(in)h(time.)62 2519 y(The)h(APHID)f(table)g (is)g(partitioned)g(in)o(to)g(t)o(w)o(o)f(parts:)20 b(one)14 b(whic)o(h)g(only)g(the)g(master)g(can)g(write)h(to,)f(and)g(one)g (whic)o(h)p 0 2553 780 2 v 46 2580 a Fh(3)64 2592 y Fg(It)f(ma)o(y)g (happ)q(en)f(that)h(the)g(original)f(searc)o(h)g(and)h(the)h(\\bad)e(b) q(ound")g(searc)o(h)h(are)g(inconsisten)o(t)e(with)j(one)f(another,)f (through)g(the)h(use)0 2631 y(of)h(searc)o(h)e(extensions)f(that)i(ma)o (y)g(or)h(ma)o(y)f(not)g(b)q(e)g(triggered)f(based)g(on)i(the)f(searc)o (h)g(windo)o(w)g(used.)22 b(In)13 b(this)h(case,)f(the)g(searc)o(h)g (explicitly)0 2671 y(requested)c(b)o(y)i(the)g(master)f(o)o(v)o (errides)f(the)i(informatio)o(n)e(that)h(had)h(b)q(een)f(previously)f (stored.)965 2828 y Fn(6)p eop %%Page: 7 7 7 6 bop 0 195 a Fn(only)14 b(the)h(sla)o(v)o(e)g(that)f(has)h(b)q(een)h (assigned)f(that)g(piece)h(of)e(w)o(ork)g(can)h(write)g(to.)21 b(An)o(y)14 b(attempt)g(to)h(write)g(in)o(to)f(the)h(table)0 257 y(generates)k(a)e(message)g(that)g(informs)f(the)i(sla)o(v)o(e)f (or)g(the)h(master)f(pro)q(cess)i(of)e(the)h(up)q(date)g(to)f(the)h (information.)26 b(The)0 320 y(master)13 b(and)f(sla)o(v)o(e)h(only)f (read)i(their)f(lo)q(cal)f(copies)i(of)e(the)i(information;)c(there)k (are)f(no)g(explicit)g(messages)g(sen)o(t)h(b)q(et)o(w)o(een)0 382 y(the)g(master)g(and)g(the)g(sla)o(v)o(e)g(asking)f(for)g (information.)62 444 y(The)g(master's)f(half)f(of)h(the)h(table)f(is)h (illustrated)f(ab)q(o)o(v)o(e)g(the)h(dotted)g(line)f(in)g(Figure)g(2.) 17 b(F)m(or)12 b(eac)o(h)h(leaf)f(that)g(has)h(b)q(een)0 506 y(visited)h(b)o(y)f(the)h(master,)f(there)i(is)f(an)f(en)o(try)i (in)e(the)h(APHID)g(table.)k(Information)11 b(main)o(tained)h(on)h(the) i(lea)o(v)o(es)e(includes)0 569 y(the)g(mo)o(v)o(es)e(required)j(to)e (generate)i(the)f(leaf)f(p)q(ositions)g(from)f(the)i(ro)q(ot)g Fe(R)p Fn(,)f(the)h(appro)o(ximate)e(lo)q(cation)g(of)h(the)h(leaf)f (in)g(the)0 631 y(tree)k(\(whic)o(h)e(is)g(used)h(b)o(y)g(the)f(sla)o (v)o(e)g(to)h(prioritize)f(w)o(ork\),)g(whether)h(this)g(leaf)f(w)o(as) g(touc)o(hed)h(on)f(the)h(last)f(pass)h(that)f(the)0 693 y(master)f(executed,)j(and)d(the)i(n)o(um)o(b)q(er)e(of)g(the)i (sla)o(v)o(e)e(that)h(the)h(leaf)e(w)o(as)h(allo)q(cated)f(to.)62 756 y(In)h(our)f(example,)f(w)o(e)i(can)g(see)g(that)g(the)g(same)f(n)o (um)o(b)q(er)f(of)h(lea)o(v)o(es)h(ha)o(v)o(e)f(b)q(een)i(allo)q(cated) e(to)g(eac)o(h)h(sla)o(v)o(e.)k(Note)c(that)0 818 y(there)i(is)f(an)g (additional)f(leaf,)g(8,)h(that)g(is)g(not)g(represen)o(ted)j(in)c(the) i(master's)f Fm(d)1286 803 y Fd(0)1312 818 y Fn(ply)f(searc)o(h)j (tree.)23 b(This)15 b(leaf)f(no)q(de)i(has)0 880 y(b)q(een)f(visited)g (on)f(a)g(previous)h(pass)g(of)e(the)i Fm(d)723 865 y Fd(0)749 880 y Fn(ply)f(searc)o(h)h(tree,)g(and)g(w)o(as)f(not)g(touc)o (hed)h(on)f(the)h(latest)g(pass.)20 b(Ho)o(w)o(ev)o(er,)0 942 y(the)14 b(information)c(that)k(the)g(sla)o(v)o(e)f(has)g (generated)i(ma)o(y)c(b)q(e)j(needed)h(in)e(a)g(later)g(pass)h(of)f (the)h(tree)g(and)f(is)h(not)f(deleted)h(b)o(y)0 1005 y(the)g(master.)k(Lea)o(v)o(es)c(are)g(initially)e(allo)q(cated)h(to)h (the)g(sla)o(v)o(es)g(in)f(a)h(round-robin)f(manner,)f(and)i(ma)o(y)e (mo)o(v)o(e)g(due)i(to)g(load)0 1067 y(balancing)g(\(as)h(describ)q(ed) i(in)e(Section)h(3.4\).)k(Although)15 b(there)i(ma)o(y)c(b)q(e)i(b)q (etter)i(metho)q(ds)e(of)f(allo)q(cating)g(lea)o(v)o(es,)h(it)g(has)0 1129 y(b)q(een)f(found)f(that)h(this)f(is)g(a)g(reasonable)h(metho)q(d) f(of)f(initially)f(balancing)h(the)i(load)f(on)g(a)g(small)e(n)o(um)o (b)q(er)h(of)h(pro)q(cessors.)62 1191 y(The)j(sla)o(v)o(e's)e(part)h (of)g(the)g(table,)g(illustrated)f(b)o(y)h(the)h(area)f(b)q(elo)o(w)f (the)i(dotted)g(line,)e(con)o(tains)h(information)d(on)i(the)0 1254 y(result)f(of)e(searc)o(hing)i(the)g(p)q(osition)e(to)h(v)n (arious)f(depths)j(of)d(searc)o(h.)19 b(The)12 b(\\b)q(est")h (information)c(and)j(the)h(ply)e(to)h(whic)o(h)g(the)0 1316 y(leaf)j(w)o(as)g(examined)f(is)i(giv)o(en)f(underneath)h(eac)o(h) g(leaf)f(no)q(de)h(in)f(the)h(tree.)24 b(F)m(or)15 b(leaf)g(1,)g(the)h (score)h(returned)g(is)e(-1)g(with)0 1378 y(a)f(searc)o(h)h(depth)f(of) g(4.)j(Leaf)d(3)g(illustrates)g(that)g(the)g(score)h(information)c (returned)16 b(b)o(y)e(the)g(sla)o(v)o(e)g(is)f(not)h(necessarily)h(an) 0 1440 y(exact)h(n)o(um)o(b)q(er.)k(The)15 b(sla)o(v)o(es)g(main)o (tain)d(an)j(upp)q(er)h(b)q(ound)e(and)h(a)g(lo)o(w)o(er)f(b)q(ound)h (on)g(the)g(score)h(for)f(eac)o(h)g(ply)g(of)f(searc)o(h)0 1503 y(depth.)19 b(The)14 b(score)h(is)f(kno)o(wn)f(to)h(b)q(e)h(exact) f(when)h(the)f(upp)q(er)h(and)f(lo)o(w)o(er)f(b)q(ounds)i(are)f(the)g (same.)0 1618 y Fc(3.3)56 b(Op)r(eration)17 b(of)i(Sla)n(v)n(e)g(in)f (APHID)0 1707 y Fn(A)c(sla)o(v)o(e)f(pro)q(cess)i(essen)o(tially)e (executes)j(the)e(same)e(co)q(de)j(that)e(a)g(sequen)o(tial)h Fm(\013\014)i Fn(searc)o(her)f(w)o(ould.)i(The)d(pro)q(cess)h(simply)0 1770 y(rep)q(eats)g(the)g(follo)o(wing)c(three)k(steps)h(un)o(til)d (the)h(master)g(tells)f(it)h(that)g(the)g(searc)o(h)h(is)f(complete:)51 1862 y(1.)20 b(Lo)q(ok)13 b(in)h(its)f(p)q(ortion)h(of)f(its)h(lo)q (cal)f(cop)o(y)h(of)f(the)i(APHID)f(table,)f(and)h(\014nd)g(the)g (highest)h(priorit)o(y)e(no)q(de)h(to)g(searc)o(h.)51 1956 y(2.)20 b(Execute)15 b(the)g(searc)o(h.)51 2051 y(3.)20 b(Rep)q(ort)14 b(the)g(result)h(bac)o(k)f(to)g(the)g(master)g (\(getting)f(an)h(up)q(date)h(to)e(its)h(APHID)g(table)g(in)g (return\).)62 2143 y(The)19 b(w)o(ork)e(selection)i(criterion)f(is)g (primarily)d(based)k(on)f(the)g(depth)h(to)f(whic)o(h)f(the)i(sla)o(v)o (e)f(has)g(already)f(searc)o(hed)0 2205 y(a)h(no)q(de.)31 b(As)18 b(w)o(e)g(can)h(see)g(for)e(Sla)o(v)o(e)h(1)g(in)f(Figure)h(2,) h(lea)o(v)o(es)f(1,)g(4)g(and)g(7)f(ha)o(v)o(e)h(b)q(een)h(searc)o(hed) h(to)e(4,)g(3)g(and)g(0)f(ply)m(,)0 2268 y(resp)q(ectiv)o(ely)m(.)i(Th) o(us,)14 b(Sla)o(v)o(e)f(1)g(is)h(attempting)e(to)i(searc)o(h)h(leaf)e (7)h(to)f(1)h(ply)m(,)e(and)i(will)e(con)o(tin)o(ue)i(to)g(searc)o(h)h (leaf)e(7)h(up)g(to)f(3)0 2330 y(ply)g(b)o(y)h(using)g(iterativ)o(e)f (deep)q(ening,)i(if)e(no)h(new)g(w)o(ork)f(arriv)o(es)i(from)d(the)i (master.)62 2392 y(The)c(secondary)h(criterion)f(is)g(the)g(lo)q (cation)f(of)g(the)h(no)q(de)h(within)d(the)j(master's)e(game-tree.)16 b(This)10 b(secondary)h(criterion)0 2455 y(is)f(necessary)j(since)e(it) f(is)g(usually)g(b)q(ene\014cial)h(to)f(generate)i(the)f(results)h(in)e (a)g(left)g(to)g(righ)o(t)g(order)h(for)g(the)g(master.)16 b(Children)0 2517 y(of)e(no)q(des)h(are)g(usually)f(considered)h(in)g (a)f(b)q(est-to-w)o(orst)h(ordering,)f(implying)e(that)i(the)h (left-most)e(branc)o(hes)j(at)e(a)h(no)q(de)0 2579 y(ha)o(v)o(e)g(a)g (higher)g(probabilit)o(y)e(of)i(b)q(eing)g(useful)g(than)g(the)h(righ)o (t-most)d(ones.)22 b(F)m(or)15 b(Sla)o(v)o(e)f(2)h(in)g(Figure)g(2,)f (lea)o(v)o(es)i(2)e(and)h(5)0 2641 y(ha)o(v)o(e)f(b)q(oth)h(b)q(een)g (searc)o(hed)h(to)e(5)g(ply)m(,)f(but)h(leaf)g(2)g(is)g(b)q(eing)h (searc)o(hed)g(in)f(the)h(sla)o(v)o(e)f(to)g(6)g(ply)g(since)h(it)f(is) g(further)h(left)f(in)0 2704 y(the)g(tree)i(than)d(leaf)h(5.)965 2828 y(7)p eop %%Page: 8 8 8 7 bop 62 195 a Fn(A)14 b(no)q(de)h(that)f(has)g(a)f(priorit)o(y)h(of) f(zero)i(\(b)q(ecause)h(it)d(is)h(no)g(longer)f(part)i(of)e(the)h (master's)g(tree\))h(will)e(not)h(b)q(e)g(selected)0 257 y(for)d(further)i(searc)o(h.)18 b(F)m(or)11 b(Sla)o(v)o(e)g(3,)h(w) o(e)g(notice)g(that)f(Leaf)h(8)f(w)o(ould)g(b)q(e)h(searc)o(hed)i(if)c (it)i(had)f(b)q(een)i(touc)o(hed)f(b)o(y)g(the)g(master.)0 320 y(Leaf)i(8)f(is)h(ignored)g(b)o(y)f(the)i(sc)o(heduling)f (algorithm)d(b)q(ecause)16 b(it)d(is)h(not)g(curren)o(tly)h(part)f(of)f (the)h(master's)g(tree.)62 382 y(Before)19 b(a)f(searc)o(h)h(can)f(b)q (e)h(executed,)h(an)e Fm(\013\014)i Fn(searc)o(h)f(windo)o(w)e(m)o(ust) g(b)q(e)i(generated)g(b)o(y)f(the)g(sla)o(v)o(e.)30 b(The)18 b(master)0 444 y(con)o(tin)o(ually)f(advises)j(the)f(sla)o(v)o(es)g(of) g(the)g(leaf)s('s)f(lo)q(cation)h(within)f(the)h(master's)g(tree,)i (and)d(the)i(h)o(yp)q(othetical)f(v)n(alue)0 506 y(of)e(the)g(ro)q(ot)h (of)e(the)i(master's)f(tree.)29 b(Although)17 b(the)h(width)f(of)f(the) i(searc)o(h)g(windo)o(w)f(is)g(application-dep)q(enden)o(t,)h(one)0 569 y(normally)12 b(w)o(an)o(ts)i(to)g(cen)o(ter)i(the)f(windo)o(w)f (around)g(this)h(h)o(yp)q(othesized)g(ro)q(ot)g(v)n(alue,)e(plus)h(or)h (min)o(us)d(a)j(factor)f(to)g(re\015ect)0 631 y(the)g(uncertain)o(t)o (y)h(in)e(it.)62 693 y(There)19 b(are)e(three)h(t)o(yp)q(es)g(of)f(up)q (date)h(messages)f(that)g(a)g(sla)o(v)o(e)g(receiv)o(es)h(from)e(the)h (master:)24 b(a)17 b(new)h(piece)g(of)e(w)o(ork)0 756 y(has)g(b)q(een)h(added)f(to)f(the)i(sla)o(v)o(e)e(pro)q(cessor's)j (APHID)e(table,)f(the)i(lo)q(cation)d(of)h(a)h(leaf)f(no)q(de)h(within) f(the)i(master's)e(tree)0 818 y(has)g(c)o(hanged)h(\(c)o(hanging)e(the) i(secondary)g(w)o(ork)e(sc)o(heduling)i(criterion\),)f(and)g(a)g (noti\014cation)f(of)g(a)h(\\bad)g(b)q(ound")f(on)h(a)0 880 y(no)q(de.)21 b(The)15 b(bad)g(b)q(ound)g(message)f(alerts)i(the)f (sla)o(v)o(e)f(that)h(a)g(p)q(osition's)f(searc)o(h)i(information)c(is) i(not)h(su\016cien)o(t)g(to)g(sa)o(v)o(e)0 942 y(the)g(no)q(de)h(from)d (b)q(eing)h(uncertain.)22 b(In)15 b(this)g(case,)g(the)h(sla)o(v)o(e)e (m)o(ust)g(re-searc)o(h)i(the)g(no)q(de)f(with)f(the)i Fm(\013\014)h Fn(searc)o(h)f(windo)o(w)0 1005 y(sen)o(t)f(b)o(y)e(the)i (master)e(to)h(the)g(ply)g(requested.)62 1067 y(As)19 b(a)g(p)q(erformance)f(impro)o(v)o(emen)o(t,)f(w)o(e)i(w)o(an)o(t)f(to) h(force)g(the)g(sla)o(v)o(e)f(to)h(alw)o(a)o(ys)f(w)o(ork)g(on)g(no)q (des)i(for)e(the)h(curren)o(t)0 1129 y(searc)o(h)c(depth)f(of)f(the)h (master.)j(When)d(all)e(the)i(sla)o(v)o(e's)f(w)o(ork)h(has)f(b)q(een)i (searc)o(hed)g(to)e(the)h(required)h(depth,)f(rather)g(than)0 1191 y(b)q(ecoming)g(idle,)g(it)g(starts)i(re-searc)o(hing)g(its)e(w)o (ork)h(an)f(additional)f(ply)i(deep)q(er,)h(in)e(an)o(ticipation)g(of)g (the)h(next)g(iteration)0 1254 y(\(depth)g Fm(d)9 b Fn(+)h(1\).)19 b(When)14 b(this)g(is)g(happ)q(ening,)g(the)h(sla)o(v)o(e)f(routinely)g (c)o(hec)o(ks)h(the)g(comm)o(unicatio)o(n)d(c)o(hannel)i(for)g (messages)0 1316 y(from)c(the)i(master.)17 b(If)11 b(the)h(sla)o(v)o(e) f(receiv)o(es)i(a)e(new)h(piece)h(of)d(w)o(ork)i(to)f(do)g(at)g Fm(d)t Fk(\000)t Fm(d)1269 1301 y Fd(0)1293 1316 y Fn(ply)g(or)g(less,) h(the)g(searc)o(h)h(is)e(immediately)0 1378 y(ab)q(orted)j(and)g(con)o (trol)g(is)g(returned)h(to)f(the)g(sla)o(v)o(e's)g(sc)o(heduling)g (algorithm.)0 1494 y Fc(3.4)56 b(Load)18 b(Balancing)0 1583 y Fn(Although)c(the)g(master)g(attemps)g(to)g(giv)o(e)g(an)g (equal)f(amoun)o(t)g(of)g(w)o(ork)h(to)g(eac)o(h)h(sla)o(v)o(e)f(in)g (APHID,)g(neither)h(the)f(master)0 1646 y(nor)h(the)h(sla)o(v)o(e)e (can)i(predict)g(the)f(amoun)o(t)f(of)g(e\013ort)i(required)g(to)f (complete)f(a)h Fm(d)9 b Fk(\000)i Fm(d)1377 1631 y Fd(0)1403 1646 y Fn(ply)j(searc)o(h)j(for)d(a)h(giv)o(en)g(piece)h(of)0 1708 y(w)o(ork.)i(In)13 b(games)f(suc)o(h)i(as)f(c)o(hess,)i(there)f (are)g(no)f(completely)f(reliable)h(indicators)g(of)g(the)h (\\e\013ort")f(required)i(for)d(a)h(giv)o(en)0 1770 y(searc)o(h.)19 b(Th)o(us,)14 b(load)f(im)o(balances)f(can)i(o)q(ccur)h(based)g(on)e (the)i(allo)q(cation)d(of)h(w)o(ork)h(to)g(sla)o(v)o(es.)62 1833 y(The)j(master)g(kno)o(ws)f(all)g(of)g(the)i(information)13 b(ab)q(out)k(ho)o(w)g(man)o(y)d(uncertain)k(no)q(des)g(it)e(is)h(w)o (aiting)e(for)h(from)f(eac)o(h)0 1895 y(sla)o(v)o(e.)24 b(Th)o(us,)16 b(the)g(master)g(has)g(information)d(on)i(when)i(to)e(mo) o(v)o(e)g(lea)o(v)o(es)h(from)e(the)i Fm(d)1405 1880 y Fd(0)1432 1895 y Fn(ply)g(tree)h(from)d(an)i Fl(overworke)n(d)0 1957 y(slave)f Fn(\(a)g(sla)o(v)o(e)g(with)g(a)g(large)h(n)o(um)o(b)q (er)e(of)h(uncertain)h(no)q(des\))g(to)f(an)g Fl(underworke)n(d)i (slave)e Fn(\(a)g(sla)o(v)o(e)g(with)g(no)g(uncertain)0 2019 y(no)q(des\).)24 b(This)15 b(yields)g(a)g(tradeo\013)h(b)q(et)o(w) o(een)h(faster)f(con)o(v)o(ergence)h(for)e(a)h(giv)o(en)f(ply)f(searc)o (h)j(of)e(the)h(tree)h(and)e(additional)0 2082 y(searc)o(h)g(o)o(v)o (erhead,)f(as)g(discussed)h(in)f(Section)g(4.)0 2198 y Fc(3.5)56 b(Implem)o(en)n(tation)0 2287 y Fn(The)17 b(APHID)f(algorithm)e(has)j(b)q(een)g(written)g(as)g(an)f (application-indep)q(enden)o(t)g(library)g(of)f(C)i(routines.)26 b(The)17 b(library)0 2349 y(w)o(as)12 b(written)g(to)f(pro)o(vide)h (minim)o(al)c(in)o(terv)o(en)o(tion)j(in)o(to)g(a)h(w)o(orking)e(v)o (ersion)i(of)f(sequen)o(tial)h Fm(\013\014)i Fn(\(or)e(its)f(common)e (v)n(arian)o(ts:)0 2411 y(NegaScout[18,)k(20)o(])g(and)g(Principal)g(V) m(ariation)f(Searc)o(h)i(\(PVS\))g([16)o(]\).)k(Since)c(the)g(library)e (is)i(application-indep)q(enden)o(t,)0 2474 y(a)c(p)q(oten)o(tial)g (user)i(m)o(ust)e(write)g(a)h(few)f(application-dep)q(enden)o(t)h (routines)g(\(suc)o(h)h(as)f(mo)o(v)o(e)d(format,)h(ho)o(w)i(to)f(mak)o (e/unmak)o(e)0 2536 y(mo)o(v)o(es,)j(p)q(osition)i(format,)e(setting)i (a)g(windo)o(w)f(for)g(a)h(sla)o(v)o(e's)f(searc)o(h,)i Fl(etc)p Fn(.\).)21 b(APHID's)15 b(message)g(passing)g(w)o(as)f (written)0 2598 y(using)g(PVM)g([23)o(])f(to)h(allo)o(w)e(for)i(the)g (maxim)o(um)9 b(p)q(ortabilit)o(y)k(among)e(a)o(v)n(ailable)h(hardw)o (are.)62 2660 y(T)m(o)h(parallelize)f(a)i(sequen)o(tial)f Fm(\013\014)j Fn(program,)11 b(the)j(user)g(mo)q(di\014es)f(his)g(or)g (her)h(searc)o(h)h(routine)f(as)f(sho)o(wn)g(in)g(Figure)h(3.)965 2828 y(8)p eop %%Page: 9 9 9 8 bop 0 195 a Fn(The)15 b(APHID)f(c)o(hanges)h(are)f(mark)o(ed)f(b)o (y)h(shading,)f(and)h(easily)g(\014t)g(in)o(to)g(standard)g Fm(\013\014)j Fn(framew)o(orks.)g(This)d(one)h(piece)g(of)0 257 y(co)q(de)g(functions)f(as)g(the)g(searc)o(h)h(algorithm)c(for)j(b) q(oth)g(the)g(master)g(and)g(the)g(sla)o(v)o(e)g(pro)q(cesses.)62 320 y(There)i(are)f(a)g(few)f(additional)f(calls)i(that)f(ha)o(v)o(e)h (to)f(b)q(e)i(added)f(to)f(the)i(iterativ)o(e)e(deep)q(ening)i(routine) f(that)g(calls)f Fm(\013\014)r Fn(,)0 382 y(outlined)f(in)h(Figure)g (4.)62 444 y(Initially)m(,)c(it)i(w)o(as)g(an)o(ticipated)g(that)h(all) e(users)j(w)o(ould)d(w)o(an)o(t)h(to)h(searc)o(h)g(in)f(parallel)f (from)g(the)i(ro)q(ot)f(of)g(the)h(game)e(tree.)0 506 y(Ho)o(w)o(ev)o(er,)i(there)i(are)e(some)f(programs)g(that)h(wish)g(to) g(handle)g(the)h(ro)q(ot)f(of)f(the)i(game)d(tree)k(in)d(a)h (di\013eren)o(t)h(w)o(a)o(y)e(than)h(the)0 569 y(other)j(lea)o(v)o(es)f (of)f(the)i(searc)o(h)g(tree)g(\(b)o(y)f(adding)f(calls)h(to)g(the)g (time-con)o(trol)f(mec)o(hanism,)e(and)j(sp)q(ecial)g(handling)f(of)g (the)0 631 y Fm(\013\014)19 b Fn(searc)o(h)f(windo)o(w\).)25 b(APHID)17 b(has)g(b)q(een)h(generalized)f(to)g(in)o(tegrate)g(with)f (this)h(st)o(yle)g(of)f(searc)o(hing)h(the)g(game)e(tree;)0 693 y(Figure)e(5)f(illustrates)g(the)h(c)o(hanges)g(necessary)m(.)20 b(The)12 b(only)g(signi\014can)o(t)g(c)o(hange)h(from)d(Figure)j(4)f (is)g(the)h(addition)f(of)g(a)g(call)0 756 y(to)i Fe(aphid)p 164 756 14 2 v 14 w(intnode)p 332 756 V 15 w(premove)p Fn(.)62 818 y(There)h(are)g(t)o(w)o(o)e(calls)g(that)h(are)h(inserted)g (in)o(to)e(the)i(main)c(program,)h(whic)o(h)i(are)g(illustrated)g(in)f (Figure)h(6.)62 880 y(A)k(brief)g(explanation)f(of)g(the)i(parameters)f (and)g(function)f(of)h(eac)o(h)g(of)g(these)h Fe(aphid)p 1461 880 V 33 w Fn(routines)f(can)g(b)q(e)h(found)e(in)0 942 y(App)q(endix)d(A.)0 1080 y Fo(4)69 b(Exp)r(erimen)n(ts)0 1183 y Fn(The)12 b(APHID)f(game-indep)q(enden)o(t)h(library)e(w)o(as)i (inserted)g(in)o(to)f Fj(TheTurk)h Fn(c)o(hess)h(program,)d(written)i (b)o(y)f(Yngvi)g(Bjorns-)0 1245 y(son)16 b(and)g(Andreas)h(Junghanns)g (at)f(the)h(Univ)o(ersit)o(y)f(of)f(Alb)q(erta.)25 b(With)16 b(less)h(than)f(one)g(da)o(y)g(of)f(programming)e(e\013ort,)0 1307 y(w)o(e)j(had)g(a)g(running)f(parallel)g(program)g(based)h(on)g (the)g(APHID)h(algorithm)c(that)j(could)g(run)g(on)g(a)f(series)j(of)d (w)o(orksta-)0 1370 y(tions.)i(Along)11 b(with)h(the)h(additional)d (calls)h(added)i(to)e(PVS,)h(the)h(iterativ)o(e)f(deep)q(ening)h (routine,)f(and)g(the)g(main)e(program,)0 1432 y(roughly)15 b(100)g(lines)h(of)f(co)q(de)i(w)o(ere)g(de\014ned)g(for)e(the)i Fe(aphid)p 970 1432 V 14 w(stub)p 1072 1432 V 31 w Fn(routines,)g (whose)f(purp)q(ose)h(is)f(brie\015y)g(describ)q(ed)h(in)0 1494 y(App)q(endix)d(A.)62 1557 y(T)m(o)j(test)h(the)g(algorithm,)d Fj(TheTurk)j Fn(w)o(as)g(programmed)c(to)k(searc)o(h)g(the)g(24)f (Bratk)o(o-Kop)q(ec)h(p)q(ositions)f([11)o(])g(to)g(a)0 1619 y(depth)e(of)e Fm(d)e Fn(=)h(8)h(ply)m(,)g(with)g(the)i(master)e (con)o(trolling)g(the)h(top)g Fm(d)1031 1604 y Fd(0)1054 1619 y Fn(=)e(3)h(ply)h(of)f(the)h(tree.)62 1681 y(P)o(arallel)e(tests) i(w)o(ere)f(run)g(on)g(4,)f(8,)g(12)g(and)h(16)f(w)o(orkstations)g(on)h (a)f(net)o(w)o(ork)h(of)f(SUN)h(4s.)18 b(One)13 b(w)o(orkstation)f(in)g (eac)o(h)0 1743 y(exp)q(erimen)o(t)i(w)o(as)g(completely)f(o)q(ccupied) i(b)o(y)e(the)i Fe(master)e Fn(pro)q(cess,)i(while)f(the)g(other)h(w)o (orkstations)f(eac)o(h)g(ran)g(a)g Fe(slave)0 1806 y Fn(pro)q(cess.)20 b(On)14 b(the)h(a)o(v)n(ailable)c(hardw)o(are,)j Fj(TheTurk)h Fn(visits)e(appro)o(ximately)f(2500)g(no)q(des)j(p)q(er)g (second.)62 1868 y(P)o(arallel)c(and)h(sequen)o(tial)g(algorithms)e (are)i(notoriously)g(p)q(o)q(or)g(when)g(it)g(comes)g(to)g(exact)g(con) o(v)o(ergence)i(when)f(the)f(full)0 1930 y(v)o(ersion)i(of)f(the)i (program)d(is)i(used)h([14)o(].)i(F)m(or)d(example,)e(di\013eren)o(t)j (searc)o(h)g(windo)o(ws)e(cause)i(di\013eren)o(t)g(searc)o(h)g (extensions)0 1992 y(to)h(b)q(e)g(turned)h(on,)f(causing)g(di\013eren)o (t)h(alpha-b)q(eta)e(results.)25 b(Th)o(us,)17 b(all)d(searc)o(h)k (extensions)f(and)e(n)o(ull)g(mo)o(v)o(e)f(searc)o(hing)0 2055 y(w)o(ere)20 b(turned)g(o\013)f(for)g(this)g(exp)q(erimen)o(t.)34 b(Since)20 b(some)e(w)o(ork)h(could)g(b)q(e)h(ev)n(aluated)f(to)g Fm(d)12 b Fn(+)h(1-ply)18 b(b)q(efore)i(the)g Fm(d)p Fn(-ply)0 2117 y(result)d(is)f(\014nished,)g(w)o(e)h(also)e(forced)i (the)f(transp)q(osition)g(table)g(to)g(rep)q(ort)h(only)e(transp)q (osition)h(table)g(scores)i(that)e(had)0 2179 y(b)q(een)g(searc)o(hed)h (to)d(the)i(exact)f(depth)h(\(as)f(in)g(Figure)g(3\).)21 b(Quiescence)c(searc)o(h)f(w)o(as)f(left)g(in)f Fj(TheTurk)i Fn(to)e(prev)o(en)o(t)i(the)0 2241 y(ev)n(aluations)d(from)f(b)q(eing)i (signi\014can)o(tly)f(unstable.)62 2304 y(Although)g(this)f(list)h(of)f (c)o(hanges)i(is)e(incomplete)g(to)h(guaran)o(tee)g(the)h(same)e(minim) o(ax)d(v)n(alue)k(is)f(returned)j(b)o(y)d(b)q(oth)h(the)0 2366 y(sequen)o(tial)g(and)g(parallel)f(programs,)g(this)h(list)g (constitutes)i(the)f(c)o(hanges)g(made)e(to)h Fj(TheTurk)h Fn(without)f(doing)f(serious)0 2428 y(damage)f(to)h(the)h(p)q (erformance)g(of)e(the)j(program.)h(In)e(the)g(v)o(ersion)g(tested,)h (o)o(v)o(er)e(90\045)g(of)f(the)j(parallel)d(searc)o(hes)j(returned)0 2491 y(the)g(same)e(minim)o(ax)e(v)n(alue)j(as)g(the)h(sequen)o(tial)f (searc)o(h,)h(and)f(the)h(principal)e(v)n(ariation)g(w)o(as)h(correct)i (for)e(all)e(but)j(1)f(of)f(the)0 2553 y(96)h(searc)o(hes)j(executed)g (in)d(parallel.)62 2615 y(Figure)e(7)f(illustrates)h(the)g(a)o(v)o (erage)g(sp)q(eedups)i(for)d(5)g(to)h(8)f(ply)g(searc)o(hes,)j(whic)o (h)e(are)g(the)g(searc)o(hes)i(that)d(w)o(ere)i(executed)0 2677 y(in)h(parallel.)k(The)e(graph)e(sho)o(ws)i(that)f(as)f(the)i (depth)g(of)e(the)h(searc)o(h)h(increases,)g(so)f(do)q(es)h(the)g(sp)q (eedup.)965 2828 y(9)p eop %%Page: 10 10 10 9 bop 482 329 a 15582380 33154007 1184071 3025960 24010342 51178209 startTexFig 482 329 a %%BeginDocument: code4.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 /Courier 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 Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 0.99763 -0 -0 3.92857 18.0284 -414.643 ] concat %I 12 231 432 243 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 0.99763 -0 -0 3.07143 18.0284 -128.357 ] concat %I 12 231 432 243 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 -0 -0 1 18 477 ] concat %I 12 231 432 243 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 -0 -0 1 18 -57 ] concat %I 12 231 432 243 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 -0 -0 1 18 -27 ] concat %I 12 231 432 243 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 -0 -0 1 18 177 ] concat %I 12 231 432 243 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 -0 -0 1 18 219 ] concat %I 12 231 432 243 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 -0 -0 1 18 81 ] concat %I 12 231 432 243 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 42 957 ] concat %I [ (int PVS\(p, alpha, beta, depth, plytogo\)) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 42 945 ] concat %I [ (position p;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 42 933 ] concat %I [ (int alpha, beta;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 42 921 ] concat %I [ (int depth, plytogo;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 42 909 ] concat %I [ ({) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 873 ] concat %I [ (int h_length; /* ply position previously searched to */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 897 ] concat %I [ (char *p_hash; /* pointer to hash value */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 885 ] concat %I [ (char *p_key; /* pointer to hash table "lock" */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 861 ] concat %I [ (int h_score; /* score for h_length ply */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 849 ] concat %I [ (int h_flag; /* VALID, LBOUND or UBOUND */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 837 ] concat %I [ (move *h_move; /* recommended move for h_length ply */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 825 ] concat %I [ (int width; /* number of moves in move list */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 813 ] concat %I [ (int i; /* move counter */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 801 ] concat %I [ (int value; /* score of child PVS call */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 783 ] concat %I [ (/* Generate hash value and key for this position */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 771 ] concat %I [ (generate_hash\(p, p_hash, p_key\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 759 ] concat %I [ (/* Fetch information from local transposition table */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 747 ] concat %I [ (retrieve\(p_hash, p_kley, h_length, h_score, h_flag, h_move\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 729 ] concat %I [ (/* If we have searched position deep enough, use score info */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 705 ] concat %I [ (if \(flag == VALID\) { return\(h_score\); }) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 669 ] concat %I [ (if \(alpha >= beta\) { return\(h_score\); }) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 657 ] concat %I [ (}) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 639 ] concat %I [ (/* Evaluate position if at bottom of the tree */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 591 ] concat %I [ (}) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 573 ] concat %I [ (/* Generate move list, evaluate position if no moves */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 549 ] concat %I [ (if \(width == 0\) { return\(evaluate\(p\)\); }) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 501 ] concat %I [ (}) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 681 ] concat %I [ (if \(flag == UBOUND\) { beta = min\(beta,h_score\); }) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 693 ] concat %I [ (if \(flag == LBOUND\) { alpha = max\(alpha,h_score\); }) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 483 ] concat %I [ (score = -INFINITY;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 471 ] concat %I [ (lower = alpha; upper = beta;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 441 ] concat %I [ (/* Loop through moves in move list */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 429 ] concat %I [ (for\(i=1; \(i <= width && score <= beta\); i++ \) {) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 405 ] concat %I [ (make_move\(p, move[i]\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 387 ] concat %I [ (value = -PVS\(p, -upper, -lower, depth+1, plytogo-1\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 375 ] concat %I [ (if \(value > score && i > 1\) {) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 120 363 ] concat %I [ (value = -PVS\(p, -beta, -value, depth+1, plytogo-1\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 351 ] concat %I [ (}) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 333 ] concat %I [ (unmake_move\(p,move[i]\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 309 ] concat %I [ (if \(value > score\) {) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 120 297 ] concat %I [ (score = value;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 120 285 ] concat %I [ (move_opt = move[i];) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 273 ] concat %I [ (}) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 255 ] concat %I [ (/* Set bounds for next search */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 243 ] concat %I [ (lower = max\(alpha, score\); upper = lower+1;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 231 ] concat %I [ (} /* for all moves */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 195 ] concat %I [ (/* Write information into local trans. table */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 171 ] concat %I [ (h_flag = VALID;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 561 ] concat %I [ (width = generate\(p, h_move\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 159 ] concat %I [ (if \(score <= alpha\) { h_flag = UBOUND; }) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 147 ] concat %I [ (if \(score >= beta\) { h_flag = LBOUND; }) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 135 ] concat %I [ (if \(h_length <= plytogo\) {) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 123 ] concat %I [ (store\(p_hash, p_key, plytogo, score, h_flag, move_opt\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 111 ] concat %I [ (}) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 99 ] concat %I [ (return\(score\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 48 87 ] concat %I [ (} /* function PVS */) ] 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 [ 2 -0 -0 2 -190 -34 ] concat %I 107 47 323 503 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 627 ] concat %I [ (if \(plytogo <= 0\) { return\(evaluate\(p\)\); }) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 717 ] concat %I [ (if \(aphid_master\(\) == FALSE && h_length == plytogo\) {) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 615 ] concat %I [ (if \(aphid_horizon\(depth\)\) {) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 537 ] concat %I [ (if \(aphid_checkalarm\(\) != FALSE\) {) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 459 ] concat %I [ (aphid_intnode_start\(depth, p_hash, p_key\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 417 ] concat %I [ (aphid_intnode_move\(depth, &\(move[i]\)\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 321 ] concat %I [ (aphid_intnode_update\(depth, value\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 213 ] concat %I [ (if \(score >= beta\) { aphid_intnode_fixbound\(depth\); }) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 183 ] concat %I [ (aphid_intnode_end\(depth, &score\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 525 ] concat %I [ (terminate_search = TRUE;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 603 ] concat %I [ (return\(aphid_eval_leaf\(alpha,beta,depth,p_hash,p_key\)\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 96 513 ] concat %I [ (return\(0\); /* Should exit PVS quickly when alarm on */) ] Text End End %I eop showpage end %%EndDocument endTexFig 390 2520 a Fn(Figure)14 b(3:)j(Ho)o(w)d(APHID)g(Mo)q(di\014es)g(A)g(T) o(ypical)f(PVS)h(Implemen)o(tation)954 2828 y(10)p eop %%Page: 11 11 11 10 bop 459 188 a 16292818 4736286 1184071 44665815 23615651 51178209 startTexFig 459 188 a %%BeginDocument: code5.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 /Courier 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 8 8 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 Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 -0 -0 1 -125 612 ] concat %I 155 342 563 354 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 36 951 ] concat %I [ (for\(plytogo=1;\(plytogo <= MAXDEPTH && done == FALSE\); plytogo++\) {) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 939 ] concat %I [ (/* Set up search */) ] 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 [ 1.00951 -0 -0 1.12603 -126.417 566.628 ] concat %I 149 252 569 360 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 36 963 ] concat %I [ (aphid_initsearch\(MAXDEPTH\);) ] Text End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 0 0 1 -125 596 ] concat %I 155 294 563 318 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 0 0 1 -125 596 ] concat %I 155 258 563 270 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 887 ] concat %I [ (/* Print out results of search */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 36 875 ] concat %I [ (}) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 911 ] concat %I [ (/* Call to aphid_rootsearch replaces call to PVS */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 899 ] concat %I [ (score = aphid_rootsearch\(0,plytogo,guess-eps,guess+eps\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 36 863 ] concat %I [ (aphid_endsearch\(\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 61 925 ] concat %I [ (/* Search at root around value \(guess\) with small error \(eps\) */) ] Text End End %I eop showpage end %%EndDocument endTexFig 385 579 a Fn(Figure)14 b(4:)k(Ho)o(w)c(APHID)g(Mo)q(di\014es)g(the)g (Iterativ)o(e)h(Deep)q(ening)f(Routine)465 689 y 16117604 19418804 1184071 24405032 23549870 51178209 startTexFig 465 689 a %%BeginDocument: code6.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 /Courier 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 8 8 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 Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 -0 -0 1 -125 559 ] concat %I 155 173 563 197 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 -0 -0 1 -125 559 ] concat %I 155 209 563 221 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 -0 -0 1 -125 559 ] concat %I 155 323 563 335 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 -0 -0 1 -125 612 ] concat %I 155 342 563 354 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 36 951 ] concat %I [ (for\(plytogo=1;\(plytogo <= MAXDEPTH && done == FALSE\); plytogo++\) {) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 36 903 ] concat %I [ (}) ] 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 [ 1.00711 -0 -0 4.68604 -126.059 -714.975 ] concat %I 149 252 569 360 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 915 ] concat %I [ (/* Print out results of search */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 927 ] concat %I [ (score = ROOT_PVS\(root_pos,guess-eps,guess+eps,0,plytogo\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 36 867 ] concat %I [ (ROOT_PVS\(root_pos, alpha, beta, depth, plytogo\)) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 36 855 ] concat %I [ (...) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 36 843 ] concat %I [ ({) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 831 ] concat %I [ (...) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 819 ] concat %I [ (/* Search PV Move */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 807 ] concat %I [ (lower = alpha;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 36 789 ] concat %I [ (search_best_move:) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 765 ] concat %I [ (make_move\(p,bestmove\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 729 ] concat %I [ (unmake_move\(p,bestmove\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 36 963 ] concat %I [ (aphid_initsearch\(MAXDEPTH\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 36 891 ] concat %I [ (aphid_endsearch\(\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 777 ] concat %I [ (aphid_intnode_premove\(depth, &bestmove\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 753 ] concat %I [ (/* aphid_rootsearch replaces typical call to PVS */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 939 ] concat %I [ (/* Set up search with small window \(eps\) around guess */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 741 ] concat %I [ (oldscore = -aphid_rootsearch\(depth+1,plytogo-1,-beta,-lower\);) ] Text End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 0 0 1 -125 437 ] concat %I 155 159 563 183 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 0 0 1 -125 437 ] concat %I 155 207 563 219 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 84 641 ] concat %I [ (make_move\(p,move[i]\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 84 629 ] concat %I [ (/* Check if move beats PV move by more than delta */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 581 ] concat %I [ (}) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 84 539 ] concat %I [ (bestmove = move[i];) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 84 527 ] concat %I [ (lower = newscore;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 503 ] concat %I [ (}) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 491 ] concat %I [ (...) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 36 479 ] concat %I [ (} /* function ROOT_PVS */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 84 653 ] concat %I [ (aphid_intnode_premove\(depth,&move[i]\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 84 593 ] concat %I [ (unmake_move\(p,move[i]\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 210 605 ] concat %I [ (-oldscore-delta-1, -oldscore-delta\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 84 617 ] concat %I [ (newscore = -aphid_rootsearch\(depth+1, plytogo-1,) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 84 515 ] concat %I [ (if \(newscore < beta\) { goto search_best_move; }) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 84 551 ] concat %I [ (/* set new best move and score and research \(if necc.\) */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 665 ] concat %I [ (for\(i=2;\(i<=width && newscore <= oldscore+delta; i++\) {) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 677 ] concat %I [ (newscore = oldscore;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 563 ] concat %I [ (if \(newscore > oldscore+delta\) {) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 60 711 ] concat %I [ (/* Search other moves at root, and only switch if move beats */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 59 698 ] concat %I [ (/* PV score \(oldscore\) by a small margin \(delta\) */) ] Text End End %I eop showpage end %%EndDocument endTexFig 222 2010 a Fn(Figure)g(5:)k(Ho)o(w)c(APHID)g(Mo)q(di\014es)g(Sp)q (ecial)g(Handling)e(Of)i(The)h(Ro)q(ot)e(Of)h(The)g(Game)e(T)m(ree)489 2120 y 15345567 7104430 1447198 41639854 22102671 51178209 startTexFig 489 2120 a %%BeginDocument: code7.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 /Courier 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 8 8 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 Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 -0 -0 1 -125 612 ] concat %I 161 216 539 228 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.95 SetP %I t [ 1 -0 -0 1 -125 612 ] concat %I 161 276 539 288 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 42 963 ] concat %I [ (int main\(argc, argv\)) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 42 951 ] concat %I [ (int argc;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 42 939 ] concat %I [ (char *argv[];) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 42 927 ] concat %I [ ({) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 915 ] concat %I [ (/* Initialization required by any process in system */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 867 ] concat %I [ (/* Initialization required only by the master process */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 825 ] concat %I [ (exit\(0\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 42 813 ] concat %I [ (}) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 855 ] concat %I [ (/* Play game */) ] 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.997449 -0 -0 0.962766 -124.605 625.404 ] concat %I 155 174 545 360 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 885 ] concat %I [ (/* Only the absolute master process gets here */) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 897 ] concat %I [ (aphid_startup\(argv\);) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 72 837 ] concat %I [ (aphid_exit\(\);) ] Text End End %I eop showpage end %%EndDocument endTexFig 503 2661 a Fn(Figure)i(6:)k(Ho)o(w)13 b(APHID)h(Mo)q(di\014es)h(The)f (Main)f(Program)954 2828 y(11)p eop %%Page: 12 12 12 11 bop 336 154 a 20176580 14208860 3289088 3289088 50651955 36443095 startTexFig 336 154 a %%BeginDocument: graph5.ps /gnudict 40 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /vshift -46 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 140 scalefont setfont newpath LTa 840 351 M 6129 0 V 840 351 M 0 4618 V LTb 840 351 M 63 0 V 6066 0 R -63 0 V 756 351 M (0) Rshow 840 928 M 63 0 V 6066 0 R -63 0 V 756 928 M (1) Rshow 840 1506 M 63 0 V 6066 0 R -63 0 V -6150 0 R (2) Rshow 840 2083 M 63 0 V 6066 0 R -63 0 V -6150 0 R (3) Rshow 840 2660 M 63 0 V 6066 0 R -63 0 V -6150 0 R (4) Rshow 840 3237 M 63 0 V 6066 0 R -63 0 V -6150 0 R (5) Rshow 840 3815 M 63 0 V 6066 0 R -63 0 V -6150 0 R (6) Rshow 840 4392 M 63 0 V 6066 0 R -63 0 V -6150 0 R (7) Rshow 840 4969 M 63 0 V 6066 0 R -63 0 V -6150 0 R (8) Rshow 840 351 M 0 63 V 0 4555 R 0 -63 V 840 211 M (0) Cshow 2372 351 M 0 63 V 0 4555 R 0 -63 V 0 -4695 R (5) Cshow 3905 351 M 0 63 V 0 4555 R 0 -63 V 0 -4695 R (10) Cshow 5437 351 M 0 63 V 0 4555 R 0 -63 V 0 -4695 R (15) Cshow 6969 351 M 0 63 V 0 4555 R 0 -63 V 0 -4695 R (20) Cshow 840 351 M 6129 0 V 0 4618 V -6129 0 V 840 351 L 140 2660 M currentpoint gsave translate 90 rotate 0 0 M (Speedup) Cshow grestore 3904 71 M (Number of Processors) Cshow LT0 6486 4766 M (5 ply) Rshow 6570 4766 M 252 0 V 2066 790 M 3292 980 L 1225 41 V 1226 75 V 6654 4766 D 2066 790 D 3292 980 D 4517 1021 D 5743 1096 D LT1 6486 4626 M (6 ply) Rshow 6570 4626 M 252 0 V 2066 1067 M 1226 467 V 1225 266 V 1226 300 V 6654 4626 A 2066 1067 A 3292 1534 A 4517 1800 A 5743 2100 A LT2 6486 4486 M (7 ply) Rshow 6570 4486 M 252 0 V 2066 1055 M 1226 664 V 1225 491 V 1226 548 V 6654 4486 B 2066 1055 B 3292 1719 B 4517 2210 B 5743 2758 B LT3 6486 4346 M (8 ply) Rshow 6570 4346 M 252 0 V 2066 1176 M 3292 2181 L 1225 877 V 1226 768 V 6654 4346 C 2066 1176 C 3292 2181 C 4517 3058 C 5743 3826 C stroke grestore end showpage %%EndDocument endTexFig 394 1145 a Fn(Figure)14 b(7:)j(Sp)q(eedups)f(at)e(V)m(arious)f(Depths) i(for)e(APHID)h(in)g Fj(TheTurk)62 1278 y Fn(The)f(24)f(p)q(ositions)g (ha)o(v)o(e)h(b)q(een)g(sorted)h(b)o(y)e(the)h(size)g(of)f(the)h (sequen)o(tial)g(searc)o(h)g(tree,)h(and)e(divided)g(in)o(to)g(three)i (groups)0 1340 y(of)f(equal)h(size.)19 b(Figure)14 b(8)f(illustrates)h (the)h(a)o(v)o(erage)f(sp)q(eedup)h(at)f(8)f(ply)h(for)f(eac)o(h)i (third)f(of)f(the)h(complete)g(test)h(set.)62 1402 y(The)f(o)o(v)o (erheads)g(in)f(the)g(algorithm)e(are)j(illustrated)f(in)f(Figure)i(9)f (as)g(p)q(ercen)o(tages)i(of)e(the)h(sequen)o(tial)f(time)f(required)0 1464 y(to)18 b(searc)o(h)i(all)d(24)h(p)q(ositions.)31 b(The)19 b Fl(total)g(overhe)n(ad)f Fn(represen)o(ts)j(the)e (additional)e(computing)g(time)g(required)i(b)o(y)f(the)0 1527 y(parallel)13 b(algorithm)e(to)j(ac)o(hiev)o(e)g(the)g(same)f (result:)486 1638 y(total)c(o)o(v)o(erhead)j(=)801 1610 y(\(parallel)d(time)17 b Fk(\003)h Fn(n\))9 b Fk(\000)h Fn(sequen)o(tial)f(time)p 801 1629 658 2 v 995 1667 a(sequen)o(tial)g (time)0 1749 y(where)15 b Fm(n)f Fn(is)g(the)g(n)o(um)o(b)q(er)f(of)g (pro)q(cessors.)21 b(The)14 b(total)f(o)o(v)o(erhead)h(is)g(also)f(a)h (sum)f(of)g(the)i(four)e(o)o(v)o(erheads:)78 1853 y(total)8 b(o)o(v)o(erhead)k(=)g(master)d(o)o(v)o(erhead)g(+)h(parallelization)d (o)o(v)o(erhead)j(+)f(sp)q(eculativ)o(e)h(searc)o(h)h(+)e(searc)o(h)i (o)o(v)o(erhead)p Fm(:)62 1957 y Fn(The)17 b Fl(master)f(overhe)n(ad)h Fn(is)f(the)g(appro)o(ximate)e(p)q(enalt)o(y)i(incurred)h(b)o(y)f(ha)o (ving)f(a)h(single)g(pro)q(cessor)h(b)q(eing)f(allo)q(cated)0 2019 y(completely)d(to)g(the)i(handling)e(of)g(the)h(master.)k(This)c (is)f(not)h(simply)1123 2003 y Fi(1)p 1121 2010 21 2 v 1121 2034 a Fb(n)1147 2019 y Fn(,)f(but)h(is)g(the)g(time)f(tak)o(en) h(a)o(w)o(a)o(y)f(b)o(y)g(the)i(master:)655 2137 y(master)9 b(o)o(v)o(erhead)j(=)1031 2109 y(parallel)c(time)p 1008 2128 271 2 v 1008 2166 a(sequen)o(tial)h(time)1283 2137 y Fm(:)62 2248 y Fn(The)18 b Fl(p)n(ar)n(al)r(lelization)e(overhe)n(ad) i Fn(is)f(the)g(p)q(enalt)o(y)g(incurred)h(b)o(y)f(the)g(APHID-library) g(on)f(the)i(sp)q(eed)g(of)f(the)g(sla)o(v)o(es.)0 2311 y(In)e(the)h(parallel)f(algorithm,)d(the)k(sla)o(v)o(es)f(w)o(ere)i (visiting)d(2000)g(no)q(des)i(p)q(er)h(second.)23 b(The)16 b(di\013erence)h(b)q(et)o(w)o(een)g(this)e(rate)0 2373 y(and)g(the)g(sequen)o(tial)g(program's)e(no)q(de)i(rate)g(is)f(deriv)o (ed)i(partially)d(from)g(the)i(o)o(v)o(erhead)g(of)f(using)g(PVM,)h (and)g(partially)0 2435 y(from)f(the)i(w)o(ork-sc)o(heduling)f (algorithm)e(on)i(eac)o(h)h(sla)o(v)o(e.)23 b(In)15 b(the)h(authors')g (exp)q(erience,)h(this)f(complexit)o(y)d(o)o(v)o(erhead)j(is)0 2497 y(appro)o(ximately)11 b(the)k(same)e(as)h(implemen)o(tatio)o(ns)e (of)h(YBW)h(on)g(similar)d(hardw)o(are.)62 2560 y(The)16 b Fl(se)n(ar)n(ch)f(overhe)n(ad)g Fn(starts)h(at)f(70\045)f(and)g (increases)j(v)o(ery)e(gradually)f(as)g(w)o(e)i(increase)g(from)d(4)h (to)h(16)f(pro)q(cessors.)0 2622 y(Most)i(of)g(the)h(searc)o(h)g(o)o(v) o(erhead)g(is)f(incurred)h(b)o(y)f(attempting)f(to)h(do)g(searc)o(hes)i (b)q(efore)f(the)g(correct)g(searc)o(h)h(windo)o(w)d(is)0 2684 y(a)o(v)n(ailable.)g(Th)o(us,)c(the)h(sla)o(v)o(es)f(use)h Fm(\013\014)h Fn(searc)o(h)g(windo)o(ws)d(that)h(are)h(larger)f(than)g (those)h(in)e(the)i(sequen)o(tial)f(program.)16 b(Most)954 2828 y(12)p eop %%Page: 13 13 13 12 bop 336 283 a 20176580 14208860 3289088 3289088 50651955 36443095 startTexFig 336 283 a %%BeginDocument: graph6.ps /gnudict 40 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /vshift -46 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 140 scalefont setfont newpath LTa 840 351 M 6129 0 V 840 351 M 0 4618 V LTb 840 351 M 63 0 V 6066 0 R -63 0 V 756 351 M (0) Rshow 840 928 M 63 0 V 6066 0 R -63 0 V 756 928 M (1) Rshow 840 1506 M 63 0 V 6066 0 R -63 0 V -6150 0 R (2) Rshow 840 2083 M 63 0 V 6066 0 R -63 0 V -6150 0 R (3) Rshow 840 2660 M 63 0 V 6066 0 R -63 0 V -6150 0 R (4) Rshow 840 3237 M 63 0 V 6066 0 R -63 0 V -6150 0 R (5) Rshow 840 3815 M 63 0 V 6066 0 R -63 0 V -6150 0 R (6) Rshow 840 4392 M 63 0 V 6066 0 R -63 0 V -6150 0 R (7) Rshow 840 4969 M 63 0 V 6066 0 R -63 0 V -6150 0 R (8) Rshow 840 351 M 0 63 V 0 4555 R 0 -63 V 840 211 M (0) Cshow 2372 351 M 0 63 V 0 4555 R 0 -63 V 0 -4695 R (5) Cshow 3905 351 M 0 63 V 0 4555 R 0 -63 V 0 -4695 R (10) Cshow 5437 351 M 0 63 V 0 4555 R 0 -63 V 0 -4695 R (15) Cshow 6969 351 M 0 63 V 0 4555 R 0 -63 V 0 -4695 R (20) Cshow 840 351 M 6129 0 V 0 4618 V -6129 0 V 840 351 L 140 2660 M currentpoint gsave translate 90 rotate 0 0 M (Speedup) Cshow grestore 3904 71 M (Number of Processors) Cshow LT0 6486 4766 M (Small) Rshow 6570 4766 M 252 0 V 2066 1136 M 1226 797 V 1225 698 V 1226 641 V 6654 4766 D 2066 1136 D 3292 1933 D 4517 2631 D 5743 3272 D LT1 6486 4626 M (Medium) Rshow 6570 4626 M 252 0 V 2066 1101 M 3292 2146 L 1225 681 V 1226 809 V 6654 4626 A 2066 1101 A 3292 2146 A 4517 2827 A 5743 3636 A LT2 6486 4486 M (Large) Rshow 6570 4486 M 252 0 V 2066 1234 M 3292 2239 L 4517 3272 L 1226 756 V 6654 4486 B 2066 1234 B 3292 2239 B 4517 3272 B 5743 4028 B stroke grestore end showpage %%EndDocument endTexFig 340 1274 a Fn(Figure)14 b(8:)k(Sp)q(eedups)d(for)f(Di\013eren)o(t)g (Size)h(Problems)e(at)h(8)f(Ply)h(in)f Fj(TheTurk)336 1575 y 20176580 14208860 3289088 3289088 50651955 36443095 startTexFig 336 1575 a %%BeginDocument: graph4.ps /gnudict 40 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /vshift -46 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 140 scalefont setfont newpath LTa 840 351 M 6129 0 V 840 351 M 0 4618 V LTb 840 351 M 63 0 V 6066 0 R -63 0 V 756 351 M (0) Rshow 840 1275 M 63 0 V 6066 0 R -63 0 V -6150 0 R (50) Rshow 840 2198 M 63 0 V 6066 0 R -63 0 V -6150 0 R (100) Rshow 840 3122 M 63 0 V 6066 0 R -63 0 V -6150 0 R (150) Rshow 840 4045 M 63 0 V 6066 0 R -63 0 V -6150 0 R (200) Rshow 840 4969 M 63 0 V 6066 0 R -63 0 V -6150 0 R (250) Rshow 840 351 M 0 63 V 0 4555 R 0 -63 V 840 211 M (0) Cshow 2372 351 M 0 63 V 0 4555 R 0 -63 V 0 -4695 R (5) Cshow 3905 351 M 0 63 V 0 4555 R 0 -63 V 0 -4695 R (10) Cshow 5437 351 M 0 63 V 0 4555 R 0 -63 V 0 -4695 R (15) Cshow 6969 351 M 0 63 V 0 4555 R 0 -63 V 0 -4695 R (20) Cshow 840 351 M 6129 0 V 0 4618 V -6129 0 V 840 351 L 140 2660 M currentpoint gsave translate 90 rotate 0 0 M (Percent Overhead) Cshow grestore 3904 71 M (Number of Processors) Cshow LT0 6486 4766 M (Search Overhead) Rshow 6570 4766 M 252 0 V 2066 1699 M 1226 113 V 1225 94 V 1226 96 V 6654 4766 D 2066 1699 D 3292 1812 D 4517 1906 D 5743 2002 D LT1 6486 4626 M (Speculative Search) Rshow 6570 4626 M 252 0 V 2066 567 M 1226 33 V 1225 71 V 1226 85 V 6654 4626 A 2066 567 A 3292 600 A 4517 671 A 5743 756 A LT2 6486 4486 M (Parallelization Overhead) Rshow 6570 4486 M 252 0 V 2066 802 M 1226 66 V 1225 96 V 1226 87 V 6654 4486 B 2066 802 B 3292 868 B 4517 964 B 5743 1051 B LT3 6486 4346 M (Master Overhead) Rshow 6570 4346 M 252 0 V 2066 1638 M 3292 933 L 4517 744 L 5743 658 L 6654 4346 C 2066 1638 C 3292 933 C 4517 744 C 5743 658 C LT4 6486 4206 M (Total Overhead) Rshow 6570 4206 M 252 0 V 2066 3656 M 3292 3161 L 1225 72 V 1226 181 V 6654 4206 T 2066 3656 T 3292 3161 T 4517 3233 T 5743 3414 T stroke grestore end showpage %%EndDocument endTexFig 475 2566 a Fn(Figure)h(9:)k(Ov)o(erheads)d(at)f(8)g(Ply)f(for)h(APHID) g(in)f Fj(TheTurk)954 2828 y Fn(13)p eop %%Page: 14 14 14 13 bop 0 195 a Fn(of)13 b(the)h(increase)h(in)e(searc)o(h)i(o)o(v)o (erhead)f(as)g(w)o(e)f(increase)i(the)g(n)o(um)o(b)q(er)d(of)h(pro)q (cessors)j(can)e(b)q(e)g(attributed)g(to)g(information)0 257 y(de\014ciency)m(,)21 b(since)e(there)i(is)d(no)h(common)d(shared)k (data)e(b)q(et)o(w)o(een)j(the)e(pro)q(cesses)j(\(suc)o(h)e(as)f(a)f (shared)i(transp)q(osition)0 320 y(table\).)62 382 y(Since)e(w)o(e)f (only)f(searc)o(h)j(eac)o(h)e(p)q(osition)f(to)h(8)g(ply)m(,)g(the)g (async)o(hronous)h(nature)g(of)e(the)i(sla)o(v)o(es)f(will)e(result)j (in)f(some)0 444 y(w)o(ork)d(b)q(eing)h(done)f(at)h(9)f(ply)g(\(or)g (more\).)19 b(The)c Fl(sp)n(e)n(culative)g(se)n(ar)n(ch)g Fn(line)f(represen)o(ts)j(the)e(amoun)o(t)d(of)i(additional)f(searc)o (h)0 506 y(b)q(ey)o(ond)f(what)g(the)g(sequen)o(tial)g(algorithm)d(w)o (ould)i(ha)o(v)o(e)h(done.)18 b(Ho)o(w)o(ev)o(er,)12 b(in)f(our)h(exp)q(erimen)o(ts,)g(the)g(sp)q(eculativ)o(e)h(searc)o(h)0 569 y(results)k(w)o(ere)f(not)g(used)g(so)g(that)f(the)i(parallel)d (program)g(pro)q(duces)j(the)f(iden)o(tical)f(results)i(as)e(the)i (sequen)o(tial)e(v)o(ersion,)0 631 y(v)o(erifying)h(APHID's)g (correctness)q(.)29 b(In)17 b(a)f(real)h(tournamen)o(t)f(game,)f(this)i (sp)q(eculativ)o(e)h(searc)o(h)g(could)e(b)q(e)i(used)f(to)g(lo)q(ok)0 693 y(an)e(extra)h(mo)o(v)o(e)d(ahead)j(on)f(some)f(k)o(ey)h(v)n (ariations,)f(since)i(it)f(is)g(highly)f(lik)o(ely)g(that)i(the)f(mo)o (v)o(es)f(extended)j(a)e(ply)g(ahead)0 756 y(w)o(ould)g(b)q(e)h(in)e (the)i(left-most)e(branc)o(hes)j(of)e(the)h(tree.)23 b(Note)16 b(that)g(other)g(algorithms,)d(suc)o(h)j(as)f(Y)m(oung)g (Brothers)i(W)m(ait,)0 818 y(ha)o(v)o(e)d(pro)q(cessors)i(go)d(idle)h (when)g(there)h(is)f(no)g(w)o(ork)f(left)h(to)g(do)f(on)h(the)g(curren) o(t)i(iteration.)62 880 y(As)f(discussed)h(earlier,)d(load)h(balancing) f(w)o(as)h(used)h(for)e(generating)i(the)f(results)h(giv)o(en)f(here.) 20 b(This)14 b(is)g(based)g(on)g(the)0 942 y(assumption)e(that)h(the)h (primary)e(metric)g(to)h(measuring)g(a)g(parallel)f(program's)f(p)q (erformance)i(is)g(the)h(sp)q(eed)h(with)e(whic)o(h)0 1005 y(it)k(ac)o(hiev)o(es)g(a)g Fm(d)p Fn(-ply)e(result.)28 b(Ho)o(w)o(ev)o(er,)18 b(one)f(could)g(argue)g(that)g(the)g(qualit)o(y) f(of)g(the)i(result)f(ac)o(hiev)o(ed)g(is)g(equiv)n(alen)o(t,)0 1067 y(irresp)q(ectiv)o(e)22 b(of)d(the)h(sp)q(eedup.)38 b(The)20 b(additional)e(sp)q(eculativ)o(e)j(searc)o(h)g(done)f(in)g (cases)h(where)g(the)f(load)f(balance)h(is)0 1129 y(incorrect)15 b(could)f(b)q(e)g(used)h(to)f(impro)o(v)o(e)e(the)i(qualit)o(y)f(of)g (the)i(result)f(returned.)62 1191 y(Other)e(results)f(for)f(parallel)f (searc)o(h)j(algorithms)c(on)i(a)g(net)o(w)o(ork)h(of)e(w)o (orkstations)h(ha)o(v)o(e)h(b)q(een)g(presen)o(ted)i(for)d(the)g(game)0 1254 y(of)k(c)o(hess)h([21].)j(A)d(distributed)g(transp)q(osition)f (table)g(w)o(as)g(used)h(to)g(impro)o(v)o(e)d(the)j(p)q(erformance)f (of)g(the)h Fj(P)l(araPhoenix)0 1316 y Fn(c)o(hess)c(searc)o(hes,)h (and)e(a)f(sp)q(eedup)j(of)d(7)g(w)o(as)h(ac)o(hiev)o(ed)g(on)f(16)h (pro)q(cessors.)19 b(Although)9 b(these)i(results)g(are)f(marginally)c (b)q(etter)0 1378 y(than)14 b(the)g(results)h(presen)o(ted)h(here,)e (the)h(scalabilit)o(y)d(of)h(the)h(algorithm)e(w)o(as)h(extrap)q (olated)h(to)g(a)f(sp)q(eedup)j(of)d(at)h(most)e(8)0 1440 y(on)g(32)f(pro)q(cessors.)20 b(Based)13 b(on)f(the)g(graphs)h (presen)o(ted)h(earlier)e(in)g(this)g(section,)h(w)o(e)f(b)q(eliev)o(e) g(the)h(APHID)f(algorithm)d(will)0 1503 y(outp)q(erform)16 b(on)g(a)g(larger)h(n)o(um)o(b)q(er)f(of)g(pro)q(cessors.)28 b(The)17 b(b)q(ene\014cial)g(e\013ects)i(of)d(the)h(distributed)h (transp)q(osition)e(table)0 1565 y(are)i(deriv)o(ed)g(primarily)d(in)j (the)g(top)g(plies)f(of)g(the)i(searc)o(h)g(tree,)g(and)f(these)h(b)q (ene\014ts)g(are)f(duplicated)g(in)f(APHID)h(b)o(y)0 1627 y(main)o(taining)10 b(the)15 b(top)f Fm(d)397 1612 y Fd(0)422 1627 y Fn(ply)f(exclusiv)o(ely)h(on)g(the)g(master)g(pro)q (cessor.)62 1689 y(Although)c(the)h(results)g(presen)o(ted)h(here)g (for)e(c)o(hess)h(are)g(promising,)d(w)o(e)j(b)q(eliev)o(e)f(that)h(b)q (etter)g(results)h(can)e(b)q(e)h(ac)o(hiev)o(ed.)0 1752 y(The)16 b(results)g(for)f(parallelizing)e Fj(Key)m(ano)p Fn(,)k(an)e(Othello)g(program,)e(yield)i(a)f(9-fold)g(sp)q(eedup)j (with)e(the)g(APHID)h(library)0 1814 y(without)f(the)g(use)h(of)e(load) g(balancing.)20 b(The)c(main)d(di\013erence)k(b)q(et)o(w)o(een)f(the)f (results)i(is)d(that)h(the)h(searc)o(h)g(o)o(v)o(erhead)f(for)0 1876 y Fj(Key)m(ano)h Fn(is)e(less)g(than)g(half)f(of)g(the)i Fj(TheTurk)p Fn('s)f(70\045)f(searc)o(h)i(o)o(v)o(erhead.)62 1939 y(The)g(authors)g(ha)o(v)o(e)f(come)f(up)h(with)g(t)o(w)o(o)g(p)q (ossible)h(h)o(yp)q(otheses)g(for)f(this)h(discrepancy)m(.)20 b(The)14 b(\014rst)h(is)g(that)f Fj(Key)m(ano)0 2001 y Fn(do)q(es)f(not)e(use)i(quiescen)o(t)g(searc)o(h.)19 b(As)12 b(a)f(consequence,)k(the)d(sizes)h(of)e(the)i(v)n(arious)e (pieces)i(of)e(w)o(ork)h(are)g(more)f(predictable;)0 2063 y(hence,)i(load)e(balancing)g(is)g(not)h(necessary)m(.)19 b(Load)11 b(balancing)g(causes)i(searc)o(h)g(o)o(v)o(erhead)f(since)g (it)g(forces)g(a)g(new)g(pro)q(cessor)0 2125 y(to)f(rep)q(eat)i(searc)o (hes)h(done)e(b)o(y)f(a)g(di\013eren)o(t)i(pro)q(cessor.)19 b(The)12 b(load)f(balancing)f(is)i(partially)e(resp)q(onsible)j(for)e (the)h(di\013erence)0 2188 y(in)i(searc)o(h)h(o)o(v)o(erhead.)k(The)c (second)g(p)q(ossible)f(reason)h(is)f(that)g(the)h(searc)o(h)g(windo)o (ws)f(in)f(the)i(sla)o(v)o(es)f(can,)g(in)g(some)f(cases,)0 2250 y(b)q(e)g(larger)f(than)h(the)g(minim)o(al)c(windo)o(w)i(used)i (in)f(the)h(sequen)o(tial)g(program.)i(Although)d(this)h(larger)f (windo)o(w)g(is)g(common)0 2312 y(to)i(b)q(oth)h(parallel)e(implemen)o (tatio)o(ns,)f(it)i(has)g(a)g(m)o(uc)o(h)f(larger)i(e\013ect)h(on)e (the)h(size)g(of)e(the)i(trees)h(searc)o(hed)g(in)e Fj(TheTurk)0 2374 y Fn(than)g(in)f Fj(Key)m(ano)p Fn(.)62 2437 y(The)i(APHID)g (algorithm)c(can)k(supp)q(ort)g(a)f(shared)i(transp)q(osition)e(table,) g(but)g(the)h(algorithm)d(do)q(es)j(not)g(dep)q(end)g(on)0 2499 y(its)g(presence.)22 b(Th)o(us,)15 b(the)g(algorithm)d(gets)j(go)q (o)q(d)f(p)q(erformance)h(on)f(a)h(lo)q(osely-coupled)f(net)o(w)o(ork)h (of)f(w)o(orkstations)g(and)0 2561 y(will)e(p)q(erform)h(ev)o(en)i(b)q (etter)h(on)d(tigh)o(tly-coupled)g(pro)q(cessors.)954 2828 y(14)p eop %%Page: 15 15 15 14 bop 0 195 a Fo(5)69 b(Conclusions)22 b(and)i(F)-6 b(uture)23 b(W)-6 b(ork)0 298 y Fn(The)14 b(APHID)f(algorithm)e(yields) i(go)q(o)q(d)g(sp)q(eedups)i(on)e(a)g(net)o(w)o(ork)g(of)g(w)o (orkstations)g(without)g(the)h(necessit)o(y)g(of)f(a)g(shared)0 361 y(transp)q(osition)g(table.)18 b(Although)13 b(the)i(authors)f(are) g(pleased)g(with)f(these)i(preliminary)c(results,)k(a)e(lot)g(of)g(w)o (ork)g(is)h(left)f(to)0 423 y(b)q(e)i(done.)62 485 y(Our)e(curren)o(t)h (implemen)o(tation)9 b(of)j(APHID)g(uses)i(a)e(\014xed-depth)h(horizon) g(for)f(the)h(master's)e(tree.)19 b(As)13 b(men)o(tioned)e(in)0 548 y(our)i(discussion)h(of)f(load)f(balancing,)g(all)g(p)q(ositions)h (are)h(not)f(equal)g(in)g(the)h(amoun)o(t)e(of)h(searc)o(h)h(e\013ort)g (they)g(require)g(for)f(a)0 610 y(\014xed)g(depth)g(of)e(searc)o(h.)19 b(APHID)13 b(is)f(b)q(eing)g(generalized)h(to)f(supp)q(ort)h(a)f (dynamically)e(c)o(hanging)h(horizon)h(in)g(the)h(master.)62 672 y(Instead)h(of)e(basing)h(the)g(results)i(of)d(the)i(algorithm)c (on)j(the)g(sp)q(eedup,)i(w)o(e)e(are)g(also)g(in)o(terested)h(in)f (the)g(qualit)o(y)f(of)g(the)0 734 y(results)i(returned)h(b)o(y)d(the)i (algorithm.)h(This)e(alternativ)o(e)g(view)f(of)h(parallel)f(p)q (erformance)g(is)h(curren)o(tly)h(b)q(eing)f(explored.)62 797 y(The)i(results)g(rep)q(orted)h(here)f(are)g(based)g(on)e(a)h (simple)f(master/sla)o(v)o(e)g(relationship.)18 b(As)d(the)g(n)o(um)o (b)q(er)e(of)h(pro)q(cessors)0 859 y(increases,)f(the)f(master)f (increasingly)h(b)q(ecomes)f(a)h(b)q(ottlenec)o(k.)18 b(APHID)11 b(has)h(b)q(een)h(generalized)f(to)f(w)o(ork)h(in)f(a)g (hierarc)o(hi-)0 921 y(cal)j(pro)q(cess)j(tree,)e(although)f(this)h (asp)q(ect)h(of)e(the)h(algorithm)d(has)j(not)f(b)q(een)i(tested)g (here.)22 b(Mid-lev)o(el)13 b(pro)q(cesses)18 b(w)o(ould)0 983 y(b)q(eha)o(v)o(e)c(as)f(a)g(sla)o(v)o(e)g(to)o(w)o(ard)g(their)h (master,)e(and)i(as)f(a)g(master)g(to)o(w)o(ard)g(their)h(sla)o(v)o (es.)j(The)d(scalabilit)o(y)e(of)h(the)h(algorithm)0 1046 y(has)g(y)o(et)h(to)f(b)q(e)h(demonstrated)f(on)g(arc)o (hitectures)i(of)e(more)f(than)h(16)g(pro)q(cessors,)i(due)f(to)f (resource)i(limitations)11 b(during)0 1108 y(the)j(academic)f(y)o(ear.) 62 1170 y(P)o(erhaps)i(the)e(biggest)h(con)o(tribution)f(of)f(APHID)i (is)f(that)g(it)g(easily)g(\014ts)h(in)f(to)g(an)g(existing)g(sequen)o (tial)g Fm(\013\014)j Fn(program.)0 1232 y(Not)h(only)e(has)i(APHID)g (b)q(een)h(in)o(tegrated)f(in)o(to)f Fj(TheTurk)h Fn(and)f Fj(Key)m(ano)p Fn(,)j(APHID)e(has)g(b)q(een)g(in)o(tegrated)g(in)o(to)f (the)0 1295 y(c)o(hec)o(k)o(ers)g(program)d Fj(Chinook)j Fn(with)e(one)g(afterno)q(on)h(of)f(e\013ort.)1033 1280 y Fi(4)1072 1295 y Fn(In)g(con)o(trast,)h(the)g(v)o(ersion)g(of)e Fj(Chinook)j Fn(used)f(in)f(the)0 1357 y(1994)f(matc)o(h)g(v)o(ersus)i (Tinsley)e(to)q(ok)h(4)f(to)h(6)g(w)o(eeks)h(to)e(implemen)o(t)e([15].) 0 1494 y Fo(6)69 b(Ac)n(kno)n(wledgemen)n(ts)0 1598 y Fn(This)14 b(w)o(ork)f(w)o(as)h(supp)q(orted)h(b)o(y)f(the)h(Natural)e (Sciences)j(and)d(Engineering)h(Researc)o(h)h(Council)f(of)f(Canada.)0 1735 y Fo(References)21 1818 y Fn([1])19 b(S.)d(G.)g(Akl,)f(D.)h(T.)g (Barnard,)h(and)f(R.)f(J.)h(Doran.)25 b(Design,)16 b(Analysis)g(and)g (Implemen)o(tation)d(of)j(a)g(P)o(arallel)f(T)m(ree)85 1859 y(Searc)o(h)g(Algorithm.)i Fl(IEEE)f(T)m(r)n(ansactions)f(on)h (Pattern)f(A)o(nalysis)g(and)h(Machine)g(Intel)r(ligenc)n(e)p Fn(,)e(P)m(AMI-4\(2\):192{)85 1901 y(203,)f(1982.)21 1975 y([2])19 b(G.)13 b(M.)h(Baudet.)k Fl(The)d(Design)g(and)h (Analysis)e(of)h(Algorithms)f(for)g(Asynchr)n(onous)i(Multipr)n(o)n(c)n (essors)p Fn(.)h(PhD)d(thesis,)85 2017 y(Carnegie)g(Mellon)g(Univ)o (ersit)o(y)m(,)f(Pittsburgh,)h(P)m(A,)f(1978.)k(Av)n(ailable)12 b(as)i(T)m(ec)o(h.)g(Rept.)f(CMU-CS-78-116.)21 2092 y([3])19 b(V.-D.)j(Cung.)44 b Fl(Contribution)23 b(\022)-21 b(a)23 b(l'A)o(lgorithmique)e(Non)j(Num)o(\023)-20 b(erique)23 b(Par)n(al)r(l)o(\022)-20 b(ele:)34 b(Explor)n(ation)23 b(d'Esp)n(ac)n(es)h(de)85 2133 y(R)n(e)n(cher)n(che)p Fn(.)19 b(PhD)13 b(thesis,)i(Univ)o(ersit)o(\023)-20 b(e)14 b(P)o(aris)g(VI,)g(April)f(1994.)21 2208 y([4])19 b(V.)12 b(Da)o(vid.)h Fl(A)o(lgorithmique)f(p)n(ar)n(al)r(l)o(\022)-20 b(ele)12 b(sur)h(les)g(arbr)n(es)f(de)i(d)o(\023)-20 b(ecision)13 b(et)g(r)n(aisonnement)g(en)h(temps)f(c)n(ontr)n(aint)g(-) f(Etude)85 2249 y(et)j(applic)n(ation)g(au)h(minimax)p Fn(.)i(PhD)13 b(thesis,)i(ENSAE,)f(T)m(oulouse,)f(F)m(rance,)h(1993.)21 2324 y([5])19 b(R.)34 b(F)m(eldmann.)78 b Fl(Spielb)n(aumsuche)35 b(mit)e(massiv)h(p)n(ar)n(al)r(lelen)g(Systemen)p Fn(.)80 b(PhD)35 b(thesis,)40 b(Univ)o(ersit\177)-21 b(at-)85 2365 y(Gesam)o(tho)q(c)o(hsc)o(h)o(ule)13 b(P)o(aderb)q(orn,)h(P)o (aderb)q(orn,)g(German)o(y)m(,)c(Ma)o(y)j(1993.)j(In)d(German)f({)h (English)g(translation)f(a)o(v)n(ail-)85 2407 y(able.)21 2482 y([6])19 b(E.)f(W.)e(F)m(elten)i(and)f(S.)h(W.)e(Otto.)29 b(Chess)19 b(on)f(a)f(Hyp)q(ercub)q(e.)31 b(In)17 b(G.)g(F)m(o)o(x,)g (editor,)h Fl(Pr)n(o)n(c)n(e)n(e)n(dings)g(of)h(The)f(Thir)n(d)85 2523 y(Confer)n(enc)n(e)13 b(on)g(Hyp)n(er)n(cub)n(e)f(Concurr)n(ent)h (Computers)f(and)h(Applic)n(ations)p Fn(,)e(v)o(olume)f(I)q (I-Applications,)h(pages)g(1329{)85 2565 y(1341,)i(P)o(assadena,)h(CA,) f(1988.)p 0 2599 780 2 v 46 2626 a Fh(4)64 2638 y Fg(The)e(results)f (for)h Fa(Chinook)i Fg(w)o(ere)e(not)g(a)o(v)n(ailable)e(at)i(the)g (time)g(of)g(writing.)954 2828 y Fn(15)p eop %%Page: 16 16 16 15 bop 21 195 a Fn([7])19 b(C.)c(F)m(erguson)h(and)g(R.)f(E.)g (Korf.)23 b(Distributed)16 b(T)m(ree)g(Searc)o(h)h(and)e(its)h (Application)f(to)g(Alpha-Beta)h(Pruning.)23 b(In)85 237 y Fl(Pr)n(o)n(c)n(e)n(e)n(dings)15 b(of)g(AAAI-88)p Fn(,)e(pages)h(128{132,)e(Sain)o(t)h(P)o(aul,)g(MN,)h(August)g(1988.)21 311 y([8])19 b(R.D.)14 b(Green)o(blatt,)h(D.E.)e(Eastlak)o(e,)i(and)g (S.D.)f(Cro)q(c)o(k)o(er.)22 b(The)15 b(Green)o(blatt)g(Chess)i (Program.)i(In)c Fl(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)85 353 y(the)f(F)m(al)r(l)g(Joint)f(Computer)h(Confer)n(enc)n(e)p Fn(,)e(pages)h(801{810,)e(1967.)21 428 y([9])19 b(F.-h.)c(Hsu.)22 b Fl(L)n(ar)n(ge)16 b(Sc)n(ale)g(Par)n(al)r(lelization)f(of)h(A)o (lpha-Beta)h(Se)n(ar)n(ch:)k(A)o(n)c(A)o(lgorithmic)d(and)j(A)o(r)n (chite)n(ctur)n(al)e(Study)p Fn(.)85 469 y(PhD)g(thesis,)h(Carnegie)g (Mellon)e(Univ)o(ersit)o(y)m(,)g(Pittsburgh,)i(U.S.A.,)e(1990.)20 b(Also)15 b(T)m(ec)o(h.)g(Rept.)g(CMU-CS-90-108,)85 511 y(Carnegie)f(Mellon)g(Univ)o(ersit)o(y)m(,)f(F)m(eb.)g(1990.)0 585 y([10])19 b(R.)11 b(M.)h(Hy)o(att,)g(B.)g(W.)f(Suter,)i(and)e(H.)h (L.)f(Nelson.)16 b(A)c(P)o(arallel)f(Alpha/Beta)h(T)m(ree)g(Searc)o (hing)g(Algorithm.)h Fl(Par)n(al)r(lel)85 627 y(Computing)p Fn(,)h(10\(3\):299{308,)d(1989.)0 702 y([11])19 b(D.)f(Kop)q(ec)i(and)f (I.)f(Bratk)o(o.)33 b(The)19 b(Bratk)o(o-Kop)q(ec)h(Exp)q(erimen)o(t:) 28 b(A)19 b(Comparison)d(of)j(Human)e(and)i(Computer)85 743 y(Performance)11 b(in)f(Chess.)j(In)d(M.R.B.)f(Clark)o(e,)i (editor,)f Fl(A)n(dvanc)n(es)j(in)e(Computer)h(Chess)f(3)p Fn(,)g(pages)g(57{72.)d(P)o(ermagon)85 785 y(Press,)15 b(Oxford,)f(1982.)0 859 y([12])19 b(B.)14 b(C.)g(Kuszmaul.)k Fl(Synchr)n(onize)n(d)e(MIMD)g(Computing)p Fn(.)k(PhD)14 b(thesis,)h(Massac)o(h)o(usetts)h(Institute)f(of)f(T)m(ec)o(hnology)m (,)85 901 y(Cam)o(bridge,)e(MA,)i(1994.)0 976 y([13])19 b(G.)e(Lindstrom.)28 b(The)18 b(Key)g(No)q(de)g(Metho)q(d:)26 b(A)18 b(Highly-P)o(arallel)d(Alpha-Beta)j(Algorithm.)26 b(T)m(ec)o(hnical)18 b(Rep)q(ort)85 1017 y(UUCS)c(83-101,)e(Univ)o (ersit)o(y)i(of)g(Utah,)f(Departmen)o(t)g(of)h(Computer)f(Science,)i (Salt)e(Lak)o(e)h(Cit)o(y)m(,)e(UT,)h(Marc)o(h)i(1983.)0 1092 y([14])k(C.-P)m(.)11 b(P)m(.)g(Lu.)j(P)o(arallel)d(Searc)o(h)h(of) f(Narro)o(w)h(Game)e(Trees.)16 b(Master's)d(thesis,)f(Departmen)o(t)f (of)g(Computing)f(Science,)85 1133 y(Univ)o(ersit)o(y)k(of)f(Alb)q (erta,)h(Edmon)o(ton,)e(Canada,)h(1993.)0 1208 y([15])19 b(P)m(.)13 b(Lu.)18 b(Priv)n(ate)c(comm)o(unication.)o(,)d(1996.)0 1283 y([16])19 b(T.)11 b(A.)f(Marsland)h(and)g(M.)f(S.)h(Campb)q(ell.)g (Parallel)f(Searc)o(h)i(of)e(Strongly)g(Ordered)j(Game)c(Trees.)15 b Fl(A)o(CM)d(Computing)85 1324 y(Surveys)p Fn(,)i(14\(4\):533{551,)d (1982.)0 1399 y([17])19 b(M.)14 b(M.)f(Newb)q(orn.)20 b(Unsync)o(hronized)15 b(Iterativ)o(e)g(Deep)q(ening)f(P)o(arallel)f (Alpha-Beta)h(Searc)o(h.)20 b Fl(IEEE)15 b(T)m(r)n(ansactions)85 1440 y(on)h(Pattern)e(A)o(nalysis)h(and)h(Machine)g(Intel)r(ligenc)n(e) p Fn(,)d(P)m(AMI-10\(5\):687{694,)d(1988.)0 1515 y([18])19 b(J.)c(P)o(earl.)21 b(Asymptotic)14 b(Prop)q(erties)j(of)d(Minimax)e (Trees)17 b(and)d(Game-Searc)o(hing)g(Pro)q(cedures.)23 b Fl(A)o(rti\014cial)15 b(Intel)r(li-)85 1557 y(genc)n(e)p Fn(,)f(14:113{138,)d(1980.)0 1631 y([19])19 b(A.)d(Plaat,)g(J.)g(Sc)o (hae\013er,)i(W.)e(Pijls,)g(and)g(A.)g(de)h(Bruin.)25 b(Nearly)17 b(Optimal)d(Minimax)g(T)m(ree)j(Searc)o(h?)35 b(T)m(ec)o(hnical)85 1673 y(Rep)q(ort)17 b(94-19,)e(Departmen)o(t)h(of) g(Computing)e(Science,)k(Univ)o(ersit)o(y)e(of)f(Alb)q(erta,)i(Edmon)o (ton,)e(Alta.,)h(Decem)o(b)q(er)85 1714 y(1994.)0 1789 y([20])j(A.)14 b(Reinefeld.)k(An)c(Impro)o(v)o(emen)o(t)d(to)j(the)g (Scout)h(Tree-Searc)o(h)g(Algorithm.)h Fl(ICCA)e(Journal)p Fn(,)g(6\(4\):4{14,)d(1983.)0 1864 y([21])19 b(J.)11 b(Sc)o(hae\013er.)k(Distributed)d(Game-T)m(ree)e(Searc)o(hing.)j Fl(Journal)g(of)f(Par)n(al)r(lel)f(and)i(Distribute)n(d)f(Computing)p Fn(,)f(6\(2\):90{)85 1905 y(114,)i(1989.)0 1980 y([22])19 b(I.)12 b(R.)g(Stein)o(b)q(erg)h(and)g(M.)f(Solomon.)h(Searc)o(hing)g (Game)d(Trees)k(in)e(P)o(arallel.)j(In)e Fl(Pr)n(o)n(c)n(c)n(e)n(dings) g(of)h(the)f(1990)i(Interna-)85 2022 y(tional)i(Confer)n(enc)n(e)f(on)h (Par)n(al)r(lel)e(Pr)n(o)n(c)n(essing)h(\(vol.)g(3\))p Fn(,)g(pages)g(9{17,)e(Univ)o(ersit)o(y)h(P)o(ark,)h(P)m(A,)f(1990.)f (P)o(enn.)h(State)85 2063 y(Univ)o(ersit)o(y)f(Press.)0 2138 y([23])19 b(V.)e(Sunderam.)28 b(PVM:)17 b(A)h(F)m(ramew)o(ork)d (for)i(P)o(arallel)g(Distributed)g(Computing.)26 b Fl(Concurr)n(ency:)g (Pr)n(actic)n(e)17 b(and)85 2179 y(Exp)n(erienc)n(e)p Fn(,)d(2\(4\):315{339,)d(Decem)o(b)q(er)j(1990.)0 2254 y([24])19 b(J.-C.)25 b(W)m(eill.)51 b Fl(Pr)n(o)n(gr)n(ammes)25 b(d')o(\023)-20 b(eche)n(cs)26 b(de)g(championnat:)41 b(ar)n(chite)n(ctur)n(e)25 b(lo)n(giciel)r(le)f(synth)o(\022)-20 b(ese)27 b(de)f(fonctions)85 2296 y(d')o(\023)-20 b(evaluations,)15 b(p)n(ar)n(al)r(l)o(\023)-20 b(elisme)14 b(de)h(r)n(e)n(cher)n(che)p Fn(.)j(PhD)13 b(thesis,)i(Univ)o(ersit)o(\023)-20 b(e)14 b(P)o(aris)g(8,)f(Jan)o(uary)h(1995.)954 2828 y(16)p eop %%Page: 17 17 17 16 bop 0 195 a Fo(A)69 b(Description)21 b(of)i(APHID)f(In)n(terface) 0 294 y Fc(A.1)56 b(T)n(yp)r(es)18 b(of)h(Pro)r(cesses)f(within)g (APHID)62 363 y Fk(\017)j Fe(absolute)f(master)p Fn(:)25 b(The)18 b(single)g(pro)q(cess)h(whic)o(h)f(in)o(v)o(ok)o(es)g(all)e (other)j(pro)q(cesses)h(within)e(the)g(APHID)g(pro)q(cess)104 404 y(hierarc)o(h)o(y)m(,)13 b(whic)o(h)h(o)q(ccupies)h(the)f(highest)h (lev)o(el)e(in)h(the)g(pro)q(cess)i(hierarc)o(h)o(y)m(.)62 476 y Fk(\017)21 b Fe(slave)p Fn(:)g(An)o(y)16 b(pro)q(cess)i(that)e(m) o(ust)f(rep)q(ort)i(its)f(searc)o(h)h(results)g(to)f(a)g(pro)q(cess)i (ab)q(o)o(v)o(e)d(it)h(in)g(the)g(hierarc)o(h)o(y)m(.)25 b(With)104 518 y(this)14 b(de\014nition,)f(a)g(pro)q(cess)j(is)e (either)h(the)f(absolute)g(master)f(or)h(a)g(sla)o(v)o(e,)f(and)h(can)g (not)g(b)q(e)g(b)q(oth.)62 589 y Fk(\017)21 b Fe(master)p Fn(:)e(An)o(y)14 b(pro)q(cess)j(that)e(has)g(pro)q(cesses)j(underneath) e(it)e(in)h(the)g(hierarc)o(h)o(y)m(.)21 b(Note)15 b(that)g(it)g(is)g (p)q(ossible)g(for)f(a)104 631 y(pro)q(cess)h(to)f(b)q(e)h(b)q(oth)f(a) f(master)h(and)f(a)h(sla)o(v)o(e)g(if)f(the)h(pro)q(cess)i(hierarc)o(h) o(y)e(has)g(m)o(ultiple)e(lev)o(els.)0 746 y Fc(A.2)56 b(Constan)n(ts)20 b(T)-5 b(o)19 b(Be)f(De\014ned)0 814 y Fn(Since)c(the)h(library)e(is)h(application-indep)q(enden)o(t,)f (some)g(de\014nitions)h(of)f(ho)o(w)g(things)h(are)h(implem)o(en)o(ted) d(m)o(ust)h(b)q(e)h(giv)o(en)0 856 y(to)g(the)g(APHID)g(library)m(.)62 932 y Fk(\017)21 b Fe(APHID)p 217 932 14 2 v 14 w(HASHTYPESIZE)p Fn(:)11 b(The)k(size)f(\(in)g(b)o(ytes\))h(of)e(the)h(hash)g(v)n(alue)g (used)h(in)e(y)o(our)h(program.)62 1003 y Fk(\017)21 b Fe(APHID)p 217 1003 V 14 w(HASHKEYSIZE)p Fn(:)10 b(The)i(size)h(\(in) f(b)o(ytes\))h(of)f(the)h(\\lo)q(c)o(k")e(used)i(to)f(guaran)o(tee)h (that)f(t)o(w)o(o)g(p)q(ositions)f(sharing)h(the)104 1045 y(same)h(hash)h(v)n(alue)f(are)h(the)h(same.)62 1117 y Fk(\017)21 b Fe(APHID)p 217 1117 V 14 w(MOVESIZE)p Fn(:)12 b(The)i(size)h(\(in)f(b)o(ytes\))g(of)g(the)g(represen)o (tation)i(of)d(a)h(mo)o(v)o(e)e(in)h(the)i(application.)62 1189 y Fk(\017)21 b Fe(APHID)p 217 1189 V 14 w(MINUSINF)15 b Fn(and)h Fe(APHID)p 615 1189 V 15 w(PLUSINF)p Fn(:)e(Sp)q (eci\014cations)j(of)e(v)n(alues)h(smaller)f(than)h(the)h(minim)n(um)o (,)c(and)j(larger)104 1230 y(than)e(the)g(maxim)n(um)o(,)c(that)k(the)h (\\ev)n(aluation")d(could)i(p)q(ossibly)f(return,)i(resp)q(ectiv)o(ely) m(.)62 1302 y Fk(\017)21 b Fe(APHID)p 217 1302 V 14 w(INVALIDSCORE)p Fn(:)13 b(A)j(v)n(alue)g(that)g(is)g(outside)g(the)g(range)h(represen)o (ted)h(b)o(y)e(the)h(minim)n(um)11 b(and)16 b(maxim)n(um)104 1344 y(v)n(alues)d(sp)q(eci\014ed)j(previously)m(.)62 1415 y Fk(\017)21 b Fe(APHID)p 217 1415 V 14 w(LOG2)p 319 1415 V 15 w(TABSIZE)p Fn(:)16 b(The)j(size)g(of)e(the)i(APHID)f (table)g(that)g(y)o(ou)g(in)o(tend)g(on)g(using)g(to)g(share)h(b)q(et)o (w)o(een)g(the)104 1457 y(master)c(and)h(the)g(sla)o(v)o(es,)g(tak)o (en)f(to)h(a)f(base)i(2)e(logarithm.)21 b(F)m(or)15 b(example,)g(a)g(v) n(alue)g(of)g(14)g(indicates)h(an)g(APHID)104 1503 y(table)e(with)f(2) 323 1488 y Fi(14)370 1503 y Fn(=)e(16384)i(en)o(tries.)62 1575 y Fk(\017)21 b Fe(APHID)p 217 1575 V 14 w(MAXSLAVEPLYSEARCH)p Fn(:)7 b(The)j(maxim)o(um)c("plytogo")i(v)n(alue)i(that)g(y)o(ou)g (could)g(p)q(ossibly)g(exp)q(ect)i(to)e(hand)g(to)g(a)104 1616 y(sla)o(v)o(e)g(to)g(searc)o(h.)18 b(Note)10 b(that)g(this)h(v)n (alue)e(should)h(not)g(b)q(e)h(excessiv)o(ely)g(large,)g(since)g(this)f (and)g Fe(APHID)p 1683 1616 V 15 w(LOG2)p 1786 1616 V 14 w(TABSIZE)104 1658 y Fn(are)k(the)h(leading)e(determinan)o(ts)g(in)h (the)g(amoun)o(t)e(of)h(memory)f(used)j(b)o(y)e(the)i(APHID)f(library)m (.)62 1730 y Fk(\017)21 b Fe(APHID)p 217 1730 V 14 w (MAXMASTERPLYSEARCH)p Fn(:)10 b(The)k(maxim)o(um)9 b(depth)15 b(that)f(w)o(e)g(exp)q(ect)h(the)g(master)e(should)h(reac)o(h.)62 1802 y Fk(\017)21 b Fe(APHID)p 217 1802 V 14 w(SLAVENODESTOCOMM)p Fn(:)15 b(This)j(should)g(b)q(e)g(set)h(to)f(the)h(n)o(um)o(b)q(er)e (of)h(no)q(des)h(that)f(the)g(sequen)o(tial)h(program)104 1843 y(visits)13 b(on)h(the)h(t)o(yp)q(e)f(of)f(pro)q(cessor)j(b)q (eing)e(used,)g(divided)g(b)o(y)f(10.)0 1958 y Fc(A.3)56 b(Standard)19 b(V)-5 b(ariables)19 b(Used)62 2026 y Fk(\017)i Fe(argv)p Fn(:)e(Standard)c(argumen)o(t)e(list.)20 b(Used)c(to)f (instan)o(tiate)f(the)h(sla)o(v)o(es)g(with)g(the)g(same)f(parameters)h (as)g(the)g(initial)104 2068 y(program.)62 2140 y Fk(\017)21 b Fe(depth)p Fn(:)c(The)d(n)o(um)o(b)q(er)f(of)g(ply)h(the)g(curren)o (t)i(no)q(de)e(is)g(a)o(w)o(a)o(y)f(from)f(the)i(ro)q(ot)g(of)f(the)i (game)d(tree.)62 2212 y Fk(\017)21 b Fe(plytogo)p Fn(:)15 b(The)c(n)o(um)o(b)q(er)f(of)g(ply)h(un)o(til)f(w)o(e)h(reac)o(h)g(the) h(b)q(ottom)d(of)h(the)i(game)d(tree.)18 b(In)11 b(a)g(searc)o(h)h (with)e(no)h(extensions)104 2253 y(or)j(forw)o(ard)f(pruning,)g Fe(plytogo)21 b(+)g(depth)13 b Fn(should)h(b)q(e)g(constan)o(t.)62 2325 y Fk(\017)21 b Fe(&move[i])10 b Fn(or)i Fe(&bestmove)p Fn(:)j(A)d(p)q(oin)o(ter)g(to)f(an)h(area)g(of)f Fe(APHID)p 1098 2325 V 15 w(MOVESIZE)f Fn(b)o(ytes)i(whic)o(h)g(sp)q(eci\014es)h (the)g(mo)o(v)o(e)d(b)q(eing)104 2367 y(pla)o(y)o(ed.)62 2438 y Fk(\017)21 b Fe(p)p 129 2438 V 15 w(hash)p Fn(:)c(A)d(p)q(oin)o (ter)g(to)g(an)g(area)g(of)f Fe(APHID)p 805 2438 V 15 w(HASHTYPESIZE)e Fn(b)o(ytes)k(that)f(con)o(tains)g(the)g(curren)o(t)h (hash)g(v)n(alue.)62 2510 y Fk(\017)21 b Fe(p)p 129 2510 V 15 w(key)p Fn(:)c(A)c(p)q(oin)o(ter)g(to)f(an)g(area)h Fe(APHID)p 729 2510 V 15 w(HASHKEYSIZE)d Fn(b)o(ytes)k(that)e(con)o (tains)h(a)f(lo)q(c)o(k)g(whic)o(h)h(can)g(\\guaran)o(tee")f(the)104 2552 y(b)q(oard)i(stored)h(in)e(the)h(lo)q(cation)f(of)h(the)g(hash)g (table)g(is)g(correct.)62 2624 y Fk(\017)21 b Fe(alpha)13 b Fn(and)g Fe(beta)p Fn(:)k(Searc)o(h)e(windo)o(w)e(used)i(b)o(y)f Fm(\013\014)i Fn(implemen)o(tatio)o(n;)11 b(they)j(are)g(exp)q(ected)i (to)e(b)q(e)h(32-bit)e(in)o(tegers.)62 2696 y Fk(\017)21 b Fe(value)13 b Fn(and)g Fe(score)p Fn(:)k(V)m(alues)d(of)f(leaf)g(no)q (des;)i(they)f(are)g(exp)q(ected)i(to)e(b)q(e)h(32-bit)e(in)o(tegers)h (for)g(this)g(library)m(.)954 2828 y(17)p eop %%Page: 18 18 18 17 bop 0 195 a Fc(A.4)56 b(Stubs)19 b(T)-5 b(o)19 b(Be)f(W)-5 b(ritten)62 263 y Fk(\017)21 b Fe(int)g(aphid)p 304 263 14 2 v 15 w(stub)p 407 263 V 14 w(encodeinit\(char)e(*msg\))p Fn(:)k(Pro)o(vides)17 b(the)g(absolute)g(master)f(with)h(a)f(4000-b)o (yte)g(bu\013er)i(to)104 305 y(store)g(all)d(p)q(ertinen)o(t)k (information)14 b(ab)q(out)i(the)i(ro)q(ot)f(of)f(the)i(game)d(tree.)29 b(The)17 b(return)i(v)n(alue)d(is)h(the)g(n)o(um)o(b)q(er)g(of)104 346 y(b)o(ytes)d(used)h(in)f(the)g(string)g Fe(msg)p Fn(.)62 421 y Fk(\017)21 b Fe(int)g(aphid)p 304 421 V 15 w(stub)p 407 421 V 14 w(decodeinit\(int)e(msg)p 814 421 V 15 w(ln,)j(char)f(*msg\))p Fn(:)15 b(All)9 b(other)i(pro)q (cesses)j(in)c(the)h(system,)f(aside)h(from)104 463 y(the)i(absolute)f (master,)g(receiv)o(e)i(the)f(message)f(length)g(and)g(the)h(message)f (enco)q(ded)i(b)o(y)e Fe(aphid)p 1606 463 V 15 w(stub)p 1709 463 V 15 w(encodeinit)p Fn(,)104 504 y(and)h(should)h(set)h(the)f (ro)q(ot)g(of)g(their)g(game)e(tree,)j(accordingly)m(.)62 579 y Fk(\017)21 b Fe(void)g(aphid)p 326 579 V 14 w(stub)p 428 579 V 15 w(movedownpath\(int)e(num)p 880 579 V 15 w(moves,)h(char)h(*movepath\))p Fn(:)15 b(Called)10 b(b)o(y)h(the)h (sla)o(v)o(es,)f(a)g(series)i(of)104 620 y Fe(num)p 173 620 V 15 w(moves)d Fn(mo)o(v)o(es)h(is)g(giv)o(en)h(in)f Fe(movepath)p Fn(,)f(with)h(eac)o(h)h(mo)o(v)o(e)e(b)q(eing)i Fe(APHID)p 1328 620 V 15 w(MOVESIZE)e Fn(b)o(ytes)i(long.)17 b(The)12 b(routine)104 662 y(should)h(pla)o(y)g(through)h(the)h(mo)o(v) o(es)d(giv)o(en)i(in)f Fe(movepath)f Fn(from)h(the)h(ro)q(ot)g(of)f (the)i(game)d(tree.)62 737 y Fk(\017)21 b Fe(void)g(aphid)p 326 737 V 14 w(stub)p 428 737 V 15 w(moveuppath\(int)e(num)p 836 737 V 15 w(moves,)i(char)g(*movepath\))p Fn(:)14 b(Called)d(b)o(y)g(the)h(sla)o(v)o(es,)f(should)g(com-)104 778 y(pletely)j(undo)f(an)o(y)h(c)o(hanges)g(made)f(b)o(y)h Fe(aphid)p 856 778 V 14 w(stub)p 958 778 V 15 w(movedownpath)p Fn(.)62 853 y Fk(\017)21 b Fe(int)g(aphid)p 304 853 V 15 w(stub)p 407 853 V 14 w(iterativedeepening\(i)o(nt)e(depth,)h(int)h (last,)g(int)g(max\))p Fn(:)d(Called)13 b(b)o(y)h(the)h(sla)o(v)o(es,)f (this)104 894 y(routine)j(should)f(return)i(the)g(searc)o(h)g(depth)f (for)g(the)g(next)g(searc)o(h)h(of)f(a)f(leaf)g(no)q(de)i(from)d(a)h (master's)g(tree.)28 b(F)m(or)104 936 y(most)12 b(programs)h(that)h(do) g(iterativ)o(e)g(deep)q(ening)g(in)g(1)f(ply)h(steps,)h(this)f(should)f (simply)f(return)j Fe(last)21 b(+)h(1)p Fn(.)62 1011 y Fk(\017)f Fe(void)g(aphid)p 326 1011 V 14 w(stub)p 428 1011 V 15 w(preparesearch\(int)e(depth,)h(int)h(plytogo,)f(int)i (winstats[],)d(int)i(*alpha,)104 1052 y(int)g(*beta\))p Fn(:)16 b(Called)10 b(b)o(y)i(the)g(sla)o(v)o(es,)f(this)h(routine)g (sets)g(the)g(initial)e(windo)o(w)h(searc)o(hed)i(b)o(y)e(the)h(sla)o (v)o(es.)17 b(Statistics)104 1094 y(on)12 b(previous)h(searc)o(hes)h (and)f(the)g(curren)o(t)h(guessed)g(score)g(at)e(the)h(ro)q(ot)g(are)f (passed)i(in)e(via)g(the)h Fe(winstats[])d Fn(arra)o(y)m(.)104 1135 y(The)j(routine)f(should)h(set)g Fe(*alpha)e Fn(and)h Fe(*beta)g Fn(b)q(efore)h(terminating.)j(F)m(urthermore,)c(this)g (routine)h(should)f(ensure)104 1177 y(that)i(an)o(y)f(global)f("alarm") g(states)j(ha)o(v)o(e)e(b)q(een)i(turned)g(o\013.)62 1251 y Fk(\017)21 b Fe(int)g(aphid)p 304 1251 V 15 w(stub)p 407 1251 V 14 w(alphabeta\(int)f(depth,)g(int)h(plytogo,)f(int)i (alpha,)e(int)h(beta\))p Fn(:)c(Called)c(b)o(y)h(b)q(oth)104 1293 y(the)f(master)e(and)h(the)h(sla)o(v)o(es,)f(this)g(routine)g (should)g(call)g(y)o(our)g(implem)o(en)o(tation)d(of)j Fm(\013\014)r Fn(,)g(and)g(return)h(the)g(minim)o(ax)104 1334 y(v)n(alue)g(bac)o(k)h(to)g(the)g(APHID)g(library)m(.)62 1409 y Fk(\017)21 b Fe(int)g(aphid)p 304 1409 V 15 w(stub)p 407 1409 V 14 w(evaluate\(int)f(depth,)g(int)i(alpha,)e(int)h(beta\))p Fn(:)c(Called)c(b)o(y)g(the)h(master)f(the)h(\014rst)g(time)104 1451 y(it)g(visits)h(a)f(leaf)g(of)g(its)h(tree,)g(this)g(routine)g (should)f(simply)f(call)h(y)o(our)g(ev)n(aluation)f(routine)i(and)g (return)g(the)h(score)104 1492 y(for)d(the)i(p)q(osition)e(reac)o(hed)i (at)f Fe(depth)f Fn(ply)g(within)g(the)i(tree.)62 1567 y Fk(\017)21 b Fe(int)g(aphid)p 304 1567 V 15 w(stub)p 407 1567 V 14 w(stopsearch\(int)e(pass)p 836 1567 V 15 w(stats[]\))p Fn(:)j(Called)16 b(only)f(b)o(y)i(the)g(absolute)f (master)g(pro)q(cess,)j(this)104 1608 y(routine)d(should)g(c)o(hec)o(k) h(y)o(our)e(timer)g(and)h(determine)g(if)f(y)o(our)h(time)e(limit)f (has)k(b)q(een)g(exceeded)h(for)d(a)h(searc)o(h.)25 b(If)104 1650 y(the)14 b(time)f(limit)e(has)j(b)q(een)h(exceeded,)h(this)e (routine)g(should)f(return)i(1;)f(otherwise,)g(0.)62 1725 y Fk(\017)21 b Fe(int)g(aphid)p 304 1725 V 15 w(stub)p 407 1725 V 14 w(visited\(\))p Fn(:)c(Called)d(b)o(y)g(the)g(sla)o(v)o (es,)g(this)g(should)g(return)i(a)e(global)e(coun)o(t)j(of)e(the)i(n)o (um)o(b)q(er)f(of)104 1766 y(no)q(des)g(visited)g(b)o(y)g(the)g (program.)0 1882 y Fc(A.5)56 b(In)n(terface)18 b(Calls)h(Used)f(b)n(y)h (Master)g(and)g(Sla)n(v)n(e)62 1951 y Fk(\017)i Fe(void)g(aphid)p 326 1951 V 14 w(startup\(argv\))p Fn(:)k(In)19 b(the)g(\014rst)h(pro)q (cess)g(run,)g(PVM)f(is)g(spa)o(wned)g(on)g(the)g(mac)o(hines)f(sp)q (eci\014ed,)104 1992 y(and)c(a)f(sla)o(v)o(e)h(pro)q(cess)i(is)e(spa)o (wned)g(with)g(the)h(same)e(argumen)o(t)g(list)g Fe(\(argv\))g Fn(as)h(the)h(master,)e(as)h(sp)q(eci\014ed)i(b)o(y)d(the)104 2034 y Fe(aphid.config)e Fn(\014le.)18 b(In)c(a)g(spa)o(wned)g(pro)q (cess,)h(the)g(APHID)f(library)f(nev)o(er)i(exits)f(this)g(function)g (call.)62 2108 y Fk(\017)21 b Fe(void)g(aphid)p 326 2108 V 14 w(exit\(\))p Fn(:)j(This)17 b(routine)h(remo)o(v)o(es)e(a)h(pro)q (cess)j(from)15 b(the)j(PVM)g(group,)f(and)g(it)g(should)g(b)q(e)h (called)104 2150 y(b)q(efore)e(an)o(y)f(pro)q(cess)j(exits)e(\(due)g (to)g(errors)h(or)e(normal)f(completion\).)21 b(If)16 b(the)g(pro)q(cess)h(is)f(the)g(absolute)g(master,)104 2191 y(completion)11 b(of)i(this)h(routine)f(ensures)j(that)d(all)f(of) h(the)h(spa)o(wned)g(pro)q(cesses)i(ha)o(v)o(e)d(b)q(een)i(sh)o(ut)f (do)o(wn)f(successfully)m(.)62 2266 y Fk(\017)21 b Fe(int)g(aphid)p 304 2266 V 15 w(master\(\))p Fn(:)16 b(Returns)f(1)e(if)g(the)i(pro)q (cess)h(is)d(a)h(master)f(in)h(the)g(hierarc)o(h)o(y)m(,)g(and)f(0)h (otherwise.)62 2341 y Fk(\017)21 b Fe(int)g(aphid)p 304 2341 V 15 w(slave\(\))p Fn(:)14 b(Returns)d(1)f(if)g(the)h(pro)q(cess)h (w)o(as)e(spa)o(wned,)h(returns)h(0)e(if)f(it)h(is)g(the)h(absolute)f (master)g(pro)q(cess)104 2382 y(whic)o(h)k(spa)o(wned)h(the)g(other)g (pro)q(cesses.)23 b(Note)15 b(that)f(a)h(pro)q(cess)h(can)f(b)q(e)g(b)q (oth)f(a)h(sla)o(v)o(e)f(and)g(a)g(master)g(dep)q(ending)104 2424 y(on)f(the)i(hierarc)o(h)o(y)f(sp)q(eci\014ed)i(in)d Fe(aphid.config)p Fn(.)954 2828 y(18)p eop %%Page: 19 19 19 18 bop 0 195 a Fc(A.6)56 b(In)n(terface)18 b(Calls)h(Used)f(b)n(y)h (Masters)g(Only)62 263 y Fk(\017)i Fe(void)g(aphid)p 326 263 14 2 v 14 w(initserach\(int)e(maxdepth\))p Fn(:)d(Called)d(b)o (y)h(the)g(absolute)g(master)g(pro)q(cess,)h(this)f(pro)q(cedure)h (pre-)104 305 y(pares)i(to)g(start)g(a)f(searc)o(h)i(in)e(parallel.)26 b(This)16 b(routine)h(calls)f Fe(aphid)p 1212 305 V 15 w(stub)p 1315 305 V 15 w(encodeinit)p Fn(,)f(and)h(then)h(informs)e (all)104 346 y(of)e(the)i(other)g(pro)q(cesses)i(of)c(the)i(curren)o(t) h(state)f(of)e(the)i(game.)i(The)e(parameter)f(indicates)g(the)h(maxim) n(um)10 b(depth)104 388 y(that)k(an)o(y)f(pro)q(cess)j(is)e(nominall)o (y)d(allo)o(w)o(ed)i(to)g(searc)o(h,)i Fl(not)g(including)h(se)n(ar)n (ch)e(extensions)p Fn(.)62 463 y Fk(\017)21 b Fe(int)g(aphid)p 304 463 V 15 w(rootsearch\(int)e(depth,)h(int)h(plytogo,)f(int)i (alpha,)e(int)h(beta\))p Fn(:)26 b(This)18 b(routine)h(is)f(called)104 504 y(b)o(y)d(the)h(absolute)g(master,)e(instead)i(of)f(calling)f(the)i (t)o(ypical)f Fm(\013\014)i Fn(implemen)o(taiton.)i(It)d(allo)o(ws)e(a) h(master)g(pro)q(cess)104 546 y(to)i(do)g(m)o(ultiple)e(passes)k(of)e (the)h(tree)g(un)o(til)f(the)h(searc)o(h)g(is)g(completed,)f(or)g(the)h (alarm)d(has)j(b)q(een)g(signalled)f(via)104 587 y Fe(aphid)p 217 587 V 14 w(stub)p 319 587 V 15 w(stopsearch)p Fn(.)f(If)e(the)g (searc)o(h)i(is)d(allo)o(w)o(ed)g(to)h(complete,)f(this)h(routine)g (returns)h(the)g(minim)o(ax)c(v)n(alue)104 629 y(of)i(the)i(tree)g (that)f(it)f(has)h(b)q(een)h(ask)o(ed)f(to)g(searc)o(h.)62 703 y Fk(\017)21 b Fe(int)g(aphid)p 304 703 V 15 w(intnode)p 473 703 V 14 w(premove\(int)e(depth,)i(char)g(*moveptr\))p Fn(:)15 b(Called)d(b)o(y)h(the)g(absolute)g(master,)e(this)i(rou-)104 745 y(tine)h(stores)h(mo)o(v)o(es)e(made)f(b)q(efore)j(a)f(call)f(to)g Fe(aphid)p 938 745 V 15 w(rootsearch)f Fn(in)h(the)i(mo)o(v)o(e)d (list.)62 820 y Fk(\017)21 b Fe(void)g(aphid)p 326 820 V 14 w(endsearch\(\))p Fn(:)15 b(The)e(absolute)f(master)g(should)g (call)f(this)i(routine)f(when)h(it)f(is)g(\014nished)h(searc)o(hing)f (a)104 861 y(tree)i(that)e(has)h(b)q(een)h(called)e(;)h(it)f(stops)h (the)g(sla)o(v)o(es)g(from)e(w)o(orking)g(on)i(the)g(lea)o(v)o(es)g(of) f(the)h(game)e(tree)j(and)e(prepares)104 903 y(the)i(sla)o(v)o(es)g(to) g(receiv)o(e)h(a)f(new)g(ro)q(ot)g(p)q(osition.)62 977 y Fk(\017)21 b Fe(void)g(aphid)p 326 977 V 14 w(horizon\(int)f(depth\)) p Fn(:)15 b(A)d(\\master")e(pro)q(cess)j(calls)e(this)h(routine)f(to)g (determine)h(if)e(it)h(has)h(reac)o(hed)104 1019 y(its)i(arti\014cial)f (horizon.)62 1094 y Fk(\017)21 b Fe(void)g(aphid)p 326 1094 V 14 w(eval)p 428 1094 V 15 w(leaf\(int)f(alpha,)h(int)g(beta,)g (int)g(depth,)g(char)g(*p)p 1403 1094 V 15 w(hash,)g(char)g(*p)p 1702 1094 V 15 w(key\))p Fn(:)104 1135 y(This)10 b(routine)h (determines)g(a)f(score)i(v)n(alue)d(for)h(the)i(leaf,)e(based)h(on)f (the)h(b)q(est)h(information)7 b(a)o(v)n(ailable)h(to)j(the)g(master.) 104 1177 y Fe(p)p 129 1177 V 15 w(hash)i Fn(and)h Fe(p)p 348 1177 V 15 w(key)g Fn(are)g(required)h(to)f(determine)f(if)g(this)h (no)q(de)h(has)f(b)q(een)h(previously)e(visited.)62 1251 y Fk(\017)21 b Fe(void)g(aphid)p 326 1251 V 14 w(intnode)p 494 1251 V 15 w(start\(int)f(depth,)g(char)h(*p)p 1032 1251 V 15 w(hash,)g(char)g(*p)p 1331 1251 V 15 w(key\))p Fn(:)16 b(Called)11 b(b)o(y)g(a)h(master)f(pro)q(cess,)104 1293 y(this)j(routine)g(initializes)e(b)q(ound)i(gathering)g (information)d(for)i(an)h(in)o(terior)f(no)q(de)h(within)f(the)i(game)d (tree.)19 b Fe(p)p 1850 1293 V 16 w(hash)104 1334 y Fn(and)13 b Fe(p)p 209 1334 V 16 w(key)g Fn(are)h(required)h(to)f(determine)g(if) f(this)h(no)q(de)g(has)g(b)q(een)h(previously)f(visited.)62 1409 y Fk(\017)21 b Fe(void)g(aphid)p 326 1409 V 14 w(intnode)p 494 1409 V 15 w(move\(int)f(depth,)g(char)h(*moveptr\))p Fn(:)k(Called)18 b(b)o(y)g(a)g(master)g(pro)q(cess,)i(this)f(routine) 104 1451 y(inserts)c(the)f(mo)o(v)o(e)e(p)q(oin)o(ted)i(to)f(b)o(y)h Fe(moveptr)e Fn(in)o(to)h(a)h(hidden)g(mo)o(v)o(e)e(list)h(that)h(will) e(ev)o(en)o(tually)h(b)q(e)i(sen)o(t)f(to)g(a)f(sla)o(v)o(e)104 1492 y(in)g Fe(aphid)p 265 1492 V 15 w(eval)p 368 1492 V 15 w(leaf)p Fn(.)62 1567 y Fk(\017)21 b Fe(void)g(aphid)p 326 1567 V 14 w(intnode)p 494 1567 V 15 w(update\(int)e(depth,)i(int)g (value\))p Fn(:)27 b(Called)19 b(b)o(y)f(the)i(master)f(pro)q(cess,)j (this)d(routine)104 1608 y(tak)o(es)d(the)g(v)n(alue)f(returned)j(b)o (y)d(the)i(c)o(hild)e Fm(\013\014)j Fn(call)d(and)h(uses)h(it)e(to)h (up)q(date)g(the)h(hidden)e(\\b)q(ound")h(information)104 1650 y(gathered)f(for)e(ev)o(ery)i(no)q(de)f(in)f(the)i(master's)e (tree.)62 1725 y Fk(\017)21 b Fe(void)g(aphid)p 326 1725 V 14 w(intnode)p 494 1725 V 15 w(fixbound\(int)e(depth\))p Fn(:)h(In)c(the)g(case)h(of)e(a)h(cuto\013,)g(this)g(routine)g(will)e (\014x)h(the)i(hidden)104 1766 y(b)q(ound)d(information)d(when)j(not)g (all)f(mo)o(v)o(es)f(ha)o(v)o(e)i(b)q(een)h(fully)d(explored.)62 1841 y Fk(\017)21 b Fe(void)g(aphid)p 326 1841 V 14 w(intnode)p 494 1841 V 15 w(end\(int)f(depth,)h(int)g(*score\))p Fn(;)12 b(This)j(routine)f(is)g(called)g(b)o(y)h(a)f(master)f(for)h(ev) o(ery)i(in-)104 1882 y(ternal)d(no)q(de)g(within)f(the)i(tree,)g(and)e (ensures)j(that)e(the)g(score)i(returned)f(is)f(consisten)o(t)h(with)e (previously)h(gathered)104 1924 y(information)e(ab)q(out)j(the)g(no)q (de.)0 2040 y Fc(A.7)56 b(In)n(terface)18 b(Calls)h(Used)f(b)n(y)h(Sla) n(v)n(es)g(Only)62 2108 y Fk(\017)i Fe(int)g(aphid)p 304 2108 V 15 w(checkalarm\(\))p Fn(:)e(This)d(routine)h(c)o(hec)o(ks)g (to)f(see)h(if)f(a)f(searc)o(h)j(should)e(b)q(e)g(terminated.)24 b(If)16 b(the)h(v)n(alue)104 2150 y(returned)f(is)e(equal)f(to)h(0,)g (the)h(searc)o(h)g(should)f(con)o(tin)o(ue.)19 b(If)13 b(the)i(v)n(alue)f(returned)h(is)f(not)h(equal)e(to)h(0,)g(the)g (curren)o(t)104 2191 y(searc)o(h)h(has)f(b)q(een)h(in)o(terrupted,)g (and)e(w)o(e)h(should)g(terminate)f(it)h(in)f(a)h(\\nice")g(w)o(a)o(y)m (.)954 2828 y(19)p eop %%Page: 20 20 20 19 bop 0 195 a Fc(A.8)56 b(The)18 b(\\aphid.con\014g")h(File)e (Description)62 263 y Fk(\017)k Fn(The)15 b(\014rst)g(line)f(con)o (tains)h(t)o(w)o(o)f(in)o(tegers:)21 b(The)15 b(n)o(um)o(b)q(er)f(of)g (lev)o(els)g(in)g(the)i(pro)q(cess)g(hierarc)o(h)o(y)m(,)e(and)h(the)g (minim)n(um)104 305 y(gran)o(ularit)o(y)d(of)i(w)o(ork)f(that)h(w)o(e)g (are)h(allo)q(cated)e(in)g(parallel.)62 380 y Fk(\017)21 b Fn(The)d(next)g(lines)g(eac)o(h)g(con)o(tain)g(one)g(in)o(teger,)g (eac)o(h)g(in)o(teger)h(represen)o(ting)g(the)f(v)n(alue)g(of)f Fm(d)1607 365 y Fd(0)1636 380 y Fn(for)g(a)h(lev)o(el)f(in)g(the)104 421 y(pro)q(cess)e(hierarc)o(h)o(y)m(.)62 496 y Fk(\017)21 b Fn(The)14 b(last)g(lines)g(indicate)h(what)f(mac)o(hines)f(the)i(pro) q(cesses)i(should)c(b)q(e)i(spa)o(wned)g(on,)f(and)g(what)g(executable) h(is)f(to)104 537 y(b)q(e)j(run,)g(one)g(line)f(p)q(er)i(pro)q(cess)g (to)f(b)q(e)g(spa)o(wned.)27 b(By)17 b(default,)f(APHID)h(will)e(spa)o (wn)i(an)f(executable)i(with)e(the)104 579 y(same)d(program)f(name)h (as)h(the)h(original)d(program)g(unless)j(a)f Fe(#)f Fn(c)o(haracter)j(app)q(ears)e(on)g(the)h(line,)e(whic)o(h)h(indicates) 104 620 y(a)h(separation)h(b)q(et)o(w)o(een)h(the)f(mac)o(hine)e(name)g (and)i(the)g(program)e(name.)22 b(The)16 b(absolute)f(master)g(pro)q (cess)j(is)d(not)104 662 y(listed)c(in)f(this)h(hierarc)o(h)o(y)m(.)17 b(A)10 b(pro)q(cess)j(hierarc)o(h)o(y)e(can)g(b)q(e)g(sp)q(eci\014ed)i (using)d(tabs)h(to)g(mo)o(v)o(e)e(the)i(start)h(of)e(the)h(mac)o(hine) 104 703 y(name)h(o)o(v)o(er)i(in)g(the)g(\014le.)954 2828 y(20)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF