1

私はこのようなことをしました(疑似コードで):

 for x = 0 to 3
  for y = 0 to 3
    id1 = m[x][y] * m[y][x];
    id2 = m[y][x] * m[x][y];
    if id1 != m[x][y] or id1 != id2 then
      nn = nn + 1;
    else
      en = id1;
    endif
  endfor
 endfor
 if nn = 0 then
      print("There is an identity element: ", en);
      a := a + 1;
 else
      print("There isn't an identity element.");
 endif

1,2,3,4 をセットとして、乗算を演算として実行すると、"恒等要素がありません。" が返されるので、ここで私のロジックに何か問題があると思います。何か助けはありますか?

4

1 に答える 1

1

nn を頻繁にインクリメントします。したがって、ほとんどの場合、nn != 0 が見つかります。したがって、ほとんどの場合、コードは同一性がないと結論付けます。IMHO id1 と id2 が何であるかがすでに不明であるため、ロジック全体が完全に不明です。それは、m[x][y] が実際に何であるかという質問から始まります。

また、ブルート フォース検索を完全に回避することも検討する必要があります。つまり、G が有限群である場合、ラグランジュの定理に従って、G のすべての x に対して x^|G| が得られます。= e. したがって、e を直接計算できます。G が群であるかどうかが事前にわからない場合は、x^|G| はまだ e の唯一の可能な候補です。

于 2013-10-27T15:00:00.107 に答える