Далее рассмотрим параллельную реализацию алгоритма Прима. В целом этот алгоритм итерационный. Каждая итерация добавляет одну новую вершину к минимальному остовному дереву. Так как значение d[v] вершины v изменяется каждый раз после добавления вершины u в VT, трудно выбрать более одной вершины для включения в каркас минимального веса. Например, после выбора вершины b, минимальное остовное дерево не может быть найдено, если вершины d и c уже выбраны. Причина в том, что после выбора вершины d значение d[v] изменилось: было – 5, стало – 2. Итак, нелегко выполнить разные итерации цикла while параллельно.
Однако каждая итерация может быть распараллелена так, как описано далее. Пусть p – количество процессоров, а n – количество вершин в графе. Разобьем множество V на p подмножеств. В каждом множестве содержится по n / p последовательных вершин; обработка каждого подмножества будет выполняться разными процессорами. Пусть Vi – подмножество вершин, определенное процессору Pi, где i = 0, 1, …, p-1. Каждый процессор Pi хранит часть массива d, которая соответствует Vi (то есть процессор Pi хранит d[v] для v Vi).
Уникальная процедура: эротический массаж - множество приятных ощущений и огромная подзарядка для тела.