Files
cmc-pseudo-polynomials/README.md
2020-06-29 10:45:07 +03:00

41 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# cmc-pseudo-polynomials
Курсовой проект за первый курс магистратуры ВМК МГУ
## Сборка
Требуется cmake и компилятор C++ с поддержкой C++14.
Если это не gcc, возможно, потребуется поправить CMakeLists.txt.
Команды для сборки могут быть такими:
```
mkdir build
cd build
cmake ..
make
```
Количество аргументов у функции изменяются в коде через изменение `ARGS_COUNT` в файле `main.cpp`.
Поддерживаются значения от 2 до 5.
Также может быть полезно отключить генерацию разбиения по классам эквивалентности, это параметр `ONLY_CREATE_CLASSES` в том же классе.
Это может ускорить полную генерацию и значительно сократит потребление памяти.
## Запуск
Для запуска достаточно собрать проект и вызвать
```
./main
````
## Анализ результатов
Результаты записываются в файлы вида `base_4_rank_3.txt` в рабочей директории.
Первое число означает число аргументов у функции, а второе длину функций в классе ПСПФ.
Сам файл представляет собой вектор битов,
где бит N выставлен если функция принадлежит множеству функций с фиксированным числом аргументов и длиной в классе ПСПФ.
Для анализа этих файлов удобно использовать `get_function_len.py` (требуется Python3). Для экономии места эти файлы можно предварительно сжать в XZ архивы. Есть несколько вариантов использования:
1. Получить длину некоторой функции. Пример `python3 get_function_len.py 10101010`, где `10101010` -- вектор значений функции.
2. Подсчёт количества функций по классам. Пример: `python3 get_function_len.py count_lens 3`, где 3 -- количество аргументов у функций.