- В проекте реализуется структура данных B-Tree
- Структура данных представляет из себя сбалансированное дерево поиска
- B-Tree широко используется в базах данных и файловых системах (например: NTFS, HFS+, ext4)
- Структура данных поддерживает такие операции, как: поиск, вставка, удаление, Sequential access, Initial construction
- Сложность операций (в худшем случае): Space -
O(n)
, поиск, вставка, удаление -O(log n)
Заполните таблицу с указанием вклада каждого из участников в проект.
Примечание. Преподаватель может определить вклад любого из участников команды по истории коммитов.
Фамилия Имя | Вклад (%) | Прозвище |
---|---|---|
Андрей Неманов | 33,(3) | |
Рустем Давлетшин | 33,(3) | |
Кямаль Хайдаров | 33,(3) | камаль |
Девиз команды
Наши цели не ясны. Задачи не определены. Забиваем, товарищи!
Проект состоит из следующих частей:
src
/include
- реализация структуры данных (исходный код и заголовочные файлы);benchmark
- контрольные тесты производительности структуры данных (операции добавления, удаления, поиска и пр.);examples
- примеры работы со структурой данных;dataset
- наборы данных для запуска контрольных тестов и их генерация;
Рекомендуемые требования:
- С++ компилятор c поддержкой стандарта C++17 (например, GNU GCC 8.1.x и выше).
- Система автоматизации сборки CMake (версия 3.12.x и выше).
- Интерпретатор Python (версия 3.7.x и выше).
- Рекомендуемый объем оперативной памяти - не менее 4 ГБ.
- Свободное дисковое пространство объемом ~ 3 ГБ (набор данных для контрольных тестов).
Склонируйте проект к себе на устройство через Git for Windows (либо используйте возможности IDE):
git clone https://github.com/Algorithms-and-Data-Structures-2021/semester-work-b-tree.git
Для ручной сборки проекта в терминале введите:
# переход в папку с проектом
cd C:\Users\username\asd-projects\semester-work-b-tree
# создание папки для файлов сборки (чтобы не засорять папку с проектом)
mkdir -p build && cd build
# сборка проекта
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo && cmake --config RelWithDebInfo --build .
Генерация тестовых данных проходит с помощью файла generator.py, в нём указывается количество значений и путь до файла, куда тестовые данные сохраняются. Файлы хранятся в формате .csv
Генерация тестового набора данных в формате comma-seperated values (CSV):
# запуск Python-скрипта
python generator.py [args ...]
Тестовые данные представлены в CSV формате (см.
dataset/data/dataset-example.csv
):
id, full_name
0, "Ramil Safin"
1, "Bulat Abbyasov"
...
Примечание. Для удобства запуска контрольных тестов рекомендуется организовывать данные в директориях, например:
dataset/data/
add/
1/
100.csv
...
5000000.csv
2/ ...
3/ ...
...
10/ ...
search/
1/
100.csv
...
5000000.csv
...
10/ ...
...
По названию директории /dataset/data/add
можно понять, что здесь хранятся наборы данных для контрольных тестов по
добавлению элементов в структуру данных. Названия файлов 100.csv
. 5000000.csv
и т.д. хранят информацию о размере
набора данных (т.е. количество элементов).
Для запуска контрольных тестов запустите main.cpp, затем введите абсолютный путь к файлу с тестовыми данными, абсолютный путь к файлу, в который хотите сохранить результат, и количество повторов запуска. Тесты замеряют время работы трёх основных операций B-дерева (insert, search, remove)
В файле с результатом замеры времени будут записаны следующим образом:
insert search remove 100 100 100 100 100 100 100 100 100 insert: 100 search: 100 remove: 100
Наборы данных находятся в папке семестровой работы на Google Drive.
https://en.wikipedia.org/wiki/B-tree