В настоящее время я пишу алгоритм оптимизации в MATLAB, в котором я полностью отстой, поэтому я действительно могу использовать вашу помощь. Я действительно изо всех сил пытаюсь найти хороший способ представления графа (или, скорее, дерева с несколькими корнями), который бы выглядел примерно так:
альтернативный текст http://img100.imageshack.us/img100/3232/graphe.png
В основном наши корни - 11/12/13 (стадия 0), 2x - стадия 1, 3x стадия2 и 4x стадия3. Как вы можете видеть, узлы из stageX подключены только к нескольким узлам из stage (X + 1) (поэтому их не обязательно подключать ко всем).
Важно: каждый узел должен содержать несколько значений (как минимум 3-4), одно будет его числом и как минимум две другие переменные (которые будут использоваться для оптимизации решений).
У меня есть простое представление с использованием матриц, но его действительно сложно поддерживать, поэтому мне было интересно, есть ли хороший способ сделать это?
Второй вопрос: когда я закончу с этим представлением, мне нужно вычислить, насколько хорош каждый маршрут (от корней до конца) (например, скажем, мне нужно сравнить, 11-21-31-41 лучший или 11-21-31-42 лучше), чтобы сделать это, я буду использовать переменные, которые содержит каждый узел. Но значения должны быть вычислены рекурсивно, скажем, мы начинаем с 11, но чтобы вычислить, насколько хороши 11-21-31-41, нам сначала нужно перейти к 41, сделать некоторые вычисления, перейти к 31, сделать некоторые вычисления, перейти 21, сделайте некоторые вычисления, а затем мы можем вычислить 11, используя все предыдущие вычисления. То же самое с 11-21-31-42 (мы начинаем с 42, затем 31-> 21-> 11). Мне нужно проверить все возможные маршруты таким образом. И вот вопрос, как это сделать? Может быть, BFS / DFS? Но я не совсем уверен, как сохранить все результаты.
Это некоторые длинные вопросы, но я надеюсь, что я не прошу вас делать домашнее задание (так как я получил все алгоритмы, просто я не очень хорош в Matlab, и мой учитель не позволил бы мне сделать это в Java).