Skip to content

Latest commit

 

History

History
executable file
·
14 lines (8 loc) · 1.78 KB

File metadata and controls

executable file
·
14 lines (8 loc) · 1.78 KB

Parallel Dijkstra Algorithm

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

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

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

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

Ограничения

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