Каков хороший алгоритм получения минимального вершинного покрытия дерева?
T (V, E) - дерево, из которого trees следует, что для любого листа tree любое минимальное вершинное algorithms покрытие должно включать dynamic-programming либо лист, либо вершину, смежную algorithm с листом. Это дает нам следующий algorithm алгоритм нахождения S, вершинного algorithms покрытия:
- Найдите все листья дерева (BFS или DFS), O (| V |) в дереве.
- Если (u, v) - такое ребро, что v - лист, добавьте u к покрытию вершины и сократите (u, v). Это оставит вас с лесом T_1 (V_1, E_1), ..., T_n (U_n, V_n).
- Теперь, если V_i = {v}, что означает | V_i | = 1, то это дерево можно отбросить, поскольку все ребра, инцидентные на v, покрыты. Это означает, что у нас есть условие завершения рекурсии, при котором у нас либо одна вершина, либо нет, и мы можем вычислить S_i в качестве покрытия для каждого T_i и определить S поскольку все вершины из шага 2 объединяют покрытие каждого T_i.
Теперь осталось dynamic-programming только проверить, что если algorithms исходное дерево имеет только algorithm-design одну вершину, мы возвращаем dynamic-programming 1 и никогда не запускаем trees рекурсию, а минимальное покрытие algorithm-design вершин может быть вычислено.
Изменить:
На algorithm самом деле, если немного algorithm-design подумать, это можно сделать algorithm с помощью простого варианта algorithm DFS.
algorithm
tree
dynamic-programming
Каков хороший алгоритм получения минимального вершинного покрытия дерева?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.