■この門くぐるべからず(その10)

 n次元立方体は,

  頂点数: 2^n,

  稜数:  2^(n-1)n,

  四角形数:2^(n-3)n(n−1)

からなっている.このうち,頂点は(±1,±1,・・・,±1)であるから,確かに2^n個あることがわかる.

 すべての頂点を重複なく,遺漏なく数え上げるために,2進数を用いるとよい.以下に,それを効率よく行うプログラムを掲げる.

===================================

4640 '

4650 ' *** 超直方体 ***

4660 '

4670 *HYPERCUBE:

4680 T=1:' [non-stochastic]

4690 FOR IS=1 TO M:EDGE(IS)=SQR(T*AZ(IS,IS)):NEXT IS

4700 '

4710 FOR IS=0 TO 2^M-1

4720 FOR JS=1 TO M:S(JS)=-1:NEXT JS

4730 FOR JS=1 TO M

4740 IF (IS AND 2^(JS-1))=0 THEN S(JS)=1

4750 NEXT JS

4760 GOSUB *VERTEX:GXS=GX:GYS=GY

4770 '

4780 FOR JS=1 TO M:S0(JS)=S(JS):NEXT JS

4790 FOR JS=1 TO M

4800 FOR KS=1 TO M:S(KS)=S0(KS):NEXT KS

4810 S(JS)=-S(JS)

4820 GOSUB *VERTEX:GXE=GX:GYE=GY

4830 LINE(GXS,-GYS)-(GXE,-GYE),7

4850 NEXT JS

4860 NEXT IS

4870 RETURN

4880 '

4890 ' *** 頂点 ***

4900 '

4910 *VERTEX:

4920 GX=0:GY=0

4930 FOR LS=1 TO M

4940 GX=GX+BZ(I,LS)*EDGE(LS)*S(LS)

4950 GY=GY+BZ(J,LS)*EDGE(LS)*S(LS)

4960 NEXT LS

4970 GX=GX+VO(I):GY=GY+VO(J)

4980 RETURN

===================================