Умножение перестановок, обратная перестановка, группа перестановок — различия между версиями
Martoon (обсуждение | вклад) м (Добавление идентификатора к определению) |
(Более эффективный алгоритм получения обратной перестановки путем обращения циклов) |
||
Строка 74: | Строка 74: | ||
<tex> a = (1, 3, 2), (4, 5) \Rightarrow a^{-1} = (1, 2, 3), (4, 5) </tex> | <tex> a = (1, 3, 2), (4, 5) \Rightarrow a^{-1} = (1, 2, 3), (4, 5) </tex> | ||
+ | |||
+ | Отсюда следует более эффективный алгоритм (приведена in-place версия): | ||
+ | |||
+ | boolean[] visited = new boolean[n]; | ||
+ | for (int i = 0; i < n; ++i) | ||
+ | { | ||
+ | if (visited[i]) continue; | ||
+ | // Reverse the cycle starting at i | ||
+ | int last = i; | ||
+ | int j = p[i]; | ||
+ | while (true) | ||
+ | { | ||
+ | int next = p[j]; | ||
+ | p[j] = last; | ||
+ | visited[j] = true; | ||
+ | if (j == i) break; | ||
+ | last = j; | ||
+ | j = next; | ||
+ | } | ||
+ | } | ||
=Группа перестановок= | =Группа перестановок= |
Версия 11:55, 5 марта 2013
Содержание
Умножение перестановок
Определение: |
Умножением (композицией) перестановок называется перестановка, получающаяся по следующему правилу: |
Утверждение: |
Умножение перестановок ассоциативно:
|
Доказывается простым раскрытием скобок. |
Пример
Обратная перестановка
Определение: |
Обратной перестановкой | к перестановке называется такая перестановка, что:
Определение: |
Перестановка, равная своей обратной, называется инволюцией: |
Получение обратной перестановки
Пусть в массиве p[i] содержится перестановка, тогда в массиве op[i], после выполнения алгоритма, будет содержаться обратная перестановка.
for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { if(p[j] == i + 1) { op[i] = j + 1; } } }
При представлении перестановки в виде циклов обратную перестановку можно легко получить, инвертировав все ребра в циклах.
Отсюда следует более эффективный алгоритм (приведена in-place версия):
boolean[] visited = new boolean[n]; for (int i = 0; i < n; ++i) { if (visited[i]) continue; // Reverse the cycle starting at i int last = i; int j = p[i]; while (true) { int next = p[j]; p[j] = last; visited[j] = true; if (j == i) break; last = j; j = next; } }
Группа перестановок
Определение: |
Группой называется множество
| с заданной на нём бинарной операцией , удовлетворяющей следующим свойствам:
Утверждение: |
Множество перестановок с элементами с операцией умножения является группой (часто группу перестановок называют симметрической, и обозначают ). |
Свойства 1 и 3 доказаны выше, а в качестве нейтрального элемента выступает тождественная перестановка ( | ).
Мощность симметрической группы:
Теорема Кэли утверждает, что любая конечная группа изоморфна подгруппе некоторой группе перестановок.
Источники и литература
- инволюция (Wikipedia, the free encyclopedia)
- Н. И. Яцкин, Алгебра Теоремы и алгоритмы, Издательство «Ивановский государственный университет», 2006 г., стр. 161