Предположим, что даны таблица умножения конечной группы и некоторая перестановка её элементов. Нужно проверить, является ли эта перестановка автоморфизмом.
По определению, необходимо проверить
![$$\varphi(ab)=\varphi(a)\varphi(b),\quad a,b\in G$$ $$\varphi(ab)=\varphi(a)\varphi(b),\quad a,b\in G$$](https://dxdy-01.korotkov.co.uk/f/c/0/f/c0f020df01ec9cc2a0974f3c2038294a82.png)
где уже дано по условию, что
![$\varphi:G\rightarrow G$ $\varphi:G\rightarrow G$](https://dxdy-02.korotkov.co.uk/f/9/7/5/975741405029ff309eaa57a5fad9aae982.png)
— биекция. То есть технически для проверки требуется два вложенных цикла, чтобы прогнать это соотношение по всем возможным парам элементов.
Мой вопрос: можно ли это сделать более эффективно?
То есть сделать меньше проверок. Одна очевидная оптимизация заключается в том, что надо проверить, что нейтральный элемент отображается в нейтральный, а из остальных проверок его можно исключить, потому что это будут обычные тождества вида
![$\varphi(a)=\varphi(a)$ $\varphi(a)=\varphi(a)$](https://dxdy-03.korotkov.co.uk/f/a/1/8/a185736dc6f158c70ace64ace4e4f07c82.png)
. Но меня интересует более серьёзная оптимизация. Например, пусть известны (или посчитаны заранее) порождающие элементы данной группы. Их количество будет не более
![$O(\log |G|)$ $O(\log |G|)$](https://dxdy-01.korotkov.co.uk/f/8/3/1/831ec0696d5baa102b8fd6ae167c2fc082.png)
. Можно ли воспользоваться ими и проверить только верность соотношений только для пар образующая-произвольный элемент? Тогда сложность операции упадёт с
![$O(|G|^2)$ $O(|G|^2)$](https://dxdy-02.korotkov.co.uk/f/1/f/b/1fbe85c86a74e9ca638ccb597e56c9b382.png)
до всего лишь
![$O(|G|\log |G|)$ $O(|G|\log |G|)$](https://dxdy-02.korotkov.co.uk/f/5/0/3/503606ad40075646162365c73d49b44f82.png)
, что будет вполне достаточно для моих целей. Можно ли будет улучшить это дальше проверяя только пары образующая-образующая?