Я изучал книгу Кормена и др., и я немного запутался в алгоритме, который они предоставили. Я понял, как работает концепция алгоритма Прима из Википедии, но я не могу имитировать эту работу, используя алгоритм, представленный в моей книге.
Обратитесь к этой онлайн-копии главы: http://www.cs.cmu.edu/afs/cs/academic/class/15451-s04/www/Lectures/minimumSpanningTrees.pdf
Алгоритм приведен на странице 13 в приведенной выше ссылке, а пример диаграммы находится на предыдущей странице.
Теперь, используя алгоритм на примере случая, на первом шаге:
u ‹--- узел A через ExtractMin(Q). Далее, согласно диаграмме, в Adj[u] есть две записи: узел b и узел h.
Теперь сначала установите v ‹---- node b. Затем проверьте, принадлежит ли v Q. Принадлежит. Проверить, является ли w(u,v) ‹ key[v]. Истинный. Итак, PI[v] ‹--- u и key[v] ‹--- w(u, v). Я получил это много. Это показано в (b) диаграммы на стр. 12.
НО алгоритм говорит «для каждого v в Adj [u]».
Таким образом, следующий шаг должен установить v ‹--- узел h. Затем проверьте, принадлежит ли v Q. Принадлежит! И w(u,v) ‹ key[v]? Это! Так как key[v] = бесконечность! Но на диаграмме показан другой шаг в части (c)!
Аааааа! Почему?