Собственность идентичности в Cayley Table
Я работаю над проектом, который требует, чтобы я распознал, есть ли у таблиц Кейли в моих текстовых файлах свойства идентичности, ассоциативных, обратных и абелевых. В настоящее время я работаю над функцией идентичности, и хотя считаю, что должен использовать два вложенных циклы for для циклического перемещения по строкам и столбцам таблиц. Я не могу найти ничего, что может подтолкнуть меня в правильном направлении, любая помощь приветствуется. Спасибо джессика
Просто хотел добавить обновление: это то, что я наконец-то придумал, публикуя на тот случай, если он все еще может использовать работу. Большое спасибо.
group_el Group::getIdentity()
{
for (int i=0; i<order; i++)
{
bool identIsi = true;
for (int j=0; j<order; j++)
{
if ((op(i,j)==i) && (op(j,i)==i)) //if i*j =i same as j*i = i then i is identity
{
return i;
}
else
{
identIsi = false;
}
}
}
вернуть NO_IDENTITY; }
1 ответ
С ++ будет не самым простым языком для работы, но он будет выполнимым.
Я взял курс по абстрактной алгебре несколько лет назад, и, насколько я помню, вам просто нужно выписать выражение для каждой возможной комбинации (поскольку некоторые группы некоммутативны, вам нужно A*B
а также B*A
, где *
это произвольный оператор) и работа оттуда.
Чтобы уменьшить сложность, я бы сделал это в следующем порядке:
- Сканирование для идентификации элемента. Должен быть только один, и как только вы определите его значение, остальные вычисления станут немного проще.
- Сканирование для двух элементов, которые умножаются, чтобы дать элемент идентичности. Эти два элемента (в правильном порядке) являются обратными.
- Определить, является ли группа абелевой, будет просто. Просто следуйте определению абелевой группы.