新しく発言する  EXIT  インデックスへ
置換(Permutation)の計算

  置換(Permutation)の計算 山中和義 2007/10/30 11:38:21  (修正1回)
  つづき 山中和義 2007/10/30 11:39:25  (修正1回)
   ├サンプル(あみだくじ、カードのシャッフル... 山中和義 2007/10/30 11:42:06  (修正2回)
   │└!置換行列 山中和義 2007/10/31 19:32:35 

Re: サンプル(あみだくじ、カードのシャッフル...  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2007/10/31 19:32:35
!置換行列
SUB PermToMatrix(A(), M(,)) !置換行列を得る
MAT M=ZER
FOR i=1 TO UBOUND(A)
LET M(i,A(i))=1
NEXT i
END SUB
SUB PermTranspositionToMatrix(i,j, M(,)) !基本変形を行う基本行列を得る
MAT M=IDN
LET M(i,i)=0
LET M(j,j)=0
LET M(i,j)=1
LET M(j,i)=1
END SUB



!main

!5本のあみだくじをつくる

!A=(2 3)(1 2)(3 4)(2 3)(4 5)(3 4)(2 3)

DIM A(5),B(5,5)
PRINT "1 2 3 4 5" !上から順に、
PRINT "│││││"
FOR i=1 TO UBOUND(A) !CALL PermIdentity(A)
LET A(i)=i
NEXT i
PRINT "│├┤││" !2本目と3本目に横線を引く
CALL PermTranspositionToMatrix(2,3,B) !CALL PermTransposition(2,3,B)
MAT A=B*A !CALL PermMultiply(B,A, A)
PRINT "││├┤│" !3本目と4本目に
CALL PermTranspositionToMatrix(3,4,B)
MAT A=B*A
PRINT "│││├┤" !4本目と5本目に
CALL PermTranspositionToMatrix(4,5,B)
MAT A=B*A
PRINT "│├┤││" !2本目と3本目に
CALL PermTranspositionToMatrix(2,3,B)
MAT A=B*A
PRINT "││├┤│" !3本目と4本目に
CALL PermTranspositionToMatrix(3,4,B)
MAT A=B*A
PRINT "├┤│││" !1本目と2本目に
CALL PermTranspositionToMatrix(1,2,B)
MAT A=B*A
PRINT "│├┤││" !2本目と3本目に
CALL PermTranspositionToMatrix(2,3,B)
MAT A=B*A
PRINT "│││││"
MAT PRINT USING REPEAT$("# ",52): A !CALL PermPrintOut(A)



!トランプカードのリフルシャッフル(左右のカードを1枚ずつ交互に重ねていく)

LET m=52 !枚数
!1枚目のカードは、1枚目へ移動先する
!2枚目のカードは、3枚目へ移動先する
!3枚目のカードは、5枚目へ移動先する
!  :
!52枚目のカードは、52枚目へ移動先する
DATA 1,3,5,7,9,11,13,15,17,19, 21,23,25,27,29,31,33,35,37,39, 41,43,45,47,49,51
DATA 2,4,6,8,10,12,14,16,18,20, 22,24,26,28,30,32,34,36,38,40, 42,44,46,48,50,52
!LET m=20
!DATA 1,3,5,7,9,11,13,15,17,19, 2,4,6,8,10,12,14,16,18,20
DIM s(m)
MAT READ s

DIM x(m,m) !置換行列
CALL PermToMatrix(s,x)

DIM ss(m)
FOR i=1 TO UBOUND(ss) !整列したカードを用意する
LET ss(i)=i
NEXT i

FOR k=1 TO 20 !回数
MAT ss=x*ss !シャッフル
PRINT "K=";k
MAT PRINT USING REPEAT$("## ",m): ss !何回か実行すると元に戻る
NEXT k


END

   ├!15パズルをつくる 山中和義 2007/10/30 21:46:16  (修正3回)
   └!ルービックキューブ(Rubik'scube、magicc... 山中和義 2007/11/01 21:07:01  (修正1回)
    └つづき 山中和義 2007/11/01 21:10:06  (修正1回)

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。