Combinatorial Search Flashcards
List and describe the two search problems
- A Decision Problem
This attempts to find a solution that satisfies all constraints.
- An Optimization Problem
This must find a solution that minimizes or maximizes the value of a given objective
function, whilst still satisfying all constraints
What is an AND Node?
A (sub-)problem is only solves when all of its children are solved
Example: Divide and Conquer
What is an OR Node?
A (sub-)problem is solved when any of its children are solved.
Examples: Backtracking, Branch and Bound
Explain the Divide and Conquer Algorithm
This is a recursive method of searching by which problems are broken into sub-problems, and those into sub-problems etc etc. This ends up where those solutions are combined to form a global solution.
Explain how the Divide and Conquer Algorithm works on a Centralised Processor as opposed to a Multicomputer
We use a centralised multiprocessor setup as the list of unsolved sub-problems can be kept on a single stack and manipulated by all the processors. Processors needing work can access the stack, and place work onto the stack if they have excess amounts. This allows us to balance load effectively.
With multi-computers , we need to share/scatter the memory of sub-problems to the individual processing workers. This means that work is more statically assigned.
Explain Backtrack Search
Uses a depth-first search to consider a tree with many solutions. It generates all of its children and chooses one to continue on given a rule. Children are possible variants of the parent given a change in constraints (One move further)
Once it has either reached a node with no children or all of the nodes children have
been explored, a node will backtrack to its parent node, who will then either follow a
different sub-problem, or do the same thing.
Explain Branch and Bound
We use branch and bound to find optimal solutions. It is a variant of the backtrack search. This uses information about optimality to reduce the number of partial solutions we need to explore. We prune off unexplored sub-problems based on the information that they cannot be
optimal.
We know what optimal value we would like to reach so we introduce bounds past which we would not want a solution.
Explain Minimax Algorithm
The Minimax algorithm is a form of a depth-first search where each node holds the value of a position from the point of view of Player 1 determined by a given evaluation function. Player 1 wants to maximise the value while player 2 wants to minimise the value. (We basically want the best worst case scenario)
Explain Alpha Beta pruning
Alpha-Beta pruning is the process of pruning branches when their optimal value falls below the current optimal value for that level. This significantly speeds up the Minimax algorithm but has no effect on its decision making.
Which is better for the Divide and Conquer algorithm, a Centralised Multiprocessor or a Multicomputer.
Divide-and-conquer algorithms are more easily implemented on Centralised multiprocessors