Сравнительное исследование производительности алгоритмов поиска кратчайшего пути в графах: Dijkstra, A*, BFS и GBFS.
Эксперименты проводились на двух типах тестовых графов:
- Решётки (grid) с единичными весами рёбер.
- Случайные (random) графы, где вес рёбер может принимать значения в диапазоне от 1 до 10.
-
algorithms.py
Содержит реализации алгоритмов Dijkstra, A*, BFS (невзвешенный вариант) и GBFS, а также набор эвристических функций (евклидова и манхэттенская). -
generate_graphs.py
Генерация тестовых графов двух типов:- Случайный граф (random) с вероятностью ребра
pи весами от 1 до 10. - Решётчатый граф (grid) заданных размеров (например, 50×50, 100×100).
- Случайный граф (random) с вероятностью ребра
-
run_experiments.py
Основной скрипт для запуска экспериментов:- Генерирует или загружает тестовые графы.
- Запускает каждый алгоритм заданное число раз.
- Замеряет время выполнения, потребление памяти и длину найденного пути.
- Сохраняет результаты в CSV или Markdown-таблицы.
-
plot_results.py
Считывает итоги экспериментов (CSV/MD) и строит графики (время, память, отклонение пути).
Используетmatplotlibдля визуализации.
- Python 3.10 (или выше).
- Библиотеки:
psutil(замер потребления памяти).matplotlib(построение графиков).csvи стандартные модули Python (heapq,argparse,timeи т. д.).
Пример установки необходимых зависимостей:
pip install psutil matplotlib