Ever calculated a huge Fibonacci sequence by hand?
Image: Sora / OpenAI, Public domain, via Wikimedia Commons
Ever calculated a huge Fibonacci sequence by hand?
Imagine you're trying to figure out the 10th number in the Fibonacci sequence, but you keep recalculating the 8th and 9th numbers every time.
You'd waste a lot of time repeating calculations instead of remembering past results.
Example
To find F(10), you'd repeatedly calculate F(8) and F(9), even though you've already done it for F(8) to get F(9).
Remember this
Dynamic programming remembers past results to avoid redundant calculations.
Text adapted from Wikipedia, licensed under CC BY-SA 4.0.
Kolmogorov complexity
Kolmogorov complexity is uncomputable
Matrix multiplication algorithm
Ever wondered how computers speed up multiplying huge numbers?
Halting problem
Alan Turing proved the halting problem is undecidable
Greedy vs dynamic programming: greedy makes locally optimal choices, DP considers all subproblems
Greedy: locally optimal choices; DP: considers all subproblems
the Y combinator does: enables recursion in languages without named functions
Y Combinator launched over 5,000 companies
Computational complexity of matrix multiplication
O(n³) naive matrix multiplication
Swipe through 100 ML concepts daily
Open Pocket Polymath