Comp Alg1
Comp Alg1
Comp Alg1
)#
3XQ`dUb!! Ci]R_\YS`b_WbQ]]Y^WQ^TS_]`edUbQ\WURbQ
Ci]R_\YS`b_WbQ]]Y^WQ^TS_]`edUbQ\WURbQ
2QH RI WKH PRVW UHYROXWLRQDU\ FRPSXWHU DSSOLFDWLRQV RI UHFHQW \HDUV KDV EHHQ WKH GHYHORSPHQW RI
SURJUDPV WKDW SHUIRUP YDULRXV DOJHEUDLF DQG PDWKHPDWLFDO RSHUDWLRQV RQ V\PEROV UDWKHU WKDQ RQ
QXPEHUV 3URJUDPV VXFK DV 5('8&( 6&+2216&,3 0$&6<0$ '(5,9( 0DWKHPDWLFD RU
0DSOH KDYH HOLPLQDWHG PXFK RI WKH WHGLXP RI OHQJWK\ SDSHUDQGSHQFLO PDQLSXODWLRQV QRW WR
PHQWLRQ UHGXFLQJ WKH LQFLGHQFH RI DOJHEUDLF HUURUV
6\PEROLF SURJUDPPLQJ LV EDVHG RQ UXOHV³VHWV RI JHQHUDOL]HG LQVWUXFWLRQV WKDW WHOO WKH FRPSXWHU KRZ
WR WUDQVIRUP RQH VHW RI WRNHQV LQWR DQRWKHU $Q DVVHPEOHU HJ LQSXWV D VHULHV RI PDFKLQH LQVWUXFWLRQV
LQ PQHPRQLF IRUP DQG RXWSXWV D VHULHV RI QXPEHUV WKDW UHSUHVHQW WKH DFWXDO PDFKLQH LQVWUXFWLRQV
DV ELQDU\ QXPEHUV LQ H[HFXWDEOH IRUP +LJKHU RQ WKH VFDOH RI FRPSOH[LW\ D FRPSLOHU LQSXWV KLJKOHYHO
ODQJXDJH FRQVWUXFWV IRUPHG DFFRUGLQJ WR VSHFLILF UXOHV D ´JUDPPDUµ DQG RXWSXWV DQ H[HFXWDEOH
SURJUDP LQ DQRWKHU ODQJXDJH VXFK DV DVVHPEOHU RU PDFKLQH FRGH 7R WDNH EXW RQH H[DPSOH WKH
)2575$1 FRPSLOHU UHFRJQL]HV DQG WUDQVODWHV WKHP LQWR PDFKLQH ODQJXDJH WH[W VWULQJV UHSUH
VHQWLQJ PDWKHPDWLFDO UHODWLRQV LQ TXDVLDOJHEUDLF IRUP
:KDW GR UXOHV KDYH WR GR ZLWK FRPSXWDWLRQDO PHWKRGV RI SK\VLFV" 7KH FUXFLDO HOHPHQW LQ WKH
UXOHEDVHG VW\OH RI SURJUDPPLQJ LV WKH DELOLW\ WR VSHFLI\ JHQHUDO SDWWHUQV RU HYHQ FODVVHV RI SDWWHUQV
VR WKH FRPSXWHU FDQ UHFRJQL]H WKHP LQ WKH LQSXW DQG WDNH DSSURSULDWH DFWLRQ )RU H[DPSOH LQ D
PRGHUQ KLJKHQHUJ\ SK\VLFV H[SHULPHQW WKH UDWH DW ZKLFK YDULRXV SDUWLFOHV LPSLQJH RQ GHWHFWRUV
PLJKW EH GLVFUHWH HYHQWV SHU VHFRQG 6LQFH HDFK VXFK HYHQW PLJKW EH UHSUHVHQWHG E\ QXPEHUV
WKH VWRUDJH UHTXLUHPHQWV IRU UHFRUGLQJ WKH UHVXOWV RI D W\SLFDO H[SHULPHQW ODVWLQJ PRQWKV RI
UXQQLQJ WLPH PLJKW EH ² E\WHV RU ² KLJKFDSDFLW\ GLVN GULYHV &OHDUO\ VR PXFK
VWRUDJH LV RXW RI WKH TXHVWLRQ DQG PRVW RI WKH LQFRPLQJ GDWD PXVW EH GLVFDUGHG 7KDW LV VXFK
H[SHULPHQWV GHPDQG H[WUHPHO\ IDVW ILOWHULQJ PHWKRGV WKDW FDQ GHWHUPLQH³LQ WR µVHF³
ZKHWKHU D JLYHQ HYHQW LV LQWHUHVWLQJ 7KH FULWHULD IRU ´LQWHUHVWLQJµ PD\ EH TXLWH JHQHUDO DQG PD\ QHHG
WR EH FKDQJHG GXULQJ WKH UXQQLQJ RI WKH H[SHULPHQW ,Q D ZRUG WKH\ PXVW EH VSHFLILHG E\ VRPH IRUP
RI SDWWHUQ UHFRJQLWLRQ SURJUDP UDWKHU WKDQ KDUGZLUHG
6LQFH WKH SKLORVRSK\ RI WKLV ERRN LV WKDW VWXGHQWV VKRXOG NQRZ ZKDW LV LQVLGH WKH EODFN ER[HV ZH
LOOXVWUDWH UXOHEDVHG SURJUDPPLQJ ZLWK VRPH VLPSOH DSSOLFDWLRQV D SDUHGGRZQ )25PXOD 75$1V
ODWRU
VXLWDEOH IRU SDUVLQJ LQWHJHU H[SUHVVLRQV LQWR )RUWK D VLPSOH SURJUDP IRU PDQLSXODWLQJ WKH γ
PDWULFHV RI TXDQWXP ILHOG WKHRU\ DQG D SURJUDP IRU V\PEROLF GLIIHUHQWLDWLRQ
! 9^dUWUb6?B]e\QDB1>c\Qd_b
7KH HYDOXDWLRQ RI PDWKHPDWLFDO H[SUHVVLRQV LV EDVHG RQ UHFRJQL]LQJ JHQHUDOL]HG SDWWHUQV EDVHG RQ
UXOHV )LUVW ZH VWDWH WKH UXOHV IRU WUDQVODWLQJ VLPSOH IRUPXODV
Be\Uc
7R VSHFLI\ UXOHV ZH QHHG D ODQJXDJH WR H[SUHVV WKHP LQ 7KDW LV ZH QHHG WR EH DEOH WR GHVFULEH WKH
JUDPPDU RI WKH UXOHV 2QH VWDQGDUG QRWDWLRQ UHSUHVHQWV UXOHV DV UHJXODU H[SUHVVLRQV 7KH IROORZLQJ
GHVFULSWLRQ RI D UHGXFHG )2575$1 LOOXVWUDWH KRZ WKLV ZRUNV
\ NOTATION:
\ | -> “or”,
\ ^ -> “unlimited repetitions”
\ ^n -> “0-n repetitions”
\ Q -> “empty set”
\ & -> + | -
\ % -> * | /
\ FORMULAS:
\ <id> -> <letter> {<letter>|<digit>}^6
\ <assign> -> <id> = <expression>
\ <expressionn> -> <term> | <term> & <expression>
\ <term> -> <factor>|<factor> % <term>
\ <factor> -> <id> | integer | ( <expression> )
$QJOH EUDFNHWV GHQRWH JUDPPDWLFDO HOHPHQWV VXFK DV <expression> DUURZV -> PHDQ ´LV GHILQHG
E\µ RWKHU QRWDWLRQDO FRQYHQWLRQV VXFK DV ´_µ WR VWDQG IRU ´RUµ DUH OLVWHG LQ WKH NOTATION VHFWLRQ
RI WKH UXOHV OLVW IRU PQHPRQLF FRQYHQHQLHQFH $ VWDWHPHQW VXFK DV
WKHUHIRUH PHDQV
1^ Y^dUWUb Yc TUVY^UT Ri Q^ _`dY_^Q\ \UQTY^W ]Y^ec cYW^ V_\\_gUT Ri ! TYWYd gXYSX Yc Y^ deb^ V_\\_gUT
PHDQV
6HH $9 $KR 5 6HWKL DQG -' 8OOPDQ &RPSLOHUV … $GGLVRQ:HVOH\ 5HDGLQJ
@8IC%%! 3_]`edQdY_^Q\=UdX_Tc_V@XicYSc !)%
3XQ`dUb!! Ci]R_\YS`b_WbQ]]Y^WQ^TS_]`edUbQ\WURbQ
VHHPV WR EH GHILQHG LQ WHUPV RI LWVHOI 6R LW LV D JRRG EHW WKDW D SURJUDP WKDW UHFRJQL]HV DQG WUDQVODWHV
DQ H[SUHVVLRQ FDQ EH ZULWWHQ UHFXUVLYHO\
D__\c
7R DSSO\ D UXOH VWDWHG DV D UHJXODU H[SUHVVLRQ WKH SURJUDP PXVW EH DEOH WR UHFRJQL]H D JLYHQ SDWWHUQ
7KDW LV JLYHQ D VWULQJ ZH QHHG WR EH DEOH WR GHFLGH ZKHWKHU LW LV DQ LQWHJHU RU VRPHWKLQJ HOVH :H
GR WKLV E\ VWHSSLQJ WKURXJK WKH VWULQJ RQH FKDUDFWHU DW D WLPH IROORZLQJ WKH UXOH
7KLV SDWWHUQ EHJLQV ZLWK D PLQXV RU QRWKLQJ IROORZHG E\ D GLJLW DQG ]HUR WR HLJKW PRUH GLJLWV
@QddUb^bUS_W^YjUbc
2QH RIWHQ VHHV SDWWHUQ UHFRJQL]HUV H[SUHVVHG DV FRPSOH[ ORJLF WUHHV LH DV VHTXHQFHV RI QHVWHG
FRQGLWLRQDOV DV LQ WKH IORZ GLDJUDP RQ WKH QH[W SDJH $V ZH VHH WKH WUHH LV ILYH OHYHOV GHHS HYHQ
WKRXJK ZH KDYH FRQFHDOHG WKH GHFLVLRQV SHUWDLQLQJ WR WKH H[SRQHQW SDUW RI WKH QXPEHU LQ D ZRUG
exponent? :KHQ SURJUDPPHG FRQYHQWLRQDOO\ ZLWK IF… ELSE… THEN VWDWHPHQWV WKH SUR
JUDP EHFRPHV WRR FRPSOH[ IRU FRPSUHKHQVLRQ RU PDLQWDLQDQFH
,W KDV EHHQ NQRZQ IRU PDQ\ \HDUV WKDW D EHWWHU ZD\ WR DSSO\ JHQHUDO UXOHV³HJ WR GHWHUPLQH ZKHWKHU
D JLYHQ VWULQJ FRQIRUPV WR WKH UXOHV IRU ´IORDWLQJ SRLQW QXPEHUµ³XVHV ILQLWH VWDWH PDFKLQHV )60
+HUH LV DQ H[DPSOH ZULWWHQ LQ VWDQGDUG )RUWK
%\ WKHRUHP D UHFXUVLYH SURJUDP FDQ DOZD\V EH ZULWWHQ QRQUHFXUVLYHO\ +RZHYHU WKLV SURFHVV RIWHQ
KLGHV WKH VWUXFWXUH RI WKH SURJUDP DQG PDNHV LW XQQHFHVVDULO\ FRPSOH[
7KHVH GHIHFWV RI QHVWHG FRQGLWLRQDOV DUH JHQHUDOO\ UHFRJQL]HG &RPPHUFLDOO\ DYDLODEOH &$6( WRROV VXFK
DV 6WLUOLQJ &DVWOH·V/RJLF *HP WKDW WUDQVODWHV ORJLFDO UXOHV WR FRQGLWLRQDOV DQG 0DWUL[ 6RIWZDUH·V0D
WUL[ /D\RXWDQG $<(&2 ,QF·V &203(',725 WKDW WUDQVODWH WDEXODU UHSUHVHQWDWLRQV RI )60V WR FRQ
GLWLRQDOV LQ DQ\ RI VHYHUDO ODQJXDJHV ZHUH RULJLQDOO\ GHYHORSHG DV LQKRXVH DLGV
!)& 9^dUWUb6?B]e\QDB1>c\Qd_b
@8IC%%! 3_]`edQdY_^Q\=UdX_Tc_V@XicYSc !)'
3XQ`dUb!! Ci]R_\YS`b_WbQ]]Y^WQ^TS_]`edUbQ\WURbQ
: fp#? ( $adr -- f)
DUP 0 OVER COUNT + C! \ add terminator
DUP C@ 1+ OVER C! \ count =count+1
COUNT OVER + 1- SWAP ( end beg )
skip-
skip_dig
skip_dp
skip_dig
skip_exponent ( end beg’ )
TUCK ( beg’ end beg’ )
= \ beg’ = end ?
SWAP C@ 0= AND ; \ and last_char = terminal?
7KDW LV
6Y^YdUcdQdU]QSXY^Uc
-XVW DV ZH QHHG D )60 WR DFKLHYH D
JUDFHIXO GHILQLWLRQ RI fp#? ZH PLJKW
WU\ WR GHILQH skip_exponent DV D
VWDWH PDFKLQH DOVR 7KLV PHDQV LW LV
WLPH WR GHILQH ZKDW ZH PHDQ E\ ILQLWH
VWDWH PDFKLQHV $ ILQLWH VWDWH PD
FKLQH LV D SURJUDP RULJLQDOO\ LW ZDV
D KDUGZLUHG VZLWFKLQJ FLUFXLW WKDW
WDNHV D VHW RI GLVFUHWH PXWXDOO\ H[FOX
VLYH LQSXWV DQG PDLQWDLQV D VWDWH
YDULDEOH WKDW WUDFNV WKH KLVWRU\ RI WKH
PDFKLQH·V LQSXWV $FFRUGLQJ WR ZKLFK
VWDWH WKH PDFKLQH LV FXUUHQWO\ LQ D
JLYHQ LQSXW ZLOO SURGXFH GLIIHUHQW UH
State transition diagram for skip_exponent
VXOWV 7KH )60 SURJUDP FDQ EH H[
SUHVVHG HLWKHU DV D VWDWH WUDQVLWLRQ GLD
JUDP RU DV D WUDQVLWLRQ WDEOH
ZKLFK , ILQG FOHDUHU ,Q WKH WDEXODU UHSUHVHQWDWLRQ HDFK FHOO FRQWDLQV WZR FRPSRQHQWV DQ DFWLRQ
IROORZHG E\ D WUDQVLWLRQ WR DQRWKHU VWDWH 7KH SRVVLEOH DFWLRQV LQ WKLV H[DPSOH DUH
noop \ do nothing
1+ \ increment pointer
error \ display an error message.
7KH WDEXODU UHSUHVHQWDWLRQ RI D )60 LV FOHDQHU WKDQ QHVWHG ORJLF ,Q D )60 WKH LQSXWV PXVW EH
PXWXDOO\ H[FOXVLYH DQG H[KDXVWLYH WKHUHE\ HOLPLQDWLQJ FRQGLWLRQV WKDW FDQQRW EH IXOILOOHG³WKDW
LV FRQGLWLRQV OHDGLQJ WR ´GHDGµ FRGH³VRPHWKLQJ WKDW RZLQJ WR KXPDQ IUDLOW\ IUHTXHQWO\ KDSSHQV
ZLWK QHVWHG ORJLF 7KH LQFLGHQFH RI EXJV LQ WDEXODU )60V LV PXFK OHVV WKDQ ZLWK ORJLF WUHHV
)2575$1 %$6,& RU $VVHPEOHU FDQ LPSOHPHQW )60V ZLWK FRPSXWHG GOTOV ,Q %$6,& HJ ZH
FRXOG ZULWH
16: state%=5
… … etc. … … ’ row 4
19: adress% = adress% +1 : state% = 5
END SUB
7KH DGYDQWDJH RI )60 FRQVWUXFWLRQ XVLQJ FRPSXWHG GOTOV LV VLPSOLFLW\ LWV GLVDGYDQWDJH LV WKH OLQHDU
IRUPDW RI WKH SURJUDP ZKLFK KLGHV WKH VWDWH WDEOH·V VWUXFWXUH 7KH (DNHU CASE VWDWHPHQW³D FRQWURO
VWUXFWXUH DYDLODEOH LQ & 3DVFDO 4XLFN%$6,& RU )RUWK³SURGXFHV FRGH WKDW LV QR FOHDUHU 7R DFKLHYH
FODULW\ ZLWK VXFK WRROV ZH PXVW ZULWH RXW WKH VWDWH WDEOH LQ FRPPHQW IRUP LQ D GRFXPHQWDWLRQ VHFWLRQ
WKHUHE\ LQFUHDVLQJ WKH OHQJWK DQG GHFUHDVLQJ WKH UHDGDELOLW\ RI WKH VRXUFH FRGH
+RZHYHU H[WHQVLEOH ODQJXDJHV OLNH )RUWK /LVS DQG & SHUPLW XV WR GHILQH FRGH WKDW ZLOO FUHDWH D
)60 IURP LWV VWDWHWDEOH UHSUHVHQWDWLRQ ,Q )RUWK WKLV ORRNV OLNH
´0XWXDOO\ H[FOXVLYHµ PHDQV RQO\ RQH LQSXW DW D WLPH FDQ EH WUXH
´([KDXVWLYHµ PHDQV HYHU\ SRVVLEOH LQSXW PXVW EH UHSUHVHQWHG
" 3_]`edUbQ\WURbQ
@eddY^WYdd_WUdXUb
2QFH ZH KDYH WKH WRROV IRU UHFRJQL]LQJ SDWWHUQV LQ VWULQJV ZH FUHDWH WKH SDUWV ERWWRP XS WR WUDQVODWH
D IRUPXOD 7KH SURJUDP JLYHQ LQ $SSHQGL[ $ VKRZV KRZ WKLV LV GRQH
" 3_]`edUbQ\WURbQ
T he study of symbolic manipulation has led to rich new areas of pure mathematics12. H ere we
illustrateour new tool (for compilingfinitestateautomata) with arule-based recursiveprogram
to solve a problem that does not need much formal mathematical background. T he resulting
program executed much faster on a slow, old PC than REDU CE (a symbolic manipulation
program with built-in γ-matrix algebrafeatures) did on alargemainframe, so theprogramming
effort was definitely worthwhile.
CdQdY^WdXU`b_R\U]
Dirac γ-matrices are 4×4 traceless, complex matrices defined by a set of (anti)commutation
relations13. T hese are
γµ γν + γν γµ = ηµν µ ν = …
7KH WUDFH RI DQ\ PDWUL[ LV GHILQHG WR EH WKH VXP RI LWV GLDJRQDO HOHPHQWV
GI 1
) = ∑
7U ($ $ NN
N=
7U ($ + %) ≡ 7U ($ ) + 7U (% ) D
7U ($ )% ≡ 7U ( % )
$ E
7U ($ )% ≡
[ 7U ($ % ) + 7U (% $ )] =
7U ( %
$ + % )
$
= $ ⋅% 7U (,) ≡ $ ⋅%
7KH WUDFH RI JDPPD PDWULFHV FDQ EH REWDLQHG DQDORJRXV WR (T E\ UHSHDWHG DSSOLFDWLRQ RI WKH
DOJHEUDLF ODZV
7U ($ % )
& ' = $ ⋅ % 7U (& ' ) − 7U (% )
$ & '
≡ $ ⋅ % 7U (& ' ) − 7U ($ )
& ' %
DXUbe\Uc
:H DSSO\ IRUPDO UXOHV DQDORJRXV WR WKRVH XVHG LQ SDUVLQJ D ODQJXDJH 7KH UXOHV IRU WUDFHV DUH
%
% ≡ % ⋅%
UHFRJQL]LQJ VXFK IDFWRUV FDQ VKRUWHQ WKH ILQDO H[SUHVVLRQV VLJQLILFDQWO\ KHQFH WKH UXOH
,Q WKH VDPH FDWHJRU\ ZKHQ WZR YHFWRUV DUH RUWKRJRQDO ⋅ = DQRWKHU VLPSOLILFDWLRQ RFFXUV
$ %
7KH DELOLW\ WR UHFRJQL]H RUWKRJRQDO YHFWRUV OHWV XV HYDOXDWH WKH WUDFH RI D SURGXFW WLPHV WKH VSHFLDO
γPDWUL[
γ =Lγ γ γ γ =
γ
%
$ & ≡ L εµνκλ $ µ % ν & κ γλ
$ FRPSOHWH JDPPD PDWUL[ SDFNDJH ZLOO LQFOXGH UXOHV IRU WUDFHV FRQWDLQLQJ γ
1RWH %HUHVWHWVNLv HW DO RS FLW GHILQH γ ZLWK DQ RYHUDOO ´²µ VLJQ UHODWLYH WR (T
@8IC%%! 3_]`edQdY_^Q\=UdX_Tc_V@XicYSc " #
3XQ`dUb!! Ci]R_\YS`b_WbQ]]Y^WQ^TS_]`edUbQ\WURbQ
DXU`b_WbQ]
:H SURJUDP IURP WKH ERWWRP XS WHVWLQJ DGGLQJ DQG PRGLI\LQJ DV ZH JR %HJLQ ZLWK WKH XVHU LQWHUIDFH
ZH ZRXOG OLNH WR VD\
tr( a/b/c/d/)
= a.bc.d-a.cb.d+a.db.c ok
(YLGHQWO\ RXU SURJUDP ZLOO LQSXW D VWULQJ WHUPLQDWHG E\ D ULJKW SDUHQWKHVLV ´)µ LH WKH ULJKW
SDUHQWKHVLV WHOOV LW WR VWRS LQSXWWLQJ 7KLV FDQ EH GRQH ZLWK WKH ZRUG
6LQFH WKH UXOHV DUH LQKHUHQWO\ UHFXUVLYH ZH SXVK WKH LQSXW VWULQJ RQWR D VWDFN EHIRUH RSHUDWLRQV
FRPPHQFH :KDW VWDFN" &OHDUO\ ZH QHHG D VWDFN WKDW FDQ KROG VWULQJV RI ´DUELWUDU\µ OHQJWK 7KH
VWULQJV FDQQRW EH WRR ORQJ EHFDXVH WKH QXPEHU RI WHUPV RI RXWSXW KHQFH WKH RSHUDWLQJ WLPH JURZV
: do_trace ( $: a/b/x/ )
$pop \ pop the current sub-string off the $-stack
2factors \ get the 2 leftmost factors
b=b’? \ is the 2nd factor marked (i.e. has it come home)?
IF EXIT THEN \ output nothing
a.b \ output dot product
more? \ is x/ <> "" (empty string)?
IF rearrange ( $: ~a/x/b’ x/)
." (" RECURSE ." )" \ print a left-(, evaluate x/ and print a right-)
RECURSE \ evaluate the item left on the $-stack
THEN ;
1RWH KRZ UHFXUVLRQ VLPSOLILHV WKH SUREOHP RI PDWFKLQJ OHIW DQG ULJKW SDUHQWKHVHV LQ WKH RXWSXW
1H[W ZH GHILQH WKH XQGHUO\LQJ GDWD VWUXFWXUHV 5HFXUVLRQ GHPDQGV D VWDFN WR KROG VWULQJV LQ YDULRXV
VWDJHV RI GHFRPSRVLWLRQ DQG SHUPXWDWLRQ 6LQFH WKH QXPEHU RI WHUPV JURZV YHU\ UDSLGO\ ZLWK WKH
" $ 3_]`edUbQ\WURbQ
QXPEHU RI IDFWRUV LW ZLOO WXUQ RXW WKDW WDNLQJ WKH WUDFH RI DV PDQ\ DV GLVWLQFW IDFWRUV LV D PDWWHU
RI VRPH ZHHNV RQ ²VD\² D 0K] 3& WKDW LV ² LV WKH ODUJHVW SUDFWLFDEOH QXPEHU RI IDFWRUV
6R LI ZH PDNH SURYLVLRQ IRU H[SUHVVLRQV IDFWRUV ORQJ WKDW VKRXOG EH ODUJH HQRXJK IRU DQ\ SUDFWLFDO
SXUSRVH
7R VLPSOLI\ WKH PDQLSXODWLRQV DQG UHGXFH WKH VL]H RI WKH VWULQJ VWDFN ZH ZLOO WRNHQL]H WKH LQSXW VWULQJ
7KDW LV HDFK IDFWRUQDPH LQ WKH RULJLQDO ZLOO EH UHSUHVHQWHG E\ D E\WH LQWHJHU IURP WR K LH
VPDOOHU WKDQ G 7KLV OHDYHV WKH WK WK DQG WK ELWV IUHH WR VHUYH DV IODJV WR LQGLFDWH WKH SURSHUWLHV
RI WKH IDFWRUV 7KDW LV ZH QHHG WR LQGLFDWH ZKHWKHU D IDFWRU LV ´VWDUUHGµ LH ZKHWKHU LW UHSUHVHQWV
$JDLQ ZH QHHG WR EH DEOH WR LQGLFDWH ´UHGQHVVµ VKRZLQJ WKDW D IDFWRU KDV EHHQ SHUPXWHG IROORZLQJ
WKH UXOH
7KXV ZH VHW ELW 128 OR WR LQGLFDWH ´VWDUµ DQG ELW 64 OR WR LQGLFDWH ´UHGµ
:H VWLOO QHHG WR LQGLFDWH WKH OHDGLQJ VLJQ 0\ ILUVW LPSXOVH ZDV WR XVH ELW EXW , UHDOL]HG WKH ILUVW
IDFWRU LV QHYHU SHUPXWHG KHQFH LWV WK ELW LV DYDLODEOH WR VLJQLI\ WKH VLJQ ,W LV WRJJOHG E\ WKH SKUDVH
64 XOR ,Q WKH $-stack SLFWXUHV DSSHDULQJ LQ WKH )LJXUHV ZH LQGLFDWH WRJJOLQJ E\ D OHDGLQJ ´~µ
)RU VDIHW\ ZH RXJKW WR LQTXLUH KRZ GHHS WKH $-stack FDQ JHW 7KDW LV ZH FHUWDLQO\ ZDQW WR DOORZ HQRXJK
VSDFH WKDW ZH ZLOO QRW RYHUZULWH SURJUDP PHPRU\ E\ KDYLQJ WKH VWDFN JHW WRR GHHS 7KH UXOH
VXJJHVWV WKDW IRU DQ H[SUHVVLRQ RI OHQJWK Q = N WKH PD[LPXP GHSWK ZLOO EH RQO\ N + 7KXV ZH
VKRXOG SODQ IRU D VWDFN GHSWK RI DW OHDVW SHUKDSV IRU VDIHW\ 6LQFH ZH DUH WRNHQL]LQJ WKH LQSXW
WKLV PHDQV DW PRVW E\WHV RI PHPRU\ D WULYLDO DPRXQW RQ WRGD\·V FRPSXWHUV
3URJUDPPLQJ WKHVH DVSHFWV LV VLPSOH HQRXJK WKDW ZH QHHG QRW GZHOO RQ LW 7KH HQWLUH SURJUDP DSSHDUV
LQ $SSHQGL[ % EHORZ
Clearly the concept works. Our next task is to incorporate branches to take care of “starred”,
as well as identical and/or orthogonal adjacent factors. T he possible responses to the different
cases are presented in decision-table form below.
VWDFN UHDUUDQJHPHQWV DQG DFWLRQV IRU SRVVVLEOH LQSXWV
LQSXW a/b/x/ *a/b/x/ a/*b/x/ a/a/x/ a/b/x/
UHVXOWLQJ ~a/x/b/ a/b/x/ a/b/x/ … …
@8IC%%! 3_]`edQdY_^Q\=UdX_Tc_V@XicYSc " %
3XQ`dUb!! Ci]R_\YS`b_WbQ]]Y^WQ^TS_]`edUbQ\WURbQ
7R DYRLG H[FHVVLYHO\ FRQYROXWHG ORJLF ZH HVFKHZ QHVWHG EUDQFKLQJ FRQVWUXFWV $ ILQLWH VWDWH PDFKLQH
ZRXOG EH LGHDO IRU FODULW\ KRZHYHU DV WKH DERYH WDEOH PDNHV FOHDU WKH ORJLF LV QRW UHDOO\ WKDW RI D
)60 EHVLGHV ZKLFK WKH )60 FRPSLOHU GHVFULEHG DERYH ZRXOG KDYH WR EH PRGLILHG WR NHHS LWV VWDWH
YDULDEOH RQ WKH VWDFN VLQFH RWKHUZLVH LW FRXOG QRW VXSSRUW UHFXUVLRQ 7KH UHVXOWLQJ SVHXGRFRGH
SURJUDP LV
: do_trace ( --)
$pop empty? IF EXIT THEN
1factor ( -- a) \ tail -> x$
star? IF REARRANGE* .m_ (. RECURSE ). RECURSE EXIT THEN
x$ empty$ $= IF EXIT THEN
b=red? IF EXIT THEN \ done?
star? IF REARRANGE** .m_ (. RECURSE ). RECURSE EXIT THEN
twins? IF x$ $push a.b (. RECURSE ). EXIT THEN
permute buf$ $push
perps? IF RECURSE EXIT THEN
x$ $push a.b (. RECURSE ). RECURSE
;
,PSOHPHQWLQJ WKH FRGH LV QRZ VWUDLJKWIRUZDUG VR ZH RPLW WKH GHWDLOV VXFK DV KRZ WR GHILQH perp
WR PDUN WKH V\PEROV DSSURSULDWHO\ 7KH VLPSOHVW PHWKRG LV D OLQNHG OLVW RU WDEOH RI VRPH VRUW WKDW LV
ILOOHG E\ PERP DQG FRQVXOWHG E\ WKH WHVW ZRUG perps?
7U (γ
… )
$ % & ' ≡ L 7U ( εµνκλ$ µ% ν& κγ λ ' … )
H[SUHVVLRQV ZLWK γ EHWZHHQ ´VWDUUHGµ IDFWRUV DUH PRUH GLIILFXOW +RZHYHU WKH SHUPXWDWLRQ SURSHUWLHV
7U ( ($ + P$ ) (% + P% ) γ
& (' + P
' ) ( … )
≡ 7U ( γ
( + ' ) … ( + $ ) ( + % ) )
& ' P ( $ P % P
VR WKH NH\ LVVXH EHFRPHV GHFRPSRVLQJ OHDGLQJ VWDUUHG IDFWRUV VDYLQJ WKH SLHFHV RQ WKH $-stack
XQWLO DW OHDVW WKUHH GLVWLQFW XQVWDUUHG IDFWRUV DUH DGMDFHQW RQ WKH OHIW 5HSODFH WKHVH E\ D VSHFLDO WRNHQ
" & 3_]`edUbQ\WURbQ
ZKLFK VWDQGV IRU ´^µ DV VKRZQ RQ SDJH 7KLV WRNHQ LV PDUNHG RUWKRJRQDO WR DOO WKUHH RI WKH YHFWRUV
LW UHSUHVHQWV DW WKH WLPH LW LV LQVHUWHG
7R DYRLG IXUWKHU H[WHQGLQJ do_trace SUREDEO\ WKH EHVW VFKHPH LV WR GHILQH D GLVWLQFW ZRUG Trg5(
Tr( WR SHUIRUP WKH DERYH SUHOLPLQDU\ VWHSV 7KHQ Trg5(
WKDW XVHV WKH FRPSRQHQWV RI ZLOO LQYRNH
do_trace WR GR WKH UHVW RI LWV ZRUN
7KH RQO\ RWKHU VLJQLILFDQW WDVNV DUH WR H[WHQG WKH RXWSXW URXWLQH WR
# Ci]R_\YSTYVVUbU^dYQdY_^
$V RXU WKLUG H[DPSOH RI UXOHEDVHG SURJUDPPLQJ ZH FRQVLGHU FRPSXWLQJ WKH GHULYDWLYH RI D IXQFWLRQ
ZLWK UHVSHFW WR DQ LQGHSHQGHQW YDULDEOH 7KH VFUHHQ VQDSVKRW EHORZ RI D ZLQGRZ LQ WKH 0DSOH
FRPSXWHU DOJHEUD V\VWHP LOOXVWUDWHV RQH FRPPRQ XVHU LQWHUIDFH IRU V\PEROLF GLIIHUHQWLDWLRQ RI D
IXQFWLRQ
7KXV WKH SURJUDP ZLOO HPSOR\ UHFXUVLRQ DQG PXVW EH DEOH WR UHFRJQL]H WKH IROORZLQJ HOHPHQWV
:H VHH IURP WKH DERYH WKDW WKH GLIIHUHQWLDWLQJ IXQFWLRQ ZLOO VKDUH PDQ\ RI WKH HOHPHQWV RI D )25PXOD
75$1VODWRU 7KH SURJUDPPLQJ LV WKHUHIRUH IDLUO\ VWUDLJKWIRUZDUG XVLQJ LGHDV ZH KDYH DOUHDG\
HQFRXQWHUHG³SDWWHUQ UHFRJQLWLRQ DQG SDUVLQJ 7KH FRGH DSSHDUV LQ $SSHQGL[ ; RI WKLV ERRN