Введение

В информатике и искусственном интеллекте, комбинаторный поиск изучает алгоритмы поиска для решения экземпляров задач, которые считаются сложными в общем случае, путем эффективного исследования обычно обширного пространства решений этих экземпляров. Алгоритмы комбинаторного поиска достигают этой эффективности за счет уменьшения эффективного размера пространства поиска или использования эвристических методов. Некоторые алгоритмы гарантированно находят оптимальное решение, в то время как другие могут возвращать только наилучшее решение, найденное в исследованной части пространства состояний. Классическими задачами комбинаторного поиска являются решение задачи о восьми ферзях или оценка ходов в играх с большим деревом игры, таких как реверси или шахматы. Изучение теории вычислительной сложности помогает обосновать необходимость комбинаторного поиска. Алгоритмы комбинаторного поиска обычно применяются к NP-трудным задачам. Считается, что эти задачи в общем случае не могут быть эффективно решены. Однако различные приближения в теории сложности предполагают, что некоторые экземпляры (например, "небольшие" экземпляры) этих задач могут быть решены эффективно. Это действительно так, и такие экземпляры часто имеют важное практическое значение.

Главная фигура

Прогнозирование (или глубина поиска) — важный компонент комбинаторного поиска, который определяет, насколько глубоко исследуется граф, представляющий задачу. Необходимость в установке конкретного ограничения на глубину поиска обусловлена большими графами задач во многих приложениях, таких как компьютерные шахматы и го. Наивный поиск в ширину по таким графам быстро исчерпает всю память любого современного компьютера. Устанавливая определенный предел глубины поиска, можно точно контролировать время работы алгоритма; время его работы экспоненциально возрастает с увеличением этого предела. Более сложные методы поиска, такие как альфа-бета отсечение, позволяют исключать из рассмотрения целые поддеревья дерева поиска. При использовании этих методов, глубина поиска не является строго определенной величиной, а представляет собой либо максимальную глубину поиска, либо некий вид среднего значения.