This week we will talk about space complexity. We started at poly-time (P) to investigate time complexity. Linear time (O(n)) is the smallest granularity we looked at which lets us read the whole input (we may talk about sublinear time later). However, space seems more robust than time. An input of size n can be read (and processed) in logarithmic space. For example, a TM can simulate a RAM model with pointers of size O(log n). So the starting point of space complexity is logarithmic instead of linear. We try to research on some more delicate structures inside P. Definition 1 (Space complexity for languages: SPACE(·)) A language L ⊂ {0, 1} ∗ is in SPACE(S(n)) if there is a Turing machine M that accepts it. M has two tapes: • Input tape, len...