|
|
Thursday, September 30
We finished the discussion of chapter 2, mainly concentrating on what a mapping reduction is (a Turing machine that computes a function). Mapping reductions map input strings, x, for one Turing machine M to input strings, f(x), for another Turing machine M' in such a way that x is in L(M) iff x is in L(M'). Thus, M' can be used to decide M's language by way of this mapping. That is, a problem A can be solved by using a solution to problem B if we can find a mapping f of input strings, x, for A such that x is in A iff f(x) is in B. We discussed how this is different from the ad-hoc reductions were were looking at before, in which a Turing machine was constructed from various parts including modifications of existing Turing machines. In mapping reductions, the only thing modified is the input strings. We then looked at the homework problem that asked whether a non-regular language could be reduced to a regular language, and we found out that such a thing is possible. The mapping function can be quite complex, so it can itself decide a non-regular language and map to 0 or 1 if an input string is in the non-regular language or not. Clearly the set {0, 1} is regular. The trick is that the mapping function can be hard. In this context we are considering decidability. There can be no mapping of an undecidable problem to a decidable problem, because the mapping would have to decide whether the input string is in the language or not, and that is already known to be undecidable. So, no mapping function exists that can map input strings for an undecidable problem to 0 or 1, depending on whether the input strings are in the undecidable language or not. We also looked a bit of Chapter 6 and discussed the idea of self-replicating programs. Finally we started an overview of chapter 7 and intractability. |