--- title: "Введение в cayleyR (Russian)" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Введение в cayleyR (Russian)} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- [English version](introduction.html) ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-ru-", out.width = "100%" ) ``` # cayleyR **cayleyR** — пакет для анализа графов Кэли перестановочных групп с фокусом на головоломку TopSpin и подобные комбинаторные задачи. Пакет реализует алгоритмы поиска циклов, исследования пространства состояний и нахождения оптимальных последовательностей операций в перестановочных группах, порождённых операциями сдвига и реверса. ## Возможности - **Базовые операции над перестановками**: циклические сдвиги влево/вправо, реверс префикса - **Анализ циклов**: поиск циклов в графах Кэли с детальной информацией о посещённых состояниях - **Оптимизация последовательностей**: поиск операционных последовательностей, дающих максимальную длину цикла - **Быстрая обработка**: облегчённая версия для массовой проверки комбинаций ## Функции пакета cayleyR **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 лучших комбинаций с их характеристиками. ## Применение Пакет может быть полезен для: - Исследования математических свойств перестановочных головоломок - Анализа графов Кэли и их структуры - Поиска оптимальных алгоритмов решения комбинаторных задач - Образовательных целей в теории групп и комбинаторике ## Зависимости Пакет использует: - **digest** — для эффективного хеширования состояний при поиске циклов