Я пытаюсь найти ширину ориентированного ациклического графа ... как представлено произвольно упорядоченным списком узлов, даже без списка смежности.
График / список для параллельного GNUMake-like менеджер рабочего процесса, который использует файлы в качестве критерия для порядка выполнения.У каждого узла есть список исходных и целевых файлов.У нас есть хеш-таблица, так что по имени файла можно определить узел, который его создает.Таким образом, мы можем выяснить родителей узла, изучив узлы, которые генерируют каждый из его исходных файлов, используя эту таблицу.
Это единственная возможность, которая у меня есть на данный момент, без серьезного изменения кода.Код был в открытом доступе некоторое время, и последнее, что мы хотим сделать, это значительно изменить структуру и получить плохую версию.И нет, у нас нет времени для тщательного тестирования (я в академической среде).В идеале мы надеемся, что сможем сделать это, не делая ничего более опасного, чем добавление полей к узлу.
Я буду публиковать ответ вики-сообщества, описывающий мой текущий подход и его недостатки.Если кто-то хочет отредактировать это или использовать его в качестве отправной точки, не стесняйтесь.Если есть что-то, что я могу сделать, чтобы уточнить вещи, я могу ответить на вопросы или почтовый индекс, если необходимо.
Спасибо!
РЕДАКТИРОВАТЬ: Для всех, кто заботится, это будет в C. Да, яЯ знаю, что мой псевдокод в каком-то ужасно похожем на Python стиле.Я надеюсь, что язык на самом деле не имеет значения.