Я должен комбинаторно подсчитать все возможные случаи для задачи. Я хочу сделать дерево для этой цели. Есть несколько рабочих мест, и каждая работа имеет несколько подзадач. Есть много агентов, доступных для работы. Предположим, что задание Job1 Subjob1 может быть выполнено агентом 1 или 2, а затем задание Job 1 Subjob2 будет выполнено любым из агентов. И тогда работа 2 будет запущена. и так далее.
Поскольку узлы меняются, а также изменяется количество дочерних узлов на разных уровнях, у меня следующие вопросы:
Какова лучшая структура данных для реализации того же?
Каков наилучший способ пройти по дереву, используя рекомендованную вами структуру данных?
пожалуйста, дайте конкретные примеры C ++ / Java или веб-источники, а не только абстрактные советы, так как я хорошо разбираюсь в кодировании.
РЕДАКТИРОВАТЬ:
Пожалуйста, обратитесь к блок-схеме дерева, которое я имею в виду.
Хммм, я не думаю, что дерево — лучшая структура данных для ваших требований. Я предлагаю std::vector
из Jobs
, каждый Job
должен иметь контейнер subjobs
Ваше расписание может перебирать вектор намного проще, чем дерево.
Редактировать 1: код
class Subjob;
class Job
{
std::vector<Subjob> other_jobs;
};
std::vector<Job> task_container;