おぼえがき


PG:=Dom::Polynomial(Dom::GaloisField(2, 3, t^3+t+1)):
PG(t^3 + t + 1);

3
t + t + 1

なんてカンジで設定が生きてないようだが、

G:=Dom::GaloisField(2, 3, t^3+t+1):
g:=poly(X^2 + (1+t)*X + (1+t), [X], G):
factor(g);

2
poly(X + (t + t ), [X], Dom::GaloisField(2, 3,

3 2
poly(t + t + 1, [t], IntMod(2)))) poly(X + (t + 1), [X],

3
Dom::GaloisField(2, 3, poly(t + t + 1, [t], IntMod(2))))

のようにドメインでは単なるGaloisFieldにして、処理したい式をpoly(〜、G)と置いたらスムーズにやってくれた。でもG(生成元の入った多項式)の形じゃないと次数下げは上手くいかない。

追記:その後(n, k, d)= (16, 8, 9)RS符号(自己相対)を作って、4誤り訂正に成功! いえーい訂正限界やnとの限界値比ならGolay符号(探査船ボイジャーに利用された(24, 12, 8)BCH符号で3誤り訂正。)に勝るぜ。まあ限界値比を高くしたいなら(16, 3, 14)とかやればいいと思うんだが、それだと情報送信効率が悪いということになる、筈。どの辺りが最適かとかはもっと専門書向けなんだろうな。Golay符号探してたら実演例が見つかりました。暗号・符号ってこういうプログラムも組めてひとまとまりなんだよなあ。Java使えるようになんないと…