Пожалуйста, помогите мне с алгоритмом для следующей задачи -алгоритм направленного графа задача
Учитывая совокупность фактов, мы хотели бы избавиться от такого же избыточности, насколько это возможно. Факты, связанные с этой проблемой, являются членами транзитивной связи между прописными буквами. Таким образом, каждый факт представляет собой пару прописных букв, таких как AB, что означает, что A связано с B. Буква может или не может быть связана с самим собой, но транзитивность имеет место: если A связано с B и B, связано с C, тогда мы можем заключите, что A связано с C. Создайте класс FactCount, содержащий метод minFacts, которому дана известная строка [], и которая возвращает размер самого маленького набора фактов, который позволит нам вывести все (и только те вещи) что может быть выведено из фактов, содержащихся в известных.
Каждый элемент известного будет содержать 1 или более фактов, разделенных одним пробелом. Наименьший набор фактов может содержать факты, которые могут быть выведены из известных, но не содержащихся в нем.
Например:
{ "AB AC CA AA BC", "AD"}
Возвращает: 4
AB, CA, BC и AD позволяют нам сделать вывод, как АА (AB, BC, CA дает AA транзитивностью), а AC (AB, BC дает AC транзитивностью), и нет меньшего подмножества, которое позволяет вывести все известные факты.
P.S - НЕ РАБОТАЕТ. Просто проблема, которую я нашел онлайн и не мог решить часами ...
Можете ли вы указать на алгоритм поиска минимального остовного дерева для ориентированных графов? Не могу найти в Google. – Pranav
Если вы работаете в python, есть NetworkX. Это очень полная библиотека. http://networkx.lanl.gov/reference/generated/networkx.mst.html#networkx.mst –
Для этого алгоритма просто скопируйте то, что они используют;) –