Подход, который вы описываете, не будет работать должным образом во всех случаях.В качестве примера рассмотрим этот линейный график:
A - - B - - C - - D
Предположим, AB имеет вес 1, CD имеет вес 2, а B - C имеет вес 3. Что будет делать алгоритм Крускала здесь?Сначала он добавит A - B, затем C - D, а затем B - C.
Теперь представьте, что сделает ваша реализация.Когда мы добавим A - B, вы отметите A и B как посещенные.Когда мы добавим C - D, вы отметите C и D как посещенные.Но затем, когда мы пытаемся добавить B - C, так как посещаются и B, и C, вы решите не добавлять ребро, оставляя результат, который не связан.
Проблема здесь в том, что когдаПри построении MST вы можете добавить ребра, связывающие узлы, которые уже были связаны с другими узлами в прошлом.Следовательно, критерий для добавления ребра меньше: «были ли эти узлы связаны ранее?» И больше: «есть ли уже путь между этими узлами?» Вот где появляется лес с несвязным множеством.
Здорово, чтовы ковыряете и подталкиваете традиционные реализации и пытаетесь найти способы их улучшить.Вы узнаете много нового об этих алгоритмах!В этом случае просто так получается, что то, что вы предлагаете, не совсем работает, и понимание того, почему это не работает, помогает пролить свет на то, почему существующий подход является тем, чем он является.