У меня есть сеть «узлов», каждый узел производит «результаты». Каждый узел и результат имеют уникальное имя/id. Результаты используются как входные, так и выходные данные для каждого узла. Когда все входные результаты доступны для узла, он может быть выполнен. Когда узел завершит выполнение своих выходных результатов, будет доступно.Что это за тип графика и какой алгоритм я могу использовать для его перемещения?
Так, например:
input node output
A x
x B y,z
x,z C q
В данной сети. Узел A не имеет входных данных и может быть выполнен первым. Тогда B можно выполнить, когда результат x станет доступным. Когда выполняются как A, так и B, C может выполняться, потому что это зависит от результатов от A и B. Результат также может быть конечным продуктом, например y в этом случае, который не используется как вход для любого узла.
Сеть может быть намного сложнее. Каждый узел может создавать ряд результатов и может иметь несколько зависимостей ввода.
Я хотел был бы иметь возможность выбрать результат, сказать «q» и выяснить, какие узлы необходимо выполнить, чтобы добраться туда. Я хочу сделать это для нескольких результатов в более широкой сети узлов.
Я чувствую, что это общий алгоритм, но у меня нет опыта в этой области. Он не является иерархическим, как дерево, поскольку зависимости могут создавать круги. Из того, что я читал, я думаю, что это должен быть тип графа леса.
В любом случае он должен быть проезжим. Всегда есть хотя бы один узел, который может быть выполнен первым, а все остальные должны иметь возможность следовать в некотором порядке, не создавая тупик, где два узла ждут друг друга.
Каков общий способ описания этой сети/ее узлов в коде и что будет официальным названием для такой сети?
Удивительный! Это именно тот ответ, на который я надеялся. Большое спасибо mikyra :) –