Я пытаюсь разработать алгоритм, в котором для связного взвешенного графа G = (V, E) и подмножества вершин U, которое находится в V, будет построено минимальное остовное дерево, такое что все вершины в U являются листьями (другие вершины могут также быть листьями) или возвращает, что такого дерева не существует (False).
Это все, что я получил, адаптировав алгоритм Прима (справедливое предупреждение, это действительно плохо; я даже не знаю, работает ли он/эффективен или какие структуры данных использовать, я приму буквально любой другой правильный алгоритм вместо):
Let x be an arbitrary node in G
Set S = {x}
While S != V:
Let (u,v) be the cheapest edge with u in S and v not in S
Add (u,v) to tree T if u is not in U, add v to S
If all u in U is in the tree T:
return T
Else:
return False
У меня также есть картина того, что, по моему мнению, это сделает с нарисованным мной графиком: pic here а>
Доказательство того, что алгоритм верен, также дало бы мне некоторое спокойствие.
Let (u,v) be the cheapest edge with u in S and v not in S
следует исключать вершиныu in G
, которые вы уже использовали, иначе они не стали бы листьями. - person Vincent van der Weele   schedule 15.10.2020u
иv
не могут быть одновременно вU
. Я пропустил это. - person Vincent van der Weele   schedule 16.10.2020