Tuesday, July 25, 2017

Algorithms to Live By from Brian Christian and Tom Griffiths

Algorithms to Live By from Brian Christian and Tom Griffiths was an interesting book with the subtitle The Computer Science of Human Decisions.

Christian and Griffiths note in the introduction that human algorithm design is about "searching for better solutions to the challenges people encounter every day" and while they cover quite a bit of additional ground, below are the concepts from the book that resonated the most with me...

Optimal stopping - if someone looking to decide on something, whether it be a job, an apartment, or a spouse, the right amount of time (whether measured in actual time or in options looked at) is 37%. Once they've looked at 37% of the choices, or for that percentage of the time allocated to searching, the right course of action is to then choose the best option come across. This percentage is noted in the book as also applying in a different way... by taking this approach, someone has a 37% chance of making the best choice, and as they continue searching past this in time elapsed or options viewed, their odds of getting the best choice don't deviate much from 37%. Also interesting in this chapter was mention of looking for parking and how one expert notes that parking occupancy ideally should be at 85%, and when parking occupancy goes from 90% to 95%, it doubles the amount of search time for a spot.

Explore / exploit - when early in something, someone should explore alternatives, when settled in, they should exploit what they know they like.

Sorting / searching - in many cases it's easier to just search rather than spend the time on sort.

Caching - the thing most likely to be looked for is the last thing used, thus it's best to cache that recently used thing so it's easily and quickly accessible.

Constraint relaxation - if someone vexed by a difficult and complex problem, they should take away some of the complexity and solve the problem they wish existed, then they've got something to work with and could add back in complexity.

Computational kindness - people prefer receiving a constrained problem, it's better to make a suggestion than to simply say to someone that whatever they want to do is fine.

Algorithms to Live By was a weighty read at times and I found some sections to grab my attention much more than others, but it definitely had some interesting concepts to it for someone willing to spend the time.