黄文睿
221180115 计算机拔尖班
e.g. 使用 $\lbrace 0, 1, \#\rbrace$ 表达带权图?使用 $\lbrace 0, 1\rbrace$ 表达带权图?
字符集 $\Sigma$ 的编码能力只和其元素个数 $|\Sigma|$ 有关,和其种类无关(因为存在双射)。
(e.g. $\lbrace 0, 1\rbrace$ 和 $\lbrace a, b\rbrace$)
所有基数大于等于 $2$(有限)的字符集 $\Sigma=\lbrace x_0, x_1, \cdots, x_{|\Sigma|}\rbrace$ 的编码能力相同(编码长度仅差距多项式倍),都和 $\Sigma_{bool}$ 等价。
($0/1$ 上的唯一编码) 给定 $\Sigma=\lbrace x_0, x_1, \cdots, x_{|\Sigma|-1}\rbrace$,需要输出一个转化函数 $f: \Sigma\to \Sigma_{bool}^*$。约束为:根据 $f$ 可以确定性地构造函数 $g_f:\Sigma^*\to \Sigma_{bool}^*$ 为,若 $w=c_1c_2\cdots c_{|w|}, c_i\in \Sigma$,则 $g_f(w)=f(c_1)f(c_2)\cdots f(c_{|w|})$,要求 $g_f$ 是单射,且 $|g_f(w)|$ 是 $|w|$ 的 poly-bounded 倍。
e.g. $\lbrace 0, 1, \#\rbrace$ 上的字符串 $11\#01$ 代表了一个有向无权图。定义 $f(0)=00$,$f(1)=01$,$f(\#)=10$,原字符串改写为 $0101100001$,两位一读,不会发生误读。
从上例可知,一种最简单的编码:对于大小为 $n=|\Sigma|$ 的字符集 $\Sigma$,对每个 $x_i\in\Sigma$ 固定使用长度为 $\lceil \lg n\rceil$ 的 $\Sigma_{bool}$ 词 $w_i$ 表示(前补零),且 $Number(w_i)=i$。
更本质地,什么样的 $f$ 是合法的?
思考题:若已知 $w\in \Sigma^*$,如何输出合适的 $f$,使得 $g_f(w)$ 尽量短?
由于字符集 $\Sigma$ 的选取对问题的本质无影响(但编码内容有影响),故以下问题只给出最易于表达的 $\Sigma$。
有向无环图的判定问题:给定图 $G$,判断其中是否不存在有向环。
形式化地,有向无环图的判定问题是 Decision Problem $(\text{isDAG}, \lbrace 0, 1, \# \rbrace)$,其中
$$ \text{isDAG} = \lbrace w\in \lbrace 0, 1, \#\rbrace^* | \text{$w$ 表示一个有向图且无环}\rbrace $$
$$ w_{G}=a_{11}a_{12}\cdots a_{1n}\#a_{21}a_{22}\cdots a_{2n}\#\cdots\# a_{n1}a_{n2}\cdots a_{nn} $$
停机问题:给定程序 $P$ 和输入集合 $S$,判断 $P$ 是否可以在以任意 $s\in S$ 作为输入的前提下在有限时间内结束。
如果把 $P$ 使用的字符集记为 $\Sigma_P$,即 $P\in \Sigma_P^*$,把 $P$ 的输入使用的字符集记为 $\Sigma_{in}$,即 $S\subseteq \Sigma_{in}^*$,且定义 $\perp$ 是在 $\Sigma_P\cup \Sigma_{in}$ 中未出现的一种字符。则
形式化地,停机问题是 Decision Problem $(\text{Halt}, \Sigma)$,其中
$$ \Sigma = \Sigma_{P}\cup\Sigma_{in}\cup\lbrace \perp\rbrace $$
$$ \small\text{Halt}=\lbrace w\in\Sigma^*| \text{$w$ 表示程序 $P$ 和 $S$,且满足对任意 $s\in S$ 作为输入 $P$ 可停机}\rbrace $$
$w$ 的编码方式可以为
$$ w=P\perp s_1\perp s_2\perp \cdots \perp s_{|S|}\perp\perp $$
其中 $P\in \Sigma_P^*$ 编码程序 $P$,$s_i\in \Sigma_{in}^*$ 编码 $P$ 的输入 $s_i$.
排序问题:输入 $n$ 和序列 $\langle a_1, a_2, \cdots, a_n\rangle$,输出序列的一个重排 $\langle b_1, b_2, \cdots, b_n\rangle$ 且 $b_1\le b_2\le \cdots \le b_n$。
形式化地,排序问题定义为:
(最小化唯一编码问题) 输入 $\Sigma=\lbrace x_0, x_1, \cdots, x_{|\Sigma|-1}\rbrace$ 和 $w\in \Sigma^*$,需要输出一个转化函数 $f: \Sigma\to \Sigma_{bool}^*$。约束为:根据 $f$ 可以确定性地构造函数 $g_f:\Sigma^*\to \Sigma_{bool}^*$ 为,若 $w'=c_1c_2\cdots c_{|w|}, c_i\in \Sigma$,则 $g_f(w')=f(c_1)f(c_2)\cdots f(c_{|w'|})$,要求 $g_f$ 是单射,且 $|g_f(w')|$ 是 $|w'|$ 的 poly-bounded 倍。最小化 $|g_f(w)|$.
形式化地,最小化唯一编码问题定义为: