0

Trying to teach myself Computational Theory, and stumbled upon this question:

Suppose we have two sets:

  1. {T | T is a turing machine and L(T) contains at least 1001 string}
  2. {T | T is a turing machine and L(T) contains at most 1001 string}

One of them is recognizable and the other isn’t.

Which one is which and why?

Intuitively, I think that the one with “at least 1001 strings” is not recognizable because it doesn’t have an upper bound on the number of strings, and so the number may be infinite, but then again some infinite languages should be recognizable.

I am very confused about this question. What would be the proper intuition and the formal approach to show that one set is recognizable and the other one isn’t?

1 Answers1

2

For building an intuition about how to tell whether a language is recognizable, decidable, etc., I recommend checking out these notes I put together for a class on computability theory.

The key intuition I find most helpful is this idea of proving things - if you have a string that's in the language, is there some demonstration you could do that would prove to a skeptical but honest observer that you're right? So, for example, in the case of the first language, you could tell the observer "watch this - I'm going to run this TM on this group of 1001 strings, and I know that it'll accept each of them in at most k steps." The observer could then watch for k steps and see that it accepts all the strings, at which point they'd know for certain that you're right and that the TM's encoding is indeed in the language.

On the other hand, can you think of a demonstration that would prove that a TM accepts at most some number of strings? I can't, and that's because there's no general way to do this. That second language is therefore not recognizable. But proving that is another step - you'd need to either reduce some known non-RE language to it or use some sort of self-reference trick to prove that it's not recognizable. There's also a third way - you could prove that its complement is recognizable but not decidable, which would ensure the language itself isn't recognizable. That last option is probably the easiest here - can you show that the complement is recognizable using an argument like the one above, then show the language isn't decidable?

templatetypedef
  • 362,284
  • 104
  • 897
  • 1,065