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

Сгенерированные результаты

Сгенерированные результаты для числа аргументов от 2 до 5 можно скачать тут.

Анализ результатов

Результаты записываются в файлы вида 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 -- количество аргументов у функций.
Description
Курсовой проект за первый курс магистратуры ВМК МГУ
Readme MIT 57 KiB
Languages
C++ 82.3%
Python 16.6%
CMake 1.1%