3.1 可判定集合 Decidable Sets
特征函数(Characteristic function, aka indicatorfunction):设AB ,则A关于B的特征函数FA: B → {0, 1} 定义如下: 对于任意b∈B
可判定的(decidable):A关于B是可判定的,当且仅当A的特征函数是可计算的。
判定过程(decision procedure):计算A的特征函数的有效过程
【注:A是可判定的当且仅当存在对A的判定过程。也就是从A的超集B中,我们能找到一种方法(即FA(b)的计算机制),判断出哪些是A的元素,这个方法可以帮助我们把A给“圈”出来】
从以上定义我们可以马上得出一个看似无用的结论,就是任何集都是相对于自身可判定的,这时A的特征函数就称为了常值函数(constant function),不管输入什么,一律输出1即可。
举栗时间:
1.当我们问奇数集{1, 3, 5, …}是否是可判定的时候,我们不考虑它是否关乎本身是可判定的,而是隐含着“当超集为所有整数集时”这样一个条件。对此问题,答案是肯定的,我们可以描述计算它的特征函数的过程:
当输入为任意整数n时,观察n的个位数,如果是1、3、7或9,输出1并终止。否则输出0并终止。
2. 素数集也是可判定的,同样,隐含条件是“当超集为所有整数集时”。判定过程如下:
输入为任意整数n,然后依次进行以下计算↓
2×1, 2×2, 2×3, 2×4, ……
在完成每次计算后,对比当前乘积result和n:
如果 result < n, 继续下一次的计算;
如果 result = 0, 输出0并终止;
如果 result > n, 重新从x×1开始计算,不过此时x自增1(如:首轮是2×1开始的话,下一轮就是3×1开始);
一直循环以上的步骤,如果x≥n/2,此时输出1并终止
【注:以上用的是sieve of Eratosthenes方法。该方法可以在n1/2次循环前,筛选出小于n的所有素数】
3.正整数集的所有有限子集都是可判定的(Allfinite subsets of Z+ are decidable)
方法很简单,就像查字典一样,我们一个个地对比正整数集和待验证子集的元素,如果匹配,则输出1,否则0。
4. 正整数集的有些无限子集是可判定的(Some infinite subsets of Z+are not decidable)
首先我们回忆一下,正整数的“所有子集“(all subsets of Z+)是不可数的,但是所有有限指令集却(all finite sets of instructions)是可数的。所以必然导致存在一些集合,即使用尽所有可能的指令,也无法成功给出其判定过程的描述,即这些集不与任何过程相应。
【注:所有的指令的有限集合,就是一段有限长度的字符串(string),且该字符串的字母表是可数的。如果字母表是可数的,参用这些字母而构造的字符串,也必然是可数的】
3.2 正测试与负测试;有效可枚举
Positive andnegative tests; effective enumerability
3.3 A是有效可枚举的当且仅当存在对A的正测试
A is effectively enumerableiff there is a positive test for A
3.4 A是可判定的当且晋档存在对A的正测试和负测试
A is decidable iff there arepositive and negative tests for A
3.5 字母表、单词以及语言 Alphabets, Words and Language
3.6 语言和逻辑I:命题逻辑 Propositional Logic
3.6.1 符号 Symbols
3.6.2 表达式 Expressions
3.6.3 合式公式 Well Formed Formulas
3.6.1 逻辑真理 Logical Truths
3.7 语言和逻辑II:谓词逻辑 Predicate Logic
3.7.1 符号 Symbols
3.7.2 表达式 Expressions
3.7.3 词语和合式公式 Terms and Well Formed Formulas
3.7.1 逻辑真理 Logical Truths
3.8 论证 Proofs
3.9 谓词逻辑的有效式集合是可枚举的
The set of validformulas of predicate logic is effectively enumerable
3.10 可判定性 Decidability