При использовании алгоритма Дейкстры, есть ли хороший способ отслеживать переменную, которая меняется в зависимости от пути? - PullRequest
1 голос
/ 25 марта 2020

Я пишу программу планирования, используя C#, в которой я строю график доступности людей и запускаю алгоритм Дейкстры от каждого начального узла до каждого конечного узла, чтобы определить оптимальный путь.

Я бы хотел использовать количество раз, когда указанный c человек работал в качестве веса ребра (то есть, если алгоритм должен выбирать между Джоном, который работал 2 раза, и Сью, который работал 1, он выберет Сью, потому что она работала меньше раз ).

Проблема в том, что это число будет постоянно меняться в зависимости от того, какую вершину я сейчас просматриваю. Я думаю, что могу создать класс, давайте назовем его TimesWorked, который хранит список людей и количество раз, сколько они работали, а затем добавить объект для указанного класса в мой класс вершин. Оттуда на каждом ребре от vertex1 до vertex2, предполагая, что этот край создает лучший путь к vertex2, чем текущий, я могу глубоко скопировать TimesWorked из vertex1, внести необходимые изменения в копию и назначить это к vertex2. Это потребует, чтобы я проверил все пути в любую вершину, прежде чем проверять пути из вершины, что должно быть возможным, потому что я могу гарантировать, что это направленный граф ацикли c.

Я не написал ни одного кода для алгоритма еще, иначе я бы вставил его, но есть ли у кого-нибудь понимание того, сработает ли моя идея или, возможно, есть лучшая идея?

вот пример графика, я нарисовал его так, чтобы добавить стрелки было не просто, но оно направлено и всегда идет слева направо. начало и конец отражают время начала и время окончания доступности.

example graph

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