Подсчет количества деревьев в лесу - PullRequest
0 голосов
/ 02 декабря 2018

Я пытался ответить на следующий вопрос из учебника.

Учитывая n узлов леса и их ребер, опишите и докажите алгоритм, который находит количество деревьев в лесу.

Возьмем, к примеру, этот график:

graph

Предположим, что мы исследуем его с помощью DFS, начиная с вершины 0, которая посещает вершины в следующемпорядок: 0, 2, 1, 5, 4, 3, 6.

Соответствующий лес DFS будет выглядеть так:

this.

Вышеупомянутый лессодержит два дерева, и я думаю, что мы можем использовать приведенный ниже алгоритм для подсчета количества деревьев в лесу.[ Источник алгоритма ]

  1. Применение DFS на каждом узле.
  2. Увеличение счетчика на единицу, если каждый подключенный узел посещается из одного источника.
  3. Снова выполните обход DFS, если некоторые узлы еще не посещены.
  4. Подсчет даст количество деревьев в лесу.

Мой вопрос: Как я могу доказать, что этот алгоритмправильно, и есть ли более эффективный алгоритм для получения количества деревьев в лесу?

...