Skip to content

Latest commit

 

History

History

dijkstra

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Parallel Dijkstra Algorithm

В этом задании вам необходимо реализовать параллельную версию алгоритма Дейкстры с использованием Multi-Queue в качестве приоритетной очереди.

Решение, в котором поддерживается счетчик суммарного количества вершин в очереди и в процессе обработки (как рассказано на лекции) считается корректным. Для тех, кто хочет получить больше пользы от выполнения задания, предлагается поддерживать счетчики количества пустых очередей и ждущих потоков. Ожидание должно быть активным (проверка необходимого условия в цикле), никакие wait, park и прочие примитивы использовать не нужно.

Проект содержит следующие файлы:

  • Graph.kt содержит классы Node и Edge, которые вы будете использовать в алгоритме. Для обновления расстояния до вершины необходимо использовать distanceMutable.compareAndSet(..).
  • Dijkstra.kt содержит шаблон для параллельной версии алгоритма, его вам и требуется дописать.

Ограничения

Разрешается изменять только файл Dijkstra.kt. Для обновления расстояния до вершины необходимо использовать CAS.