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

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

Re: つづき  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2007/10/30 11:42:06 ** この記事は2回修正されてます
サンプル(あみだくじ、カードのシャッフル)


サブルーチン部分は省略

!main

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

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

DIM A(5),B(5)
PRINT "1 2 3 4 5" !上から順に、
PRINT "│││││"
CALL PermIdentity(A)
PRINT "│├┤││" !2本目と3本目に横線を引く
CALL PermTransposition(2,3,B)
CALL PermMultiply(B,A, A)
PRINT "││├┤│" !3本目と4本目に
CALL PermTransposition(3,4,B)
CALL PermMultiply(B,A, A)
PRINT "│││├┤" !4本目と5本目に
CALL PermTransposition(4,5,B)
CALL PermMultiply(B,A, A)
PRINT "│├┤││" !2本目と3本目に
CALL PermTransposition(2,3,B)
CALL PermMultiply(B,A, A)
PRINT "││├┤│" !3本目と4本目に
CALL PermTransposition(3,4,B)
CALL PermMultiply(B,A, A)
PRINT "├┤│││" !1本目と2本目に
CALL PermTransposition(1,2,B)
CALL PermMultiply(B,A, A)
PRINT "│├┤││" !2本目と3本目に
CALL PermTransposition(2,3,B)
CALL PermMultiply(B,A, A)
PRINT "│││││"
CALL PermPrintOut(A)


DIM Q(20,20)
CALL PermCyclicForm(A, Q,n) !巡回置換の積へ
CALL PermCyclicMultiplyPrintOut(n,Q)

DIM T(20,3)
CALL PermTranspositionForm(A, T,n) !(隣接)互換の積へ
CALL PermCyclicMultiplyPrintOut(n,T)





!トランプカードのリフルシャッフル(左右のカードを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 ss(m)
CALL PermIdentity(ss) !初期値

FOR k=1 TO 20 !回数
CALL PermMultiply(s,ss,ss) !シャッフル
PRINT "K=";k
CALL PermPrintOut(ss) !何回か実行すると元に戻る
NEXT k


END

   │└!置換行列 山中和義 2007/10/31 19:32:35 
   ├!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
新規発言を反映させるにはブラウザの更新ボタンを押してください。