1 / 18

Other partial solution strategies

Other partial solution strategies. Partial solution algorithms. greedy branch and bound A* divide and conquer dynamic programming. 4 queens: separate row and column. possible pruning. complete solutions. More in next slide set…. Branch and Bound.

mauli
Download Presentation

Other partial solution strategies

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Other partial solution strategies

  2. Partial solution algorithms • greedy • branch and bound • A* • divide and conquer • dynamic programming

  3. 4 queens:separaterow and column possible pruning complete solutions More in next slide set…

  4. Branch and Bound • eliminate subtrees of possible solutions based on evaluation of partial solutions complete solutions

  5. e.g., branch and bound TSP current best solution distance 498 distance so far 519 complete solutions

  6. Branch and Bound requirement • a bound on best solution possible from current partial solution (e.g., if distance so far is 519, total distance is >519) • ‘tight’ as possible • quick to calculate • a current best solution (e.g., 498)

  7. Tight bounds • value of partial solution plus • estimate of value of remaining steps • must be ‘optimistic estimate’ example: path so far: 519 remainder of path: 0(not tight) bounded estimate: 519

  8. Optimistic but Tight Bound Current best Actual values if calculated optimistic tight

  9. Example - b&b for TSP • Estimate a lower bound for the path length: • Fast to calculate • Easy to revise

  10. Example - b&b for TSP 1.Assume shortest edge to each city: (7+7+9+7+10) = 40 A B C D E 2.Assume two shortest edges to each: ((7+8)+(7+7)+(9+10)+(7+8)+(10+11))/2 = 7.5 + 7 + 9.5 + 7.5 + 10.5 = 42 Which is better?

  11. Tight Bound (7+7+9+7+10) = 40 Best Path found 46 Path so far 040 Path so far 1144 Path so far 11+13 = 2447

  12. B&B algorithm • Depth first traversal of partial solution space - leaves are complete solutions • Subtrees are pruned below a partial solution that cannot be better than the current best solution

  13. Partial solution algorithms • greedy • branch and bound • A* • divide and conquer • dynamic programming

  14. A* algorithm - improved b&b • Ultimate partial solution search • Based on tree searching algorithms you already know - bfs, dfs • Two versions: • Simple - used on trees • Advanced - used on general graphs

  15. general search algorithm for trees* algorithm search (startState, fitnessFn()) returns bestState openList = new StateCollection(); openList.insert(startState) bestState = null bestFitness = min // assuming maximum wanted while (notEmpty(openList) && resourcesAvailable) state = openList.get() fitness = fitnessFn(state) if (state is complete and fitness > bestFitness ) bestFitness = fitness bestState = state for all values k in domain of next variable nextState = state.include(k) openList.insert(nextState) return solutionState *For graphs, cycles are a problem

  16. Versions of general search • Based on the openList collection class • Breadth first search • Depth first search (->branch and bound) • Best first search (informed search) • Best first • A*

  17. A B C D J F E G H I K M N O P L Y Q S W U c g i k m a e T X l R j h V n d b Z f algorithm search (startState, fitnessFn()) returns bestState openList = new StateCollection(); openList.insert(startState) bestState = null bestFitness = min // assuming maximum wanted while (notEmpty(openList) && resourcesAvailable) state = openList.get() fitness = fitnessFn(state) if (state is complete and fitness > bestFitness ) bestFitness = fitness bestState = state for all values k in domain of next variable nextState = state.include(k) openList.insert(nextState) return solutionState

  18. A* • Best first search with a heuristic fitness function: • Admissible (never pessimistic) • Tradeoff: Simplicity vs accuracy/tightness • The heuristic heuristic: • “Reduced problem” strategy e.g., min path length in TSP

More Related