Структура данных, которая может представлять несколько путей ветвления в последовательности - PullRequest
1 голос
/ 20 сентября 2011

Я пытаюсь реализовать модель для системы ввода-вывода, в которой есть несколько разных «калькуляторов», выполняющих разные вычисления с входными данными и возвращающих один или несколько выходных данных (в моем коде каждый калькулятор является экземпляром учебный класс). Это похоже на систему логических элементов, за исключением того, что здесь каждый калькулятор может выдавать два или более выходных данных (данные более сложные, чем просто числа).

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

Для любого не запускающегося Калькулятора он не будет работать до тех пор, пока все калькуляторы, указывающие на него, не закончат свой собственный запуск (чтобы все входные данные были готовы к обработке).

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

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

Я думал дать каждому Калькулятору внутренний список данных «Далее», который ссылается на Калькуляторы, на которые будут отображаться все выходные данные. Есть ли другие способы начать этот дизайн?

1 Ответ

1 голос
/ 21 сентября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...