Алгоритм разделения и покорения для деревьев

Я пытаюсь написать алгоритм "разделяй и властвуй" для деревьев. Для шага "разделяй и властвуй" мне нужен алгоритм, который разбивает заданный неориентированный граф G=(V,E) с n узлами и m ребрами на поддеревья путем удаления узла. Все подграфы должны обладать свойством не содержать более n/2 узлов (дерево должно быть разбито как можно более равномерно). Сначала я попытался рекурсивно удалить все листья из дерева, чтобы найти последний оставшийся узел, затем я попытался найти самый длинный путь в G и удалить средний узел из него. Приведенный ниже график показывает, что оба подхода не работают:

Graph

Есть ли какой-то рабочий алгоритм, который делает то, что я хочу (возвращает узел H в приведенном выше случае).

7
задан Shahbaz 19 November 2011 в 11:17
поделиться