Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Reframing The Problem - DCJS July 2016

Reframing The Problem - DCJS July 2016

Daniel Cousineau

July 14, 2016
Tweet

More Decks by Daniel Cousineau

Other Decks in Technology

Transcript

  1. reframing
    the problem

    View Slide

  2. how to think
    like a
    computer
    scientist

    View Slide

  3. how to think

    View Slide

  4. @dcousineau

    View Slide

  5. View Slide

  6. @queens_js

    View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. THANKS!

    View Slide

  15. how to think
    like a
    computer
    scientist

    View Slide

  16. to solve our problem, we must
    first invent the universe

    View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. mental set

    View Slide

  28. View Slide

  29. functional fixedness

    View Slide

  30. View Slide

  31. reduction

    View Slide

  32. View Slide

  33. go rubber
    duck
    yourself

    View Slide

  34. 4 1 2
    6 3
    7 5 8

    View Slide

  35. 4 1 2
    6 3
    7 5 8
    1 2
    4 6 3
    7 5 8
    up

    View Slide

  36. 4 1 2
    6 3
    7 5 8
    1 2
    4 6 3
    7 5 8
    up
    1 2
    4 6 3
    7 5 8
    right

    View Slide

  37. 4 1 2
    6 3
    7 5 8
    1 2
    4 6 3
    7 5 8
    up
    1 2
    4 6 3
    7 5 8
    right
    4 1 2
    6 3
    7 5 8
    right

    View Slide

  38. View Slide

  39. View Slide

  40. View Slide

  41. View Slide

  42. A* ->
    queue = expand(initial)
    while queue is not empty:
    dequeue move from queue
    if move is solution:
    return move
    concat expand(move) to queue
    sort queue by heuristic

    View Slide

  43. expand(state) ->
    moves = []
    if left valid move:
    add state.move(left) to moves
    if right valid move:
    add state.move(left) to moves
    if up valid move:
    add state.move(left) to moves
    if down valid move:
    add state.move(left) to moves
    return moves

    View Slide

  44. 4 1 2
    6 3
    7 5 8

    View Slide

  45. 4 1 2
    6 3
    7 5 8
    4 2
    6 1 3
    7 5 8
    4 1 2
    6 3
    7 5 8
    4 1 2
    6 5 3
    7 8
    4 1 2
    6 3
    7 5 8

    View Slide

  46. heuristic(state) ->
    manhattan(state) + outofplace(state)

    View Slide

  47. heuristic

    View Slide

  48. View Slide

  49. View Slide

  50. View Slide

  51. Fun Facts
    181439 possible states
    241921 possible moves

    View Slide

  52. MORE THAN TOY PROBLEMS

    View Slide

  53. View Slide

  54. Balance as of 12/31/2013
    Less Payment 02/14 /2014 Chk#00062440
    SUMMER DAY
    8889-2 DA The Tymes: So Much In Love 0.09100 11 1.00
    1.00
    Digital Royalty Earned 1.00
    BRISTOL STOMP
    8896 -2 CD Top Teen Dance Hits (1958-1964) 0.09100 30 2. 73
    2.73
    DANCE THE MESS AROUND
    8897-2 CD The Very Best of Chubby Checker 0 .09100 254 23 . 11
    23. 11

    View Slide

  55. so what did
    we learn?

    View Slide

  56. don’t fixate

    View Slide

  57. pull back,
    abstract

    View Slide

  58. write down
    everything you
    know

    View Slide

  59. if all else fails,
    google.

    View Slide

  60. fin

    View Slide