Question text is in black, solutions in blue.
Q1: 10 points Q2: 10 points Q3: 10 points Q4: 10 points Q5: 10 points Q6: 30 points Q7: 40 points Total: 120 points
Given this definition, there exists a bizarro Turing machine B whose language L(B) = {w ∈ Σ*: B halts in its accepting state on input w} is not TR.
FALSE. You can simulate a bizarro TM (BTM) with an ordinary TM. Store the
tape contents of the BTM as a string, for example,
aiajak can be stored as
aibajbak or
$(i in binary)$(j in binary)$(k in binary)$. Implement each step of the BTM
by locating the head, calculating the next move, overwriting the string
corresponding to the BTM character to be changed, and shifting the part of the
ordinary TM's tape to the right as much as necessary to fit the string for the
new BTM character. The computation of the correct move given the BTM's state
and character seen can be done on another tape and is guaranteed to halt by
the assumption. So any finite number of BTM steps can be simulated by the
ordinary TM in finite time. The simulator must convert the BTM's input into the
new format before starting -- this can clearly be done by an ordinary TM.
So w is in L(B) if and only if B halts on input w, if and only if the
simulator halts on input w. Thus L(B) is the language of the simulator and
must be a TR language.
TRUE. Let S1 be {a11, a12, a13,...}, S2 be {a11, a21, a22, a23,...}, S3 be {a11, a21, a31, a32, a33,...}, and in general Si = {a11,..., a(i-1)1, ai1, ai2, ai3,...}. Then if i < j, the intersection Si ∩ Sj is just {a11,..., ai1} which is clearly nonempty and finite.
TRUE. There are two cases. If M accepts w, there is exactly one accepting computation history, and any one-element language is regular. If M does not accept w, there are no accepting computation histories, and the empty language is regular. It is undecidable which regular language we have, but either way we have a regular language.
TRUE. This came up in Section 6.4 of Sipser. There are 2n binary strings of length n, but only 1 + 2 + ... + 2n-1 = 2n - 1 binary strings of length strictly less than n. By the Pigeonhole Principle, we cannot map a larger finite set one-to-one to a smaller set. If the range of the function does not consist entire of strings shorter than n, there must be an element of the range with length n or greater.
TRUE. We know that ELBA = {<M>: M is an LBA and L(M) =
∅} is not TD. We show that ELBA ≤m
ALLLBA.
Given an LBA M, we want an LBA f(M) such that L(f(M)) = Σ*
- L(M). This will mean that <M> is in ELBA if and only if
<f(M)> is in ALLLBA, and thus that f is the desired reduction.
Let Q be the state set of M and let q be the size of Q. Let Γ be the
tape alphabet of M and let k be the size of Γ. On input w of size n,
f(M) will simulate M for at least qnkn steps or until it halts. If
it runs for that many steps without halting, it is in a loop because that is the
number of possible configurations of M -- there are q different states, n
different head positions, and kn different possible contents of the
tape. So we have f(M) accept if the simulated M rejects or runs for that long,
and have f(M) reject if the simulated M accepts.
We are left with the technical problem of implementing f(M) as an LBA, which
means keeping a "clock" on the same portion of the tape that contains the
computation of M. We do this by expanding the tape alphabet of f(M) to
2(k2 + k) characters, so each square of f(M)'s tape contains an
element of Γ, an element of {0, 1,..., k}, and a bit to mark where the
head of one computation is while the other computation is going on. We use the
elements of {0,..., k} to count up to (k+1)n in base k+1. We assume
that n is large enough so that (k+1)n ≥ qnkn,
otherwise we implement f(M) with a big lookup table. So f(M) alternates
between implementing a step of M and incrementing the counter.
We first outline the steps of the computation and then give some detail for
each:
We keep the variable i on tape 4 and the variable j on tape 5. On tape 6
we can keep the successive position numbers to be tested for size i. Now for
some details:
If you complete all the checks in steps 1-5 without rejecting, then accept.
while (d*d < n) d++;
, using two
markers on tape 3 to count off d2 steps while moving right on tape
2 once each step. If you exactly count off the n b's on tape 2, go on to step
3. If you go past the b's, reject, if you come short, increase d by 1 and start
over.
YES, Z is TR. Define a machine N which will, on input <M1, M2>, in parallel for all strings w, run both M1 and M2 on w. (This is by dovetailing, for example, for each positive integer m it can run the machines for m steps each on the first m strings in Σ*.) If for any w, both machines halt and M1 takes fewer steps, accept. Now Z is L(N), so Z is TR.
NO, Z is not TD. This follows from the reduction ATM ≤m Z in part (c). You could also mapping-reduce or Turing-reduce any undecidable language to Z.
YES, this mapping exists. Given a pair <M, w>, let f(M,w) be a pair
of machines <M1, M2>, where:
If M accepts w, both machines halt and M1 halts first, so f(M, w)
is in Z. If M does not accept w, then neither machine halts so f(M, w) is not
in Z. So f is a mapping reduction from ATM to Z.
NO, this mapping does not exist. We know from (a) that Z is TR, but we know that ATM-bar is not TR. The TR languages are closed downward under ≤m, so there cannot be a mapping reduction from a non-TR language to a TR language.
Last modified 15 April 2009