Elle Meredith
October 23, 2017
500

Algorithms to live by and why should we care

Presented at Full Stack Toronto Conference

October 23, 2017

Transcript

1. Algorithms to live by
Elle Meredith
@aemeredith

2. Algorithms
1
2
3a 3b
= Step by step
instructions

3. https://www.instagram.com/p/BaesTAPFaEK2_n5QA06hO7w3Nwd1iaoCS0KIL40/

4. Algorithm
Detailed

5. Algorithm
Detailed Efficiency
Perfection

6. https://imgur.com/Xz3Z2iL

7. In everyday life
• Learnt
• Figure out ourselves
• Require written instructions

8. A precise,
systematic
method for
producing a
specified result
Definition

9. Why?

10. Suppose we want to
search for a word in
the dictionary
Binary Search

11. 1 2 3 4 100

12. 1 2 3 4 100

X
Too low

13. 1 2 3 4 100

XX
Too low

14. 1 2 3 4 100

XXX
Too low

15. 1 2 3 4 100

XXXX
Too low

16. These are all too low
1
50 100
Too low

17. Eliminated 25 more
75
51 100
Too high

18. And we eliminated some more
51
63 74
Too low

19. 7 STEPS
100 50 25 13
7
4
2
1

20. 10 STEPS
1000 -> 500 -> 250
-> 125 -> 63 -> 32
-> 16 -> 8 -> 4
-> 2 -> 1

21. 17 STEPS
100,000 -> 50,000 -> 25,000
-> 12,500 -> 6,300 -> 3,150
-> 1,575 -> 788 -> 394
-> 197 -> 99 -> 50 -> 25
-> 13 -> 7 -> 4 -> 2 -> 1

22. 22 = 4
23 = 8
24 = 16
25 = 32
26 = 64

23. 22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
log2
4 = 2
log2
8 = 3
log2
100 => 6.643
log2
100000 => 16.609

24. * Binary search only
works when our list
is sorted

25. Searching for a new
place to live…
Optimal stopping

26. or finding a significant
other

27. The secretary problem

28. https://giphy.com/gifs/scooby-doo-wfOe7SdZ3XyHm

29. http://gph.is/15twRiZ

30. 37%

31. * When we don’t
know all the options,
optimal stopping
tells us when to stop
and make a decision

32. Digging at grandma’s
attic
Recursion

33. box
box
container box

34. Make a pile
of boxes
while the pile
is not empty
Grab
a box
if you find a box,
pile of boxes
Go back to
the pile
if you find
a diary,
you’re done!

35. Go through
each item in the box
if you find a box…
if you find a diary,
you’re done!

36. def factorial(x)
if x == 1
1
else
x * factorial(x-1)
end
end

37. def factorial(x)
if x == 1
1
else
x * factorial(x-1)
end
end

38. def factorial(x)
if x == 1
1
else
x * factorial(x-1)
end
end

39. factorial(4) = 4 * factorial(3)
factorial(3) = 3 * factorial(2)
factorial(2) = 2 * factorial(1)
factorial(1) = 1

40. factorial(4) = 4 * factorial(3)
factorial(3) = 3 * factorial(2)
factorial(2) = 2 * factorial(1)
factorial(1) = 1
4 * 3 * 2 * 1 = 24

41. * Recursion can be
applied whenever a
problem can be
solved by dividing it
into smaller
problems

42. * … and needs a
recursion case and a
base case

43. Sorting a book shelf
Sorting

44. Bubble sort
https://giphy.com/gifs/foxhomeent-book-books-3o7btW1Js39uJ23LAA

45. Insertion sort
https://giphy.com/gifs/atcqQ5PuX41J6

46. https://imgur.com/Xz3Z2iL
Merge sort

47. empty array
array with
one element
No need to sort
these arrays
33
Quicksort

48. check if first element
is small than
the second one,
and if it isn’t => switch
4 2

49. pivot
5 2 4 1
3
3

50. 3
2 1 5 4

51. 3
2 1 5 4
qsort( ) qsort( )

52. 3
2
1 5
4
+
+
3
2
1 5
4

53. * Should we be
sorting at all?

54. Getting things done
Single machine scheduling

55. There’s nothing
so fatiguing as
the eternal
hanging on of an
uncompleted
William James

56. Make goals explicit

57. Strategy: earliest due
date

58. https://giphy.com/gifs/nickelodeon-animation-nick-nicktoons-3o7TKTc8NHnZrVFlFm

59. Strategy: Moore’s
algorithm

60. http://gifsgallery.com/watermelon+animated+gif?image=323981005

61. Strategy: shortest
processing time

62. Client 1: 4 days task
= 5 days of work

63. Client 1: 4 days task = 4 days waiting
Client 2: 1 day task = 5 days waiting
= 9 days of waiting

64. Client 2: 1 day task = 1 days waiting
Client 1: 4 days task = 5 days waiting
= 6 days of waiting

65. Shortest processing time
Client 2: 1 day task = 1 days waiting
Client 1: 4 days task = 5 days waiting
= 6 days of waiting
Metric: sum of completion times

66. Suppose we want to
find a magician

67. Node Node
Edge

68. Elle
Hannah Caleb Lachlan
Keith
Schneem
Michelle

69. Elle
Hannah Caleb Lachlan
Keith
Schneem
Michelle

70. https://vimeo.com/90177460

71. Elle
Hannah Caleb Lachlan
Keith
Schneem
Michelle

72. Elle
Hannah Caleb Lachlan
Keith
Schneem
Michelle

73. graph = {
"elle"=>["hannah", "caleb", "lachlan"],
"hannah"=>["michelle", "schneem"],
"caleb"=>["schneem"],
"lachlan"=>["keith"],
"michelle"=>[],
"schneem"=>[],
"keith"=>[]
}

74. graph = {
"elle"=>["hannah", "caleb", "lachlan"],
"hannah"=>["michelle", "schneem"],
"caleb"=>["schneem"],
"lachlan"=>["keith"],
"michelle"=>[],
"schneem"=>[],
"keith"=>[]
}

works only we
search in the same
order in which the
people (nodes) were

76. Travelling salesperson

77. Melbourne
Geelong
Ballarat
Frankston
Kew
Eltham
Epping

78. Melbourne
Geelong
Ballarat
Frankston
Kew
Eltham
Epping

79. Melbourne
Geelong
Ballarat
Frankston
Kew
Eltham
Epping

80. * Just relax! by
relaxing the
constraints, we make
it easier to find
solutions

81. Building a
recommendation
system
K nearest neighbours

82. A (2,1)
B (1,3)
C (5,5)

83. A (2,1)
B (1,3)
X
Y
(X1
-X2
)2 + (Y1
-Y2
)2
Distance between A to B
C (5,5)

84. (1-3)2 + (2-
1)2
A (2,1)
C (5,5)
B (1,3)
X
Y
Distance between A to B

85. (1-3)2 + (2-
1)2
A (2,1)
C (5,5)
B (1,3)
X
Y
22 + 12
Distance between A to B

86. (1-3)2 + (2-
1)2
A (2,1)
C (5,5)
B (1,3)
X
Y
22 + 12
4 + 1
K = 2.236
Distance between A to B

87. (5-3)2 + (5-
1)2
A (2,1)
C (5,5)
B (1,3)
X
Y
Distance between C to B

88. A (2,1)
C (5,5)
B (1,3)
X
Y
22 + 42
Distance between C to B
(5-3)2 + (5-
1)2

89. A (2,1)
C (5,5)
B (1,3)
X
Y
22 + 42
Distance between C to B
(5-3)2 + (5-
1)2
4 + 16
K = 4.
472

90. Comedy
Action
Drama
Horror
Romance
4
4
5
1
1
5
5
3
2
1
2
1
5
3
5

91. hannah => (4, 4, 5, 1, 1)
caleb => (5, 5, 3, 2, 1)
lachlan => (2, 1, 5, 3, 5)

92. (4-5)2 + (4-5)2 + (5-3)2 + (1-2)2 + (1-
1)2
hannah => (4, 4, 5, 1, 1)
caleb => (5, 5, 3, 2, 1)

93. 1 + 1 + 4 + 1 + 0
7
K = 2.64

94. (4-2)2 + (4-
1)2 + (5-5)2 + (1-3)2 + (1-5)2
hannah => (4, 4, 5, 1, 1)
lachlan => (2, 1, 5, 3, 5)

95. 4 + 9 + 0 + 4 + 16
33
K = 5.74

96. * K-Nearest Neighbours
uses feature extraction,
which means converting
an item into a list of
numbers that can be
compared

97. Thinking less
Overfitting

98. https://www.zmescience.com/other/charles-darwin-marry-or-not/
It being proved necessary to marry

99. The case against
complexity

100. If you can’t
explain it simply,
you don’t
understand it
well enough.
Anonymous

101. Strategies
• Regularisation

102. Strategies
• Regularisation

103. Strategies
• Regularisation
• Early stopping

104. Strategies
• Regularisation
• Early stopping
• Stay clear from finer details

105. It is intolerable to
think of spending
one’s whole life
like a neuter bee,
working, working,
and nothing after
all.
Charles Darwin

106. When algorithms
go wrong
https://www.bloomberg.com/view/articles/2017-04-18/united-airlines-exposes-our-twisted-idea-of-dignity

107. https://en.wikipedia.org/wiki/United_Express_Flight_3411_incident

108. Every algorithm
reflects the
subjective
choices of its
human designer
Cathy O’Neil

109. Elle Meredith @aemeredith