Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Combinatorial search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{no footnotes|date=January 2013}} {{one source |date=May 2024}} In [[computer science]] and [[artificial intelligence]], '''combinatorial search''' studies [[search algorithms]] for solving instances of problems that are believed to be hard in general, by efficiently exploring the usually large solution space of these instances. Combinatorial search algorithms achieve this efficiency by reducing the effective size of the search space or employing heuristics. Some algorithms are guaranteed to find the optimal solution, while others may only return the best solution found in the part of the state space that was explored. Classic combinatorial search problems include solving the [[eight queens puzzle]] or evaluating moves in games with a large [[game tree]], such as [[reversi]] or [[chess]]. A study of [[computational complexity theory]] helps to motivate combinatorial search. Combinatorial search algorithms are typically concerned with problems that are [[NP-hard]]. Such problems are not believed to be efficiently solvable in general. However, the various approximations of complexity theory suggest that some instances (e.g. "small" instances) of these problems could be efficiently solved. This is indeed the case, and such instances often have important practical ramifications. == Examples == Common algorithms for solving combinatorial search problems include: * [[A* search algorithm]] * [[Alpha–beta pruning]] * [[Branch-and-bound]] * [[Minimax]] == Lookahead == Lookahead is an important component of combinatorial search, which specifies, roughly, how deeply the [[graph (data structure)|graph]] representing the problem is explored. The need for a specific limit on lookahead comes from the large problem graphs in many applications, such as [[computer chess]] and [[computer Go]]. A naive [[breadth-first search]] of these graphs would quickly consume all the memory of any modern computer. By setting a specific lookahead limit, the algorithm's time can be carefully controlled; its time [[exponential growth|increases exponentially]] as the lookahead limit increases. More sophisticated search techniques such as [[alpha–beta pruning]] are able to eliminate entire subtrees of the search tree from consideration. When these techniques are used, lookahead is not a precisely defined quantity, but instead either the maximum depth searched or some type of average. == See also == * [[Brute-force search]] * [[Combinatorial explosion]] * [[Combinatorial optimization]] * [[Search algorithm]] * [[State space search]] == References == * Russell and Norvig. ''[[Artificial Intelligence: A Modern Approach]]''. [[Category:Analysis of algorithms]] [[Category:Combinatorial optimization]] [[Category:Computational complexity theory]] [[Category:Game artificial intelligence]] [[Category:Search algorithms]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:No footnotes
(
edit
)
Template:One source
(
edit
)