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。因此,您的代码几乎总是会得出没有身份的结论。恕我直言,您的整个逻辑完全不清楚,因为已经不清楚 id1 和 id2 是什么。它始于 m[x][y] 实际上是什么的问题。

您还应该考虑完全避免暴力搜索。也就是说:如果 G 是一个有限群,根据拉格朗日定理,对于 G 中的每个 x,你都有 x^|G| = e。因此,您可以直接计算 e。如果你事先不知道 G 是否是一个群,那么 x^|G| 仍然是 e 的唯一可能候选者。

于 2013-10-27T15:00:00.107 回答