缺少的是对字符串运行Turing Machine 以获得枚举器的方式。而不是生成每个字符串,而是运行M,然后在M接受时输出此字符串(如您所确定的那样将不起作用),您可以执行以下操作,它采用了在不同字符串上模拟M的许多实例的策略。平行”。中号中号中号中号
假定带具有内容
,其中瓦特我正在考虑一些单词和š 我是的当前状态中号
操作上瓦特我。这表示正在模拟M的n个副本。w ^ 我被保存,所以我们知道原来的输入了。⟨ w ^1个,S1个⟩ #⋯ #⟨ w ^ñ,Sñ⟩w一世小号一世中号w一世ñ中号w一世
现在运行以下循环
- 在结束时,磁带写入从下一个字符串,与初始配置沿小号的中号,即,写入#⟨ 瓦特,小号⟩。w ^ ∈ Σ∗小号中号#⟨ W¯¯ ,小号⟩
- 模拟磁带上每个副本一个步骤。(大概使用其他胶带。)中号
- 如果任何进入接受状态,请将相应的字符串放在输出磁带上。从磁带中删除此M实例。中号中号
- 如果任何进入拒绝状态,请从磁带中删除该M实例。中号中号
- 转到步骤1。
这不是很难说所有的字符串所接受中号最终将在磁带上输出。w ^ ∈ Σ∗中号