cayleyR — пакет для анализа графов Кэли перестановочных групп с фокусом на головоломку TopSpin и подобные комбинаторные задачи. Пакет реализует алгоритмы поиска циклов, исследования пространства состояний и нахождения оптимальных последовательностей операций в перестановочных группах, порождённых операциями сдвига и реверса.
shift_left(state) — выполняет циклический сдвиг влево, перемещая первый элемент вектора в конец.
shift_right(state) — выполняет циклический сдвиг вправо, перемещая последний элемент вектора в начало.
reverse_prefix(state, k) — обращает порядок первых k элементов вектора состояния (операция “турникет” в TopSpin).
apply_operations(state, operations, k) — последовательно применяет набор операций к состоянию. Операции задаются символами: “L”/“1” (влево), “R”/“2” (вправо), “X”/“3” (реверс).
get_reachable_states(start_state, allowed_positions, k) — находит полный цикл в графе Кэли для заданной последовательности операций. Возвращает все посещённые состояния, data frame с траекторией, статистику цикла.
get_reachable_states_light(start_state, allowed_positions, k) — облегчённая версия функции поиска цикла. Возвращает только длину цикла и количество уникальных состояний без хранения всех промежуточных состояний. Используется для быстрой проверки многих последовательностей.
find_best_random_combinations(moves, combo_length, n_samples, n_top, start_state, k) — генерирует случайные последовательности операций заданной длины и находит те, которые дают максимальную длину цикла. Возвращает топ-N лучших комбинаций с их характеристиками.
Пакет может быть полезен для:
Пакет использует: