| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Алгоритм] Игра на орграфе |
| Автор: Rhianin 10.4.2011, 12:43 |
| Здравствуйте. Дана следующая задача : В игре на орграфе два игрока поочередно накрывают белыми (соответственно, черными) фишками вершины орграфа. Игрок при своем ходе может накрыть фишкой любую из свободных вершин, хотя бы один предшественник которой накрыт фишкой противника; первым ходом белые накрывают любую вершину. Проигрывает тот, кто при своем ходе не может выставить фишку в соответствии с правилами игры. Определить, является ли начальная конфигурация игры на заданном орграфе выигрышной для белых. Как я понял условие: Задаётся орграф, и нужно определить, существует ли на нём такая вершина, при постановке на которую белым игрок фишки, он оказывается в выигрышной позиции (т.е. выигрывает при безошибочной игре обоих игроков). Я так понимаю, что в данном случае нас интересуют орграфы, не имеющие вершин от которых не отходят дуги, т.к. в противном случае, белый игрок ставит на такую вершину свою фишку и выигрывает. У меня пока что есть только одна идея решения: полный перебор всех вариантов ходов, и построение дерева игры. В соответствии с этим есть несколько вопросов: 1. В правильную ли сторону я думаю, и является ли полный перебор и построение дерева единственным способом решения? Если да, то: а) Как оптимальнее построить дерево? Ведь в орграфе возможно достижение одной вершины несколькими способами с равным кол-вом ходов, в следствии чего в дереве будут одинаковые лишние поддеревья. б) К примеру я построил дерево игры, как определить, какие из листьев, обозначающих победу белых, достигаются независимо от ходов чёрных? Если же нет, то: Прошу подсказать другой способ решения. 2. Для этой задачи орграф лучше представлять с помощью матрицы смежности? Прошу направить на верный путь. Заранее спасибо. |