[video output=day231 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Order Notation" vod_platform=youtube id=jo9rfWct1OI annotator=Miblo]
[1:03][Set the stage for the day]
[2:57][Blackboard: Order Notation]
[4:13][Blackboard: "unit"]
[5:50][Blackboard: Linear "scale", e.g. stamping envelopes]
[8:39][Blackboard: Nonlinear "scale", e.g. checking if any envelopes are addressed to the same person]
[14:02][Blackboard: Why we care about linearity]
[15:57][Blackboard: How this determines scalability]
[18:00][Blackboard: Why we don't care about the constant when considering an algorithm's scalability]
[21:22][Blackboard: How this translates into code]
[23:37][Blackboard: Big O notation indicates "worst-case running time"]
[26:49][Blackboard: "randomized algorithms"]
[28:34][Blackboard: P (polynomial) vs NP (nondeterministic polynomial)]
[35:50][Blackboard: On classifying problems as P or NP, e.g. "Boolean satisfiability problem"]
[40:45][Blackboard: "NP-completeness"][quote 345]
[45:12][Blackboard: *Gotcha! e.g. "Travelling Salesman Problem"]
[52:14][Blackboard: Sorting]
[53:39][handmade_render_group.cpp: Note that the current SortEntries function is O(n^2)]
[54:02][Blackboard: Why SortEntries is O(n^2)]
[55:17][Blackboard: On how to make sorting not be O(n^2)]
[56:35][Blackboard: Walk through our current (Bubble sort) algorithm]
[58:13][Blackboard: Walk through a "divide and conquer" (Merge sort) algorithm]
[1:04:30][Blackboard: Compare these two algorithms]
[1:07:08][Blackboard: Divide and conquer algorithms are O(n log n)]
[1:08:35][Blackboard: Solidify the concept of the merge sort algorithm and "dynamic programming"]
[1:14:28][Q&A][:speech]
[1:14:56][@quartertron][NP stands for Nondeterministic Polynomial. Plus some other minor problems. Otherwise, well done]
[1:16:39][@cubercaleb][For the record the remark I made earlier about Rust was not serious. Also, isn't mergesort n*log(n)?]
[1:17:08][@Longboolean][So unit testing a function that computes a path for the traveling salesman problem would require writing the algorithm twice, the second one testing the first?]
[1:18:04][@fiveshot97][Do you think a computer science major is a good path to go? I'm in it now]
[1:19:05][@insofaras][You say "exponential"]
[1:19:08][@Busy_Beaver][To say that a problem is not solvable in polynomial time, you just say "The problem is not in P"]
[1:21:12][@cmuratori][Has anyone definitively proven that Travelling Salesman could not be in P, or is that still potentially NP-hard?]
[1:22:44][@Busy_Beaver][TSP is NP-complete, so it is also in NP, so it DOES have a polynomial verifier]
[1:23:12][@cmuratori][Have they proven that it doesn't have a P verifier?]
[1:25:33][@Busy_Beaver][Well it depends which TSP problem we are actually talking about]
[1:26:44][@quiensab3][Wouldn't saying that something is "NINPY" imply that P != NP? (Did we win a $1M prize?)]
[1:27:05][Blackboard: "in P" / "not in P" vs "NP-complete"]
[1:30:42][@Longboolean][Idea: The game should include a traveling salesman, who ponders these things...]
[1:30:54][@cubercaleb][Will we go into more complex sort algorithms like radix sort? Also, is the space requirement of mergesort something that needs to be take into consideration for Handmade Hero?]
[1:31:45][@quartertron][Since you didn't go to college, when did you first get interested in or at least start learning all about big O?]
[1:33:25][@insofaras][I'm not sure we can prove something is not in P unless it is undecidable or we can prove P != NP]
[1:33:54][@Connor_Rentz][By the way, 8^2 doesn't equal 16]
[1:37:31][@quartertron][I shall dig through my copy of Computers and Intractability by Gary and Johnson tonight]
[1:37:41][@quartertron][Hmm, first sentence contains the word whimsical so it's looking good so far]
[1:38:09][Wrap up with a recap][:speech]
[/video]
