Задание выполнили Лисов Кирилл, Григорьев Григорий, Карп Дмитрий
Для запуска в Google Colab необходимо загрузить папку
datasets
в корень своего Google Drive
Jupyter Notebook
- блокноты Jupyter Notebook с выполнеными заданиемиmodels
- модели хранения графовalgoritms
- алгоритмы для графовimport_datasets.py
- функции для импорта датасетов из файлаrequirements.txt
- зависимости проекта
Для запуска проекта необходм Python версии, не ниже 3.7
В командной строке выполните
pip install -r requitements.txt
В папке проекта запустите команду
jupyter notebook
В открывшемся окне браузера откройте файл graph_results.ipub
и запустите ячейки
Если проект запускается локально (переменная google_drive = False
), используются
тестовые датасеты небольших размеров (находятся в папке test_datasets
)
В файле landmarks.py
есть две реализации алгоритма - Базоввый (LandmarksBasic
) и LCA (LandmarksLCA
).
Для инициализации алгоритма и алгоритма необходимо выполнить:
from algoritms.landmarks import *
landmark = LandmarksBasic(graph, 42, SelectLandmarksMethod.RANDOM)
# или
landmark = LandmarksLCA(graph, 42, SelectLandmarksMethod.RANDOM)
Для выбора метода поиска вершин-ориентиров в качестве третьего аргумента необходимо передать один из следующих параметров
from algoritms.landmarks import SelectLandmarksMethod
SelectLandmarksMethod.RANDOM # Для случайного выбора вершин-ориентиров
SelectLandmarksMethod.MAX_DEGREE # Для выбора вершин-ориентиров с наибольшими степенями
SelectLandmarksMethod.BEST_COVERAGE # Для выбора вершин-ориентиров с наилучшем покрытием
Для разработки существует ручной метод выбора:
SelectLandmarksMethod.MANUAL
В этом случае номера необходимо ввести с клавиатуры номера вершин-ориентиров, когда система попросит об этом.
В скрипте этот метод можно использовать через потоки ввода:
import io
import sys
from algoritms.landmarks import SelectLandmarksMethod, LandmarksLCA
for i in range(1, 1000, 3):
sys.stdin = io.StringIO(f"{i} {i + 1} {i + 2}")
landmarks = LandmarksLCA(graph, 0, SelectLandmarksMethod.MANUAL)