title: Construct a minimum spanning tree covering a specific subset of the vertices
body: <p>I have an undirected, positive-edge-weight graph <em>(V,E)</em> for which I want a minimum spanning tree covering a subset <em>k</em> of vertices <em>V</em> (the Steiner tree problem).</p>
  
  <p>I'm not limiting the size of the spanning tree to <em>k</em> vertices; rather I know exactly <em>which</em> <em>k</em> vertices must be included in the MST.</p>
  
  <p>Starting from the entire MST I could pare down edges/nodes until I get the smallest MST that contains all <em>k</em>.</p>
  
  <p>I can use Prim's algorithm to get the entire MST, and start deleting edges/nodes while the MST of subset k is not destroyed; alternatively I can use Floyd-Warshall to get all-pairs shortest paths and somehow union the paths. Are there better ways to approach this?</p>