Как делать запросы из направленного ациклического графа с исключительными подмножествами

Вопрос в абстрактных терминах:

У меня есть ориентированный ациклический граф (DAG), который содержит подмножества вершин, которые являются исключительными при запросе (только один элемент на подмножество должен присутствовать в результатах запроса) . Когда я запрашиваю структуру графа, я хотел бы получить набор вершин, которые вытекают из данной вершины, при этом выбирая только один элемент из известных подмножеств вершин в графе.

Конкретный вопрос:

I есть DAG, в котором хранятся мои сборки (вершины) и их зависимости (ребра). Учитывая сборку или набор сборок, мне нужно запросить, чтобы получить набор всех задействованных сборок и их зависимостей. Сложность заключается в том, что каждая сборка имеет несколько версий и только один экземпляр o f сборка может быть загружена в процесс. Зависимости для данной сборки меняются между различными версиями сборки.

Есть ли название для этой проблемы или группы проблем? Стандартный алгоритм, который я могу исследовать, чтобы найти решение?


Возможные области решения:

транзитивное замыкание кажется близким к хорошему решению, но элемент, выбранный из подмножества (версия сборки), будет меняться в зависимости от на пути, пройденном через граф, возможно, через несколько ветвей, поэтому вам почти нужно будет проследить путь, пройденный через граф, для генерации транзитивного замыкания.

База данных графов могла бы немного помочь, но мы не хотим идти по этому пути прямо сейчас, если в этом нет крайней необходимости.

6
задан Bryan Anderson 22 September 2011 в 22:05
поделиться