У меня есть неориентированный граф с положительным краем (V, E), для которого требуется минимальное связующее дерево, покрывающее подмножество k вершин V (проблема дерева Штейнера).
Я не ограничиваю размер связующего дерева до k вершин; скорее я точно знаю, какие k вершин должны быть включены в MST.
Начиная со всего MST, я мог бы обрезать ребра/узлы, пока не получу наименьший MST, содержащий все k.
Я могу использовать алгоритм Prim для получения всего MST и начать удаление ребер/узлов, в то время как MST подмножества k не уничтожается; в качестве альтернативы я могу использовать Floyd-Warshall для получения кратчайших путей всех пар и как-то объединить пути. Есть ли лучшие способы приблизиться к этому?