Задать вопрос
@Niobis

Как реализовать граф принятия решений?

Что подразумевается под словами "реализовать граф принятия решений"?
Т.е. у меня на листе нарисован граф вариантов:
1 -> 2 -> 4 -> победа.
______ -> 5 -> 7 -> поражение.
__-> 3 -> 6 -> победа.
Т.е. программа может пойти разными путями, возможно пересекающимися, возможно нет. Правильно ли я понимаю, что реализация состоит в том, что бы описать все эти варианты с помощью операторов ветвления (if-else-switch etc.)? Или есть какие-то секретные програмистские техники, которые позволяют это делать: может специальный тип данных, который бы позволил менять это дерево динамически?

upd: уточню. Не совсем "программа может пойти разными путями". Путь всегда один, но действие разное. Пытаюсь реализовать бота для игры, который бы анализировал сделанные ходы и делал свой.
  • Вопрос задан
  • 2024 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
Секретных техник никаких нет. Но есть Тория Графов

Какая перед вами задача стоит?
Ответ написан
kumaxim
@kumaxim
Web-программист
Единственная "секретная" техника, которая тут мне приходит на ум - патерн "Цепочка обязанностей", вместо Ваших if - elseif - else - switch - case -default, которые в графах будут в огромнейшем количестве...
Хотя это детали реализации, сама теория графов от этого не меняется.
Ответ написан
Комментировать
And3en
@And3en
Software Engineer at Luxoft
Так же посмотрите на такую вещь, как Конечный автомат. Должно помочь в понимании.
Ответ написан
Комментировать
@asArtem
Для начала это вообще не граф. Это дерево. Молодой программист решид написать игру? Похвально, молодец.
Тем ни менее подходы похожи. Гуглите информацию по темам "обход дерева", "обход графа". Пример обхода - это либо "поиск в ширину", либо "поиск в глубину".
И там и там принцип - рекурсии (это когда входишь в тот же самый метод внутри того же метода).
Боже упаси if-else. Если граф или дерево будет динамическое и меняться от 100 до 1000 000 ветвей, то все 1000 000 будем описывать?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы