Необходимо имплементировать класс Graph, хранящий взвешенный граф без циклов и с неотрицательными весами. Кроме того, нужно реализовать метод, выполняющий поиск кратчайших путей в соответствии с вариантом. Форма хранения графа может быть произвольной по усмотрению студента (как вариант - словарь смежности), но должна быть удобной для реализации метода поиска пути выбранного варианта.
Общим заданием для всех вариантов является реализация структуры графа. В зависимости от варианта, вам нужно реализовать следующие способы поиска пути:
- Алгоритм Дейкстры
- Алгоритм Флойда-Уоршела
- Алгоритм A*
Метод должен принимать и возвращать аргументы, соответствующие особенностям работы алгоритма. Желательной является визуализация сложности алгоритмов, опционально по желанию студента - визуализация алгоритма на планарном графе.
При переходе по ссылке преподавателя выполняется форк шаблонного репозитория, содержащего шаблон кода с заготовкой классов, а также этот файл. Вам необходимо сделать локальный клон репозитория, внести свои изменения и закомитить их. Не забудьте выполнить push в ваш GitHub репозиторий. Для работы вы можете использовать утилиту git или любой Git-клиент, включая встроенные в IDE. Неплохим вариантом будет также использовать GitHub Desktop.
Вам отредактировать в репозитории файл student.md, содержащий информацию о студенте, его группе и предпочтительном способе обратной связи от преподавателя.
Для получения максимального балла необходимо визуализировать (построить график) временную сложность выполнения метода поиска пути на разных объемах графа (линейно возрастающих)