AI problem solving Flashcards
How do you make use of the different techniques? In what order?
Do you think the problem might be polynomial, then go for no less than a perfect solution
- Your main alternatives: 1. D&C, 2. DP, 3. greedy
If you think the problem is exponential, you will probably have to accept some compromises:
- Use an exponential algorithm and avoid solving large problems. If you tune it, maybe you will be able to solve your problem.
- or use a heuristic that is faster but may give lower quality
If you have no idea try all methods (in several ways) and then analyze your algorithms!
List the five main discrete algorithm design techniques
- Divide and conquer
- Dynamic programming
- Greedy algorithm/heuristic.
[ Do what seems best in every step. Is often heuristic. ] - Combinatorial search
[Test all possibilities or a subset of them. Use “branch and bound” to speed up] - Local search
[Take a solution and repeatedly improve it by making small changes. Is often heuristic]
What is constraint programming?
A paradigm for solving combinatorial problems that draw on a wide range or techniques.
Declaring constraints on the feasible solutions for a set of decision variables.
Some are: AI, computer science, and operations research
What are the alternatives to constraint programming?
AND how is constraint programming different?
Differs from common primitives of imperative programming in that they specify the properties of the solution rather than the step or sequence of steps to execute.