Professional Documents
Culture Documents
计 算 机 // 科
华0教育
t%
CENGAGE
Learning
原书第3版
—
段 磊 府 常 杰 屯寺 译谇~
叫 川 人¥
Introduction •
•
to the
Theory of
Computation
3rd edition
少 奢 •
觀 :
机 械 工 业 出 版 社
China Machine Press
@ ©
原书第3版
Introduction •
to the
Theory of
Computation
3 rd edition n遵
-'
N ir •
' 入
© 机械工业出版社
China Machine Press
图书在版编目( CIP ) 数据
-
ISBN 978 - 7 - 111 49971 - 8
I. 计… II . ① 西… ② 段… III . 计算技术 理论 IV . TP 301
-
中国版本图书馆 CIP 数据核字( 2015 ) 第 077899 号
本书是计算理论领域的经典著作,以注重思路、深入引导为特色 ,系统地介绍计算理论的三大主要内
容 :自动机与语言、可计算性理论和计算复杂性理论。同时,重点讲解了可计算性和计算复杂性理论中的
某些髙级内容。全书通过启发性的问题、精彩的结果和待解决问题来引导读者挑战此领域中的髙层次问题。
新版的一大亮点是用一节的篇幅对确定型上下文无关语言进行了直观而不失严谨的介绍。
本书叙述由浅入深、详略得当,重点突出,不拘泥于技术细节,可作为髙等院校计算机专业髙年级本
科生和研究生的教材,也可作为相关专业教师和研究人员的参考书。
凡购本书 , 如有缺页 、倒 页 、脱 页 ,由 本 社 发 行 部 调 换
客 服 热 线:
( 010 ) 88378991 88361066 ( 010 ) 88379604
投 稿 热 线:
购书热线 : ( 010 ) 68326294 88379649 68995259 .
读者信箱 : hzjsj@ hzbook com
版权所有 • 侵权必究
封底无防伪标均为盗版
本书法律顾问:北 京 大 成 律 师 事 务 所 韩 光 / 邹晓东
I 出版者的话
Introduction to the Theory of Computation , 3e
-
McGraw Hill , Elsevier , MIT , John Wiley & Sons , Cengage 等世界著名出版公司建立了良
好的合作关系 ,从他们现有的数百种教材中甄选出 Andrew S .Tanenbaum ,Bjarne Stroustrup ,
Brain W. Kernighan , Dennis Ritchie , Jim Gray , Afred V. Aho , John E. Hopcroft , Jeffrey
D. Ullman , Abraham Silberschatz , William Stallings , Donald E. Knuth , John L. Hennessy ,
Larry L. Peterson 等大师名家的一批经典作品,以 “计算机科学丛书” 为总称出版 ,供读者
学习 、研究及珍藏。大理石纹理的封面 ,也正体现了这套丛书的品位和格调。
“计算机科学丛书 ” 的出版工作得到了国内外学者的鼎力相助 ,国内的专家不仅提供了
中肯的选题指导,还不辞劳苦地担任了翻译和审校的工作 ;而原书的作者也相当关注其作品
在中国的传播 ,有的还专门为其书的中译本作序。迄今,“计算机科学丛书” 已经出版了近
计 算 机 改 变 并 持 续 改 变 着 世 界 ,如 今 ,计 算 技 术 已 把 人 们 带 进 了 云 (云 计 算)、 物 ( 物
联 网)、人 (社 会 计 算)、海 (海 量 数 据 、大 数 据) 的 新 时 代 。
在 变 革 的 时 代 里 ,计 算 机 系 统 也 改 变 着 自 己 ,在 进 步 和 进 化 中 遵 循 了 一 组 潜 规 则—
计 算 理 论 ,这 套 理 论 描 述 和 论 证 了 计 算 机 的 能 与 不 能 ,界 定 了 计 算 能 力 的 极 限 。
业 内 人 士 常 评 说 某 人 为 某 问 题 设 计 了 一 个 比 较 快 的 算 法 ,好 到 什 么 程 度? 用 专 业 术 语
描 述 ,线 性 时 间 内 能 完 成 的 比 较 快 ,多 项 式 时 间 能 完 成 的 次 之 ,不 能 在 多 项 式 时 间 内 完 成
的 就 是 不 现 实 的 。但 是 ,大 数 据 时 代 的 来 临 修 正 了 这 一 观 念 ,对 于 大 数 据 问 题 ,线 性 时 间
也 嫌 太 长 ,因 为 需 要 “等 它 一 千 年”,人 们 呼 唤 亚 线 性 、 亚 亚 线 性 的 算 法 。
有 些 问 题 ,人 们 已 经 找 到 快 的 算 法 ;有 些 问 题 ,还 没 有 找 到 快 的 算 法 ,也 许 是 等 一 个
聪 明 程 序 员 的 出 现 。但 有 一 类 问 题 ,没 有 找 到 好 算 法 不 是 因 为 人 们 不 够 聪 明 ,而 是 根 本 就
不存在这样的算法。
计 算 理 论 将 描 述 算 法 的 本 质 ,揭 示 计 算 机 算 法 的 能 与 不 能 、 快 与 慢 以 及 足 够 快 的 近 似
技 巧 。从 这 个 角 度 来 看 ,计 算 理 论 是 计 算 机 的 灵 魂 ,是 应 用 计 算 机 成 功 解 决 实 际 问 题 的
保 障。
这 本 由 麻 省 理 工 学 院 名 师 Michael Sipser 编 撰 的 名 著 是 计 算 理 论 领 域 的 优 秀 书 籍 之 一 ,
对 于 非 纯 理 论 专 业 的 人 士 ,也 许 是 深 浅 程 度 最 合 适 的 。 自 1 9 9 6 年 第 1 版 问 世 ,该 书 历 经
近 二 十 年 ,获 得 了 学 术 界 的 公 认 和 教 育 界 的 好 评 。该 书 具 有 如 下 优 点 :
第 一 ,内 容 丰 富 ,编 排 合 理 ,展 现 了 计 算 机 科 学 研 究 的 广 度 和 深 度 。该 书 以 理 论 计 算
机 科 学 的 知 识 框 架 为 脉 络 ,系 统 地 讲 述 了 自 动 机 与 形 式 语 言 、 可 计 算 性 理 论 和 计 算 复 杂 性
理 论 等 计 算 理 论 的 重 要 内 容 。总 体 编 排 上 ,难 度 由 浅 入 深 、循 序 渐 进 ,易 于 学 习 。
第 二 ,文 字 清 晰 ,语 言 生 动 。作 者 以 引 导 、 举 例 为 叙 述 手 段 ,对 计 算 理 论 领 域 的 重 要
定 理 、 性 质 等 不 仅 给 出 证 明 ,而 且 讲 述 证 明 思 路 ,着 力 让 读 者 在 学 习 理 论 的 同 时 掌 握 证 明
的 技 巧 ,彰 显 了 作 者 在 此 领 域 的 深 厚 造 诣 和 娴 熟 的 教 学 手 法 。
第 三 ,各 章 设 有 练 习 和 问 题 ,并 提 供 了 部 分 习 题 的 解 答 。通 过 作 答 习 题 ,能 够 锻 炼 读
者 的 逻 辑 推 导 思 维 ,加 深 读 者 对 关 键 知 识 点 的 理 解 。
我 以 切 身 体 会 向 计 算 机 专 业 的 高 年 级 本 科 生 、 硕 士 生 和 博 士 生 推 荐 此 书 。我 在 本 科 阶
段 第 一 次 接 触 了 该 书 的 第 1 版 。 差 不 多 1 0 年 前 ,在 刚 开 始 博 士 阶 段 学 习 时 ,参 与 了 本 书
第 2 版 的 翻 译 工 作 。如 今 ,我 又 引 导 我 的 学 生 学 习 这 本 书 ,并 承 担 了 第 3 版 的 翻 译 工 作 。
作 为 多 重 身 份 的 “过 来 人”,我 有 独 特 的 体 会 。一 方 面 ,该 书 写 作 规 范 ,研 究 生 可 以 学 习
到 规 范 的 定 义 、 性 质 、 证 明 的 表 述 方 式 ,学 习 该 书 内 容 有 助 于 提 升 计 算 理 论 素 养 ,增 强 学
习 能 力 ;另 一 方 面 ,研 究 生 多 苦 于 论 文 理 论 深 度 不 够 ,也 不 知 如 何 分 析 问 题 ,认 真 领 会 该
书 讲 述 的 证 明 思 路 和 解 题 思 路 ,常 会 让 我 们 有 豁 然 开 朗 之 感 ,问 题 分 析 能 力 随 之 增 强 ,进
而 提 高 研 究 论 文 的 水 平。
相 较 于 本 书 第 2 版 ,第 3 版 的 内 容 更 新 主 要 在 于 增 加 了 关 于 确 定 型 上 下 文 无 关 语 言 的
V
段 磊
2015 年 6 月 于 四 川 大 学
第 3 版 前 言|
Introduction to the Theory of Computation , 3 e
本 版 新 增 了 关 于 确 定 型 上 下 文 无 关 语 言 的 一 节 。我 选 择 这 个 主 题 有 以 下 几 个 原 因 。首
先 ,它 填 补 了 我 之 前 对 自 动 机 理 论 和 语 言 处 理 之 间 的 明 显 空 白 。以 前 的 版 本 介 绍 了 有 穷 自
动 机 以 及 图 灵 机 在 确 定 型 和 非 确 定 型 上 的 变 形 ,但 却 只 包 含 了 下 推 自 动 机 的 非 确 定 型 变
形 。因 此 ,增 加 关 于 确 定 型 下 推 自 动 机 的 讨 论 正 如 同 找 到 完 成 拼 图 游 戏 所 缺 的 那 块 。
其 次 ,确 定 型 上 下 文 无 关 文 法 理 论 是 LR (々) 文 法 的 基 础 ,同 时 也 是 自 动 机 理 论 在 编
程 语 言 和 编 译 器 设 计 上 重 要 且 非 平 凡 应 用 的 基 础 。这 个 应 用 将 一 些 关 键 概 念 ,包 括 确 定 型
和 非 确 定 型 有 穷 自 动 机 的 等 价 性 、 上 下 文 无 关 文 法 和 下 推 自 动 机 之 间 的 相 互 转 换 ,汇 聚 一
起 得 到 一 个 高 效 且 漂 亮 的 语 法 分 析 方 法 。这 里 我 们 实 现 了 理 论 和 实 践 的 相 互 联 系 。
最 后 ,虽 然 该 主 题 作 为 自 动 机 理 论 一 个 真 实 的 应 用 非 常 重 要 ,但 它 在 现 有 理 论 教
科 书 中 却 没 有 得 到 足 够 重 视 。 我 研 究 LRU ) 文 法 多 年 但 一 直 没 有 完 整 理 解 它 们 如 何
工 作 ,也 没 有 看 到 它 们 与 确 定 型 上 下 文 无 关 语 言 理 论 的 完 美 契 合 。 我 写 作 这 一 节 旨 在
为 理 论 学 者 和 实 践 者 提 供 关 于 这 个 领 域 直 观 而 不 失 严 谨 的 介 绍 ,并 由 此 对 该 领 域 做 出
贡 献 。需 要 注 意 的 是 :这 一 节 的 部 分 内 容 非 常 具 有 挑 战 性 ,因 此 基 础 理 论 课 程 的 教 师
可 考 虑 将 其 作 为 补 充 读 物 。之 后 的 章 节 不 依 赖 于 这 部 分 内 容 。
在 撰 写 本 版 的 过 程 中 ,很 多 人 给 了 我 直 接 或 间 接 的 帮 助 。 我 很 感 激 两 位 审 阅 者
Christos Kapoutsis 和 Cem Say 。 他 们 阅 读 了 这 一 版 新 内 容 的 初 稿 ,并 提 供 了 很 有 价 值
的 反 馈 意 见 。 在 Cengage Learning 的 一 些 人 协 助 了 本 书 的 出 版 工 作 ,特 别 是 Alyssa
Pratt 和 Jennifer Feltri-George。 Suzanne Huizenga 编 辑 了 文 字 ,ByteGraphics 的 Laura
Segel 绘 制 了 新 的 图 片 并 修 改 了 以 前 版 本 中 的 图 片 。
感 谢 我 在 MIT 的 助 教 : Victor Chen , Andy Drucker ,Michael Forbes , Elena Grigor -
escu , Brendan Juba , Christos Kapoutsis , Jon Kelner ,Swastik Kopparty,Kevin Matulef ,
Amanda Redlich , Zack Remscrim ,Ben Rossman , Shubhangi Saraf , Oren Weimann 0 他们
都 给 予 了 我 帮 助 ,包 括 :讨 论 新 的 问 题 并 给 出 解 决 方 法 ,提 出 如 何 让 学 生 理 解 课 程 内 容 的
见 解 。我 非 常 享 受 与 这 群 有 天 赋 、 有 热 情 的 年 轻 人 一 起 工 作 。
我 很 高 兴 收 到 了 来 自 世 界 各 地 的 邮 件 ,非 常 感 谢 你 们 的 建 议 、 问 题 和 思 路。这 里 有 一
个 相 关 人 员 列 表 ,他 们 的 意 见 对 这 个 版 本 产 生 了 影 响 :
Djihed Afifi ,Steve Aldrich , Eirik Bakke ,Suzanne Balik ,Victor Bandur , Paul Beame ,
Elazar Birnbaum ,Goutam Biswas ,Rob Bittner , Marina Blanton , Rodney Bliss , Promita
Chakraborty , Lewis Collier , Jonathan Deber , Simon Dexter , Matt Diephouse , Peter
Dillinger , Peter Drake , Zhidian Du , Peter Fejer , Margaret Fleck , Atsushi Fujioka , Vale-
rio Genovese , Evangelos Georgiadis , Joshua Grochow , Jerry Grossman , Andreas
Guelzow , Hjalmtyr Hafsteinsson , Arthur Hall III ,Cihat Imamoglu ,Chinawat Israd -
isaikul , Kayla Jacobs , Flemming Jensen , Barbara Kaiser , Matthew Kane , Christos
Kapoutsis , Ali Durlov Khan , Edwin Sze Lun Khoo ,Yongwook Kim , Akash Kumar , Elea -
1
zar Leal , Zsolt Lengvarszky , Cheng-Chung Li , Xiangdong Liang , Vladimir Lifschitz , Ry-
an Lortie ,Jonathan Low , Nancy Lynch , Alexis Maciel ,Kevin Matulef , Nelson Max ,
Hans- Rudolf Metz , Mladen Miksa , Sara Miner More , Rajagopal Nagarajan , Marvin Na-
kayama , Jonas Nyrup ,Gregory Roberts , Ryan Romero ,Santhosh Samarthyam , Cem Say ,
Joel Seiferas , John Sieg , Marc Smith , John Steinberger ,Nuri Ta§demir , Tamir Tassa ,
Mark Testa , Jesse Tjang , John Trammell , Hiroki Ueda , Jeroen Vaelen , Kurt L. Van
Etten , Guillermo Vazquez , Phanisekhar Botlaguduru Venkata , Benjamin Bing- Yi Wang ,
Lutz Warnke , David Warren , Thomas Watson , Joseph Wilson , David Wittenberg , Brian
Wongchaowart , Kishan Yerubandi , Dai Yi 0
Michael Sipser
马 萨 诸 塞 州 ,剑 桥
2012 年 4 月
第 2 版前言 |
Introduction to the Theory of Computation , 3 e
Samir Chopra ,Benny Chor ,John Clausen , Allison Coates ,Anne Condon ,Jeffrey Con-
sidine , John J . Crashell , Claude Crepeau ,Shaun Cutts,Susheel M. Daswani , Geoff Da-
vis , Scott Dexter , Peter Drake , Jeff Edmonds , Yaakov Eisenberg , Kurtcebe Eroglu ,
Georg Essl ,Alexander T. Fader ,Farzan Fallah ,Faith Fich ,Joseph E. Fitzgerald , Perry
Fizzano ,David Ford ,Jeannie Fromer , Kevin Fu , Atsushi Fujioka , Michel Galley ,
K. Ganesan , Simson Garfinkel , Travis Gebhardt , Peymann Gohari , Ganesh Go-
palakrishnan ,Steven Greenberg ,Larry Griffith , Jerry Grossman ,Rudolf de Haan ,Mi -
chael Halper , Nick Harvey , Mack Hendricks , Laurie Hiyakumoto , Steve Hockema ,
Michael Hoehle ,Shahadat Hossain , Dave Isecke ,Ghaith Issa ,Raj D. Iyer , Christian
Jacobi , Thomas Janzen , Mike D. Jones, Max Kanovitch , Aaron Kaufman , Roger
Khazan ,Sarfraz Khurshid , Kevin Killourhy , Seungjoo Kim , Victor Kuncak , Kanata
Kuroda ,Suk Y. Lee , Edward D. Legenski ,Li-Wei Lehman ,Kong Lei , Zsolt Leng-
varszky , Jeffrey Levetin , Baekjun Lim , Karen Livescu ,Thomas Lasko ,Stephen Louie ,
TzerHung Low , Wolfgang Maass , Arash Madani , Michael Manapat , Wojciech
Marchewka , David M. Martin Jr. , Anders Martinson , Lyle McGeoch , Alberto Medina ,
Kurt Mehlhorn , Nihar Mehta , Albert R. Meyer , Thomas Minka ,Mariya Minkova , Dai-
chi Mizuguchi , G. Allen Morris 冚 , Damon Mosk- Aoyama , Xiaolong Mou , Paul Muir ,
German Muller , Donald Nelson , Gabriel Nivasch ,Mary Obelnicki , Kazuo Ohta , Thom -
as M. Oleson , Jr. ,Curtis Oliver , Owen Ozier , Rene Peralta , Alexander Perlis ,Holger
Petersen , Detlef Plump , Robert Prince ,David Pritchard ,Bina Reed , Nicholas Riley ,
Ronald Rivest , Robert Robinson , Christi Rockwell , Phil Rogaway , Max Rozenoer ,
iferas , Joao Carlos Setubal ,Geoff Lee Seyon , Mark Skandera ,Bob Sloan , Geoff Smith ,
Marc L. Smith , Stephen Smith , Alex C. Snoeren , Guy St-Denis , Larry Stockmeyer ,
Radu Stoleru ,David Stucki ,Hisham M. Sueyllam , Kenneth Tam , Elizabeth Thompson ,
Michel Toulouse , Eric Tria ,Chittaranjan Tripathy , Dan Trubow ,Hiroki Ueda , Giora
Unger , Kurt L. Van Etten ,Jesir Vargas , Bienvenido Velez- Rivera , Kobus Vos , Alex
Vrenios ,Sven Waibel , Marc Waldman , Tom Whaley , Anthony Widjaja , Sean Wil-
liams , Joseph N. Wilson , Chris Van Wyk , Guangming Xing , Vee Voon Yee ,Cheng
Yongxi , Neal Young , Timothy Yuen , Kyle Yung , Jinghua Zhang , Lilia Zollei 。
当我夜以继日地坐在我的电脑屏幕前时 ,尤其要感谢我的家人 Ina 、 Rachel 和 Aaron
的耐心 、 理解和爱 。
Michael Sipser
马 萨 诸 塞 州 ,剑 桥
2004 年 12 月
第 1 版前言
Introduction to the Theory of Computation , 3 e
写给学生
欢迎使用本书!
将要幵始学习的是重要而又引人人胜的课题 :计算理论 。它包括计算机硬件 、软件以
及某些应用的基本数学特性 。这一课程试图回答什么是不能计算的 ,什么是能计算的 ,可
以算多快 ,要用多少存储 ,以及采用什么计算模型等 。这些问题与工程实践有着紧密的联
系 ,也具有纯理论的一面 。
许多同学主动盼望学习这门课程 ,有些同学可能只是为了完成计算机科学或者计算机
工程的学位必需的理论课程学分 他们也许认为理论比较神秘 、 难学且用处不大 。
通过学习 ,读者会发现理论既不神秘 、 也不讨厌 ,是好理解 、 甚至是有趣的 。理论计
算机科学有许多迷人而重要的思想 ,同时它也有许多细小的 、 有时甚至是乏味的细节 ,这
些细节可能令人感到厌倦 。 学习任何一门新的课程都是一件艰苦的工作。但是 ,如果能把
它适当地表述出来 ,学习就会变得容易和更愉快些 。本书的一个基本目标是让读者接触到
计算理论中真正令人激动的方面 ,而不陷人单调乏味之中 。 当然 ,对理论感兴趣的唯一途
径是努力去学习并掌握它 。
理论与实践是密切联系的 ,计算理论为实际工作者提供了在计算机工程中使用的理性
工具 。要为具体的应用设计一个新的程序设计语言吗? 本课程中关于语法的内容迟早是会
有用的 。要进行字符串搜索和模式匹配吗? 不要忘了有穷自动机和正则表达式 。 遇到了一
个看来需要比你能够提供的计算机时间还要多的问题吗? 想一想你学过的有关 NP 完 全 性
的内容 。 各种应用领域 ,如现代密码协议 ,都依赖于在这里将要学习的理论原则 。
理论是有意义的 ,它向读者展示了计算机新的 、 简单的 、 更加优美的一面 ,而通常我
们把计算机看作一台复杂的机器 。最好的计算机设计和应用出自完美的构思 。一门理论课
程可以提高审美意识 ,帮助读者建立更加优秀的系统 。
理论是实践的指南 ,学习理论能够扩展你的思维 。计算机技术更新很快 ,专门的技术
知识虽然今天有用 ,但是仅仅在几年内就会变成过时的东西。 而能力具有持久的价值 ,课
程应该注重培养思考能力 、 清楚准确的表达能力 、 解决问题的能力以及知道问题什么时候
还没有解决的能力 ,理论能够训练这些能力 。
除了实际的考虑 ,几乎每一位使用计算机的人都想了解这个神奇的创造 ,它的能力 ,
以及它的局限性 。 为了解答某些基本问题 ,在过去的 30 年里 ,一个全新的数学分支已经
确立 。这里还有一个重大问题没有解决 :如果给定大的自然数 ,例如有 500 位 ,能够在合
理的时间内把它分解成素数的乘积吗? 即使使用一台超级计算机 ,现今还没人知道怎样才
能在宇宙毁灭之前做完这件事 ! 因子分解问题与现代密码系统中的某些密码有关 。去寻找
一个快速的因子分解方法吧 ,也许 ,读者会因此而一举成名!
XI
写给教师
本书是计算机学科高年级本科生或研究生的计算理论入门教材 。它涉及计算理论的数
学论述 ,包括叙述和证明定理的基本技能 。作者努力使本书适用于那些缺乏定理证明的基
本训练的学生 ,当然 ,有较多这种经验的学生会学习得更轻松 。
强调清楚和生动是本书叙述的一个特色 ,本课程对某些低层次的细节强调了直觉和
“大的轮廓”。例如 ,虽然在第 0 章介绍了证明的归纳法以及其他的数学预备知识 ,但在后
面部分它并不是重点 。 关于自动机的各种构造方法的正确性 ,一般不用归纳证明 。 只要叙
述清楚 ,这些构造方法已经是令人信服的 ,不需进一步论证 。 归纳证明反而可能把学生搞
糊涂而不是给人以启迪 。归纳法是比较复杂的技术 ,可能还有些神秘 。对十分明显的事情
用归纳法作反复的说明可能会化简为繁 、 违反初衷 ,使学生认为数学证明是一种形式化手
法 ,而不是教给他们懂得什么是有说服力的证据 ,什么不是有说服力的证据 。
本书第二部分和第三部分没有采用伪码描述算法 ,而用了自然语言描述 。书中没有花
很多时间去设计图灵机 ( 或任何其他形式模型 ) 的程序 。现在的学生都有程序设计的经
-
历 ,觉得丘奇 图灵论题是不言自明的 。因此我不去用很长的篇幅叙述用一个模型模拟另
一个模型来说明它们的等价性 。
除增加直观性和压缩某些细节外 ,本书内容组织符合计算理论中的典型标准 。理论工
作者将发现 ,素材的选取 、 术语以及内容的前后顺序都与其他广泛使用的教材一致 。只在
少数地方 ,当我发现标准的术语十分模糊或会引起混淆时 ,才引进了新的术语 。例如 ,引
进 名 词 映 射 可 归 约 性 代 替 多 一 可 归 约 性。
习题是学习与数学相关的科学必不可少的环节 。书中的习题分成两大类 ,练习用来复
习定义和概念 。问题需要多动些脑筋 。带星号的问题更难一些。本书努力使练习和问题令
人感兴趣 ,并有挑战性 。
反馈给作者
致谢
Michael Sipser
马 萨 诸 塞 州 ,剑 桥
1996 年 10 月
目 录I
Introduction to the Theory of Computation , 3 e
0.4.1 构造性证明
2.2.1 下推自动机的形式化定义 • 69
13
2.2.2 下推自动机举例 70
0.4.2 反证法 14
2.2.3 与上下文无关文法的等价性
.
0 4.3 归纳法 15
••• 72
2.3 非上下文无关语言 77
练习 16
2.4 确定型上下文无关语言 79
问题 17
2.4.1 DCFL 的性质 82
习题选解 18
2.4.2 确定型上下文无关文法 …• 83
第一部分自动机与语言 2.4.3 DPDA 和 DCFG 的 关 系 91
2.4 . 4 语 法 分 析 和 LRa ) 文 法 94
第1章正则语言 20
练习 96
1.1 有穷自动机 20
问题 98
1.1.1 有穷自动机的形式化定义 22 习题选解 100
1.1 2 . 有穷自动机举例 23
第二部分可计算性理论
1.1 . 3 计算的形式化定义 25
1.1 4 . 设计有穷自动机 25 第 3章 丘 奇 图灵论题 - 104
1.1 . 5 正则运算 27 3.1 图灵机 104
3.1.1 图灵机的形式化定义 105 6.1.3 应用 158
3.1.2 图灵机的例子 107 6.2 逻辑理论的可判定性 159
3.2 图灵机的变形 110 6.2.1 一个可判定的理论 …• 161
3.2.1
3.2 . 2
多带图灵机
非确定型图灵机 …•
111
112
6.2.2
6.3 图灵可归约性
— 个不可判定的理论 • 163
164
.
3.2 3 枚举器 113 6.4 信息的定义 165
3 . 2.4 与其他模型的等价性 114 6.4.1 极小长度的描述 166
3.3 算法的定义 114 6.4.2 定义的优化 168
.
3.3 1 希尔伯特问题 115 6.4.3 不可压缩的串和随机性 168
3.3.2 描述图灵机的术语 • 116 练习 170
练习 118 问题 170
问题 119 习题选解 171
习题选解 120
第 4章 可 判 定 性 122 第三部分复杂性理论
4.1 可判定语言 122
第 7章 时 间 复 杂 性 174
4.1.1 与正则语言相关的可判定性
7.1 度量复杂性 174
问题 122
7.1.1 大 O 和小 o 记法 … 174
4.1.2 与上下文无关语言相关的
7.1 . 2 分析算法 176
可判定性问题 124
4.2 不可判定性 126 7.1 . 3 模型间的复杂性关系 178
绪 论
本章先概述了本书中讲述的计算理论涉及的范围 ,然后学习或者复习一些后面需要用
到的数学知识。
0. 1 自 动 机 、可 计 算 性 与 复 杂 性
本书重点在计算理论的三个传统的核心领域 :自动机 、 可计算性和复杂性 。是什么将
这三个领域联系在一起的呢? 这就是 :
计 算 机 的 基 本 能 力 和 局 限 性 是 什 么?
要回答这个问题应追溯到 20 世纪 30 年代 ,当时的数理逻辑学家们首先开始探究什么是计
算 。自那时起 ,计算机技术的发展显著地增强了人们的计算能力 ,并且把这个问题从理论
王国带到人们关心的现实世界 。
对这三个领域 ( 自动机 、 可计算性和复杂性) 中的任一个领域 ,人们都会对这个问题
做出不同的解释 ,并且对不同的解释会有各不相同的答案 。 在本章之后 ,本书就这三个领
域中的每个领域分别独立介绍 。 在此 ,我们以相反的顺序 (复杂性 、 可计算性 、 自动机 )
介绍这些领域 ,因为这样能够帮助大家更好地理解本书的内容 。
0. 1 . 1 计算复杂性理论
现实中 ,计算的问题是多种多样的 ,有的容易 ,有的困难 。例如 ,排序是一个容易的
问题 ,按升序排列一张数字表 ,即使一台小型计算机也能迅速处理 100 万个数 。相对于时
间表问题而言 ,比如要制定某所大学的课程表 ,课程表必须满足某些合理的限制 (比如不
能有两个班在同一时间使用同一教室 )。 时间表问题似乎比排序问题复杂得多。 如果有
1000 个班需要排课 ,即使我们使用一台超级计算机 ,也可能需要花若干世纪的时间才能
制定出一份最好的课程表 。
那 么 是 什 么 使 得 某 些 问 题 很 难 计 算 ,而 又 使 另 一 些 问 题 容 易 计 算 呢?
这就是复杂性理论的核心问题 。 值得注意的是 ,尽管在过去的 40 多年里对该问题进行了
深入细致的研究 ,但是我们至今仍然没有它的答案 。接下来 ,我们将探究这个迷人的问题
以及它的一些分支领域 。
到目前为止 ,科研工作者发现了一个根据计算难度给问题分类的完美体系 ,这是复杂性
理论的一个重要成果。它类似于按照化学性质给元素分类的周期表。按照该体系 ,即使我们
还不能证明问题是难计算的 ,但也能够提岀一种给出某些问题是难计算的证据的方法。
当面对一个似乎很难计算的问题时 ,往往会有若干选择 。首先 ,通过弄清问题困难的
根源 ,我们可能会做某些改动 ,使问题变得容易解决 。其次 ,我们可能会转而去求问题的
一个并不完美的解 。在某些情况下 ,寻找问题的近似最优解会相对容易一些 。再者 ,有些
问题仅仅在最坏的情况下是困难的 ,而在绝大多数情况下是容易的 。就应用而言 ,一个偶
尔运行得很慢而通常运行得很快的程序是能够令人满意的 。 最后也可以选择其他计算类
2 第0 章 諸 论
型 ,如能够加速某些计算任务的随机计算 。
受到复杂性理论直接影响的一个应用领域是密码技术 ,这是一个古老的研究领域 。 在
绝大多数领域中 ,选择容易计算的问题比选择难计算的问题更可取 ,因为求解容易问题的
代价更小。密码技术与众不同 ,它特别需要难计算的问题 ,而不是容易计算的问题 。因为
在不知密钥或口令时 ,密码应该是很难破解的 。复杂性理论给密码研究人员指出了寻找难
计算问题的方向 ,围绕这些问题他们已经设计出新的创造性的编码 。
0. 1 . 2 可计算性理论
在 20 世纪前半叶 ,像哥德尔 ( KurtG del )、 图灵 ( Alan Turing ) 及 丘 奇 ( Alonzo
^
Church ) 这样的数学家们 ,发现一些基本问题是不能用计算机解决的 。确定一个数学命题
是真或是假就是这样一个例子。这项任务是数学家们的工作 ,因为它属于数学王国的范
畴 ,所以用计算机来解决似乎很自然 。但是 ,没有计算机算法能够完成这项任务 。
关于计算机理论模型思想的发展就是这一具有深远意义的研究成果之一 ,它最终会帮
助人们制造出实用的计算机 。
可计算性理论与复杂性理论是密切相关的。在复杂性理论中 ,目标是把问题分成容易
计算的和难计算的 ;而在可计算性理论中 ,是把问题分成可解的和不可解的 。可计算性理
论引入了一些在复杂性理论中使用过的概念。
0 . 1 .3 自动机理论
自动机理论阐述了计算的数学模型的定义和性质。这些模型在计算机科学的若干应用
领域中起着作用。一个模型是有穷自动机模型 ,它用在文本处理 、 编译程序以及硬件设计
中 ;另一个模型是上下文无关文法模型 ,它用在程序设计语言和人工智能中 。
自动机理论是学习计算理论的非常好的起点 。可计算性理论和复杂性理论需要对计算
机给岀一个准确的定义 。自动机理论让我们在介绍与计算机科学的其他非理论领域有关的
概念时可以使用计算的形式化定义 。
0.2 数学概念和术语
与任何数学科目一样 ,开始时 ,我们先讨论一下预计要用到的基本的数学对象 、 工具
和概念 。
0 . 2. 1 集合
集合 (set ) 是一组对象 ,把它看成一个整体 。集合可以包含任何类型的对象 ,包括
数 、 符号甚至其他集合 。集合中的对象称为它的元素 ( element ) 或 成 员 ( member )。 集
合可以用几种方式形式化地描述 。一种方式是在大括号内列出它的元素 。例如 ,集合
{ 7 ,21 ,57 }
包含元素 7 , 21 和 57 。符号 和 6 分别表示集合成员和非集合成员 。如 ,76 ( 7 ,21 ,57 } ,
e
8 $ < 7 ,21 ,57 } 对于 A 和 B 这两个集合 ,如果 A 的每个成员也是 B 的成员 ,则称 A 为 B
0
{ 7 , 21 , 57 } 表 示 同 一 个 集 合 。 如 果 确 实 要 考 虑 元 素 出 现 的 次 数 ,则 把 它 称 作 多 重 集 合
( multiset ) . 例如 , { 7 } 和 { 7 , 7 } 作为多重集合是不相同的两个集合 ,而作为集合是同
一个集合 。 无穷集合 ( infinite s e t ) 是包含无穷多个元素的集合 。不可能列岀无穷集合的
_
所有元素 ,所以有时用记号 “…” 表示 “ 集合的元素序列将永远继续下去”。 因 此 ,我们
把自然数集 ( s e t of natural numbers ) N 写为
.
2 ,3 广 }
{ 1,
把整数集 ( set of integers ) Z 写为
{• •,一 2,
一 1,
0,1,
2, }
不含任何元素的集合称作空集 ( empty set ) , 记为 0。通 常 ,若集合由唯一一个元素组成 ,
则把它称作单元素集合 ( singleton set );若集合恰好只包含两个不同元素 ,则 被 称 作 二 元
集 合 ( unordered pair ) 0
-
类似地 , 在图 0 2 中的圆圈表示以字母 “ z” 结尾的英文单词组成的集合 。
以z结尾
terrific quartz
tundra
theory razzmatazz
图0 1 - 以 “ t” 开 头 的 英 文 单 词 集 合 的 文 氏 图 图 0 2 - 以 “ z” 结尾的英文单词集合的文氏图
如果在同一个文氏图中表示两个以上的集合 ,为了表明它们具有某些共同的元素 ,应
该把它们画成部分重叠在一起 ,如图 0 3 所 示 。例如 ,单 词 topaz 就是在两个集合中 。图
中还有一个圆圈表示 “以 j 开 头” 的 集 合 ,由于没有任何一个单词同时在这两个集合中 ,
-
所以它和表示 “以 t 开头” 的圆圈不重叠 。
图 0 - 4 中的两个文氏图描述了集合 A 和 B 的并集和交集 。
以t开头 以Z 开头 以j开头
( a) A U B (b)
^ n^
图 0- 3 圆的重叠部分表明有共同元素 图 0- 4 表示并集和交集的文氏图
4 第0 章 绪 论
0 . 2. 2 序列和多元组
序 列 ( sequence ) 是 某 些 元 素 或 成 员 按 某 种 顺 序 排 成 的 一 个 列 表 。通 常 把 它 写 在 一 对
圆 括 号 内 指 明 它 为 一 个 序 列 。例 如 ,序 列 7 ,2 1 ,
57 可写为
( 7 ,2 1 ,5 7 )
在 集 合 中 可 不 考 虑 元 素 的 顺 序 ,但 在 序 列 中 要 考 虑 元 素 的 顺 序 。 因 此 ,(7 ,2 1 ,
57) 和
_
( 5 7 ,7 ,2 1 ) 是 两 个 不 同 的 序 列 。类 似 地 ,在 集 合 中 元 素 是 否 重 复 无 关 紧 要 ,而 在 序 列 中 元
素 是 否 重 复 却 很 重 要 。例 如 序 列 ( 7 ,7 ,2 1 ,
5 7 ) 与 前 两 个 序 列 都 不 相 同 ,而 集 合 { 7 ,2 1 ,
5 7 } 与 { 7 ,7 ,2 1 ,57 } 是 相 同 的 集 合 。
与 集 合 一 样 ,序 列 也 可 以 是 有 穷 序 列 或 者 无 穷 序 列 。 通 常 把 有 穷 序 列 称 为 多 元 组
( tuple ) 々 个 元 素 的 序 列 称 为 々 元 组 (htuple )。例 如 ,
0 (7 ,2 1 ,
5 7 ) 为 一 个 3 元 组 。2 元 组
也 称 为 有 序 对 ( ordered pair )。
集 合 与 序 列 可 以 作 为 其 他 集 合 或 序 列 的 元 素 。 例 如 ,A 的 幂 集 ( p o w e r s e t ) 为 A 的
所 有 子 集 的 集 合 。设 A 为 集 合 { 0 ,1 } , 则 A 的 幂 集 为 集 合 { 0 ,{ 0 } ,< 1 } ,{ 0 ,1 } > 0 元素为
0 和 1 的 所 有 有 序 对 组 成 的 集 合 为 {( 0 ,0 ),
(0 ,
1),
(1 ,
0 ),
(1,
1 )}。
设 A 和 B 为 两 个 集 合 ,A 和 B 的 笛 卡 儿 积 (Cartesian product ) 或 叉 积 ( cross product )
为 这 样 一 个 集 合 ,它 是 第 一 个 元 素 为 A 的 元 素 、 第 二 个 元 素 为 B 的 元 素 的 所 有 有 序 对 组
成 的 集 合 ,记 作 AXB。
设 焱 ={ 1 , : 2:
2 } 和 B ={ x ,y ,},则
x) ,
AXB= { (l, :
(l , (l ,
y), z) , :r ) ,
(2 , ( 2 , 30 ,
(2 ,
z) }
还可以有 A 个集合 A Az ,
…,A* 的 笛 卡 儿 积 ,记 为 A i X A 2 X … X A 。它 是 由 所 有 々
元 组 (a 1
dEB
? CL 2
^
… ,Q ) 组 成 的 集 合 ,其 中 A G A;。
设 A 和 B 两 个 集 合 与 例 0 . 1 中 的 A 、 B 相 同 ,则
A X B X A ={( 1山1 ), (1山2 ), (1 ,3,1 ),
/ (1 , ,
3;2 ),
( 1,2:,1 ) , 2:
(1 , , 2), (2 ,
X, 1),
(2 ,:C ,2),
(2, :y ,l ) , :y ,2 ) ,
(2 , (2 ,z,l),(2 ,z, 2)}
集 合 自 身 的 笛 卡 儿 积 可 采 用 如 下 缩 写 形 式:
久
AX AX …X A =
dEH 集 合 N2 等 于 N X N 。它 是 由 所 有 自 然 数 的 有 序 对 组 成 的 集 合 ,也 可 以 写 为
I
^
{ 分1 } 0 ■
0 . 2. 3 函数和关系
对 数 学 而 言 ,函 数 是 核 心 。函 数 ( function ) 是 一 个 建 立 输 人 输 岀 关 系 的 对 象 。 它 得 -
到 一 个 输 人 ,产 生 一 个 输 出 。对 于 每 一 个 函 数 ,同 样 的 输 入 总 会 产 生 同 样 的 输 出 。设 / 是
一 个 函 数 ,当 输 入 值 为 a 时 它 的 输 岀 值 为 6 , 则 记 为
f( a ) = b
函 数 又 称 为 映 射 ( mapping ),并 且 ,若 f ( a )= b ,则 称 / 把 a 映 射 为 6 。
例 如 ,对 绝 对 值 函 数 取 一 个 数:r 作 为 它 的 输 人 ,当 :
c 大于等于 0 时该函数返回
第0 章 绪 论 5
—
0
—
的 加 法 函 数 ,如 果 定 义 域 为 整 数 有 序 对 集 合 ZXZ ,而 值 域 为 Z ,则 可 以 写 为 ZX
Z Z。注意 : 函数不必取得指定值域的所有元素 。虽然一1 6 Z ,但是函数 ah 绝 不 会 取 到
值一 1。如果函数取得值域的所有元素 ,则称它映上 ( onto ) 到这个值域 。
通常可以用几种方法描述一个具体的函数 。其 中 一 种 方 法 是 采 用 从 指 定 的 输 入 到 输 出
—
的计算过程 。而另一种方法是用一张表列出所有可能的输人和对应的输岀 。
考 虑 函 数 /:{ 0 ,
1,2 ,3 ,4 } { 0 ,
1,2 ,3 ,4 }。
0 12 3 4
f i n) 1 2 3 4 0
该函数为把它的输入加 1 ,然 后 输 出 再 执 行 模 5 后 的 计 算 结 果 。 通 常 ,对 于 一 个 数 的 模
m 的 结 果 就 等 于 该 数 除 以 m 后 所 得 到 的 余 数 。 例如 ,钟 表 表 盘 上 的 分 针 按 模 60 计 数 。
—
当作模运算时 ,记 为 ZW = { 0 ,
1,2 ,… , 1 }。 用 这 个 记 号 ,前 面 提 到 的 函 数 / 可 以 写
为 /:Z5 Z5 。
—
如 果 函 数 的 定 义 域 为 两 个 集 合 的 笛 卡 儿 积 ,这 时 需 要 使 用 2 维 表 格 来 描
^
述 。 在这里有另一个函数 Z4 XZ4 Z4 。它 表 示 标 号 为 f 的 行 和 标 号 为 )的 列 的 内 容 是
的值 。
9 0 2 3
0 0 2 3
2 3 0
2 2 3 0
3 3 0 2
函 数 9 为模 4 的加法函数 。
当函数 / 的定义域为 A i X A 2 X ,
X A 时 ,/ 的 输 入 是 々 元 组 (f l l ,
心,…, Q ),称 A
在 一 个 叫 作 剪 刀 一 布 一 石 头 的 儿 童 游 戏 中 ,两 个 人 同 时 选 择 集 合 < 剪刀,
布 ,石头 > 中的任一个元素 ,并且用手势表示岀来 。如 果 两 个 人 的 选 择 是 相 同 的 ,则游戏
重来 。如果选择不相同 ,则按照下述打败关系 ,确定一个人获胜 。
打败 剪刀 布 石头
剪刀 FALSE TRUE FALSE
布 FALSE FALSE TRUE
石头 TRUE FALSE FALSE
^
定 义 一 个 自 然 数 集 上 的 等 价 关 系 三 7 。对 于 纟, 如 果〖一 是 7 的 倍 数,
则 说 这 是 一 个 等 价 关 系 ,因 为 它 满 足 上 述 的 3 个 条 件 。 首 先 ,它 是 自 反 的 ,因 为 f
一)=0 — f 是 7 的倍数 ,则 〖 一)也 是 7 的倍数 。
是 7 的 倍 数 。其次 ,它 是 对 称 的 ,因为若 j
再者 ,它是传递的 ,因 为 只 要 f 一)是 7 的倍数且 j —々 是 7 的倍数 ,那 么 f 一々= G — j )+
(j ~ k ) 是 两 个 7 的倍数之和 ,从 而 也 是 7 的 倍 数 。
0. 2 . 4 图
^
4
的 。这 些 点 称 为 结 点 ( node ) 或 顶 点 ( vertex ),
线段称为边 (edge ),如图 0 5 所 示 。 - 5 2
顶点的度 (degree ) 是 以 这 个 顶 点 为 端 点 的 边
⑻
-
的数目 。在 图 0 5 ( a ) 中所有顶点的度都为 2 。在
-
图 0 5 ( b ) 中所有顶点的度都为 3。任何两个顶点 图 0- 5 图的例子
第0 章 諸 论 7
波士顿 旧金山
378
⑷ (b) ⑹
图0 8 - ( a ) 图中的一条路径 ,
(b ) 图中的一个圈 ,(c) 一棵树
8 第0 章 绪 论
剪刀 布
石头
图 0- 1 0 表示打败关系的有向图
0 . 2. 5 字符串和语言
字符串是计算机科学的重要基础之一 。 根据应用的要求 ,可以在各种各样的字母表上
定义这样的字符串。按照要求 ,定 义 字 母 表 ( alphabet ) 为任意一个非空有穷集合 。 字母
表的成员为该字母表的符号 (symbol )。通常用大写希腊字母 2 和 r 表示字母表和字母表
中符号的打印字体 。下面是几个字母表的例子 。
2i = { 0 ,l }
{ ci,
b,c,
d,e, 装,
f, p, v u,:
j ,
^
2 j k L
j q,r,
s,t,
u,v, y,
z}
r= { 0 , 1 9 X j y 9 z }
字母表上的字符串 ( string over analphabet ) 为该字母表中符号的有穷序列 ,通常写
^
为一个符号挨着一个符号 ,不用逗号隔开 。设 = { 0,
^
1 } ,则 01001 为 上的一个字符
串。设 22 = U ,
6,C,…, 幻则 abracadabra 为 :S2 上的一个字符串 。 设 w 为 2 上的一个字符
串 ,W 的长度 ( length ) 等于它所包含的符号数 ,记作|W I 。 长度为零的字符串叫作空
串 ( empty string ) , 记为 e 。空串起的作用就像 0 在数系中的作用一样 。 如果 w 的长度为
n ,则可以写为 W = W \ XV 2 ' '' VUn , 这里每一个叫 62。w 的 反 转 ( reverse ) 是按照相反的顺
序写 w 所 得 到 的 字 符 串 ,记 作 即 VUnUJn - l 。如果字符串 z 连续地岀现在 w
中 ,则称 2 为加的子串 (substring )。例如 ,cad 为 abracadabra 的子串 。
设 x 是长度为 m 的字符串 ,y 是长度为 的字符串 ,: r 和 j 的 连 接 ( concatenation )
”
是把 J 附加在 x 的后面得到的字符串 ,记为 13/ ,即
法表示一个字符串自身连接多次 ,例如 P 表示
ocmy\ --- yn 。可米用上标表
第0 章 緒 论 9
0 . 2. 6 布尔逻辑
布尔逻辑 ( Boolean logic ) 是 建 立 在 TRUE 和 FALSE 两个值上的代数系统 。这个系
统最初是作为纯数学构想提出来的 ,现在被公认为是数字电子学和计算机设计的基础 。值
TRUE 和值 FALSE 被称为布尔值 ( Boolean value ),并且经常用值 1 和值 0 表示 。 在有两
种可能的时候使用布尔值 ,例如一条电路可能处于高电位或低电位 ,一个命题可能是真或
假 ,对一个问题的回答可能为是或否 。
可以用布尔运算 ( Boolean operation ) 处理布尔值。最简单的布尔运算为非 ( negation )
或 NOT 运算 ,用符号 “ 1 ” 表示 。一个布尔值的非为与它相反的值 ,即1 0 =1, , 1 = 0。合
取 (conjunction ) 或 AND 运算的符号为 “ A ”。仅当两个布尔值都为 1 时 ,它们的合取为
1 。析取 ( disjunction ) 或 OR 运算的符号为 “ V ”。 当两个布尔值中有一个为 1 时 ,它们
的析取为 1。下面综合列出上述运算的定义 :
0 A 0=0 0 V 0=0 0 =1
0 A 1 =0 0 V 1=1 -• 1 = 0
1 A 0=0 1 V 0=1
1 八 1=1 1V l=l
使用布尔运算可以把简单的命题组合成更复杂的布尔表达式 ,就像使用算术运算 + 和
X 构造复杂的算术表达式一样 。例如 ,设 P 是表示命题 “现在天气晴朗” 的真假值的布尔
值 ,Q 是表示命题 “今天是星期一” 的真假值的布尔值 ,那么可以用 PAQ 表示命题 “现
在天气晴朗并且今天是星期一” 的真假值 。 对于 PVQ,与此类似 ,只需把 “并且 ” 换成
“或者”。值 P 和 Q 称为该运算的运算对象 ( operand ) 0
—
的符号是 “0”,当它的两个运算对象取值相同时其值为 1。最后 ,蕴涵 ( implication ) 运
——
算的符号是 “ ”,并且当它的第一个运算对象为 1 、 第二个运算对象为 0 时其值为 0; 否
则为 1 。下面综合列出这些定义 :
0 0=0 0o 0 = 1 0 0 =1
一
—
0 1=1 0 1=0 0 1= 1
1㊉0 = 1 1 ㈠ 0=0 1 0=0
1 1=0 1 1= 1
可以给出这些运算之间的各种关系 。 实际上 ,能用 AND 与 NOT 运算来表示所有的
10 第0 章 绪 论
— —- —
布尔运算 ,如下面的式子所示 。每一行的两个表达式是等价的 。 每一行用它上面的运算及
AND 、 NOT 表示左边一列的运算 。
PVQ 十 PA Q)
P
P^ Q
Q - P VQ
( P^Q ) A (Q F)
有关 AND 与 OR
P Q
的分配律 ( distributive
-(
1
P Q)
law ) 在处理布尔表达式时会有用 。它很像有
关加法与乘法的分配律 + aX ( 6 C )= UX 6) + UXc)。布尔分配律有以下两种形式 :
• PA ( Q V i? 等于(
) P A Q ) V ( P A i? )
• P V ( Q A i? ) 等于(P V Q ) A ( P V /? )
0 . 2. 7 数学名词汇总
字母表 符号对象的有穷集合 。
自变量 函数的输人 。
二元关系 定义域为有序对集合的关系 。
布尔运算 布尔值的运算 。
布尔值 值 TRUE 或值 FALSE ,常 用 1 或 0 表 示 。
笛卡儿积 对多个集合的运算 ,用分别来自这些集合的元素的所有多元组构成一
个集合 。
补 对一个集合的运算 ,用不在这个集合中的所有元素构成一个集合 。
连接 把多个字符串连接在一起的运算 。
合取 布尔运算 AND。
连通图 每一对顶点都有路径相连的图 。
围 起止在同一个顶点的路径 。
有向图 顶点和连接某些顶点的箭头构成的集合 。
析取 布尔运算 OR。
定义域 函数所有可能的输人构成的集合 。
边 图中的一条线段 。
兀素 集合中的一个对象 。
空集 没有任何元素的集合 。
空串 长度为零的字符串。
等价关系 自反 、 对称和传递的二元关系 。
函数 把输人转变成输出的运算 。
图 顶点和连接某些顶点的线段构成的集合 。
交 对多个集合的运算 ,用这几个集合的共同元素构成一个集合 。
k 元组 一列々个对象 。
语言 字符串的集合 。
成员 集合中的一个对象 。
结点 图中的一个点。
有序对 一对有序的元素 。
第0 章 绪 论 11
路径 图中用边连接起来的顶点序列 。
谓词 以 { TRUE , FALSE } 为值域的函数 。
性质 一个谓词 。
值域 一个集合 ,函数的输出都取自这个集合 。
关系 一个谓词 ,最典型地 ,其定义域为々元组集合 。
序列 排列成一列的对象 。
集合 一'组对象 。
简单路径 顶点不重复的路径 。
单元素集合 只有一个成员的集合。
字符串 取自一个字母表的一列有穷个符号 。
符号 字母表的一个成员 。
树 不含简单圈的连通图 。
并 对多个集合的运算 ,把这几个集合中的所有元素合并成一个集合 。
二元集合 含有两个成员的集合 。
顶点 图中的一个点 。
0.3 定 义 、定 理 和 证 明
定理和证明是数学的精髓 ,而定义是数学的灵魂 。这三部分是包括本科目在内的每个
数学科目的核心 。
定义 ( definition ) 描述了我们使用的对象和概念 。定义可能是简单的 ,如本章已给出
的集合的定义 ;也可能是复杂的 ,如密码系统中对安全的定义 。任何数学定义都必须是精
确的 。当定义一个对象时 ,必须弄清楚什么构成这个对象 、 什么不构成这个对象 。
在定义各种对象和概念之后 ,通常要给出关于它们的数学命题 ( mathematical state -
ment )。典型情况下 ,一个命题描述某个对象具有某种性质。命题可能为真 ,也可能为假 ,
但和定义一样必须是精确的 。它的含义不能有任何模棱两可的地方 。
证明 ( proof ) 是一种逻辑论证 ,它使人们确信一个命题为真 。 在数学中 ,一个论证
必须无懈可击的 ,也就是说 ,论证要使人绝对信服 。它和我们在日常生活中或在法律上使
用的证据这一概念有很大的区别 。 在谋杀案审判中要求存在 “ 没有任何合理疑点” 的证
据。重要的证据可能迫使陪审团接受疑犯无罪或有罪的辩护 。但是 ,这种证据在数学证明
中不起作用。数学家需要没有任何疑点的证明 。
定理 ( theorem ) 是被证明为真的数学命题。通常只对特别感兴趣的命题使用这个词 。
有时 ,有兴趣证明某些命题只是因为它们有助于证明另一个更有意义的命题 ,这样的命题
称为引理 ( lemma )。有时 ,一个定理或其证明可以使我们容易得出另外一些有关的命题
为真的结论 ,这些命题称为这个定理的推论 (corollary )。
寻找证明
给出数学证明是确定一个数学命题为真或假的唯一方法 。可是 ,找到数学证明并不总
是容易的事情 。不可能把它简化为一组简单的规则或过程 。 在本书中 ,我们要求给出各种
命题的证明 。请不要气馁! 因为虽然没有任何人有制造证明的诀窍 ,但是我们可以利用一
些有用的普遍性策略 。
12 第0 章 绪 论
顶点度数之和 顶点度数之和
=2+2+2=6 = 2+3+4+3+2= 14
-
图 0 11 两个例子 图 0- 1 2 每 次 增 加 一 条 边 ,和 增 加 2
现在 ,你能开始看出命题为什么为真和怎样证明它了吧? ■
为了找到一个合适的证明 ,研究人员有时要工作数周甚至数年 。
• 回头做 。 看一遍要证明的命题 ,考虑一会儿 ,然后放下它 ,过一小段时间之后再
回到这个问题上来 。让你内心的潜意识和直觉有机会起作用。
• 条例清晰 。 当对要证明的命题进行直觉分析时 ,请使用简单明了的图形或文字描
述 ,也可以两者同时使用。当你正在深入研究这个命题时 ,杂乱无章会妨碍深入
研究 。此外 ,把一个结果写给别人看 ,清晰的表述有助于别人理解 。
• 表达简洁 。简洁有助于表达高层次的思想而不丧失细节 。 好的数学表示法有利于
简明地表达思想 。但是 ,在写证明的时候必须充分地写岀你的推理 ,让读者能够
容易理解所证明的东西 。
为了说明具体的做法 ,让我们以证明德 摩根律之一为例 。
对 于 任 意 两 个 集 合 A 和 B ,A U B = A A B。
首先 ,要搞清楚这个定理的意思 。如果不知道符号 u 、 n 或上横线的意思 ,请复习前
面 (0.2.1 节 ) 的内容 。
为了证明这个定理 ,必须证明两个集合 A U B与 相 等 。前 面 讲 过 ,可 以 通 过 证 明
一个集合的每一个元素也是另一个集合的元素和反之亦真来证明两个集合是相等的 。在看
下面的证明之前 ,请先考虑几个例子 ,自己试试去证明它 。
证 明 这 个 定 理 称 两 个 集 合 A U B与 Z H B相等 。通常证明如下 ,通过说明一个集合的
每一个元素也是另一个集合的元素并且反之亦真来证明这个断言。
假设:r 是A U B的一个元素 ,那么 ,由集合的补集的定义可知 ,:
r 不在集合 A U B 中 。
故由两个集合的并集的定义可知 ,:
r 不在集合 A 中且:r 不在集合 B 中 。亦即 ,:
r 在集合 A
中且:r 在集合 S 中 。因此 ,根据两个集合的交集的定义 ,:
r 在集合 A H S 中 。
反之亦然 ,假设:r 在集合 A 中 ,那么 ,:
r 既在集合 A 中 、 又在集合 S 中 。 因此 ,
: B 中 ,亦即不在这两个集合的并集中 。所以 ,x 在这两个
r 就不在集合 A 中且:r 不在集合
集合的并集的补集中 ,即是说 ,:
T 在 集 合 中。该 定 理 的 证 明 完 毕 。 ■
0.4 证明的类型
在数学证明中通常会出现多种类型的论证。我们在这里描述几种在计算理论中常用的
类型 。因为一个证明可以分成若干不同部分 ,每一部分也是一个证明 ,所以请注意 ,一个
证明可以包含一种以上的论证类型 。
0 . 4. 1 构造性证明
许多定理声明存在一种特定类型的对象 。通过说明如何构造这样的对象是证明这种定
理的一种方法 ,这种方法就是构造性证明 ( proof by construction ) 0
贝!1 称 这 个 图 是 々 正 则 的 ( - regular
^
)0
_
{ 0,
1,… ,/2 —1 },边集为
2} U { ( w — 1 , 0} } U { { i » i+ w/2} | O z w/2 — 1 }
E= { { i y i -\~ 1 }|
现 在 沿 着 一 个 圆 的 圆 周 顺 序 画 出 这 个 图 的 所 有 顶 点 。E 等 号 右 边 的 上 一 行 描 述 的 边 连 接 圆
^^
周 上 相 邻 的 一 对 顶 点 ,下 一 行 描 述 的 边 连 接 一 个 顶 点 与 它 对 面 的 顶 点 。 这 个 想 象 的 图 清 楚
地 表 明 G 的 每 一 个 顶 点 的 度 数 为 3。故 按 照 上 面 的 定 义 ,证 得 该 命 题 为 真 。 ■
0.4 . 2 反证法
另 一 种 常 用 的 证 明 定 理 的 论 证 方 法 是 ,假 设 这 个 定 理 为 假 ,然 后 证 明 这 个 假 设 会 导 致
一 个 明 显 的 错 误 结 论 ,故 而 相 矛 盾 。 在 现 实 生 活 中 经 常 使 用 这 种 类 型 的 推 理 。 现 举 例
如 下。
iESP 当 杰 克 看 见 吉 尔 (女 ) 刚 从 外 面 进 来 时 ,发 现 她 全 身 衣 服 是 干 的 ,因 此 他
推 理 现 在 没 有 下 雨 ,他 对 现 在 没 有 下 雨 的 “ 证 明 ” 是 这 样 推 理 的 :如 果 现 在 外 面 在 下 雨
( 假 设 命 题 为 假 ),吉 尔 身 上 的 衣 服 应 该 是 湿 的 ( 一 个 明 显 的 错 误 结 论 )。 所 以 得 出 推 论:
现 在 外 面 一 定 没 有 下 雨。
下 面 我 们 采 用 反 证 法 证 明 命 题 :2 的 平 方 根 为 无 理 数 。如 果 一 个 数 是 一 个 分 式
其 中 m 和 w 是 整 数 ,则 这 个 数 是 有 理 数 ( rational number )。 换 言 之 ,一 个 有 理 数 是 整 数
m 和 n 的 比 值 。 例 如 2 /3 显 然 是 一 个 有 理 数 。 如 果 一 个 数 不 是 有 理 数 ,则 它 为 无 理 数
( irrational number )。
#是 无 理 数 。
证 明 为 了 得 到 矛 盾 的 结 论 ,假 设W 是 有 理 数 。 于 是
m
42 =
此 处 m 和〃都 是 整 数 。如 果 m 和《 都 能 被 同 一 个 大 于 1 的 最 大 整 数 除 尽 ,则 用 那 个 整 数
除 它 们 ,不 会 改 变 分 式 的 值 。故 ,m 和〃不 可 能 均 为 偶 数 。
现 用〃乘 等 式 的 两 边 ,得 到
V2 =
再 对 两 边 同 时 平 方 ,得 到
2 n2 = m 2
由 于 m 2 是 整 数 V 的 2 倍 ,故 m 2 是 偶 数 。所 以 m 也 是 偶 数 ,因 为 已 知 奇 数 的 平 方 总 是 奇
数 。因 而 ,对 于 某 个 整 数 々,m= 2 k 9 于 是 ,我 们 用 2々 代 替 m 带 人 上 式 ,得 到
2 n2 = ( 2 k ) 2 = 4 k 2
对等式两边同时除以 2, 得到
n2 = 2 k 2
而 这 个 结 果 表 明〃2 是 偶 数 ,从 而〃是 偶 数 。于 是 ,m 和〃 都 是 偶 数 。 但 是 ,前 面 已 经 化
简 772 和〃,使 它 们 不 会 都 是 偶 数 ,故 相 矛 盾。所 以 ,W 为 无 理 数 。 ■
第0 章 绪 论 15
0.4.3 归纳法
归纳法是证明无穷集合的所有元素具有某种特定性质的高级方法 。 例如 ,我们可以采
用归纳法证明 ,一个算术表达式对于它的变量的每一组赋值都能够计算岀它想要得到的
值 ,或证明一个程序在每一步或对所有的输人都能够得到正确的结果 。
2 ,3 ,… } ,而把该性
为了描述如何使用归纳法 ,我们把无穷集合取为自然数集 N = { 1 ,
质称为 P。现在要证明对于每个自然数 I V ( k ) 为真 。 换言之 ,即要证明 P( l ) 为 真 ,
以及 P( 2 ),P( 3 ), P ⑷ 等等均为真 。
每一个归纳证明均由两部分组成 :归纳基础 ( basis ) 和 归 纳 步 骤 ( induction step ) 0
明对于每一个 ) <纟,V i j ) 为真 。
理解这种证明方法后 ,现将归纳证明的格式书写如下 :
归 纳 基 础 证 明 P( l ) 为 真 。
归 纳 步 骤 对 于 每 一 个 假 设 P( 0 为 真 ,并 且 利 用 这 个 假 设 去 进 一 步 证 明
PG + 1 ) 为 真 。
现在采用归纳法来证明房产抵押贷款的月付款计算公式的正确性 。很多人借钱买房子
并且在若干年内应偿还这笔贷款 。如果要求在 30 年内还清贷款 ,典型的方法是 ,在还贷
条款中规定每个月支付固定偿还款额 ,其中应包括利息以及部分原贷款金额 。计算月付款
钱数的公式看起来神秘 ,其实十分简单 。但它关系到大多数人的日常生活 ,因此你一定对
它感兴趣 。 我们用归纳法来证明这个公式的正确性 ,这对归纳法是个很好的说明 。
首先 ,给出几个变量的名称及其含义 。设 P 为贷款原始数额 ,称为本金 。 >o 为贷款 r
的年利率 ,J = 0.0 6 表 示 年 利 率 为 6 % ,Y 为月付款数。为简便起见 ,用 J 定义另一个变量
M, 它表示月倍增系数 。因为有利息的缘故 ,所以贷款的余额每个月按照比率 M 会发生变
化。因为月利率是年利率的 1/12 , 所以 M= l + J/12 , 并且逐月付利息 (按月复利)。
每个月还款有两部分 。第一部分是 ,由于有利息 ,贷款的余额在按照月倍增系数 M
16 第0 章 諸 论
°
这里 M = l 。因而可以简化等式的右端 ,得到
Po = P
根据上面对 Po 的定义 ,这是正确的 。 因此 ,证明了第一步归纳基础成立 。
归 纳 步 骤 对 于 每 一 个 々>0 , 假 设 当 6 时 公 式 成 立 ,现 要 证 当 1时公式也
成立 。由归纳假设指出
\ Mk ~
Pk = PMk Y M - l
~
现在要证明
M k+ l - l
Pk + 1 = PMk + l -Y M- l
^
证明如下 : 首先 ,由从 到 6 + 1 的定义 ,得到
Pk ^ i = PkM -Y
因此 ,使用归纳假设可计算 Ph 得
Mk l ~
Pk + i = PMk - Y M- l M -Y
把 M 乘进去并且改写 Y ,得到
M出 一 M M- l _y M出 一 1
^
Pk + l = PMk + l -Y M- l
-Y
M- l
FM l
M- l
于是 ,当 =々+ 1 时公式也成立 ,这就证明了定理 。
请参看练习 0.14 , 试试采用这个公式计算实际的抵押付款 。
练习
0.1 考察下列集合的形式化描述 ,先理解它们包括什么样的元素 ,写一段简短文字描述每一个集合 。
a. U
b.{ … , 0 ,2 ,
一 2,
一 4, 4,… }。
c.{ n |对 N 中的某一个 m 9 n= 2 m } 0
d. { n 丨对 N 中的某一个 m , n = 2 m , w = 3々}。
并且对 N 中的某个 A ,
e. |加是 0,
1 字符串 ,
且 w 等 于 的 反 转 }。
r. { n|n 是一个整数 ,且 n = rz + l }。
0.2 试写出下列集合的形式化描述 。
a. 由 1 、10 和 100 组成的集合 。 b. 由所有大于 5 的整数组成的集合 。
c. 由所有小于 5 的自然数组成的集合 。
-
d 由 字 符 串 a b a 组成的集合 。
第0章 绪 论 17
e. 由空串组成的集合 。 f. 空的集合 。
0.3 设 A 为集合 :
U,y, :
d ,B 为集合 U ,y }。
a. A 是 B 的子集吗? d.A f l B 等于什么?
b.B 是 A 的子集吗? e.A X B 等于什么?
.A U B 等于什么?
C f.B 的幂集等于什么?
0.4 设焱有 个元素 ,B 有 6 个元素 ,问 A X B 中有多少个元素 ? 说明理由 。
0.5
0.6
如下表所示 :
^
设 C 是包含 c 个元素的集合 ,试问 C 的幂集中有多少个元素 ? 说明理由 。
2 ,3 ,4 ,5 > ,Y 为集合 { 6 ,
设 X 为集合 { 1 ,
f( n)
6
7 ,8 ,
9
9,10 }。一元函数 /:X
6
10
7
10
—
8
10
Y 和二元函数分:X X Y
9
10
10
10
— Y
2 7 2 7 8 9 10 6
3 6 3 7 7 8 8 9
4 7 4 9 8 7 6 10
5 6 5 6 6 6 6 6
0.7
^
e. 分( 4 ,/⑷ ) 的值等于什么?
对下列每一小题 ,给出一个满足指定条件的关系 。
自反的和对称的 ,但不是传递的 。
c. 对称的和传递的 ,但不是自反的 。
b. 自反的和传递的 ,但不是对称的 。
问题
0.10 试证明每个包含两个或两个以上结点的图应包含有相等度数的两个结点 。
0.11 请找出下述证明中的错误 ,它证明所有马的颜色相同 。
断 言 在 任 意 一 个 包 含 A 匹马的集合中 ,所有马的颜色相同 。
证 明 对 /i 作归纳证明 。
归 纳 基 础 对 于 /2 = 1 ,在任何只有一匹马的集合中 ,显然所有马的颜色相同 。
归 纳 步 骤 对 于 々>1 。假 设 命 题 对 于 为 真 ,要 证 明 命 题 对 于 /1 =々 1 也为真 。 +
令 H 为任意一个有々+ 1 匹马的集合 ,现在要证明这个集合中所有马的颜色相同 。
从这个集合中牵走一匹马 ,得到集合 H i 中 恰 好 有 々 匹 马 。根 据 归 纳 假 设 , 中所有马的
颜色相同 。现在把牵走的马重新牵回来 ,再牵走另外一匹马得到集合 H2 。根据同样的道理 , H2
中所有马的颜色也应相同 。因此 ,H 中所有马的颜色一定相同 。
18 第0 章 綠 论
0. 12 设 S( rO = l + 2 + … + rz 是前 w 个自然数之和 ,C( 72 )= l 3 + 23 + … + rz 3
是前 n 个立方数之和 。试
《)= 52 ( 2 ) 这一有趣的结论 。
通过对〃的归纳证明如下等式 ,从而得到对每一个《 有 (( :
a. S ( n ) = - - rz ( n + 1 )
^ 0 ^
b. C( w ) = +4 724 + 2 n + n
( 3 2 )=
+4 n 2( rz
+ l )20
0. 13 请找出下述证明 2 = 1 中的错误 。
提 示 : 考虑方程 a = 6。两边同乘以 a , 得到 a 2 == M 。 两边同时减去 62 . 得到 V — 62 =以 一 62 。
对每一边做因式分解 ,得 U + 6 ) U — 6)= 6 U — 6 )。用 ( a ~ b ) 除每一边 ,得 + 6 = 6。最后 ,
A 0.
14
令 a 和 6 等于 1 ,得证 2 = 1。
利用定理 0.15 试推导出用本金 P 、 利率 J 和付款次数 Z 计算抵押贷款的月付款额的公式 。假设
^
在付【 次款之后 ,贷款余额减少为 0。对于 30 年的抵押贷款 ,假设原贷款额为 10 万美元 ,年利
率为 5 % ,用 360 个月偿清 ,试用公式计算每个月的还款额 。
A* 0.15 Ramsey 定理 。设 G 是一个图 ,G 中的团 ( clique ) 为 任 意 两 个 顶 点 都 有 边 相 连 的 子 图 。 反 团
-
( anti clique ) 又 叫 作 独 立 集 ( independent set ), 它为任意两个顶点都没有边相连的子图 。 试证
中 ,A 中包含的顶点属于团 ,B 中包含的顶点属于反团 。
I 第一部分
Introduction to the Theory of Computation , 3e
自动机与语言
第1章
Introduction to the Theory of Computation , 3e
正则语言
计 算 理 论 的 第 一 个 问 题 是 :什 么 是 计 算 机? 这 或 许 是 一 个 很 简 单 的 问 题 ,任 何 人 都 知
道 我 用 来 打 字 的 这 个 东 西 就 是 一 台 计 算 机 。但 是 这 些 现 实 的 计 算 机 相 当 复 杂 ,很 难 直 接 对
它 们 建 立 一 个 易 于 处 理 的 数 学 理 论 ,因 此 采 用 称 为 计 算 模 型 ( computational model ) 的 理
想 计 算 机 来 描 述 。同 科 学 中 的 其 他 模 型 一 样 ,一 个 计 算 模 型 准 确 地 刻 画 了 某 些 特 征 ,同 时
忽 略 一 些 特 征 。 因 此 ,针 对 关 注 的 特 性 ,我 们 采 用 几 个 不 同 的 计 算 模 型 。 本 书 从 最 简 单 的
模 型 开 始 ,它 称 为 有 穷 状 态 机 (finite state machine ) 或 有 穷 自 动 机 ( finite automaton )。
1.1 有穷自动机
有 穷 自 动 机 是 描 述 能 力 和 资 源 极 其 有 限 的 计 算 机 的 模 型。一 台 存 储 如 此 少 的 计 算 机 能
做 些 什 么 呢? 回 答 是 :能 做 很 多 有 用 的 事 情!由 于 这 样 的 计 算 机 存 在 于 各 种 各 样 的 机 电 设
备 的 核 心 部 位 ,因 此 事 实 上 ,我 们 随 时 都 在 和 它 们 打 交 道 。
-
如 图 1 1 所 示 ,自 动 门 控 制 器 就 是 这 类 设 备 的 一 个 例 子 。
在 商 场 的 入 口 和 出 口 常 常 看 见 ,当 控 制 器 检 测 到 有 人 正 在 靠
前缓冲区 后缓冲区
近 时 ,自 动 门 就 会 打 开 。自 动 门 的 前 面 有 一 个 缓 冲 区 ,用 来
检 测 是 否 有 人 想 进 来 。 在 门 的 后 面 有 另 一 个 缓 冲 区 ,使 得 控
制器把门打开足够长的时间让人走进来并且不让门在打开的 门
时 候 碰 到 站 在 它 后 面 的 人。 -
图1 1 从上向下看自动门
控 制 器 有 两 个 状 态 :OPEN 和 CLOSED , 分 别 表 示 门 的 开 和 关 ,它 处 于 两 个 状 态 之
一 。如 图 1 - 2 所 示 ,有 4 种 可 能 的 输 入 : FRONT ( 表 示 门 前 面 的 缓 冲 区 内 有 人 )、 REAR
( 表 示 门 后 面 的 缓 冲 区 内 有 人)、 BOTH ( 表 示 前 后 缓 冲 区 内 都 有 人 ) 和 NEITHER ( 表 示
前 后 缓 冲 区 内 都 没 有 人)。
控 制 器 根 据 它 接 收 的 输 入 从 一 个 状 态 转 移 到 另 一 个 状 态 。 当 它 处 于 CLOSED 状 态 且
接 收 到 输 入 NEITHER 或 REAR 时 ,它 仍 处 于 CLOSED 状 态 。 而 且 ,如 果 接 收 到 输 入
BOTH , 它 也 停 留 在 CLOSED 状 态 ,因 为 打 开 门 有 撞 倒 在 后 缓 冲 区 里 的 人 的 危 险 。但 是 ,
如 果 输 入 FRONT 来 到 ,它 便 转 移 到 OPEN 状 态 。 在 OPEN 状 态 ,如 果 接 收 到 输 入
FRONT , REAR 或 BOTH ,它 保 持 在 OPEN 状 态 不 动 。如 果 输 入 NEITHER 来 到 ,它 返
回 到 CLOSED 状 态 。
例 如 ,控 制 器 可 能 开 始 时 处 于 CLOSED 状 态 并 且 接 收 到 下 述 一 系 列 的 输 人 信 号:
FRONT , REAR , NEITHER , FRONT , BOTH , NEITHER , REAR , NEITHER 。那
么 ,它 会 经 过 下 述 状 态 :CLOSED ( 开始 ),OPEN ,OPEN , CLOSED , OPEN , OPEN ,
CLOSED , CLOSED , CLOSED。
用 有 穷 自 动 机 理 论 来 处 理 自 动 门 控 制 器 是 很 好 的 方 法 。 可 以 采 用 如 图 1- 2 和 图 1 - 3 所
示的标准表示方法 。控 制 器 是 一 台 存 储 器 只 有 一 位 的 计 算 机 ,能 够 记 录 控 制 器 所 处 的 状
态 。另外一些公用设备的控制器具有容量稍微大一点的存储器 。在 电 梯 的 控 制 器 中 ,状 态
可能表示电梯所在的楼层 ,而输入可能是从按钮接收到的信号 。这台计算机可能需要若干
位存储器来记住这些信息 。各种家电设备 ,例如洗碗机和电子恒温器以及部分电子表和计
算器的控制器也都是只有有限存储的计算机的例子 。设 计 这 种 装 置 需 要 知 道 有 关 有 穷 自 动
机的方法和术语 。
REAR FRONT
BOTH REAR
NEITHER BOTH
FRONT 输人信号
NEITHER FRONT REAR BOTH
CLOSED OPEN
CLOSED CLOSED OPEN CLOSED CLOSED
状态
NEITHER OPEN CLOSED OPEN OPEN OPEN
图 1- 2 自动门控制器的状态图 图 1- 3 自动门控制器的状态转移表
^
1- 4 描述了一个有穷自动机 ,它被称为 A 。
-
图 1 4 被 称 为 Mi 的 状 态 图 ( state diagram )。
它有 3 个状态 ,记 作 % ,% 和 <?3 。起 始 状 态 ( start
state ) q x 用 一 个 指 向 它 的 无 出 发 点 的 箭 头 表 示 ,接
0,1
受状态 (accept state ) 仍带有双圈 。从 一 个 状 态 指
图 1- 4 一台有 3 个状态的有穷自动机
向另一个状态的箭头称为转移 ( transition )。
当这个自动机接收到输人字符串 ,例 如 1101 时 ,它 处 理 这 个 字 符 串 并 且 产 生 一 个 输
出 。输岀是接受或拒绝 。为简化描述过程 ,这 里 将 只 考 虑 是 非 型 的 输 出 。处 理 从 的 起
始状态开始 。自动机从左至右一个接一个地接收输入字符串的所有符号 。读到一个符号之
后, 沿着标有该符号的转移从一个状态移动到另一个状态 。 当 读 到 最 后 一 个 符 号 时 ,
^
M! 产生它的输出 。如果 iV 现在处于一个接受状态 ,则输出为接受 ;否则输岀为拒绝 。
-
^
例如 ,把输入字符串 1101 提供给图 1 4 中 的 有 穷 自 动 机 A ,处理步骤如下 :
1. 开始时处于状态 % 。
2. 读到 1 ,沿着转移从 % 到 %。
3. 读到 1 ,沿着转移从 % 到 % 。
4. 读到 0 , 沿着转移从 % 到 % 。
5. 读到 1 ,沿着转移从 % 到 % 。
6. 输 岀 接 受 ,因 为 在 输 人 字 符 串 的 末 端 处 于 接 受 状 态 %。
22 第一部分自动机与语言
用 这 台 机 器 对 各 式 各 样 的 输 入 字 符 串 进 行 试 验 ,得 知 它 接 受 字 符 串 1 、 01 、 11 和
0101010101 。事实上 ,Mi 接受以 1 结尾的任何 0 、 1 串 ,因为只要读到 1 它 就 到 达 接 受 状
态 % 。此外 ,它还接受字符串 100 、 0100 、 110000 和 0101000000 ,以及在最后一个 1 的 后
面 有 偶 数 个 0 的 任 何 0 、1 串 。它 拒 绝 其 他 的 0 、 1 串 ,例 如 0 ,10 ,101000。试 试 描 述 由
接受的所有字符串组成的语言 ,稍后我们将做这件事情 。
1 . 1. 1 有穷自动机的形式化定义
上 一 小 节 用 状 态 图 介 绍 了 有 穷 自 动 机 ,这 一 小 节 将 形 式 化 地 定 义 有 穷 自 动 机 。虽 然 状
态 图 易 于 直 观 地 理 解 ,但 基 于 下 述 两 条 理 由 还 需 要 形 式 化 的 定 义 。
首 先 ,形 式 化 定 义 是 精 确 的 。它 能 消 除 有 关 在 一 台 有 穷 自 动 机 中 任 何 不 明 确 的 疑 点 。
如 果 不 清 楚 有 穷 自 动 机 是 否 可 以 没 有 接 受 状 态 ,或 者 对 各 个 可 能 的 输 入 符 号 从 每 一 个 状 态
是 否 一 定 恰 好 引 出 一 个 转 移 ,那 么 可 以 查 阅 它 的 形 式 化 定 义 ,并 且 得 到 证 实 对 这 两 个 问 题
的 回 答 是 肯 定 的 。其 次 ,形 式 化 定 义 提 供 了 一 种 表 示 方 法 ,好 的 表 示 方 法 有 助 于 思 考 并 清
楚 地 表 达 岀 你 的 思 想。
形 式 化 定 义 的 语 言 多 少 有 点 神 秘 ,与 法 律 文 件 的 语 言 有 一 些 相 似 之 处 。两 者 都 必 须 是
精 确 的 ,每 一 个 细 节 必 须 给 予 清 楚 的 说 明 。
一 台 有 穷 自 动 机 有 若 干 部 分。它 有 一 个 状 态 集 和 根 据 输 入 符 号 从 一 个 状 态 到 另 一 个 状
态 的 规 则 。它 有 一 个 输 入 字 母 表 ,指 明 所 有 允 许 的 输 入 符 号 。它 还 有 一 个 起 始 状 态 和 一 个
接 受 状 态 集 。形 式 化 定 义 把 一 台 有 穷 自 动 机 描 述 成 一 张 含 以 下 5 部 分 的 表 :状 态 集 、 输 入
字 母 表 、 动 作 规 则 、 起 始 状 态 以 及 接 受 状 态 集 。用 数 学 语 言 表 达 ,5 个 元 素 的 表 经 常 称 为
5 元 组 。因 此 ,定 义 有 穷 自 动 机 是 由 这 5 部 分 组 成 的 5 元 组 。
用 转 移 函 数 ( transition function ) 定 义 动 作 规 则 ,常 记 作 5。 如 果 有 穷 自 动 机 有 从 状
态 到状态标 有 输 人 符 号 1 的 箭 头 ,这 表 示 当 它 处 于 状 态 I 时 读 到 1 ,则 转 移 到 状 态 h
^ ^
可 以 用 转 移 函 数 讲 清 楚 这 件 事 情 ,记 作 5(:r ,
些 结 合 在 一 起 得 到 有 穷 自 动 机 的 形 式 化 定 义。
l )= y 。这 个 记 号 是 一 种 数 学 简 写 方 式 。 把 这
2 ,5,
有 穷 自 动 机 是 一 个 5 元 组 (Q , gQ ,
F),其 中
1. Q 是 一 个 有 穷 集 合 ,称 为 状 态 集 。
4. —
2 . 2 是 一 个 有 穷 集 合 ,称 为 字 母 表 。
3.5:Q X 2 Q 是 转 移 函 数 。
是 起 始 状 态。
5. F G Q 是 接 受 状 态 集 ◎ 。
上 述 形 式 化 定 义 精 确 地 描 述 了 有 穷 自 动 机 。例 如 ,回 到 先 前 提 出 的 那 个 问 题 :是 否 允
许 没 有 接 受 状 态? 可 以 看 到 ,如 果 令 F 等 于 空 集 0 就 没 有 接 受 状 态 ,因 此 对 这 个 问 题 的 回
答 是 肯 定 的 。 此 外 ,转 移 函 数 5 对 一 个 状 态 和 一 个 输 入 符 号 的 每 一 种 可 能 的 组 合 恰 好 指 定
了 下 一 个 状 态 。这 就 对 第 二 个 问 题 做 出 肯 定 的 回 答 ,表 明 对 各 个 可 能 的 输 入 符 号 从 每 一 个
状 态 恰 好 引 出 一 个 转 移 箭 头。
通 过 指 定 定 义 1.1 中 列 出 的 5 部 分 ,可 以 用 这 个 形 式 化 定 义 的 记 号 描 述 各 个 具 体 的 有 穷
㊁
-
如果不清楚心 QX 2 Q 的含义 ,请参阅 0.2.3 节 。
接受状态有时也称作终结状态 ( final state )
第1 章 正 则 语 言 23
-
自 动 机 。 例 如 ,回 到 图 1 4 描 述 的 有 穷 自 动 机 从 。为 便 于 描 述 在 这 里 将 其 重 画 ,如 图 1 5
_
所 示。 . ,
2 ,5 ,9 l ,F ),
可 以 把 純 形 式 地 写 成 M! = ( Q,
其中
n
1- Q ( ,
%}。
^
2 0,1
2 . 2 = { 0 ,1 } 0
图 1- 5 有 穷 自 动 机 Mj
3.5 描 述 为
_
4 .q l 是 起 始 状 态 。
5.F = { g2 } 0
若 A 是 机 器 M 接 受 的 全 部 字 符 串 集 ,则 称 A 是 机 器 M 的 语 言 ,记 作 L( M) = A 。 又
称 M 识 别 A 或 M 接 受 A 。由 于 在 说 机 器 接 受 字 符 串 和 机 器 接 受 语 言 时 接 受 一 词 有 不 同 的
含 义 ,所 以 我 们 倾 向 于 对 语 言 使 用 识 别 二 字 以 避 免 混 清 。
一 台 机 器 可 能 接 受 若 干 字 符 串 ,但 是 它 永 远 只 能 识 别 一 个 语 言 。 如 果 机 器 不 接 受 任 何
字 符 串 ,那 么 它 仍 然 识 别 一 个 语 言 ,即 空 语 言 0 。
在 上 面 的 例 子 中 ,令
A ={ w|w 至 少 含 有 一 个 1 并 且 在 最 后 的 1 后 面 有 偶 数 个 0 }
那 么,U M O = A , 或 者 等 价 地 说 , 识 别 A。
1 .1 . 2 有穷自动机举例
dDD -
图 i 6 是 有 穷 自 动 机 M2 的 状 态 图 。
采 用 形 式 化 描 述 ,M 2 = ( { q l ,q2 } 9 { 0 9 1 } , 9
{ q2 ) ) o 转 移 函 数§为
-
图1 6 -
2 状 态 有 穷 自 动 机 M2 的 状 态 图
注 意 ,M2 的 状 态 图 和 M2 的 形 式 化 描 述 包 含 相 同 的 信 息 ,仅 仅 是 形 式 不 同 。如 果 需
要 ,总 可 以 由 其 中 的 一 个 得 到 另 一 个 。
了 解 一 台 机 器 的 常 用 方 法 是 用 几 个 样 本 输 人 串 做 测 试 。当 做 这 些 “试 验” 观 察 机 器 如
何 工 作 的 时 候 ,通 常 ,它 的 运 行 方 式 会 变 得 十 分 清 楚 。 对 于 样 本 串 1 1 0 1 ,M2 从 它 的 起 始
状 态 % 开 始 ,首 先 读 到 第 一 个 1 后 转 移 到 状 态 % ,然 后 在 读 到 1 ,0 和 1 后 进 入 到 状 态
q2 ,
q 和 % 。这 个 字 符 串 被 接 受 ,因 为 状 态 % 是 接 受 状 态 。 而 字 符 串 1 1 0 使 純 停 留 在
状态 q
'
所 以 它 被 拒 绝 。再 试 几 个 例 子 之 后 ,可 以 看 出 M2 接 受 所 有 以 1 结 束 的 字 符 串。
”
于 是 ,L( M2 ) = { W|w 以 1 结 束 }。
考 虑 有 穷 自 动 机 M3 ,见 图 1 7 。
-
24 第一部分自动机与语言
— 样。照 例,M
^
除接受状态的位置之外 ,机 器 以3 与 ] 2 3 接受所有读完之后停留在接
受状态的字符串。注意 ,因 为 起 始 状 态 同 时 也 是 接
受状态 ,所 以 iW3 接 受 空 串 e ,只 要 机 器 一 开 始 读
空 串,处理就结束了 。因 此 ,如 果 起 始 状 态 是 接 受
状 态 ,则 e 被 接 受 。除 空 串 之 外 ,这 台 机 器 接 受 任
何以 0 结束的字符串。从而 ,
L ( M3 ) = { W | I^ 是空串 e 或以 0 结束 } m 图1 7- -
2 状 态 有 穷 自 动 机 M3 的 状 态 图
dWMa -
图 1- 8 给出一台 5 状 态 机 器 M 4 。
机 器 M4 有 两 个 接 受 状 态 % 和 n ,在 字 母 表
2= { a ,
b } 上 运 行 。 试 验 表 明 它 接 受 字 符 串 a ,b,
aa , bb 和 bab,但 是 不 接 受 字 符 串 ab ,ba 和 bb -
ba。这 台 机 器 从 状 态 6 开 始 ,在 读 入 输 入 字 符 串 的
第一个符号之后它或者向左进入 g 状 态 ,或 者 向 右
进 人 r 状态 。不论是哪种情况 ,它都不可能返回到
起始状态 (这 与 前 几 个 例 子 是 不 同 的 ),因 为 它 没
有办法从任何其他状态回到状态 如果输入字符 图1 8 - 有 穷 自 动 机 M4
^
串的第一个符号是 a ,那 么 它 向 左 走 并 且 当 输 入 串
以 a 结束时接受 。类似地 ,如果第一个符号是 b ,那么它向右走并且当输入串以 b 结 束 时
接 受 。所 以 ,M4 接受开头和结尾都是 a 或 者 开 头 和 结 尾 都 是 b 的 所 有 字 符 串。亦 即 ,M4
接受开头和结尾符号相同的所有字符串。 ■
的参数时就有可能这样 。 在 这 些 情 况 下 ,将 采
图 1- 9 有 穷 自 动 机 M5
用形式化描述来说明机器 。
考虑例 1.5 的推广 ,使 用 与 例 1.5 相 同 的 4 个 符 号 的 字 母 表 2。 对每一个
设 九 是 所 有 这 种 字 符 串 的 语 言 ,其中数字之和是 f 的 倍 数 ,当碰到符号 〈 RESET〉
时 ,和被重新置 0。对于每一个 Az ,给 出 识 别 它 的 有 穷 自 动 机 氏 。形 式 地 描 述 机 器 如
下 :Bi = CQi 9 I ,Si ,q0 Aq0 } ) J 这 里 Qf 是 z 个 状 态 的 集 合 { gQ ,
%,<? ,
2 …, },设 计 转 移
函数次使得对每一个),若氏处于七时 ,此 时 的 和 模 t 等 于 八 对 每 一 个 1,令
Si ( q j 0 )= Q j
这里 k = j + 1 mod i
di ( q ,\ ) = q k ,
}
,2) = % , 这里 k = j \ 2 mod i
~ ~
第J 章 正 则 语 言 25
8i ( q j ,( RESET ) ) = o
^
1 . 1 .3 计算的形式化定义
至 此 已 用 状 态 图 非 形 式 化 地 描 述 了 有 穷 自 动 机 ,同 时 又 用 5 元 组 作 为 形 式 化 定 义 描 述
了 它 。非 形 式 化 描 述 易 于 在 初 期 掌 握 ,而 形 式 化 定 义 是 把 概 念 完 全 搞 清 楚 的 好 方 法 。 形 式
化 定 义 能 够 清 除 在 非 形 式 化 描 述 中 可 能 岀 现 的 任 何 二 义 性 。下 面 对 有 穷 自 动 机 的 计 算 也 这
样 做。由 于 已 经 有 了 关 于 有 穷 自 动 机 计 算 方 式 的 非 形 式 的 想 法 ,现 在 就 把 它 数 学 地 形
式 化。
设 M =( Q ,
H % ,F ) 是 一 台 有 穷 自 动 机 ,W =W \ W
,
2
m,
,
-
VU n 是 一 个 字 符 串 并 且 其 中 任
,是 字 母 表 2 的 成 员 。如 果 存 在 Q 中 的 状 态 序 列 n),
n,… , ,满 足 下 述 条 件:
丄 .r0 = q
2,
3.r „ G F
0
=
.
z = 0 , …,
, w 1— ^
则 M 接受 w o -
条 件 1 说 机 器 从 起 始 状 态 开 始 。条 件 2 说 机 器 按 照 转 移 函 数 从 一 个 状 态 到 一 个 状 态 。
条 件 3 说 如 果 机 器 结 束 在 接 受 状 态 ,则 接 受 它 的 输 入 。 如 果 A = { W|M 接 受 w },则 称 M
识别语言 A 。
如 果 一 个 语 言 被 一 台 有 穷 自 动 机 识 别 , 则 称 它 是 正 则 语 言 ( regular lan -
guage ) 0
(HEI 以 例 i .5 中 的 机 器 M5 为 例 ,令 加 是 字 符 串
1 0〈 RESET > 22
〈 RESET > 0 1 2
由 于 当 M5 对 w 计 算 时 进 入 的 状 态 序 列 为
,%, <? , , ,
i % % % Wo ,%,%, 90
它 满 足 上 述 3 个 条 件 ,根 据 计 算 的 形 式 化 定 义 ,M5 接 受 tc,。 的语言是
L( M5 )= { tH 除〈 RESET〉将 计 数 重 新 置 0 之 外,w 中 所 有 符 号 之 和 模 3 等 于 0}
因 为 M5 识 别 该 语 言 ,所 以 它 是 正 则 语 言。
1. 1 . 4 设计有穷自动机
不 论 是 自 动 机 还 是 艺 术 品 ,设 计 都 是 一 个 创 作 过 程 ,因 此 不 可 能 把 它 归 结 为 一 个 简 单
的 处 方 或 公 式 。然 而 ,可 以 找 到 一 种 特 殊 的 做 法 ,在 设 计 各 种 类 型 的 自 动 机 时 都 是 有 帮 助
的 。设 计 者 把 自 己 放 在 所 要 设 计 的 机 器 的 位 置 上 ,考 虑 一 下 如 何 去 实 现 机 器 的 任 务 。把 自
己 假 想 成 机 器 是 一 种 心 理 上 的 技 巧 ,有 助 于 设 计 者 把 全 部 思 维 投 人 到 设 计 过 程 中 。
用 上 面 描 述 的 “读 者 即 自 动 机” 方 法 设 计 有 穷 自 动 机 。 假 设 有 某 个 语 言 ,要 设 计 一 台
识 别 它 的 有 穷 自 动 机 。假 定 设 计 者 自 己 就 是 这 台 有 穷 自 动 机 ,接 到 一 个 输 入 字 符 串 并 且 要
确 定 它 是 不 是 这 台 自 动 机 所 识 别 的 语 言 的 成 员 。设 计 者 一 个 接 一 个 地 读 这 个 字 符 串 的 符
号 。在 读 到 每 一 个 符 号 之 后 设 计 者 必 须 确 定 到 现 在 为 止 所 看 到 的 字 符 串 是 否 在 这 个 语 言
中 。理 由 是 设 计 者 和 机 器 一 样 不 知 道 字 符 串 什 么 时 候 结 束 ,因 此 必 须 随 时 准 备 好 答 案 。
首 先 ,为 了 能 做 出 这 样 的 判 断 ,必 须 估 算 岀 当 读 一 个 字 符 串 时 需 要 记 住 它 的 哪 些 东
西。为 什 么 不 直 接 记 住 所 看 到 的 全 部 东 西 呢? 记 住 当 前 设 计 者 是 一 台 有 穷 自 动 机 ,这 种 类
26 第一部分自动机与语言
-
图 1 10 状 态 geven 和 状 态 %dd
-
图 1 11 说明如何重新安置可能性的转移
接下来 ,把起始状态设置为对应于到现在为止还没有看到与
任何符号 (空 串 e ) 相关联的可能性的状态 。 在 这 个 例 子 中 ,起
始状态是状态 geven ,因为 0 是偶数 。 最 后 ,把 接 受 状 态 设 置 为 这
样一些状态 ,它们都对应于自动机打算要接受输入字符串的可能
性 。 令 %dd 为 接 受 状 态 ,因 为 当 看 到 奇 数 个 1 时就打算要接受 。 图 卜 12 增加起始状态
这些添加的内容在图 1 12 中给出 。
- 和接受状态
2. 刚 才 看 见 一 个 0 。
—
3. 刚 才 看 见 0 0 。
4. 已 经 看 见 整 个 模 式 0 0 1 。
。。
用 状 态 心 % ,g 和 %()1 分 别 表 示 这 4 种 可 能 性 。通 过 下 述 观 察 可 以 给 出 所 有 的 转 移 :
在 g 读 到 1 时 仍 停 在 g 而 读 到 0 时 转 移 到 %; 在 % 读 到 1 时 返 回 到 g 而 读 到 0 时 转 移 到
00; 在 读 到 1 时 转 移 到 Wen 而 读 到 0 时 仍 停 留 在 最 后 ,在 知M 读 到 0 或 1 时 都 停
^ 。
留 在 9 0 1 。起 始 状 态 是 唯 一^ 的 接 受 状 态 是
q
0
%
^
,如 图 1 - 1 3 所 7K 。
《00
0 0,1
-
图 1 13 接受含有 001 的字符串
1 . 1.5 正则运算
在 前 两 个 小 节 中 我 们 介 绍 并 定 义 了 有 穷 自 动 机 和 正 则 语 言 ,现 在 开 始 考 察 它 们 的 性
质。这 些 工 作 有 助 于 开 发 一 个 工 具 箱 ,它 提 供 在 设 计 识 别 特 定 语 言 的 有 穷 自 动 机 时 需 要 的
技 术 。工 具 箱 还 包 括 证 明 某 些 其 他 语 言 不 是 正 则 语 言 (即 ,超 出 了 有 穷 自 动 机 的 能 力 ) 的
方 法。
在 算 术 中 ,基 本 对 象 是 数 ,工 具 是 处 理 数 的 运 算 ,如 + 和 X 。在 计 算 理 论 中 ,对 象 是
语 言 ,工 具 包 括 为 处 理 语 言 专 门 设 计 的 运 算 。 定 义 语 言 的 三 种 运 算 , 称 为 正 则 运 算
( regular operation ), 并 且 使 用 这 些 运 算 来 研 究 正 则 语 言 的 性 质。
设 A 和 B 是 两 个 语 言 , 定 义 正 则 运 算 并 ( union )、 连 接 ( concatena -
tion ) 和 星 号 (star ) 如 下 :
并 :AUB = U|x 6 A 或:rGB }
• 连 接: 且
• 星 号 :A = { xi:
*
T2 …:c* I 々>0 且 每 一 个:CiGA }
大 家 对 并 运 算 已 经 很 熟 悉 ,它 把 A 和 B 中 的 所 有 字 符 串 合 并 在 一 个 语 言 中 。
连 接 运 算 有 点 小 花 招 。它 以 所 有 可 能 的 方 式 ,把 A 中 的 一 个 字 符 串 接 在 B 中 的 一 个
字 符 串 的 前 面 ,得 到 新 的 语 言 中 的 全 部 字 符 串。
星 号 运 算 与 前 两 个 运 算 有 点 不 同 ,因 为 它 作 用 于 一 个 语 言 而 不 是 两 个 语 言 。亦 即 ,星
号 运 算 是 一 元 运 算 ( unary operation ) 而 不 是 二 元 运 算 ( binary operation )。它 把 A 中 的
任 意 个 字 符 串 连 接 在 一 起 得 到 新 语 言 中 的 一 个 字 符 串 。因 为 “任 意 个” 包 括 0 个 在 内,所
以 不 管 A 是 什 么,空 串 e 总 是 A * 的 一 个 成 员 。
OBBI 设 字 母 表 2 是 标 准 的 2 6 个 字 母 { a,
b,…,
z }。 又 设 A = { good ,bad } ,B =
{ boy ,
girl },则
A \J B={ good , bad , boy , girl } ,
A ° B= { goodboy , goodgirl , badboy ,badgirl } ,
A * = { e , good ,bad , goodgood ,goodbad , badgood ,badbad ,
goodgoodgood , goodgoodbad ,goodbadgood ,goodbadbad , ••• }
28 第一部分自动机与语言
设 2 ,3 , } 是自然数集 。 说
={ 1 , 一 N 在乘法运算下封闭的意思是 ,对 N 中任意的:r
: ~
和 V ,乘 积 也 在 N 中 。 相反地 ,N 在除法下不是封闭的 ,因为 1 和 2 在 N 中 ,而 1 /
2 不在 N 中 。一般说来 ,如果把某种运算应用于一个对象集合的成员得到的对象仍在这个
集合中 ,则称这个对象集合在该运算下封闭 。下面证明正则语言类在三种正则运算下封
闭 。在 1.3 节将会看到这些封闭性对于处理正则语言和了解有穷自动机的能力是有用的工
具。首先 ,从证明并运算开始 。
正则语言类在并运算下封闭。
换 言 之 ,如 果 Ai 和 A 2 是 正 则 语 言 , 则 A 〗 UA 2 也 是 正 则 语 言 。
证明思路有两个正则语言 A i 和 A 2 , 要 证 明 A i U A2 也是正则的 。 由于 Ai *A 2 是
正 则 的 ,所 以 有 一 台 有 穷 自 动 机 识 别 A! 和一台有穷自动机 M2 识别 A 2 。为了证 WAi
UA 2 是正则的 ,因而要证明有一台有穷自动机识别 A i U A 把它称为 M。
^ Ai U A 2 , 机 器 M 必
^ ^
这是一个构造性证明 。 利用 ] 和 ]\ 2 构造 M。 为了识别并语言
^ ^
须恰好在或] 2 接 受 的 时 候 接 受 它 的 输 人 串 。M 模 拟 iV 和 M2 并 且 当 这 两 个 模 拟 中
有一个接受时 ,M 接受 。
机器 M 怎 样 模 拟 *M 2 呢? 它可能是先在输人上模拟 M! ,然后再在输入上模拟
M2 。但是 ,在这里必须小心! 一旦输入中的符号被读过且用于模拟 M:,就不可能为了模
拟純 “把输入带重新绕回去”。因而需要用另外的方法 。
,
^^
设计者可以设想自己就是 M。当输入符号一个接一个地来到时 ,同时模拟 ] 和] 2
^
h X h 对状态 ,其中一个状态来自 iV ,另一个状态来自 M2 。这个数目将是 M 的状态数 ,
^^
iV 和] 2 的一对状态是 M 的一个状态 。M 的转移从一对状态到一对状态 ,同时修改 M:
和 M2 当 前 的 状 态 。 当 的 状 态 是 接 受 状 态 时 ,这 对 状 态 是 M 的接受状态 。
证 明 设 ⑽ 识 别 A!,M2 识 别 A 2 ,其中
% F i ) ,M2 = ( Q2 982 yq 2 ,
^
M i = (Qi ,
2, 汐1 , 心)
9
r2 )6 Q 和 每 一 个 令
S( ( r \ ,
r2 ),
a )=(5i(n ,
a ),
J2 O2 ,
a )) ^
和么 ,
^^
F= { (r i ,r2 )I n G F i 或 7 2 6 F2 } -
第J 章 正 则 语 言 29
^ 。
这个表达式与 / ( AXQdLKQiXFd 相 同 。( 注 意 :它 与 不 同。这 个 表 达
式能给我们提供什么呢?)e
至此 ,构造识别八 1 义2 的有穷自动机 M 的工作已经完成 。这个构造相当简单 ,因 而
根据在证明思路中描述的策略 ,它的正确性是显然的 。更复杂的构造要求增加证明正确性
的讨论 。通 常 采 用 归 纳 法 形 式 地 证 明 这 类 构 造 的 正 确 性 。作 为 一 个 例 子 ,请 看 定 理 1.28
的 证 明 。本课程中大多数这类构造都相当简单 ,因而不需要形式化的正确性证明 。 鐵
刚才证明了两个正则语言的并集是正则的 ,因而证明正则语言类在并运算下封闭 。 接
下来转到连接运算 ,并且试着证明正则语言类在该运算下也封闭 。
正则语言类在连接运算下封闭。
换 言 之 ,如 果 A! 和 A 2 是 正 则 语 言 ,则 Ai 。A 2 也 是 正 则 语 言。
为了证明这个定理 ,让我们按照关于并运算下封闭的证明线索试一试 。 和 前 面 一 样 ,
从假设有穷自动机 *M 2 分 别 识 别 正 则 语 言 烏 和 八2 开始 。但是 ,现在设计的有穷自
^
动机 M 不是当 iVH 或 ] 2 接 受 输 入 时 它 才 接 受 输 入 ,而 应 该 是 当 它 的 输 入 可 以 被 分 成 两
段 ,M! 接受第一段且 M2 接受第二段时 ,iVT 才接受输入 。问 题 是 M 不 知 道 在 什 么 地 方 把
它的输人分开 (即在什么地方第一段结束和第二段开始)。 为 了 解 决 这 个 问 题 ,引 人 所 谓
非确定性的新技术 。
1.2 非确定性
非确定性是一个有用的概念 ,已 经 对 计 算 理 论 产 生 了 巨 大 的 影 响 。 至 今 在 我 们 的 讨 论
中 ,计算的每一步都按照唯一的方式跟在前一步的后面 。当机器处于给定的状态并读人下
一个输入符号时 ,可以知道机器的下一个状态是什么—它是确定的 。因 此 ,称 这 是 确 定
型计算 ( deterministic computation )。 在 非 确 定 型 ( nondeterministic ) 机 器 中 ,在 任 何 一
点 ,下一个状态可能存在若干个选择 。
非确定性是确定性的推广 ,因此每一台确定型有穷自动机自动地是一台非确定型有穷
自 动 机 。如图 1 - 14 所 示 ,非确定型有穷自动机可能有一些另外的特征 。
0,1
图 1- 1 4 非 确 定 型 有 穷 自 动 机 Ni
读人的符号 开始
确定型计算 非确定型计算
开始 % 《3
n
拒绝 n % )⑹ 分4
q
©
^^
2 )( 3) (
^
4
*
接受或拒绝 接受 @
-
图1 15 有一个接受分支的确定型计算和非确定型计算 图 1- 1 6 N j 关于输入 010110 的计算
iSTO 设 A 是 { 0 ,1 } 上 倒 数 第 三 个 符 号 为 1 的 所 有 字 符 串 组 成 的 语 言 ( 例如 ,
000100 在 A 中 ,而 0011 不 在 A 中)。图 1 - 17 所 示 的 4 - 状态 NFA iV2 识别 A 。
—
0,
图 1- 1 7 识 别 A 的 NFA N 2
-
假设在图 1 17 的机器 iV2 中 ,在从 q2 到 % 和从 % 到 % 的箭头上的标号中添加 e 。
亦即 ,这两个箭头的标号是 0 、 1 、 e ,而不仅仅是 0 、 1。 在做了这样的改动之后 , iV2 能
_
-
识别什么样的语言呢?试试修改图 1 18 中的 DFA ,使它也能识别这个语言。 ■
-
考虑图 1 19 中的 NFA iV3 , 它的输入字母表 { 0 } 由一个符号组成 。只含一
个符号的字母表称为一元字母表 ( unary alphabet)。
这台机器说明了有 e 箭头的方便之处 。它接受所
有形如 W 的字符串,其中々是 2 或 3 的倍数 ( 注意上
标表示重复 ,不是数值的指数 )。例如 ,N3 接受字符
00 ,000 ,0000 或 000000 ,而不接受 0 和 00000。
串 e,
考虑该机器的运行方式 : 开始时猜想是要验证 2
的倍数还是 3 的倍数 ,从而分支到上面的循环或下面
的循环 ,然后验证猜想是否正确 。当然 ,可以用一台
没有 e 箭头的机器 ,甚至是一台完全没有任何非确定
性的机器代替这台机器 。 但是 ,对于该语言这台机器
是最容易理解的 。
-
图 1 2 0 给 出 了 NFA 的另一个例子 。
运行这台机器 ,将会看到它接受字符串 e ,a , baba
和 baa ,而不接受字符串 b,bb 和 babba。 在后面我
们会用这台机器阐明把 NFA 转换成 DFA 的过程 。 麵
1.2. 1 非确定型有穷自动机的形式化定义
图 1 - 20 NFA N 4
非确定型有穷自动机的形式化定义和确定型有穷
自动机的形式化定义类似 ,它们都有状态集 、 输人字母表 、转移函数 、 起始状态以及接受状
态集 。然而 ,它们在本质上是不同的—转移函数的类型不同 。在 DFA 中 ,转移函数取一
个状态和一个输入符号 ,产生下一个状态。在 NFA 中,转移函数取一个状态和一个输入符
号或者空串 ,产生可能的下一个状态的集合。为了书写这个形式化定义 ,需要引入某个额外
的符号 ,对任意的集合 Q,记 P( Q) 为 Q 的所有子集组成的集合 。这里称 P( Q) 是 Q 的幂
集 ( power set )。对任意的字母表 2, 把 2 U { e }记作 S 。现在可以容易地写出 NFA 中这种类
型的转移函数的形式化定义 ,它是 & QX 奚 - P( Q)。下面给出 NFA 的形式化定义。
1.Q 是 有 穷 的 状 态 集 ; ^
非 确 定 型 有 穷 自 动 机 是 一 个 5 元 组 (Q ,
H % ,F ),其 中
—
2 . 2 是 有 穷 的 字 母 表;
3.5: QX 2£ P( Q) 是 转 移 函 数 ;
4.g0 G Q 是 起 始 状 态 ;
5.FGQ 是 接 受 状 态 集 。
N l 的形式化描述是 ( Q ,2 ,5 ,9 l ,F), 其中
.
1 Q ,
{ q1%,
%},
Q2
1 },
2.2 ={ 0 ,
3.d 由下表给出 :
o
9i i <7 i } 92 ) 0
?2 0 W3 }
93 0 U4 } 0
94 } { 94 } 0
4.qx 是起始状态 ,
5 . F = { g4 } 0
2 ,5,
NFA 计算的形式化定义也和 DFA 计算的形式化定义类似 。设 JV =( Q , %,F) 是
一台 NFA , 是字母表 2 上的一个字符串。如果能把 w 写成 w = …知 ,这里每一个
•••,
M 是I 的一个成员 ,并且存在 Q 中的状态序列 ) , , 广m 满足下述 3 个条件 :
r0 = q0
2 . r,- 4- 1 G 5 ( rf- 9 3;
,
.
+ 1 ) ,i = 0 ,1 , ••,m
參
_^ ^
3. rm GF
则称 iV 接 受 w o
条件 1 说机器从起始状态开始 。条件 2 说状态 n+ 1 是当 iV 在 状 态 读 到 3/ f + i 时允许
的下一个状态 。注意到 5( ,3;
,+ 1 ) 是允许的下一个状态的集合 ,所以是这个集合的
H(?Q ,
证明设 iV =( Q, F) 是识别语言 A 的 NFA ,要构造一台 DFAM 识别 A 。在
给出完整的构造之前 ,先考虑比较容易的情况 ,假设 N 没有 e 箭头 ,以后再把 e 箭头考虑
进来 。
,)
构造一台识别语言 A 的 D F A M = ( Q\ S ,S\ q0 ,F
/
o
1. Q' = P( Q) 0
含义是 :对 i? 中的所有元素 r 集合 5( r,
a ) 的并集 。
。
3. 9 一 { % }
0
M 开始时所在的状态对应于只含 IV 的起始状态的集合 。
4. 尺包含 iV 的一个接受状态 }
如果此时在 iV 的可能状态中有一个接受状态 ,那么机器 M 接受 。
现在考虑 e 箭头 ,为此再引人一位记号 。对于 M 的任意一个状态 R ,定义 £ ( /? ) 为从 :
R 的成员出发只沿着 e 箭头可以达到的状态集合 ,包括 i? 本身的所有成员在内 。形式地 ,
对于尺 ,令
:
£ ( 尺)= { g|从 R 出 发 沿 着 0 个 或 多 个 箭 头 可 以 到 达 g }
然后修改 M 的转移函数 ,使得在每一步之后 ,在沿着 e 箭头可以达到的所有状态上也放上
: a )) 代替 5( r,
手指 。用 £ (5( r ,
y(J? ,
a ) 能产生这个效果 。于是
^
a )={ g e Q
| 存在 尺,使得 q e E(8( r 9 a ))}
此外还需要修改 M 的起始状态 ,使得开始时把手指移到从 iV 的起始状态出发沿着 e
箭头可以到达的所有状态上 。将〆o 改成 :
({ % }) 能产生这个效果 。 这样就完成了模拟
NFA iV 的 DFA M 的构造 。
M 的构造显然是正确的 。在计算的每一步 ,M 进入的状态明显地对应于 iV 此时可能
处于的状态子集 。 证毕 。 ■
_
a
b,
M 3
于从 1 出发沿着 e 箭头能够到达的所有状态加上 1 本身 。 有 一 个 e 箭 头 a,
b
从 1 到 3 , 故 E({ 1 })= { 1 ,
3 }。新 的 接 受 状 态 集 是 所 有 包 含 iV4 接 受 状
图 1- 21 NFA N4
态 的 状 态 子 集 ,即 {{ 1 } ,
{ 1, { 1,
2 }, 3 }, 2 ,3 }}。
{ 1,
最 后 ,确 定 D 的 转 移 函 数 。 D 的任一个状态遇到输入 a 时 转 到 一 个 地 方 ,遇 到 输 人 b
时转到一个地方 。用 几 个 例 子 说 明 安 置 D 的转移箭头的过程 。
由 于 在 iV4 中 ,状态 2 遇 到 输 入 a 时转到 2 和 3 , 并且从 2 或 3 不能沿着 箭头走得更
远 ,所以在 D 中 ,状态 { 2 } 遇到输人 a 转 到 { 2 ,3 }。 在 iV4 中 ,状 态 2 遇 到 输 人 b 时 只
能转到状态 3 , 并且不能从 3 沿 着 e 箭头走得更远 ,所 以 在 D 中 ,状态 { 2 } 遇到输入 b 时
^
转到状态 < 3} 0
{3}
图 1- 2 2 与 NFA N 4 等 价 的 DFA D
通过观察到没有箭头射入的状态 { 1 } 和 2 },可 以 对 这 台 机 器 进 行 简 化 ,删 掉 这
< 1,
两 个 状 态 不 会 影 响 机 器 的 性 能 。这样做可以得到图 1 23 。
-
a,
b
{3} 0
{21 K (2,3)
-
图 1 23 删掉不需要的状态后得到的 DFAD
36 第一部分自动机与语言
1.2 . 3 在正则运算下的封闭性
现 在 回 到 在 1 . 1 节 中 开 始 的 正 则 语 言 类 在 正 则 运 算 下 的 封 闭 性 ,目 标 是 证 明 正 则 语 言
在 经 过 并 、 连 接 以 及 星 号 运 算 后 仍 是 正 则 语 言。当 时 由 于 处 理 连 接 运 算 太 复 杂 ,放 弃 了 证
明 的 打 算 。使 用 非 确 定 性 能 使 证 明 容 易 许 多。
首 先 ,再 次 考 虑 在 并 运 算 下 的 封 闭 性 。前 面 在 证 明 并 运 算 下 的 封 闭 性 时 ,使 用 笛 卡
尔 积 构 造 的 同 时 ,非 确 定 性 地 模 拟 了 两 台 机 器 。 现 在 用 一 个 新 的 证 明 来 说 明 非 确 定 性 技
术 。重 新 看 看 原 来 在 1 . 1.5 中 的 证 明 可 能 是 值 得 的 ,这 能 够 让 发 现 新 的 证 明 容 易 、 直 观
许 多。
fcbtehtlfcfea 正则语言类在并运算下封闭。
AiUA 2 是 正 则 的 。想 法 是 对 Ai * A 2
证 明 思 路 有 两 个 正 则 语 言 Ai 和 A 2 , 要 证 明
取两台 NFA M 和 N2 ,并 把 它 们 合 并 成 一 台 新 的 NFA N。
^
当 iVi 或 ] 接 受 输 入 时 ,机 器 iV 应 该 接 受 这 个 输 入 。新 机 器 有 新 的 起 始 状 态 ,它 用
e 箭 头 分 支 到 原 机 器 的 起 始 状 态 。新 机 器 用 这 种 方 式 非 确 定 性 地 猜 想 两 台 原 有 机 器 中 哪 一
台 接 受 这 个 输 人 。如 果 它 们 两 台 中 有 一 台 接 受 ,那 么 N 也 接 受 。
-
图 1 24 给岀了这个构造 。在图的左部 ,大圆圈表 N
oo
示机器 iVi 和 iV2 的起始状态以及接受状态 ,小圆圈表 A
示其余的状态 。 在图的右部 ,说明了如何通过增加转
移箭头把 iVi 和 iV2 合并成 iV。
oo
o
。
o
证 明 设 识 别 AH 并且
,
iV2 =( Q2 ,2 52 ,
g2 ,F2 ) 识 别 A 2 , 构造识别八! 々〗 乂
的 N =( Q ,
2,d,
qQ ,
F) 0
1. Q H U U Q U C k o
OD 0
^
iV 的 状 态 是 iVi 和 iv2 的 所 有 状 态 ,再 加 上 一 个 新
的 起 始 状 态 %。
图 1- 24 识别 AiUAz 的
2. 状 态 % 是 iV 的起始状态 。
N F A N 的构造
3. 接 受 状 态
^
iV 的接受状态是 Ni 和 ] 的所有接受状态 。 因此 ,只要 iVi 接受或 iV2 接 受 ,N 就
接受。
4. 定 义 5 如 下 :对 每 一 个 和 每 一 个
51 ( q a ) q : Q i
9
^
8 ( q ,a ) = <
{% ,
^
52 ( q ^ a ) q Qz
% } 尸 且 a= e
10 g= 且 a 关e ■
现 在 证 明 正 则 语 言 类 在 连 接 运 算 下 的 封 闭 性 。回 想 早 些 时 候 在 没 有 非 确 定 性 的 情 况
下 ,要 完 成 这 个 证 明 是 有 一 定 困 难 的。
正则语言类在连接运算下封闭。
证 明 思 路 有 两 个 正 则 语 言 八!和 A2 , 要 证 明 A °A 2 是 正 则 的 。想 法 是 取 两 台 NFA
和 iV2 分 别 识 别 A! 和 A 2 , 像 在 证 明 并 运 算 封 闭 时 所 做 的 那 样 ,把 它 们 合 并 成 一 台 新
第1 章 正 则 语 言 37
◎
在一个接受状态 ,就允许 iv 非确定性地分支进入 ->o ° ◎ KD , o
° ◎/
I
O O «
N 2 o 这意味着它已经找到输入的前一段 ,这一段
©
/
J v
o
N
构成 Ai 中的一个字符串 。 iV 的接受状态就是 iV 2
的接受状态 。因此当输入可以被分成两段并且第 ◎
- o ° g-i ©J
^
o o
一段被 iVi 接受 ,第二段被
接受时 ,N 接受 。 ] o
可以认为 N 非确定性地猜想在什么地方把输入串
分开 。 图 1 25- 识 别 Ai 。糸 的 iV 的 构 造
证 明 设 而, 识 别 Ah 并且 iV2 =( Q2 ,2,52 ,
( F2 ) 识 别 A2 , 构
?2 ,
造识别 A! 。A 2 的 / =( 0 ,2 ,5,
^
%,巧 )。
1. Q = Q i U Q2 o
iv 的状态是 iVi 和 iV2 的所有状态 。
2. N 的起始状态是 Ni 的起始状态 % 。
3. N 的接受状态集是 iV 2 的接受状态集 F2 。
4. 定 义 5 如 下 :对 每 一 个 和 每 一 个 e ,
( g,
a) 9 6 Qi 且 g 茫 Fi
汐1 ( q , g 6 Fi K a e
S( q a )= <
a)
^
^ S i ( q , a ) U i g2 }
. 82 ( q ,
a)
q
^ Fi 且 a =e
^kuWM
l §
证明思路有一个正则语言
正则语言类在星号运算下封闭。
Ah 要证明
;
A 也是正则的 。 取一台识别 A 的 NFAW ,
N
-
如图 1 26 所示的那样修改它 ,使其识别 A 。 : o o
@
©
只要能把输人分成若干段 ,并且 M 接受每一 o
^
证明设 % , ) 识别 An 构造识别 Af 的 iV =( Q,
, %,F)。
1.Q = { g0 } UQi 0
2.g0 是新的起始状态 。
38 第一部分自动机与语言
3. F = { q0 ) 0
接受状态是原有接受状态加新的起始状态 。
4. 定义 5 如 下 :对 每 一 个 和 每 一 个
d\ ( q ^ a ) Q\ M
且a
.
^
q : F\
d\ ( q ^ a )
j 5i ( 9 ,
a ) U { g1 }
Fi
^ e
^ ? ,a ) =
((
}
q
^ gF \ SL a = e
且 a= e
尸 0
0 9= 9 且 。
1.3 正则表达式
在算术中可以用运算符 + 和 X 来构造表达式 ,如 (5 +3) X 4 0 类似地 ,可 以 用 正 则 运
算符构造描述语言的表达式 ,称 为 正 则 表 达 式 。例如 :
( 0 U 1 )0 *
上面那个算术表达式的值是 32 , 而正则表达式的值是一个语言。在这个例子中 ,正则表达
式的值是由一个 0 或一个 1 后面跟着任意个 0 的所有字符串组成的语言。仔 细 地 分 析 这 个
表达式的各部分 ,可以得到这个结果 。首先 ,符号 0 和 1 是集合 { 0 } 和 { 1 } 的 缩 写 ,因
此 ( 0 U 1 ) 就 是 ({ 0 } U < 1 })。这部分的值是语言 { 0 ,
1 }。第 2 部 分 0 * 就 是 { 0 } * ,它的
值是由所有包含任意个 0 的字符串组成的语言 。其 次 ,和代数中的符号 X
。
样 ,在 正 则 表
达式中常常省略连接符 。因 此 ,(o u i )o 实 际 上 是 ( o u i h o 的 缩 写 。连接运算把来
* *
—
自这两部分的字符串接在一起得到整个表达式的值 。
正则表达式在计算机科学各种应用中有着重要的作用。 在 涉 及 文 本 的 应 用 中 ,用 户 可
能要搜索满足某种模式的字符串。正则表达式提供了描述这种模式的有力方法 。应用程序
( 如 UNIX 中 的 awk 和 grep ) 、 现代程序设计语言 (如 Perl ) 以 及 文 本 编 辑 器 都 提 供 了 用
正则表达式描述模式的机制 。
正则表达式的另一个例子是
(0 U 1
它从语言 ( 0 U 1 ) 开始 ,并 且 运 用 运算 。这个表达式的值是由 0 和 1 的所有字符串组成
* ”
的 语 言。若 2= { 0 ,
1 },则 可 以 用 2 作为正则表达式 ( 0 U 1 ) 的 缩 写 。更 一 般 地 讲 ,设 2
是任意的字母表 ,正则表达式 2 描 述 该 字 母 表 上 所 有 长 度 为 1 的 字 符 串 组 成 的 语 言 ,而
2 * 描述该字母表上的所有字符串组成的语言 。类似地 ,2 * 1 是 包 含 着 所 有 以 1 结 尾 的 字
符串的语言。语言 (02 * ) :* i ) 由所有以 0 幵始或者以 1 结尾的字符串组成。
ua ■
1.3 . 1 正则表达式的形式化定义
称 R 是 一 个 正 则 表 达 式 ,如 果 尺 是
1. a 这 里 a 是 字 母 表 2 中 的 一 个 元 素 ;
,
第J 章 正 则 语 言 39
2. e ;
3. 0
4. ( i? i Ui?2 ), 这 里 i? i 和 i?2 是 正 则 表 达 式 ;
5. ( i? i 。i?2 ),这 里 尺1 和 尺2 是 正 则 表 达 式 ;
6. ( R { ) , 这 里 私 是 正 则 表 达 式 。
在 第 1 条 和 第 2 条 中 ,正 则 表 达 式 a 和 e 分 别 表 示 语 言 { a } 和 { e }。在 第 3 条 中 ,正
则 表 达 式 0 表 示 空 语 言 。在 第 4 、 5 、 6 条 中 ,正 则 表 达 式 分 别 表 示 语 言 尺!和 沁 做 并 运 算
或 连 接 运 算 或 者 仏 做 星 号 运 算 得 到 的 语 言。
不要混淆正则表达式 e 和 0 。表达式 e 表示只包含一个字符串 空串的语言 ,而 0
表示不包含任何字符串的语言 。
表面上看这里有用其自身定义正则表达式的危险 。要是果真如此 ,那么这是一个循环
定义 ( circular defination ),它 将 是 无 效 的 。 但 是 , 和 总 是 比 i? 小 ,因此 ,实际上
是在用较小的正则表达式定义较大的正则表达式 ,从而避免了循环 。这种类型的定义称为
归纳定义 ( inductive defination ) 0
^
6. (222) * ={ 加|加的长度为 3 的整数倍 }。
7. 0 l U l 0 ={ 01 ,10 } o
8. 02 * 0 U 12 *lU 0 Ul ={ w k 以相同的符号开始和结束 }。
9. ( OUe )l = 01 U 。
”
* *
10. ( 0 Ue )( lUe )= { e ,
0,l,
01 } o
11. 1 0 = 0 。
*
把空集连接到任何集合上得到空集 。
12. 0 * = { e } 0
星号运算把该语言中的任意个字符串连接在一起 ,得到运算结果中的一个字符串。 如
果该语言是空集 ,星号运算能把 0 个字符串连接在一起 ,得到唯一的空串 。 嫌
© 字 符 串 的 长 度 是 指 它 含 有 的 符 号 的 个 数。
40 第一部分自动机与语言
例如 ,如果尺 = 0 , 那 么 U i? )= { 0 },而 U 0 )= 0 。
在设计程序设计语言的编译程序中 ,正则表达式是个很有用的工具 。 程序设计语言中
能包括小数部分和 ( 或) 正负号的数值常量可以描述成下述语言的一个成员
( + -
^
的基本对象称为单字 ( token ),如变量名和常量 ,它们可以用正则表达式描述 。例如 ,可
U Ue)( D+ UD + .D * UD * • D+ )
其中 D = { 0 ,
1,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 } 是十进制数字字母表 。几个生成的字符串例子如 :72 ,
3.14159 , 7. 和一 .01 。
+
一旦程序设计语言中单字的语法用正则表达式描述出来 ,自动系统便能够生成词法分
析器 ( lexical analyzer ),它是编译程序的一部分 ,用来在开始阶段处理输人程序 。
1.3 . 2 与有穷自动机的等价性
就描述能力而言正则表达式和有穷自动机是等价的 。 这个事实是相当出乎意料的 ,因为
表面上看有穷自动机和正则表达式是很不相同的。然而 ,任何正则表达式都能够转换成能识
别它所描述语言的有穷自动机 ,反之亦然 。回忆一下正则语言是有穷自动机识别的语言。
一 个 语 言 是 正 则 的 ,当 且 仅 当 可 以 用 正 则 表 达 式 描 述 它 。
这个定理有两个方向 。 把每个方向叙述成一条单独的引理并加以证明 。
如 果 一 个 语 言 可 以 用 正 则 表 达 式 描 述 ,那 么 它 是 正 则 的 。
证明思路假设正则表达式 R 描述某语言 A 。 要说明怎样把 R 转换成一台识别 A 的
NFA 。根据推论 1.20 , 如果一台 NFA 识别 A ,则 A 是正则的 。
证明把 i? 转换成一台 NFA iV 。考虑正则表达式定义中的 6 种情况 。
1. R = a ,这里 ae 2。 那么,L( R)= { a } 下述 NFA 识别 L( i? ):
9
00 -
注意到这台机器符合 NFA 的定义 ,但不符合 DFA 的定义 ,因为它的状态不是对每一
个可能的输入符号都有射出的箭头 。 当然这里也能够给出等价的 DFA ,但是 ,现在有
NFA 就可以了 ,而且它更容易描述一些 。
形式地表示 ,N =( { q l , q2 } { q2 } 其 中 5 的 定 义 如 下 :若 则
d ql ,
( a = { <?2 },
) ,
5O 6 = 0 。
)
9
^
2. R= e 那么 LCR )= { e }。下述 NFA 识别
,
第J 章 正 则 语 言 41
-Q
形式地表示 , N =({ q l },l ,S ,qlAql )), 其中对所有的 r 和 6 , d( r 9 b )= 0 o
3. R= 0 9 那么 LO? )= 0 。下 述 NFA 识别 L( i? ):
对 后 3 种情况 ,使用正则语言类在正则运算下封闭的证明中所给出的构造 。 换 句 话
说 ,由 识 别 仏 和 沁 (在 情 况 6 中 只 有 私 ) 的 NFA 构 造 出 关 于 i? 的 NFA ,从而得到需
要 的 NFA。 藝
ab
abUa
>0
(ab U a)* -
-
在 图 1 28 中 ,正则表达式 UUb) * aba 被 转 换 成 一 台 NFA。有 几 小 步 没
有在图中给出 。 》
现在回到证明定理 1.28 的 另 一 个 方 向 。
如 果 一 个 语 言 是 正 则 的 ,则 可 以 用 正 则 表 达 式 描 述 它 。
42 第一部分自动机与语言
-O ©
^
a
b - o^o
>
aUb
b
©
>
(aUb)
aba
(aUb)*aba
b
图 1- 2 8 根 据 正 则 表 达 式 (a U b ) * a b a 构造一台 N F A
证 明 思 路 需 要 证 明 :如 果 语 言 A 是 正 则 的 ,则 有 一 个 正 则 表 达 式 描 述 它 。由 于 A
是 正 则 的 ,故 它 被 一 台 DFA 接 受 。 下 面 给 出 一 个 把 DFA 转 换 成 等 价 的 正 则 表 达 式 的
过 程。
这 个 过 程 分 两 部 分 ,这 里 要 使 用 一 种 称 为 广 义 非 确 定 型 有 穷 自 动 机 的 新 型 有 穷 自 动
机 ,简 记 作 GNFA 。首 先 说 明 如 何 把 DFA 转 换 成 GNFA ,然 后 说 明 如 何 把 GNFA 转 换 成
正 则 表 达 式。
广 义 非 确 定 型 有 穷 自 动 机 就 是 非 确 定 型 有 穷 自 动 机 ,只 是 转 移 箭 头 可 以 用 任 何 正 则 表
达 式 作 标 号 ,而 不 是 只 能 用 字 母 表 的 成 员 或 e
ab* aa
作 标 号 。GNFA 读 输 入 符 号 段 ,而 不 必 像 普
通 NFA
输人符号
—, 次 只 能 读 一 个 符 号 。GNFA 读 一 段
沿 着 连 接 两 个 状 态 的 箭 头 移 动, abuba
这段输人符号正好是那个箭头上的正则表达 0 ( aa ) *
式 描 述 的 一 个 字 符 串。GNFA 是 非 确 定 性 的 ,
从而可能有好几种不同的方式处理同一个输
b b*
人 串。如 果 它 的 处 理 能 够 使 得 GNFA 在 输 人
ab
结 束 时 进 人 一 个 接 受 状 态 ,则 它 接 受 它 的 输
-
入 。图 1 2 9 给 出 了 一 个 GNFA 的 例 子。
为 方 便 起 见 ,要 求 GNFA 具 有 符 合 下 述 -
图 1 29 一台广义非确定型有穷自动机
条件的特殊形式:
• 起 始 状 态 有 射 到 其 他 每 一 个 状 态 的 箭 头 ,但 是 没 有 从 任 何 其 他 状 态 射 人 的 箭 头 。
• 有 唯 一 的 一 个 接 受 状 态 ,并 且 它 有 从 其 他 每 一 个 状 态 射 人 的 箭 头 ,但 是 没 有 射 到
第1 章 正 则 语 言 43
任 何 其 他 状 态 的 箭 头 。 此 外 ,这 个 接 受 状 态 与 起 始 状 态 不 同 。
• 除 起 始 状 态 和 接 受 状 态 外 ,每 一 个 状 态 到 自 身 和 其 他 每 一 个 状 态 都 有 一 个 箭 头 。
能 够 很 容 易 地 把 DFA 转 换 成 这 种 特 殊 形 式 的 GNFA 。 添 加 一 个 新 的 起 始 状 态 和 一 个
新 的 接 受 状 态 ,从 新 起 始 状 态 到 原 起 始 状 态 有 一 个 e 箭 头 ,从 每 一 个 原 接 受 状 态 到 新 接 受
状 态 有 一 个 e 箭 头 。如 果 一 个 箭 头 有 多 个 标 记 ( 或 者 在 两 个 状 态 之 间 有 多 个 方 向 相 同 的 箭
头),则 把 它 替 换 成 一 个 标 记 着 原 先 标 记 的 并 集 的 箭 头 。 最 后 ,在 没 有 箭 头 的 状 态 之 间 添
加 标 记 0 的 箭 头 。最 后 一 步 不 会 改 变 识 别 的 语 言 ,因 为 标 记 0 的 转 移 永 远 不 能 被 使 用。从
现 在 起 ,假 设 所 有 的 GNFA 都 是 这 种 特 殊 形 式 的 。
下 面 说 明 如 何 把 GNFA 转 换 成 正 则 表 达 式 。设 这 台 GNFA 有 6 个 状 态 。由 于 GNFA
必 须 有 一 个 起 始 状 态 和 一 个 接 受 状 态 ,并 且 这 两 个 状 态 是 不 相 同 的 ,因 此 々>2。如 果 々>
2 , 则 构 造 一 台 有 々 一 1 个 状 态 的 等 价 GNFA 。对 新 的 GNFA 重 复 这 一 步 骤 直 至 把 它 化 简
到 只 有 2 个 状 态 。 当 々= 2 时 ,这 台 GNFA 只 有 一
个 从 起 始 状 态 到 接 受 状 态 的 箭 头 。这 个 箭 头 的 标 记
3 状态
DFA
5 狀1态
GNFA - 4 状态
GNFA - -
就 是 等 价 的 正 则 表 达 式 。 例 如 ,图 1 - 3 0 中 给 出 了
把一台有 3 个状态的 DFA 转 换 成 等 价 的 正 则 表 达
式的各个阶段。
正则
表达式 -
2 状态
GNFA -
3 状态
GNFA
关 键 的 步 骤 是 当 k> 2 时 构 造 等 价 的 少 一 个 状
态 的 GNFA 。 为 此 ,挑 选 一 个 状 态 ,把 它 从 机 器 上 图 1- 3 0 把 DFA 转换成正则
删 掉 ,并 且 修 改 留 下 来 的 部 分 使 其 仍 然 识 别 相 同 的 表达式的典型阶段
语 言。可 以 挑 选 任 意 一 个 状 态 ,只 要 它 不 是 起 始 状 态 或 接 受 状 态 ,当 纟>2 时 ,一 定 存 在
这 样 的 一 个 状 态 。把 这 个 被 删 去 的 状 态 称 为 t p 。
删 去 后 ,要 修 改 每 一 个 留 下 来 的 箭 头 上 标 记 的 正 则 表 达 式 。新 标 记 中 加 进 了 失 去
的 计 算 ,从 而 弥 补 了 由 于 删 去 带 来 的 损 失 。从 状 态 % 到 状 态 %. 的 新 标 记 是 描 述 使 机 器
从 % 直接到 或 者 通 过 gnp 到 % 的 所 有 字 符 串 的 正 则 表 达 式 。图 1 3 1 说 明 了 这 个 方 法 。 -
~ %
%,
% Q ( A ) ( A ) * ( A ) U ( 尺4 )
0
>
R2
原图 修改后
-
图 1 31 构 造 等 价 的 少 一 个 状 态 的 GNFA
在 原 机 器 中 ,如 果
1. 从 % 到 {)
有一个标记为私的箭头,
2. 从 p 到 它 自 己 有 一 个 标 记 为 尺2 的 箭 头,
3 从 到 A 有一个标记为尺3 的箭头,
4. 从 A 到I 有 一 个 标 记 为 的 箭 头 ,
那 么 在 新 机 器 中 ,从 % 到 的箭头的标记为
44 第一部分自动机与语言
_
( i?i ) o?2 ) * o?3 ) u ( i?4 )
对从任一状态 i 到任一状态 ( 包 括 在 内) 的 每 一 个 箭 头 进 行 这 样 的 改 动。
新的机器仍然识别原来的语言。
证明现在来形式地实现上述想法 。 为便于证明,首先形式地定义引人的新型自动 ~
—
机 。除转移函数外 ,GNFA 与非确定型有穷自动机类似 。 GNFA 的转移函数的形式为
(Q — Waccept }) X ( Q 一
Wstart }) 尺
符号咒是字母表 2 上的全体正则表达式组成的集合 , 和 9a pt 分别是起始状态和接受
^ st art
状 态 。如 果 则 从 状 态 % 到 状 态 ^
的 箭 头 以 正 则 表 达 式 R 作为它的标记 。转
移函数的定义域为 (Q — kaeeept }) X ( Q - { g
}),这是因为除了 gaeeept 没有射出的箭头和
没有射人的箭头 ,每一状态到另一状态都有一个箭头连接 。
n
广 义 非 确 定 型 有 穷 自 动 机 (Q,
~ gstart accept
) 是一个 5 元 组 ,其中 :
1. Q 是有穷的状态集 。
―
2. 2 是输入字母表 。
3. S : -
( Q { gaccept }) X ( Q { - }) 尺 是 转 移 函 数 。
^
start
4. gstart 是 起 始 状 态 。
-
5 teeept 是 接 受 状 态 。
如果字符串 W 可写成 W = W2 參
• IVk ,这里每一个叫 62
*
,并且存在状态序列 % ,
•••,
q\ , % ,使得 :
1. q0 = q 是起始状态 。
2. qk = qaccept 是接受状态 。
3. 对每一个 f ,W i L( Ri ), 其中 i ,
% ),即 是 从 i 到 的 箭 头 上 的
表达式 。
则称这台 GNFA 接受字符串
现在回到引理 1.32 的证明。设 DFAM 识别语言 A。通过添加一个新的起始状态 、 一个
新的接受状态以及一些必要的转移箭头 ,把 M 转换成一台 GNFA G。过程 CONVERT( G )
取一台 GNFA 作为输入 ,返回一个等价的正则表达式 。该过程采用递归方式 ,即它要调
用它自己 。由于该过程只是在要处理少一个状态的 GNFA 时才调用它自己 ,故不会出现
无穷循环 。当 GNFA 只有两个状态时 ,就用非递归的方式进行处理。
CONVERT( G ):
1. 设々是 G 的状态数 。
—
2. 如果々= 2 , 则 G 定是由一个起始状态 、一个接受状态和连接这两个状态的箭头
组成 ,设箭头上的标记为正则表达式尺 。
返回这个表达式 R 。
3. 如果々>2 ,则任取一个状态
q accept ),其中
P
6 Q —{ gstait , _ y,
<?accept },并且令 G'为 GNFA( Q 2, 、
^ start 9
,
-
^
Q =Q rip }
3
1)
( ) R R\ = 8 (.q i , q j ) o
第J 章 正 则 语 言 45
4. 计算 CONVERTXG 。 且返回这个值 。
下 面 证 明 CONVERT( G ) 返回的值是正确的 。
对 任 意 的 GNFAG,CONVERT( G ) 等价于 G。
对 G 的状态数々作归纳证明 。
归 纳 基 础 :证明对于々= 2 , 断 言 为 真 。若 G 只有 2 个 状 态 ,它只可能有 1 个箭头 ,从
起始状态到接受状态 。这个箭头上标记的正则表达式描述了能使 G 到达接受状态的全部字
符 串。因而这个表达式等价于 G。
归纳步骤 :假设断言对于 6 — 1 个 状 态 为 真 ,利 用 这 个 假 设 ,证 明 对 于 々 个 状 态 断 言
为真 。 首先 ,证 明 G 和 GH只别相同的语言。 假 设 G 接 受 输 入 ;,那么在计算的一个接受
分支中 ,G 依次进人下列状态 :
^ ,9\ A,A
start ,… ,Accept
^
如果被删去的状态 p 不在这些状态中 则显然以也接受 W 。这是因为标记 & 的 箭 头
的每一个新正则表达式包含原有正则表达式作为并集的一部分 。
如 果 出 现 在 这 些 状 态 中 ,则 删 去 这 个 状 态 序 列 中 所 有 的 tp ,得 到 G'的 一 个 接 受
计算 。设状态 % 和 之间夹着若干个连续的 @ ,则它们之间的箭头上的新正则表达式描
~ ^
述在 G 中使 t 经 过 gHp 到 % 的 所 有 字 符 串 。因 此 G 接受 W 。
另一方面 ,假设以接受输入 w 。由于以中任意两个状态 t 和 %. 之间箭头上的正则表
达式描述在 G 中使1 直 接 或 经 过 到 达 的所有字符串组成的集合 ,故 G 也一定接受
w 。 于是 ,G 和以等价 。
~
归纳假设表明 ,当算法对输人以递归地调用它自己时 ,由于以有々一 1 个 状 态 ,因 此
得到一个等价于以的正则表达式 ,从而这个正则表达式也等价于 G ,得证算法是正确的 。
这就完成了断言 1.34 、引 理 1.32 和定理 1.28 的 证 明 。 職
HKSi -
本 例 从 一 台 3 状 态 的 DFA 开 始 ,转换成等价的正则表达式的步骤如
-
图 1 33 所 示 。 黴
46 第一部分自动机与语言
b b a*b(aub)*
a,
b aub
2
⑻ (b) ⑹ (d)
图 1- 3 2 把 一 台 2 - 状 态 的 DFA 转换成等价的正则表达式
aaUb
a(aaU b)*
2
-
" 0
(a(aa U b)*ab U b)(( baU a )(aa U b)*abU bb)*((baU a)(aaUb)* Ue) U a(aaUb)*
(e )
图 1- 3 3 -
把 一 台 3 状 态 的 DFA 转换成等价的正则表达式
1.4 非正则语言
要了解有穷自动机的能力 ,必须同时了解它们的局限性 。 这一节将讲述如何证明某些
语言不可能用有穷自动机识别 。
|n>0 }。 如果想找一台识别 B 的 DFA ,会发现这台机器看起来需要
设语言 B = { 0”l”
记住至此它在输入中读到了多少个 0 。由于 0 的个数没有限制 ,因此机器将不得不记住无
穷多个可能 。但是 ,用有穷个状态不可能做到这一点 。
下面给出一种方法 ,用来证明像 B 这样的语言不是正则的 。由于 0 的个数没有限制 ,
上面给出的论证不是已经证明了 B 的非正则性了吗? 非也。这些看起来需要无穷存储的语
言并不意味着一定需要无穷的存储 。语言 B 确实是非正则的 ,但是另外一些语言看起来也
需要无穷多个可能 ,而实际上却是正则的 。例如 ,考虑字母表 2={ 0 ,
1 } 上的两个语言 :
$J t 正 则 语 言 47
C = { w|w 中 0 和 1 的 个 数 相 等 },
D ={ w|w 中 0 1 和 1 0 作 为 子 串 出 现 的 次 数 相 同 }
初 看 一 下 ,识 别 这 两 个 语 言 的 机 器 都 需 要 计 数 ,因 而 好 像 都 不 是 正 则 的 。 正 如 所 预 料
的 那 样 C 不 是 正 则 的 ,但 令 人 吃 惊 的 是 ,D 是 正 则 的 © ! 可 见 直 觉 有 时 可 能 会 把 我 们 带 入
歧 途 。 这 就 是 为 什 么 想 当 然 的 事 情 还 需 要 数 学 证 明 。本 节 将 说 明 如 何 证 明 某 些 语 言 不 是 正
则 的。
关于正则语言的泵引理
证 明 非 正 则 性 的 技 术 源 于 一 个 关 于 正 则 语 言 的 定 理 ,通 常 把 它 称 为 泵 引 理 ( pumping
lemma )。 该 定 理 指 出 所 有 的 正 则 语 言 都 有 一 种 特 殊 的 性 质。如 果 能 够 证 明 一 个 语 言 没 有
这 种 性 质 ,则 可 以 保 证 它 不 是 正 则 的。这 条 性 质 是 :语 言 中 的 所 有 字 符 串 只 要 它 的 长 度 不 小
于某个特定的值 泵 长 度 ( pumping length ),就 可 以 被 “抽 取”。 它 的 意 思 是 指 每 一 个 这
样 的 字 符 串 都 包 括 一 段 子 串 ,把 这 段 子 串 重 复 任 意 次 ,得 到 的 字 符 串 仍 在 这 个 语 言 中 。
( 泵 引 理 ) 若 A 是 一 个 正 则 语 言 ,则 存 在 一 个 数 p ( 泵 长 度) 使 得 ,如 果 s
是 A 中 任 一 长 度 不 小 于 的 字 符 串 ,那 么 s 可 以 被 分 成 3 段 , 满 足 下 述 条 件:
1. 对 每 一 个 xylz G A
2. b l >0
3.
回忆一下这里用的记号, M 表 示 字 符 串 s 的 长 度 ,y 是 ;个 连 接 在 一 起 ,/ 等
于
当 s 被 划 分 成: 时 ,: ^
r 和 z 可 以 是 e ,但 是 条 件 2 说 可 以 看 到 如 果 没 有 条 件
2 , 定 理 显 然 成 立 ,但 也 就 没 有 什 么 意 思 了。条 件 3 说:r 和 3/ 两 段 在 一 起 的 长 度 不 超 过 户 。
这 是 一 个 额 外 的 技 术 条 件 ,偶 尔 会 发 现 它 在 证 明 语 言 的 非 正 则 性 时 是 有 用 的 。关 于 条 件 3
的 应 用 见 例 1 . 3 9。
2 ,5,
证 明 思 路 设 M =( Q , %,F ) 是 识 别 A 的 DFA。令 泵 长 度 户 等 于 M 的 状 态 数 。
要 证 明 A 中 任 意 长 度 不 小 于 /> 的 字 符 串 5 可 以 划 分 成 3 段 且 满 足 定 理 中 的 3 个 条
件 。如 果 在 A 中 没 有 长 度 不 小 于 p 的 字 符 串 怎 么 办? 这 时 工 作 就 更 容 易 了 ,因 为 定 理 显
然 成 立 :如 果 没 有 这 样 的 字 符 串 ,则 显 然 对 所 有 这 样 的 字 符 串 ,3 个 条 件 都 成 立 。
若 sGA 的 长 度 不 小 于 /> ,考 虑 M 对 输 入 s 的 计 算 中 经 过 的 状 态 序 列 。它 从 起 始 状 态
开 始 ,然 后 到 % ,到 七 ,再 到 %。 一直到 s 结束进入状态 q u o 由于 s 属于 A ,
M 接 受 S ,因 此 %3 是 一 个 接 受 状 态 。
若 的 长 度 为《,则 状 态 序 列 % , g3 , 2 ,
%, 。
… , 的 长 度 为 W + l 。由 于 W 不 小 于
^
<?
沁. 故〃+ 1 大 于 M 的 状 态 数 P 。 因 此 , 在 这 个 序 列 中 一 定 有 重 复 岀 现 的 状 态 ,这 个 结
论 是 鵠 巢 原 理 ( pigeonhole principle ) 的 一 个 例 子 。 这 个 奇 特 的 名 字 源 于 下 述 很 明 显 的
事 实 :如 果 要 把 只 鸽 子 放 进 鸽 巢 , 而 鸽 巢 数 小 于 /> ,则 一 定 有 些 鸽 巢 里 将 不 止 有 1
只鸽子。
-
图 1 3 4 给 出 字 符 串 s 和 M 在 处 理 s 时 经 过 的 状 态 序 列 。状 态 % 重 复 出 现 。
见问题 1.53 。
48 第一部分自动机与语言
4 52 53 54 55 56
个 t 个 个 个 t
®
^ …^^ ^
%
图 1- 3 4 说明当 读 时 状 态 %重 复 的 例 子
:
现 在 把 5 划分成三段 X ,V 和 Z 。X 是 S 在 g 9 前 面 的 部 分 ,y 是 两 个 之 间 的 部 分 ,2:
是 S 的剩余部分 ,即第二个 % 以 后 的 部 分 。 因 此 ,:
T 把M
从 状 态1 带 到 g9 , y 把
^
从 %带回到 % ,Z 把 M 从 %带
到接受状态 913 。如图 1 35 所 示 。 -
现在来看看为什么这样划分 s 能满足规定的 3 个条 r、
、 :W 屬
件 。 假 设 对 输 入 运 行 M。已 知:r 把 M 从1 带 到 % , ,
然后第一个 把 它 从 % 带 回 到 % ,第 二 个 3 也 同 样 把 它
^
从 % 带回到 % ,接 着 2:把 它 带 到 <? 13 。由 于 %3 是 一 个 接
受状态 ,故 M 接 受 输 入 X3 0 。类 似 地 ,对 于 任 意 />0 ,
^
它将接受工y z 。当纟= 0 时 ,x y z = x z , 根据类似的理由
^ 图 1- 3 5
z 如何影响 M 的例子
r ,:
说 明 字 符 串: y 和
它也被 M 接受 。这就证实了条件 1。
由于 是 S 在状态 %出现的两个不同地点之间的部分 ,故可以看到 b l >o 。这 就 验 证
了条件 2。
/>
^
为了使条件 3 成立 ,确保 % 是序列中第一个重复的状态 。根据鸽巢原理 ,在序列的前
+ 1 个状态中必定有重复。因 此 ,\ ^ y \ < pQ
证 明 设 M= ( Q , w,
2 , 5, F) 是一台识别 A 的 DFA ,户是 M 的 状 态 数 。
2>户。又 设 n ,
…, +1 是
^
设 5 — 51 52 ••• 是 A 中长度为 的 字 符 串 ,这里 ; 在处理 5
的 过 程 中 进 入 的 状 态 序 列 ,因 而 该 序 列 的 长 度 为
^
P + lQ 根据鸽巢原理 ,在该序列的前 f + 1 个 元 素 中 ,一定有两个相同的状态 。设 第 1 个
72 + 1 ,不 小 于
是 r,,第 2 个 是 由 于 岀 现 在 序 列 的 前 p + 1 个 位 置 中 ,而且序列是从 n 开 始 的 ,故
有 此 时,令 工 二 以 … 一 1 , ~
:y = / …卜
5 1 以 及;2:
=心
由于 X 把 M 从 n 带到 r;
接受状态 ,故对于 M 接受:
^
,y 把 M 从 0 带到 G ,Z 把 M 从 带 到 +1 ,而 +1 是 一 个
r y z 。已 知 故 l 3H >0; 又已知 /<户+1,故|
:| <户。
~
于是 ,满足泵引理的 3 个条件 。
为了运用泵引理证明某个语言 B 不是正则的 ,首 先 假 设 B 是 正 则 的 ,以 便 得 出 矛 盾 。
根据泵引理 ,存 在 泵 长 度 使 得 B 中 所 有 长 度 为 /> 或 大 于 /> 的 字 符 串 都 可 以 被 抽 取 。其
^
次 ,在 B 中寻找一个字符串 5 , 它的长度为 p 或 大 于 /> 、 但不能被抽取 。最 后 ,证 明 s 不
能被抽取 。这要考虑把 s 划 分 成:r、 和 z 的 所 有 方 式 ( 如果方便的话 ,把 泵 引 理 中 的 条
证明。
假设相反 ,即 B 是正则的。令 /> 是由泵引理给出的泵长度 。选择 5 为字符串 0M
因为 s 是 B 的一个成员且 s 的长度大于 /> ,所以泵引理保证 s 可以分成 3 段 s = 使得 '
对 于 任 意 的 串: r y z 在 B 中 。下面考虑 3 种情况 ,说明这个结论是不可能的 。
1. 字符串 y 只包含 0 。在这种情况下 ,字符串 x y F 中的 0 比 1 多 ,从而不是 B 的成
员。违反泵引理的条件 1 ,矛盾 。
2. 字符串 只包含 1 ,这种情况同样给岀矛盾。
3. 字 符 串
^^ 既 包 含 0 也 包 含 1。在 这 种 情 况 下 ,字 符 串 中 0 和 1 的 个 数 可 能 相
等 ,但 是 它 们 的 顺 序 乱 了 ,在 0 的 前 面 出 现 1 。因 此 , 不 是 B 的成员 ,矛盾 。
这样 ,如果假设 B 是正则的 ,则矛盾是不可避免的 。因此 ,B 不是正则的。注意 ,可
以通过应用泵引理的条件 3 来排除第 2 种和第 3 种情况 ,进而简化该证明 。
在这个例子中 ,很容易找到字符串 因为 B 中 任 何 长 度 为 或 大 于 P 的字符串都符
合要求 。在下面两个例子中 ,s 的某些选择是行不通的 ,所以需要额外小心 。
设 0={ 加|加中 o ^
和 1 的个数相同 },用泵引理证明 c 不是正则的 。 证明采
■
用反证法 。
假设相反 ,即 C 是正则的 。令 p 是由泵引理给出的泵长度 。 和例 1.38
字 符 串 由 于 s 是 C 的一个成员且长度大于户 ,泵引理保证 s 可以分成三段
— 样 ,设 S 为
r y z 都在 C 中 。我们想证明这个结果是不可能的 。可是稍
使 得 对 于 任 意 的 字 符 串:
等一下 ,这个结果是可能的! 如果令:c 和 z 是空串 ,:
y 是 字 符 串 0P P ,则 :
ryz 中 0 和 1
的个数总是相等的 ,从而在 C 中 。所以 s 好像是可以被抽取的 。
在这里 ,泵引理中的条件 3 是有用的 。它规定在抽取 s 时 ,s 必须被划分使得| |<
P o 这样就限制了 s 的划分方式 ,使得能够比较容易地证明所选取的字符串 5 =
抽取 。这就给出了所希望的矛盾 。
:
可能被抽取的 。如果 I x y 丨 <户,则 :y 定只由 0 组成 ,从而 x:
y:
—
是不
y2:$ C。因 此 5 不 可 能 被
^
在这个例子中 ,选取字符串 s 比在例 1.38 中需要更加小心 。如果改为选择 .s =( 01 )N
就会遇到麻烦 。因为所需要的是一个不能被抽取的字符串 ,而这个 5 是能被抽取的 ,甚至
把条件 3 考虑在内也能被抽取 。想一想如何抽取它? 一个办法是令 x = e ,7 = 0 1 和 2=
1 ,, 那么对于 f 的每一个值 ,:
^
(Ol ) r y z G C。如果在第一次尝试寻找一个不能被抽取的字
符串时没有成功 ,不要丧失信心 。再来一次!
已知 B 是非正则的 ,由此可以得到另一个证明 C 是非正则的方法 。如果 C 是正则的 ,
则 CHO *
1 * 也是正则的 。理由是语言 0 * 1 * 是正则的 ,并且正则语言类在交运算下封闭
( 在 1.1 .5 节的脚注中证明了这条性质),但是 CHCT 1 *
等 于 B,并且由例 1.38 可知 B 是
非正则的 。
设 F= { WW l e { oa ) M o 用泵引理说明 F 不是正则的 。
s
^
假设相反 ,即 F 是正则的 。设 /> 是泵引理给出的泵长度 ,设 S 是字符串 M 10M。因为
是 F 的一个成员 ,并且 s 的长度大于户 ,故泵引理保证 s 能够被划分成 3 段 ,s = 满
足引理中的 3 个条件 。目标是证明这个结果是不可能的 。
条件 3 再一次是不可缺少的 。如果没有这一条 ,令:c 和 2 为空串 ,就能够抽取 5。 当
满足条件 3 时 ,证明如下 :因为 y 定 仅 由 0 组 成 ,故 茫 F。
—
50 第一部分自动机与语言
|x22|
: + p 但是〆+ /><〆+ 2户 ( /? )2
^
+1 = + 1 ,此外条件 2 意味 : y 不是空串 ,所以
/>
^
0
练习
Al. l 下图给出了两台 DFAA
^n
的状态图 。 回答下述关于这两台机器的问题 。
^和 ] 2
-( ► 孕1
b a,
b
%
M2
a. 它们的起始状态是什么? b. 它们的接受状态集是什么?
c. 对输入 aabb ,它们经过的状态序列是什么? d. 它们接受字符串 aabb 吗?
e. 它们接受字符串 e 吗?
。
^ 和純的形式化描述
A 1.2
给出练习 1.1 中画出的机器 iV
1.3 DFAM 的形式化描述为 ,, } A u d } ,d ,
( { q i 1q q q q5 9 q3 A q3 } ) , 其中 3 在下表中给出 。 试画出这
2 3
^
台机器的状态图 。
第1 章 正 则 语 言 51
d
9i
92 9i 93
93 92 94
93 95
9s q4 9s
^
■
c.{ w \ vu 含 有 偶 数 个 a 和 1 个 或 2 个 b } Ad.{ 刻 w 含 有 偶 数 个 a 并 且 每 个 a 后 都 跟 有 至 少 一 个 b}
e. 从 a 开 始 并 且 最 多 有 1 个 b} f. 含有奇数个 a 并且以 b 结束}
g. 的 长 度 为 偶 数 并 且 有 奇 数 个 a}
1.5 下 述 每 个 语 言 都 是 一 个 简 单 语 言 的 补 。对 每 一 小 题 先 构 造 简 单 语 言 的 DFA ,然 后 用 其 画 出 给 定 语
言 的 DFA 状 态 图 。 在 所 有 问 题 中 2={ a ,
b }。
Aa. 中 不 含 子 串 ab } A b. { w l w 中不含子串 baba }
c. { w \ w 中 既 不 含 子 串 ab 也 不 包 含 子 串 ba } d.{ w 是不在 ax b "" 中 的 任 意 串 }
e.{ w \ w 是 不 在(ab + ) * 中 的 任 意 串 } f.{ 刻 加 是 不 在 a *
Ub * 中 的 任 意 串 }
g. 是 恰 好 不 含 2 个 a 的 任 意 串} h. 是除 a 和 b 外的任意串}
1.6 画 出 识 别 下 述 语 言 的 DFA 状 态 图 。在 所 有 问 题 中 字 母 表 均 为 { 0 ,
1 }。
a.{ 洲! 从 1 开 始 且 以 0 结 束 }
b.
c.
^ 含有至少 3 个 1}
含 有 子 串 0 1 0 1( 即 对 某 个:r 和 y :
j 0 1 0 1 jy )}
d. ,
的 长 度 不 小 于 3 并 且 第 3 个 符 号 为 0}
e. 从 0 开 始 且 长 度 为 奇 数,
或者从 1 开始且长度为偶数}
f. 不含子串 110}
-
g { w \ w 的 长 度 不 超 过 5}
h. 是除 11 和 111 外的任意串}
i. 的 奇 数 位 置 均 为 1}
j.
^
k.{ e ,
0}
含 有 至 少 2 个 0 ,并 且 至 多 含 1 个 1 }
l.{ w \ uu 含 有 偶 数 个 0 或 恰 好 2 个 1 }
m. 空 集
n. 除 空 串 外 的 所 有 字 符 串
1.7 给 出 识 别 下 述 语 言 的 NFA ,并 且 符 合 规 定 的 状 态 数 。在 所 有 问 题 中 字 母 表 均 为 { 0 ,
1 }。
a. 语 言 { u;|w 以 0 0 结 束 } , 3 个 状 态 。 b. 练 习 1 . 6 c 中 的 语 言,5 个 状 态 。
c. 练 习 1.61 中 的 语 言 ,6 个 状 态 。 d. 语 言 { 0 } , 2 个 状 态 。
e. 语 言 0 * 1 * 0 + ,3 个 状 态 。 Af. 语 言 1 * ( 0 0 1 + ) * ,3 个 状 态 。
g. 语 言 { e },1 个 状 态 。 h. 语 言 (T ,1 个 状 态 。
1 . 8 使 用 定 理 1 . 2 2 证 明 中 的 构 造 ,给 出 识 别 下 述 语 言 的 并 集 的 NFA 状 态 图 。
a. 练 习 1.6 a 和 1.6 b 中 的 语 言。 b. 练 习 1 . 6 c 和 1 . 6 f 中 的 语 言。
1.9 使 用 定 理 1 . 2 3 证 明 中 的 构 造 ,给 出 识 别 下 述 语 言 的 连 接 的 iVFA 的 状 态 图 。
a. 练 习 1 . 6 g 和 1 . 6 i 中 的 语 言 。 b. 练 习 1 . 6 b 和 1 . 6 m 中 的 语 言。
1.10 使 用 定 理 1 . 2 4 证 明 中 的 构 造 ,给 出 识 别 下 述 语 言 的 星 号 的 NFA 的 状 态 图
a. 练 习 1 . 6 b 中 的 语 言 。 b. 练 习 1 . 6 j 中 的 语 言。 c. 练 习 1 . 6 m 中 的 语 言 。
52 第一部分自动机与语言
- -
识 别 F 的 5 状 态 的 DFA 图 。(先 找 一 个 4 状 态 的 NFA 作 F 的 补 集 可 能 有 助 于 求 解 问 题。 )
1.1 4 a. 证 明 :若 M 是 一 台 识 别 语 言 B WDFA ,交 换 M 的 接 受 状 态 与 非 接 受 状 态 得 到 一 台 新 的 DFA ,
则 这 台 新 DFA 识 别 B 的 补 集 。 因 而 ,正 则 语 言 类 在 补 运 算 下 封 闭 。
b. 举 例 说 明 :若 M 是 一 台 识 别 语 言 C 的 NFA , 交 换 M 的 接 受 状 态 与 非 接 受 状 态 ,得 到 一 台 新
NFA , 这 台 新 NFA 不 一 定 识 别 C 的 补 集 。 NFA 识 别 的 语 言 类 在 补 运 算 下 封 闭 吗? 并 解 释
回 答。
1.15 给 出 一 个 反 例 ,说 明 下 述 构 造 不 能 证 明 定 理 1 . 2 4 ,即 正 则 语 言 类 在 星 号 运 算 下 封 闭 © 。设
=( 01 ,2, , ,
^ ^ ^^
) 识别 Ab 如 下 构 造 H 9l ,
, F) 。N 应 该 识 别 Af 。
a. iV 的 状 态 集 是 iVi 的 状 态 集 。
b. N 的 起 始 状 态 与 Ni 的 起 始 状 态 相 同 。
C. F ={ ql } UA 。
F 的 接 受 状 态 是 原 来 的 接 受 状 态 加 上 它 的 起 始 状 态。
d. 定 义 5 如 下 :对 每 一 个 和 每 一 个
8\ ( q y a ) q乐 F 或 a
^=e
8( q ,a ) = '
d\ ( q a ) U 或 a =e
( 建 议 :把 这 个 构 造 转 换 成 图 ,如 图 1 - 2 6 所 示。
) ^
1.16 使 用 定 理 1 . 1 9 给 出 的 构 造 ,把 下 图 的 两 台 非 确 定 型 有 穷 自 动 机 转 换 成 等 价 的 确 定 型 有 穷 自 动 机 。
a, b
3 Ob
(b)
1.17 a. 给 出 识 别 语 言 (0 1 U 0 0 1 U 0 1 0 ) * 的 NFA。
b. 将 给 出 的 NFA 转 换 成 等 价 的 DFA 。 给 出 在 该 DFA 开 始 状 态 可 达 的 部 分 即 可 。
1.18 给出生成练习 1.6 中语言的正则表达式。
1.19 使 用 引 理 1 . 2 9 中 描 述 的 过 程 ,把 下 述 正 则 表 达 式 转 换 成 非 确 定 型 有 穷 自 动 机 。
a. ( 0 U 1) * OOO( OUl ) * b. ( ( ( 00 ) * ( 11 ) ) 1101 ) * c. 0 *
1.20 对 于 下 述 每 一 个 语 言 ,给 出 4 个 字 符 串 ,其 中 2 个 是 这 个 语 言 的 成 员 ,2 个 不 是 这 个 语 言 的 成
员 。这 里 假 设 字 母 表 2={ a ,
b }。
# #
a. a b b. a ( ba ) * b
c.a Ub
* *
d. ( aaa ) *
e.2 *
hi al* *
f . aba U bab
g.( e U a )b h. ( aU baU bb ) 2 *
1.21 使 用 引 理 1 . 3 2 中 描 述 的 过 程 ,把 下 图 的 有 穷 自 动 机 转 换 成 正 则 表 达 式 。
(a)
1.22 在 某 些 程 序 设 计 语 言 中 ,注 释 出 现 在 两 个 分 隔 符 之 间 ,如 : / # 和 # /。设 C 是 所 有 有 效 注 释 串
^
的 语 言。C 中 的 成 员 必 须 以 / # 开 始 、 : / 结 束 ,并 且 在 开 始 和 结 束 之 间 没 有 :tt /。为 简 便 起 见 ,
假 设 C 的 字 母 表 2= U ,
6,/,井
a. 给 出 识 别 C 的 DFA 。 b. 给 出 生 成 C 的 正 则 表 达 式 。
A1.23
设 J3 是 字 母 表 2 上 的 任 一 语 言。证 明 B = 当且仅当
1.24 有 穷 状 态 转 换 器 ( FST) 是 确 定 型 有 穷 自 动 机 的 一 种 类 型 。它 的 输 出 是 一 个 字 符 串 ,而 不 仅 仅 是
接 受 或 拒 绝 。下 图 是 两 台 有 穷 状 态 转 换 器 乃 和 T2 的 状 态 图 。:
0/0 1/1 a/ l
1/0 2/1 a/0 ,
b/0
b/1
b/1
o/o a/ l
7] T2
FST 的 每 一 个 转 移 用 两 个 符 号 标 记 ,一 个 指 明 该 转 移 的 输 入 符 号 ,另 一 个 指 明 输 出 符 号 。 两 个
符 号 之 间 用 斜 杠 / 把 它 们 分 开 。在 乃 中 ,从 % 到 % 的 转 移 有 输 入 符 号 2 和 输 出 符 号 1。某 些 转
- :
移 可 能 有 多 个 输 入 输 出 对 ,例 如 H 中 从 % 到 它 自 身 的 转 移 。 当 FST 在 对 输 人 串 w 计 算 时 ,从
起 始 状 态 开 始 ,一 个 接 一 个 地 取 输 入 符 号 … ,n ,并 且 比 照 输 入 标 记 和 符 号 序 列 W\ " .W n
进 行 转 移 。每 次 沿 一 个 转 移 走 一 步 ,输 出 对 应 的 输 出 符 号 。 例 如 ,对 输 人 2 2 1 2 0 1 1 ,机 器 :
H 依
次进人状态 %, <? ,
g2 , 2 <?2 , %,
g2 , %,
% 和 输 岀 1 1 1 1 0 0 0。对 输 人 abbb,T2 输 岀 1 0 1 1 。 给 出 在 下 述
每一小题中机器进人的状态序列和产生的输出。
a. 丁1 对 输 人 串 0 1 1 b. Ti 对 输 人 串 2 1 1 c.Ti 对 输 人 串 1 2 1
d. Ti 对输人串 0202 e. T2 对 输 人 串 b f . T2 对 输 入 串 bbab
.
g 丁2 对 输 人 串 bbbbbb h. T2 对 输 入 串 e
1.25 见 练 习 1 . 2 4 中 给 岀 的 有 穷 状 态 转 换 器 的 非 形 式 化 定 义 。仿 照 定 义 1 . 1 ( 1 . 1.1 节 ) 的 模 式 ,给 出
这 个 模 型 的 形 式 化 定 义 。假 设 FST 的 输 入 字 母 表 为 2、 输 出 字 母 表 为 r ,但 没 有 接 受 状 态 集 。包
括 FST 的 计 算 的 形 式 化 定 义 在 内 。( 提 示 :一 台 FST 是 一 个 5 元 组 ,它 的 转 移 函 数 形 如 & QX
2^Q X r ) 0
1.26 参 见 练 习 1 . 2 5 的 解 决 方 案 ,给 出 练 习 1 . 2 4 中 画 出 的 机 器 乃 和 T2 的 形 式 化 描 述 。 :
1.27 参 见 练 习 1 . 2 4 中 给 岀 的 有 穷 状 态 转 换 器 的 非 形 式 化 定 义 。 给 出 一 台 具 有 下 述 行 为 的 FST 的 状 态
图 。它 的 输 入 、 输 岀 字 母 表 都 是 { 0 , 1 }。它 输 出 的 字 符 串 与 输 入 字 符 串 在 偶 数 位 相 同 、 奇 数 位
相 反 。例 如 ,对 于 输 入 0 0 0 0 1 1 1 ,它 应 该 输 出 1 0 1 0 0 1 0 。
1.28 使 用 定 理 1 . 2 8 给 出 的 过 程 将 下 述 正 则 表 达 式 转 换 成 NFA 。 在 所 有 问 题 中 2={ a ,
b }。
a.a abb U b
( ) * 1
b. a U a b
( ) f c. aUb a b
( + ) + +
1.29 使 用 泵 引 理 证 明 下 述 语 言 不 是 正 则 的。
Aa.Ai ={ 0 nlw 2 n \ n 0 )
^
b. A 2 = { 1 { a j b} * }
Ac.A3 ={ a2”
| n>0 }( 这 里 a2”表 示 2” 个 a 构 成 的 串)
54 第一部分自动机与语言
1.30 指 出 下 述 关 于 0 * 1 * 不 是 正 则 语 言 的 “证 明” 的 错 误 (由 于 (T 1 是 正 则 语 言 ,所 以 “证 明” 存
在 错 误 ):用 反 证 法 证 明 。假 设 e r r 是 正 则 的。设 是 泵 引 理 给 出 的 关 于(r 1 * 的 杲 长 度 。选
择 5 为 串 0 M〃。已 知 S 是 (T 1 * 的 一 个 成 员 ,但 例 1 . 3 8 表 明 5 不 能 被 抽 取 。这 样 得 到 矛 盾 。 因 此
0 * 1 * 不 是 正 则 的。
问题
1.31 对 语 言 A 和 语 言 B ,设 A 和 B 的 完 全 间 隔 交 叉 ( p e r f e c t s h u f f l e ) 为 :
其 中 a \ •••a* 6 A 并 且 6!… 6*
{w \ w = a\ bi ••• akbk , 任 一 a,,
B, 6, 2}
证 明 :正 则 语 言 类 在 完 全 间 隔 交 叉 下 封 闭 。
1.32 对 语 言 A 和 语 言 B , 设 A 和 B 的 间 隔 交 叉 ( shuffle ) 为 :
x = a i 6i … akbk ,
其中 ai … 6 A 并 且 61 … 6 B,
任 一 a ,.,
_
6,6 2 * }
1.33
^
证 明 :正 则 语 言 类 在 间 隔 交 叉 下 封 闭 。
-
设 A 为 任 意 语 言。定 义 D K O P OL/T( A ) 得 到 的 语 言 包 含 的 串 都 是 A 中 的 串 移 除 一 个 符 号 后 得
- ;
到 的 。这 样 ,Z R O P OL 丁(八)={:丨0: 6 八 , : , 62 , e 2>
^
其中 *
证 明 :正 则 语 言 类 在 运 算
^— ^ ^
X 2 o
D尺O P-OLTT 下 封 闭 。 像 定 理 1 . 2 3 样 ,用 图 给 出 一 个 证 明 ,再 通 过 构 造 给 出 一 个 更 形 式 化 的
证 明。
A1.34
设 B 和 C 是 2 = { 0 , 1 } 上 的 语 言。定 义
—
对 于 某 个:y 6 C,
串 功 和:y 含 有 同 样 个 数 的 1}
证 明 :正 则 语 言 类 在 运 算 下 封 闭。
*
1.35 设 A/B= { m
| 对于某: m r G A }。证 明 如 果 A 是 正 则 的 ,B 是 任 意 语 言 ,那 么 A / B 是 正
r 6 B,
则 的。
1.36 对 于 任 意 的 字 符 串 W = U U\ W 2 ,,* ' , UU 的 反 转 是 按 相 反 的 顺 序 排 列 得 到 的 字 符 串 ,记 作
^
Wn
即加尺 UUn “. ^
1 2 切1 。 对 于 任 意 语 言 A ,设 =
证 明 :如 果 A 是 正 则 的 ,则 AK 也 是 正 则 的 。
1.37 设
「o
~
i roi roi
23 = o o
L0J L0J
23 包 含 所 有 高 度 为 3 的 0 和 1 的 列 。23 上 的 字 符 串 给 出 三 行 0 和 1。 把 每 一 行 看 作 一 个 二 进 制
数 ,令
B ={ W 6 2 3 * 丨 比 最 下 面 的 一 行 等 于 上 面 两 行 的 和 }
例 如,
ro non
0 0 G B, 但 是 0 0 $ B
Ll」L0」L0」 LI」LI」
证 明 B 是 正 则 的 (提 示 :证 明 是 正 则 的 会 容 易 一 些 。假 设 已 知 问 题 1 . 3 6 中 的 结 果 )。
1.38 设
0 0
22 =
0 0
这 里 ,22 包 括 所 有 高 度 为 2 的 0 和 1 的 列 。22 上 的 字 符 串 给 出 两 行 0 和 1 。 把 每 一 行 看 作 一 个
二 进 制 数 ,令
:
C = {w e i 2* 丨 切 下 面 一 行 是 上 面 一 行 的 3 倍 }
例如,
第1 章 正 则 语 言 55
onronrinro rOn 厂 On 厂 1
o o
e c, 但 是 ULoJ
$C
证明 不是正则的 。
^ 22
1.41 设队 = 是《 的 整 数 倍 }。 证 明 :对 每 一 个 语 言 艮 是 正 则 的 。
1.42 设 C„ = {:
| 且是 n 的 整 数 倍 }。证 明 : 对 每 一 个 语 言 C„ 是正则的 。
r x 是一个二进制数 ,
1.43 一台全路径 NFA ( all - NFA )
M 是一个 5 元组 (Q,2,心% ,F)。 如果 M 对:c 6 2 * 的每一个可能
的计算都结束在 F 中的状态 ,则 M 接受:r 。注意 ,相反地 ,普通 NFA 只需有一个计算结束在接
受状态 ,就接受这个字符串 。 证明 :全路径 NFA 识别正则语言类 。
1.44 定理 1.28 中的构造表明 ,每一个 GNFA 都等价于一个只含两个状态的 GNFA。对 DFA ,有相
反 的 现 象 。证 明 : 对 每 一 个 々
〉 1 ,都 有 语 言 能 被 一 个 々 个 状 态 的 DFA 识别 ,但不
能被只有々一 1 个状态的 DFA 识别 。
1.45 如果存在字符串 z 使得 :V,则称字符串工是字符串:y 的前缀 ( prefix)。如果:c 是:V 的前缀且
则称 x 是:y 的真前缀 ( proper prefix )。下面每小题定义一个语言 A 上的运算 。 证明 :正
则语言类在每个运算下封闭 。
Aa. iVOP £FJX( A )= { w 6 A|i£;
^
任一真前缀都不是 A 的元素 }
b. NO£:XTf:iVD( A )= U 6 Ak 不是 A 中任何字符串的真前缀 }
A 1.46 参见练习 1.24 中给出的有穷状态转换器的非形式化定义 。证明不存在对每一个输人 都能输出
1.47 设:
的 FST,其中输人和输出字母表为 { 0 ,
1 }。
r 和 y 是两个字符串 ,L 是一个语言 。 如果存在字符串 z,使得 xz 和% 中恰好有一个是 L 的
^
成员 ,则称:r 和 y 是用 / 可区分的 ;否则 ,对每一个字符串
■ 和 :yz 要么都是 、 要么都不是
L 的成员 ,则称工和:V 是用 L 不可区分的 。如果 x 和 3;是用 L 不可区分的 ,记作工三0。证明
是一个等价关系 。
1.48 Myhill - Nerode 定理 。参见问题 1.47 , 设 L 是一个语言 ,X 是一个字符串集合 。如果 X 中的任意
两个不同的字符串都是用 L 可区分的 ,则称 X 是用 L 两两可区分的 。定义 L 的指数为用 L 两两
可区分的集合中的元素个数的最大值 。L 的指数可能是有穷的或无穷的 。
a. 证明 :如果 L 被一台有々个状态的 DFA 识别 ,则 L 的指数不超过是 。
b. 证明 :如果 L 的指数是一个有穷数々,则它被一台有々个状态的 DFA 识别 。
c. 由此得到 :L 是正则的当且仅当它有有穷的指数 。而且 ,它的指数是识别它的最小 DFA 的
大小。
1.49 考察语言 F ={ a* ly ck
| !,
),6>0 ,
并且若 i’= l ,
贝lj j = k } 。
a. 证明 F 不是正则的 。
b. 用泵引理说明 F 是一个正则语言 。 即对于一个给定的栗长度 p ,F 满足泵引理的三个条件 。
c. 解释为什么 (a ) 和 ( b) 与泵引理不矛盾。
1.50 泵引理指出 ,对每一个正则语言都有一个泵长度 /> ,使得对于该语言中每一个字符串 ,如果它的
长度等于或大于 A 就 能 够 被 抽 取 。如 果 是 语 言 A 的 泵 长 度 ,则 任 意 的 也 是 A 的 泵 长
56 第一部分自动机与语言
度 。A 的 最 小 泵 长 度 是 A 的 泵 长 度 的 最 小 值 。例 如 ,如 果 A = 则 最 小 泵 长 度 等 于 2。理 由
如 下 :A 中 长 度 为 1 的 字 符 串 s = 0 不 能 被 抽 取 ,而 A 中 任 何 长 度 大 于 等 于 2 的 字 符 串 都 含 有 1 ,
把 它 划 分 成 x = 0 , y = l , z 为 其 余 部 分 ,从 而 能 够 被 抽 取 。对 于 下 述 语 言 ,给 出 最 小 泵 长 度 ,
并 加 以 证 明。
Aa. 0001 * A b. 0 * 1 * c.0 0 1 U 0 * 1 #
Ad.0 * 1 + 0 + 1 * U 1 0 1 #
e.( 0 1 ) * f.£
g.1 0 1 0 1
* * *
h.1 0( 1 1 0 ) 0
* *
i.1 0 1 1
1.51 证 明 下 述 语 言 不 是 正 则 的 。证 明 可 以 使 用 泵 引 理 和 正 则 语 言 类 在 并 、交 、补 运 算 下 封 闭 的 性 质。
a.< 0 nlm 0n \ m ,n
^
0) Ab. { 0m 1|" m n)
^
-
c.{ w { 0 ,1 } 不 是 一 个 回 文 } e d.{ vutiv|iv ,t :
{ 0 ,1 } }
^
|
'
# *
1 . 5 2 设 以 及
Y={ 扣
| 对k O y X i 61 * 且 时 Xi ,-W = X \ # X2 # # }
证 明 :Y 不 是 正 则 的 。
^ ^ Xj » ••
1.53 设 2={ 0,
1} 以 及
中子串 01 和子串 10 的出现次数相等}
由 于 1 0 1 含 有 一 个 0 1 和 一 个 1 0 ,因 此 1 0 1 GD。而 1 0 1 0 含 有 两 个 1 0 和 一 个 0 1 ,所 以 1 0 1 0 $ D。
证 明 :D 是 正 则 语 言。
1.54 b }。对 每 一 个 々>1 ,设
设 2={ a , G 是 由 所 有 从 右 端 起 第 々 个 位 置 是 a 的 串 组 成 的 语 言。这 样
分 别 用 状 态 图 和 形 式 化 描 述 的 方 法 描 述 识 别 G 的 有 A + 1 个 状 态 的 NFA 。
1 . 5 5 考 虑 问 题 1 . 5 4 中 定 义 的 语 言 G 。证 明 对 每 一 个 h 没 有 状 态 数 小 于 V 的 DFA 识 别 Q 。
1 . 5 6 设 2={ a,
b}。对 每 一 个 >1,设 Q 是 由 所 有 最 后 々 个 符 号 中 至 少 含 一 个 a 的 串 组 成 的 语 言。这 样
1.57
Dk =r
^
。分 别 用 状 态 图 和 形 式 化 描 述 的 方 法 描 述 识 别 A 且 最 多 有 々+1 个 状 态 的 DFA。
a. 设 A 是 无 穷 正 则 语 言。证 明 :A 能 够 被 拆 分 成 两 个 不 相 交 的 无 穷 的 正 则 子 集 。
b. 设 B 和 D 是 两 个 语 言 。如 果 并 且 D 无 穷 地 包 含 所 有 不 在 B 中 的 串 ,则 记 作 B d D。 证
明 :如 果 B 和 D 是 两 个 正 则 语 言 且 B 廷 D ,那 么 可 以 找 到 一 个 正 则 语 言 C,使 得 B d C (i D。
1.58 设 N 是 识 别 某 语 言 A 的 一 台 含 々 个 状 态 的 NFA 。
a. 证 明 :如 果 A 非 空 ,则 A 含 有 的 串 的 长 度 最 大 为 々。
b. 通 过 举 例 说 明 :如 果 将 U ) 中 的 两 处 A 替 换 为 则 (a ) 不 一 定 为 真 。
c. 证 明 :如 果 A 非 空 ,则 A 含 有 的 串 的 长 度 最 大 为
d. 证 明 (c ) 中 给 岀 的 边 界 是 相 当 紧 密 的 。即 对 每 一 个 I 证 明 NFA 识 别 语 言 Aa ,其中冗是非
空的并且 &中 最 短 的 成 员 串 的 长 度 是 々 的 指 数 。与 (c ) 中 的 边 界 非 常 接 近 。
*
1.59 证 明 :对 每 一 个《>0 , 语 言 艮 都 存 在 ,其 中
a. Bn 被 含 有 72 个 状 态 的 NFA 识 别 。
—
b. 对 正 则 语 言 A ,如 果 艮 =為 1) … UAo 那 么 至 少 有 一 个 A, 需 要 含 有 指 数 级 个 数 状 态 的 DFA。
1.60 同 态 ( homomorphism ) 是 从 一 个 字 符 集 经 过 另 一 个 字 符 集 到 字 符 串 的 函 数 /:2 厂 。定 义
/( u0 = /( i )/( u;2 )… /(叫) 将 / 扩 展 为 在 字 符 串 上 的 操 作 ,其 中 W = ZUl U )2 叫 并 且 如, 2。
^
进 一 步 ,对 任 意 语 言 A ,定 义 /( A )={ /( w| eA } 将 / 扩 展 为 对 语 言 的 操 作 。
) i£;
a. 通 过 形 式 构 造 证 明 :正 则 语 言 类 在 同 态 下 封 闭 。换 言 之 ,给 定 一 个 识 别 B 的 DFA M 和 同 态
/,构 造 一 个 识 别 /( B ) 的 有 穷 自 动 机 AT 。考 虑 你 构 造 的 机 器 AT ,是 否 在 所 有 情 况 下 它 都 是
一 个 DFA ?
回 文 ( palindrome ) 是 顺 着 读 和 倒 着 读 都 一 样 的 字 符 串。
第J 章 正 则 语 言 57
b. 通过一个例子证明 :非正则语言类在同态下不封闭 。
1. 6 1 设语言 A 的旋转闭包 ( rotational closure ) 为 i?C( A )={;: :r v 6
y r| : 。
a. 证明 :对任何语言 A ,R C ( A ) = R C ( R C ( A ) ) 0
b. 证明 :正则语言类在旋转闭包下封闭 。
1. 6 2 设 2={ 0 ,
1,+ ,= } 以及
A D D= { x= y \~ z \ x , y , z 是二进制整数 ,
~
并且工是:y 与 z 的和 }
证明 ADD 不是正则的 。
•1 . 6 3 若 A 是一个自然数的集合 ,々是大于 1 的自然数 ,令
^
5
“。
焱)= { 1;是 A 中某个数以々为底的表示}
这里不允许数的表示以 0 开头 例如 ,B2 ( 彳 3 ,5 })= { 11 , B3 ({ 3 ,5 })= { 10,
101 > , 12 }。给出一个
集合 A ,使得 B2( A ) 是 正 则 的 ,而 B3( A ) 不是正则的 ,并加以证明 。
•1 . 6 4 若 A 是任一语言
| -
,令 A 是 A 中字符串的前半段组成的集合 ,即
| A - = {:
| ,:
r 对 于 某 个 :y||c =
| :
y 且
|
+-
证明 :如果 A 是正则的 ,那么 A 也是正则的 。
,令 A _ 是 A 中所有字符串删去中间的三分之一后得到的字符串组成的集
* 1.65 若 A 是任一语言|
+
合 ,即
| | A - = U 2:| 对 于 某 个 :y ,U
| =|:
y|=
| z 且 xyz
|
^ A)
证明 :如果 A 是 正 则 的 ,那 么 不 一 定 是 正 则 的。
*
1 . 6 6 设 M =( Q ,2,心% ,
F) 是 一 个 DFA 并 且 M 的 状 态 称 为 它 的 “ 家”。M 和 A 的 同 步 序 列 ( syn -
chronizing sequence ) 为 串 5, 其中对每一个 Q, s )= /i 。( 这里已经把 5 扩展成串,
5( g ,
因 此 祝 心 5 ) 等 于 当 M 从状态 g 开始 ,读人输人 5 的结束状态 。 ) 如果对某个状态 /1 ,M 有一个同
步序列 ,那么称 M 是 可 同 步 的 ( synchronizable )。证明 :如果 M 是一台 I状 态 的 可 同 步 的
D F A , 那么它有一个长度最大为々3 的同步序列 。试试增大这个边界 。
1 . 6 7 对 语 言 A 和 语 言 B ,定 义 运 算 如 下 :
A avoids B = 并且 B 中的任何字符串都不是 A 的子串}
证 明 :正 则 语 言 类 在 运 算 下 封 闭 。
1.68 1 },
设 2= { 0 ,
a. 若 彡1 并 且 1/ 6 2 * }。证明 :A 是正则的 。
b. 若 3={ 0々1 0叫々彡1 并 且 }。证 明 :B 不是正则的 。
^
设 从 和 純 是 分 别 包 含 々i 和 心 个 状 态 的 两 个 DFA ,设 U )。
^
1.69 UMDUUiV
a. 证明 :如果 [/关 0 ,那么 L;
包含长度小于 maxU! ,h ) 的 字 符 串 。
; ;
b. 证明 :如果 L 关:T ,那么 L 不包含长度小于幻 h 的字符串 。
1.70 l,
设 2={ 0 , C= U # :
:tU , rR #:ck 6 { 0,
l } * }。证 明 :C 是上下文无关语言 (CFL )。
a. 设 5= { 1 | 1 } * ,并且对々>1 ,:
{ 0, y 含有至少々个 1 }。证明 : B 是正则语言 。
~~ ^
1.71
b. 设 0= { 1 | 1 } * ,并且对々>1 ,j 含有至多々个 1 > 。证明 :C 不是正则语言。
^
3 { 0,
*
1.72 传统切牌方法将一副纸牌随意分成两部分 ,交换后再重新组合成一副牌 。更复杂点的方法被称为
Scame 切牌 ,首先将一副牌分成 3 部分 ,重新组合时将中间那部分放在最上面 。受 Scame 切牌
启发 ,定义一种对语言的操作 。对语言 A ,设 CT7T( A )={ y:| :
o 6 A }。 :
^
rZ
^^
1.73 1 },\
设 2= { 0 , = { 功 功|加€2 * 并且比的长度为々
a. 证明无论々取何值 ,所有状态数少于 V 的 DFA 都不能识别 WW* 。
b. 描述一个状态更少的能识别 WWA ( WW 的补集 ) 的 NFA 。 ,
58 第一部分自动机与语言
习题选解
1.1 .
对 ⑽ : a.% ; b. { Q 2 } i c 9i ,
%,%, 9i , 9i ; d. 不 接 受 ;e. 不 接 受 。
对 M2 : a.qx ;b.{ ,g4 };C. qx yqx , qx , q2 f q A ; d. 接 受 ;e. 接 受 。
1.2 Mi =({ % ,
g2 ,
<? },
3 { a,
b },
汐1 ,
%,{ <?2 })
M2 =({ l ,
g2 ,
g3 ,% },{a,b },
办,%, {% ,g4 })
转移函数分别为:
汐1 b §2 b
9l 9i 92
9i 92
% 94
93 93
93 92
% 92 9i % 93 94
1.4 b. 语 言 I 含 有 正 好 2 个 a} 和 语 言 1 含 有 至 少 2 个 b } 的 DFA 如 下 所 示:
^ ^
■
a,b
6
使 用 自 动 机 的 交 运 算 构 造 出 如 下 DFA:
b b b b
b b b b
-
b b b
虽 然 问 题 并 没 有 要 求 简 化 DFA ,但 可 以 合 并 某 些 状 态 ,得 到 :
00
:
b b b
O OM >
^
a,b
b b b
b b b
d. 语 言 含 有 偶 数 个 a } 和 语 言 { W
| W 中 每 个 a 后 都 跟 有 至 少 一 个 b } 的 DFA 如 下 所 示:
a,b
b
使 用 自 动 机 的 交 运 算 构 造 出 如 下 DFA :
b
bCO b
b b
b
第J 章 正 则 语 言 59
虽 然 问 题 并 没 有 要 求 简 化 DFA ,但 可 以 合 并 某 些 状 态 ,得 到:
^ b
b
a, b
a,
b a,
b
如 下 DFA 识 别 |w 不 含 有 子 串 baba } 。
b b a,b
b
0
o^o
1.11 设 N = ( Q, %,
2 , 5, F ) 为 任 一 NFA 。 构 造 一 个 只 有 一 个 接 受 状 态 的 NFA i\T ,它 与 iV 接 受 同 样 的
语 言。非 形 式 地 讲 ,M 与 JV 很 相 近 ,但 是 Y 从 相 对 于 iV 是 接 受 状 态 的 状 态 到 新 的 接 受 状 态 g
,
N =( QU { accept > ,2
, ,
), 其 中 对
eept 上 没 有 新 的 转 移 。形 式 地 讲 ,
^ ^^
有 r 转 移 。状 态 0 { 9accept }
每 一 个 gGQ 和‘
d l q, 如果 a e 或 g $F
d’(q ,
a )=
a)
d ( q ,a ) U {
^
如 果 a= e 或
5'( gae,
并 且 对 每 一 个 么, ,a ) = 0 o
^ accept
^
―
1.23 证 明 “当 且 仅 当” 的 两 个 方 向 :
( ) 假 设 B = B + ,证 明
―
由 于 对 所 有 语 言 成 立 ,因 此 如 果 5= 3+ ,那 么
( ) 假设 证 明 B = B+ 。
由 于 对 所 有 语 言 有 B Q B+ ,所 以 只 需 要 证 明 如 果 那 么 比 二 心 心 … 心 ,其 中 每
一 个 并 且 々>1。因 为 A , 因 而 有 m2 e B。 类 似 地 ,由 于 m2 在 B
中 并 且:
r 3 也 在 B 中 ,因 而 有 m2:r3 6 B。以 此 类 推, 因 此 wGB ,于 是 可 以 得 到 结
论
后半部分的论证可以用如下的归纳证明形式化地描述 :
假设
60 第一部分自动机与语言
B , 那 么 J:
^
断 言 :对 每 一 个 々>1 ,如 果 i i ,… ,Xk : I… x+ G B。
归 纳 基 础 :当 々= 1 时 ,陈 述 显 然 成 立 。
归 纳 步 骤 :对 每 一 个 々>1 ,假 设 断 言 在 々 时 成 立 。证 明 々 1 时 也 成 立 。 +
1.29
如 果 XI ,••• ,工k , + 1 e B , 那 么 根 据 归 纳 假 设:r K "
因此心
假
SAi
A+ &
设
的一个成员并且
是 正
5
则
比 />
GB , 有 工 厂.• x k x k + \ G 肌 但 BBGB ,
这 样 就 证 明 了 归 纳 步 骤 和 断 言 。该 断 言 指 出 ,如 果 那 么 B d
的。设 户 是 泵 引 理 给 出 的 泵 长 度 。选 择 s 为
更 长 ,泵 引 理 保 证 5 可 以 被 划 分 成 3 片 ,S=
串 —
由
jcyz , 其 中 对 任 意
于 S
^^
0 ,串 : 在 焱!中 。考 虑 下 面 两 种 可 能 性 :
:
1. 串 y 仅 由 0 组 成 ,仅 由 1 组 成 ,或 者 仅 由 2 组 成 。 在 这 些 情 况 下 ,串 工3 0 将不会有等数董
的 0 ,1 和 2。 因 此 xyyz 不 是 A i 的 成 员 ,矛 盾 。
2. 串:y 由 不 止 一 种 符 号 组 成 。在 这 种 情 况 下 ,串 : 将 含 有 次 序 不 定 的 0 ,1 或 2 。因 此 ocyyz
^
^
T3 0
不 是 A 的 成 员 ,矛 盾。
两 种 可 能 性 得 到 的 都 是 矛 盾 。因 此 ,A! 不 是 正 则 的 。
为 串 a2\ 由 于 5 是 A 3
^
c. 假 设 A 3 = { a2”|n O } 是 正 则 的 。设 /> 是 泵 引 理 给 出 的 泵 长 度 。选 择 6
的 一 个 成 员 并 且 5 比 /> 更 长 ,泵 引 理 保 证 s 可 以 被 划 分 成 3 片 ,s = xyz , 满 足 泵 引 理 的 三 个
条 件。
第 三 个 条 件 说 明 丨1 3;丨 <户。此 外 p<2 P , 可 见 |: H + l:
y|<2匕 因 此 U3 0 |= k 3; y l < 2P +
2 * = 2〃+ 1 。第 二 个 条 件 要 求 b l >0 , 于 是 这 样 的 长 度 不 可 能 是 2 的
某 次 方 。因 此 不 是 A 3 的 成 员 ,矛 盾 。从 而 ,戊 不 是 正 则 的 。
^
^^ ^ _
^ —^
1.34 设 DFAMB O J, , !
, ) 和 DFAMC =( QC ,
2, % F c) 分 别 识 别
( C, , B 和 C。 按 如 下 方 式
^C 的 N F A M%= ( Q,
构造识别 2,A% ,F)。为 了 确 定 其 输 人 切 是 否 在 B C 中 ,机 器 M 要 检 査
w G B , 并 且 并 行 、 非 确 定 地 猜 测 和 w 含 有 同 样 个 数 1 的 串 y 并且检查 : 6( :
。
.
1 Q= QB X Qc 。
2 对 和 定 义
'
0) ,
{ ( d B ( g, r) } 如 果 a=0
8(.( q' j r ) j d)= < { C 8Q( 1) 9 SQ ( r » 1) )} 如 果 fl =l
3. —( <7g ,
4.F = FB XFC
9c )。
O
,
.{( g《
^
cO ,0 ))} 如果
1.45 2,心% ,
a. 设 M=( Q, F ) 是 识 别 A 的 一 台 D F A ,其 中 A 是 某 正 则 语 言。按 如 下 方 式 构 造 识 别
,
NOPREFIX ( A ) 的 M' = ( Q\ l i d\ q0\ F ):
l.Q
^Qo { d( r ,a )} 如 果 r芒F
_
2. M 定义 y( r ,a )
0 如 果 r6 F
3. — %。
,
4.F = F。
1.46 时输出加尺 。 考 虑 输 入 串 00 和 01。对 于 输 人 00 , 丁 必 定 输
假 设 相 反 :存 在 某 个 FSTT 在输人 «; ■
出 0 0 , 对 于 输 入 0 1 ,了 必 定 输 出 1 0。在 这 两 种 情 况 下 ,输 人 的 第 一 位 都 是 0 , 但 输 出 的 第 一 位 却
不 一 样 。对 于 FST 来 说 是 不 可 能 这 样 操 作 的 ,因 为 FST 在 读 入 第 二 位 输 入 之 前 就 要 产 生 第 一 位 输
出 。因 此 不 存 在 这 样 的 FST。
1.48 用 反 证 法 证 明 该 断 言 。令 M 为 一 识 别 L 的 f 状 态 D F A 。假 设 相 反 :L 的 指 数 大 于 这 就 意 味
着 某 个 元 素 个 数 大 于 々 的 集 合 X 能 够 被 L 两 两 区 分。由 于 M 有 々 个 状 态 ,根 据 鸽 巢 原 理 ,X
含 有 两 个 不 同 的 串:r 和:y ,其中汉% ,2:
)= 扒 9 ,
3/ )。 这里 M % ,
: 。
r) 是 M从起始状态 g 出发在
*
。
第J 章 正 则 语 言 61
读 人 输 入 串 I 后 所 在 的 状 态 。那 么 ,对 任 意 串 6 2 * ,d( qQ ,
:cz )= d( qQ ,=
yz )。因 而 n 和:yz 要
么 都 在 L 中 ,要 么 都 不 在 L 中 。 但 这 样 r 和 3;不 再 被 L 区 分 ,与 假 设 的 X 被 L 两 两 区 分 矛 盾 。
*
b. 设 久 ={ 51 " ,
& } 被 L 两 两 区 分 。构 造 识 别 L 的 有 々 个 状 态 的 DFA M = ( Q,2,心 % ,F )。设
Q ~
i Qi
于 5) G X ,
■
^
yQk } 并 且 定 义 占 为 A ,其 中
**
Sj 三L Si
( 关 系 的 定 义 见 问 题 1 . 4 7 )。注 意 对
否 则 ,XLkfl 可 能 含 有 々+1 个 元 素 并 且 被 L 两 两 区 分 ,这 会 与 假 设 L 的
指 数 为 々 相 矛 盾 。设 尸= { qt I S i e L } , 起 始 状 态 而 为 I ,这 样 构 造 M 使 得 对 任 一 状
_
9
— —
态 q i ,{ 5 I 5( QQ S ) Q - } { 5 | S L S i } 因 此 M 识 别 L 。
0
c. 假 设 L 是 正 则 的 ,并 且 令 々 是 识 別 L 的 DFA 的 状 态 数。那 么 根 据 (a ) 可 知 L 的 指 数 的 最 大 值 为
k 。相 反 ,若 L 的 指 数 为 I 那 么 根 据 ( b) 可 知 它 被 有 々 个 状 态 的 DFA 识 别 ,因 而 是 正 则 的 。 为
了 证 明 L 的 指 数 是 接 受 它 的 最 小 DFA 的 大 小,假 设 L 的 指 数 恰 好 是 h 那 么,根 据 ( b ),存 在 一
-
个 接 受 L 的 々 状 态 DFA 。 这 是 最 小 的 DFA ,因 为 如 果 还 有 更 小 的 ,就 可 以 根 据 ( a ) 证 明 L 的
指 数 小 于 々。
1.50 a. 最 小 的 泵 长 度 为 4。串 0 0 0 在 语 言 中 但 不 能 被 抽 取 ,因 而 这 个 语 言 的 泵 长 度 不 是 3。如 果 5 的 长
:
r yZ ,其 中 x 是 0 0 0 , y 是 第 一 个 1 ,z 是 其
度 为 4 或 更 长 ,则 它 包 含 1 在 其 中 。通 过 将 s 划 分 为 : :
后 的 所 有 符 号 ,可 以 满 足 泵 引 理 的 三 个 条 件 。
b. 最 小 的 泵 长 度 为 1 。由 于 串 e 在 语 言 中 并 且 不 能 被 抽 取 ,因 而 泵 长 度 不 可 能 是 0。语 言 中 的 每 一
个 非 空 串 都 能 被 划 分 为 ocyzy 其 中 :
T 是 , 是 第 一 个 字 符 ,Z 是 剩 下 的 部 分 。该 划 分 满 足 泵 引
理的三个条件。
^
d. 最 小 泵 长 度 为 3。由 于 串 1 1 在 语 言 中 并 且 不 能 被 抽 取 ,因 而 泵 长 度 不 可 能 是 2 。设 s 是 在 语 言
中 长 度 至 少 为 3 的 串 。 如 果 s 由(T P O + P 生 成 ,并 且 5 以 0 或 1 1 开 始 ,写 作 s = x y z , 其 中
x=e ,:
y 是 第 一 个 符 号 ,z 是 5 的 余 下 部 分 。如 果 s 由 (T 1+ 0 + 1 * 生 成 ,并 且 > 以 1 0 开 始 ,写
作 s = xyz , 其 中 :
r=10, 是 下 一 个 符 号 ,z 是 s 的 余 下 部 分。按 这 种 方 式 划 分 5 可 以 证 明 它 能
1.51 b. 设 关
^
幻。可 以 观 察 到 S P10 * 1 *
:
够 被 抽 取 。如 果 s 由 1 0 1 生 成 ,可 以 将 其 写 成:r yZ,其 中 x = l ,y = 0 , z 是 5 的 余 下 部 分。这
种 划 分 给 出 了 抽 取 s 的 一 个 途 径。
*
:
々彡0 }。若 B 是 正 则 的 ,那 么 S 和 B f l O *
^
1 也 是 正 则 的 。 但 是 已 知 { 0klk \ k
*
0 } 不 是 正 则 的 ,因 而 B 不 是 正 则 的 。
_
另 一 种 选 择 ,直 接 用 泵 引 理 证 明 B 是 非 正 则 的 ,但 这 样 做 需 要 一 定 的 技 巧 。 假 设 B = {(T 1叫
^
m n ) 是 正 则 的 。令 为 泵 引 理 给 出 的 泵 长 度 。可 以 观 察 到 P! 不 出 现 在 从 1 到 A 的 所 有 整 数
中 ,其 中 户!= M f l )( /> 2 h" l 。串 s = 并且 UI 彡 户。这 样 泵 引 理 指 出 s 可 以
被 划 分 为 工:yz , 这 里 1= 0。 ,其 中 并 且
, y = 0b , z = 0c \ p p
- + 6 + c = 户。 设 / 为 串
^
a
其 中 户! /6。那 么 y = o々!,从 而 y+ = o6+ w , 并 且
1
。这 就 给 出
= 0 +印+ />! 乐 B ,矛 盾 。
5’ 户
第 2 章|
Introduction to the Theory of Computation , 3 e
上下文无关文法
上一章介绍了有穷自动机和正则表达式这两种不同但等价的描述语言方法 。虽然它们
能描述许多语言 ,但还有一些简单的语言不能用它们描述 ,如 { o”r h>o }。
本章介绍一种能力更强的描述语言数学模型 ,上 下 文 无 关 文 法 (context-free grammar ),
它能够描述某些应用广泛的具有递归结构特征的语言 。
在研究自然语言时 ,人们引人了上下文无关文法 。 例如 ,名词短语可以出现在动词短
语中 ,反之 ,动词短语也可以出现在名词短语中 ,因此在名词 、 动词 、 介词以及它们的短
语之间的关系中存在着自然的递归 ,上下文无关文法有助于整理并理解这些关系 。
上下文无关文法在程序设计语言的规范化及编译中有重要应用。程序设计语言的文法
犹如外语语法参考书 ,设计人员在编写程序设计语言的编译器和解释器时 ,常需先获取该
语言的文法 。 大多数编译器和解释器都包含一个语法分析器 ( parser ), 它在生成编译代码
或解释程序执行前 ,提取出程序的语义 。上下文无关文法使得构造语法分析器的工作变得
容易 ,某些工具甚至能根据文法自动地生成语法分析器 。
与上下文无关文法相关的语言集合称为上下文无关语言 ( context- free language )。它
包括所有的正则语言以及许多其他语言类 。本章将给出上下文无关文法的形式化定义 ,并
研究上下文无关语言的性质。 此外 ,还 将 介 绍 识 别 上 下 文 无 关 语 言 的 机 器 下 推 自 动 机
( pushdown automata ), 它使我们能够进一步地了解上下文无关文法的能力 。
2. 1 上下文无关文法概述
——
下面给出一个上下文无关文法的示例 ,称其为 G1 :
A 0A 1
A^ B
B #
一 个 文 法 由 一 组 替 换 规 则 ( substitution rule ) 组成 ,替 换 规 则 又 称 为 产 生 式 ( pro-
duction )。 每条规则占一行 ,由一个符号和一个字符串构成 ,符号和字符串之间用箭头隔
开 。符号称为变元 ( variable ), 字 符 串 由 变 元 和 另 一 种 称 为 终 结 符 ( terminal ) 的 符 号 组
成 。变元常用大写字母表示 ,终结符类似于输人字符 ,常用小写字母 、 数字或特殊符号表
示 。一个变元被指定为起始变元 ( start variable ) , 通常它出现在第一条规则的左边 。在上
述示例中 ,文法 G 有 3 条 规 则 ,A 和 B 是变元 ,其中 A 是 起 始 变 元 ,0 、 1 和 # 是终
结 符。
'
按照以下方法 ,能够根据文法生成其所描述的语言的每一个字符串。
1. 写下起始变元 。它是第一条规则左边的变元 ,除非另有指定 。
2. 取一个已写下的变元 ,并找到以该变元开始的规则 ,把这个变元替换成规则右边
的字符串。
3. 重复步骤 2 , 直到写下的字符串没有变元为止 。
第之章上下文无关文法 63
-用 上 述 方 式 生 成 的 所 有 字 符 串 构 成 该 文 法 的 语 言 ( lan
图 2 1 给出了 G 的一棵语法分析树 。 A
- A
guage of the grammar )。 用 L( Gi ) 表 示 文 法 Gi 的 语 言 ,可 以 A
看 出 能 够 用 上 下 文 无 关 文 法 生 成 的
B
语 言 称 为 上 下 文 无 关 语 言 ( CFL )。 为 方 便 起 见 ,在 描 述 一 个
- — —
if
上 下 文 无 关 文 法 时 ,对 左 边 变 元 相 同 的 规 则 采 用 缩 写 的 形 式 ,
比 如 ,A 0A1 和 A B 缩写成一行 A 0 A1|B , 符 号 “
-
图2 1 在文法 G 中关于
000 # 111 的语法分析树
表示 “ 或”。
— ——
下面是另一个上下文无关文法 (G2 ) 的 示 例 ,文法描述了一个英语片断 :
〈 句 子 > 〈 名词短语 〈
〉 动词短语 〉
〈 名词短语 〉〈 复合名词 〉
〈I 复合名词 〈
〉介词短语 〉
———
〈 动词短语 〉〈 复合动词 〉
〈I 复合动词 〈
〉介词短语 〉
〈 复合名词 〉
〈 介词短语 〉〈 介词 〉
——
〉名词 〉
〈 复合名词 〉〈 冠词 〈
1 动词 〈
〈 复合动词 〉〈 动词 > 〈 〉名词短语 〉
〈 冠词 〉 a|the
|girl丨flower
〈 名词 〉 boy
—
〈 动词 〉 |
^ touches |
likes sees
〈 介词 〉 with
文 法 G2 包含 10 个 变 元 (写 在 尖 括 号 内 的 词 汇)、 27 个终结符 ( 标准的英文字母加上
空格符 ) 和 18 条 规 则 。下 面 是 L( G2 ) 中 的 3 个 字 符 串 :
a boy sees
the boy sees a flower
a girl with a flower likes the boy
这些字符串都可以由文法 G2 派生出来 ,下面是第一个字符串的派生 :
〈 动词短语 〉
〈 名词短语 〉
〈 句子 〉1
〈 复合名词 〉
1 〈 动词短语 〉
=> < 冠词 〉〈 名词 〉
〈 动词短语 〉
=> a〈 名词 〉〈 动词短语 〉
=> a boy〈 动 词 短 语 〉
=> a boy〈 复 合 动 词 〉
=> a boy〈 动 词 〉
=> a boy sees
2. 1 . 1 上下文无关文法的形式化定义
下面将上下文无关文法 (CFG ) 的概念形式化。
64 第一部分自动机与语言
: Ji
4 上下文无关文法 ( context- free grammar ) 是 一 个 4 元 组 (VM R ,
S),且 _
1.V 是一个有穷集合 ,称为变元集 ( variables ) .
2.2 是 一 个 与 V 不相交的有穷集合 ,称为终结符集 ( terminals )。
3.尺是一个有穷规则集 ( rules ) , 每 条 规 则 由 一 个 变 元 和 一 个 由 变 元 及 终 结 符 组 成 的
字 符 串 构 成。
4.S G V 是起始变元 。
设 U ,V 和 w 是由变元及终结符构成的字符串 ,A
成 ( yield ) UWV ,记
, 记作 M
);
如
=
u >w i
果 ,或者存在序列
=> 2 => •••=> “ =>
W 是
Ai;。该 文 法 的 语 言 是
—V
w 是文法的一条规则 ,称
Ml
|
…,
, M2 ,
S
Uk ,使 得
0
MAI 生
在 文 法 Gi 中 ,V = { A ,
B },2 = { 0 ,
1,# } ,S = A ,
i? 是上面提到的示例中给出的 3 条规
则 。在 文 法 G2 中 ,
,
V = {〈 句子 〉 ,
〈 名词短语 〉 ,
〈 动词短语 〉
,
〈 介词短语 〉 ,
〈 复合名词 〉 ,
〈 复合动词 〉
〈 冠词 〉,
〈 名词 〉,
〈 动词 〉,〈 介词 〉}
2 = { a ,b ,
c,…,
z,
“ ”},符 号 “ ” 表 示 空 白 ,它 放 在 每 个 单 词 a 、 boy 等 的 后 面 ,将 单 词
分开 。
在描述一个文法时 ,通常只写出它的规则 。 岀 现 在 规 则 左 边 的 所 有 符 号 都 是 变 元 ,其
余的符号都是终结符 ,按 照 惯 例 ,起始变元是第一条规则左边的变元 。
2 . 1 .2 上下文无关文法举例
考虑文法 G3 = ( { S } ,{ a, _R ,S),其中规则集尺为 :
b} ,
S-^aSb | SS | e
该文法生成 abab ,aaabbb , aababb 等字符串 。如果把 a 看 作 左 括 号 “ (”,把 b 看作右括
号 “)”,可以看出 L( G3 ) 是所有正常嵌套的括号字符串构成的语言 。 注 意 规 则 右 部 可 能
是空串 £ o
考虑文法 G4 = ( V ,
2,R ,
〈 EXPR > ),其 中 V = 〈 ,TERM 〉
{ EXPR > 〈 , FAC-
〈
TOR ) } , 2 = U ,+ ,
X, (,
——
)},规 则 尺 为 :
〈 EXPR > 〈 EXPR 〉+〈 TFRM〉 |〈 TERM 〉
—
< TERM ( TERM ) X FACTOR ) | ( FACTOR )
) (
< EXPR
\
>
( TERM )
< EXPR > ( TERM )
/
< EXPR > ( FACTOR ) ( FACTOR )
〈 TERM 〉
( TERM )
< EXPRX( TERM )
、
( TERM )
( FACTOR ) ( FACTOR )
( TERM )
( FACTOR ) 〈 FACTOR 〉
'
FACTOR
( a +
\a
图 2- 2 关于字符串a + a X a 和 (a + a ) X a 的语法分析树
式 正 好 相 反 。这 种 分 组 方 式 符 合 标 准 的 乘 法 优 先 于 加 法 和 用 括 号 打 破 这 种 优 先 的 规 定 ,文
法 G4 的 设 计 体 现 了 这 种 优 先 关 系 。 *
2 . 1 .3 设计上下文无关文法
与 在 1 . 1 节 中 讨 论 有 穷 自 动 机 的 设 计 一 样 ,设 计 上 下 文 无 关 文 法 需 要 创 造 力 。因 为 读
者 更 习 惯 为 指 定 的 任 务 给 一 台 机 器 编 程 ,而 不 是 用 文 法 去 描 述 语 言 ,所 以 设 计 上 下 文 无 关
文 法 比 设 计 有 穷 自 动 机 更 加 棘 手 。当 你 面 对 构 造 一 个 CFG 的 问 题 时 ,可 以 单 独 使 用 或 混
合 使 用 下 述 技 巧。
首 先 ,化 繁 为 简 。解 决 几 个 较 简 单 的 问 题 常 常 比 解 决 一 个 复 杂 的 问 题 容 易 ,许 多 CFL
是 由 几 个 较 简 单 的 CFL 合 并 成 的 。 如 果 你 要 为 一 个 CFL 构 造 CFG ,而 这 个 CFL 可 以 分
成 几 个 较 简 单 的 部 分 ,那 么 就 把 它 分 成 几 部 分 ,并 且 分 别 构 造 每 一 部 分 的 文 法 。这 几 个 文
—
法 能 够 很 容 易 地 合 并 在 一 起 ,构 造 出 原 先 那 个 语 言 的 文 法 ,我 们 需 要 做 的 只 是 把 它 们 的 规
则 都 放 在 一 起 ,再 加 入 新 的 规 则 S &|S2|…|Sn 其 中 S Sz ,
…,S& 是 各 个 文 法 的 起 始
变 元。
例 如 ,为 得 到 语 言 { 0”1叫 rz>0 } U { l”0” U>0 } 的 文 法 ,先 构 造 语 言 { 0”l ”
|n>0 }
^
的文法
Si — OSi 11 e
►
—^
和 语 言 { 1 0 |77
W W
0} 的文法
S2 1S2 0|e
Si s , 得 到 所 求 的 文 法^
~
然后加上规则 S |2
—
:
Si |s2
Si OSil | e
S 2 ^ I S2 O | e ~
其 次 ,利 用 正 则 。 如 果 一 个 语 言 碰 巧 是 正 则 的 ,可 先 构 造 它 的 DFA ,再 构 造 它 的
—
CFG 就 容 易 了。通 过 下 述 方 法 可 以 把 任 何 一 台 DFA 转 换 成 等 价 的 CFG: 对 于 DFA 的 每
a )=々 是 DFA 中 的 一 个 转 移 ,则 把 规 则 亿
一 个 状 态 % ,指 定 一 个 变 元 尺 。如 果 5( i ,
aRj 加 入 CFG;如 果 % 是 DFA 的 接 受 状 态 ,则 把 规 则 Rt ^ e 加 入 CFG。设 g 是 DFA 的 。
起 始 状 态 ,则 取 私 作 为 CFG 的 起 始 变 元 。 可 以 验 证 所 得 到 的 CFG 生 成 的 语 言 与 DFA 识
别 的 语 言 相 同。
66 第一部分自动机与语言
2 . 1 .4 歧义性
有时在一个文法中能够用几种不同的方式产生岀同一个字符串 ,这样的字符串有几棵
不同的语法分析树 ,对应几个不同的含义 。 这样的结果对于某些应用可能是不希望见到
的 ,例如 ,对于程序设计语言 ,一个程序应该只有唯一的解释 。
如果文法以不同的方式产生同一个字符串 ,则称文法歧义地产生这个字符串。 如果一
个文法歧义地产生某个字符串 ,则称这个文法是歧义的 。例如 ,对于文法 G5 :
丨
〈 EXPRHEXPR 〉〈 EXPR〉 +
〈 EXPR〉X < EXPR ) 丨(〈 EXPR 〉)|a
这个文法歧义地产生字符串 a + aXa 。图 2 3 给出它的两棵不同的语法分析树 。 -
< EXPR > ( EXPR )
图 2- 3 字 符 串 a + a X a 在 文 法 G5 中 的 两 棵 语 法 分 析 树
一个最左派生 。
如果字符串 w 在上下文无关文法 G 中有两个或两个以上不同的最左派
生 ,则 称 G 歧 义 地 ( ambiguously ) 产 生 字 符 串 w ,如 果 文 法 G 歧 义 地 产 生 某 个 字 符 串 ,
第/ 章 上 下 文 无 关 文 法 67
则 称 G 是 歧 义 的 ( ambiguous )。
有 时 对 于 一 个 歧 义 文 法 能 够 找 到 一 个 产 生 相 同 语 言 的 非 歧 义 文 法 。但 是 ,某 些 上 下 文
无 关 语 言 只 能 用 歧 义 文 法 产 生 ,称 这 样 的 语 言 为 固 有 歧 义 的 ( inherently ambiguous )。问
题 2.4 1 要 求 证 明 语 言 U =)或)= 幻 是 固 有 歧 义 的 。
2. 1 . 5 乔姆斯基范式
在 使 用 上 下 文 无 关 文 法 时 ,简 化 的 形 式 往 往 更 为 方 便 ,一 种 最 简 单 、 最 有 用 的 形 式 称
为 乔 姆 斯 基 范 式 。在 第 4 章 和 第 7 章 中 ,当 设 计 使 用 上 下 文 无 关 文 法 的 算 法 时 ,将 会 发 现
乔 姆 斯 基 范 式 的 用 途。
@0 0© 称 一 个 上 下 文 无 关 文 法 为 乔 姆 斯 基 范 式 ( Chomsky normal form ),如 果
它的每一个规则具有如下形式:
—
A BC
A-^ a
—
其 中 , 是 任 意 的 终 结 符 ,A 、 B 和 C 是 任 意 的 变 元 ,且 B 和 C 不 能 是 起 始 变 元 。 此 外 ,
“
允许规则 S ,其 中 S 是 起 始 变 元 。
任 一 上 下 文 无 关 语 言 都 可 以 用 一 个 乔 姆 斯 基 范 式 的 上 下 文 无 关 文 法 产 生。
证 明 思 路 可 以 将 任 一 上 下 文 无 关 文 法 G 转 换 成 乔 姆 斯 基 范 式 ,转 换 时 分 几 个 阶 段 把
— —
不 符 合 要 求 的 规 则 替 换 成 等 价 的 符 合 要 求 的 规 则 。首 先 ,添 加 一 个 新 的 起 始 变 元 ,然 后 ,
删除所有形如 A e的 规 则 ,再 删 除 所 有 形 如 A B 的 单 一 规 则 。在 删 除 时 ,要 对 文 法
-—
做 适 当 的 弥 补 ,以 确 保 仍 然 产 生 相 同 的 语 言。最 后 ,把 所 有 留 下 来 的 规 则 转 换 成 适 当 的
形 式。
证 明 首 先 ,添 加 一 个 新 的 起 始 变 元 SQ 和 规 则 S0 S , 其 中 S 是 原 来 的 起 始 变 元。
这样可以保证起始变元不出现在规则的右边。
—
第 二 阶 段 ,考 虑 所 有 的 e 规 则 。删 除 一 条 e 规 则 A e ,这 里 A 不 是 起 始 变 元 ,然 后 对
在 规 则 右 边 出 现 的 每 一 个 A ,删 去 这 个 A 后 得 到 一 条 新 的 规 则 。换 言 之 ,如 果 R 是
―— —— —
一 条 规 则 ,其 中 和 是 变 元 和 终 结 符 的 字 符 串 ,则 添 加 规 则 。对 A 的 每 一 次 出 现
^
M ⑽
—
都 如 此 进 行 ,因 而 对 于 规 则 尺 要添加 i? MATW 和 UVZV 。 如 果
有 规 则 i? A ,则 要 添 加 i? e ,除 非 前 面 已 经 删 除 过 规 则 R e 。重 复 进 行 上 述 步 骤 ,直 至
—
删 除 所 有 不 包 括 起 始 变 元 的 e 规 则。
——
第 三 阶 段 ,处 理 所 有 的 单 一 规 则 。删 除 一 条 单 一 规 则 A B , 然 后 ,只 要 有 一 条 规 则
—
B u ,就 要 添 加 规 则 A w ,除 非 是 已 在 前 面 被 删 除 的 单 一 规 则 。 和 前 面 一 样 ,1 是
变 元 和 终 结 符 的 字 符 串 。重 复 上 述 步 骤 ,直 至 删 除 所 有 的 单 一 规 则 。
^
最 后 ,把 所 有 留 下 的 规 则 转 换 成 适 当 的 形 式 。把 每 一 条 规 则 替 换 成 规 则
A ^ U \ A\ , A\ — A2 A2 M3 A3 , , Ak -2 ^ U k -\ U k 其 中 々>3 , 每 一 个 w 是 一 个 变 元 或 终
~ 鲁 參 參
结 符 ,A 是 新 的 变 元。用 新 变 元 L7, 替 换 上 面 规 则 中 的 终 结 符 ,并 增 加 规 则 认 ■ 10
dBD 设 G6 是 下 述 CFG ,用 刚 才 给 出 的 转 换 过 程 把 它 转 换 成 乔 姆 斯 基 范 式 。下 面
用 一 系 列 文 法 规 则 说 明 转 换 的 步 骤 ,其 中 用 黑 体 写 的 规 则 是 新 添 加 进 来 的 规 则 ,用 带 阴 影
的 字 写 的 规 则 是 刚 刚 删 掉 的 规 则。
1. 原 先 的 CFG G6 在 左 边 给 出 。运 用 第 一 步 引 入 新 起 始 变 元 后 得 到 的 结 果 在 右 边 显 示 。
68 第一部分自动机与语言
— — S ASA | aB
A B|S
ASA | aB
A -* B \ S
SQ
S
S
- —
B —^ b|£
—
B b|e
^
2. 左边给岀删除 e 规 则 后 的 结 果 ,右 边 给 出 删 除 A e 后的结果 。
—
S0 S S0 S
S ASA aB a| | S^ASA | aB | a | 5A | A5|S
—— —
A-^ B \ S \ s A B|S k
—
B b|e B^ b
3a. 左边给出删除单一规则 S S 后的结果 ,右边给出删除 So S 后的结果 。
—
S0 S S 0 -^ S \ A S A \ B \ a \ S A \ A S^
S-^ASA | aE | a | SA | AS|S S^ ASA \ aB \ a \ SA\ AS
A-^ B \ S A JB | S
— —
B-^ b B b
— ——
3 b. 删除单一规则 A B 和 A S。
S0 -^ ASA | aB | a | SA | AS S0 a SA | AS
ASA|aB||
— —
S ASA | aB | a | SA | AS S ASA|aB|a|SA | AS
A B\ S \ b A-^ S \ b \ A S A \ ^B \ ^ \ S A \ A S
b B b
4. 添 加 新 的 变 元 和 规 则 ,把 留 下 的 所 有 规 则 转 换 成 合 适 的 形 式 。最 后 得 到 的 符 合 乔
S0
— —— — — — — —
姆 斯 基 范 式 的 文 法 等 价 于 G6 。( 按 照 定 理 2.6 证 明 中 的 转 换 过 程 ,应 把 S
AAi 和 A! SA; 把 S
ASA 替 换 成 S AA 2 和 A 2 SA; 把 A ASA 替 换 成 A
AA 3 和 A 3 SA 。其 中 AH A 2 和 A 3 是 新 引 入 的 变 元 ,这 里 作 了 化 简 ,把 A:,A 2 和 A 3
合并成一个变元并将这些规则以 U a 表示。 译者注 )
—
。 ASA 替 换 成
S0 AAi|LTB|a | SA | AS
S AAi|; t B | a|SA|AS
A b | AAi|l/B | a|SA|AS ——
-
^
2.2 下推自动机
Ai
U^
—
B —^ b
SA
串 ,箭 头 表 示 输 人 头 位 置 ,它 指 向 下 一 个 要 读 的 输 入 符 号。
如 果 在 此 基 础 上 加 一 个 栈 ,我 们 得 到 一 台 下 推 自 动 机 的 示 意 图 ,如 图 2 5 所 示 。 -
状态
控制器 a b b 输人
状态 找
控制器 a a b b 输人
图 2- 4
— 台有穷自动机的示意图 -
图2 5
— 台下推自动机的示意图
下 推 自 动 机 ( PDA ) 能 够 把 符 号 写 到 栈 上 并 在 随 后 读 取 它 ,向 栈 中 写 入 一 个 符 号 将 把
栈 中 其 他 的 所 有 符 号 “下 推”。在 任 何 时 刻 ,可 以 读 和 删 去 栈 顶 的 符 号 ,其 余 的 符 号 向 上
移 动 。向 栈 写 一 个 符 号 ,常 常 称 为 推 入 ( pushing ) 这 个 符 号 ,而 删 除 一 个 符 号 称 为 弹 出
它 。需 要 注 意 的 是 ,对 栈 的 所 有 访 问 ,无 论 读 写 ,都 只 能 在 栈 顶 进 行 ,换 言
( popping )
之 ,栈 是 一 个 “先 进 后 岀” 的 存 储 设 备 。如 果 把 某 个 信 息 写 到 栈 上 ,然 后 又 把 另 外 一 些 信
息 写 到 栈 上 ,那 么 前 面 写 的 信 息 变 成 不 可 访 问 的 ,一 直 到 在 其 后 面 写 人 的 信 息 全 部 被 删 除
为 止。
可 以 用 自 助 餐 厅 服 务 台 上 的 盘 子 来 解 释 栈 ,一 叠 盘 子 放 在 弹 簧 上 ,把 一 个 新 盘 子 放 在
这 叠 盘 子 的 顶 上 时 ,它 下 面 的 盘 子 依 次 向 下 移 动 ,下 推 自 动 机 的 栈 就 像 一 叠 盘 子 ,每 个 盘
子 上 写 着 一 个 符 号。
栈 的 作 用 体 现 在 它 能 保 存 无 限 的 信 息 量 。有 穷 自 动 机 ( DFA ) 不 能 用 它 的 有 限 存 储 保
存 大 数 据 量 的 字 符 串 ,所 以 它 不 能 识 别 语 言 { 0 1叫〃>0 } ,而 PDA 可 以 用 栈 保 存 它 看 见
的 0 的 个 数 ,从 而 能 够 识 别 这 个 语 言 ,因 此 ,栈 的 无 界 性 使 得 PDA 能 够 保 存 大 小 没 有 限
制 的 数 。下 面 非 形 式 化 地 描 述 关 于 语 言 { 0”1叫 n>0 } 的 PDA 如 何 工 作 :
读 取 输 入 串 的 符 号 ,每 读 一 个 0 , 把 它 推 入 栈 ,一 旦 看 见 1 之 后 ,每 读 一 个 1 ,把 一
个 0 弹 出 栈 ,当 栈 中 的 0 被 清 空 时 恰 好 读 完 输 入 串 ,则 接 受 这 个 输 入 。 如 果 在 还 有 1 没 有
读 的 时 候 栈 已 变 空 ,或 者 在 栈 中 还 有 0 的 时 候 1 已 经 读 完 了 ;或 者 0 出 现 在 1 的 后 面 ,则
拒 绝 这 个 输 入。
下 推 自 动 机 可 以 是 非 确 定 型 的 ,确 定 型 下 推 自 动 机 与 非 确 定 型 下 推 自 动 机 在 语 言 识 别
能 力 上 不 相 同 。在 2 . 4 节 ,我 们 将 看 到 一 些 非 确 定 型 下 推 自 动 机 能 识 别 但 确 定 型 下 推 自 动
机 不 能 识 别 的 语 言 。我 们 将 在 例 2 . 1 0 和 例 2 . 1 1 给 出 需 要 非 确 定 型 自 动 机 才 能 识 别 的 语
言。确 定 型 有 穷 自 动 机 与 非 确 定 型 有 穷 自 动 机 能 识 别 相 同 的 语 言 ,但 对 于 下 推 自 动 机 却 有
区 别 。由 于 非 确 定 型 下 推 自 动 机 等 价 于 上 下 文 无 关 文 法 ,所 以 我 们 集 中 讨 论 非 确 定 型 下 推
自 动 机。
2.2. 1 下推自动机的形式化定义
除 栈 之 外 ,下 推 自 动 机 的 形 式 化 定 义 类 似 于 有 穷 自 动 机 。 栈 是 一 个 存 放 符 号 的 设 备 ,
这 些 符 号 取 自 某 个 字 母 表 。机 器 对 于 它 的 输 人 和 栈 ,可 以 使 用 不 同 的 字 母 表 ,因 此 需 要 同
时 指 定 一 个 输 人 字 母 表 2 和 一 个 栈 字 母 表 r。
任 何 自 动 机 的 形 式 化 定 义 的 核 心 都 是 转 移 函 数 ,因 为 要 用 它 描 述 自 动 机 的 动 作 。 给 定
re
= rUU },转 移 函 数 的 定 义 域 为 QX 2 exre
。于 是 ,在 当 前 状 态 下 ,下 一
70 第一部分自动机与语言
个读到的输入符号和栈顶的符号决定了下推自动机的下一个动作 。这两个符号都可以是 ,
使机器能够在不读输入符号或者不读栈中符号的情况下做动作 。
关于转移函数的值域 ,需要考虑在特定情形下允许自动机做什么 。 它能够进入某个新
的状态并可能在栈顶写入一个符号 。通过返回 Q 的 一 个 成 员 和 的 一 个 成 员 ,即 Q X A
的一个成员 ,函数 5 可以指出这个动作 。由于在这个模型中允许非确定性 ,所以可能有若
干个合法的下一个动作 ,转移函数通过返回 Q x r e 的一个子集 ,即 p( Q x r e ) 的 一 个 成 员
来体现转移动作的非确定性 。 所有这些子集合并在一起 ,得到转移函数 5 的形式为
xre
_
Q x i£ -^ P ( Q x r£ ) o
2,
下 推 自 动 机 ( pushdown automaton ) 是 6 元 组 ( Q , 5, ,
T, F ),这 里
Q, r
2, 和 F 都 是 有 穷 集 合 ,并 且
1.Q 是 状 态 集 。
2 . 2 是 输 入 字 母 表。
3.r 是 栈 字 母 表 。
A . 8:Q X I e X r e^ P ( Q X r e ) 是 转 移 函 数 。
5.g0 6 Q 是 起 始 状 态 。
6.FGQ 是 接 受 状 态 集 。
一台下推自动机 M=( Q,
2,r,5,
%,F) 的计算过程如下 :它接受输人 tt,
,如果能够
把 写 成 VO — UUi ,这里每一个叫d ,并且存在状态序列 ro * n ,
… ,厂讲 6 Q 和
-
1V 2 •••
^
…, b ) 65( n ,
叫 +1 ,
a ),其中 b:
^
Si = at ^ Si ->r \ = bt ,
a, 1\
和〖 er 该条件说明 M 在每一步都完全按照当时的状态 、 栈顶符号和下一个输入符号
动作 。 '
3. 该条件说明在输人结束时出现一个接受状态 。
则 字 符 串 & 是 M 在计算的接受分支中的栈内容序列 。
-
2 . 2. 2 下推自动机举例
F 面是前面描述的识别语言 {0 P U>0 } 的 P D A 的 形 式 化 定 义 。令 =
( Q ,2 , r , ,9l ,F ) , 其 中
^ Q—{ ,
2= { 0 ,
92 ,
1}
93 ,
r= { o , $ }
,
%}
%}
5 由下表给岀 ,表中空白项表示 0 。
输入 o
栈 0 $ 0 $ 0 $
9i {( % ,$ )}
92 {( <?2 ,
0 )} {( 93 ,
e )}
93 {( % ,)} { ( qA » e ) }
94
_
系夕章上下文无关文法 71
- -
—
也可以用状态图描述 PDA ,如图 2 - 6 和图 2 7 、 图 2 8 所示 。这种图类似于描述有穷
自动机的状态图 ,但要做一些修改 ,使得它能说明 PDA 在从一个状态转移到另一个状态
时如何使用栈 。 用 “ a ,b c” 表示当机器从输人中读到 a 时
可以用 c 替换栈顶的符号 6 。a 、 6 和 c 中的任何一个都可以是
0 如 果 a 是 e ,则机器做这个转移 ,而不读取输入中的任何符
0
号 。如果 6 是 e ,则机器做这个转移 ,而不读栈中的任何符号 ,
也不从栈中弹岀任何符号 。 如果 c 是 e ,则机器做这个转移 ,
而不在栈中写任何符号 。
PDA 的形式化定义没有提供检验空栈的直接手段 。 这台 图 2 - 6 识 别 { O n l n |n O ) ^
—
PDA 开始把一个特殊符号 $ 放人栈中 ,就能够起到检验空
栈的作用 ,当机器再次看见 $ 时 ,就知道栈实际上已经空了。今后 ,在 PDA 的非形式化
的 PDAM! 的 状 态 图
描述中用这种方法判断空栈 。
类似地 ,PDA 不能直接检验是否到达输人的末端 ,对于这台 PDA ,只有当它位于输
入的末端时 ,接受状态才起作用 , 这就能够起到同样的效果 。 于是 ,从现在起 ,假设
PDA 能够检验是否到达输入的末端 ,并且可以用这种方式实现 。
这个例子给出一台识别下述语言的 PDA M2 :
{ a ' b j ck \ i , j ,
々>0 且 i = j 或 f =々}
非形式化地表示 ,识别该语言的 PDA 先读 a ,并且把 a 推入栈 。当读完 a 时 ,机器把它们
全部放到栈中 ,以便能够把它们与 b 或 c 进行匹配 。 由于机器不知道下面 a 是与 b 匹配还
是与 c 匹配 ,需要想点办法 ,在这里迟早要用到非确定性 。
利用非确定性 ,这台 PDA 可以猜想 a 是与 b 匹配还是与 c 匹配 ,如图 2 - 7 所示 。设
想机器有两个非确定性的分支 ,每一种可能的猜想是一个分支 。如果有一个匹配成功 ,则
对应的分支接受 ,从而整个机器接受 。问题 2.27 要求证明非确定性是用 PDA 识别这个语
言所不可缺少的 。
C,$~
《3 >
e, e—►$
e, $
H ^ 5
给出一台识别语言 { vuw l e { o ,i } #
} 的 P D A M3 。注 意 表 示 倒 写 的
VU 。 这台
PDA 的非形式化描述和状态图如下 :
^
开始时 ,把读到的符号推入栈中 ,在每一步非确定性地猜想已经到达字符串的中点 ,
然后变成把读到的每一个符号弹岀栈 ,检查在输入中和在栈顶读到的符号是否一样 。如果
它们总是一样的 ,并且当输人结束时栈同时被清空 ,则接受 ;否则拒绝 。
72 第一部分自动机与语言
这台机器的状态图如图 2 8 所示 。 -
问题 2.28 证明识别这个语言需要一台非确定型 PDA。
2 . 2. 3 与上下文无关文法的等价性
本节证明上下文无关文法与下推自动机在能力上是等
价的 ,它们都能够描述上下文无关语言类 。下面要说明如
何把任意一个上下文无关文法转换成能识别相同语言的下
推自动机 ,以及反过来把任意一台下推自动机转换成产生
相同语言的上下文无关文法 。由前面的定义可知上下文无 图2 8- P D A M3 的 状 态 图 ,
关语言是能用上下文无关文法描述的语言 ,因此本节的目
识别 < Ue { o ,i > * }
标是证明下述定理 。
織胁册4 一 个 语 言 是 上 下 文 无 关 的 ,当 且 仅 当 存 在 一 台 下 推 自 动 机 识 别 它 。
和通常对待 “当且仅当” 型定理一样 ,有两个方向要证明 ,在本定理中 ,这两个方向
都是很有意思的 ,首先证明比较容易的从左到右的方向 。
tetljjiiili 如 果 一 个 语 言 是 上 下 文 无 关 的 ,则 存 在 一 台 下 推 自 动 机 识 别 它 。
证 明 思 路 设 A 是一个 CFL,根据定义 ,存在一个 CFG G 产生它 。我们要说明如何
把 G 转换成一台等价的 PDA P。
通过确定是否存在关于输人 w 的派生 ,当 G 产生 w 时 ,PDA P 接受这个输人 。记得
派生就是当文法产生一个字符串时所做的替换序列 ,派生的每一步产生一个变元和终结符
的中间字符串 (intermediate string )。设计 P ,以确定是否有一系列使用 G 的规则替换 ,
能够从起始变元导出 uu 0
P 的非形式描述如下 : A
1. 把标记符 $ 和起始变元放人栈中。
$
2. 重复下述步骤 : 0 1 A 1 A 0
字 符 串。
b. 如 果 栈 顶 是 终 结 符 a ,则 读 取 下 一 个 输 人 符 号 ,并 且 把 它 与 a 进 行 比 较 。如 果 它 们
匹 配 ,则 重 复 ,如 果 它 们 不 匹 配 ,则 这 个 非 确 定 性 分 支 拒 绝 。
c. 如 果 栈 顶 是 符 号 $ ,则 进 入 接 受 状 态 ,如 果 此 刻 输 入 已 全 部 读 完 ,则 接 受 这 个 输
入 串。
2,
证 明 下 面 形 式 化 地 给 出 下 推 自 动 机 P =( Q , r,d ,gstavF) 的 构 造 细 节 。为 使 构 造
更 清 楚 一 些 ,采 用 一 种 缩 写 记 号 表 示 转 移 函 数 ,用 这 种 记 号 方 式 ,机 器 能 够 一 步 把 一 个 字
符 串 写 人 栈 内 。同 时 引 人 附 加 的 状 态 ,实 现 每 次 写 入 这 个 字 符 串 的 一 个 符 号 ,从 而 模 拟 出
一 次 写 入 字 符 串 的 动 作 。在 下 述 形 式 构 造 中 实 现 了 这 样 的 模 拟 。
设 9 和 r 是 PDA 的 状 态 ,a 属 于 2e ,s 属 于 re 。我 们 要 求 PDA 读 a 并 且 弹 出 5 时,
从 g 到 r ,而 且 要 它 同 时 把 整 个 字 符 串 W 推 入 栈 。可 以 如 下 完 成 这 个 动 作 :引 入 新
的状态 % ,
•• ,
力一 1 ,并 且 令 转 移 函 数 如 下 :
,,) { (
_包含(9 I
^ 2 > W/
— l )}
S( Q 2 ^ = { ( q3 9 u i - 2 ) }
— i ,£ ,£ ) {( ,
Wi ) }
使 用 记 号 表 示 当 g 是 P 的 状 态 ,a 是 下 一 个 输 人 符 号 以 及 s 是 栈 顶
符 号 时 ,PDA P 能 够 读 a 和 弹 出 5 , 然 后 把 字 符 串 w 推 人
——
q l a, s—^ z
-
栈 和 转 移 到 状 态 r 。图 2 1 0 形 象 地 描 述 了 这 个 动 作 的
© A
实 现。 a , s^ xyz => e,e y
P 的 状 态 集 Q = { 9start ,Ql。
■
。
。,9accept } UE , 这 里 E 是 实
现 刚 才 描 述 的 缩 写 所 需 要 的 状 态 集 合 ,开 始 状 态 为 qstari , e,e x
只有一个接受状态 ga pt 。
^
转 移 函 数 定 义 如 下 。从 初 始 化 栈 开 始 ,把 符 号 $ 和 5 图 2 - io 缩写 ( m : )e
推 人 栈 ,实 现 步 骤 1 的 非 形 式 描 述 是 : ( gstart , a,
diq , s) 的 实 现
^
^
e
然 后 进 行 步 骤 2 主 循 环 中 的 转 移。
首 先 ,处 理 情 况 (a ),这 时 栈 顶 是 一 个 变 元。令
中 的 一 条 规 则 }。
其 次 ,处 理 情 况 ( b ),这 时 栈 顶 是 一 个 终 结 符 。令
最 后 ,处 理 情 况 ( c ), 这 时 栈 顶 是 空 栈 标 记 符 $ 。令 (?( glcK p ,
e ,$ )= { ( gaccept ,
e) } o )
-
图 2 1 1 给 出 了 P 的 状 态 图。 m
利 用 在 引 理 2.1 3 中 开 发 的 过 程 ,
e,E— S$
把 下 述 CFG G 转 换 成 一 台 PDA Pi
^
—
S aTb | b -
0
,A ^W
£
— 对于规则 > VV
^
^
loop
T Ta | e
a,a — 对于终结符 a
-
转 移 函 数 如 图 2 1 2 所 示。 ■
下 面 证 明 定 理 2 . 1 2 的 反 方 向 。对 于 正 方 向 我
们 给 出 一 个 把 CFG 转 换 成 PDA 的 过 程 ,主 要 思 想 图 2- 1 1 P 的状态图
74 第一部分自动机与语言
— 0 0
^^
e, S >b
0 , a
^ loop
e, $ — —
e, 5 ►b
b, b —
-
图 2 12 & 的状态图
1. 有唯一的接受状态 gaccept
/>
首先 ,为了简化工作 ,对 P 作轻微修改 ,使其具有以下三个特点 :
时一样 。
°
^
2. 在接受之前清空栈 。
3. 每一个转移把一个符号推人栈 (推入动作 ),或者把一个符号弹出栈 ( 弹出动作 ),
但不同时做这两个动作 。
使 P 具有特点 1 和特点 2 较容易 ,使 P 具有特点 3 就要把每一个同时弹出和推入的转
移替换成两个转移 ,中间要经过一个新的状态 ;把每一个既不弹出也不推入的转移替换成
两个转移 ,先推入任意一个栈符号 ,然后再把它弹岀 。
要设计 G ,使 得 产 生 把 P 从 p 带到 g 并且以空栈开始和结束的所有字符串 ,必须
了解 P 对这样的字符串如何运行 。对于任何一个这样的字符串:r ,因为 P 的每一个动作或
者是推入或者是弹出 ,但是对空栈不能弹出 ,所以 P 对:r 的第一个动作一定是推入 。类似
地 ,因为在结束时找是空的 ,所以对的最后一 个动作一 定是弹出 。 *
是栈在计算中间变成空的时候的状态 。
i:,
证明设 P = ( Q, 。
r ,(5,g ,{ gaccept }),要构造 G。G 的变元集是 { A p J g G Q },起
始变元是 A % ,%c 。 下面三点描述了 G 的规则:
1. 对每一个 /> ,g,
cepl
r, Q, 和a, wer
6 2e ,如果 3( /? ,
a, e
e ) 包 含 0, S,
M ) 且 3( 、 6 ,W )
^
——
6
包含 ( q ,
e ),则把规则 aAri 6 放人 G 中 。
2. 对 每 一 个 把 规 则 A內 AprA 放 入 G 中 。
3. 最 后 ,对 每 一 个 / 把 规 则 Ap/ e 放入 G 中 。 )
-
可以从图 2 13 和图 2 - 14 获得一些关于这个构造的直觉 。
栈髙度
一 由 产 生
/
输入串
>
产生
由儿, 由<产生
图 2- 1 3 对 应 规 则 的 PDA 计 算
栈髙度
-一 由 产 生
输入串
由 产 生
—
只有一步的派生一定使用一条右端不含变元的规则 。在 G 中右端不出现变元的规则只
能是 AM e 。显然 ,输人 e 把 P 从 f 和空栈带到户和空栈 ,从而证明了归纳基础 。
归 纳 步 骤 假 设 断 言 对 长 度 不 超 过 6 的 派 生 成 立 ,其 中 下 面 证 明 断 言 对 长 度 为
々+ 1 的派生也成立 。
假设 A r 使用々+ 1 步 。 该派生的第一步是 A内 =>a A 劝或
4: ,分别处理
这两种情况 。 ~
对于第一种情况 ,根据:r 中由 Ar5 产生的部分),有:r = a ,因为 Ar54 y 使用々步 ,
>
76 第一部分自动机与语言
根据归纳假设 ,P 能够从 r 和 空 栈 一 块 转 移 到 5 和 空 钱 。 因 为 aA 幼 是 G 的 一 条 规
则 ,故对某个栈符号 G ,S( p 9 a ,e ) 包 含 ( r,M ) 和 5( 5 ,6,M ) 包 含 ( q,e )。于是 ,如 果 P
从 状 态 和 空 栈 开 始 ,那么在读到 a 后 ,它 能 够 转 移 到 状 态 r,并且把 w 推 入 栈 顶 。 然 后
读把它带到 并 且 在 栈 中 留 下 心 接 着 在 读 到 6 后 ,它 能 够 转 移 到 & 并 且 把 a 弹 出
^
栈。因 此 ,I 能够把 P 从 p 和空栈带到 g 和 空 栈 。
对于第二种情况 ,根据:r 中 由 和 Aq 分别产生的部分 3/ 和 有:r =3 。因为
和 都 不 超 过 々 步 ,根 据 归 纳 假 设 ,J 能够把 P 从 P 带到 r ,z 能够把 P 从 r 带到心
并且在派生的开始和结束时都是空栈 。因 此 ,i 能 够 把 P 从 和 空 栈 带 到 g 和 空 栈 。这就
^
完成了归纳步骤 。
隱 如 果: _
和 空 栈 带 到 <7 和 空 栈 ,则 八 內 产 生:r 。
c 能 够 把 P 从 />
通 过 对 输 入:r ,P 从 /> 和空栈到 9 和空栈的计算步数作归纳 ,来证明这个断言 。
归 纳 基 础 计 算 有 0 步。
―
如果计算有 0 步 ,则 它 开 始 和 结 束 在 同 一 个 状 态 ,比 如 说 是 因 此 ,我 们 要 证 明
^
App x 0 在 0 步内 ,P 无法读入任何字符 ,故 :
r = e 。 根 据 G 的 构 造 ,它有规则焱沖 e,
这就证明了归纳基础 。
归 纳 步 骤 假 设 断 言 对 长 度 不 超 过 々 的 计 算 成 立 ,其中々>0 , 要证明断言对长度为
+
々 1 的计算也成立 。
+
假设 P 有一个计算 ,在々 1 步 内 x 把 /> 连 同 空 栈 一 块 带 到 g ,或 者 仅 在 计 算 的 开 始
和结束时栈是空的 ,或者在其他某个地方栈也变成空的 。
对于第一种情况 ,第一步推入栈的符号一定和最后一步弹出栈的符号相同 ,把 这 个 符
号 称 为 心 设 a 是第一步读的输入符号 ,6 是 最 后 一 步 读 的 输 入 符 号 ,r 是 第 一 步 后 的 状
e ) 包 含 ( r ,w ) 且 5( S ,
态 ,5 是最后一步之前的状态 ,那么 ,d i p ,a , 6,M ) 包 含 (g ,
e ),从
而在 G 中有规则 A p a A n b。
*
令 jy
根 据 归 纳 假 设 有 从 而 ,A
^
及 栈 底 的 符 号 心 从 而 P 能够在输人
4x ^
于 r 的计算中删去第一步和最后一步 ,故 关 于 y 的 计 算 有 U + 1 ) — 2 =
>
^
是1 中不包括 <2 和 6 在内的部分 ,即:r = a 3 ,输人:y 能够把 P 从 r 带 到 s 而不触
上 连 同 空 栈 一 块 从 r 转 移 到 5 。由 于 已 经 从 原 来 关
1 步 ,于 是 ,
^
0
对于第二种情况 ,设 r 是 关 于 x 的计算中除开始和结束之外栈变成空的时候的状态 ,
于 是 ,计 算 从 到 r 和从 r 到 g 的部分都不超过々步 ,记 为计算前一部分读的输入 ,z
^^
为 后 一 部 分 读 的 输 人 ,根 据 归 纳 假 设 有 和 八 4 。 由 于 G 中有规则 A A ,
~
^^
^
故 Apq >x , 证毕 。
这就完成了引理 2.15 和定理 2.12 的 证 明 。 毽 上下文
无关语言
刚 才 证 明 了 下 推 自 动 机 识 别 上 下 文 无 关 语 言 类 ,这 个 证 明 使
我们能够给出正则语言和上下文无关语言的关系 ,如 图 2 15 。因 - 正则
为每一个正则语言都可以用有穷自动机识别 ,而 每 一 台 有 穷 自 动 语言
机 都 自 动 地 是 一 台 下 推 自 动 机 ,所 以 只 要 不 考 虑 它 的 栈 ,每 一 个
正则语言也是一个上下文无关的语言 。 图 2- 1 5 正则语言与上下
Ci SD 每一个正则语言都是上下文无关的。 文无关语言的关系
襄夕章上下文无关文法 77
2.3 非上下文无关语言
本节提出一项技术 ,可以用来证明某些语言不是上下文无关的 。在 1.4 节中介绍了泵
引 理 ,用来证明某些语言不是正则的 ,本节对上下文无关语言给岀类似的泵引理 ,它 指 出
每一个上下文无关语言都有一个特殊的值 ,称为泵长度 ( pumping length ),使得这个语言
中的所有长度等于或大于这个值的字符串都能够被 “抽取 ”,这一次抽取的意思要复杂一
点 ,它是指字符串能被划分成 5 段 ,其中第 2 段和第 4 段 可 以 同 时 重 复 任 意 多 次 ,并 且 所
得到的字符串仍然在这个语言中。
关于上下文无关语言的泵引理
( 关 于 上 下 文 无 关 语 言 的 泵 引 理) 如 果 A 是 上 下 文 无 关 语 言 ,则 存 在 数
P ( 泵长度),使得 A 中 任 何 一 个 长 度 不 小 于 的 字 符 串 5 都 能 被 划 分 成 5 段 s= 且
满足下述条件:
1. 对 于 每 一 个
2. I v y | > 0 ;
^ ^ G A;
uv y
3. I
i 或:
当 s 被划分成 MXAryz 时 ,条 件 2 保证 ; y 不是空串 ,否则定理自动成立 ,但毫无意
、:
义 。条件 3 保证 I; r 和 三 段 在 一 起 的 长 度 不 超 过 /> ,这 个 技 术 性 条 件 在 证 明 某 些 语 言
不是上下文无关语言时有用。
^
证 明 思 路 设 A 是 CFL ,G 是 产 生 A 的 CFG 。要 证 明 A 中任何足够长的字符串 6 都
能够被抽取 ,并且抽取后的字符串仍在 A 中 。
设 s 是 A 中 一 个 很 长 的 字 符 串 ( 后 面 将 明 确 给 出 “很 长” 的 意 思 )。由 于 s 在 A 中 ,
它 可 以 用 G 派生出来 ,从 而 有 一 棵 语 法 分 析 树 。由 于 s 很 长 ,5 的 语 法 分 析 树 一 定 很 高 ,
也 就 是 说 ,这 棵 语 法 分 析 树 一 定 有 一 条 很 长 的 从 树 根 的 起 始 变 元 到 树 叶 上 的 终 结 符 的 路
径 。根据鸽巢原理 ,在这条长路径上一定有某个变元 R 重 复 出 现 。正 如 图 2 16 所 示 ,这 -
种重复使得我们可以用第一次出现的尺下面的子树代替第二次岀现的尺下面的子树 ,并
且仍得到一棵合法的语法分析树 。由 此 ,可以像图中表示的那样 ,把 s 切 成 5 段 u v x y z ,
重复第 2 段和第 4 段 ,得到的字符串仍在 A 中 。换言之 ,对任意的
V /\V z
v x y
图 2 - 16 语法分析树上的外科手术
、
有 bh 片 树 叶 。因 此 ,如 果 语 法 分 析 树 的 高 度 不 超 过 /z ,则 它 产 生 的 字 符 串 的 长 度 不 超 过
b
+
/l l
反 之 ,如 果 一 个 产 生 的 字 符 串 长 度 不 小 于 炉
O
+ 1 ,则 生 成 它 的 每 个 语 法 树 高 度 至 少 为
p=b
^^
设 G 中 变 元 的 数 目 为|V|。令 泵 长 度 9 则 A 中任一长度不小于 p 的字符
串 s 的 语 法 分 析 树 的 高 度 不 小 于|V
| 1 ,这 是 因 为 + + + 1。
为说明如何抽取 设 r 是 s 的 一 棵 语 法 分 析 树 ,如 果 s 有 若 干 语 法 分 析 树 ,取 r 是
的 长 度 不 小 于 IVI ^
结 点 数 最 少 的 语 法 分 析 树 ,由 于 r 的 高 度 不 小 于
| V|+ 1 ,从 而 从 根 节 点 出 发 的 最 长 路 径
+ 1 并 包 含|V|+ 2 个 结 点 ,其 中 一 个 结 点 为 终 结 符 ,其 他 为 变 元 。因
此 该 路 径 至 少 有 IVI + 1 个 变 元 ,因 为 只 有 树 叶 是 终 结 符 ,故 这 条 最 长 的 路 径 上 至 少 有
_
IVI + 1 个 变 元 ,而 G 只 有|V|个 变 元 ,故 有 某 个 变 元 尺 在 这 条 路 径 上 不 只 出 现 一 次 。
|+ 1 个 变 元 中 重 复 出 现 的 变 元 。
为 了 后 面 的 方 便 ,选 取 R 为 这 条 路 径 上 在 最 下 面 的|V
-
按 照 图 2 16 把 A 划 分 成 在 每 一 个 尺 的 下 面 有 一 棵 子 树 ,它 产 生 s 的 一 部 分。上
面 的 i? 有 一 棵 较 大 的 子 树 ,产 生 vscy; F 面 的 尺 有 一 棵 较 小 的 子 树 ,恰 好 产 生:r。 这 两 棵 树
由 同 一 个 变 元 产 生 ,因 而 可 以 相 互 替 换 ,并 且 仍 得 到 一 棵 有 效 的 语 法 分 析 树。对 于 每 一 个
C>1,用较大的子树反复替换较小的子树以给出字符串 wzAryz 的 语 法 分 析 树,用 较 小 的 子 树
替 换 较 大 的 子 树 以 产 生 字 符 串 这 就 证 实 了 引 理 中 的 条 件 1 ,下面转到条件 2 和条件 3。
为了得到条件 2 , 必须保证 t 或
; 不 都 是 e 。如 果 它 们 都 是 e ,则 用 较 小 的 子 树 替 换 较
、 ^
大 的 子 树 得 到 的 语 法 分 析 树 的 结 点 比 r 少 ,并 且 仍 然 能 够 产 生 .s 。但 这 是 不 可 能 的 ,因 为
我 们 已 经 选 取 r 为 . 的 结 点 数 最 少 的 语 法 分 析 树 ,这 也 是 为 什 么 要 这 样 选 取 r 的 原 因 。
为 了 得 到 条 件 3 , 必 须 保 证 的 长 度 不 超 过 p ,在 s 的 语 法 分 析 树 中 ,上 面 的 尺
产 生 我 们 选 取 尺 使 得 它 的 两 次 出 现 都 落 在 所 在 路 径 的 最 下 面 的 I V|+ 1 个 变 元 中 ,
而 这 条 路 径 又 选 取 的 是 语 法 分 析 树 中 的 最 长 路 径 ,因 此 R 产 生 的 子 树 的 高 度 不 超 过
| +
V| 1。这 么 高 的 树 只 能 产 生 长 度 不 超 过 6 + 1 = 户的字符串 。
关 于 用 泵 引 理 证 明 语 言 不 是 上 下 文 无 关 的 提 示 ,请 复 习 例 1.38 , 在 那 里 讨 论 了 用 关 于
正 则 语 言 的 泵 引 理 证 明 非 正 则 性 的 有 关 问 题。
t愚屬> 用泵引理证明语言
^
B = { anbncn \ rj 0}
不 是 上 下 文 无 关 的。
假 设 B 是 CFL,要 得 出 矛 盾 的 结 果 。令
存 在 。选 取 字 符 串 s=
p是B 的 泵 长 度 ,根 据 泵 引 理 ,这 个
显 然 ,s 属 于 B 且 长 度 不 小 于 泵 引 理 称 5
p
能够被抽取
—,
定
但 是 我 们 证 明 这 是 不 可 能 的 ,换 言 之 ,我 们 证 明 不 管 怎 么 把 s 划 分 成 uvxyz ,总 要 违 反 泵
引 理 中 的 一 个 条 件。
首 先 ,条 件 2 规 定 I;
或者 不 是 空 串 ,然 后 根 据 子 串 和 是否含有一种以上的符
号 ,考 虑 下 述 两 种 情 况 :
1. 当 I;和 ^
都 只 含 有 一 种 符 号 时 ,a 和 b 或 b 和 c 不 会 都 在
^ ^p 中 ,同 样 也 不 会 都 在 y
中 ,这 时 字 符 串
引 理 的 条 件 1 ,矛 盾 。
2. 当 或者
^ ㈣
2 不 可 能 含 有 个 数 相 同 的 a 、 b 和 c。因 此 ,它 不 属 于 B ,这 违 反 泵
含 有 一 种 以 上 符 号 时, 可 能 含 有 个 数 相 同 的 3 种 符 号 ,但 是 这
^ ^
些 符 号 的 次 序 不 可 能 正 确 。因 此 它 不 属 于 B ,矛 盾 。
系夕章上下文无关文法 79
令 用 泵 引 理 证 明 c 不是 CFL。该语言很像例
2.20 中的语言 B ,但证明它不是上下文无关语言要复杂一些 。
假设 C 是 CFL ,要得出矛盾。令 p 是泵引理给出的泵长度 ,使用前面使用过的字符
串. 但 是 这 次 必 须 既 “抽 进 ” 又 “抽 出 ”。令 并 且 再 次 考 虑 例 2.20
中出现的两种情况 。
1. 和 都仅含一种符号 。注意在前面情况 1 中使用的理由不再适用 ,这是因为 C 的
^ ^
字符串中 a 、 b 、 c 的个数不必相等 ,而只需是非降序的 。我们必须更仔细地分析这种情况
才能证明 s 不可能被抽取 。 注意到由于 和 都只含一种符号 ,a 、 b 和 c 中有一种不岀现
在
^
和
^
中 。 根据哪个符号不出现 ,把这种情况进一步分成 3 种子情况 :
a. a 不 出 现 。 用抽出得到字符串
的个数或者 c 的个数比 s 的少,因此 ,它不属于 C,矛盾 。
^ ^ ,它含有 a 的个数与 5 的相同 ,但是 b
得岀矛盾的结论 ,令是泵引理给出的泵长度 。 )
这次选取字符串 s 不那么明显 。可以取字符串 M 10 N ,它是 D 的成员且长度大于户 ,
因此好像是一个好的候选对象 ,但是 ,按如下划分 s ,它就能够被抽取 ,因而不符合我们
的需要 。
_ ^
0
2
000… 000 0 0 000… 0001
wi;
首先 ,子串 iAr
2.4 确定型上下文无关语言
回想一下 ,确定型有穷自动机和非确定型有穷自动机具有等价的语言识别能力 。相
80 第一部分自动机与语言
6. 是接受状态集 。
转移函数 5 必须满足如下条件 :
给定任意一组 g Q, 和
5( g ,
a,: 3( g ,
c ), a,e ),
5( g ,
e,x )和 d( q ,
e,e)
中有且仅有一个不是0 。
30 形式的单次转移 ,或输出 0 来指示不做任何动作 。 举
转移函数可能输出一个 ( r ,
一个例子来说明这些可能性 。 假设转移函数为 5 的一个 DPDA M 位于状态 g ,下一个输入
符号是 栈顶符号是:r 。如果 5( g ,
a,:r )= ( r ,
3;),那么 M 读入 a ,从栈中弹出:r ,进人状
态 r ,并且将 y 压入栈 。抑或 ,若扒 g ,
a,
:r )= 0 ,那么当 M 位于状态 g 时 ,没有读入 a 并
弹出 x 对应的转移 。这种情况下 ,3 的条件要求 3( g , e,
e ),S i q ,
a, oc ),8( q ,e ,e ) 之 一 非
空 ,然后 M 作相应转移 。5 的条件避免了 DPDA 在同样的情况下执行两种不同的动作
( 例如 :若 5( g ,
a, e )关 0 就会发生这种情形 ),从而确保了确定型行为 。当
x )关 0 且 5( 心 a ,
栈非空时 ,DPDA 在任何状况下都只有一个合法的转移 。 若栈为空 ,只有当转移函数指明
一个弹出 e 的转移时 ,DPDA 才能转移 。否则 ,DPDA 没有合法的转移 ,拒绝 ,同时不再
读取剩余的输入 。
DPDA 接受的方式与 PDA 相同 。如果 DPDA 在读入输入字符串的最后一个符号后进
入接受状态 ,则接受这个字符串 。其他任何情况下 ,则拒绝这个字符串 。 两种情况下会产
生拒绝 :其一 ,DPDA 读入了全部输入 ,但最后没有进入接受状态 ;其二 ,DPDA 没有成
襄章上下文无关文法 81
^
^
末端 。形式化地 ,置 8( q e )=( % ,$ )。对 : a,:c )关 0 ,若 q F',则置
S i q ^ a ,$ )=( reject 5 若 g 6〆,则置 5((? , a ,$ ) F ( gac , e )。M a G 2 置 5 ( greject ,
a,
e )= reject
^
^ 以及占( 9accept ,a ,e )=( greject ,
最后 ,修改 P 使其拒绝 ,避免在输入末端之前执行无尽的 r 输入转移序列。对每一个
geQ 和:rer,当 P 从状态 g 开始且:rer 是栈顶元素时 ,如果 P 不再弹出 :
不再读人任何输入符号 ,则称 ( q,
e )。
工 ) 为 looping 状况 。 如果 P 在随后的转移中进入接受状
r 以下的符号也
82 第一部分自动机与语言
态 ,则称 looping 状 况 是 接 受 的 ,否 则 是 拒 绝 的 。 如果 ( q ,
:c ) 是接受的 looping 状况 ,置
8( q ^ e , x ) = Cqaccept ,
e ),若 ( q ,
s c ) 是拒绝的 looping 状况 ,置 5( g,
e,
:c )=( greieet ,
e )。
为简便起见 ,在后面的讨论中我们假设 DPDA 读人全部的输人 。
补集 。
^
现在 ,对认定为接受的读入状态进行转换 ( 为非接受 )。 修改后的 DPDA 识别语言
此定理说明一些 CFL 并不是 DCFL。若 CFL 的补不是一个 CFL ,那么该 CFL 也不是
DCFL。 因 此 , 或 其中 是一个 CFL 但不是一个 DCFL。
否则 ,A 若是一个 CFL ,问题 2.30 的结果会错误地认为互门 1)* 0: = { 3吒 叫 72>0 } 是
^
*
上下文无关的 。
问题 2.23 要求证明在其他常见的运算如并 、 交 、 星和逆下 DCFL 类是不封闭的 。
为了简化讨论 ,偶尔我们会考虑将一个特定的标记符号 H 添加到输入字符串的末尾 ,
将其称为输入结束标记 (endmarked input )。我们将 H 添加到 DPDA 的输入字母表 。在下
一个定理中可以看到 ,添加输入结束标记不会改变 DPDA 的能力 。 然而 ,在设计 DPDA
时考虑输人结束标记 ,可以获知输入字符串的结束信息 ,从而简化设计难度 。对任意语言
A ,我们用结束标记语言 AH 来 表 示 字 符 串 的 集 合 ,其 中 wGA 。
A 是 DCFL 当 且 仅 当 A爿 是 DCFL。
第之章上下文无关文法 83
,
到,H
证明思路证明该定理的充分性比较容易 。 令 DPDAP 识别 A 。 DPDA
读人 ,从而识别 AH 。此时 ,如果在前一个符号中 P 已经进入接受状态 ,那么〆
模拟 P 直
接 受。 不 再 读 人 H 之后的任何符号。
,
为了证明定理的必要性 ,令 DPDAP 识 别 并 且 构 造 一 个 识 别 A 的 DPDA P'。因
为〆读入其输人 ,因此它模拟 P。在读入每一个输人符号之前 , 判定若该符号为 ,p
^
是否接受 。若是 , 进人一个接受状态 。注意 ,P 可能在读人 H 之后进行栈操作 ,因此读
入 H 之后需要根据栈的内容来判定 P 是否接受 。 当然 ,尸 不能在任一个输入符号时弹出
,
/
^
栈中存储额外的信息从而允许 / 立刻判定 P 是否接受 。这个信息表明了从哪个状态开始
P 最终会接受 ,同时 ( 可能) 进行栈操作 ,但不再读入任何输入 。
证明我们只给出必要性证明的细节 。 正如证明思路所述 ,令 DPDAP = ( Q,2U
r,
^
< H }, 5 ,% ,
F ) 识 别 /H 并且构造一台 DPDA = 识别 A 。首先 ,
修改 P 使得它的每次转移都仅执行下述操作之一 : 读人一个输入符号 ;将一个符号压人
栈 ;从栈中弹出一个符号 。通过引入新状态很容易实现这些修改 。
,
,
〆模拟 P ,同时维持一个栈内容的拷贝并交错存储栈的额外信息 。 每当 压入一个 P
。,
的栈符号 , 随之压入一个代表 P 状态子集的符号 。因此 ,置严 = 厂卩( 0)。 的栈中 r
的成员与P( Q) 的 成 员 交 错 存 储 。如 果 是 栈 顶 符 号 ,那 么 从 尺 的 任 一 状 态 开 始
,
p ,P 最终会接受并且不再读人更多输入 。
,
初始 , 将状态集合尺 0 压人栈 ,私包含的任一状态 g 满足 : 当 P 从 g 开始并且栈为
转移 , 首先弹出并拋弃栈顶符号所代表的状态集合 ,接下来 ,
空 ,P 最终将会接受并且不再读人任何输人符号 。那么 开始模拟 P 。为了模拟一个弹岀
再次弹栈从而得到 P 在
,
,
当前应该弹出的符号 ,并根据该符号判定 P 的下一次转移 。模拟一个压人转移 5( g ,
P 在从状态 g 到状态 r 的过程中压入:r ,具体操作如下 。 首先 , 检查栈顶的状态
e,e )=
,
GS。换句话说 ,状态集合 S 要么立即接受 ,要么在弹出 :
,
r 后会进人 i? 中的一个状态 。最
后 , 通过检查栈顶集合 i? 并且当尺时进入一个接受状态来模拟一个读入转移 5( 心
,
e )=( r ,e ) 0 如果在进人这个状态时 , 位于输入字符串的最后 ,那么会接受这个输入 。
如果 不是在输人字符串的最后 ,那么它将继续模拟 P ,那么这个接受状态也必定会记录
P 的状态 。因此 ,我们创建这个状态作为 P 原始状态的第二个拷贝 ,将它标记为 , 的一
个接受状态 。 ■
2 . 4.2 确定型上下文无关文法
这一节定义了确定型上下文无关文法 ,它对应于确定型下推自动机 。我们将说明若把
关注限于结束标记语言 (该语言中所有字符串都以 H 终止),则这两个模型具有等价的能
力 。相比于正则表达式和有穷自动机 ,或者 CFG 和 PDA ,这些生成模型和识别模型在不
需要结束标记的情况下就能准确描述同一类语言 ,因此确定型上下文无关文法和确定型下
推自动机之间的对应关系并不强大 。然而 ,对于 DPDA 和 DCFG ,结束标记是必需的 ,否
则等价关系就不再成立 。
在确定型自动机中 ,计算过程的每一步决定了下一步 。自动机不能对如何向前推进做
出选择 ,因为在任何节点上都只有一种向前推进的可能性 。 为了用文法来定义确定性 ,观
84 第一部分自动机与语言
^
引入术语能帮助我们更准确地描述思路 。令 w 是属于 CFG 语言 G 的一个字符串 ,令
岀现在 w 的最左归约中。在归约步骤 A 中 ,称规则 T-Wi 被反向运用。 这意味着 ^
^
可以记作 U i = x h y , + 1 = x T y , 其中 /i 是归约串 ,:
是 的一部分并出现在 h 右侧 。如图 2 17 所示 。
r是 的一部分并出现在 /1 左侧 ,:y
-
x\ ••• X j h i ••• y i \->xi ••• X j T y i ••• yi = Ui+\
—
图 2 17 - 的扩展图示
^
些情况下 ,当不需关注归约规则时 ,句柄仅指代归约串。称在 L( G ) 中某字符串的最左归
约中出现的串为有效串 (valid string )。我们只定义有效串的句柄 。
如果文法有歧义 ,一个有效串可能有多个句柄 。无歧义的文法仅由一个语法树产生字
^
符串 ,因此 ,其最左归约 、 句柄都是唯一的。在这种情况下 ,称为有效串的唯一句柄 。
若 在一个句柄之后 ,观察 的 一 部 分 因 为 归 约 在 最 左 边 ,所 以 总是一个终
^
⑷ A
结符组成的串。否则 , 应包含一个变元符号 ,且该变元符号仅从前一个归约步骤中产
•
约了句柄 。 ^
生 ,该归约步骤的归约串完全位于 A 的右边 。但是 ,最左归约应该已经在更早的步骤中归
第之章上下文无关文法 85
考虑文法 G1 :
R^ S \ T
S aSb|ab
T aTbblabb ^
^
它的语言是 BUC,其中 B = { awbm|m>l },C = { amb2叫 m>l }。在这个串 aaabbbG L( G )
的最左归约中 ,我们将每一步的句柄标注了下划线 :
aaabbb h aaSbb
—
aSb i > S \-^>R
^ ^-
h
—
R 1S \ 2T
S aSb|ab
T aTbb|abb
^
^
G2 中第一个输入符号提供了这个信息 。我们对 DCFG 的定义必须包含 G2 但排除 G 。 黴
令 G3 为如下文法 :
S- TH
T ^T T
( ) \e
^
这个文法阐明了几个要点 。第一 ,它产生一个结束标记语言 。稍后我们在证明 DPDA 和
DCFG 的等价性时 ,会着重关注结束标记语言。第二 ,e 句柄可能出现在归约中 ,就像在
串 OOH 的最左归约中短下划线表示的那样 :
( )( H TOOH T( T)( )H TOH T( T)H S m
^ ^ ^ ^
H h h H ㈠
^
此外 ,DK 的每一个接受状态表明 (一组 ) 相关联的归约规则 。 在一个一般性的 CFG 中 ,
,可能会运用多个归约规则 。但是在一个 DCFG 中 ,如我们看到的那
根据扩展 z 的有效 z;
样 ,每一个接受状态对应于一个确定的归约规则 。
在形式化提出 DK 并列举它的性质之后 ,我们会描述 DK- 测试 。 计划是这样的 ,在一个
DCFG 中 ,所有的句柄都是强制的 。 因此如果 g 个以 z 为前缀并且以 的一个句柄为
结尾的有效串,那么这个句柄是独一无二的 ,且它也是所有有效串 $ 的句柄 。 基于这些性
质,每一个 DK 的接受状态一定与某个单一句柄相关联 ,因此与某个实际的归约规则相关
联 。 此外 ,接受状态必须不能拥有一个向外的路径 ,该路径在读人 2 中的一个串之后可以 *
^
得到一个接受状态 。否则 ,w 的句柄不会是独一无二的或者句柄会依赖于 7。在 DK- 测试
中,我们构造 DK ,如果所有 G 的接受状态都有这些性质 ,则推断出 G 是确定性的 。
为了构造 DFADK ,我们将会构造一个等价的 N F A K ,通过在定理 1.19 中介绍的子
集构造将 K 转换成 D K © 。为了理解 K , 首先考虑一个能完成更简单任务的 N F A J 。它接
—
右边有々个符号的规则 B ^ U l u 2 ••• U k ,我们得到々+ 1 个加点规贝IJ :
J3 •
—
B —► wi . U 2
B U \ U 2 …• U k
B —►Wl U 2 ••• U k *
—
每一个加点规则都对应于 J 的 一 个 状 态。我 们 用 一 个 方 框 来 表 示 状 态 和 相 关 联
的加点规则 B 接 受 状 态 IIB A 对应于完整规则 ( completed rule ), 即以句点作
为结束 。对每一个规则 B ,我 们 为 添 加 一 个 单 独 的 由 所 有 符 号 的 自 循 环 构 成 的
起始状态以及一个 e- 转移 。 因此如果在输入的最后成功完成匹配 ,那么 J 接受 。如果出现
一个错误的匹配或者最后的匹配没有正好出现在输入的末尾 ,那么 J 的这个计算分支会
拒绝 。
NFA K 以相似但更为简捷的操作选择匹配规则 。只有可能的归约规则才会被允许。
―
如同 / ,它的状态对应于所有的加点规则 。它有一个特殊的起始状态 ,该状态对所有包含
起始变元 Si 的 规 则 来 说 ,都 有 到 匕 的 e- 转移 。在其每一个计算分支中 ,K 将一个
可能的归约规则与输人的某个子串相匹配 。 如果规则的右边包含变元 ,K 会不确定性地转
到某个扩展该变元的规则 。引理 2.31 形式化地展现了该思路 。我们首先详细地描述 K 。
- 转移 。对每一个终结符或
——
转换过程在两种情况下岀现 : 移动转移 ( shift move ) 和
者变元 a 会 出 现 移 动 转 移 ,对 每 个 规 则 有
^
—
[B— u a. v
对所有规则 B -^ uCv fn C r 会岀现 e 转移: -
av
^ B
B^ u. Cv [C • r
接受状态是所有对应于一个完整规则的 j] o 接受状态没有向外的转换并且写成两个
方框的形式 。
下一个引理以及它的推论证明了 K 接受所有以串 z 的某个有效扩展的句柄作为结束的
串 % 因 为 K 是非确定性的 ,所以我们说它 “可能” 进入一个状态来表示 K 进入了它的
—
非确定型的某些分支上的状态 。
• K 可 能 进 入 状 态 [T
超 碰編
| 在输入
^
上
且 xuvy 是 一 个 句 柄 为 MI;、 归 约 规 则 为 T uv 的 有 效 串 。
证明思路 K 通过将一个选定的规则的右边与输入的一部分进行匹配来完成操作 。如
果完全匹配 ,K 接受 。如果规则的右边包含变元 C ,则可能岀现两种情况 。如果下一个输
—
当 且 仅 当 对 某 些)6 2 * ,z
证 明 首 先 我 们 证 明 充 分 性 。假 定 在 加 上 的 K 进 入 [T u.v ) 从 K 的起始状态一直
^
~
0
到 检 查 K 的 路 径 。想 象 该 路 径 如 同 被 r 转 移 间 隔 的 移 动 转 移 的 执 行 过 程 。 移 动
—
转 移 是 共 享 相 同 规 则 的 状 态 间 的 转 移 ,从 读 入 符 号 向 右 移 动 句 点 的 位 置 。 在 第 f 次 执 行
时 ,规 则 为 S, MlS ,+ 1 % ,此 处 S,+ 1 为 下 一 次 执 行 中 要 扩 展 的 变 元 。倒 数 第 二 次 执 行 的 规
—
则 是 Si uiTvi ,最 后 一 次 执 行 的 规 则 是 T uv
输 入 2:必 须 与 U \ U 2 ••• U l U = X U 是 等 效 的 ,因 为 串
— 0
和〃是 从 输 入 中 读 入 的 移 动 转 移 符
号 。令 :y’
= Vl
-
, 我 们 发 现:
程 就 如 同 图 2 1 8 中 语 法 树 所 展 示 的 一 样。
为 了 得 到 一 个 有 效 串 ,对
^
可 以 从 G 中 派 生 出 来 ,因 为 上 述 规 则 给 出 的 派 生 过
y中 出 现 的 所 有 变 元 进 行 完 全 扩 展 直 到 每 一 个 变 元 派 生 出 某
个 终 结 符 串 ,将 其 称 为 结 果 串 y。串 是 有 效 的 ,因 为 它 出 现 在 的 一 个 最 左
归 约 中 ,即 通 过 完 全 扩 展: 中 的 全 部 变 元 得 到 的 一 个 终 结 符 串。
-
正如图 2 19 所示, 是 归 约 中 的 句 柄 ,且 它 的 归 约 规 则 是
^^
52
I
C 0
03
:•
-
-
图2 18 派 生 的 语 法 树 图 2 19 - 派 生 带 有 句 柄 仰 的 有 效 串 xuvy 的语法树
现 在 我 们 证 明 引 理 的 必 要 性 。假 定 串 是 一 个 带 有 句 柄 ⑽ 且归约规则为 T
的 有 效 串。证 明 K 在 输 入 xu 上 可 能 进 人 状 态 [T u.v )
^
—
0
:rt :
y 的 语 法 树 岀 现 在 上 面 的 图 中 。该 语 法 树 以 起 始 变 元 Si 为 根 节 点 ,且 一 定 包 含 变
^
% T, 因 为 T ㈣ 是 归 约 过 程 的 第 一 步 。令 S2 ,… ,Sz 为 如 图 所 示 的 从 5! 到 T 的
路 径 上 的 变 元。注 意 ,在 语 法 树 上 出 现 在 该 路 径 左 侧 的 所 有 变 元 都 是 未 扩 展 的 ,否 则
:
不 会 是 句 柄。
在 这 棵 语 法 树 上 ,根 据 规 则 每 一 个 Sz 推 导 出 51+ 1 。因 此 对 串 & 和%
来 说 ,文 法 一 定 包 含 下 面 的 规 则 。
—
——
51 M I S2 *^1
52 U 2 S3 V 2
Si uiTvi
T -
在读入输入 z= ^
时 ,K 包 含 下 述 从 它 的 起 始 状 态 到 状 态 的 路 径 。 首 先 ,
—
K 执 行 一 个 转 移 到 i)
iS2 z; 下 一 步 ,当 读 入 w 的 符 号 ,K 执 行 对 应 的 移 动 转 移
^
• 0
直到其在 w 的 结 尾 进 人 接 下 来 K 执 行 一 个 e 转 移 到 jS 2 - • 在读
第之章上下文无关文法 89
— —
人 后 执 行 移 动 转 移 直 到 其 达 到 以 此 类 推。在 读 入 之 后 K 进 人
^
SI -^ U L T v l ,通 过 一 个 r 转 移 到 [ T • u v ), 并 最 终 在 读 入 M 之 后 进 人[ T . 。
M
H ■
下 面 的 推 论 说 明 了 K 接 受 所 有 以 某 个 有 效 扩 展 得 到 的 一 个 句 柄 为 结 尾 的 串。当 u = h ,
= e 时 ,可 由 引 理 2.3 1 得 到 该 推 论。 ■
驢 翮 嫌 在 输 入 上 K 可能进入接受状态 T [ - h. 当 且 仅 当 z = x h 且 /1 是 遵 循
^
Z
归 约 规 则 T ^h 的 有 效 串 x h y 的 一 个 句 柄。
~
最 后 ,我 们 通 过 使 用 定 理 1.19 证 明 中 构 造 的 子 集 ,并 删 除 所 有 从 起 始 状 态 无 法 达 到
的 状 态 ,将 NFAK 转 换 成 DFADK 。 每 一 个 DK 的 状 态 包 含 一 个 或 多 个 加 点 规 则 。 每 一
个 接 受 状 态 包 含 至 少 一 个 完 整 规 则 。 通 过 指 代 包 含 加 点 规 则 的 状 态 ,可 以 将 引 理 2.3 1 和
推 论 2.32 应 用 于 DK 。
-
现 在 我 们 做 好 了 描 述 DK 测 试 的 准 备 。
从 一 个 CFG G 开 始 ,构 造 关 联 的 DFADK 。通 过 检 查 DK 的 接 受 状 态 ,判 定 G 是 否
是 确 定 性 的 。 DK- 测 试 保 证 每 一 个 接 受 状 态 包 含 :
1. 有 且 仅 有 一 个 完 整 的 规 则 ,
2. 在 所 有 加 点 规 则 中 句 点 不 会 紧 跟 一 个 终 结 符 ,即 对 没 有 形 如 u.a v 的 加
点 规 则。
-
G 通 过 DK 测 试 当 且 仅 当 G 是 一 个 DCFG 0
证 明 思 路 我 们 会 展 示 DK- 测 试 通 过 当 且 仅 当 所 有 的 句 柄 是 强 制 的 。等 价 地 ,测 试 失
败 当 且 仅 当 某 个 句 柄 不 是 强 制 的 。首 先 ,假 定 某 个 有 效 串 有 一 个 非 强 制 的 句 柄 。如 果 我 们
在 这 个 串 上 运 行 DK ,推 论 2.32 说 明 DK 在 句 柄 的 结 尾 进 人 一 个 接 受 状 态 。 因 为 接 受 状
态 有 另 一 个 完 整 的 规 则 或 者 有 一 个 以 终 结 符 开 始 到 达 接 受 状 态 的 向 外 路 径 ,所 以 DK- 测 试
是 失 败 的 。在 后 一 种 情 况 中 ,接 受 状 态 会 包 含 一 个 加 点 规 则 ,在 该 规 则 中 一 个 终 结 符 岀 现
在 句 点 之 后。
-
反 过 来 ,如 果 DK 测 试 失 败 是 因 为 一 个 接 受 状 态 有 两 个 完 整 的 规 则 ,在 这 种 情 况 下 相
关 联 的 串 被 扩 展 成 带 有 不 同 句 柄 的 两 个 有 效 串 。相 似 地 ,如 果 接 受 状 态 有 一 个 完 整 的 规 则
和 一 个 加 点 规 则 ,在 这 个 加 点 规 则 中 ,终 结 符 在 句 点 之 后 ,那 么 应 用 引 理 2.31 能 得 到 带
有 不 同 句 柄 的 两 个 有 效 的 扩 展 。构 造 对 应 于 第 二 个 规 则 的 有 效 扩 展 有 些 棘 手 。
证 明 首 先 来 看 充 分 性 。假 定 G 不 是 确 定 性 的 ,证 明 G 不 能 通 过 DK 测 试 。使 用 有 -
: :
个 非 强 制 句 柄 /i 的 有 效 串 x /i y 。因 此 某 个 有 效 串 x/i / 有 一 个 不 同 的 句 柄 A / /i ,这 里 :y '
是 一 个 终 结 符 串 。我 们 可 以 将:r /iy 写 成:
如 果:c /i = iA ,那 么 归 约 规 则 是 不 同 的 ,因 为 /i 和 A 是 不 相 同 的 句 柄 。因 此 ,输 人 x /i
将 D/C 传 送 给 包 含 两 个 完 整 规 则 的 某 个 状 态 ,违 背 了 DK 测 试 。 -
如 果 i/i 关iA ,其 中 一 个 扩 展 另 一 个 。假 定:c/i 是 iA 的 真 前 缀 。 如 果 是 更 短 的 串 ,
用 5 代 替 / ,该 论 证 和 串 的 互 换 相 同 。令 q 为 D K 在 输 入:r /i 上 进 人 的 状 态 。状 态 g —g 定
是 接 受 的 ,因 为 是 的 一 个 句 柄 。必 有 一 个 从 9 出 发 的 转 移 箭 头 ,因 为 iA 通 过 将
/i
DK 传 送 给 一 个 接 受 状 态 。另 外 ,因 为 / 6 2+ ,这 个 转 移 箭 头 被 一 个 终 结 符 所 标 注 。这
里 是 因 为 iA 扩 展 了 x /i 。因 此 g 包 含 一 个 加 点 规 则 ,在 这 个 规 则 中 一 个 终 结 符 紧 跟
在 句 点 之 后 ,这 违 背 了 DK 测 试 。 -
为 了 证 明 必 要 性 ,假 定 G 在 某 个 接 受 状 态 g 不 能 通 过 DK 测 试 ,通 过 展 示 一 个 非 强 制 -
90 第一部分自动机与语言
—
个可以将 DK 推导至 g 的串 。 那么对 3 62 有 z =:rA ,这里有效串 r /i y 有带归约规则
:T Zi 的句柄 A 。现在根据 DK- 测试失败的方式 ,考虑两种情况 。
首先 ,认为 g 有 另 一 个 完 整 的 规 则
^ ' 。那 么 某 个 有 效 串 :
r /iy 必定有一个带有归约
•
—
: / .。令 z 是一
1
—
规则 A 的不同句柄 A 。因此 ,/i 不是一个强制句柄 。 •
—
其次 ,认为 g 包含一个规则 B ,这 里《 6 2。因 为 x /i 将 DK 传 送 给 g ,得 到
⑽
—— -
这里我们说明 DK- 测试对下面的文法是如何失败的 (见图 2 20 )。
S | -
E E+ T|T
T-^ TXa|a
E T
-..
— EH
•E \- -T
T ~* » T x a
T -*- • a
E
5 EH
-
E -* E » \
- -T
> S
- EH .
T
-^. .
--
E E+ T
T Txa
T a .
T /
—
-
- -T »
£ * E\
T r Xa
■
E T
—
T-^ T Xa
.
.
T -» a •
> T -* Tx a
T -^ T x a
.
.
-
图 2 20 一 个 失 败 的 DK- 测 试 例 子
注意左下侧和右上侧第二个这两个有问题的状态 。这两个状态中都有一个接受状态包
含一条加点规则 ,并且在加点规则中一个终结符出现在句点之后 。 ■
襄夕章上下文无关文法 91
件。
T——
一 个 说 明 下 面 文 法 是 DCFG 的 D F A D K ( 见 图 2 2 1 )。
S T-I
T( T ) | e
-
观 察 发 现 所 有 的 接 受 状 态 都 满 足 DK 测 试 的 条
S
T
--..
TH
T(T)
-
-- .
5 TH
T T (T) -
5 TH .
2. 4. 3 DPDA 和 DCFG 的 关 系
本 小 节 中 我 们 将 会 证 明 DPDA 和 DCFG 描 述 相
--. .
T T( T)
T T( T ) -- . .
T T( T )
T T ( T)
同 的 结 束 标 记 语 言 类 。 首 先 ,我 们 将 说 明 如 何 将
DCFG 转 换 成 等 价 的 DPDA 。 这 个 转 换 在 所 有 情 况 下 图 2 21 - — 个 通 过 DK- 测 试 的 例 子
都 能 进 行 。接 着 ,我 们 将 说 明 如 何 实 现 从 DPDA 到 等 价 的 DCFG 的 反 向 转 换 。该 转 换 只
在 结 束 标 记 语 言 中 才 能 进 行 。 我 们 将 等 价 性 限 定 于 结 束 标 记 语 言 ,否 则 模 型 不 等 价 。 我 们
已 经 证 明 了 结 束 标 记 不 会 影 响 DPDA 可 以 识 别 的 语 言 类 ,但 是 它 们 会 影 响 DCFG 产 生 的
语 言 类 。 没 有 结 束 标 记 ,DCFG 只 产 生 DCFL 的 一 个 子 类 它 们 都 是 前 缀 无 关 的 (见 问
题 2.2 2 )。注 意 所 有 的 结 束 标 记 语 言 都 是 前 缀 无 关 的 。
一 个 结 束 标 记 语 言 由 一 个 确 定 型 上 下 文 无 关 文 法 产 生 ,当 且 仅 当 它 是 确
定 型 上 下 文 无 关 的。
我 们 需 要 证 明 充 分 性 和 必 要 性 。首 先 我 们 会 说 明 每 一 个 DCFG 有 一 个 等 价 的 DPDA。
接 下 来 我 们 会 说 明 每 一 个 能 识 别 结 束 标 记 语 言 的 DPDA 都 有 一 个 等 价 的 DCFG。我 们 用 不
同的引理来证明充分性和必要性。
每 一 个 DCFG 都 有 一 个 等 价 的 DPDA 。
证 明 思 路 我 们 说 明 如 何 将 DCFG G 转 换 成 一 个 等 价 的 DPDA P。 P 按 如 下 所 述 使 用
D F A D K 进 行 操 作 。 对 于 从 输 入 中 所 读 取 的 符 号 ,它 模 拟 DK 直 至 DK 接 受 。 如 定 理
2.3 3 的 证 明 所 述 ,DK 的 接 受 状 态 指 明 一 个 特 定 的 加 点 规 则 ,因 为 G 是 确 定 型 的 ,并 且 这
个 规 则 为 扩 展 了 目 前 已 知 输 入 的 有 效 串 确 定 一 个 句 柄 。此 外 ,因 为 G 是 确 定 型 的 ,这 个 句
柄 适 用 于 每 一 个 有 效 扩 展 ,特 别 地 ,如 果 输 入 属 于 L( G),那 么 这 个 句 柄 适 用 于 对 P 的 全
部 输 入 。 所 以 P 能 使 用 这 个 句 柄 为 它 的 输 入 串 确 定 第 一 个 归 约 步 骤 ,尽 管 在 此 时 它 只 是 读
入 了 它 输 入 的 一 部 分。
P 如 何 确 定 第 二 个 和 接 下 来 的 归 约 步 骤? 一 个 思 路 是 在 输 入 串 上 直 接 执 行 归 约 步 骤 ,
然 后 通 过 DK 运 行 修 改 后 的 输 人 ,就 如 同 我 们 之 前 做 的 那 样 。 但 是 输 人 不 能 修 改 或 者 重 新
读 入 ,因 此 这 个 思 路 行 不 通 。另 一 个 思 路 是 将 输 入 拷 贝 到 栈 并 在 栈 上 执 行 归 约 步 骤 ,但 是
这 样 的 话 P 必 须 弹 出 整 个 栈 来 通 过 DK 运 行 修 改 后 的 输 入 ,因 此 修 改 后 的 输 入 对 后 面 的 步
骤 就 不 能 持 续 有 效 了。
这 里 有 一 个 小 技 巧 ,就 是 在 栈 里 存 储 所 有 的 DK 的 状 态 ,而 不 是 存 储 输 入 串 。 每 当 P
读 人 一 个 输 入 符 号 并 模 拟 一 个 在 DK 中 的 转 移 时 ,它 通 过 将 其 压 人 栈 来 记 录 DK 的 状 态 。
当 其 使 用 归 约 规 则 来 执 行 一 个 归 约 步 骤 时 ,它 从 栈 中 弹 出 U|个 状 态 ,展 现 在 读 入 W
:
之 前 DK 的 状 态 。它 将 DK 重 置 为 该 状 态 ,接 下 来 在 输 入 T 上 模 拟 DK ,并 将 产 生 的 状 态
压 入 栈 。之 后 P 像 之 前 读 取 和 处 理 输 入 符 号 那 样 继 续 进 行 。
当 P 将 起 始 变 元 压 入 栈 时 ,它 已 经 找 到 一 个 输 入 到 起 始 变 元 的 归 约 ,所 以 它 进 入 一 个
92 第一部分自动机与语言
接受状态 。 ■
接下来我们证明定理 2.36 的 必 要 性 。
每一个能识别结束标记语言的 DPDA 都有一个等价的 DCFG 。
证 明 思 路 这 个 证 明 是 对 引 理 2.1 5 中 将 PDA P 转 换 为 等 价 CFG G 的 构 造 过 程 的 修
改 。 这里 P 和 G 是确定型的 ,在 引 理 2.15 的 证 明 思 路 中 ,我 们 改 变 P 来 清 空 它 的 栈 ,
并且当 P 接受时进入一个指定的接受状态 gaccept 。一 个 PDA 不 能 直 接 判 定 其 在 输 人 末 尾
是 什 么 ,所 以 P 使用它的非确定性来猜测其会处于哪种情况 。 我们不希望在构造 DPDA
P 的过程中引入非确定性 。 替代策略是使用一个假设 ,假 设 L( P ) 是结束标记的 。 我们
修改 P 来 清 空 它 的 栈 ,并 且 在 它 已 经 读 入 结 束 标 记 H 之 后 进 人 原 接 受 状 态 之 一 时 进
人 qaccept
接下来我们应用文法构造得到 G 。 简单地应用原始构造于 DPDA 可以产生一个近乎确
定型文法 ,这是因为 CFG 的派生密切对应于 DPDA 的 计 算 过 程 。该 文 法 在 次 要 的 、 可 修
复的方式下不是确定型 。
原 始 构 造 引 入 了 形 如 规 则 ,它 们 可 能 会 引 起 歧 义 。这 些 规 则 包 括 的 情
形 有 :A % 产生一个串 ,该 串 将 P 从 状 态 带 到 状 态 在每个状态的结尾栈都被清空,
以及在中途栈被清空 。替换操作对应于在一处将计算分拆 。但是如果栈多次清空 ,那么会
出现多个分拆 。 每个分拆会产生不同的语法树 ,所以产生的文法是歧义性的 。通过修改文
法使得计算分拆只在栈清空的最后位置发生 ,可以消除歧义 。 用 一 个 出 现 在 歧 义 性 文 法 中
^
的简单但类似的情况来说明 :
S-^ TH
-
T TT|( T ) | e
^
—
该文法等价于非歧义性的 、 确定型的文法
S-^ TH
T T( T) | e
-
接下来我们通过使用 DK 测 试 来 说 明 修 改 后 的 文 法 是 确 定 型 的 。 文 法 被 设 计 成 模 拟
DPDA。就像引理 2.15 的 证 明 一 样 ,在 P 从一个空栈上的状态 /> 运 行 到 一 个 空 栈 上 的 状
态 g 的 过 程 中 产 生 这 些 串。我们将会使用 P 的确定性来证明 G 的确定性 ,这样我们会
发 现 P 的确定性对于定义 P 在有效串上的计算过程从而来观测它在句柄上的行为是很有
用 的 。然后我们可以使用 P 的确定型行为来说明句柄都是强制的 。
2,
证 明 认 为 P =( Q , r ,J,g , 。
{ gaeeept }) 并构造 G。 起始变元是 A 0
( 。构造过程包
^
*
^ accept
含 如 下 3 个部分 。
1 对每一个 /),
g,r, w 6 r ,以 及
5 6 Q, a,
,如果 5( /> , e) 包 含 ( r ,w ) 且 3( 5 ,6 ,
—
w )包 含( g ,
e ),那么将规则 Apq -^ aArsb 放 入 G 。
2. 对 每 一 个 将 规 则 A内 A y A q 放 入 G。
3. 对每一个 f G Q,将规则 e 放入 G。
为避免引入歧义我们对构造过程作修改 : 将 类 型 1 和类型 2 规则合并成一个实现相同
效果的单一类型 1 2 规 则 。 -
-
—
1 2. 对 每 一 个 山K
■
Q,
w6 r,以 及 a ,662e ,如果 5( r ,a ,e )=(s,w )且
u)= ( q , e , 将规则 A
) 內 A y a A j 放入 G 。
襄夕章上下文无关文法 93
— —
为了看到修改后的文法产生相同的语言 ,考虑原始文法的任一派生 。对每一个由类型 2
规则 AM AyAq 导致的替换 ,我们可以假定 r 是 P 在栈变为空的过程中 (修改断言 2.17 的
..
证明过程来选择 r ) 最右位置时的状态 。那么随后的替换一定是用类型 1 规则 /U aAj
^—
来扩展它的 。 我们可以将这两个替换合并成一个单一类型 1 2 规则 A - ApraA b
..
相反 ,在一个使用修改后文法的派生中 ,如果用类型 2 规则
.
AM AyAq 和紧跟着的
类型 1 规则 A a A b 来代替类型 1 - 2 规则 A A p r a A b 可以得到相同的结果 。
^
现在我们用 DK- 测试来证明 G 是确定型的 。为了实现这一点 ,我们将会通过扩展 P
的输入字母表和转移函数来处理除终结符之外的变元符号 ,从而分析在有效串上 P 如何操
作 。我 们 把 所 有 的 符 号 添 加 到 P 的输人字母表并通过定义 5( 沁
它的转移函数 5。令所有其他的转移包括 A # 为 0 。为了保持 P 的确定性行为 ,如果 P 从
, ^
e )= Q,
e ) 来扩展
如 果 P 读 入 包 含 一 个 变 元 A% 的 V i ,那 么 它 正 好 在 读 入 之 前 进 入 状 态 户。
_
使用在 i 上的归纳 ,从 A QQ accep 派生巧的步骤数目来证明 。
^ t
归纳基础: i = 0 o
在这种情况下, 。^
9 ’accept 且 P 从状态 % 开始 ,所以归纳基础正确 。
归纳步骤 :假定断言对 i 成立 ,证明其对 f +1 也成立 。
首 先 考 虑 如 下 情 况, 且 Aw 是在步骤 % => %+ i 中替换的变元 。 归纳假设表
明 P 在它读入:T 之后 ,在读入符号 AM 之 前 进 入 状 态 根 据 G 的构造过程 ,替换规则可
能有两种类型 :
1. Apg -^ A p r a A a b
2.A p p -►e 。
因 此 根 据 选 择 的 规 则 类 型 一A a b 或 者 %+ 1 = 巧。 在 第 一 种 情 况 下 ,当 P
在 % + 1 中读入 A a A d 时 ,我 们 知 道 它 在 状 态 f 开 始 ,因 为 其 刚 刚 读 完 :
r 。随 着 P 在
^
中读人 A a A 功 ,由于替换规则的构造 ,它进入状态 r , 〖 和 g 组成的序列 。 因此 ,
它 正 好 在 读 人 之 前 进 人 状 态 p ,并且正好在读人 Aw 之 前 进 入 状 态 从 而 为 这 两 种 变
元的出现情况建立断言 。断言在 部分的变元出现时成立 ,是因为在 P 读入 6 之后它进入
状态 g 然 后 读 入 串 在 输 入 % 上 ,它 也 在 读 入
^
的 y 部分上是一致的 。显然 ,计算过程在:r 部 分 也 是 一 致 的 。因 此 ,断 言 对 成 立 。在
第二种情况下 ,没有引入新的变元 ,所以我们只需要观察计算过程在 % 与 %+ 1 的 :
r 和y ^
之前进入心所以计算过程在认和
部分上是一致的 。这就证明了断言成立 。
G 能 通 过 DK 测 试 。 -
我们证明每一个 DK 的接受状态都满足 DK 测试的条件 。选择这些接受状态中的一 -
个 。它包含一个完整的规则 R 。这个完整的规则可能有下面两种形式之一 :
1. Apq -^ ApraAstb .
2. App .
^
在这两种情况下 ,我们都需要证明该接受状态不会包含 :
a. 另一个完整的规则 ,
94 第一部分自动机与语言
b. 一 个 含 有 终 结 符 紧 跟 在 句 点 之 后 的 加 点 规 则 。
我 们 分 别 考 虑 这 四 种 情 况 。在 每 一 种 情 况 中 ,我 们 从 考 虑 一 个 串 z 开 始 ,DK 在 z 上
到 达 我 们 所 选 择 的 接 受 状 态。
情况 1a -
尺 是 一 个 完 整 的 类 型 1 2 规 则 。对 这 个 接 受 状 态 的 任 意 一 个 规 则 来 说 ,z 必
定 以 这 个 规 则 中 的 句 点 之 前 的 符 号 作 为 结 束 ,因 为 DK 在 z 上 到 达 该 状 态 。因 此 在 句 点 之
前 的 符 号 在 所 有 这 样 的 规 则 中 一 定 是 一 致 的 。这 些 符 号 在 尺 中 是 功 ,所 以 任 意 其 他
-
类 型 1 2 的 完 整 规 则 的 右 边 一 定 有 相 同 的 符 号 。同 样 左 边 的 变 元 一 定 也 是 一 致 的 ,所 以 规
则 一 定 都 是 相 同 的。
假定接受状态包含 R 和某个类型 3 的完整 6
■
规 则 T 。h k R 中 我 们 知 道 z 以 A p r a A a b
结 束 。此 外 ,我 们 知 道 P 在 z 的 最 后 弹 栈 ,因 为 根 据 G 的 构 造 过 程 弹 栈 操 作 在 R 的 那 个
位 置 执 行 。根 据 我 们 建 立 DK 的 方 式 ,在 某 个 状 态 的 完 整 e 规 则 一 定 由 一 个 加 点 规 则 推 导
岀 来 ,该 加 点 规 则 驻 留 的 状 态 满 足 :句 点 不 在 一 开 始 的 位 置 且 句 点 之 后 紧 接 着 某 个 变 元 。
(一个例外出现在 DK 的 开 始 状 态 ,这 里 句 点 可 能 出 现 在 规 则 的 开 始 位 置 ,但 是 这 个 接 受
状 态 不 能 是 开 始 状 态 ,因 为 它 包 含 了 一 个 完 整 的 类 型 1 - 2 规 则 。
) 这意味着在 G 中, T 由 :
-
一 个 类 型 1 2 的 加 点 规 则 推 导 得 到 ,在 这 个 规 则 中 句 点 在 第 二 个 变 元 之 前 。根 据 G 的 构 造
过 程 ,一 个 压 栈 操 作 正 好 在 句 点 之 前 出 现 。这 说 明 P 在 z 的 最 后 执 行 了 一 个 压 入 转 移 ,这
:
与 我 们 之 前 的 论 断 是 矛 盾 的 。 所 以 不 存 在 完 整 r 规 则 T 。 另 一 方 面 ,任 一 类 型 的 第 二 个 完
整 规 则 不 会 出 现 在 这 个 接 受 状 态。
情 况 2a R 是一个完整的 e 规 则- 。我 们 证 明 没 有 另 一 个 完 整 的 r 规 则
能 够 与 R 共 存 。如 果 这 样 的 规 则 存 在 ,那 么 之 前 的 断 言 证 明 在 读 入 z 之 后 P 定在户中 —
且 在 读 入 z 之 后 它 也 一 定 在 g 中。因 此 p = 两 个 完 整 的 r 规 则 是 相 同 的。
情 况 1 b 尺 是 一 个 完 整 的 类 型 1 - 2 规 则 。从 情 况 la 中 ,我 们 知 道 P 在 z 的 最 后 弹 栈 。
: :
假 设 接 受 状 态 也 包 含 一 个 加 点 规 则 T ,在 T 中 一 个 终 结 符 紧 跟 在 句 点 之 后 。从 T 中 我 们
知 道 P 不 能 在 z 的 最 后 弹 栈 。这 个 矛 盾 说 明 这 种 情 况 是 不 会 出 现 的 。
情 况 2 b R 是 一 个 完 整 的 r 规 则 。 假 设 接 受 状 态 也 包 含 一 个 加 点 规 则 丁, 在 T 中 一 :
: -
个 终 结 符 紧 跟 在 句 点 之 后 。 因 为 T 是 类 型 1 2 的 ,所 以 一 个 变 元 符 号 之 后 紧 接 着 句 点 ,
那 么 z 以 这 个 变 元 符 号 作 为 结 束 。 此 外 ,在 P 读 入 z 之 后 ,它 为 读 入 一 个 非 e 输 入 符 号
做 好 了 准 备 ,因 为 一 个 终 结 符 跟 在 句 点 之 后 。 就 如 同 在 情 况 la 中 , 完 整 的 r 规 则 i? 从
-
一 个 类 型 1 2 加 点 规 则 S 中 推 导 得 到 ,在 S 中 句 点 之 后 紧 接 着 第 二 个 变 元 。( 再 一 次 ,
这 个 接 受 状 态 不 能 是 DK 的 开 始 状 态 ,因 为 句 点 不 在 丁 的 开 始 位 置 出 现 。 ) 因此在 S 中
^
某 个 符 号 之 后 紧 接 着 出 现 句 点 ,所 以 z 以 & 作 为 结 束 。 不 论 是 6 2 还 是 & = ,
^
因为 z 以一个变元符号作为结束 , $ 2 所以 S = 因 此 ,在 P 读 入 z 之 后 ,在 它 为 处
理 J 执 行 r 输 人 转 移 之 前 ,它 为 读 入 一 个 e 输 入 做 好 了 准 备 。 在 之 前 我 们 也 证 明 了 P 在
此 刻 为 读 人 一 个 非 e 输 人 符 号 做 好 了 准 备 。 但 是 不 允 许 DPDA 同 时 执 行 r 输 入 转 移 以 及
在 给 定 状 态 和 栈 读 入 一 个 非 e 输 人 符 号 的 转 移 ,所 以 上 述 情 况 不 可 能 出 现 。 因 此 情 况 2 b
不会发生。 ■
2 . 4. 4 语 法 分 析 和 LR( k ) 文 法
确 定 型 上 下 文 无 关 语 言 有 着 重 要 的 实 际 意 义 。它 们 对 于 成 员 关 系 和 语 法 分 析 的 算 法 都
基 于 DPDA ,因 此 这 些 算 法 都 是 高 效 的 ,且 它 们 包 含 了 丰 富 的 涵 盖 大 多 数 编 程 语 言 的 CFL
第之章上下文无关文法 95
规 则 ,开 始 状 态 有 一 个 到
^
绝大部分的形式化构造工作与之前的相同 。对每一个包括起始变元 Si 和
^
的 e- 转移 。 变换转变 (shift transition ) 在 输 入 工 上
所 有 的
— — —
•
—r ,ET 转 变 ( e~ transition ) 将 T u . Cv \ , 这里
^
C 变为 r b 是能从 中派生
出来的任意终结符串的第一个符号 。如果
和 所 有 的 接 受 状 态 都 是 B ^^ u. ^
派生出 e ,那么添加 6 = 对完整规则
^
令 A 是带前瞻符号 的完整规则 ,i?2 是 带 前 瞻 符 号 化 的 加 点 规 则 。 私 和 私 是
致的 ( consistent ),如果
1. i?2 是完整的且
2. Rz 不是完整的且
^
<21 =(22 ,或
紧跟在句点之后 。
现在我们已经做好准备来描述
态一定不包含任意两个一致的加点规则 。 ^ DKi - 测试 。构造 DFADKh 测试保证每一个接受状
96 第一部分自动机与语言
-
G 通 过 DK 测 试 当 且 仅 当 G 是 一 个 LR( 1 ) 文 法 。
^
证 明 思 路 推 论 2.32 仍 适 用 于 DKh 因 为 我 们 可 以 忽 略 前 瞻 符 号 。
- 测 试 ( 见 图 2 - 2 2 )。 回 忆 在 例
^
这 个 例 子 说 明 了 下 面 的 文 法 通 过 了 DK
-
2.34 中 这 个 文 法 不 能 通 过 DK 测 试 。因 此 它 是 一 个 LR( 1 ) 文 法 的 例 子 而 不 是 一 个 DCFG
——
_
的 例 子。
S
E^ E+ T|T
T TXa|a
S
E ~*~ » E -\-T
a + xH
十H
E
-.
> S a+xH
E E +T +H
> S - ;.£H a + xH
£> T . +H
-.
-
T .Txa X + H
T a X +H
-
E E + .T T - -T »
T -.
T -* .TXa
T a
X
X
+H
+H
E ~^ E \
-
T T. X a X
+H
+H
E
——
T T. Xa
T.
X
+H
+H
-
T a. X +H
-
T Tx . a
T -* Txa .
X
x +H
+H
鷀HEEI
-
图 2 22 通过 DKa - 测试 ■
结 束 标 记 语 言 由 LR(1 )文 法 生 成 当 且 仅 当 它 是 一 个 DCFL。
我 们 已 经 证 明 了 每 一 个 DCFL 都 有 一 个 LR( O ) 文 法 ,因 为 一 个 LR( O ) 文 法 与 一 个
DCFG 相 同 。这 就 证 明 了 定 理 的 必 要 性 。剩 下 的 就 是 下 面 这 个 引 理 ,说 明 了 如 何 将 LR( 1 )
文 法 转 换 成 DPDA 。
每 一 个 LR( 1 ) 文 法 都 有 一 个 等 价 的 DPDA 。
证明思路我们构造 Pi ,一 个 我 们 在 引 理 2.4 5 中 提 到 的 DPDA P 的 修 改 版 本 。 h
读 入 它 的 输 入 并 模 拟 DKh 同 时 使 用 栈 来 记 录 若 所 有 归 约 步 骤 应 用 于 目 前 的 输 人 ,DKi
可 能 进 人 的 状 态 。此 外 ,h 向 前 读 人 1 个 符 号 并 将 这 个 前 瞻 信 息 存 储 到 它 的 有 穷 状 态 存
储 (finite state memory ) 中 。每 当 达 到 一 个 接 受 状 态 ,h 査 询 它 的 前 瞻 来 判 断 是 否
执 行 一 个 归 约 步 骤 ,并 在 有 多 种 可 能 时 判 断 执 行 哪 一 个 步 骤 。因 为 文 法 是 LR( 1 ),所 以 只
有 一 种 选 择。 ■
练习
——
2.1 回忆一下例 2.3 中给出的 CFG G4 。为方便起见 ,用单字母重新命名它的变元如下:
E E+ T| T
T T X F| F
F -* ( E ) \ a
给出下述字符串的语法分析树和派生:
a. a b. a + a c. a + a + a d. ( ( a ) )
襄夕章上下文无关文法 97
2.2 利用语言 A ={
类在交运算下不封闭 。
b. 利用 (a ) 和德
, ” m ,>0 } 和 B = { a”b c |
b”c| 72 m,
-
rz>0 } 以及例 2.20 , 证明上下文无关语言
A 2.3
设上下文无关文法 G:
R
—— XRX \ S
S aTb| bTa
T
X
X T X| X | e
a| b
回答下述问题 :
a.G 的 变 元 是 什 么? b.G 的终结符是什么?
c.G 的 起 始 变 元 是 什 么? d. 给出 L( G ) 中的 3 个字符串 。
e. 给 出 不 在 L( G ) 中 的 3 个 字 符 串 。 f. 是真是假 :T > aba = 0
h. 是真是假 : T o丁。 :
^
g. 是 真 是 假 : T aba 0
^
k. 是 真 是 假 :X aba 0 1. 是真是假 :T i x x。
m. 是 真 是 假 :T ;X X X n. 是真是假 :S
o. 用 普 通 的 语 言 描 述 L( G )。
0
^ £o
2.4 设 字 母 表 2 是 { 0 ,1 } , 给 出 产 生 下 述 语 言 的 上 下 文 无 关 文 法 :
Aa. 至 少 包 含 3 个 1 }。
b. 以 相 同 的 符 号 开 始 和 结 束 }。
c. { vu \ vu 的 长 度 为 奇 数 }。
Ad.{ wlw 的 长 度 为 奇 数 且 正 中 间 的 符 号 是 o }。
e.{ t | ,即 是 一 个 回 文 }。
2.5
^
f. 空 集 。
给 出 关 于 练 习 2.4 中 语 言 的 下 推 自 动 机 的 非 形 式 化 描 述 和 状 态 图。
2.6 给出产生下述语言的上下文无关文法:
Aa. 字 母 表 { a ,b } 上 a 多 于 b 的 所 有 字 符 串 组 成 的 集 合 。
b. 语 言 { a”b”|n O } 的 补 集 。
- ^
^
Ac. x \ vu , x < 0 ,
1广且 是 x 的 子 串 }。
d. … 每 一 个: ,且 存 在 z 和 j 使 得:r , = rf }。 *
A 2 . 7 给 出 关 于 练 习 2.6 中 语 言 的 PDA 的 非 形 式 描 述 。
A 2.8 证 明 在 2. 1 节 开 始 部 分 给 出 的 文 法 G2 中 ,字 符 串 “ the girl touches the boy with the flower ” 有 两
个 不 同 的 最 左 派 生 ,叙 述 这 句 话 的 两 个 不 同 的 意 思 。
2.9 给出产生语言
A ={ a lyck
1 _
且 i= j 或;=々}
•
——
2.13 设文法 G =( V ,
H S),其中 V ={ S,
T, 2={ 0 ,# },尺是下述规则的集合:
L7},
S TTII;
0 #
T 0 T|T|
U -^ 0U 001
用普通的语言描述 L( G )。
^
98 第一部分自动机与语言
b. 证 明 L( G) 不 是 正 则 的 。
2.14 用 定 理 2.6 中 给 岀 的 过 程 ,把 下 述 CFG 转 换 成 等 价 的 乔 姆 斯 基 范 式 文 法 。
A^ BAB \ B \ e
0 0 |e
-
2.15 给 出 一 个 反 例 证 明 下 述 构 造 不 能 证 明 上 下 文 无 关 语 言 类 在 星 号 运 算 下 封 闭 。 设 CFLA 由 CFGG
=( V,2 ,尺 ,
S) 产 生 ,将 G 增 加 一 条 新 规 则 S SS 并 称 其 为 这 个 语 法 可 产 生 语 言 A * 。
2.16 证明上下文无关语言类在并、连接和星号三种正则运算下封闭。
2 . 1 7 先 说 明 如 何 把 正 则 表 达 式 直 接 转 换 成 等 价 的 上 下 文 无 关 文 法 ,然 后 利 用 练 习 2.1 6 的 结 果 ,给
出 每 一 个 正 则 语 言 都 是 上 下 文 无 关 的 另 一 种 证 明。
问题
2.18 考 虑 下 面 的 CFG G:
S
—
丁 一 aTb
|
SS|T
ab
描 述 L( G) 并 证 明 G 是 歧 义 的 。 给 定 一 个 非 歧 义 文 法 H ,满 足 UH )= UG ),简 要 证 明 H 是
非 歧 义 的。
*
2.19 我 们 定 义 语 言 A 的 旋 转 闭 包 ( rotational closure ) 为 尺C( A )= { jyx
| a A }。证 明 CFL 类 在 旋
转 闭 包 下 是 封 闭 的。
*
2.20 我 们 定 义 语 言 A 的 CUT 为 CUT( A )={:rZU:
y: yZeA }。证 明 CFL 类 在 CUT 下 不 是 封 闭 的。
2.21 证 明 每 一 个 DCFG 是 一 个 非 歧 义 的 CFG。
A *
2.2 2 证 明 每 一 个 DCFG 产 生 一 个 前 缀 无 关 语 言 。
*
2.23 证 明 DCFL 类 在 下 面 的 运 算 下 不 是 封 闭 的 :
并 b. 交 c. 连 接 d. 星 号 e 逆
2.24 设 下 面 的 文 法 为 G:
—
S-^ TH
T |
TaTb TbTa | e
a. 证 明 L( G )= { uH 丨 说 包 含 相 同 个 数 的 a 和 b }。 通 过 使 用 在 w 的 长 度 上 的 归 纳 法 来 证 明 。
b. 使 用 DK- 测 试 来 证 明 G 是 一 个 DCFG。
c. 描 述 DPDA 识 别 L( G ) 的 过 程 。
2.25 设 例 2, 2 8 中 引 入 的 如 下 文 法 为 G4 。使 用 DK- 测 试 来 证 明 Gi 不 是 一 个 DCFG。
R^ S \ T
S— aSb|ab
►
T-^ aTbb|abb
*
2.26 SA = UG),Gi 在 问 题 2 . 2 5 中 已 被 定 义 。证 明 A 不 是 一 个 DCFL。( 提 示 :假 设 A 是 一 个
DCFL , 考 虑 它 的 DPDAP 。 修 改 P 使 其 输 人 字 母 表 为 { a ,b ,c }。当 它 第 一 次 进 人 一 个 接 受 状
态 时 ,从 此 时 开 始 其 假 定 输 入 中 的 c 都 是 b。修 改 的 P 能 够 接 受 什 么 语 言?
)
*
.
2 27 设 3 = { WcM f ,),々>0 且 证 明 B 不 是 一 个 DCFL。
*
.
2 28 设 C ={ | e { 0 ,l } *
> 证 明 C 不 是 一 个 DCFL。(提 示 :假 设 当 某 个 DPDAP 在 其 栈 的 最
^
o
顶 部 的 带 有 符 号 x 的 状 态 《7 开 始 时 ,无 论 P 在 此 时 读 入 了 怎 样 的 输 入 串 ,P 都 不 弹 出 在 x 下 面
的 栈 。在 这 种 情 况 下 ,此 时 P 栈 的 内 容 不 会 影 响 它 接 下 来 的 行 为 ,所 以 P 接 下 来 的 行 为 只 依 赖
于 g 和 x。
)
*
2.29 如 果 我 们 不 允 许 在 CFG 中 有 e 规 则 ,那 么 可 以 简 化 OK- 测 试 。 在 简 化 后 的 测 试 中 ,我 们 只 需
要 检 查 DK 的 每 一 个 接 受 状 态 是 否 有 一 个 单 一 的 规 则 。证 明 一 个 不 带 r 规 则 的 CFG 能 够 通 过 简
第之章上下文无关文法 99
化 后 的 DK - 测 试 当 且 仅 当 它 是 一 个 DCFG 。
■
2. 30 a. 设 C 是 上 下 文 无 关 语 言 ,尺 是 正 则 语 言。证 明 语 言 CA 尺 是 上 下 文 无 关 的 。
b. 利 用 U) 证 明 语 言
{ a ,b ,c } * ,
^
A ={ w \ w : 且 含 有 数 目 相 同 的 a 、b 和 c }
-
不 是 上 下 文 无 关 的。
设 有 CFG G:
—
—
2.31
S aSb | bY | Ya
Y bYlaYle
^
用 通 常 的 语 言 给 出 L( G ) 的 简 单 描 述 ,并 利 用 这 个 描 述 给 出 L( G ) 的 补 集1 7的 CFG。
.
2 32 设 A / B = { w| 且:r G B} , 证 明 如 果 A 是上下文无关语言且 B 是正则语言 ,则 A / B 是
上下文无关语言 。
*
2.33 b > , 给 出 产 生 所 有 a 的个数是 b 的两倍的字符串的语言的 C F G,并证明其正
对 于 字 母 表 2= { a ,
确性 。
*
.
2 34 S C= U # :
y| :
:r ,y 6{ 0, l } ,且 x 关:y },证明 C 是上下文无关语言。
*
2.35 S D = U: :y e , ? } , 证明 D 是上下文无关语言 。
^
*
y U, { 0 l } ,且 丨 x|=|3|
*
; 但 1:
*
2.36 :
设 £ = { W U 关)且 2洋 证 明 :是 上 下 文 无 关 语 言。
.
2 37 对 任 一 语 言 A ,令 运 算 符 S U F F I X( A )= { |
i;存在串 M ,使 ⑽ G A },证明上下文无关语言类在
SUFFIX 运算下封闭 。
.
2 38
CFG G 将其派生岀来恰好需要 2 rz
_ l 步。
设 G 是 一 个 乔 姆 斯 基 范 式 CFG ,证 明 :对 于 任 一 长 度 为 72 U>1 ) 的 字 符 串 加 € L( G ),通过
2.39 设文法 G =( V ,
H < STMT> ) 如 下 :
—
*
— —
condition then < STMT )
( IF-THEN ) —► if
〈 IF- THEN- ELSE〉 if condition then < STMT > else〈 STMT〉
( ASSIGN ) a := 1
X = { if » condition,
then ,
else ,
a: = 1}
V = { < STMT〉 ,IF THEN ) , < IF- THEN- ELSE ) , < ASSIGN )
〈 -
>
G 是 程 序 设 计 语 言 的 一 个 片 断 的 文 法 ,虽 然 看 上 去 很 自 然 ,但 它 是 有 歧 义 的 。
a. 证 明 G 是 歧 义 的 。
b. 给 出 一 个 与 G 产 生 相 同 语 言 的 非 歧 义 文 法 。
*
2.40 给 出 下 列 语 言 的 非 歧 义 CFG:
a. { xH 对 于 w 的 每 一 个 前 缀 ,a 的 个 数 不 小 于 b 的 个 数 }
b. { 切
| u;中 a 的 个 数 和 b 的 个 数 相 等 }
c. 中 a 的 个 数 不 小 于 b}
*
2.41 证 明 练 习 2 . 9 中 的 语 言 A 是 固 有 歧 义 的。
2.42 用泵引理证明下述语言不是上下文无关的:
^
a. { 0nlw 0 nln| 0}
Ab. < # 02 # 03 | w 0 }
0n n n
AC. { v u
^
{ a y b} m , 且 加 是 f 的 子 串 }
*
d. { i
^
^ ^^
… # 4 \ k 2 ,t i :{ a ,b ) * , 且 存 在 i j 使 得
^
2 . 4 3 设 语 言 B 由 { 0 ,1 } 上 具 有 回 文 性 质 的 字 符 串 组 成 且 0 , 1 个 数 相 同 ,证 明 B 不 是 上 下 文 无 关 的 。
2.4 4 对 于 字 母 表 2={ 1 , 2 ,3 ,4 } 上 的 语 言 C = { w e i * 丨 在 加 中 ,
同 },证 明 C 不 是 上 下 文 无 关 语 言。
2 . 4 5 证 明 语 言 厂=
1 与 2 的 个 数 相 同,
|存 在 正 整 数 h 有 i 竽 k j } 不 是 上 下 文 无 关 的 。
3 与 4 的个数相
100 第一部分自动机与语言
.
2 46 考 虑 语 言 B = L( G),其中 G 是练习 2.13 中给出的文法 ,定理 2.19 关于上下文无关语言的泵引
理称存在关于 B 的泵长度 p 。试计算 p 的最小值并验证结果的正确性 。
.
2 47 设 G 是一个含有 6 个变元的乔姆斯基范式 CFG ,证明 :如果 G 派生岀某个字符串时使用了至少
26 步 ,则 UG) 是无穷的 。
.
2 48 试给出一个语言示例 ,它不是上下文无关的 ,但却满足 CFL 关于泵引理的三个条件 。要求给出
证明 (参考问题 1.49 中关于正则语言的类似示例)。
#
.
2 49 证明下述强泵引理 ,要求在划分字符串 5 时 ,;
z 和 y 都非空 。
如果 A 是上下文无关语言 ,则存在一个数 I 使得 A 中任一长度不小于纟的字符串都可以划分
成 5 段 ,5 = u v x y z , 且满足下述条件 :
a. 对每一 个 z 0,ux / x y l z G A ,
^
‘
b.幻尹 且
c. | vxy \
A2 .5 0 ^ k 0
^
对 于 字 符 串 w 和 h 如果二者字符数相等且组成的字符相同 (只是字符在串中的顺序不同 ),则
)}。
使 得 KSCRAMBLECu;
)= U U
SCRAMBLE( u; 兰
^^
* 2.57 设八 ={ 咖1 |1 { 0,
1} * 且
| 加 = U
| |
2.58 设 2={ 0 ,
1 },B 为 后 一 半 中 至 少 包 含 一 个 1 的 串 的 集 合 。换 句 话 说 ,B = { u v \ u e i'
2 12 ,
*
丨 *
}。
a. 设计一个能识别 B 的 PDA 。
b. 设计一个能识别 B 的 CFG。
2.59 设 2= { 0 ,
1 },Q 为在三分段中间部分包含一个 1 的所有串的语言 ,C2 为 在 三 分 段 中 间 部 分 包
Cl = { x y z \ x , z e i m , 6 2 12 ,
^
含两个 1 的所有串的语言。所以 *
| x =|z|
|
*
bl >,
C2 =
{ x y z \ x 9 z e i*
a. 证明 Q 是 CFL。
:
12 * I S * 9 \ x\ = \ z \
^\ \
y } 0
b. 证明 C2 不是 CFL。 ^
习题选解
2.3 a.i? ,X ,S ,T; b.a , b ;
c. R d.G 的三个字符串为 ab , ba , aab ;
e. 不在 G 中的三个字符串为 a , b , e ; f.False ;
第夕章上下文无关文法 101
-
g True;
i.True:
h. False
j.True ;
k. False 1.True;
m.True; n.False
o.L( G) 包含所有不具有回文性质的 a 、 b 串。
2.4 a.S -^ R 1 R 1 R 1 R R-* 0 R|1尺
——
| e
-
0 0S0|0S1|ISO|1S1
d. S |
2.6 a. S ^ TaT
——
T |
TT |
aTb bTa|a | e
了生成的字符串满足 a 的个数不少于 b 的个数 ,S 使得 a 的个数增加 1。
c. S TX
T 0 T0|1 T| 1 nX
X^O X I l X j e
2.7 a. PDA 用栈计算出 a 的个数减去 b 的个数的值 ,当计数为正数时进入接受状态 。具体操作如下 :
PDA 扫描输人 ,如果栈顶为 a 时其读到 b ,则将 a 弹出栈顶 。如果栈顶为 b 时其读到 a ,则将 b
弹出栈顶 。 如果栈顶值与读到的值相同 ,则将读到的字符压人栈 。扫描结束后 ,如果栈顶为 a 则
接受 ,否则拒绝 。
c. PDA 扫描输人并将值压人栈直至其读到字符 # ,如果没有出现 # ,则拒绝 。然后 PDA 在输入上
随机移动 ,并非确定性地在某一时刻停止移动 ,在停止点 ,PDA 将下一个输入字符与栈顶符号
进行比较 ,只要不匹配或者在栈非空的情况下已经完成对输入的扫描 ,则拒绝该分支 。在没结
- -- -
束扫描输入情况下如果栈被清空 ,则 PDA 读取余下的输入并进人接受状态 。
2.8 派 生 过 程 如 下:
〈 句子 〉〈 名词短语〈
〉动词短语 〉
〈 复杂名词〈
〉动词短语 〉
—
〈 冠词〈
〉名词〈
〉动词短语〉
— —
〉动词短语 >
The〈 名词〈
The girl〈 动词短语 〉
———
The girl〈 复杂动词〈〉介词短语〉
The girl〈 动词〈 〉名词短语〈 〉介词短语 〉
The girl touches〈 名词短语〈
〉介词短语 〉
The girl touches〈复杂名词〈 〉介词短语 〉
The girl touches〈冠词〈 〉名词〈〉介词短语 > -►
— ——
The girl touches the〈 名词〉 -
〈 介词短语 〉 ►
—
The girl touches the boy with〈 冠词 〈 -►
〉名词 〉
The girl touches the boy with the〈 名词 〉
The girl touches the boy with the flower
— - —
另一种最左派生方法如下 :
〈 句子 〉〈 名词短语〈
〉动词短语 〉
—-
〈 复杂名词〈
〉动词短语〉
〈 冠词〈
〉名词〈
〉动词短语〉
The〈 名词〈
〉动词短语〉
102 第一部分自动机与语言
—— —
The girl touches〈 冠词〈 〉介词短语 >
〉名词〈 - ►
—
The girl touches the boy〈 介词〈 〉复杂名词 〉
The girl touches the boy with〈 复杂名词 〉
The girl touches the boy with〈冠词〈
〉名词〉 ► -
The girl touches the boy with the〈 名词 〉
The girl touches the boy with the flower
每个派生对应不同的意思 ,对于第一个派生 ,句子的意思是女孩用花去碰男孩 ;第二个派生表明
当女孩碰男孩时他正拿着花 。
2.22 我们使用反证法证明 。假定 it;和 w 是 L( G ) 中 两 个 不 相 同 的 串 ,这 里 G 是 一 个 DCFG。 二 者 都
是 有 效 串 所 以 二 者 都 有 句 柄 ,且 这 些 句 柄 一 定 一 致 ,因 为 我 们 可 以 写 成 和 1 = 妯3 =
x h y, 这 里 /i 是 w 的 句 柄 。因 此 , 和 的 第 一 个 归 约 步 骤 分 别 产 生 有 效 串 M 和 我 们 继 续
^ ^
^
■
.
2 30
我们不能归约 SlZ。这就是一个矛盾。
^ , Cfli ,
a 设 C 为上下文无关语言 ,尺为正则语言 ,P 为识别 C 的 PDA,D 为 识 别 尺 的 DFA,Q 为 P 的
状态集 ,C 为 D 的状态集 ,构造一个 PDA 用于识别 ?, 的状态集为 QXQ\ 则〆在
实现 P 的动作的同时还能记录下 D 的状态 。它能且只能接受在状态 q e F p X F D 处 停 机 的 字 符
串 u;
,其中 FP 是 尸 的 接 受 状 态 集 , 是 D 的接受状态集 ,因为 CH 尺 能 被 〆 识 别 ,故 其 为
上下文无关语言。
b. 设 尺 是 正 则 语 言 a * b * c * ,如 果 A 是 CFL,则根据 (a ) 有 Afl 尺也是 CFL,然而对于 Afl =
2.42 .
b 设 3 =
|n>0 },由例 2.20 得证其不是上下文无关语言 ,因此 A 不是上下文无关语言。
{ 0”# 02 ”# 03 叫《彡0 },p 为 泵 长 度 ,对于字符串 s =
不能被抽取 。
我们证明
^
wy z 将 多 于 两 个 # ,如 果 把 s 用 # 分为三段 0〃,02 p , 03 fi ,
^
v 和:y 都不可能包含 # ,否则 :
31 *
^
A ={ 0klk \ k 0 }, B = { a b3 M >0 } , 它们的完全间隔交叉 ( perfect shuffle) 操 作 产 生 的 语 言 0 =
{( 0aP( 0 b)Mlb〃
^ ^
) k>0 h 容易看出 A 和 B 是 CFL , 但 C 不是 CFL,证明如下 :
如果 C 是 CFL,设 /> 为 其 泵 长 度 ,s = ( 0a )M 0 b )Mlb )2 * 。因
的 长 度 大 于 户 且 56 C,有 5 =5
可计算性理论
第 3 章|
Introduction to the Theory of Computation . 3e
丘奇-图灵论题
本 书 第 一 部 分 已 经 给 出 了 计 算 设 备 的 一 些 模 型 。有 穷 自 动 机 能 较 好 地 描 述 存 储 资 源 较
少 的 设 备 ,下 推 自 动 机 虽 然 能 描 述 具 有 无 限 存 储 的 设 备 ,但 其 “后 进 先 出” 的 栈 机 制 使 其
能 力 受 到 限 制 ,还 证 明 了 这 些 模 型 对 于 有 些 非 常 简 单 的 任 务 都 不 能 完 成 。由 于 它 们 过 于 局
限 ,因 此 不 能 作 为 计 算 机 的 通 用 模 型 。
3. 1 图灵机
现 在 介 绍 一 个 能 力 更 强 的 计 算 模 型 ,该 模 型 由 图 灵 ( Alan Turing ) 在 1936 年 提 出 ,
称 为 图 灵 机 (Turing machine )。图 灵 机 与 有 穷 自 动 机 相 似 ,但 它 有 无 限 大 容 量 的 存 储 且
可 以 任 意 访 问 内 部 数 据 。图 灵 机 是 一 种 更 加 精 确 的 通 用 计 算 机 模 型 ,能 模 拟 实 际 计 算 机 的
所 有 计 算 行 为 。然 而 图 灵 机 也 有 不 能 解 的 问 题 ,事 实 上 ,这 些 问 题 已 经 超 出 了 计 算 理 论 的
极 限。
图 灵 机 (图 3 - 1 ) 用 一 个 无 限 长 的 带 子 作 为 无 限 存 储 ,它 有 一 个 读 写 头 ,能 在 带 子 上
读 、 写 和 左 右 移 动 。图 灵 机 开 始 运 作 时 ,带 子 上 只 有 输
控制
入 串 ,其 他 地 方 都 是 空 的 ,如 果 需 要 保 存 信 息 ,它 可 将 ~
a b |
a |
b u u
这 个 信 息 写 在 带 子 上 。 为 了 读 已 经 写 下 的 信 息 ,它 可 将
读写头往回移动到这个信息所在的位置。机器不停地计 图 3- 1 图灵机的示意图
算 ,直 到 产 生 输 出 为 止 。机 器 预 置 了 接 受 和 拒 绝 两 种 状 态 ,如 果 进 入 这 两 种 状 态 ,就 产 生
输 出 接 受 (accept ) 或 拒 绝 ( reject )。如 果 不 能 进 人 任 何 接 受 或 拒 绝 状 态 ,就 继 续 执 行 下
去 ,永 不 停 止 。
下 面 是 有 穷 自 动 机 与 图 灵 机 之 间 的 区 别:
1. 图 灵 机 在 带 子 上 既 能 读 也 能 写 。
2. 图 灵 机 的 读 写 头 既 能 向 左 也 能 向 右 移 动 。
3. 图 灵 机 的 带 子 是 无 限 长 的 。
4. 图 灵 机 进 入 拒 绝 和 接 受 状 态 将 立 即 停 机。
^
考虑图灵机 Mh 它 检 查 语 言 } 的 成 员 关 系 ,即 要 设 计 A ,
使 得 如 果 输 入 是 B 的 成 员 ,它 就 接 受 ,否 则 拒 绝 。 为 更 好 地 理 解 ,假 设 你 自 己 是 ,
想 象 你 正 站 在 由 数 百 万 个 字 符 构 成 的 一 英 里 长 的 一 个 输 入 上 ,你 的 任 务 是 确 定 这 个 输 入 是
否 是 B 的 成 员 ,亦 即 ,确 定 这 个 输 入 是 否 包 含 由 符 号 # 分 开 的 两 个 相 同 的 字 符 串 。 这 个 输
入 太 长 ,你 很 难 全 部 记 住 ,但 允 许 你 在 这 个 输 入 上 来 回 移 动 ,并 可 以 做 记 号 。一 个 简 单 的
解 决 办 法 如 下 : 在 # 两 边 对 应 的 位 置 上 来 回 移 动 ,以 检 查 它 们 是 否 匹 配 ,并 使 用 记 号 来 记
录 对 应 的 位 置。
按 上 述 方 法 设 计 M!,让 读 写 头 在 输 入 串 上 多 次 通 过 ,每 一 次 匹 配 # 两 边 的 一 对 字 符 。
为 了 记 录 哪 些 字 符 已 经 被 检 査 过 ,Mr消 去 所 有 已 检 査 过 的 符 号 。 如 果 最 后 所 有 的 符 号 都
被 消 去 ,意 味 着 匹 配 成 功 ,M! 进 人 接 受 状 态 ;如 果 发 现 一 个 不 匹 配 ,就 进 人 拒 绝 状 态 。
襄 J7 章丘奇 图灵论题 - 105
,
M 的算法如下 :
,
M = “对于输入字符串 i t;
:
1. 在 # 两边对应的位置上来回移动 。 检査这些对应位置是否包含相同的符号 ,
如不是 ,或者没有 # ,则拒绝 。为记录对应的符号 ,消去所有检查过的符号 。
2. 当 # 左边的所有符号都被消去时 ,检查 # 的右边是否还有符号 ,如果是 ,则
拒绝 ,否则接受 。
”
0 1 1 0 0 0 # 0 1 1 0 0 0
图3 2 是 - Mi 在输入 011000 # 011000 开始之 U
后 ,M! 带子的几个非连续的快照 。 x l l 0 0 0 # 0 1 1 0 0 0 U
对图灵的描述概略地说明了一般图灵机
x l l 0 0 0 # x l l 0 0 0 u
的工作方式 ,这里没有给出其全部细节 。像引入有
穷自动机和下推自动机时所做的那样 ,使用形式化
x l l 0 0 0 # x l l 0 0 0 u ..
描述可以描述图灵机的全部细节 。形式化描述简短 X X 1 0 0 0 # x l l 0 0 0 u ...
地说明图灵机模型的形式化定义中的每个部分 ,实 #
X X X X X X X X X X X X U…
际中 ,为避免过于烦琐 ,很少使用图灵机的形式化 接受
描 述。 图 3- 2 图灵机 Afi 对输人 011000 #
011000 的计算示意图
3. 1 . 1 图灵机的形式化定义
图灵机 ,5 的形式如下 :Q X r
带子方格内包含符号
态 r 。第三个分量 L 或 R
—
图灵机定义的核心是转移函数心它说明了机器如何从一个格局走到下一格局。 对于
则当 5( g ,
Q X r X { L,
a )=( r ,
6,
R },亦即 ,若机器处于状态心读写头所在的
L ) 时 ,机器写下符号 6 以取代
指出在写带之后 ,读写头是向左 ( L ) 还是向右 ( R )
并进人状
移动 。
2,,
图 灵 机 是 一 个 7 元 组 (Q, 5, g accept 5 9 reject ),其 中 :0 , 2 ,
%,r r 都是
有 穷 集 合 ,并 且
1.Q 是 状 态 集 。
2 . 2 是 输 入 字 母 表 ,不 包 括 特 殊 空 白 符 号 U。
—
3.r 是 带 子 字 母 表 ,其 中 ,u e r ,
4. : Q X r Q X T X { L ,R } 是 转 移 函 数 。
^-
5.% 是 起 始 状 态。
6.qaccept 6 Q 是 接 受 状 态 。
7 reject 6 Q 是 拒 绝 状 态 ,且 9reject々Uept 。
^
图灵机 M =( Q , 2,r ,5,9() ,7accept reject ) 的计算方式如下 :开始时 ,M 以最左边的
^^
( (
个带子方格接收输人 ZSJ — 叫 奶 … 带 子 的 其 余 部 分 保 持 空 白 ( 即 填 以 空 白 符 ),
读写头从最左边的带子方格开始运行 ,注意 2 不含空白符 ,故出现在带子上的第一个空白
符表示输人的结束。M 开始运行后 ,计算根据转移函数所描述的规则进行 。如果 M 试图
将读写头从带子的最左端再向左移岀 ,即使转移函数指示的是 L ,读写头也停在原地不
动 。计算一直持续到它进人接受或拒绝状态 ,此时停机 。如果二者都不发生 ,则 M 将永
远运行下去 。
图灵机计算过程中 ,当前状态 、 当前带子内容和读写头当前位置组合在一起 ,称为图
灵机的格局 (configuration ),常以特殊方式表示 。对于状态 g 和带子字母表 r 上的两个字
106 第二部分可计算性理论
符串 和 ,以 表 示 如 下 格 局 :当 前 状 态 是 g ,当前带子内容是 ,
MI;读写头的当前位
^^
置是 r 的第一个符号 ,带子上 r 的最后一个符号
以后的符号都是空白符 。 例如 ,101 切701111 表
Q7
^
局(
设 6 和 (:是 r 中的符号 , W 和 U 是 r * 中的字符串 ,% 和 是 状 态 ,则 M叫 户;
I 和
是两个格局 。如果转移函数满足 5( % , g ,
6)=( ; c,L ),则说
^
uaqfiv 产 uq acv
这说明了图灵机左移的情形 ,下面是右移情形 。 如果 5( % ,
6 )=( % ,
c,R ),则说
uaq々v 产 生 uacq ■
如 果 一 个 语 言 能 被 某 一 图 灵 机 识 别 ,则称该语言是图灵可识别的 (Tur -
ing- recognizable ) e 0
在输人上运行一个图灵机时 ,可能出现三种结果 :接 受 、 拒 绝 或 循 环 。 这 里 循 环
( loop ) 仅仅指机器不停机 ,而不一定是这个词的字面所指的那样 ,永远以同样方式重复
同样的步骤 。循环动作可能是简单的 ,也可能是复杂的 ,但都不会导致停机状态 。
对于一个输人 ,图灵机有两种方式不接受它 :一种是进入拒绝状态而拒绝它 ,另一种
是进入循环 。 有时候 ,很难区分机器是进人了循环还是需要耗费长时间的运行 ,因此 ,我
© 有 些 课 本 称 之 为 递 归 可 枚 举 语 言。
-
第J 章 丘 奇 图灵论题 107
们 更 喜 欢 对 所 有 输 人 都 停 机 的 图 灵 机 ,它 们 永 不 循 环 ,称 这 种 机 器 为 判 定 器 ( decider ) ,
因 为 它 们 总 能 决 定 是 接 受 还 是 拒 绝 。 对 于 可 以 识 别 某 个 语 言 的 判 定 器 ,称 其 判 定 ( decide )
该 语 言。
如 果 一 个 语 言 能 被 某 一 图 灵 机 判 定 ,则 称 它 是 图 灵 可 判 定 的 ( Turing de
cidable ) ,简 称 可 判 定 的 (decidable ) ㊀ 。
-
下 面 给 出 一 些 可 判 定 语 言 的 例 子 ,每 一 个 可 判 定 语 言 都 是 图 灵 可 识 别 的 。在 第 4 章 ,
我 们 将 给 出 一 些 图 灵 可 识 别 但 不 可 判 定 的 语 言 例 子。
3. 1 . 2 图灵机的例子
像 处 理 有 穷 自 动 机 和 下 推 自 动 机 那 样 ,为 了 形 式 化 地 描 述 一 个 特 定 图 灵 机 ,可 以 详 细
指 明 它 的 七 个 部 分。但 除 了 最 小 的 机 器 外 ,这 种 细 节 层 次 的 描 述 对 于 大 多 数 图 灵 机 来 说 是
烦 琐 的 ,所 以 这 里 仅 仅 给 出 较 高 层 次 的 描 述 ,因 为 这 已 经 足 够 精 确 ,并 且 容 易 理 解 得 多。
注 意 ,需 要 记 住 ,每 个 较 高 层 次 的 描 述 实 际 上 只 是 它 的 形 式 化 描 述 的 一 个 速 写 ,只 要 耐 心
和 细 致 ,总 能 形 式 化 地 描 述 本 书 中 每 个 图 灵 机 的 所 有 细 节 。
为 帮 助 你 在 形 式 化 描 述 和 较 高 层 次 描 述 之 间 建 立 联 系 ,在 下 面 两 个 例 子 中 给 岀 状 态
图 。如 果 熟 悉 这 样 的 联 系 ,可 以 忽 略 这 些 图 。
描 述 图 灵 机 M2 , 它 判 定 的 语 言 是 所 有 由 0 组 成 、 长 度 为 2 的 方 幂 的 字 符
串 ,即 焱 = { 02 U>o }。
“对 于 输 人 字 符 串 VU :
1. 从 左 往 右 扫 描 整 个 带 子 ,隔 一 个 字 符 消 去 一 个 0 。
2. 如 果 在 第 1 步 之 后 ,带 子 上 只 剩 下 唯 一 的 一 个 0 , 则 接 受 。
3. 如 果 在 第 1 步 之 后 ,带 子 上 包 含 不 止 一 个 0 , 并 且 0 的 个 数 是 奇 数 ,则 拒 绝 。
4. 读 写 头 返 回 至 带 子 的 最 左 端。
5. 转 到 第 1 步 。
”
每 重 复 一 次 第 1 步 ,消 去 一 半 个 数 的 0 。由 于 在 第 1 步 中 ,机 器 扫 描 了 整 个 带 子 ,故
它 能 够 知 道 它 看 到 的 0 的 个 数 是 奇 数 还 是 偶 数 。如 果 是 大 于 1 的 奇 数 ,则 输 入 中 所 含 的 0
的 个 数 不 可 能 是 2 的 方 幂 ,此 时 机 器 就 拒 绝 。但 是 ,如 果 看 到 的 0 的 个 数 是 1 ,则 输 人 中
所 含 的 0 的 个 数 肯 定 是 2 的 方 幂 ,此 时 机 器 就 接 受 。
下 面 给 岀 M2 =( Q ,2,r ,5, 9l accept reject ) 的形式化描述:
^
• Q — { ql 9 q 2 9 q3
^
, gaccept ,
• 2={ 0 },
9reject
^ J
• r= { o , x ,u> 0
• 将 5 描 述 成 状 态 图 (见 图 3 - 4 )。
—
• 开 始 、接 受 和 拒 绝 状 态 分 别 是 % ,(7accept 和 reject °
^
在 这 个 状 态 图 中 ,从 % 向 % 转 移 时 出 现 了 标 记 0 U ,R。它 表 示 :当 状 态 为 % 且 读 写
—
头 读 0 时,机 器 的 状 态 变 为 % ,在 带 子 上 当 前 位 置 写 下 U,并 向 右 移 动 读 写 头 ,换 句 话 说 ,
S ( q 0 ) = ( q2 ,U ,R ) 在从七到 % 的 转 移 中 ,为 清 晰 起 见 ,使 用 了 简 略 记 法 0 R ,它 表 示:
^ 0
© 在些课本称之为递归语言 。
108 第二部分可计算性理论
0->L
x —>R
A
x—
^
>( 3
0-KJ,
R 0—>x, R
u~>R
x —>R u — 0 R
— 0—>x, R
(
^^ U
«coe
—>R
) %
图 3- 4 图 灵 机 M2 的 状 态 图
^ M • QQ,{2v
\ ,r ,
=(
^ ,它判定的语言是 5={
j d q l » <?accept »
gaccept ,
, ,
= greiect },
g8
reject ) 切 # 洲 加6 { 0 ,
1 广 }。
i,
• 2={ o , # }且 r ={ o ,
i,#,
x,u}。
• 用状态图描述 5 ( 见 图 3 - 5 )。
• 开始 、 接受和拒绝状态分别是 % 、心eept 和 。
—
eet
-
图 3 5 描 绘 了 图 灵 机 的 状 态 图 ,其中 ,对于 % 到自身的转移 ,你能看到标记 0 ,
1 R ,它表示当机器在状态 % 且 读 0 或 1 时 ,保持状态 % 不 动 ,读 写 头 向 右 移 动 。它 不
改变带子上的符号 。
第 1 步由状态 % 到 %实 现 ,第 2 步由其余状态实现。为 简 化 状 态 图 ,没 有 在 图 中 显
示 拒 绝 状 态 ,也 没 有 显 示 到 拒 绝 状 态 的 转 移 。 这 种 转 移 隐 含 地 意 味 着 在 下 列 情 形 下 发 生:
一个状态对某个特殊符号没有向外的转移 。 例 如 ,对 于 状 态 % ,没 有 画 出 由 # 向外的箭
头 ,因 此 ,当状态为 % 且读写头下的符号为 # 时 ,就 进 人 拒 绝 状 态 \ejeet 。对 于 这 些 转 移
-
^
弟 章 丘 奇 图灵论题 109
—
0,
1
'
图 3- 5
—
1 L
0,
^
图灵机 iV 的状态图
函数 ,如果读写头向右移 ,机器便进入拒绝状态 。
^^
图灵机 M3 做 一 些 初 等 算 术 ,它 判 定 语 且 ,>1}。
M3 =“对于输入字符串 zu :
1. 从左往右扫描输入 ,确认输入具有形式 a + b+ C+ ,否则拒绝 。
2. 读写头返回到带子的左端点 。
3. 消去一个 a ,并向右扫描直到 b 出现 。在 b 与 c 之间来回移动 ,成对地消去 b
和 c ,直到把所有的 b 都消去 。如果 c 已经全被消去后还有 b ,则拒绝 。
4. 如果还有 a 未消去 ,则恢复所有已消去的 b ,再重复第 3 步 。如果所有的 a 都
已被消去 ,则检査所有的 c 是否都已被消去 。如果是则接受 ,否则拒绝 。
”
现在仔细检查 M3 的四个步骤 。在第 1 步 ,机器的运行就像有穷自动机一样 ,当读写
头从左往右移动时 ,没有必要去写 ,只要用它的状态来跟踪输入字符串 ,看其是否具有适
当的形式即可 。
步骤 2 似简实妙 。 这个图灵机怎么才能找到输入带子的左端点呢? 找到输入的右端点
是容易的 ,因为输入以空白符终止 。但开始时 ,左端点并没有终止符 ,机器发现其带子左
端点的一种方法是 :当读写头从左端点的符号开始运行时 ,就以某种方式对这个符号作个
标记 ,这样 ,若机器想要它的读写头回到左端点时 ,就可以向左扫描直到发现这个记号 。
例 3.4 说明了这种方法 ,它以空白符作为带子左端点的标记 。
常常利用图灵机模型的定义中提供的条件来发现带子左端点。回忆一下 ,如果机器试
图让其读写头移出带子的左端点 ,它就待在原地不动 ,可利用这个特点来设置左端点探测
器 。 为了探测读写头是否正在左端点上 ,机器可以在当前位置写下一个特殊符号 ,同时在
控制器中记下它取代的符号 ,然后试着让读写头向左移 。如果它还在这个特殊符号上 ,则
这次左移没有成功 ,由此可知 ,读写头肯定在左端点上 ;如果已不在这个特殊符号上 ,而
在另一个不同的符号上 ,则带子上这个位置的左边肯定还有符号 ,这就完成了探测 。在进
一步运行之前 ,必须保证已将那个改变了的符号还原为原来的符号。
对于第 3 、 4 步分别使用不同状态可以直接实现它们 。 ■
110 第二部分可计算性理论
合 。“机 器 在 # 顶 上 放 置 了 一 个 记 号 的 含 义 是 :它 将 带 有 点 的 # 写 在 这 个 位 置 。“把
这 个 记 号 去 掉” 的 含 义 是 :机 器 写 下 了 那 个 没 有 点 的 符 号 # 。一 般 说 来 ,可 能 需 要 在 各 种
不 同 的 带 子 符 号 上 做 记 号 ,要 做 到 这 一 点 ,只 要 带 子 字 母 表 中 包 含 这 些 符 号 的 带 点 形 式 即
可。
从 以 上 这 些 例 子 中 可 以 得 出 如 下 结 论 : 描 述 的 语 言 A ,B ,C 和 :都 是 可 判 定 的 。由
于 每 个 可 判 定 语 言 都 是 图 灵 可 识 别 的 ,所 以 这 些 语 言 都 是 图 灵 可 识 别 的 。 而 要 说 明 一 个 语
言 图 灵 可 识 别 但 不 可 判 定 ,则 比 较 困 难 ,将 在 第 4 章 中 介 绍 。
3.2 图灵机的变形
其 他 形 式 的 图 灵 机 还 很 多 ,例 如 含 有 多 个 带 子 的 或 非 确 定 性 的 图 灵 机 ,它 们 被 称 为 图
灵 机 模 型 的 变 形 ( variant ) , 原 来 的 模 型 与 它 所 有 合 理 的 变 形 有 着 同 样 的 能 力 ,也 即 识 别
相 同 的 语 言 类 。本 节 将 描 述 这 些 变 形 并 证 明 它 们 在 识 别 能 力 上 的 等 价 性 。虽 然 它 们 的 定 义
有 了 变 化 ,但 它 们 的 能 力 却 没 有 改 变 ,在 形 式 变 化 中 保 持 不 变 的 性 质 称 为 稳 健 性 ( robust -
ness )。 有 穷 自 动 机 和 下 推 自 动 机 在 某 种 程 度 上 都 是 稳 健 的 模 型 ,但 图 灵 机 更 具 惊 人 的 稳
健 性。
为 说 明 图 灵 机 模 型 的 稳 健 性 ,先 对 转 移 函 数 的 形 式 在 允 许 范 围 内 做 小 改 动 。在 原 来 的
定 义 中 ,转 移 函 数 强 迫 读 写 头 在 每 一 步 之 后 都 要 向 左 或 向 右 移 动 ,不 能 仅 仅 待 着 不 动 ,如
果 允 许 图 灵 机 读 写 头 有 保 持 不 动 的 能 力 ,则 转 移 函 数 应 有 如 下 的 形 式 :5:Q x r
{ L ,R ,S } 0
-
这 个 特 点 能 否 使 图 灵 机 能 够 识 别 更 多 的 语 言 呢? 也 即 能 否 增 强 它 的 识 别 能 力
Qxrx
-
丘奇 图灵论题 111
呢? 当然不能 ,因为我们能将任何具有这个特点的图灵机转变为一个没有这个特点的图灵
机 ,做法是 :用两个转移替代每一个 “待着不动” 的转移 ,第一个是向右移动 ,第二个是
向左返回 。
这个例子包含了证明各种变形图灵机之间等价性的关键 : 为证明两个模型是等价的 ,
只要证明它们能相互模拟即可 。
3. 2. 1 多带图灵机
多带图灵机 ( multitape Turing machine ) 很像普通图灵机 ,只是有多个带子 ,每个带
子都有自己的读写头 ,用于读和写 。开始时 ,输入岀现在第一个带子上 ,其他的带子都是
空白的 。转移函数改为允许多个带子同时进行读 、 写和移动读写头 ,其形式为 :
Q X r k ^ Q X r k X { L ,R ,S } k
d:
此处纟是带子的个数 。表达式
S ( q{ , ••• , ak ) = ^ b\
, ••• > bk ,
L,R ," ,
* L)
指的是 :若机器处于状态 % ,读写头 1 到々所读的符号分别是 到以 ,则机器转移到状
态 q 各读写头分别写下符号卜到并按此式所指示的那样移动每个读写头 。
” 多带图灵机看上去比普通图灵机的能力强 ,但可以证明它们是等价的 。回忆一下 :若
两个机器识别相同的语言 ,则它们是等价的 。
每 个 多 带 图 灵 机 等 价 于 某 一 个 单 带 图 灵 机。
证明将一个多带图灵机 M 转换为一个与之等价的单带图灵机 S ,关键是怎样用 S 来
模 拟 M。
假设 M 有々个带子 ,S 把此 A 个带子的信息都存储在它的唯一带子上 ,并以此来模拟々
个带子的效果。它用一个新的符号 # 作为定界符 ,以分开不同带子的内容 。除了带子内容之
外 ,S 还必须记录每个读写头的位置。为此 ,它在一个符号的顶上加个点 ,以此来标记读写
头在其带子上的位置 ,S 把它们想象为虚拟带子和虚拟读写头。像以前一样 ,加点的带子符
号应是已经加进带子字母表的新符号 。 图 3 6 说明了怎样用一个带子来表示三个带子 。-
S
1 # 1 a1 a1 a1 #1 b
-
图3 6 用一个带子来表示三个带子
S = “对于输入
1. S 在自己的带子上放入
祛 W\ W 2 •* * # U# U#…#
此格式表示了 M 的全部々个带子的内容 。
2. 为了模拟多带机的一步移动 ,S 在其带子上从标记左端点的第一个 # 开始扫
描 ,一直扫描到标记右端点的第 U + 1 ) 个 # ,其目的是确定虚拟读写头下
112 第二部分可计算性理论
的 符 号 。然 后 S 进 行 第 二 次 扫 描 ,并 根 据 M 的 转 移 函 数 指 示 的 运 行 方 式 更 新
带 子。
3. 任 何 时 候 ,只 要 S 将 某 个 虚 拟 读 写 头 向 右 移 动 到 某 个 # 上 面 ,就 意 味 着 M 已 将
自 己 相 应 的 读 写 头 移 动 到 了 其 所 在 的 带 子 中 的 空 白 区 域 上 ,即 以 前 没 有 读 过 的
区 域 上 。因 此 ,S 在 这 个 带 子 方 格 上 写 下 空 白 符 ,并 将 这 个 带 子 方 格 到 最 右 端 的
”
各 个 带 子 方 格 中 的 内 容 都 向 右 移 动 一 格 。然 后 再 像 之 前 一 样 继 续 模 拟 。 ■
一 个 语 言 是 图 灵 可 识 别 的 ,当 且 仅 当 存 在 多 带 图 灵 机 识 别 它 。
证 明 一 个 图 灵 可 识 别 语 言 可 由 一 个 普 通 的 ( 单 带 ) 图 灵 机 识 别 ,这 个 普 通 图 灵
机 是 多 带 图 灵 机 的 一 个 特 例 ,这 就 证 明 了 此 推 论 的 一 个 方 向 。 另 一 个 方 向 可 由 定 理
3.8 得证。 ■
3 . 2.2 非确定型图灵机
非 确 定 型 图 灵 机 有 如 其 名 :在 计 算 过 程 中 ,机 器 可 以 在 多 种 可 能 性 动 作 中 选 择 一 种 继
续 进 行 。它 的 转 移 函 数 具 有 如 下 形 式 :
Q X r^P ( Q X r X { L,R } )
5:
其 计 算 是 一 棵 树 ,不 同 分 支 对 应 着 机 器 不 同 的 可 能 性 动 作 。如 果 计 算 的 某 个 分 支 导 致 接 受
状 态 ,则 机 器 接 受 该 输 入 。如 果 需 要 复 习 非 确 定 性 ,参 看 1 . 2 节 ,现 在 证 明 非 确 定 性 不 会
影 响 图 灵 机 模 型 的 识 别 能 力。
料 腿 碰 似 每 个 非 确 定 型 图 灵 机 都 等 价 于 某 一 个 确 定 型 图 灵 机。
证 明 思 路 用 确 定 型 图 灵 机 D 来 模 拟 非 确 定 型 图 灵 机 iV 的 证 明 思 路 是 :让 D 试 验 iV
的 非 确 定 型 计 算 的 所 有 可 能 分 支 。 若 D 能 在 某 个 分 支 到 达 接 受 状 态 ,则 接 受 ;否 则 D 的
模 拟 将 永 不 终 止。
将 iV 在 输 入 W 上 的 计 算 看 作 一 棵 树 ,树 的 每 个 分 支 代 表 非 确 定 型 图 灵 机 的 一 个 分 支 ,
结 点 是 N 的 一 个 格 局 ,根 是 起 始 格 局 ,图 灵 机 D 在 这 棵 树 上 搜 索 接 受 格 局。仔 细 地 引 导
搜 索 是 非 常 重 要 的 ,以 免 D 不 能 访 问 整 棵 树 。一 个 诱 人 ( 但 是 坏 ) 的 想 法 是 : D 使 用
“深 度 优 先” 策 略 搜 索 此 树 ,这 种 搜 索 需 要 记 录 下 其 搜 索 的 某 个 分 支 下 的 所 有 子 分 支 ,然
后 再 转 去 搜 索 另 一 个 分 支 。如 果 这 样 ,D 有 可 能 要 记 录 一 个 无 限 分 支 ,因 而 要 无 限 记 录 下
去 ,也 就 不 能 发 现 在 其 他 分 支 上 的 接 受 格 局 。 为 此 我 们 采 用 “宽 度 优 先” 策 略 搜 索 整 棵
树 ,这 个 策 略 是 :在 搜 索 一 个 深 度 内 的 所 有 分 支 之 后 ,再 去 搜 索 下 一 个 深 度 内 的 所 有 分
支 。此 方 法 能 保 证 D 可 以 访 问 树 的 所 有 结 点 ,直 到 它 遇 到 接 受 格 局 。
证 明 模 拟 确 定 型 图 灵 机 D 有 三 个 带 子 ,根 据 定 理 3.8 , 这 等 价 于 只 有 一 个 带 子 。机
-
器 D 将 这 三 个 带 子 用 于 专 门 用 途 。见 图 3 7。第 一 个 带 子 只 包 含 输 入 串 ,且 不 再 改 变 ;第
二 个 带 子 存 放 N 的 带 子 中 的 内 容 ,此 内 容 对 应 iV 的 非 确 定 型 计 算 的 某 个 分 支 ;第 三 个 带
子 记 录 D 在 iV 的 非 确 定 型 计 算 树 中 的 位 置 。
首 先 考 虑 第 三 个 带 子 上 表 示 的 数 据。
N 的 每 个 格 局 确 定 一 个 集 合 ,它 是 由 此 ... 输入带
D
格 局 可 能 转 移 到 的 所 有 下 一 格 局 组 成 ,这 U ... 模拟带
些 下 一 格 局 是 由 iV 的 转 移 函 数 指 定 的 。
|... 地址带
3丨u
iV 的 非 确 定 型 计 算 中 的 每 个 结 点 最 多 有 6
个 子 结 点 ,其 中 6 是 上 述 集 合 中 最 大 的 集 图3 7- 确 定 型 图 灵 机 D 模拟非确定型图灵机 N
-
丘奇 图灵论题 113
合 所 含 的 元 素 个 数 。对 树 的 每 个 结 点 ,可 以 给 其 分 配 一 个 地 址 ,它 是 字 母 表 八 ={ 1 ,2 ,… ,
b ) 上 的 一 个 串 。例 如 ,把 地 址 231 分 配 给 按 以 下 方 式 到 达 的 结 点 : 从 根 出 发 走 到 它 的 第
二 个 子 结 点 ,再 由 此 走 到 第 三 个 子 结 点 ,最 后 由 此 走 到 第 一 个 子 结 点 。此 串 中 的 数 字 告 诉
我 们 : 在 模 拟 N 的 非 确 定 型 计 算 的 一 个 分 支 时 下 一 步 应 做 什 么 。如 果 一 个 格 局 拥 有 的 选 择
太 少 ,则 一 个 符 号 可 能 不 对 应 任 何 选 择 ,此 种 情 况 下 ,地 址 将 无 效 ,不 对 应 任 何 结 点。第 三
个带子上包含 n 上 的 一 个 串 ,它 代 表 N 的 计 算 树 中 的 如 下 分 支 :起 点 是 根 ,终 点 是 此 串 表
示 的 地 址 所 对 应 的 结 点 ,除 非 这 个 地 址 是 无 效 的 。 空 串 是 树 根 地 址 。 D 的 描 述 如 下 :
1. 开 始 时 ,第 一 个 带 子 包 含 输 入 W ,第 二 和 第 三 个 带 子 都 是 空 的 。
2. 把 第 一 个 带 子 复 制 到 第 二 个 带 子 上 ,并 将 第 三 个 带 子 的 字 符 串 初 始 化 为 e 。
3. 用 第 二 个 带 子 去 模 拟 iV 在 输 入 w 上 的 非 确 定 型 计 算 的 某 个 分 支 。在 iV 的 每 一 步 动
作 之 前 ,查 询 第 三 个 带 子 上 的 下 一 个 数 字 ,以 决 定 在 iV 的 转 移 函 数 所 允 许 的 选 择 中 作 何
选 择 。如 果 第 三 个 带 子 上 没 有 符 号 剩 下 ,或 这 个 非 确 定 型 的 选 择 是 无 效 的 ,则 放 弃 这 个 分
支 ,转 到 第 4 步 。 如 果 遇 到 拒 绝 格 局 也 转 到 第 4 步 。 如 果 遇 到 接 受 格 局,则 接 受 这 个
输 入。
4. 在 第 三 个 带 子 上 ,用 字 符 串 顺 序 的 下 一 个 串 来 替 代 原 有 的 串 。转 到 第 2 步 ,以 模 拟
N 的 计 算 的 下 一 个 分 支。 s
一 个 语 言 是 图 灵 可 识 别 的 ,当 且 仅 当 存 在 非 确 定 型 图 灵 机 识 别 它 。
证 明 确 定 型 图 灵 机 自 然 是 一 个 非 确 定 型 图 灵 机 ,此 推 论 的 一 个 方 向 由 此 立 刻 得 证 。
另 一 个 方 向 可 由 定 理 3.1 0 得 证。 篇
可 以 修 改 定 理 3.1 0 的 证 明 ,使 得 如 果 iV 在 计 算 的 所 有 分 支 上 都 能 停 机 ,则 D 也 总 能
停 机 。如 果 对 所 有 输 人 所 有 分 支 都 停 机 ,则 称 这 个 非 确 定 型 图 灵 机 是 一 个 判 定 器 ( decid -
. 练 习 3.3 要 求 以 这 种 方 式 修 改 此 证 明 ,以 得 到 定 理 3.1 0 的 下 列 推 论。
er )
一 个 语 言 是 可 判 定 的 ,当 且 仅 当 存 在 非 确 定 型 图 灵 机 判 定 它 。
3.2. 3 枚举器
前 面 的 脚 注 曾 经 提 到 ,有 人 使 用 术 语 递 归 可 枚 举 语 言 来 代 替 图 灵 可 识 别 语 言 。 这 个 术
语 起 源 于 称 为 枚 举 器 ( enumerator ) 的 机 器 ,它 是 图 灵 机 的 一 种 变 形 。 概 略 地 说 ,枚 举 器
是 带 有 打 印 机 的 图 灵 机 ,图 灵 机 把 打 印 机 当 作 输 出 设 备 ,从 而 可 以 打 印 串 。 每 当 图 灵 机 想
在 打 印 序 列 中 增 加 一 个 串 时 ,就 把 此 串 送 到 打 印 机 。 练 习 3 . 4 要 求 给 出 枚 举 器 的 形 式 定
-
义 。图 3 8 给 出 了 这 个 模 型 的 示 意 图 。
枚举器 :以 空 白 输 人 的 工 作 带 开 始 运 行 ,如
果 不 停 机 ,它 可 能 会 打 印 出 串 的 一 个 无 限 序 列 。 打印机
控制器
枚举器 E 所枚举的语言是最终打印出的串的集合,
而 且 E 可 能 以 任 意 顺 序 生 成 这 个 语 言 中 的 串 ,甚 0 0 U ... 工 作 带
至 还 会 有 重 复 。下 面 建 立 枚 举 器 和 图 灵 可 识 别 语 图 3- 8 枚举器的示意图
言 间 的 联 系。
一 个 语 言 是 图 灵 可 识 别 的 ,当 且 仅 当 存 在 枚 举 器 枚 举 它 。
证 明 首 先 证 明 :如 果 有 枚 举 器 E 枚 举 语 言 A ,则 有 图 灵 机 M 识 别 A 。图 灵 机 M 按
如下方式运行:
114 第二部分可计算性理论
M =“ 对于输入 w:
1. 运行 E。每当 输出一个串时 ,将之与 比较 。
2. 如果 w 曾经在
显然 ,M 接受在 E 的输出序列中出现过的那些串 。
^
:的输出中出现过 ,则接受 。”
现在证明另一个方向 。设 51 ,
&,s3 ,… 是 2 * 中的所有可能的串 ,如果图灵机 M 识别
语言 A ,则为 A 构造枚举器 :如下 :
=“忽略输入 。
1. 对 i = l ,2 ,3 , … ,重复下列步骤 。
2 对 以, 52 » 9 Si 中的每一个 ,M 以其作为输入运行〖 步 。
3. 如果有计算接受 ,则打印岀相应的巧 。 ”
:
如果 M 接受串它终将出现在 生成的打印列表中 。事实上 ,它将在此列表中出现
无限多次 ,因为每一次重复步骤 1 ,M 在每一个串上都从头开始运行 。这个过程有使 M 在
所有可能的输入上并行运行的效果 。 ■
3 . 2. 4 与其他模型的等价性
至此 ,已经介绍了图灵机的多种变形 ,并证明了它们在能力上是等价的 。人们还提出
了许多其他的通用计算模型 ,其中的一些与图灵机十分相似 ,而另一些则相差甚远 ,但都
具有图灵机的本质特征 ,即可以无限制地访问无限的存储器 ,这个特征把它们和有穷自动
机 、 下推自动机等能力较弱的模型区别幵来 。 值得注意的是 ,已经证明 :具有此特点的所
有模型在能力上都是等价的 ,只要它们满足一些合理的必要条件即可e 。
为理解这种现象 ,考虑程序设计语言中的类似情形 。许多程序设计语言 ( 如 Pascal 和
LISP) 从类型和结构上看 ,它们相去甚远 ,那么一个算法是否只能在其中一个上执行而不
能在另一个上执行呢? 当然不是 ,我们既能将 LISP 编译到 Pascal ,也能将 Pascal 编译到
LISP , 这意味着两个语言描述了完全相同的算法类 ,其他合理的程序设计语言也是一样 。
计算模型间的普遍等价性也基于完全同样的原因 ,任意两个满足合理条件的计算模型都能
相互模拟 ,从而在能力上是等价的 。
这种等价现象有着重要的哲学内涵 ,虽然计算模型是多种多样的 ,但它们所描述的算
法类只有一个 。单个计算模型的定义有一定的随意性 ,但从根本上说它所描述的算法类是
自然的 ,因为它和其他模型所描述的类是一样的 。这种现象对于数学也有深远的意义 ,下
一节将对此进行说明 。
3.3 算法的定义
非形式化地说 ,算法是为实现某个任务而构造的简单指令集 。在日常用语中 ,算法有
时称为过程或处方 。算法在数学中也起着重要的作用 ,古代数学文献中包含了各种各样任
务的算法描述 ,如寻找素数和最大公因子 、 在当代数学中 ,更是充满了算法 。
虽然算法在数学中已有很长的历史 ,但在 20 世纪之前 ,算法概念本身一直没有精确
的定义 。当时的数学家对下述问题只有直观的认识 :什么是算法? 在使用和描述算法时应
依赖什么? 这种直观认识对深人理解算法是不够的 。下面的故事说明了算法的精确定义对
© 例如 ,“在一步中只能执行有限的工作量” 就是这样一个条件 。
襄 J7 章 丘 奇 -图灵论题 115
一 个 重 要 数 学 问 题 是 多 么 的 关 键。
3.3. 1 希尔伯特问题
1900 年 ,数 学 家 希 尔 伯 特 在 巴 黎 举 行 的 世 界 数 学 家 大 会 上 发 表 了 至 今 仍 然 著 名 的 演
说。在 演 说 中 ,他 提 出 了 23 个 数 学 问 题 ,并 认 为 它 们 是 对 下 一 个 世 纪 的 挑 战 ,其 中 的 第
10 个 问 题 就 是 关 于 算 法 的 。
在 描 述 这 个 问 题 之 前 ,先 简 单 讨 论 多 项 式 ( polynomial )。一 个 多 项 式 是 一 些 项 ( term )
的 和 ,其 中 每 个 项 都 是 一 个 常 数 和 一 些 变 元 的 积,常 数 称 为 系 数 ( coefficient ) 例 如 , .
6 •x y z • z= 6 x3 y z2
是 一 个 项 ,其 系 数 是 6; 又 如 ,
6x3 y z2 + Z x y 2 — x — 10
3
是 一 个 多 项 式 ,它 有 四 个 项 和 三 个 变 元:r 、 和 z 。本 节 讨 论 中 ,只 考 虑 系 数 是 整 数 的 多
^
项 式 。多 项 式 的 一 个 根 ( root ) 是 对 它 的 变 元 的 一 个 赋 值 ,使 得 此 多 项 式 的 值 为 0。 上 述
多 项 式 的 一 个 根 是 x = 5 , y = 3 和 z = 0 , 这 个 根 是 个 整 数 根 ( integral root ),因 为 所 用 的
变 元 都 被 赋 予 整 数 值 。有 些 多 项 式 有 整 数 根 ,有 些 则 没 有 。
希 尔 伯 特 第 1 0 问 题 旨 在 设 计 一 个 算 法 来 检 测 一 个 多 项 式 是 否 有 整 数 根 。他 没 有 用 算
e 。有 意 思 的
法 这 个 术 语 ,而 是 用 这 样 一 句 短 语 :“ 通 过 有 限 多 次 运 算 就 可 以 决 定 的 过 程”
是 ,从 希 尔 伯 特 对 这 个 问 题 的 陈 述 中 可 以 看 出 ,他 明 确 地 要 求 设 计 一 个 算 法 ,因 此 ,他 明
显 地 假 设 这 样 的 算 法 存 在 ,人 们 所 要 做 的 只 是 找 到 它 。
现 在 我 们 知 道 ,这 个 任 务 没 有 算 法 ,它 在 算 法 上 是 不 可 解 的 。但 对 于 那 个 时 期 的 数 学
家 来 说 ,以 他 们 对 算 法 的 直 观 认 识 ,得 出 这 样 的 结 论 是 不 可 能 的 。这 个 直 观 概 念 也 许 适 用
于 给 出 一 些 任 务 的 算 法 ,但 若 将 之 用 于 证 明 某 个 特 定 任 务 的 算 法 不 存 在 ,就 毫 无 用 处 了。
证 明 算 法 不 存 在 需 要 给 出 算 法 的 明 确 的 定 义 ,第 1 0 问 题 的 进 展 必 须 等 待 这 样 的 定 义 。
在 丘 奇 ( Alonzo Church ) 和 图 灵 ( Alan Turing ) 于 1936 年 写 的 文 章 中 ,这 样 的 定 义
终 于 被 给 出 。丘 奇 使 用 称 为I演 算 的 记 号 系 统 来 定 义 算 法 ,图 灵 使 用 机 器 来 做 同 样 的 事
情 。这 两 个 定 义 后 来 被 证 明 是 等 价 的 ,算 法 的 非 形 式 化 概 念 和 精 确 定 义 之 间 的 这 个 联 系 从
-
此 被 称 为 丘 奇 图 灵 论 题 (Church-Turing thesis ) ,如 图 3 - 9 所 示 。
算法的直观概念 等于 图灵机算法
图 3- 9 -
丘奇 图灵论题
-
丘 奇 图 灵 论 题 提 出 的 算 法 定 义 是 解 决 希 尔 伯 特 第 1 0 问 题 所 必 需 的 。1 9 7 0 年 ,马 提 亚
塞 维 齐 ( Yuri Matijasevic ) 在 戴 维 斯 ( Matin Davis )、普 特 纳 姆 ( Hilary Putnam ) 和 罗 宾
逊 ( Julia Robinson ) 等 人 工 作 的 基 础 上 ,证 明 了 检 查 多 项 式 是 否 有 整 数 根 的 算 法 是 不 存
在 的 。第 4 章 将 介 绍 一 种 技 术 ,它 可 以 被 用 来 证 明 这 个 结 论 及 证 明 另 外 一 些 问 题 也 是 算 法
上 不 可 解 的。
现 在 用 上 述 术 语 来 重 新 陈 述 希 尔 伯 特 第 1 0 问 题 ,这 样 做 有 助 于 一 些 论 题 的 引 入 ,这
些 论 题 将 在 第 4 章 和 第 5 章 中 讨 论 。设
© 从德语原文翻译 。
116 第二部分可计算性理论
户是有整数根的多项式}
本 质 上 ,希 尔 伯 特 第 1 0 问 题 是 问 :集 合 D 是 不 是 可 判 定 的? 答 案 是 否 定 的 。作 为 比 较 ,
先 证 明 D 是 图 灵 可 识 别 的 。在 证 明 之 前 ,先 讨 论 一 个 简 单 问 题 ,它 与 希 尔 伯 特 第 1 0 问 题
非 常 类 似 ,所 不 同 的 是 现 在 仅 考 虑 只 有 一 个 变 元 的 多 项 式 ,如 4P — 2:r +:r — 7。设
2
0 1 ={ /|
> /> 是 有 整 数 根 的 1 的 多 项 式 }
下面是识别 R 的 图 灵 机 :
=“输 入 是 关 于 变 元 :
r 的一个多项式 p。
1. 当 相 继 被 设 置 为 值 0 ,1 ,一 1 ,2 , 一 2 ,3 , 一 3 ,… 时 ,求 的 值 。一 旦
求 得 /> = 0 , 就 接 受 。
”
如 果 /> 有 整 数 根 ,以1 最 终 将 找 到 它 ,从 而 接 受 ;如 果 p 没 有 整 数 根 ,则 ]
^
1 将永远
运 行 下 去 。 对 于 多 个 变 元 的 情 形 ,可 以 设 计 一 个 类 似 的 图 灵 机 M 来 识 别 D ,只 是 M 要 检
查 多 个 变 元 所 有 可 能 取 的 整 数 值。
Mi 和 M 都 是 识 别 器 而 非 判 定 器 。 Mi 可 以 被 转 换 成 R 的 判 定 器 ,因 为 可 以 算 出 一 个
上 界 ,使 得 一 个 单 变 元 的 所 有 根 都 在 这 个 上 界 内 ,这 样 ,只 要 在 这 个 上 界 以 内 进 行 搜 索 即
可 。在 问 题 3.1 0 中 要 求 证 明 :一 个 多 项 式 的 根 一 定 在 下 列 值 之 间 :
max
其 中 々 是 此 多 项 式 中 项 的 个 数 ,cmax 是 绝 对 值 最 大 的 系 数 ,C1 是 最 高 次 项 的 系 数 。如 果 在
这 个 上 界 内 找 不 到 根 ,则 机 器 就 拒 绝 。 马 提 亚 塞 维 齐 ( Matijasevisc ) 定 理 表 明 : 对 于 多
变 元 多 项 式 ,计 算 这 样 的 上 界 是 不 可 能 的 。
3 . 3.2 描述图灵机的术语
现 在 到 了 计 算 理 论 研 究 的 转 折 点 。讨 论 对 象 还 是 图 灵 机 ,但 从 现 在 起 ,真 正 焦 点 是 算
法 ,而 图 灵 机 只 是 被 用 作 算 法 定 义 的 一 个 精 确 模 型 。 我 们 将 忽 略 图 灵 机 本 身 的 广 博 理 论 ,
也 不 过 多 地 浪 费 时 间 在 图 灵 机 的 低 层 次 程 序 设 计 上 。我 们 只 需 要 相 信 图 灵 机 刻 画 了 所 有 的
算 法。
在 承 认 这 一 点 的 前 提 下 ,下 面 将 图 灵 机 算 法 的 描 述 方 式 标 准 化 。在 研 究 开 始 时 ,人 们
总 要 问 :在 描 述 算 法 时 ,什 么 样 的 详 细 程 度 是 适 当 的? 学 生 通 常 也 会 问 这 样 的 问 题 ,特 别
在 他 们 准 备 着 手 解 题 和 做 练 习 时 更 会 这 样 问 。描 述 的 详 细 程 度 有 三 种 :第 一 种 是 形 式 化 描
述 ,即 详 尽 地 写 出 图 灵 机 的 状 态 、 转 移 函 数 等 ,这 是 最 低 层 次 、 最 详 细 程 度 的 描 述 ;第 二
种 描 述 的 抽 象 水 平 要 高 一 些 ,称 为 实 现 描 述 ,这 种 方 法 使 用 日 常 语 言 来 描 述 图 灵 机 的 动
作 ,如 怎 么 移 动 读 写 头 、 怎 么 在 带 子 上 存 储 数 据 等 ,这 种 程 度 的 描 述 没 有 给 出 状 态 和 转 移
函 数 的 细 节 ;第 三 种 是 高 层 次 描 述 ,它 也 是 使 用 日 常 语 言 来 描 述 算 法 ,但 忽 略 了 实 现 的 细
节 ,这 种 程 度 的 描 述 不 再 需 要 提 及 机 器 如 何 管 理 它 的 带 子 或 读 写 头 。
本 章 已 经 给 出 了 许 多 图 灵 机 的 描 述 ,它 们 都 是 形 式 化 描 述 或 实 现 描 述 的 例 子 。使 用 较
低 层 次 的 图 灵 机 进 行 描 述 有 助 于 理 解 图 灵 机 并 增 强 使 用 它 们 的 信 心 ,一 旦 有 了 这 样 的 信
心 ,就 足 以 进 行 高 层 次 描 述 。
下 面 描 述 图 灵 机 的 格 式 和 记 号 。图 灵 机 的 输 入 总 是 一 个 串 ,如 果 想 以 一 个 对 象 而 不 是
字 符 串 作 为 输 人 ,必 须 先 将 那 个 对 象 字 符 串 化 。串 能 很 容 易 地 表 达 多 项 式 、 图 、 文 法 、 自
动 机 及 这 些 对 象 的 任 意 组 合 。可 以 设 计 一 个 图 灵 机 来 对 这 些 串 进 行 适 当 的 解 码 ,使 之 被 解
第s章 丘 奇 图灵论题 - 117
⑹ = (1,2,3,4)((1,2),
(2,3),
(3,1),
(1,4))
图 G 和它的编码〈G〉
练习
有关 ,例 3.4 给出了它的描述及状态图 。在下列每个输入串上 ,给出
“
^
3.1 此练习与图灵机 2 2 所
进入的格局序列 :
a.0 b.00 c.000 d.000000
3.2 此 练 习 与 图 灵 有 关 ,例 3.5 给出了它的描述及状态图 。在下列每个输人串上 ,给出
进人的格局序列 :
a.11 b.1 # 1 c.1 井 # 1 d.10 # 11
e.10 # 10
A 3.3
修改定理 3.10 以得到推论 3.12 的证明 ,即证明一个语言是可判定的当且仅当有非确定型图灵机
判定它 。(可以假设关于树的下列定理成立 :如果一棵树中的每个结点只有有限多个子结点 ,且
此树的每一个分支只有有限多个结点 ,则此树本身只有有限多个结点。
)
3.4 给出枚举器的一个形式化定义 。可将其看作一种双带图灵机 ,用它的第二个带子作为打印机 。 包
括它所枚举的语言的定义 。
A3.5
检查图灵机的形式化定义 ,回答下列问题并解释你的推理 :
a. 图灵机能在它的带子上写下空白符吗?
b. 带子字母表 r 和输人字母表 2 能相同吗?
c. 图灵机的读写头能在连续的两步中处于同一个位置吗?
d. 图灵机能只包含一个状态吗?
3.6 定理 3.13 证明了一个语言是图灵可识别的当且仅当有枚举器枚举它 。为什么不能用下列更简单的
52 ,… 是 2 中的所有串 。
算法作为充分性的证明? 像以前一样 ,& , *
E= “忽略输入 ,
1. 对于 f = l ,
2 ,3 ,… ,
重复下列步骤 。
2. 在 & 上 运 行 M。
3. 如果接受 ,则打印出 Si o
3.7 下面描述的不是一个合法的图灵机 ,解释为什么。
Mbad == “ 在输人〈 /> > 上 ,其 中 为 变 元 xi ,… ,
心上的一个多项式 :
1. 让 A ,… ,A 取所有可能的整数值 。
2. 对所有这些取值求 的值 。
^
第J 章 丘 奇 图灵论题 - 119
3. 只 要 某 个 取 值 使 得 p 为 0 , 则接受 ,否则拒绝 。
”
3.8 下 面 的 语 言 都 是 字 母 表 { 0 ,1 } 上 的 语 言 ,以 实 现 层 次 的 描 述 给 出 判 定 这 些 语 言 的 图 灵 机:
Aa.{ xy
| w 包 含 相 同 个 数 的 0 和 1 }。
b. 所 包 含 的 0 的 个 数 是 1 的 个 数 的 两 倍 }。
c.{ wlw 所 包 含 的 0 的 个 数 不 是 1 的 个 数 的 两 倍 }。
问题
设 A 是 仅 含 一 个 串 s 的 语 言 ,其 中:
_/
A3.9
0 如果火星上没有任何生命
S
11 如果火星上发现生命
A 是 可 判 定 的 吗 ? 为 什 么? 在 本 题 中 , 假 设 “ 火 星 上 是 否 有 生 命 ” 这 一 问 题 的 答 案 只 有 “ 有 ”
或 “没 有” 两 种 。
3. 1 0 设 多 项 式 cixn + C2:
r” 1 + … + c„:c + c ;l +i 有根 = ,cmax 是 q 的 最 大 绝 对 值 。证 明
| 〈(
X Q|
”+ 1 )
* 3.11 证 明 :不 能 在 带 子 的 输 入 区 域 写 的 单 带 图 灵 机 只 能 识 别 正 则 语 言。
* 3.12 证明每一个无穷图灵可识别语言都有一个无穷可判定子集。
• 3 . 1 3 证 明 :一 个 语 言 是 可 判 定 的 ,当 且 仅 当 有 枚 举 器 以 标 准 字 符 串 顺 序 枚 举 这 个 语 言 。
* 3.14 设 图 灵 可 识 别 语 言 由 图 灵 机 的 描 述 组 成 ,证 明 存 在 一 个 以 图 灵 机 作 为 输
人 字 符 的 图 灵 可 识 别 语 言 C,使 得 在 JB 中 的 每 一 个 图 灵 机 在 C 中 也 有 一 个 图 灵 机 与 之 等 价 ,反
之亦然。
3.15 证明图灵可识别语言类在下列运算下封闭:
Aa. 并 b. 连 接 c. 星 号 d 交 e. 同 态
3.16 证明可判定语言类在下列运算下封闭:
Aa 并 b. 连 接 c. 星 号 d. 补 e 交
A3 . 17 只 写 一 次 图 灵 机 ( write once Turing machine ) 是 一 个 单 带 图 灵 机 ,它 在 每 个 带 子 方 格 上 最 多 只
~
能 改 变 其 内 容 一 次 (包 括 带 子 上 的 输 入 区)。证 明 图 灵 机 模 型 的 这 个 变 形 等 价 于 普 通 的 图 灵 机 模
型。( 提 示 :首 先 考 虑 如 下 图 灵 机 :可 以 修 改 带 子 方 格 最 多 两 次 ,使 用 多 个 带 子 。
)
3. 1 8 双 无 限 带 图 灵 机 (Turing machine with doubly infinite tape ) 与 普 通 图 灵 机 相 似 ,所 不 同 的 是 它 的
带 子 向 左 和 向 右 都 是 无 限 的 。此 带 子 在 开 始 时 ,除 了 包 括 输 人 区 域 外 ,其 他 都 填 以 空 白 符 ,计
算 也 像 通 常 一 样 定 义 ,只 是 在 它 向 左 移 动 时 不 会 遇 到 带 子 的 端 点 。证 明 这 种 类 型 的 图 灵 机 识 别
图 灵 可 识 别 语 言 类。
3. 1 9 左 复 位 图 灵 机 ( Turing machine with left reset ) 和 普 通 图 灵 机 类 似 ,只 是 它 的 转 移 函 数 具 有 下 列
形式:
d:
QXr ~* Q x r x { R , RESET }
如 果 扒 g, 6,
a )=( r , RESET ),则 当 机 器 处 于 状 态 g 且 读 a 时 ,在 带 子 上 写 下 6 并 进 入 状 态 r 后 ,
读 写 头 就 跳 到 带 子 的 左 端 点 。注 意 ,这 样 的 机 器 没 有 将 它 的 读 写 头 向 左 移 动 一 个 符 号 的 普 通 能
力 。证 明 左 复 位 图 灵 机 识 别 图 灵 可 识 别 语 言 类 。
3. 2 0 以 停 留 代 替 左 移 图 灵 机 (Turing machine with stay put instead of left ) 和 普 通 图 灵 机 类 似 ,只 是
3.21
它的转移函数具有下列形式:
^ :
Qxr
在 任 何 时 候 ,机 器 可 以 将 读 写 头 向 右 移 ,或 让 其 停 留 在 原 地 不 动
灵 机 不 等 价 ,这 样 的 图 灵 机 识 别 什 么 语 言 类 ?
—
Q X T X < R , S}
。证 明 这 样 的 图 灵 机 与 普 通 图
队 列 自 动 机 ( queue automaton ) 类 似 于 下 推 自 动 机 ,只 是 栈 换 成 了 队 列 ,队 列 是 只 能 从 左 边 写
120 第二部分可计算性理论
入 符 号 从 右 边 读 出 的 带 子 ,每 次 写 操 作 (推 ) 往 队 列 的 左 端 增 加 一 个 字 符 ,每 次 读 操 作 ( 拉 ) 从
队 列 的 右 端 读 取 一 个 字 符 并 随 即 将 其 从 带 子 上 删 除 。 和 下 推 自 动 机 一 样 ,队 列 自 动 机 的 输 人 被
放 在 一 条 单 独 的 只 读 输 入 带 上 ,且 读 写 头 只 能 在 输 入 带 上 从 左 向 右 移 动 ,输 入 带 在 输 入 字 符 串
后 跟 一 空 白 字 符 以 标 识 输 入 的 结 束 位 置 。队 列 自 动 机 在 对 输 入 进 行 操 作 的 过 程 中 ,只 要 进 入 一
个 接 受 状 态 ,机 器 就 接 受 。 证 明 一 个 语 言 能 被 一 个 确 定 型 队 列 自 动 机 识 别 当 且 仅 当 该 语 言 是 图
灵 可 识 别 的。
3.22 设 tPDA 表 示 有 々 个 栈 的 下 推 自 动 机 。因 此 ,0 - PDA 就 是 一 个 NFA ,1 - PDA 就 是 通 常 的 PDA 。
- -
已 经 知 道 1 PDA 比 0 PDA 更 强 (识 别 更 大 的 语 言 类 )。
- -
a. 证 明 2 PDA 比 1 PDA 更 强 。
b. 证 明 3 - PDA 不 比 2 - PDA 更 强 。
( 提 示 :用 两 个 栈 来 模 拟 一 个 图 灵 机 带 。
)
习题选解
3.1 b.qx 0 0 , U g20 , U xq3 U * U g5 x U,g 5 LI x U » U g2 x U,U xq2 U , U x L! qacci
3.8
状 态。
a. “对 于 输 入 串 w : ■
^
1. 扫 描 带 子 并 对 第 一 个 未 标 记 的 0 进 行 标 记 。如 果 没 有 发 现 未 被 标 记 的 0 , 则 转 到 第 4 步 ,否
则 ,读 写 头 返 回 至 带 子 的 左 端 点 。
2. 扫 描 带 子 并 对 第 一 个 未 标 记 的 1 进 行 标 记 。 如 果 没 有 发 现 未 被 标 记 的 1 ,则 拒 绝 。
3. 读 写 头 返 回 至 带 子 左 端 点 ,并 转 到 第 1 步 继 续 执 行 。
4. 读 写 头 返 回 至 带 子 左 端 点 ,扫 描 带 子 以 发 现 是 否 存 在 未 被 标 记 的 1。如 果 没 有 则 接 受 ,否 则
”
拒绝 。
3.9 语 言 A 是 语 言 { 0 } 或 语 言 { 1 } 之 一 ,这 两 个 语 言 都 是 有 穷 的 ,因 此 是 可 判 定 的 。 如 果 不 能 判 定
上 述 两 个 语 言 哪 一 个 是 A ,也 就 不 能 描 述 出 A 的 判 定 器 。 但 是 ,可 以 给 出 两 个 图 灵 机 ,其 中 必 有
一 个 是 A 的 判 定 器。
3. 1 5 a. 对 任 意 两 个 图 灵 可 识 别 语 言 M 、 L2 及 其 对 应 的 图 灵 识 别 机 M! 、 M2 , 构 造 图 灵 机 只 别 M
^
与 的 并 集。
“对 于 输 入 ZJU :
1. 逐 步 地 在 w 上 交 替 地 运 行 Mi 和 Af 2 。任 何 一 个 接 受 ,则 AT 接 受 。如 果 两 个 机 器 都 停 机
7
并 拒 绝 ,则 M 拒绝 。
”
-
第J 章 丘 奇 图灵论题 121
^^ ^
如 果 ]\ 或 ] 2 接受 ,则 因 为 接 受 图 灵 机 在 有 限 步 达 到 接 受 状 态 ,从 而 M'也 接 受
U; W 。注 意 :
如 果 A 、M2 都 拒 绝 或 者 任 何 一 个 处 于 循 环 状 态 ,则 Af 将 一 直 循 环 下 去 。
. , 设图灵机 ]
^
3 16 a. 对 于 任 意 两 个 可 判 定 语 言 M 和 L2 和 純 分 别 判 定 它 们 。构 造 图 灵 机 iVT 来 判 定
语言M 和 12 的并集 :
“对 于 输 人
1. 在 w 上 运 行 M1
,
(> 如 果 它 接 受 ,则 接 受 。
2. 在 u;上 运 行 M2 。如 果 它 接 受 ,则 接 受 ,否 则 拒 绝
接 受 w ,则 AT 接 受 w 。如 果 二 者 都 拒 绝 ,则 Af 拒 绝 。
^
如 果 或 ] 2
3.17 首 先 用 一 个 两 次 写 图 灵 机 模 拟 一 个 普 通 图 灵 机。两 次 写 图 灵 机 将 整 个 带 子 的 字 符 串 内 容 拷 贝 到 带
子 右 边 的 空 白 部 分 (也 即 在 带 子 上 第 一 个 空 白 字 符 处 开 始 对 带 子 上 的 字 符 串 进 行 拷 贝 ),来 模 拟 原
来 机 器 的 一 步 操 作 。机 器 逐 字 符 拷 贝 并 对 其 进 行 标 记 ,这 个 过 程 会 对 每 个 带 子 方 格 进 行 两 次 操 作 。
第 一 次 写 字 符 ,第 二 次 紧 接 着 对 这 个 字 符 进 行 标 记 ,以 标 识 其 已 经 被 拷 贝 。原 来 图 灵 机 的 读 写 头
位 置 在 带 子 上 进 行 标 记 ,当 把 方 格 中 的 内 容 拷 贝 到 这 个 位 置 或 者 其 旁 边 时 ,带 子 的 内 容 根 据 原 来
图 灵 机 的 规 则 进 行 更 新。
用 一 次 写 图 灵 机 进 行 模 拟 时 ,其 操 作 同 两 次 写 图 灵 机 ,只 是 原 来 带 子 上 的 每 个 方 格 现 在 用 两
个 方 格 表 示 ,第 一 个 存 储 原 来 带 子 上 的 符 号 ,第 二 个 存 储 在 拷 贝 过 程 中 做 上 标 记 的 字 符 。输 入 不
能 用 两 个 格 子 代 表 一 个 字 符 ,因 此 ,在 第 一 次 带 子 被 拷 贝 时 ,就 直 接 在 输 人 字 符 上 进 行 标 记 。
第 4 章|
Introduction to the Theory of Computation , 3 e
可 判 定 性
4. 1 可判定语言
本节将给出一些算法上可判定的语言的例子 。 我们将关注涉及自动机和文法的语言 。
例如 ,提岀一个算法来检测一个串是否是一个上下文无关语言 ( context-free language ,
CFL ) 中的元素 。关注这些语言是有趣的 ,因为 :首先 ,某些问题是和应用相关的 。例如
测试一个上下文无关文法是否可生成某一个串 ,这一问题就和程序设计语言中的程序识别
及编译有关 。 此外 ,某些涉及自动机和文法的问题在算法上却是不可判定的 。开始举的例
子很可能是可判定的 ,而这或许有助于你领会一些不可判定的例子 。
4. 1 . 1 与正则语言相关的可判定性问题
首先介绍与有穷自动机有关的计算问题 。我们将给出算法来检测一个有穷自动机是否
接受一个串 、 一个有穷自动机的语言是否为空以及两个有穷自动机是否等价等问题 。
因为已经建立了处理语言的术语 ,故为方便起见 ,就用语言来表示各种计算问题。例
如 DFA 接受问题 (acceptance problem ),检测一个特定的确定型有穷自动机是否接受一个
事先给定的串 ,此问题可表示为语言 ADFA ,它包含了所有 DFA 的编码以及 DFA 接受的
串的编码 。令
ADFA ={〈 B ,W |
> B 是 DFA 并且接受输入串 w }
问题 “ DFAB 是 否 接 受 输 入 与 问 题 是 否 是 ADFA 的元素 ” 是相同的 。类
似地 ,其他一些计算问题也可表示成检查语言的成员隶属关系 ,证明这个语言是可判定的
与证明这个计算问题是可判定的是同一回事 。
下面的定理将证明 ADFA 是可判定的 ,因而也就证明了问题 “一个给定的有穷自动机
是否接受一个给定的串” 是可判定的 。
第4章 可 判 定 性 123
ADFA 是 一 个 可 判 定 语 言 。
证明思路证明思路非常简单 。只要设计一个判定 ADFA 的图灵机 M 即可 。
M = “对于输入 w > ,其中
( B, B 是 DFA , 是串:
1. 在输人 w 上模拟 B 。
2. 如果模拟以接受状态结束 ,则接受 ;如果以非接受状态结束 ,则拒绝 。
”
证明我们仅提及证明中的某些实现细节 。如果你对某个标准程序设计语言很熟悉 ,
那就想一想 ,怎样写一个程序来执行这个模拟 。
首先检查输人 ( B ,
w ),它表示输人串 w 和 D F A B。B 的一个合理的表示方法是简单
% 及 F。 当 M 收到输人时 ,首先检查它是否正确地表示了
地列出它的五个元素 Q 、2、3、
D F A B 和串 w 。如果不是 ,则拒绝 。
然后 M 直接执行模拟 。用在带子上写下信息的方法 ,它可以记录 B 在输入 w 上运行
时的当前状态和当前位置 。运行开始时 ,S 的当前状态是 g ,读写头的当前位置是 w 的 。
最左端符号 。状态和位置的更新是由转移函数 5 决定的 。 当 M 处理完 w 的最后一个符号
时 ,如果 B 处于接受状态 ,则 M 接受这个输入 ;如果不是 ,则 M 拒绝 。 鼸
对非确定型有穷自动机 ,可以证明类似的定理 。设
ANFA ={〈 B,
w〉| B 是 NFA 并 且 接 受 输 入 串
ANFA 是 一 个 可 判 定 语 言 。
证明构造一个判定 ANFA 的图灵机 iV 。 可以将 N 设计成与 M
DFA 改为模拟 NFA 。但我们不这样做 。下面说明一个新想法 :用 作为 iV 的子程序 。 M
— 样 ,只是将模拟
为检查一个文法的语言是否为空 ,需要检查起始变元能否产生一个终结符串。算法解
决的是一个更一般的问题 ,它不仅检查起始变元 ,而且检查每一个变元 ,以确定这个变元
能否产生一个终结符串 。在确定某个变元能够产生一个终结符串后 ,算法就将这个变元作
上标记 ,以记录这个信息。
算法先在文法中的所有终结符上作标记 ,然后扫描所有的文法规则 。如果发现某个规
则允许用符号串来取代一个变元 ,且符号串中的所有符号都已被作过标记 ,则算法知道 ,
这个变元也能被作上标记 。这样继续下去 ,直到找不到可以作标记的变元为止 。下面的图
灵机尺实现这个算法 。
证明
,其中
尺 =“对于输入〈G〉 G 是一个 CFG :
1. 将 G 中所有的终结符全都作上标记。
—
2. 重复下列步骤 ,直到找不到可以作标记的变元。
3. 如果 G 有规则 A …UK ,且 …, 中的每个符号都已被作过标
记 ,则将变元 A 作标记 。
4. 如果起始变元没有被标记 ,则接受 ;否则拒绝 。
” ■
126 第二部分可计算性理论
下 面 讨 论 检 查 两 个 上 下 文 无 关 文 法 是 否 派 生 同 一 个 语 言 的 问 题 。设
£QC:FG ={ < G,
H〉| G 和 H 都 是 CFG ,且 L( G )= L( H )}
对 有 穷 自 动 机 ,定 理 4.5 给 出 了 判 定 语 言 EQDFA 的 算 法 。在 证 明 EQDFA 是 可 判 定 时 ,使 用
了 EDFA 的 判 定 过 程 。对 于 上 下 文 无 关 语 言 ,可 能 有 人 认 为 ,因 为 ECFG 也 是 可 判 定 的 ,似
乎 可 以 用 类 似 方 法 来 证 明 £QCFG 是 可 判 定 的 。但 这 个 思 路 有 问 题 。 练 习 2.2 已 经 证 明 ,上
下 文 无 关 语 言 类 在 补 和 交 运 算 下 不 封 闭 。 事 实 上 ,EQCFG 不 是 可 判 定 的 ,这 可 用 将 在 第 5
章 中 介 绍 的 一 种 技 术 来 证 明。
现在来证明上下文无关语言都可以用图灵机来判定。
iiPIKi 每个上下文无关语言都是可判定的。
证 明 思 路 设 A 是 一 个 CFL。目 标 是 证 明 A 是 可 判 定 的 。一 个 (行 不 通 的 ) 思 路 是 :
将 A 的 一 个 PDA 直 接 转 换 成 图 灵 机 ,这 并 不 难 做 到 ,因 为 图 灵 机 的 带 子 的 功 能 更 强 ,用
来 模 拟 栈 是 容 易 的 。A 的 这 个 PDA 可 能 是 非 确 定 型 的 ,这 看 上 去 也 不 会 有 问 题 ,因 为 可
将 其 转 换 为 非 确 定 型 图 灵 机 ,而 任 何 非 确 定 型 图 灵 机 都 可 转 化 为 与 之 等 价 的 确 定 型 图 灵
机 。然 而 还 是 有 困 难 ,PDA 计 算 的 某 些 分 支 可 能 会 永 远 进 行 ,即 不 停 地 在 栈 上 读 和 写 而
不 能 停 机 。这 样 一 来 ,模 拟 它 的 图 灵 机 也 就 有 不 停 机 的 计 算 分 支 ,因 而 这 个 图 灵 机 就 不 是
一 个 判 定 器 。 故 必 须 有 不 同 的 思 路。本 定 理 的 证 明 使 用 了 判 定 ACFG 的 图 灵 机 S,这 个 图 灵
机 是 在 定 理 4.6 中 设 计 的 。
证 明 设 G 是 A 的 一 个 CFG。下 面 设 计 一 个 判 定 A 的 图 灵 机 M g ,它 在 自 己 内 部 建
立 G 的 一 个 备 份 。其 工 作 方 式 如 下 :
MG =“对 于 输 入 图灵可识别的
至 此 ,本 课 程 描 述 了 四 个 主 要 语 言 类 :正 正则的
则 的 、上 下 文 无 关 的 、 可 判 定 的 和 图 灵 可 识 别
的 ,定 理 4.8 在 它 们 之 间 的 关 系 图 中 画 岀 了 最
后 一 条 连 线 。图 4 - 2 描 述 了 这 个 关 系 。 图 4- 2 语言类间的关系
4.2 不可判定性
本 节 将 证 明 算 法 不 可 解 的 问 题 是 存 在 的 ,这 是 计 算 理 论 中 最 具 哲 学 意 义 的 定 理 之 一 。
计 算 机 看 上 去 是 如 此 强 大 ,使 得 人 们 相 信 所 有 问 题 最 终 都 能 被 其 解 决 。 可 是 上 述 定 理 说
明 ,本 质 上 计 算 机 的 能 力 是 有 局 限 的 。
什 么 样 的 问 题 是 计 算 机 不 能 解 的 呢? 不 可 解 问 题 是 否 深 奥 得 仅 藏 于 理 论 科 学 家 的 心 中
呢? 不!现 在 已 经 证 明 ,甚 至 一 些 人 们 非 常 希 望 解 决 的 普 通 问 题 都 是 计 算 上 不 可 解 的 。
不 可 解 问 题 之 一 是 :假 设 你 有 一 个 计 算 机 程 序 ,还 有 一 个 说 明 书 ,精 确 地 说 明 了 此 程
序 将 做 什 么 (例 如 ,说 明 此 程 序 将 把 一 串 数 列 进 行 排 序)。你 要 做 的 是 :验 证 该 程 序 正 像
说 明 书 所 说 的 那 样 运 行 ( 即 它 是 正 确 的)。因 为 程 序 和 说 明 书 都 是 像 数 学 一 样 的 精 确 对 象 ,
你 希 望 将 验 证 过 程 自 动 化 ,即 将 这 些 对 象 提 供 给 一 个 适 当 设 计 的 计 算 机 来 验 证 。但 你 将 会
失 望 ,因 为 一 般 的 软 件 验 证 问 题 用 计 算 机 是 不 能 解 决 的 。
本 节 和 第 5 章 都 将 介 绍 一 些 不 可 解 问 题 ,目 的 是 帮 助 你 了 解 这 类 不 可 解 问 题 并 学 习 证
第4章 可 判 定 性 127
明不可解性的技巧 。
现在介绍第一个不可解性定理。下面的语言是不可判定的 :检查一个图灵机是否接受
一 个给定的串问题 。 类似于
*
ADFA 和 A CFG 记之为 ATM 。 但 ADFA 和 ACFG 是可判定的,
ATM 却不是。
令
ATM = {〈 M,
W〉|M 是 一 个 图 灵 机 ,且 接 受
ATM 是 不 可 判 定 的 。
先证明 ATM 是图灵可识别的 。这样 ,本定理表明识别器确实比判定器更强大。要求图灵
机 (TM) 在所有输入上都停机限制了它能够识别的语言种类 。下面的图灵机 U 识别 Atm 。
=“对于输人 < M,
W〉,其中 M 是一个图灵机 ,w 是一个串 :
1. 在输人 w 上模拟 M;
2. 如果 M 进入接受状态 ,则接受 ;如果 M 进入拒绝状态 ,则拒绝 。
…
”
注意 ,如果 在加上循环 ,则机器在输入 ( M ,
w ) 上循环 ,这就是 U 不判定 ATM
的原因 。 假如 M 知道自己在 w 上不停机 ,这种情况下它会拒绝 。 然而 ,算法本身无法做
这样的决定 。待会儿我们会看到这种情况 。
图灵机 U 自身也很有意思 ,它是所谓通用图灵机的一个例子 。 通用图灵机是图灵于
1936 年首次提出的 ,之所以称之为 “通用”,是因为它能够模拟任何其他图灵机 ,只要知
道其描述即可 。通用图灵机在开发早期的程序存储式计算机过程中曾起过重要作用。
4 . 2. 1 对角化方法
2 ,3 , },f 是 偶 自 然 数 的 集 合 { 2 ,4 ,6 ,… }。用 康 托
设 N 是自然数集合 {1,
的 关 于 集 合 规 模 的 定 义 可 以 看 到 :N 和 f 有 相 同 的 规 模。从 N
-
映 射 到 5 的 对 应 / 是 /(rz)=2n。借 助 于 表 4 1 能 更 容 易 地 看 清 /。 -
表4 1 N 到e的 对 应 /
fin)
这 个 例 子 似 乎 令 人 意 外。直 观 上 , 似 乎 比 N 小,因 为
f 是 N 的 一 个 真 子 集 。但 由 于 能 够 将 N 的 元 素 与 :的 元 素
进 行 配 对 。故 可 以 下 结 论 说 这 两 个 集 合 有 相 同 的 规 模 。 《
如 果 一 个 集 合 A 是 有 限 的 或 者 与 N 有 相 同 的 规 模 ,则 称 A 是 可 数 的
( countable )0
现 在 介 绍 一 个 更 令 人 意 外 的 例 子 。设 是 正 有 理 数 集 合 ,
Q 看 上 去 似 乎 比 N 大 得 多 ,然 而 按 照 定 义 ,这 两 个 集 合 的 规 模 相 同 。下 面 先 给 岀 Q 到 N
的 一 个 对 应 ,这 证 明 了 Q 是 可 数 的 ,从 而 也 就 证 明 了 本 结 论。给 出 一 个 Q 到 N 的 对 应 的 简
单 方 法 是 :先 列 出 Q 的 所 有 元 素 ,然 后 将 此 序 列 中 的 第 一 个 元 素 与 N 中 的 1 配 对 ,将 第 二 个
元 素 与 2 配 对 ,依 此 类 推 。 注 意 ,必 须 保 证 Q 中 的 每 个 元 素 在 此 序 列 中 只 出 现 一 次。
-
为 得 到 这 样 的 序 列 ,构 造 下 面 包 含 所 有 正 有 理 数 的 矩 阵 ,如 图 4 3 所 示 。第 z 行 包 含
所 有 分 子 为 纟 的 数 ,第 )列 包 含 所 有 分 母 为)的 数 。故i出 现 在 第 i 行 和 第 / 列 交 叉 处 。J
-
图4 3 N 与 Q 的对应
现 在 将 此 矩 阵 转 化 成 一 个 序 列 。一 个 (行 不 通 的) 思 路 是 :序 列 以 第 一 行 的 所 有 元 素
开 始 。但 因 为 第 一 行 是 无 限 的 ,序 列 将 不 会 到 达 第 二 行 ,故 此 思 路 不 好 。 换 用 下 面 的 方
-
法 :从 角 落 开 始 ,排 列 在 对 角 线 上 的 所 有 元 素 ,这 些 对 角 线 已 经 附 加 在 图 4 3 中。第 一 条
—
对角线只包含一个元素
+ ,第 二 条 对 角 线 包 含 两 个 元 素 f 和士,所 以 此 序 列 的 前 三 个 元 素
■
|
是 和
°
中 ,就 重 复 了
+
第 三 条 对 角 线 上 有 麻 烦 ,它 包 含 吾 和
2
如果简单地将它们加到序列
为 避 免 重 复 ,忽 略 引 起 重 复 的 元 素 。所 以 仅 仅 加 人 两 个 新 元 素
3
f和
t。 以 这 种 方 法 继 续 下 去 ,就 得 到 Q 的 所 有 元 素 的 一 个 序 列 。
第4章 可 判 定 性 129
看 过 N 与 Q 的 对 应 之 后 ,你 也 许 会 认 为 ,可 以 证 明 任 意 两 个 无 限 集 合 都 有 相 同 规 模 。毕
竟 只 要 给 出 一 个 对 应 即 可 ,这 个 例 子 也 说 明 了 确 实 存 在 某 些 不 可 思 议 的 对 应 。但 是 ,还 是 有
一 些 集 合 因 为 太 大 了 ,故 没 有 与 N 的 对 应 。这 样 的 集 合 称 为 不 可 数 的 ( uncountable)。
实 数 集 便 是 一 个 不 可 数 集 合 的 例 子 。实 数 ( real number ) 是 用 十 进 制 表 示 的 数 。 数
.1 4 1 5 9 2 6… 和#= 1.4142135 … 都 是 实 数 。设 R 是 实 数 集 合 。 康 托 证 明 了 R 是 不 可 数
TT = 3
的 。下 面 用 对 角 线 方 法 证 明 之 。
fesl邏KEI R 是 不 可 数 的。
证 明 为 证 明 R 是 不 可 数 的 ,必 须 证 明 在 N 与 R 之 间 不 存 在 对 应 。下 面 用 反 证 法 证
明 之 :假 设 在 N 与 R 间 存 在 对 应 /,现 在 的 任 务 是 证 明 它 没 有 应 有 的 性 质。因 为 它 是 一 个
对 应 ,所 以 必 能 将 N 的 所 有 元 素 与 R 的 所 有 元 素 进 行 配 对 。 如 果 能 找 到 R 中 的 一 个:r 和
N 中 的 任 何 元 素 都 不 能 配 对 ,则 找 到 了 矛 盾 。
为 此 ,实 际 构 造 出 这 样 一 个 I。 方 法 为 : 在 选 择 它 的
每 一 位 数 字 时 ,都 使 得:r 不 同 于 某 个 实 数 ,且 此 实 数 已 与
N 中 一 个 元 素 配 对 。 这 样 就 能 保 证:r 不 同 于 任 何 已 配 对 的
表4 2
- 假定存在的 N 与
R 间的对应 /
fin)
实 数。
3.14159…
用 一 个 例 子 来 说 明 这 个 思 路 。 假 设 对 应 / 存 在 ,且 设
— . —
/( 1 ) = 3.1 4 1 5 9 ,/( 2 ) = 5 5.5 5 5 5 5 ,/( 3 ) = … ,等 等 。
则 / 将 自 然 数 1 与 3 1 4 1 5 9 … 配 对 ,将 2 与 5 5.55555 … 配
2
3
4
55.55555…
0. 123455".
0 . 50000(
^-
-
对 ,依 此 类 推 。表 4 2 给 出 了 此 假 定 存 在 的 / 的 一 些 值 ,/
联 系 了 N 和 R。
只 要 给 出 x 的 十 进 制 表 示 ,则:r 就 可 以 构 造 出 来 。所 构 造 的 x 是 在 0 与 1 之 间 的 一 个
数 ,所 以 重 要 的 是 小 数 点 后 面 的 数 字 。 要 保 证 对 每 个《 都 有:r 关 /( n )。 为 保 证 x 关 /( 1 ),
只 要 保 证:r 的 第 一 位 小 数 不 同 于 /( 1 )= 3.1 4 1 5 9 … 的 第 一 位 小 数 ,即 不 是 数 字 1 ,随 意 地
^
令 它 为 4 。 为 保 证 x 关 /( 2 ),只 要 保 证 x 的 第 二 位 小 数 不 同 于 /( 2 )= 5 5 . 5 5555 … 的 第 二
位 小 数 ,即 不 是 数 字 5 , 任 意 地 令 它 为 6; /( 3 )= 0.1 2 3 4 5
的 第 三 位 小 数 是 3 , 故 可 取:r 的 第 三 位 小 数 是 任 一 个 不 为 3
的 数 字 ,比 如 4 。沿 着 表 4 - 2 中 / 的 对 角 线 ,以 这 种 方 法
- 表4 3
-
fin)
x 的取法
3. 14159…
继 续 下 去 ,就 能 够 得 到 x 的 所 有 数 字 ,如 表 4 3 所 示 。不 - 2 55. 55555…
难 知 道 ,对 任 意 :
C 都 不 是 /( ),因 为 与 /( 72 ) 在 第
—
^
X /2
3 0. 123455 … .
x = 0 4641
个 小 数 位 上 不 同 。( 有 一 个 小 问 题 。有 些 数 ,如 0 . 1 9 9 9 … 和 4 0. 50000…
0 . 2 0 0 0… ,虽 然 它 们 的 十 进 制 表 示 不 同 ,但 它 们 却 相 同 。
只 要 在 构 造 x 时 不 选 数 字 0 和 9 , 就 可 避 免 这 个 问 题。
) 嫌
上 述 定 理 对 计 算 理 论 有 着 重 要 的 应 用 ,它 表 明 有 些 语 言 是 不 可 判 定 的 ,甚 至 不 是 图 灵
可 识 别 的 ,原 因 是 :有 不 可 数 个 语 言 ,却 只 有 可 数 个 图 灵 机 。由 于 一 个 图 灵 机 只 能 识 别 一
个 语 言 ,而 语 言 比 图 灵 机 更 多 ,故 有 些 语 言 不 能 用 任 何 的 图 灵 机 识 别 。这 样 的 语 言 就 不 是
图 灵 可 识 别 的 ,正 如 下 面 推 论 所 说。
存 在 不 能 被 任 何 图 灵 机 识 别 的 语 言。
证 明 为 证 明 所 有 图 灵 机 构 成 的 集 合 是 可 数 的 ,首 先 证 明 :对 任 意 的 字 母 表 2 , 其 上
所 有 串 的 集 合 2 * 是 可 数 的。这 是 因 为 ,对 每 个 自 然 数〃,长 度 为 n 的 串 只 有 有 限 多 个 。
130 第二部分可计算性理论
— …;
令函数 /:/
— ZA = 010110011
:B为 :/( A ) 是 A 的特征序列,则 / 是一对一且满映射的 ,即是一个对
应 。因为 /3是不可数的 ,故 也是不可数的 。
至此 ,已证明了所有语言的集合与所有图灵机的集合之间不能有对应 。因此可以下结
论说 :存在不能被任何图灵机识别的语言 。 ■
4 . 2.2 不可判定语言
至此 ,我们已为证明定理 4 .9 做了充分准备 ,现在证明下列语言的不可判定性 :
^
〈妨 ,
八观 ={ 加〉|妨是一个图灵机 ,且 ] 接受功 }
证 明 假 设 ATM 是可判定的 ,下面将由之导出矛盾 。 设 H 是 ATM 的判定器 。令 M 是
一个图灵机 ,w 是一个串 。在输入 〈 M ,
w 〉上 ,如果 M 接受 w ,则 H 就停机且接受
如果 M 不 接 受 则 H 也会停机 ,但拒绝加。换句话说 ,H 是一个图灵机 ,使得 :
接 受 如 果M接受w
拒 绝 如 果M不接受 XJU
接 受 如 果 M 不接受〈 M〉
D( < M> )=
拒 绝 如 果 M 接 受〈M〉
当以 D 的描述 < D〉作 为 输 入 来 运 行 D 自身时 ,结 果 会 怎 样 呢? 我们得到 :
接 受 如 果 D 不接受〈 D >
D( < D > )=
拒 绝 如 果 D 接 受 < D>
不论 D 做 什 么 ,它 都 被 迫 相 反 地 做 ,这 显 然 是 一 个 矛 盾 。所 以 ,图 灵 机 D 和 图 灵 机 H 都
不存在 。 ■
回 顾 一 下 上 述 证 明 步 骤 。先 假 设 图 灵 机 H 判 定 ATM; 然 后 用 H 来 构 造 一 个 图 灵 机
D ,它接受输人〈 M> ,当且仅当 iVf 不 接 受 输 入 〈 M〉;最 后 在 D 自身上运行 D 。因 此 ,这
些机器发生下列动作 :
• H 接受 ( M,
当且仅当 M 接受 w 。
w)
• D 拒绝〈 M〉,当且仅当 M 接受〈 M〉 。
• D 拒绝 < D > ,当且仅当 D 接受 < D > 。
最后一行是矛盾的 。
在 定 理 4.9 的 证 明 中 ,什 么 地 方 有 对 角 化 呢? 只 要 检 查 一 下 图 灵 机 H 和 图 灵 机 D 的
行为表就清楚了。 在 这 些 表 中 ,将 所 有 图 灵 机 ,
M2 ,
… 沿 列 方 向 排 列 ,将 它 们 的 描 述
< M!> , < M2 > , … 沿 行 方 向 排 列 。 表 值 说 明 了 所 在 行 中 的 机 器 是 否 接 受 所 在 列 中 的 输 入 ,
如接受 ,则表值为 accept; 如拒绝或在此输入上循环 ,则表值为空白 。 图 4 4 编 排 了 所 有 -
的表值以说明上述想法 :
-
而在图 4 5 中 ,表值是 H 的运行结果 ,其 输 入 与 图 4 4 对应位置一致 。例如 ,如 果 -
,则在第 iVf 3 行和第 〈 M2 〉列 交 叉 处 的 表 值 是 reject ,因 为 H 拒 绝
不接受输入〈M2 〉
,M2 〉
输人 〈 M3 〈 〉。
- -
图 4 6 是在图 4 5 中 加 人 D。根据假设 ,H 是 一 个 图 灵 机 ,所 以 D 也 是 一 个 图 灵 机 ,
^
因此必定在所有图灵机的序列 iV ,
M2 ,
… 中出 {Mi ) ( M2 ) (Ms) ( A/4 ) ( D)
现 。注 意 , D 按 对 角 线 表 值 的 相 反 值 计 算 。 M accept reject accept reject accept
u
: 2 accept accept accept accept accept
在 问 号 处 产 生 矛 盾 ,那 里 的 表 值 必 须 与 它 自 Ah reject reject reject reject reject
M4 accept accept reject reject accept
己相反。
4 . 2. 3
— 个图灵不可识别语言
上 节 介 绍 了 一 个 不 可 判 定 的 语 言 :ATMO
D reject reject accept accept
现 在 介 绍 另 一 个 语 言 ,此 语 言 甚 至 不 是 图 灵 图 4- 6 如果 D 在此图中出现 ,
可识别的 。注意 ,ATM 还 不 是 这 样 的 语 言 ,因 在问号处产生矛盾
132 第二部分可计算性理论
为 已 经 证 明 ATM 是 图 灵 可 识 别 的 。下 面 的 定 理 表 明 :如 果 一 个 语 言 和 它 的 补 都 是 图 灵 可 识
别 的 ,则 此 语 言 也 是 可 判 定 的 。这 样 ,对 任 何 不 可 判 定 语 言,它 或 它 的 补 至 少 有 一 个 不 是
图 灵 可 识 别 的 。回 想 一 下 ,一 个 语 言 的 补 是 由 不 在 此 语 言 中 的 所 有 串 构 成 的 语 言。如 果 一 个
语 言 是 一 个 图 灵 可 识 别 语 言 的 补 集 ,则 称 它 是 补 图 灵 可 识 别 的 (a Turing - recognizable )。
别的。
纖ISliKI
^
一 个 语 言 是 可 判 定 的 , 当 且 仅 当 它 既 是 图 灵 可 识 别 的 ,也 是 补 图 灵 可 识
换 句 话 说 ,一 个 语 言 是 可 判 定 的 ,当 且 仅 当 它 和 它 的 补 都 是 图 灵 可 识 别 的 。
证 明 要 证 明 两 个 方 向 。首 先 ,如 果 A 是 可 判 定 的 ,很 容 易 看 出 A 和 它 的 补 A 都 是
图 灵 可 识 别 的 ,因 为 任 何 可 判 定 语 言 都 是 图 灵 可 识 别 的 ,且 任 何 可 判 定 语 言 的 补 也 是 可 判
定 的。
^
下 面 证 另 一 个 方 向 。如 果 A 和 A 都 是 图 灵 可 识 别 的 ,令 iV SA 的 识 别 器 ,M2 是 A
的 识 别 器 。下 列 图 灵 机 M 是 A 的 判 定 器 :
M =“ 对 于 输 人
1. 在 输 人 w 上 并 行 运 行 和 M2 。
2. 如 果 接 受 ,就 接 受 ;如 果 M2 接 受 ,就 拒 绝 。
”
并 行 地 运 行 两 个 机 器 指 的 是 :M 有 两 个 带 ,一 个 模 拟 Mo 另 一 个 模 拟 M2 。此 时 ,M
交 替 地 模 拟 两 个 机 器 的 一 步 ,一 直 持 续 到 其 中 之 一 接 受 。
现 在 证 明 M 确 实 判 定 A 。任 一 个 串 加 要 么 在 A 中 ,要 么 在 A 中 。 所 以 ,Mi 和
^
必 定 有 一 个 接 受 w。 因 为 只 要 1 或 以2 接 受 ,M 就 停 机 ,所 以 M 总 会 停 机 ,因 而 它 是 个
判 定 器 。 还 有 ,M 接 受 所 有 在 A 中 的 串 ,拒 绝 所 有 不 在 A 中 的 串 ,故 M 是 A 的 判 定 器 ,
因 而 A 是 可 判 定 的。 瓢
ATM 不 是 图 灵 可 识 别 的 。
证明 A 。如 果 ATM 也 是 图 灵 可 识 别 的 ,则 ATM 将 是 可 判 定 的 。但
定 理 4 . 9 说 ATM 不 是 可 判 定 的 ,所 以 ATM 肯 定 不 是 图 灵 可 识 别 的 。
练习
4.1 对于下图所示的 D F A M,回答下列问题 ,并说明理由 。
0 0,1
4.4 设
^^ CFG =
丨 〈 G〉
|G 是 一 个 生 成 e 的 CFG }。 证 明 AeCFG 是 可 判 定 的。
;
^
■
A4 .5 设 { M〉
ETM =〈 且 UM)= 0 }。证 明 ETM 的 补
|M 是 一 个 图 灵 机 , 是 图 灵 可 识 别 的。
4.6 设 X 是集合 U ,2 ,3 ,4 ,5 } ,Y 是 集 合 7 ,8 ,9 ,
{ 6, 1 0 }。
以 表 4-4 描 述 函 数 和 函 数 Y。 回 答 下 列
表4 4
- /㈤
函数 f 和 g
每 一 个 问 题 ,并 对 给 出 否 定 的 答 案 说 明 理 由 。
A a. 6
^
g n)
10
/ 是 一 对 一 的 吗? Ad.g 是 一 对 一 的 吗?
2 7 9
b./ 是 满 映 射 的 吗? e. g 是 满 映 射 的 吗?
3 6 8
c./ 是 对 应 的 吗? f . g 是 对 应 的 吗?
4 7 7
6 是 { 0 ,1 } 上 所 有 无 限 序 列 的 集 合 。用 对 角 化 方 法
_
4.7 设
5 6 6
证 明 B 是 不 可 数 的。
4.8 ST = {( i ,j , :j ,k 6 N }。证 明 :
) i,
k| T 是可数的。
4.9 回 想 一 下 定 义 4.1 0 中 采 用 的 定 义 集 合 具 有 相 同 规 模 的 方 法 ,并 证 明 “有 相 同 规 模 ” 是 一 个 等 价
关 系。
问题
.
4 10 引 理 2 . 2 5 的 证 明 中 提 到 对 0?13八 尸,当 P 从 状 态 <? 开 始 ,x d x e n 是 栈 顶 符 号 时 ,若 它 从 不
.
弹 出 任 何 I 以 下 的 符 号 ,也 不 读 入 任 何 输 入 符 号 ,则 称 i q x ) 是 looping 状 况 。SF= { < P,
g,
oo )|( q , x ) 是 一 个 对 于 P 的 looping 状 况 },证 明 F 是 可 判 定 的 。
4.11 对 于 CFLG 中 的 变 元 A ,如 果 它 在 某 个 字 符 串 的 派 生 中 出 现 ,则 称 A 是 可 用 的 ( US
able)。给 定 一 个 CFG G 和 一 个 变 元 A ,考 虑 测 试 A 是 否 为 可 用 的 这 样 一 个 问 题 。 将 该 问 题 形
式 化 为 一 个 语 言 ,并 证 明 它 是 可 判 定 的 。
4.12 设 A 是由某些图灵机的描述构成的一个图灵可识别语言 { … },其 中 每 个 M, 都 是
〈MDAMd ,
判 定 器 。求 证 :若 判 定 器 M, 的 描 述 在 八 中 ,那 么 存 在 可 判 定 语 言 D,但 它 不 能 被 任 何 M, 所 判
定 。( 提 示 :考 虑 A 的 一 个 枚 举 器 或 许 有 用。
)
.
4 13 设 CCFG ={〈G,
々〉|G 是 一 个 CFG , 其 中 々>0 或 k = o a ),证 明 CCFG
且 L( G )恰 好 包 含 々 个 字 符 串 ,
是 可 判 定 的。
. :
设 0={ < 0,1:
〉6 是 一 个 €?0,*:
^
4 14 | : 是某个 > 1 ( 0)的 子 串 丨,证 明 C 是 可 判 定 的 。(提 示 :使 用
^
ECFC 的 判 定 器 是 个 好 方 法 。
)
• 4.15 设 :
= { < M) |M 是 一 个 DFA ,它 接 受 1 比 0 多 的 串 },证 明 :
是 可 判 定 的 。(提 示 :一 些 关 于
CFL 的 定 理 对 此 会 有 帮 助 。
)
• 4.16 设 PALDFA ={〈 M|
> M 是 一 个 接 受 某 些 回 文 的 DFA },证 明 PALDFA 是 可 判 定 的 。(提 示 :一 些 关
于 CFL 的 定 理 对 此 会 有 帮 助 。
)
A,
.
4 17 设 BALdfa = { < M)
-
l A f S f D F A , 它 接 受 含 有 相 同 个 数 的 0 和 1 的 串 },证 明 B A L d f a 是 可
判 定 的 。( 提 示 :一 些 关 于 CFL 的 定 理 对 此 会 有 帮 助 。
)
4. 18 下 推 自 动 机 的 一 个 无 用 状 态 ( useless state ) 是 指 在 任 何 输 入 上 都 不 会 进 入 的 状 态 。 考 虑 检 査 一
个 下 推 自 动 机 是 否 有 无 用 状 态 的 问 题 。将 这 个 问 题 形 式 化 为 一 个 语 言 ,并 证 明 它 是 可 判 定 的 。
A,
4.1 9 对 于 那 些 可 以 从 两 个 不 同 计 算 分 支 接 受 某 些 字 符 串 的 NFA ,称 其 是 有 二 义 的 ( ambiguous )。设
AMB /GNFA = 〈 〉N 是 一 个 有 二 义 的 NFA },证 明 AMBJGNFA 是 可 判 定 的 。
{ N| ( 建 议 :一 种 较 好 的
解 决 方 法 是 先 构 造 一 个 适 当 的 DFA ,然 后 在 其 上 运 行 Edfa 。
)
4.2 0 设 且 只 要 接 受 就 接 受 •a/M 。 证 明 S 是 可 判 定 的 。
是 DFA ,
4 21. 且 L( 尺)是前缀无关的 }。证明 PREFIX- FREE
设 PREFIX- FREEREX = { R \ R 是一个正则表达式 , 是可
4.2 2
- :
判 定 的 。为 什 么 相 似 的 方 法 无 法 证 明 P尺 EFJX Fi?££ CFC 是 可 判 定 的?
设 A 和 B 是 两 个 不 交 的 语 言 。称 语 言 C 分 离 (separate ) A 和 B ,如 果 AGC 且 BGC。证 明 任 意
^
134 第二部分可计算性理论
两个不交的补图灵可识别语言都可由某个可判定语言分离 。
*
.
4 23 证 明 可 判 定 的 语 言 类 在 同 态 下 不 封 闭。
• 4.24 设 C 是一个语言 。 证明 C 是图灵可识别的 ,当且仅当存在一个可判定语言 D ,使得
( x,
〈 :
y〉G D) }。
4.2 5 检 查 两 个 DFA 在规模小于或等于某个数的所有串上的运行 ,并以此方法证明 EQDFA 是可判定的 。
计算这样的一个数 。
.
4 26 > 尺是一个正则表达式 ,其所描述的语言中至少有一个串
设八 = {〈尺| 以 111 为子串 ( 即有:r 和
^
■
-
:V 使得 w =: :
rlll y )}。证明 A 是可判定的 。
4.27 证明确定一个 CFG 是否生成 1 * 中的所有串的问题是可判定的 。 换言之 ,证明 {〈 G|
〉G 是{ 0 ,
1}
上的一个 CFG ,
且1 GL( G)} 是一个可判定语言。
*
A
4.2 8 设 2= { 0 , 1 } , 证明确定一个 CFG 是否生成 1 * 中的串的问题是可判定的 。换言之 ,证明 {〈 G >|
G 是{ 0 ,1 } 上的一个 CFG ,且 1 * 门 L( G)关 是 一 个 可 判 定 语 言 。
.
4 29 设 A ={〈尺 ,
S>|尺和 S 是正则表达式 ,且 L( 尺 )GUS)},证明 A 是可判定的 。
A
4.3 0 设 焱 = { 〈 M〉|MSDFA,它不接受任何包含奇数个 1 的串 },证明 A 是可判定的 。
4.31 设 I N F I N I T E PDA |M 是一个 PDA ,
{ < M〉 :
且 L( M)是一个无限语言丨。证明 JiVP7iVZ rePDA 是可判
定的 。
A
.
4 32 :: |A 是一个 DFA ,
设 JNFmJ T£ DFA ={〈 A 〉 且 UA )是一个无限语言 }。证明 INFINITEDFA 是可判
定的 。
习题选解
4. 1 是 。 DFAM 接受 0100 。 b. 否 。M 不接受 011 。
c. 否 。输人只有一个组成部分 ,因此形式不正确 。
d. 否 。 前半部分不是正则表达式 ,因此输入的形式不正确 。
e. 否 。M 的语言非空 。 f. 是 。 M 接受和它自身相同的语言。
4.5 设 &,
52 ,
… 是 f 上的所有字符串 。下述图灵机识别 Etm 。
“对于输人 〈 M> ,其中 M 是一个图灵机 :
2 ,3 ,… ,
1. 对 〗= 1 , 重复下面步骤 。
2. 在每个输人 & 52 * * * • f S , 上 ,M 运行 f 步 。
3. 如果 M 接受了其中任意一个 ,则接受 。否则 ,继续 。 ”
4.6 否 。因为 /( 1 )= /( 3 ),所以 / 不是一对一的 。
-
d. 是 。g 是一对一的 。
4. 17 由所有具有相同个 0 和 1 的字符串构成的语言是一个上下文无关语言 ,可以由文法 S 1S0SI
0SlS|e 来生成 。设 P 是可识别该语言的一个 PDA ,构造一个 BALDFA & 图灵机 M,其操作过程如
下 :对于输入 〈 B > ,此处 B 是一个 DFA ,用 B 和 P 构造一个新的 PDA 尺 ,它能够识别属于 B 和
P 的语言的交集 ;然后测试尺的语言是否为空 ;如果该语言为空 ,则 拒 绝 ,否则 ,接 受 。
4.1 9 下 面 的 过 程 将 判 定 A M B I G NFA o 对于给定的 NFAiV ,可以设计一个 DFA D 来模拟 iV ,当且仅当
iV 沿着两个不同计算分支接受某串时 ,D 接受该串 。 然后用 EDFA 的判定器来确定 D 是否接受所有
的串 。
构造 D 的方法类似于在定理 1. 19 的证明中从 NFA 到 DFA 的变换过程 。 我们通过在每个活
动状态上摆放小石子的方法来模拟 N。 首先 ,在初始状态以及与初始状态沿 e 转移可到达的状态
上摆放一个红色的石子 ,然后按照 iV 的变迁过程 ,移动 、 添加 、 去掉石子 ,并保持这些石子的颜
色 。 不论何时 ,只要有两个或两个以上的石子移动到同一状态上 ,就把这些石子换为蓝色的 。 当
读完输入后 ,如果是蓝色的石子在 iV 的接受状态 ,或者有红色石子在 iV 的两个不相同的接受状
态上 ,则接受 。
第4章 可 判 定 性 135
可 归 约 性
在 第 4 章 已 经 确 定 采 用 图 灵 机 作 为 通 用 计 算 机 的 模 型 ,并 介 绍 了 几 个 在 图 灵 机 上 可 解
的 问 题 ,还 给 出 了 一 个 计 算 上 不 可 解 的 问 题 ,即 ATM 。本 章 讨 论 另 外 几 个 不 可 解 问 题。在
讨 论 过 程 中 ,将 介 绍 一 个 基 本 方 法 ,可 用 来 证 明 问 题 是 计 算 上 不 可 解 的 ,这 个 方 法 称 为 可
归 约 性 ( reducibility ) 0
归 约 ( reduction ) 旨 在 将 一 个 问 题 转 化 为 另 一 个 问 题 ,且 使 得 可 以 用 第 二 个 问 题 的 解
来 解 第 一 个 问 题 。在 日 常 生 活 中 ,虽 然 不 这 样 称 呼 ,但 时 常 会 遇 到 可 归 约 性 问 题 。
例 如 ,在 一 个 新 城 市 中 认 路 ,如 果 有 一 张 地 图 ,事 情 就 容 易 了。 这 样 ,就 将 城 市 认 路
问 题 归 约 为 得 到 地 图 问 题。
可 归 约 性 总 是 涉 及 两 个 问 题 ,称 之 为 A 和 B 。 如 果 A 可 归 约 到 B ,就 可 用 B 的 解 来
解 A 。在 上 述 例 子 中 ,A 是 城 市 认 路 问 题 ,B 是 得 到 地 图 问 题 。 注 意 ,可 归 约 性 说 的 不 是
怎 样 去 解 A 或 B ,而 是 在 知 道 B 的 解 时 怎 么 去 解 A 。
下 面 是 可 归 约 性 的 更 深 入 的 例 子。从 波 士 顿 到 巴 黎 的 旅 行 问 题 可 归 约 到 买 这 两 个 城 市
间 的 飞 机 票 问 题 ,进 而 又 可 归 约 到 挣 得 买 飞 机 票 的 钱 问 题 。 此 问 题 还 可 归 约 到 找 工 作
问 题。
数 学 问 题 中 也 有 可 归 约 性 。例 如 ,测 量 一 个 矩 形 的 面 积 问 题 可 归 约 到 测 量 它 的 长 和 宽
问 题 ,解 线 性 方 程 组 问 题 可 归 约 到 求 矩 阵 的 逆 问 题 。
当 根 据 可 判 定 性 来 对 问 题 进 行 分 类 时 ,可 归 约 性 起 着 重 要 作 用。在 本 书 的 后 面 ,它 也
在 复 杂 性 理 论 中 起 着 重 要 的 作 用。当 A 可 归 约 到 B 时 ,解 A 不 可 能 比 解 B 更 难 ,因 为 B
的 一 个 解 给 出 了 A 的 一 个 解 。根 据 可 计 算 性 理 论 ,如 果 A 可 归 约 到 B ,且 B 是 可 判 定 的 ,
则 A 也 是 可 判 定 的 。等 价 地 ,如 果 A 是 不 可 判 定 的 ,且 可 归 约 到 B ,则 B 也 是 不 可 判 定
的 。后 者 在 证 明 许 多 问 题 的 不 可 判 定 性 时 起 着 关 键 作 用。
简 单 地 说 ,下 面 方 法 可 用 来 证 明 一 个 问 题 是 不 可 判 定 的 :先 证 明 另 外 一 个 问 题 是 不 可
判 定 的 ,再 将 此 问 题 归 约 到 它 。
5. 1 语言理论中的不可判定问题
ATM 是 不 可 判 定 的 ,即 确 定 一 个 图 灵 机 是 否 接 受 一 个 给 定 的 输 人 问 题 是 不 可 判 定 的 。
下 面 考 虑 一 个 与 之 相 关 的 问 题 : HALTTM , 即 确 定 一 个 图 灵 机 对 给 定 的 输 入 是 否 停 机 (通
过 接 受 或 拒 绝 ) 问 题 。 这 个 问 题 被 称 为 停 机 问 题 ( halting problem )。 若 将 ATM 归 约 到
HALTTM , 就 可 利 用 ATM 的 不 可 判 定 性 来 证 明 停 机 问 题 的 不 可 判 定 性 。设
= {〈妨,
^ ^
付八1 以 加 >丨] 是一个图灵机 ,
且对输入 1;停机 }
HALT 。
证 明 思 路 用 反 证 法 。假 设 HALT ,下 面 用 这 个 假 设 来 证 明 A T M 是 可
判 定 的 ,这 与 定 理 4.9 矛 盾 。关 键 步 骤 是 证 明 ATM 可 归 约 到 HALTTM 。
假 设 图 灵 机 尺 判 定 HALT 。利 用 可 以 构 造 一 个 判 定 ATM 的 图 灵 机 S。为 了 感 受
第5章 可 归 约 性 137
1. 如果 :
c# t ,则拒绝 。
^
2. 如果:r = w ,则在输入 w 上运行 M ,当 M 接受时 ,就接受 。
这个机器以 w 作为它的描述的一部分。检查 x = W 是否成立的方法很显然 ,即扫描输
”
^
注意 ,S 必须真的能够从 M 和 w 的描述来计算 iV 的描述 。它也确实能够做到 ,这是
因为 :只要在 M 中 增 加 一 个 额 外 的 状 态 来 执 行 的 检 査 即 可 。
如果尺是f : 的判定器 ,则 S 就是 ATM 的判定器 。而 ATM 的判定器是不存在的 ,故
TM
利用计算历史的归约
计算历史方法是证明 ATM 可归约到某些语言的重要技术 。在证明某个问题的不可判定
性时 ,如果此问题涉及检查某样东西的存在性 ,则此方法常常很有用。例如 ,此方法曾用
来证明希尔伯特第 10 问题的不可判定性 。希尔伯特第 10 问题是检查一个多项式的整数根
的存在性 。
图灵机在输入上的计算历史就是当这个图灵机处理此输入时所经过的格局序列 。它是
这个机器所经历的计算的完整记录 。
—
(
趕0 0 © 设 M 是 一 个 图 灵 机 ,功 是 一 个 输 入 串 。以 在 加 上 的 一 个 接 受 计 算 历 史
accepting computation history 是 一 个 格 局 序 列
) ,C ,…,C ,其 中 M在 是 w 上的
Ci 2 ; Ci
起 始 格 局, 的 一 个 接 受 格 局 ,且 每 个 都 是 C i 的 合 法 结 果 ,即 符 合 M 的 规 则 。
M 在 u; 上 的 一 个 拒 绝 计 算 历 史 ( rejecting computation history ) 可 类 似 定 义 ,只 是 G 应 是
一 个 拒 绝 格 局。
^ ^
计算历史都是有限序列 。 如果 ] 在切上不停机 ,则 ] 在加上既没有接受也没有拒绝
计算历史存在 。 确定型机器在任何给定的输入上最多只有一个计算历史 。非确定型机器即
使在单个输入上也可能有多个计算历史 ,它们与各个计算分支相对应 。但在目前 ,我们继
140 第二部分可计算性理论
续 将 注 意 力 集 中 在 确 定 型 机 器 。使 用 计 算 历 史 方 法 的 第 一 个 例 子 是 ,证 明 所 谓 的 线 性 界 限
自动机的不可判定性。
线 性 界 限 自 动 机 ( linear bounded automaton ,LBA ) 是 一 种 受 到 限 制 的
图 灵 机 ,它 不 允 许 其 读 写 头 离 开 包 含 输 入 的 带 子 区 域 。 如 果 此 机 器 试 图 将 它 的 读 写 头 移 出
输 入 的 两 个 端 点 ,则 读 写 头 就 保 持 在 原 地 不 动 。这 与 普 通 图 灵 机 的 读 写 头 不 会 离 开 带 子 的
左 端 点 的 方 式 一 样。
线 性 界 限 自 动 机 是 只 有 有 限 存 储 的 图 灵 机 ,如 图 5 - 1 所 示 。它 只 能 解 这 样 的 问 题 ,其
所 需 要 的 存 储 不 得 超 过 用 作 输 入 的 带 子 区 域 。使 用 一 个 比 输 入 字 母 表 要 大 一 些 的 带 子 字 母
表 ,就 能 使 得 可 用 存 储 增 加 到 常 数 倍 。也 就 是 说 ,对 于 长 度 为〃的 输 入 ,可 用 存 储 量 关 于
n 是 线 性 的 。这 就 是 此 模 型 的 名 称 的 由 来 。
尽 管 线 性 界 限 自 动 机 的 存 储 受 到 限 制 ,但 它 仍 然 十 分 强
大 。例 如 ,ADFA 控制器
ACFG > EDFA 和 £CFG 的 判 定 器 都 是 LBA。
每 个 CFL 都 可 由 一 个 LBA 来 判 定 。事 实 上 ,要 提 岀 一 个 不
能 由 LBA 来 判 定 的 可 判 定 语 言 还 需 颇 费 一 番 周 折 。 只 有 到
第 9 章 时 ,才 能 介 绍 一 个 可 以 做 到 这 一 点 的 技 术 。 -
图5 1 线性界限自动机的图示
^
A LBA ={〈妨,
加|> ] 是一个接受串 1 ;的 LBA }
在证明 ALBA 的 可 判 定 性 之 前 ,证 明 下 面 的 引 理 是 有 用 的 。它 指 出 : 当 一 个 LBA 的 输
入 是 一 个 长 度 为 n 的 串 时 ,只 能 有 有 限 多 个 格 局。
碰 aaa 设 M 是 有 9 个 状 态 和 # 个 带 子 符 号 的 LBA 。 对 于 长 度 为
”的 带 子 ,M 恰
有 qngn 个 不 同 的 格 局。
证明 M 的 格 局 就 像 计 算 中 间 的 一 个 快 照 。格 局 由 控 制 状 态 、 读 写 头 位 置 和 带 子
内 容 组 成 。 这 里 ,M 有 g 个 状 态 。 它 的 带 子 长 度 是 〃,所 以 读 写 头 可 能 处 于 〃个 位 置
之 一 ,且 f 个 带 子 符 号 串 可 能 出 现 在 带 子 上 。 此 三 个 量 的 乘 积 就 是 带 长 为 〃的 M 的
格局总数。
ALBA 是 可 判 定 的 。
…
证 明 思 路 为 了 判 定 LBA M 是 否 接 受 输 入 vu ,在 w 上 模 拟 M 。在 模 拟 过 程 中 ,如 果
M 停 机 且 接 受 或 拒 绝 ,则 相 应 地 接 受 或 拒 绝 。如 果 在 加 上 循 环 ,困 难 就 出 现 了 。只 有
知 道 已 进 入 循 环 时 ,才 能 停 机 且 拒 绝 。
^
调 查 M 何 时 陷 入 循 环 的 思 路 是 :当 在 加 上 计 算 时 ,它 从 一 个 格 局 进 入 另 一 个 格
局 。 如 果 M 曾 经 重 复 过 一 个 格 局 ,它 将 继 续 一 再 地 重 复 这 个 格 局 ,因 此 就 陷 入 了 循 环 。
因 为 M 是 一 个 LBA ,故 可 利 用 的 带 子 方 格 的 数 量 是 有 限 的 。由 引 理 5 . 7 , 在 这 个 有 限 量
的 带 子 上 ,M 只 可 能 处 于 有 限 多 个 格 局 中 。所 以 ,要 使 M 不 进 入 曾 经 进 入 过 的 任 何 格 局 ,
就 只 有 有 限 多 个 格 局 可 以 选 择 。引 理 5.7 给 出 了 所 能 选 择 的 最 大 格 局 数 h 通 过 在 M 上 模
拟 々 步 ,就 能 知 道 M 是 否 进 入 了 循 环 。如 果 到 那 时 M 还 没 有 停 机 ,它 肯 定 陷 入 了 循 环 。
证 明 判 定 ALBA 的 算 法 如 下 :
L =“对 于 输 人 〈 M, w〉,其中 M 是 LBA ,w 是串 :
1. 在 w 上 模 拟 步 ,或 者 直 到 它 停 机 。
2. 如果 M 停机,则当它接受时接受,拒绝时拒绝。如果它还没有停机,就拒绝。
”
第S 章 可 归 约 性
如果 M 在 w 上 运 行 步 还 没 有 停 机 ,根 据 引 理 5.7 , 它必定在重复某个格局 ,即
陷入了循环 。这就是算法为什么在此情形下拒绝的原因 。
定理 5.8 说明了 LBA 和图灵机有一个本质的不同 : 对 LBA ,接受问题是可判定的 ,
但对图灵机来说却不是 。 然而涉及 LBA 的另外一些问题仍是不可判定的 ,其中之一是空
: _
141
_
^
性质问题 ,mf LBA ={〈M|
> MS LBA ,且 L( Af )= 0 }。为证明 £LBA 是不可判定的 ,
要用计算历史方法给出一个归约 。
ELBA 是不可判定的 。
证 明 思 路 证 明 使 用 从 ATM 出发的归约 。 要证明 : 如果 ELBA 是可判定的 ,则 ATM 也
是 可 判 定 的 。现 在 假 设 是 可 判 定 的 ,怎 么 使 用 这 个 假 设 来 判 定 ATM 呢?
对于图灵机 M 和输入串 IV , 通过构造一个 LBAB,再检查 L( B ) 是 否 为 空 ,就 可 确
在! 上的所有接受计算历史 。如果 M 接受 W ,
定 M 是否接受 w 。B 识别的语言包含了
“
^
这个语言就包含一个串 ,因此是非空的 。 如果 M 不接受 W , 这个语言就是空的 。 如果能
确定 B 的语言是否为空 ,显然就能确定 M 是否接受加 。
和功构造 B 。注意 ,不仅需要证明 B 的存在性 ,还必须证明一个
^
现在描述怎样从
图 灵 机 如 何 从 给 定 的 的 描 述 产 生 B 的描述 。
如同前面给出的不可判定性证明中的归约 ,构造 B 的目的是为了将 B 的描述输入给
^
假设存在的 £ BA 的判定器,而不是在某个输入上运行它。
设:r 是 Af 在 w 上的一个接受计算历史 ,构造 B ,使之接受输入:r 。 回忆一下 ,M 的
一个接受计算历史是 M 在接受某个串 w 时 经 历 的 格 局 序 列 ,…, Q 。出于证明的需
要 ,将接受计算历史表示成单个串 ,格局间以符号 # 相互隔开 ,如图 5 - 2 所示 。
-
C2
图 5- 2 B 的一个可能的输人
x
LBAB 按如下方式运行 。如果:r 是
1.Ci 是 M 在 w 上的起始格局 。
2. 每个 C,+ 1 都是 C, 的合法结果 。
3.G 是 M 的一个接受格局 。
M 在 w 上的起始格局 Ci 应 该 是 串 其 。
中 <7 是 M 在 w 上的起始状态 。
这个串是直接装在 B 中的 ,所以 B 能够检査第一个条件 。接受格局是包含状态 gaccept 的格
局 ,所以 B 只要通过扫描 Cz 看能否找到 g accept ,就可检查第三个条件 。第二个条件的检查
是最困难的 ,对每对相邻的格局 ,B 要检查 Cl+ 1 是 否 为 C: 的合法结果 。这个步骤包括:
除了 C: 中读写头下的位置及其相邻位置外 ,验证 C: 和 Cl+ 1 是相同的 ,而上述几个位置
必须根据转移函数来更新 。B 通过在 C: 和 Ci+ 1 的相应位置间来回移动 ,验证更新是否适
当 。 为了在来回移动时记录当前位置 ,B 用点在带子上标记当前位置 。最后 ,如果条件 1 、
2 和 3 都 满 足 ,则 B 接受输入 。
将判定器的答案反过来 ,就能得到 M 是否接受 ;的答案 。 这样就判定了 Atm ,这是
^
142 第二部分可计算性理论
_
个矛盾 。
证明现在构造从 ATM 到 £LBA 的归约 。 假设图灵机 R 判定 ELBA 。如下构造判定 A
的图灵机 S:
S =“对于输入〈M, w〉,其中 M 是图灵机 ,w 是串 :
1. 如 在 证 明 思 路 中 所 描 述 的 那 样 从 构 造 LBAB。
2. 在输入〈 B〉上运行尺 。
3. 如果尺拒绝 ,则接受 ;如果 i? 接受 ,则拒绝 。
… __
”
如果 J? 接受 〈 扮 ,则 L( B )= 0 。 这样 , 在加上就没有接受计算历史 ,M 也就不
接受加。 因此 ,S 就拒绝 ( M ,w ) 类 似 地 ,0
…
如果 R 拒绝 〈 B 〉,则 B 的语言不空 。 B 能够 B ~~
接受的唯一串是 在 w 上的接受计算历史 。
这样 ,M 必定接受 。 相应地 ,S 也就接受
;
^
x (/3 a x x 你
〈 M,
w〉 -
。 图 5 3 是检查这样一个图灵机计算
Ci+i
历史的示意图 。
使用计算历史的归约技术 ,还能建立有关 图5 3- 检査一个图灵机计算历史的 LBAB
^
为了使得 CFGG 派生所有不是 ] 在您上接受计算历史的串 ,采用下面的策略。一个串不
能成为接受计算历史的原因可能有多个。将 M 在 w 上的接受计算历史表示成 # G #Q …#
Q # , 其 中 G 是以在加上计算的第 f 步的格局。 然后 G 派生岀满足下述条件的所有串 :
1. 不以 G 开始 。
2. 不以一 个接受格局结束 。
'
一 个 PDA 要 比 设 计 一 个 CFG 容 易 。D 以 非 确 定 的 分 支 计 算 开 始 ,猜 测 前 面 的 三 个 条 件 中
哪 一 个 被 拿 来 检 查 。它 以 一 个 分 支 检 查 输 入 串 的 开 始 部 分 是 否 为 G ,如 果 不 是 ,则 接 受 。
以 另 一 个 分 支 检 査 输 入 串 是 否 以 一 个 包 含 接 受 状 态 gaeeept 的 格 局 结 束 ,如 果 不 是 ,则 接 受。
:
第 三 个 分 支 的 作 用 是 :如 果 某 个 ( 不 恰 好 派 生( ,+ 1 ,就 接 受 。其 工 作 方 式 如 下 :首
^^
先 扫 描 输 入 ,直 到 它 非 确 定 性 地 确 定 它 已 到 达 C:。 第 二 步 ,它 将 C: 推 进 栈 里 ,直 至 由 符
号 # 标 记 的 结 尾 。第 三 步 ,D 弹 出 栈 与 ( 1+ 1 比 较 。除 了 读 写 头 附 近 位 置 外 ,它 们 应 该 相
同 。读 写 头 附 近 位 置 的 更 改 应 由 M 的 转 移 函 数 决 定 。最 后 ,如 果 发 现 不 匹 配 或 不 适 当 的
更 改 ,D 就 接 受 。
这 个 思 路 存 在 的 问 题 是 :当 乃 将 匕 弹 出 栈 时 ,它 处 于 相 反 的 顺 序 ,因 而 不 适 合 与
Cl + 1 比 较 。前 面 提 到 的 绕 弯 就 在 此 处 。换 一 种 方 法 来 写 接 受 计 算 历 史 ,使 得 每 隔 一 个 格 局
就 以 相 反 的 顺 序 出 现 。 奇 数 位 置 保 持 向 前 的 顺 序 写 ,但 偶 数 位 置 向 后 写 。这 样 形 式 的 一 个
接受计算历史如图 5 4 所示。 -
C3 Cy
-
图5 4 每隔一个格局就以相反的顺序出现
若 PDA D 以 此 修 改 后 的 方 式 将 格 局 推 进 栈 ,则 当 它 们 再 弹 出 时 ,其 顺 序 就 适 合 与
下 一 个 格 局 进 行 比 较 了 。D 的 设 计 就 是 要 使 得 接 受 那 些 不 是 接 受 计 算 历 史 的 任 何 修 改 后
的 串。
在 练 习 5 . 1 中 ,可 以 使 用 定 理 5.1 0 来 证 明 £QCFG 是 不 可 判 定 的 。
5.2 一个简单的不可判定问题
本 节 将 证 明 :不 可 判 定 性 现 象 不 仅 仅 局 限 于 自 动 机 的 问 题。 我 们 将 给 出 一 个 关 于 串 操
作 的 不 可 判 定 问 题 ,称 为 波 斯 特 对 应 问 题 (Post Correspondence Problem , PCP)。
可 以 很 容 易 地 将 这 个 问 题 描 述 成 一 种 游 戏 —多 米 诺 骨 牌 。 每 个 骨 牌 由 两 个 串 构 成 ,
一 边 一 个 。单 个 骨 牌 看 上 去 像
一簇骨牌看起来像
b ca abc
ca ’ Lab」’ L a J ,L c J/
任 务 是 将 这 些 骨 牌 进 行 排 列 (允 许 重 复 ),使 得 在 阅 读 顶 部 符 号 后 得 到 的 串 与 阅 读 底
部 符 号 后 得 到 的 串 相 同 。这 样 的 排 列 称 为 一 个 匹 配 ( match )。例 如 ,下 面 的 排 列 就 是 这 个
游 戏 的 一 个 匹 配。
b ca abc "
lb ca 7 3
阅 读 顶 部 后 得 到 串 abcaaabc ,与 阅 读 底 部 后 得 到 的 相 同 。可 以 将 骨 牌 变 形 ,使 得 顶 部 和 底
部 对 应 符 号 整 齐 地 排 列 ,以 便 更 容 易 表 示 匹 配 。
a b [c a a a b c
a b c a a a b e
144 第二部分可计算性理论
对 某 些 骨 牌 簇 ,不 可 能 找 到 这 样 的 匹 配 。例 如 ,簇
"
abc ~ ca acc
ab ’ ba
不 可 能 包 含 匹 配 ,因 为 顶 部 的 每 个 串 都 比 底 部 对 应 的 串 长 。
波 斯 特 对 应 问 题 是 :确 定 一 簇 骨 牌 是 否 有 一 个 匹 配 。 这 个 问 题 在 算 法 上 是 不 可 解 的 。
在 形 式 描 述 这 个 定 理 和 给 出 它 的 证 明 之 前 ,先 来 精 确 地 描 述 这 个 问 题 ,然 后 表 示 成 一
个 语 言。骨 牌 簇 P 是 PCP 的 一 个 实 例 :
_ _ L^ _
^
P=
"
i l r t2 1 [ tk i
■ bi ’ 2 ■ bk ■
匹配是一个序列 纟2 ,
纟1 , …,0 ,使 得 …\ 。问 题 是 确 定 P 是 否 有 匹 配 。令
> P 是波斯特对应问题的一个实例 ,
PCP = { < P| 且 P 有匹配 }
纖 PCP 是 不 可 判 定 的 。
证 明 思 路 虽 然 证 明 有 许 多 技 术 上 的 细 节 ,但 概 念 还 是 简 单 的 ,主 要 技 术 是 由 ATM 出
…
发 利 用 接 受 计 算 历 史 的 归 约。 证 明 :从 任 意 的 图 灵 机 M 和 输 入 w 都 能 构 造 一 个 实 例 P ,
使得匹配都是 在 加 上 的 接 受 计 算 历 史 。这 样 ,如 果 能 确 定 这 个 实 例 是 否 有 一 个 匹 配 ,
就能确定 M 是否接受
但是怎么构造 P 使得匹配都是
… 在 加 上 的 接 受 计 算 历 史 呢? 在 P 中 选 择 骨 牌 ,使 得
每 形 成 一 个 匹 配 ,便 模 拟 一 次 M。且 在 匹 配 中 ,每 个 骨 牌 都 将 一 个 格 局 中 的 一 个 或 多 个 位
置 与 下 一 个 格 局 中 的 相 应 位 置 连 接 起 来。
在 构 造 之 前 ,先 处 理 三 个 小 的 技 术 要 点 。( 在 第 一 次 通 读 时 ,不 要 过 于 担 心 这 些 。
)第
一 ,为 了 方 便 P 的 构 造 ,假 设
^
在 功 上 从 不 试 图 将 它 的 读 写 头 移 出 带 子 的 左 端 点 。这 要
求 首 先 改 变 M 以 防 止 这 样 的 行 为 。第 二 ,如 果 w = e ,则 在 构 造 中 使 用 串U替 代 w。第 三 ,
修 改 PCP ,要 求 匹 配 都 从 第 一 个 骨 牌 开 始 ,即 :
r ^i i
~
b[ _
稍 后 将 说 明 怎 么 去 掉 这 个 要 求。我 们 称 这 个 问 题 为 修 改 了 的 波 斯 特 对 应 问 题 (MPCP)。设
MPCP ={〈 P|
> P 是波斯特对应问题的一个实例 , P 有一个从第一个骨牌开始的匹配 }
现 在 进 入 证 明 细 节 ,即 设 计 P 来 模 拟 M 在 u;上 的 动 作 。
证 明 假 设 图 灵 机 i? 判 定 PCP。构 造 S 来 判 定 A 。令
M= ( Q,
2,r ,d ,qQ ,qaccept ’9 reject
其中 Q,2 , r,5 分别是 M 的状态集 、 输入字母表 、 带子字母表和转移函数 。
S 构 造 PCP 的 一 个 实 例 P ,使 得 P 有 一 个 匹 配 当 且 仅 当 M 接 受 U;
。 为此 ,S 首 先 构
造 MPCP 的一个实例〆。下 面 以 七 个 部 分 来 描 述 这 个 构 造 ,每 个 部 分 完 成 在 w 上 模 拟
M 的 一 个 特 定 方 面 。 在 构 造 过 程 中 ,为 了 解 释 我 们 正 在 做 什 么 ,用 一 个 例 子 插 在 构
造 中。
_
第 1 部 分 :构 造 以 下 列 方 式 开 始:
将
# q0 'W l
#
2 •••Wn #
放入 , 作为第一张骨牌
[告
^
.
因 为 p 是 MPCP 的 一 个 实 例 ,故 匹 配 必 须 以 这 张 骨 牌 开 始 。 底 部 串 以 M 在 w 上 接
/
第S 章 可 归 约 性 145
受计算历史中的第一个格局 = <?Q W I W2 … 开 始 ,如 图 5 5 所 示 。 -
到 目 前 为 止 ,只 得 到 一 个 部 分 匹 配 ,其 底 部 串 由
#
…叫 # 构 成 ,顶 部 串 只 有 为 获 得 匹 配 ,必 须 扩 展 顶 部 串
来 匹 配 底 部 串。用 新 骨 牌 来 做 这 样 的 扩 展 。这 些 新 的 骨 牌 强 迫
# qo IL' i IV2 #
模 拟 M 的 一 次 单 步 运 行 ,使 得 M 的 下 一 个 格 局 出 现 在 底 部 串
图 5- 5 MPCP 匹 配 的 开 始
的 扩 展 中。
第 2 、 3 和 4 部 分 在 严 中 增 加 的 骨 牌 在 模 拟 中 起 主 要 作 用。第 2 部 分 处 理 读 写 头 向 右
运 动 ,第 3 部 分 处 理 读 写 头 向 左 运 动 ,第 4 部 分 处 理 不 与 读 写 头 相 邻 的 带 子 方 格 。
第 2 部 分 :对 于 每 一 个 a , 和 g ,r G Q , 其 中
,
^Kf
如果 3((7,
a )=( r 6 , 则将 2
R ), 放入 中
br
第 3 部 分 :对 于 每 一 个 6 , c e r 和 g ,r e Q , 其 中
如 果 5( 9 ,)=( ,
6,1 ),则将
” ^ ] 放入,
中
第 4 部 分 : 对 于 每 一 个 a G r,将^ 放人 , 中。
现 补 充 一 个 虚 拟 的 例 子 来 说 明 到 目 前 为 止 我 们 已 经 构 造 了 些 什 么 。设 r= { o,i,2 ,u}。
假设 W 是 串 0 1 0 0 , M 的 起 始 状 态 是 %。在 状 态 % 且 读 0 时 ,假 设 转 移 函 数 指 示 M 进 人
状 态 在 带 子 上 写 下 2 ,并 将 它 的 读 写 头 向 右 移 动 。即 ,§((}0 9 O ) = ( q7 ,2 ,R ) 0
第 1 部 分 将 如 下 骨 牌 放 人 〆 中:
L # % o i o o # 」 [ b[ _
且 匹 配 以 如 下 方 式 开 始:
#
# 0 1 0 0 # 1
0 )=( g7 ,2 ,
另 外 ,因 为 5( g Q , R ),第 2 部 分 放 置 如 下 骨 牌 :
-2 - ,
^
7
因 为 0 , 1 ,2 , U是 r 的 成 员 ,故 第 4 部 分 将 下 列 骨 牌 放 入 中:
- -
- Ln
^-
厂 01 "
2 U
0
9
T .
这 一 步 与 第 5 部 分 一 起 使 得 匹 配 得 到 如 下 扩 展:
# Qo 0 [1 L0 0 1 #
第 5 部分:
「並1 和
将 r i 放 入 prt
.# . Lutt J
这两个骨牌中的第一个使我们能复制符号 # ,它是分隔格局的标记 。 第二个骨牌使我
们能在格局的末端增加一个空白符 u,以此来模拟右边的无限多个空格 ,这些空格在写格
局时被压缩了。
接着上面的例子 ,假设在状态 g7 且读 1 时 ,M 进入状态 % ,在带子上写下 0 , 并将读
l )=( g5 ,0 ,
写头向右移动 ,即 5(g7 , R )。则在〆中有骨牌
最后的那个匹配被扩展到
# 2 1 accept 0 2 #
^
刚才增加的骨牌允许匹配如下继续进行:
第5章 可 归 约 性 147
第 7 部分 :最后增加如下骨牌
[ q accept
来完成匹配:
^
才模拟了 在加上的计算 。为完成证明 ,回忆一下 ,MPCP 与 PCP 的不同之处在于 : 匹
配需要以序列中的第一个骨牌开始 。如果将〆看作 PCP 的一个实例 ,而不是看作 MPCP
的一个实例 ,则无论 M 是否接受 VU , 显然它都有一个匹配 。 你能发现它吗?(提示 : 它非
常短 。
)
现在说明怎么将〆转化为 PCP 的实例 P ,使之仍然模拟 M 在 w 上的运行 。这时用了
一点技术上的窍门 。思路是 :以 “第一个骨牌幵始” 为要求 ,并且将这个要求直接放入问
题 ,使其自动成为强制性的 。这样 ,就不需要明确地提出这个要求 。为此引入一些记号 。
是一个长度为 n 的串。定义★ 、 W :
••
U\ W2
* W3
*
= M3
U
* * * * *
籲籲參
U\ U2 Un
M3 *
Ml * U2
*
这 里, 是 在 M 中的每个字母前增加符号 * ,W M 中的每个字母后增加符号
, M 中每个字母的前和后都增加符号 * 。 为将〆转换为 PCP 的一个实例 P,
做下面的事情 :如果〆是如下的簇 :
r^ i
i \ t2 1 [ tk 1
M. M. J l. M.
就令 P 是如下的簇 :
■
tl 1「 2 1 「如 1 「 ◊!
_ 」’ L 办2 女 」’ ’ L O -
此时若再将 p 看作 PCP 的实例 ,就可以看到 ,可能形成匹配的唯一的骨牌是第一个骨牌
,
1
i
_
因为它是顶部和底部以相同符号 ( 即 * ) 幵始的唯一的骨牌 。除了强迫以第一个骨牌开始
匹配以外 , * 的使用并不影响可能的匹配 ,因为它们被原来的符号相互隔开 ,原来的符号
现在出现在匹配的偶数位 。骨牌
「 ◊1
L
是用来让顶部在匹配的最后再增加一个 * 。
^J
148 第二部分可计算性理论
5.3 映射可归约性
前面已经说明了 ,使用可归约性技术可以证明各种问题的不可判定性 。 本节将可归约
性这个概念形式化 ,这样就能更精确地使用它 ,例如 ,证明某些语言不是图灵可识别的 ,
此外还可应用于复杂性理论中 。
将一个问题归约为另一个问题的概念可以用多种方式来形式定义 , 选择使用哪种
方式要根据具体应用情况 。 我们的选择是一种简单方式的可归约性 , 叫作映射可归约
性 ( mapping reducibility ) 0
5.3. 1 可计算函数
图灵机计算函数的方式是 :将函数的输人放在带子上 ,开始运行 ,并以停机后的带子
作为函数的输岀 。
函 数 是 一 个 可 计 算 函 数 ( computable function ) , 如果有某个
图灵机 M , 使得在每个输人 w 上 M 停机 ,且此时只有 /( w ) 出现在带子上 。
整数上所有通常的算术运算都是可计算函数。例如 ,可以制造一个机器 ,它
以〈m ,72〉为输入且返回 77? 与 7Z 的和 m + n。在这里不给出细节 ,而把它们当作练习。 ■
5.3. 2 映射可归约性的形式化定义
—
现在定义映射可归约性 。同以往一样 ,以语言来表示计算问题 。
嫌 腦 切 语 言 A 是映射可归约到语言 B 的 ,如 果 存 在 可 计 算 函 数 乃 2 * 2* 使
得对每个 w ,
vu :
A => f ( w ) G B
^
记做
^
A<m B 。称 函 数 / 为 从 A 到 B 的归约 。
-
图 5 6 说明了映射可归约性 。
A 到 B 的映射归约提供了将 A 的成员测试问题转化为
B 的 成 员 测 试 问 题 的 方 法 。为 了 检 查 是 否 有 可 使
用这个归约 / 将 w 映射到 /( w),然后检查是否 /( w)6 B。
术语映射归约来自于提供归约手段的函数或映射 。 -
图5 6 将 A 归 约 到 B 的函数 /
© 有 些 教 科 书 称 之 为 多 一 可 归 约 性 ( many-one reducibility )。
第S 章 可 归 约 性 149
如 果 一 个 问 题 映 射 可 归 约 到 第 二 个 问 题 ,且 第 二 个 问 题 先 前 已 被 解 决 ,那 就 能 得 到 原
来 问 题 的 解 。定 理 5.1 6 说 明 这 个 思 路 。
如果 B 是 可 判 定 的 ,则 A 也 是 可 判 定 的 。
A<m B 且
证 明 设 M 是 B 的 判 定 器 ,/ 是 从 A 到 B 的 归 约 。A 的 判 定 器 iV 的 描 述 如 下 :
“对 于 输 入 w :
1. 计 算 /( ⑹ 。
2. 在 f ( zv ) 上 运 行 M,输 岀 M 的 输 出 。
”
显 然 ,如 果 wGA ,则 因 为 / 是 从 A 到 B 的 归 约 。因 此 ,只 要 则
M 接 受 /( 加)。故 iV 的 运 行 正 如 所 求 。 徽
定 理 5.1 6 的 下 列 推 论 是 证 明 不 可 判 定 性 的 主 要 工 具。
如 果 且 A 是 不 可 判 定 的 ,则 B 也是不可判定的。
前 面 的 一 些 证 明 使 用 了 可 归 约 性 方 法 。回 顾 这 些 证 明 就 可 得 到 映 射 可 归 约 性 的 一 些
例 子。
dUfa 定理 5.1 使用从 ATM 出 发 的 一 个 归 约 ,证 明 了 HALT 。
这 个 归 约 说 明 了 如 何 用 HAL TTM 的 判 定 器 给 出 ATM 的 判 定 器 。 以 下 展 示 从 A T M 到
HALTTM 的 映 射 可 归 约 性 ,为 此 必 须 提 供 一 个 可 计 算 函 数 /,它 使 用 形 如 < M ,
w) 的输
人 ,返 回 形 如 的 输 出 ,使 得
〈 M,
切〉6 ATM 当 且 仅 当
下 面 的 机 器 F 计 算 了 归 约 /:
“对 于 输 入〈M,加〉:
1. 构 造 下 列 图 灵 机
=‘ 对 于 输 入:c:
a. 在 x 上 运 行 M。
b. 如 果 M 接 受 ,则 接 受 。
c. 如 果 M 拒 绝 ,则 进 人 循 环 。
’
7
2 输 出〈M ! ,;>。
”■
对 于 形 式 不 正 确 的 输 入 串 在 此 还 有 一 些 小 问 题 ,就 是 如 果 图 灵 机 F 确 定 某 输 入 对 于 输
入 行 的 描 述 “对 于 输 入〈M,
w〉” 来 说 形 式 不 正 确 ,因 而 此 输 入 不 在
: ATM 中 ,那 么 这 个
图灵机输出的串也不在 HALTTM 中 。可 是 所 有 不 在 HALTTM 中 的 串 都 将 被 处 理 。应 当 指
出 ,通 常 而 言 ,当 我 们 描 述 一 个 图 灵 机 进 行 A 到 B 的 归 约 时 ,都 假 定 形 式 不 正 确 的 输 入
串 已 经 被 映 射 到 B 之 外 了。 ■
定 理 5.1 1 中 的 波 斯 特 对 应 问 题 是 不 可 判 定 的 ,其 证 明 中 包 含 了 两 个 映 射
归 约。它 首 先 证 明 了 MPCP,然 后 又 证 明 了 MPCP < m PCP。 对 这 两 种 情 形 ,都
能 容 易 地 得 到 实 际 的 归 约 函 数 ,且 能 容 易 地 证 明 它 们 是 映 射 归 约 。如 练 习 5 . 6 所 示 ,映 射
可 归 约 性 是 传 递 的 ,故 这 两 个 归 约 合 起 来 蕴 涵 ATM<mPCP。 ■
在 定 理 5 . 4 的 证 明 中 ,隐 含 了 一 个 从 ETM 到 £QTM 的 映 射 归 约。 此 归 约 /
,其 中 是 拒 绝 所 有 输 入 的 机 器 。
^
将 输 入 〈 M > 映 射 到 输 出 〈 M, ] 〉 ■
奶 本 节 定 义 了 映 射 可 归 约 性 的 形 式 概 念 ,本 章 的 前 面 部 分 所 使 用 的 可 归 约 性
都 是 非 形 式 概 念 。定 理 5 . 2 证 明 £TM 是 不 可 判 定 的 ,这 个 证 明 说 明 了 映 射 可 归 约 性 的 形 式
150 第二部分可计算性理论
.
映射可归约性对求补运算是敏感的 ,这对用可归约性来证明某些语言的不可识别性
非常重要 。 也可以使用映射可归约性来证明某些问题不是图灵可识别的 。 下列定理与定
理 5.16 十分相似 。
料狐 >4 如果 A<m B ,且 B 是 图 灵 可 识 别 的 ,则 A 也 是 图 灵 可 识 别 的 。
此定理的证明与定理 5.16 的证明类似 ,只是将 M 和 iV 改为识别器而非判定器 。
如 果 A<m B ,且 A 不 是 图 灵 可 识 别 的 ,则 B 也不是图灵可识别的。
作为这个推论的一个典型应用 ,设 A 是 ATM 的补集 Atm 。由推论 4.17 知 ,ATM 不是
图灵可识别的 。由映射可归约性的定义不难看出 :A<mB 与 A<mS 有相同的含义 : 为证
明 B 不是可识别的 ,可以证明 ATM<mS。还可以使用映射可归约性来证明某些问题既不
是图灵可识别的 ,也不是补图灵可识别的 ,就像下面的定理那样 。
EQTM 既 不 是 图 灵 可 识 别 的 ,也 不 是 补 图 灵 可 识 别 的 。
^
价 。相反 ,如果 M 不 接 受 则] 2 什 么 也 不 接 受 ,故 它 们 是 等 价 的 。 这 样 / 将 ATM 归
约到 EQTM , 这正是我们所希望的 。
为了证明 EQ ,只要给出一个从 A £QTM 的补 ( gp £QTM )
的归约。因此要证明 ATM<m £:QTM 。下面的图灵机 G 计算归约函数 g 。
G =“对于输入 〈 M,w〉,其中 M 是 图 灵 机, 是 串 :
1. 构 造 下 列 两 个 机 器 ,
^
和] 2。
=
‘ 对于任何输人 :
a. 接受 。
’
M2 =
‘ 对于任何输入 :
a 在 w 上运行 M 。
第S章 可 归 约 性 151
b. 如果它接受 ,就接受 。
’
2. 输出〈 iW〗 ,M2 〉
。”
/ 和 g 之间的唯一差别在机器 1 上 。在 / 中 ,机器 Mi 总是拒绝 ,而在 g 中 ,它总
练习
等价 。这就是 g 是从 ATM 到 £QTM 的归约的原因 。
^ ^
是接受 。在 / 和 g 中 ,M 接受 w 当且仅当 ] 2 接受所有串 。 在 g 中 ,M 接受 w 当且仅当
■
_
5.2 证 明 EQCFG 是补图灵可识别的 。
5.3 请找岀下面波斯特对应问题 ( PCP) 实例中的一个匹配:
r b_
^
J
' "
ab aba
abab T j aa
j
5.4 如果 A < m B 且 B 是一个正则语言 ,这是否蕴涵着 A 也是一个正则语言?为什么?
A5 . 5 证明 ATM 无法映射归约到 ETM 。 换句话说 ,也就是证明没有可计算函数可以将 ATM 归约为 Etm 。
( 提示 :用 ATM 和 ETM 的一些已知的矛盾和事实来证明 。
)
A5 . 6 证 明<m 是一个传递关系 。
A5 . 7 证 明 :如 果 A 是图灵可识别的 ,且 A<mA ,则 A 是可判定的 。
A 5.8 在定理 5.11 的证明中 ,修改了图灵机 M,使得它永不试图将其读写头移出带子的左端点 。假设
如果不做这样的修改 ,将不得不对 PCP 做怎样的修改来处理这种情形?
问题
5.9 设 |G 是歧义的 CFG }。 证明 AMBJGCFG 是不可判定的 。( 提示 : 使用来自 PCP
AMBJGCFG = {〈 G〉
的归约 。 给定一个 PCP 的实例
p= tl
,
: .
, tk
_
I K bk
用下列规则构造一个 CFG G:
-
S^ T \ B
T -^ ti Ta\ | | tkTak Ui ^ i I -I
*
tkak
B-^ bi Ba\ | ••• | bkBak \ b\ a\ \ ••• \ bkak
其中 a\ J ••• , ak 是新的终结符号 。证明这个归约可行 。
)
5.10 证明当且仅当 A < m ATM 时 ,A 是图灵可识别的 。
5.11 证明当且仅当 A < m 0 * 1 * 时 ,A 是可判定的 。
.
5 12 设 J= 丨对于某个:r 6 ATM 有 w= 0x , 或对于某个: ATM 有 w= l y ) 0 证明 / 和 7 都不是图灵可识别
的。
5.13 给出一个不可判定语言 B 的例子 ,使得 B<mB。
.
5 14 定 义 二 头 有 穷 自 动 机 ( two- headed finite automaton ,2 DFA ) 为确定型有穷自动机 ,它有两个双向
只读头 ,只读头部从输入带的左端点开始 ,可以独立地向左或向右移动 。 2 DFA 的带子是有限的 ,
正好包含输人和两个额外空白带子方格 。这两个空白带子方格一个在左端点 ,一个在右端点 ,它
们被用作定界符 。2 DFA 通过进入一个特殊的接受状态来接受它的输人 。例如 ,2 DFA 可以识别
^
语言 { anbncn|n 0 } o
a. 设 A 2 DFA = 〈 :
{ M,c >|M 是个 2DFA 且接受 :c } 。证明 A 2 DFA 是可判定的 。
{ M 〉| M 是个 2 DFA 且 L( M)= 0 }。证明 £2 DFA 不是可判定的 。
b. 设 £2 DFA =〈
.
5 15 一 个 二 维 有 穷 自 动 机 ( two-dimensional finite automaton ,2DIM DFA ) 的 定 义 如 下 :输 人 是 个 -
mX « 矩形 ( 对任意 m ,TZ>2 )。沿着矩形边界的方格包含符号 # ,而内部方格包含输人字母表 2 中
152 第二部分可计算性理论
的符号 。转移函数 R ,U ,
QX { L, D } 用来指示下一个状态和读写头的新位置
( 左 ,右 ,上 ,下)。当它进人事先设定的接受状态中的某一个时 ,机器就接受 。如果它试图移
出输入矩形或永不停机 ,它就拒绝 。 如果两个这样的机器接受相同的矩形 ,那么它们是等价
的 。考虑检査两个这样的机器是否等价的问题 。将这个问题表达成语言,并证明它是不可判定的。
A *
.
5 16 赖 斯 定 理 设 P 是任何图灵机的语言的非平凡属性 。证明确定某一图灵机的语言是否具有属性
P 这一问题是不可判定的 。 更正式地说 ,设 P 是一个语言 ,它由图灵机的描述组成 ,且 P 满
足下列两个条件 :首先 ,P 是非平凡的 它包含某些图灵机的描述 ,但不是所有的 ;其次 ,
P 是图灵机的语言的属性 无论何时 UMDsUAA ),当且仅当〈 M2 〉GP 时 ,有 〈 MP 6
P,此 处 的 和 从2 是 任 意 图 灵 机 。证 明 P 是一个不可判定语言 。
5.17 证 明 在 问 题 5. 16 中的两个条件对于证明 P 的不可判定性是不可缺少的 。
5.18 使 用 问 题 5. 16 中的赖斯定理 ,证明下列语言是不可判定的 :
:
Aa. IiVP7iVrr£ TM = 〈
{ iVf〉| iVf 是一个图灵机 ,且 JL ( Af ) 是一个无限语言 }。
b.〈{ M> | M 是一个图灵机 , 且 10116 L ( M)}。
c. ALLTM = { < M> | M 是一个图灵机 ,
且 L ( M ) = 2 * }。
5.19 对 于 任 意 自 然 数 x,设
3x + l x 为奇数
x/2 r 为偶数
_
•
^
ECFG ={ < G〉| G 是一个 CFG,且 L( G ) 是前缀无关的 }。
5.21 考虑这样的问题 :确定 PDA 是否接受某些形式为 { |加 6 { 0 ,
1 广 } 的串 ,用计算历史的方
法证明该问题是不可判定的 。
5.22 SX ={〈 M,w >|M 是一个单带图灵机 ,且 M 从不修改带子上包含输入 u;的那一部分 }。请问 X
是可判定的吗? 证明你的结论 。
5.23 对 CFG G 中的变元 A ,如果 A 出 现 在 某 字 符 串 的 所 有 派 生 中 ,则 称 A 是必要的 (neces -
:: ^ =〈 { G,
sary)。设 iV£ C£ SSAi A|〉A 是 G 的一个必要变元 }。
CFG
a. 证明 iVECf:
^
SSAi 是图灵可识别的 。
CFG
5.28 考 虑 这 样 的 问 题 :一 个 单 带 图 灵 机 ,检 査 在 计 算 任 意 输 入 串 的 过 程 中 它 是 否 在 非 空 白 符 上 写 下 一
个 空 白 符 。 将 这 个 问 题 形 式 化 为 一 个 语 言 ,并 证 明 它 是 不 可 判 定 的 。
5.2 9 图 灵 机 的 一 个 无 用 状 态 ( useless state) 是 对 任 何 输 入 它 都 不 会 进 入 的 状 态 。考 虑 检 査 一 个 图 灵 机
是 否 有 无 用 状 态 的 问 题 。将 这 个 问 题 形 式 化 为 一 个 语 言 ,并 证 明 它 是 不 可 判 定 的 。
5.3 0 考 虑 这 样 的 问 题 :检 査 图 灵 机 在 输 入 w 上 当 其 读 写 头 处 于 带 子 最 左 方 格 时 ,是 否 曾 经 试 图 将 读 写
头 向 左 移 。将 这 个 问 题 形 式 化 为 一 个 语 言 ,并 证 明 它 是 不 可 判 定 的 。
5.31 考 虑 这 样 的 问 题 :检 査 图 灵 机 在 输 入 上 是 否 曾 经 在 计 算 过 程 的 某 个 地 方 试 图 将 读 写 头 向 左 移。
^
■
5.32 设 厂= { 0 ,
1
|
_
将 这 个 问 题 形 式 化 为 一 个 语 言 ,并 证 明 它 是 可 判 定 的 。
,
|} 是 此 问 题 中 所 有 图 灵 机 的 带 子 字 母 表 。下 面 是 勤 劳 函 数 ( busy beaver function)
的 定 义 :对 于 々 的 每 个 取 值 ,考 虑 所 有 有 々 个 状 态 的 图 灵 机 ,当 以 空 白 带 为 开 始 时 该
图 灵 机 停 机 。设 是 这 些 图 灵 机 的 带 子 上 所 留 下 的 1 的 最 大 个 数 ,证 明 是 不 可 计 算
函数。
5.3 3 证 明 波 斯 特 对 应 问 题 P ( P) 在 一 元 字 母 表 上 (即 在 字 母 表 上) 是 可 判 定 的 。
.
5 34 证 明 波 斯 特 对 应 问 题 P ( P ) 在 二 元 字 母 表 上 ( 即 在 字 母 表 2= { 0 ,
1 } 上) 是 不 可 判 定 的 。
5.3 5 对 于 简 易 波 斯 特 对 应 问 题 (silly Post Correspondence Problem ,SPCP),在 每 个 对 中 ,顶 部 的 串 与
其 底 部 的 串 长 度 相 同 ,证 明 SPCP 是 可 判 定 的 。
5.36 证明存在 < 1广 的 子 集 是 不 可 判 定 的。
习题选解
5.5 为 了 得 到 矛 盾 ,我 们 假 定 通 过 归 约 / 有 A T M <m E T M 。根 据 映 射 可 归 约 的 定 义 ,用 同 样 的 归 约 函
^
4却 不 是 图 灵 可
■
数 /可 得 出 然 而 是 图 灵 可 识 别 的 ( 参 见 练 习 4 . 5 的 解 答 ),
识 别 的 ,这 与 定 理 5.2 2 矛 盾 。
5.6 假 定 A<m B,B<m C ,那 么 有 可 计 算 函 数 / 和 g 使 得 x G A㈡ ㈡g( :y )G C。考 虑
复 合 函 数 M:
r )= g( /( x )),构 造 一 个 图 灵 机 按 以 下 方 式 计 算 /i: 首 先 ,用 一 个 图 灵 机 模 拟 /,输 人
为 ,输 出 为 :y ( 由 于 已 经 假 设 / 是 可 计 算 的 ,所 以 这 样 的 图 灵 机 是 存 在 的 );然 后 ,用 一 个 图 灵
X
通 过 归 约 函 数 /i 有 A<m C。
5.7 假 定 A<m S,那 么 通 过 同 样 的 映 射 归 约 有 A<m A。因 为 A 是 图 灵 可 识 别 的 ,所 以 根 据 定 理 5 . 2 2
可 推 出 A 也 是 图 灵 可 识 别 的 ,再 由 定 理 4.1 6 可 以 推 出 A 是 可 判 定 的 。
5.8 需 要 处 理 这 样 的 情 况 :读 写 头 已 经 到 达 带 子 的 最 左 端 格 子 上 ,但 仍 然 试 图 向 左 移 动 。为 此 对 于 每
个 g ,r Q 和 a ,b e r , 可 增 加 如 下 的 骨 牌 :
~
[ ^ qa
此 处 (K g ,
a )=( r,
6,L )。 此 外 ,若 读 写 头 在 第 一 步 试 图 向 左 移 动 ,则 将 第 一 个 骨 牌 替 换 为
#
- # # <?0
5.16 用 反 证 法 ,设 P 是 满 足 属 性 的 可 判 定 语 言 ,并 设 就 是 一 个 判 定 P 的 图 灵 机 。现 在 证 明 如 何 通
过 构 造 图 灵 机 S , 用 尺P 来 判 定 AT M 。首 先 设 是 一 个 总 是 拒 绝 的 图 灵 机 ,即 L( T0 )= 0。不 失
,
一 般 性 ,可 以 假 定 < T 0 ) 乐 P 因 为 若〈了0 〉 6 P , 那 么 就 可 以 用 P 替 代 P 来 进 行 了。由 于 P 是
非 平 凡 的 ,所 以 存 在 一 个 图 灵 机 丁 使 得〈 丁> 6 P。下 面 利 用 能 够 区 别 和 了 的 能 力 设 计 一
个可以判定 A T M 的 图 灵 机 S:
S=“对 于 输 人
1. 用 M 和 i t;构 造 下 面 的 图 灵 机
=‘ 对 于 输 入 :
T:
154 第二部分可计算性理论
如果接受 ,则进人第 2 阶段 。
b. 在 :
r 上模拟 7\ 如果接受 ,那么接受 。’
2. 用图灵机尺P 确定是否有〈MW 〉6 P。如果返回是 ,那么接受 ;如果返回否 ,那么拒绝。
”
如果 M 接受 w ,那么图灵机I可以模拟了。 如果 M 接受 w 还接受 0 ,那么 L( M W) 等于
L( T)。因此 ,当且仅当 M 接受加时
5.18 a. iiVRrivrrf : 是一个关于图灵机描述的语言 ,它满足赖斯定理的两个条件 :首先 ,由于某些图
TM
5. 26
^^
设 3 = {〈] ,
加〉|] 是一个双带图灵机 ,当 M 运行在《
•;上时 ,它在其第二个带子上写一个非空白
符 } 。 证明 ATM 可归约到 B。 为了得到矛盾 ,设图灵机尺可判定 B 。 构造图灵机 S,它用尺来判定
ATM 0
S = “ 对于输入
1. 用 M 构造下面的双带图灵机了。
‘ 对于输人 X :
.
a 在:r 上用第一个带子模拟 M。
_
b. 如果模拟表明 M 接受 ,则在第二个带子上写一个非空白符 。
’
2 在 上 运 行 尺,确 定 在 输 人 w 上 :T 是否在第二个带子上写了一个非空白符。
3 . 如果尺接受 ,则 M 接受 W , 因此接受 ,否则拒绝 。
”
5. 2 7 SC = 〈
{ M〉 是双带图灵机 ,
| M 当它运行在某些输人上时 , 它在其第二个带子上写一个非空白符 }。
证明 ATM 可归约到 C。 为了得到矛盾 ,设图灵机尺可判定 C 。 构造图灵机 S , 它用尺来判定 Atm 。
S =“对于输人
1. 用 M 和 m 构造下面的双带图灵机 7\
& =‘ 对于任何输入 :
.
a 在 w 上用第一个带子模拟 iVT。
b. 如果模拟表明 M 接受 ,则在第二个带子上写一个非空白符 。
’
2 在 D 上运行尺,确定是否在第二个带子上写了一个非空白符 。
3 . 如果尺接受 ,则 M 接受 W , 因此接受 ;否则拒绝 。
”
I 第6章
Introduction to the Theory of Computation , 3 e
可计算性理论的高级专题
6. 1 递归定理
递归定理 ( recursion theorem ) 是一个数学结论 ,在可计算性理论的高级研究中起着
重要的作用。它与数理逻辑 、自再生系统理论以及计算机病毒都有联系 。
为介绍递归定理 ,考察与生命科学相关的一个悖论 ,此悖论是关于制造这样一个机
器 ,它要构造它自己的复制品 。 这个悖论可以概述如下 :
1. 生物都是机器 。
2. 生物都能自再生 。
3. 机器不能自再生 。
第一句话是现代生物学的一个宗旨 ,人们认为生物体是以机械方式运作的 。第二句话
明显成立 ,自再生能力是每个生物物种的本质特征 。对第三句话作如下讨论 。 考虑构造其
他机器的一个机器 ,比如生产小汽车的自动生产线 。原材料从一端进人 ,加工机器人根据
指令运行 ,完整的汽车从另一端岀来 。
可以断言 ,在如下意义下 ,生产线肯定要比它制造的汽车复杂 :设计生产线要比设计
汽车更困难 。这个结论必然是真的 ,因为生产线的设计中除了含有加工机器人的设计之
外 ,还含有汽车的设计。同样的原因适用于构造机器 B 的机器 A : A 肯定要比 B 复杂。但
一个机器不会比它自己更复杂 。因此没有机器能够制造它自己 ,故自再生是不可能的 。
怎么才能解决这个悖论呢? 答案很简单 :第三句是不正确的 。 制造能生产自己的机器
是可能的 ,递归定理就是说明怎么做到这一点 。
6 . 1 .1 自引用
本节从制造一个图灵机开始 ,此图灵机忽略输入 ,且打印岀它自己的描述 。 我们称这
个机器为 SELF。 为描述 SELF , 需要下面的引理 。
ctnaaih 存 在 可 计 算 函 数 ,对 任 意 串 zv 9 q( zv ) 是 图 灵 机 的 描 述 ,
Pu;打印出 1JU , 然 后 停 机 。
证明一旦懂得这个引理的叙述 ,证明就容易了。显然 ,可以任取一个字符串 W ,然
后从它构造一个图灵机 ,使得此图灵机将 W 内装在一个表中。这样 ,当此图灵机开始运行
后 ,它只要简单输岀 W 即可 。下列图灵机 Q 计算
“对于输入串 XJU :
1. 构造下列图灵机 Pw
=‘ 对于任意输入 :
156 第二部分可计算性理论
a. 抹去输入 。
b. 在带上写下 zu 0
,
c. 停机。
2. 输出 ( Pw )099
图灵机 SELF 有两个部分 ,分别叫作 A 和 B 。将 A 和 B 想象成两个分离的过程 ,它
^
们一起组成 SELF。我们希望 3 1 打印出 〈SfXF〉 。
=〈 AB〉
A 部分首先运行 ,再根据完成情况将控制传给 B。A 的任务是打印出 JB 的描述 。反过
来 ,B 的任务是打印出 A 的描述 ,结果就是希望的 SELF 的描述 。 这两个任务相似 ,但
它们的实现却不同 。先来说明怎么构造 A 部分。
使 用 机 器 来 定 义 A ,其中 P〈s> 用函数 g 在 〈 B〉处的值 g(〈 B > ) 描述 ,这样 ,A
部分是一个打印出〈 B〉的图灵机 。A 的描述依赖于是否已经有了 B 的描述 ,所以在构造
出 B 之前 ,无法完成 A 的描述 。
对于 B 部分 ,你也许十分想用 g(〈 A 〉 ) 来定义 ,但这不可行 。 这样做将是用 A 来定
义 B ,而定义 A 又要根据 B 。 此 即 所 谓 循 环 定 义 ( circular definition ),是违背逻辑法则
的 。 用另一种方法来定义 B ,使之能打印 A: B 从 A 产 生 的 输 岀 来 计 算 A 。
定义 〈A 〉是 g(〈 B〉 )。下面是棘手部分 : 如果 B 能得到 〈 B > ,它就能应用 g 来得到
〈A〉 。但 B 怎么做才能得到〈 B〉呢? 当 A 结束时 ,它被留在带子上 。所以 B 只要看着带
子就能得到 ( B ) 在 计 算 g(
0 〈 A 〉之后 ,B 将之加到带子的前面 ,然后将 A 和 B 组
〈 B > )=
合成一个机器并在带子上写下它的描述〈 AB > =〈 Sf LF > 。总之 , :
A = P ( B) 且
B =“对于输人 ( M ),其中 M 是一个图灵机的一部分 :
1. 计算 g( )。
〈 M〉
2. 将其结果与 〈 M〉结合来组成一个完整的图灵机描述 。
3. 打印这个描述 ,然后停机 。
”
-
至此 ,完成了 SELF 的 构 造 。 图 6 1 为 SELF
的示意图 。
的控制器
如果现在运行 SELF ,能观察到如下动作 :
1. 首先 A 运行 ,它在带子上打印 ( B ); 图 6- 1 SELF 的示意图 ,一个打印
2.B 开始运行,它查看带子,找到它的输入〈B〉
; 它自己的描述的图灵机
计 算 函 数 r:2 *
—
( 递 归 定 理) 设 了 是 计 算 函 数
2 的 一 个 图 灵 机 R ,使 得 对 每 一 个 w,有 :
*
2* X 2*
r ( zv ) = t ( ( R ) zv )
初看之下 ,此定理的叙述技术性很强 ,但实际上 ,它代表的事情很简单 。为了制造一
9
—
2* 的 一 个 图 灵 机。 则 存 在
6. 1 . 2 递归定理的术语
递归定理指出图灵机可以输岀自己的描述 ,然后还能用它继续进行计算 。初一看 ,这
个能力只是对一些无意义的任务有用 ,如制造一个打印它自己的备份的机器 。 实际上 ,下
面会介绍递归定理是解决某些与算法理论有关的问题的有力工具 。
在设计图灵机算法时 ,可用如下方式使用递归定理 。如果你正在设计一个图灵机 M ,
则可以在 M 的算法的非形式描述中包含如下短语 :“得到自己的描述〈 M > ”。一旦得到自
己的描述 ,M 就能像使用其他已计算出来的值一样使用这个描述 。 例如 ,JVT 可以简单打
印出 〈 M〉,就像前面在图灵机 SELF 遇到的一样 ;或者计算 〈 M > 中的状态数 ;或模拟
< M ) 为了说明这个方法 ,用递归定理来描述机器 SELF:
C
S£XF=“对于任意输入 :
1. 利用递归定理得到它自己的描述 < S E L F ) 0
,
2. 打印 ( S E L F ) 。,
递归定理展示了怎样实现 “获得自己的描述” 的构造 。为了产生机器 SELF,首先写
158 第二部分可计算性理论
下以下机器了:
了=“对于输入〈M,
w〉:
1. 打印〈 M〉并停机 。
”
图灵机了得到图灵机 M 和它输入的串 w 的描述 ,它打印了 M 的描述 〈 M〉
。 然后递
归定理展示怎样获得在输入 w 上的图灵机 R ,像 了 在 输 入 上 那 样 操 作。 因 此 i?
打印出尺的描述 ,恰好是机器 SELF 所需要得到的 。
6 . 1 .3 应 用
计算机病毒 (computer virus ) 是一个计算机程序 ,它被设计成在计算机中传播它自
己 。顾名思义 ,它与生物病毒有许多共同的地方 。计算机病毒作为一段代码而单独存在
时 ,是不活动的 ,但是 ,当把它适当地放人宿主计算机从而 “感染 ” 它时 ,它就变得很活
跃 ,传染它自己的副本给其他易受感染的机器 。很多媒介都能传播病毒 ,包括互联网络和
可存取磁盘 。 为了实现自复制的基本任务 ,一个病毒可能就包含递归定理的证明中所描述
的结构 。
现在讨论用递归定理来证明的三个定理 ,还有一个应用出现在 6.2 节的定理 6.15 中 。
首先回到 ATM 不可判定性的证明 。以前在定理 4.9 中曾用康托对角化法证明过它 ,递
归定理提供了一个新的 、 更简单的证明方法 。
ATM 是 不 可 判 定 的 。
证明为了得到矛盾 ,假设图灵机 H 可判定 ATM 。构造下列图灵机 B。
•8 =“对于输入
1. 由递归定理得到自己的一个描述 ( B ) 0
2. 在输入 ( B , zv ) 上运行 H。
3. 得到与 H 相反的结果 ,8卩 :如果 H 拒绝 ,则接受 ;如果 H 接受 ,则拒绝 。
”
对输入 w ,B 的结果与 H 相反 ,所以 H 不可能判定 ATM 。 证毕 。
下面是递归定理的另一个应用。
如 果 M 是 一 个 图 灵 机 ,则 M 的 描 述 〈 M> 的 长 度 是 描 述 M 的 串 中 所 含 符 号
的 个 数 。 如果没有与 M 等 价 的 图 灵 机 有 更 短 的 描 述 ,则 称 M 是最小的 (minimal )。令
iWiVTM = {〈M|
> M 是一个最小图灵机}
M I N T M 不是图灵可识别的 。
证明假设图灵机 :枚举 MZN 然后试图来得到矛盾 。构造下列图灵机 C。
C = “ 对于输入 u;
:
.
1 由递归定理得到它自己的一个描述〈C〉 。
. :
2 运行枚举器 ,直到一个比 C 的描述更长的机器 D 出现 。
3. 在输入功上模拟 D 。
”
因为 MJiVTM 是无限的 ,故 :的序列中必定含有图灵机 ,其描述比 C 的描述更长 。 因
此 ,C 的第二步最终将在某个图灵机 D 上终止 ,且 D 比 C 更长 。然后 C 就模拟 D ,且与
之等价 ,因为 C 比 D 短且与之等价 ,故 D 不可能是最小的 ,但 D 又在 :产生的序列中出
现 ,这样就得到了矛盾 。
递归定理的最后一个应用是一类不动点定理 。 函数的一个不动点 (fixed point ) 是
襄夕章可计算性理论的高级专题 159
6.2 逻辑理论的可判定性
数理逻辑是数学的一个分支 ,它研究数学本身 。它关心如下的问题 :什么是定理? 什
么是证明? 什么是真? 算法能判定哪些命题是真的呢?所有真命题都是可证的吗? 在这个
丰富而迷人的领域中 ,我们将接触某些专题 。
我们关心的焦点是这样的问题 : 能否确定一个数学命题是真还是假以及这种问题的可
判定性 。答案依赖于命题勾勒的数学域 。我们将检查两个域 :对于其中一个 ,能给出算法
来判定真假 ;对于另一个 ,这个问题是不可判定的 。
首先需要建立一个精确的语言来将这些问题形式化 。 我们的要求是能够考虑如下数学
命题:
: : 一
1. V g 彐 V r,
2. W a ,b,
c,
* y[户
n [(a,
:
6,
c〉 0 八 n〉 2 ) a”
—^
八(x ,y > l xjy # /? ) ]
^
3. Vg 彐户 V r ,y L p> q A ( x ,y>l - ( x y 9^ p f\ x y
p+2 \ ))
*
^
命题 1 称 ,有无限多个素数存在 ,在大约 2300 年以前的欧几里得时代 ,就已知道这
个命题是真的 。命题 2 称 为 费 马 大 定 理 ( Fermat ’ s last theorem ),这个命题在 1994 年由
安德鲁 威尔士 ( Andrew Wiles ) 证明为真 。最后 ,命题 3 称 ,有无限多个素数对 存
在 ,这 被 称 为 孪 生 素 数 猜 想 ( twin prime conjecture )。它到现在还未被解决 。
为了研究能否将确定真命题的过程自动化 ,首先把命题都仅仅看作串 ,再定义一个语
言 ,这个语言由所有的真命题组成 ;然后问 :这个语言是否是可判定的 。
为了将之进一步精确化 ,现在描述这个语言的字母表 :
{ 八 ,V ,
’,,
( ),V,
工,3,
J?i 9 •••
*Rk }
符号 A , V ,~I 称为布尔运算 ( Boolean operation ); “ (” 和 “)” 是括号 ( parenthesis );
符号 V 和 3 是 量 词 ( quantifier );符 号 用 来 代 表 变 元 ( variable ); 符号仏 ,
…,沁称为
© 素 数 对 是 指 两 个 差 为 2 的 素 数。
@ 如果在同一个公式中写多个变元 ,使用符号 y * 2:或 :
n, 等。为了保持字母表的有限性 ,不罗列所有
无限多个可能 。取而代之 ,只罗列变量符号 1,使用:r 串来指示其他变元 ,如 : r:c 代表 x2 , 代表 J:
3 ,等等。
160 第二部分可计算性理论
关 系 ( relation ) 0
公 式 ( formula ) 是 这 个 字 母 表 上 的 良 构 串 。 为 完 整 起 见 ,这 里 将 概 略 地 叙 述 良 构 公
式 ㊀(well formed formula ) 的 技 术 上 的 定 义 。你 可 以 忽 略 这 部 分 内 容 从 下 一 段 继 续 ,不 影
-
响 学 习 。形 如 尺 / ( xi ,
…,x) ) 的 串 是 原 子 公 式 (atomic formula ) 。值 )是 关 系 符 号 見 的 元
数 (arity )。一 个 良 构 公 式 中 所 有 出 现 的 相 同 关 系 符 号 必 须 有 相 同 的 元 数 。 据 此 ,一 个 串
必如满足以下条件 ,则 是 一 个 公 式 :
1. 是 一 个 原 子 公 式 ;
2. 具 有 形 式 #1 A 和 或 # 1 V #2 或 #1 ,其 中 和 #2 是 更 小 的 公 式 ;
3. 具 有 形 式 3 A[和 ] 或 V x,[0 ],其中和是更小的公式 。
数 学 命 题 中 的 量 词 可 能 出 现 在 任 何 地 方 。它 的 辖 域 ( scope ) 是 公 式 的 如 下 部 分 :紧
跟 在 量 词 化 变 元 后 的 一 对 括 号 中 的 部 分 。现 在 假 设 所 有 公 式 都 是 前 束 范 式 ( prenex normal
form ) , 即 所 有 量 词 都 岀 现 在 公 式 的 前 面。没 有 被 量 词 的 辖 域 所 约 束 的 变 元 称 为 自 由 变 元
( free variable ) 没 有 自 由 变 元 的 公 式 称 为 句 子 ( sentence ) 或 命 题 ( statement )。
0
dQEl 在 F 列 公 式 中 ,只 有 最 后 一 个 是 句 子 :
1.R\ ( x\ ) A 尺2( 工1 ,
工2 ,
工3 )
2. V X \[i? i { x\ ) A i? 2( 工1 ,
工2 工3 ) ]
建 立 了 公 式 的 语 法 之 后 ,现 在 来 讨 论 它 们 的 含 义 。 布 尔 运 算 和 量 词 与 通 常 的 含 义 相
同 。为 了 确 定 变 元 和 关 系 符 号 的 含 义 ,需 要 说 明 两 个 方 面 :一 个 是 论 域 ( universe ) , 覆 盖
变 元 可 能 的 取 值 ;另 一 个 是 将 关 系 符 号 指 定 为 确 定 的 关 系 。正 如 0.2 节 所 描 述 的 ,关 系 是
从 论 域 上 的 A 元 组 到 { TRUE , FALSE } 的 函 数 。关 系 符 号 的 元 数 必 须 和 指 派 给 它 的 关 系
和 元 数 一 致。
论 域 连 同 关 系 到 关 系 符 号 的 指 派 一 起 称 为 模 型@ ( model )。形 式 上 ,我 们 说 一 个 模 型
M 是 一 个 元 组 0/,
巧,…,
R ),其 中 U 是 论 域 ,h 到 匕 是 指 派 给 符 号 M 到 私 的 关 系 。
有 时 称 下 列 公 式 的 集 合 为 模 型 语 言 :这 些 公 式 只 使 用 此 模 型 指 派 的 关 系 符 号 ,且 对 每 个 关
系 符 号 ,使 用 正 确 的 元 数 。如 果 0 是 某 个 模 型 语 言 中 的 句 子 ,则 # 在 这 个 模 型 中 不 为 真 就
为 假 。如 果 0 在模型 A1 中 为 真 ,则 说 M 是 0 的 一 个 模 型 。
如 果 你 感 到 这 些 概 念 难 以 理 解 ,请 将 注 意 力 集 中 在 叙 述 它 们 的 目 的 上 ,即 我 们 想 建 立
一 个 陈 述 数 学 命 题 的 精 确 语 言 ,使 得 我 们 能 问 :某 个 算 法 能 否 确 定 哪 些 是 真 命 题 、 哪 些 是
假 命 题? 下 面 的 例 子 应 能 有 助 于 理 解 。
< ®
1 设 0 是 句 子 V i V y DRI ( ^ ,
30 Vi? i ( 3 )],模 型 是 如 下 的 模
^
^ ^
型 : 它的论域是自然数集 ,它 将 “小 于 或 等 于” 关 系 分 配 给 符 号 1 。 显 然 # 在人 中为
真 ,因为对任意两个自然数 a 和 6 , 和 6< 必 有 一 个 成 立 。但如果 M i 将 “小于” 关
^
^
系 (而不是 “小 于 或 等 于” 关 系) 指 派 给 i ,则 # 将 不 真 ,因 为 当 x 和 y 相 等 时 ,它 不
再成立 。
如 果 事 先 知 道 什 么 关 系 将 指 派 给 尺 ,就 可 以 使 用 这 个 关 系 的 惯 用 记 号 来 代 替 尺 ,且
按 习 惯 ,如 果 习 惯 上 有 ,就 使 用 中 缀 记 法 而 不 是 前 缀 记 法 。 这 样 ,对 于 模 型 A ,可 以 将
© 良构公式在有些书中被称为合式公式 。
模型又被称为解释或结构。
—译者注
^
第6 章 可 计 算 性 理 论 的 高 级 专 题 161
參写成 V 工 V :
y V:
y <x] 0
醒
dQD 设 M 2 是 如 下 的 模 型 :它 的 论 域 是 实 数 集 R ,且 将 关 系 PLUS 指 派 给 Ri ,
其 中 :只 要 当 时 PLUSU ,6,c )= TRUE ,则 M2 是 必 = * [R ] ( u ,
} )] 的
一 个 模 型 。 但 如 果 用 N 代 替 R 作 为 的 论 域 ,则 此 句 子 为 假 。
如 同 前 一 个 例 子 ,因 为 事 先 已 经 知 道 加 法 关 系 将 指 派 给 故 可 将 0 写 为 V 3:
r
y 3 x [ _Ri ( x ,
[_ x+ x= y\ 以 取 代 V : :
^
~
:c,y )]。 ■
如 例 6.9 说 明 的 那 样 ,可 以 用 关 系 来 表 示 函 数 ,如 用 关 系 代 替 加 法 函 数 。类 似 地 ,还
可 以 用 关 系 来 表 示 常 量 ,像 0 和 1。
现 在 给 出 最 后 一 个 定 义 ,为 下 一 节 做 准 备 。如 果 是 一 个 模 型 ,这 个 模 型 语 言 中 所 有
真 句 子 的 集 合 称 为 A1的 理 论 系 统 ,简 称 为 理 论 ,记 为 Th( M )。
6.2. 1 — 个可判定的理论
数 论 是 最 古 老 、 最 困 难 的 数 学 分 支 之 一。许 多 关 于 自 然 数 及 其 加 法 和 乘 法 运 算 的 命 题
看 起 来 很 简 单 ,但 几 个 世 纪 以 来 ,数 学 家 对 此 都 束 手 无 策 ,如 前 面 提 到 的 孪 生 素 数 猜 想 。
数 理 逻 辑 最 值 得 庆 贺 的 发 展 之 一 是 :在 哥 德 尔 工 作 的 基 础 上 , 丘 奇 证 明 了 存 在 这 样
的 数 论 命 题 ,使 得 没 有 算 法 能 够 判 定 它 的 真 假 。 形 式 上 ,以 ( N ,+ ,X ) 标 记 如 下 的 模
型 :它 的 论 域 是 自 然 数 集 e ,具 有 通 常 的 + 和 x 关 系。丘 奇 证 明 了 这 个 模 型 的 理 论
+ ,X ) 是 不 可 判 定 的 。
Th( N ,
在 研 究 这 个 不 可 判 定 理 论 之 前 ,先 来 介 绍 一 个 可 判 定 理 论 。设 ( N , ) 是 一 个 同 样 的 +
模 型 ,只 是 没 有 X 关 系 。它 的 理 论 是 Th( N , ),例 如 公 式 V x V y + D r +:
r = 30 是真的,
+
因 而 是 T h( N , ) 的 一 个 元 素 。但 公 式 V y 3 I[I + T ] 是 假 的 ,因 而 不 是 T h( N ,+ )
= 3;
的一个元素。
+) 是可判定的。
T h( N ,
证 明 思 路 此 证 明 是 第 1 章 介 绍 的 有 穷 自 动 机 理 论 的 一 个 有 意 思 的 、 非 平 凡 的 应 用。
我 们 要 用 到 问 题 1.37 中 关 于 有 穷 自 动 机 的 如 下 事 实 : 如 果 输 入 符 合 某 种 特 定 形 式 ,则 有
穷 自 动 机 能 够 做 加 法 。输 入 并 行 地 描 述 三 个 数 ,方 法 是 :用 一 个 符 号 来 表 示 每 个 数 中 的 一
位 ,此 符 号 取 自 一 个 含 8 个 符 号 的 字 母 表 。下 面 将 用 的 方 法 是 这 个 方 法 的 一 个 推 广 ,用 含
-
…
21 个 符 号 的 字 母 表 中 的 符 号 来 表 示 数 的 f 元 组 。
下 面 给 出 一 个 算 法 ,对 输 入 为 ( N ,+ ) 的 语 言 中 的 句 子 检查其在模型中是否为
真 。设
( j> = Q\ X \ Q2 X 2 …Q#心]
其 中 :Q!,
…,Q/ 表 示 V 或 3 ,4 是 一 个 无 量 词 的 公 式 ,且 含 有 变 元 Tl , …
• yXl 。对 于 从 o到
/ 的 每 一 个 值 ,令 公 式 为
j> i = Qi +1 0CiJr\ Qi+2 OCi +2 •••QlXl[0]
这 样 ,<f>0 = 且 #
公式 & 有 〗 个 自 由 变 元 ,对 于 G N , 在 #,中 用 a 1 ,
… 替换变元 , ,
:?:
^
參 參 參
9 /
得到的句子记为勿(ai ,
…,a ,)。
为了方便 ,本章将 1,
N 的通常定义改变成 { 0 , 2 ,… }。
162 第二部分可计算性理论
,它 识 别 如 下 串 的 集 合
“
对于从 0 到 Z 的每一个值
算法构造了一个有穷自动机 A: :
这些串表示使心为真的数的 。算 法 先 直 接 构 造 Az ,构 造 方 法 是 解 问 题 1 . 3 7
/ 元组 所用方
法 的 推 广 。然 后 ,对 从 / 向 下 到 1 的 每 个 〗,它 用 A , 构 造 最 后 ,一 旦 得 到 A ,算 。
法 就 检 查 AQ 是 否 接 受 空 串 。如 果 接 受 ,则 彡 为 真 ,算 法 也 就 接 受 。
;
证 明 对 >0 , 定 义 字 母 表
0 0 0 0
li =
0 0
0 0
则叉包含了所有由 0 和 1 构成的 ‘
Z 元 列 向 量 。2, 上 的 每 个 串 表 示 f 的 二 进 制 整 数 ( 沿 行
。
读)。令 2 ={[ ]},其 中 [] 是 一 个 符 号 。
+
现 在 介 绍 判 定 Th(N, ) 的 算 法 。对 于 输 入 0 ( 其 中 0 为 句 子 ),算 法 如 下 运 行 :写
下 令 ,且 对 从 0 到 Z 的 每 个 如 同 在 证 明 思 路 中 介 绍 的 那 样 定 义 七 。再 对 每 个 这 样 的 / ,
“
由 卜 构 造 有 穷 自 动 机 A;,使 得 只 要 f ( , … , ) 为 真 ,它 就 接 受 叉 上 对 应 于 / 元 组
-
a\ 的 串。
为构造第一个机器
的 构 造 如 下:
^ ^ + ) 的 语 言 中,
Az ,注 意 到 和 = 0 是 原 子 公 式 的 布 尔 组 合 。 Th( N,
原 子 公 式 只 有 单 个 加 法 。对 每 个 这 样 的 单 个 加 法 ,可 以 构 造 一 个 有 穷 自 动 机 来 计 算 这 样 的
单 个 加 法 所 对 应 的 关 系 ,然 后 将 这 些 有 穷 自 动 机 组 合 起 来 ,就 能 给 岀 自 动 机 A;。 这 样 做
要 涉 及 正 则 语 言 类 对 于 交 、并 和 补 的 封 闭 性 ,以 计 算 原 子 公 式 的 布 尔 组 合 。
接 下 来 说 明 怎 么 由 A ,+ 1 来 构 造 A ,。如 果 = 3:
rl + 1 + 1 ,则 构 造 A: 使 得 它 的 运 行
几 乎 与 Al+ 1
接 收。
—
^
样 ,区 别 在 于 A , 非 确 定 地 猜 的 值 ,而 不 是 将 它 作 为 输 入 的 一 部 分 而
更 精 确 地 说 ,对 于 Al+ 1 的 每 个 状 态 ,A: 包 含 一 个 与 之 对 应 的 状 态 ;且 九 还 包 含 一 个
新 的 起 始 状 态 。每 当 八,读 下 列 符 号 时 ,
bi
bi-\
bt
这 里 每 个 是 数 a/ 的 某 一 位 ,它 非 确 定 地 猜 测 z 6 { 0 ,
l },且 在 下 列 输 入 符 号 上
模拟 Am 。
「 心1 1
bi-\
bi
最 初 ,A , 非确定地猜测 A +1 的 引 导 位 ,这 些 引 导 位 对 应 于 到 a, 中 隐 藏 的 引 导 0 。 猜 测
^
的 方 法 是 :从 它 新 的 起 始 状 态 到 所 有 状 态 非 确 定 性 地 使 用 r 转 移 进 行 分 叉 ,这 些 状 态 是
八1+1 以 五+1 中 下 列 符 号 的 串 为 输 入 、 从 它 的 开 始 状 态 所 能 到 达 的 所 有 状 态 。
如 果 = V 1+1
6.2. 2
—
^
个不可判定的理论
+
如前所述 ,Th( N , ,
_ -
「0 1
显 然 ,如 果 存 在 a , + i ,使 得 A / +!接受 (
0
L0 J
,
a出),$ |
第6章 可 计 算 性 理 论 的 高 级 专 题
厂01
贝! A, 接 受 ( <2 i ,
參
… ,a )。
, 它等价于 3 A + 1 4+ 1 o 首先构造识别语言 Al+1 的补的有穷
自动机 ,然后应用上述对于 3 量词的构造 ,最后再一次应用补来得到 A ,。
有穷自动机 AQ 接受某个输入 ,当且仅当和为真 。所以算法的最后步骤是检查
否接受 e 。如果是 ,则 0 为真 ,且算法接受它 ;否则 ,就拒绝 。
X ) 是一个不可判定的理论 ,不存在算法能够判定数学命题的
+ ,X ) 的语言上也是如此 。这个定理在哲学上具有极大的重要性 ,
真假 ,即使限制到 ( N ,
因为它说明了数学不能被机械化 。 现在陈述这个定理 ,但只给出一个简短的证明概要 。
,
163
Ao 是
*
+ ,X ) 是 不 可 判 定 的 。
Th( N ,
虽然这个定理的证明包含很多细节 ,但在概念上并不困难 。它使用了第 4 章中介绍的
不可判定性证明的模式 ,即通过将 + ,X )
ATM 归约到 Th( N , +
来 证 明 Th( N , ,X ) 的不
可判定性 ,也使用了计算历史的方法 。归约的存在性依赖于下列引理 。
设 + ,X ) 的语
M 是一个图灵机 ,w 是 一 个 串 ,从 M 和 i t;能构造 ( N,
言 中 的 公 式 彡M, , 使得它只包含单个自由变元 X ,且句子 3 为真当且仅当 M 接
受w 0
证 明 思 路 公 式 “说” x ( 经 过 适 当 编 码 ) 是 妨 在 加 上 的 一 个 接 受 计 算 历 史 。
当然 ,:
T 实际上只是一个相当大的整数 ,但它表示计算历史的方式可以使用 + 和 X 运算来
检查 。
多 的 实 际 构 造 太 复 杂 ,难 于 在 这 里 介 绍 。它 在 带 有 + 和 X 运算的计算历史中抽取个
体符号来检查 M 在 W 上的起始格局是否正确 ,检查每个格局是否是它前一个格局的合法
转移 ,最后检查最后的格局是否被接受 。
定理 6 . 1 1 的 证 明 下 面 给 出 一 个 从 ATM 到 Th( N ,+ ,X ) 的映射归约。这个归约应用
引理 6.12 从输入 ( M ,
w ) 构 造 公 式 必M,W ,然后它输出句子 3 T # M o *
^
|
7r 〉;r是 0 的一个证明}
是可判定的 。
2. 证明系统是可靠的 ,即一个命题如果是可证的 (即有一个证明),则它为真 。
164 第二部分可计算性理论
如果一个可证性系统满足这两个条件 ,则下面三个定理成立 。
+ ,X ) 中可证命题的集合是图灵可识别的 。
Th( N ,
证 明 如 果 # 是 可 证 的 ,则下列算法 P 接受其输入 0 。算法 P 使用在可证性性质 1 中
所说的证明检查器 ,检查每个可能成为彡的证明的候选串。如果发现一个候选串正是一个
证明 ,则 接 受 它 。 *
现在使用前面的定理来证明不完全性定理。
+ ,X ) 中存在不可证的真命题 。
Oiggll Th( N ,
证 明 用 反 证 法 。假设所有真命题都是可证的 ,利用这个假设来构造判定命题是否为
真的算法 D,与定理 6.11 矛 盾 。
对于输人 h 算法 D 如下运行 :在 输 人 0 和 上 并 行 地 运 行 定 理 6.13 的证明中给岀
的算法 P。这两个命题总有一个为真 ,根据假设 ,总有一个是可证的 。因 而 P 在其中一个
输 人 上 停 机 。根 据 可 证 性 性 质 2 , 如 果 # 是 可 证 的 ,则 0 为 真 ;如 果 是 可 证 的 ,则必
为假 。所以算法 D 能判定
^
的 真 假 性。 ■
_
它为真 ,但却不可证 。定 理 6.14 说明存在这样的句子 ,但 没 有 像 现 在 所 做 的 这 样 ,将 它
实际地描述出来 。
本定理的证明中描述的句子 0unpr vable 是 不 可 证 的 。
()
证 明 思 路 使 用 递 归 定 理 得 到 自 引 用 ,构造一个句子 ,称 “这个句子是不可证的”。
证 明 设 S 是 如 下 运 行 的 图 灵 机。
s =“对于任意的输入 :
1. 由递归定理得到它自己的描述 〈 S> 。
2. 用引理 6.12 构造句子 0= 3 c[A,]。 。
^
3. 在 输 人 0 上运行定理 6.13 给出的算法 P。
4. 如果上一步接受 ,就接受 。 ”
设 Anprovable 是算法 S 的第二步所描述的句子 0。0 为 真 ,当是仅当 S 不接受 0 ( 串 0 是
随意选择的)。
如果 S 能找到心npn vable 的 一 个 证 明 ,S 就 接 受 0 , 这 个 句 子 也 就 因 之 为 假 。一个假句
)
子 是 不 能 被 证 明 的 ,所 以 这 种 情 形 不 可 能 发 生 。 剩 下 的 唯 一 的 可 能 性 是 S 不 能 找 到
0 unprovabie 的 证 明 ,因 而 S 不接受 0。但我们已宣布过 0unprQvable 为真 。
6.3 图灵可归约性
第 5 章 引 人 可 归 约 性 概 念 ,其核心思想是利用一个问题的解来解另一个问题。如果 A
可 归 约 到 J3 , 且可以找到 B 的一个解 ,就能得到 A 的 一 个 解 。随 后 ,又 描 述 了 映 射 可 归 约
性 ( mapping reducibility ),它 是 可 归 约 性 的 一 个 特 殊 形 式 。 但 映 射 可 归 约 性 是 否 已 经 在
最广泛的意义下完全刻画了可归约性的直观概念呢? 没 有 。
:
^
例如 ,考虑两个语言 ATM 和 ,直观上 ,它们能够互相归约 ,因 为 它 们 中 任 一 个 问
^
题的解都可被用来求解另一个问题 ,只要将答案反过来即可 。但是 , 不能映射可归约
到 ATM ,因为 A ,而 却不是 。 现在将介绍一种更广义的可归约性 ,
叫作图灵可归约性 ( Turing reducibility ), 它更深刻地刻画了可归约性的直观概念 。
^
襄 章可计算性理论的高级专题 165
^
7 TM ,其中 M 是一个图灵机 :
=“对于输人〈 〉
1. 构造下面图灵机 iV:
N =‘ 对任意输人 :
:
a. 对 S * 中的所有串并行运行 M。
b. 如果 M 接受它们中的任何一个串 ,则接受 。’
2. 询问谕示以确定 ( N ,0 ) GATM 是否成立 。
3. 如果谕示回答 ‘ 不 ’,则接受 ;如果回答 ‘ 是’ ,则拒绝 。” B
^^
> 1邇 漏 物 语 言 A 图灵可归约 ( Turing reducible ) 到 B,如果 A 相对于 B 是可判
定的 ,记作 A<TB。
例 6.17 证明 £TM 图灵可归约到 ATM 。图灵可归约性满足可归约性的直观概念 ,下面
定理证明之 。
A<TB 且 B 是可判定的 ,则 A 也是可判定的 。
如果
证 明 如 果 B 是可判定的 ,则可以用判定 B 的实际过程来替换 B 的谕示 。这样就用
判定 A 的普通图灵机取代了判定 A 的谕示图灵机 。 ■
6.4 信息的定义
算法和信息是计算机科学中的基本概念 。但丘奇 图灵论题在给出算法的广泛而实用 -
的定义的时候 ,却没有关于信息的同等广泛的定义 。不同于单一而广泛的定义 ,使用的是
多个依据应用的定义 。 在本节中 ,用可计算性理论来给出一个定义信息的方法 。
以一个例子开始 。考虑下列两个二进制数序列的信息量 :
A = 0101010101010101010101010101010101010101
B = 1110010110100011101010000111010011010111
直观上 ,序列 A 包含较少的信息 ,因为它只是将 01 重复了 20 次 。相比之下 ,序列 B
166 第二部分可计算性理论
看起来包含了更多的信息 。
上例表明了将要介绍的信息定义背后的思想 。包含在一个对象中的信息量将被定义为
这个对象的最小表示或描述的大小。对象的描述是指这个对象的精确且无歧义的特征 ,使
得单从这个描述就能重新产生那个对象 。 这样 ,序列 A 包含了很少的信息 ,因为它有一个
很短的描述 ,然而 ,序列 B 看起来包含了更多的信息 ,因为它看起来没有简明的描述 。
在确定对象的信息量的时候 ,为什么只考虑最短的描述呢? 我们总是可以通过在描述
中放置对象的一个副本的方式来描述一个对象 ,比如一个串 。用此方法 ,能以含 B 的一个
副本的一个 40 位长的表来描述前面的串 B。 这种描述永远不会比对象本身短 ,也不会告
诉我们关于信息量的任何东西 。但是 ,一个真的较短的描述蕴涵着包含在对象中的信息可
以被压缩到更小 ,所以信息量也就不可能更大 。因而最短的描述的大小决定了信息量 。
为了将这个直观思想形式化 ,须做一些准备 。 首先 ,将注意力集中于这样的对象 ,它
们是由二进制数构成的串 ,其他对象可以表示为由二进制数构成的串 ,所以这个条件并没
有限制理论的范围 。 第二 ,我们只考虑这样的描述 ,它们是由二进制数构成的串。利用这
些要求 ,可以很容易地对比对象的长度与它描述的长度 。 下节将考虑所允许描述的类型 。
6.4 . 1 极小长度的描述
许多类型的描述语言可以用来定义信息 。选择使用什么样的语言影响着定义的特征 ,
我们的描述语言是基于算法的 。
用算法来描述串的方法之一是 :先构造一个图灵机 ,使得若它以空白带幵始运行 ,就
能打印岀这个串 ;然后将此图灵机本身也表示成一个串。这样 ,表示图灵机的串就是原来
那个串的一个描述 。 这个方法的缺点是 ,图灵机不能用它的转换函数简明地表示信息表 。
表示一个 n 位的串也许就要用到 n 个状态和要有〃行的转换函数表 ,这将导致一个相对我
们的目的来说过长的描述 。因此使用下列更简洁的描述语言 。
用图灵机 M 和它的二进制数的输人加来描述二进制数的串 X ,描述的长度是表示 M
和 w 的 组 合 长 度 。对 于 将 多 个 对 象 编 码 成 一 个 二 进 制 数 串 采 用 常 用 的 记 号 来 记
这个描述 。但这里必须格外注意编码操作 〈 , ,因为产生的结果必须是简明的 。方
〉
w ) 为 ( M )w ,即直接将二进制数串 w 简单连接到 M 的二进制编码的
法是 :定义串 ( M ,
后面 。除了下一段中叙述的微妙之处外 ,M 的二进制编码 〈 M〉可以使用任何标准方法 。
( 在第一遍阅读中 ,不要担心这个微妙之处 。你可以暂且忽略下一段和图 6 3 。
) -
将 w 连接到 〈 M〉的后面来产生 i 的一个描述 ,如果〈 M〉结束和 w 开始的地方不
能从这个描述自身分辨出来的话 ,那么将可能会遇到麻烦 。 如果这样 ,就可能有多个对描
w 进行划分的方法 ,这些方法都会产生语法上正确的图灵机和一个输入 ,从而这
述〈M〉
个描述将是含糊的 ,因此也是无效的 。用来避免这个问题的方法是 :保证在 〈 M〉w 中能
确定 ( M ) 和加的分界位置 。做到这点的一种方法是 :将 〈M〉的每一位写两遍 ,即将 0
写成 00 , 将 1 写成 11 ,再在其后写下 01 来标记分界位置 。 图 6 3 说明了这个思想 ,此图 -
描绘了某个串 x 的描述 ( M ,w ) Q
分界符
〈M,
w〉= 11001111001100…1100 01101011 -- 010
( M)
图 6- 3 串:
T 的描述 〈 iVf , 的格式示例
襄夕章可计算性理论的高级专题 167
既然已定下了描述语言 ,下面就要定义一个测量串的信息量的度量 。
设 是 二 进 制 数 的 串 ,x 的 最 小 描 述 ( minimal description ) ( 记 为
cl( x )) 是 最 短 的 串 〈 M,
w〉,其中 : 图灵机 M 在 输 入 w 上 停 机 时 ,x 在 带 子 上 。 如 果 有
多 个 这 样 的 串 存 在 ,则 在 其 中 选 择 字 典 序 下 的 第 一 个 串 。工 的 描 述 复 杂 性 ( descriptive
complexity ) 己 为 K(:r ),是
K( x ) =
|d ( x )|
换句话说 , K U ) 是:r 的最小描述的长度 。 K U ) 的定义是为了刻画串 x 中的信息量
这个直观概念的 。 接下来 ,建立关于描述复杂性的一些简单结果 。
^^
001 彐 c V 工 [ K(:rX||
工 + c]。
等函数—输出与输入是一样的函数 。:
T 的一个描述是 <M )X 0 令 C 是 〈 M〉 的长度 ,就
可完成证明 。 ■
^
证 明 考 虑 下 列 图 灵 机 M,它要形如 ( N ,
它的一个输人 。
w ) 的输入 ,其中 iV 是一个图灵机 ,加是
下面检查串 :
r和 的连接的描述复杂性与它们的单个复杂性间的关系。定理 6.21
^
可能会使我们相信 ,连接的复杂性最多是单个复杂性的和 (加上一个固定的常量 ),但实
际上组合两个描述的代价是导致了一个更大的上界 ,如下面的定理所述 。
3cV (:r) + K())+ c]。
^
证 明 构 造 图 灵 机 M,它将输入 w 拆成两个单独的描述 。在第二个描述 ( 30 岀现以
前 ,第一个描述 d(:r ) 的所有位都被写两遍且以 01 结束 ,如图 6 3 所示 。在得到两个描 -
述之后 ,它们就开始运行 ,得到串 :
r与 及产生
显然 ,13;的这个描述的长度是:r 的复杂性的两倍加上
固定常量 c 。此和为 ^ ^
的复杂性 ,再加上描述 M 的
描述复杂性有时也称柯尔莫哥洛夫 ( Kolmogorov )
- -
复 杂 性 或 柯 尔 莫 哥 洛 夫 伽 廷 ( Kolmogorov Chaitin) 复 杂 性 。
_
168 第二部分可计算性理论
2 K ( x ) 十 K( y ) + c
这就完成了证明 。 ■
可以用一个更有效的方法来指出两个描述之间的分离之处 ,从而可以稍微改进这个定
理 。这 是 一 个 避 免 双 写 的 数 位 的 方 法 。用 二 进 制 整 数 表 示 J U ) 的 长 度 ,但 它 已 被
双写 ,使得它不同于 d(: r )。 这个描述仍然包含足够的信息来对之进行解码 ,从而得到 : r
和 3 的描述 。现在 ,它的长度最多为
^ 21og 2 ( K ⑴ )+ K(:C ) + K ( 3 ) + C
还可以做一些不大的改进 。但如问题 6.19 所指出的 ,不能达到界 K U )+ K( 30 + C。
6 . 4.2 定义的优化
下面 ,在描述复杂性的初等性质的基础上发挥某些直觉 ,来讨论此定义的一些特点。
在用算法来定义描述复杂性的所有可能的方法中 ,刚才关于 K(:c) 的定义具有一个优化性
质。假如将一般的描述语言 ( description language ) 看作一个可计算函数 / ,并定义
相对于{ 的最小描述为满足 P( s )=:r 的 标 准 字 符 串 顺 序 中 的 第 一 个 串 记 为 A U )。因
此 ,s 是 :
r 最短描述按字典序排列的第一个 。定义
例如 ,将一个程序设计语言 ( 比如 Python ( 编码成二进制数 )) 看作描述语言 ,则
Python( X ) 将是输出 :
T 的最小 Python 程序 ,KPython ( x ) 将是这个极小程序的长度 。
^ 下面的定理说明 ,任何此种类型的描述语言都不会明显地比原先定义的图灵机和输入
语言更简洁 。
讎置纖 对 任 何 描 述 语 言{,存 在 一 个 只 与 p 有 关 的 常 量 C ,使 得
^ ^]
VxCKCxXKpCx) -
6 . 4. 3 不可压缩的串和随机性
定 理 6.21 证明了串的最小描述绝不会比串本身长太多 。 对于某些信息稀疏的串 ,它
们的描述可能要短得多 。 是不是某些串没有更短的描述呢? 换句话说 ,是不是某些串的最
小描述实际上和串本身一样长呢?下面将证明这样的串是存在的 。对于这些串 ,简单地将
它们写出来就是最简洁的描述 。
设 x 是 一 个 串 ,如 果
^
K( x ) |x| c
则称:
r 是 c 可压缩的 (^ compressible ) 。如 果 工 不 是 c 可 压 缩 的 ,则称是不可压缩 c 的
( incompressible by c ) 。 如 果 :
c 是 不 可 压 缩 1 的 ,则称是不可压缩的 (incompressible )。
系夕章可计算性理论的高级专题 169
换 言 之 ,如 果 x 有 一 个 比 它 的 长 度 短 c 位 的 描 述 ,则:r 是 c 可 压 缩 的 。否 则 ,x 是 不
可 压 缩 c 的 。最 后 ,如 果:T 没 有 比 它 本 身 更 短 的 描 述 ,则:T 是 不 可 压 缩 的 。先 来 证 明 不 可
压 缩 的 串 是 存 在 的 ,然 后 再 讨 论 它 们 的 一 些 有 意 思 的 性 质。特 别 地 ,将 证 明 不 可 压 缩 的 串
_
看 起 来 就 像 是 随 机 拋 硬 币 得 到 的 串。
*
^
|通繼 对 于 每 个 长 度 ,都 存 在 不 可 压 缩 的 串 。
证 明 思 路 长 度 为〃的 串 的 个 数 比 长 度 小 于《 的 描 述 的 个 数 要 大 。 每 个 描 述 最 多 描 述
一 个 串。所 以 某 个 长 度 为〃的 串 不 能 由 任 何 长 度 小 于〃的 描 述 来 描 述 。 这 个 串 就 是 不 可 压
缩 的。
证 明 长 度 为〃的 二 进 制 数 串 的 个 数 是 2 % 每 个 描 述 都 是 一 个 非 空 的 二 进 制 数 串 ,故
长 度 小 于〃的 描 述 的 个 数 最 多 为 长 度 小 于 等 于〃一 1 的 串 的 个 数 之 和 ,即 :
E 21 = 1 + 2 + 4 + 8 H h- 2 1
= 2”一 1
^
所 以 较 短 描 述 的 个 数 小 于 长 度 为〃的 串 的 个 数 。因 此 ,至 少 有 一 个 长 度 为〃的 串 是 不 可 压
缩 的。
至 少 有 2 W — 2” - + 1 个 长 度 为 7? 的 串 是 不 可 压 缩 C 的 。
证 明 在 定 理 6.2 6 证 明 基 础 上 扩 展 ,每 个 C 可 压 缩 串 的 描 述 的 长 度 至 多 为 。这
样 ,最 多 有 — 1 个 描 述 会 出 现 。因 此 ,长 度 为 n 的 2”个 串 中 最 多 有 2” 一1 个串
有 这 样 的 描 述 。剩 下 的 至 少 2 — (2”- 一 1) 个 串 都 是 不 可 压 缩 c 的。
不 可 压 缩 的 串 有 许 多 性 质,这 些 性 质 都 是 我 们 希 望 随 机 选 择 串 所 具 有 的 。例 如 ,可 以
证 明 :长 度 为《 的 不 可 压 缩 串 大 致 含 有 相 同 个 数 的 0 和 1。 长 度 为 /2 的串可能含有连续为
0 的 子 串 ,这 种 子 串 的 最 大 长 度 大 致 为 log2 n ,这 些 正 如 我 们 希 望 在 随 机 串 中 发 现 的 那 样 。
证 明 这 样 的 命 题 将 把 我 们 带 到 远 离 主 题 的 组 合 数 学 和 概 率 论 ,但 下 面 将 证 明 的 定 理 构 成 这
些 命 题 的 基 础。
这 个 定 理 表 明 ,对 于 任 何 可 计 算 性 质,如 果 它 对 “几 乎 所 有” 的 串 都 成 立 ,则 对 所 有
足 够 长 的 不 可 压 缩 串 也 成 立 。 如 0 . 2 节 提 到 的 那 样 ,关 于 串 的 一 个 性 质 就 是 一 个 简 单 函 数
/,它 将 串 映 射 到 { TRUE , FALSE }。 如 果 长 度 为 n 、值 为 FALSE 的 串 所 占 的 部 分 在 rz
增 大 时 趋 向 于 0 , 就 说 一 个 性 质 对 几 乎 所 有 串 成 立 。一 个 计 算 性 质 如 果 对 几 乎 所 有 的 串 都
成 立 ,则 对 随 机 选 择 的 长 串 也 可 能 成 立 。因 此 随 机 串 和 不 可 压 缩 串 都 有 这 样 的 性 质。
设 / 是 一 个 对 几 乎 所 有 串 成 立 的 性 质 ,则 对 任 意 6>0 ,性 质 / 只 在 有 限
多 个 不 可 压 缩 6 的 串 上 的 值 是 FALSE。
证 明 设 M 是下列算法:
“对 于 输 入 〖,其 中 i 是 一 个 二 进 制 整 数 :
1. 在 标 准 字 符 串 顺 序 下 ,找 到 使 得 /G )= FALSE 的 第 / 个 串 5 。
2. 输 出 串 5。”
可 以 用 M 来 得 到 不 具 有 性 质 / 的 串 的 更 短 描 述 ,方 法 如 下 :设:r 是 这 样 的 串 ,将 所
有 不 具 有 性 质 / 的 串 排 成 一 个 序 列 ,序 列 是 按 字 符 串 顺 序 排 序 (即 ,按 长 度 排 列 ,对 同 一
长 度 的 按 字 典 序 排 列 )。令 G 是 x 在 这 个 序 列 中 的 位 置 或 序 标 ( index )。则 〈 M,
G 〉是 /
的 一 个 描 述 。这 个 描 述 的 长 度 为 UJ + G 其 中 c 是 〈M〉的 长 度 。因 为 没 有 性 质 / 的 串 较
少 ,故:r 的 序 标 是 小 的 ,它 的 相 应 描 述 也 是 短 的 。
任 取 数 6>0 。选 择 使 得 :在 所 有 长 度 小 于 或 等 于〃的 串 中 ,至 多 有 1/ 26夂+ 1 不 具
170 第二部分可计算性理论
有 性 质 /。 所 有 足 够 大 的〃都 满 足 这 个 条 件 ,因 为 / 对 几 乎 所 有 的 串 成 立 。令 x 是 长 度 为
的 没 有 性 质 / 的 串 ,长 度 小 于 等 于〃的 串 有 2 M+1 一 1 个 ,因 此 ,
^ 2 M+1 — 1
2 ^+ c + i <
2n— b —c
( n — b — c ) + c= n — b Q
从而 1 1 <”一 6 — C ,故 ( M ,i x )
^
: 的长度至多为 这意味着
—b
^
K( X ) /2
这 样 ,使 得 不 具 有 性 质 / 的 每 个 足 够 长 的 i 都 是 可 压 缩 6 的 。因 此 ,只 有 有 限 多 个 不 具 有
性 质 / 的 串 是 不 可 压 缩 6 的 。证 毕 。 ■
现 在 是 展 示 一 些 不 可 压 缩 串 的 适 当 时 候 了。但 如 问 题 6.16 所 要 求 证 明 的 那 样 ,复 杂
性 测 度 K 是 不 可 计 算 的 。 而 且 ,根 据 问 题 6.17 , 没 有 算 法 能 够 一 般 性 判 定 串 是 不 是 不 可
压 缩 的 。确 实 ,根 据 问 题 6.1 8 , 它 们 没 有 无 限 子 集 是 图 灵 可 识 别 的 ,所 以 没 有 办 法 得 到 长
的 不 可 压 缩 串 ,即 使 有 ,也 没 有 办 法 来 检 查 这 个 串 是 不 是 不 可 压 缩 的 。下 面 的 定 理 描 述 了
一 些 几 乎 是 不 可 压 缩 的 串 ,但 它 也 没 有 提 供 明 确 的 展 示 方 法 。
存 在 常 量 幻 使 得 对 每 个 串 工 ,x 的 最 小 描 述 d(:r ) 都 是 不 可 压 缩 6 的 。
证 明 考 虑 下 列 图 灵 机 M:
M=“对 于 输 人〈1? ,y 〉 ,其 中 尺 是 一 个 图 灵 机 ,J 是 一 个 串 :
1. 在 y 上 运 行 尺 ,且 在 它 的 输 出 不 具 有 形 式〈S, z > 时 ,拒 绝 。
2. 在 z 上 运 行 S ,且 将 它 的 输 出 放 在 带 子 上 后 停 机 。”
令 6 为| 〈 M|> +1 ,证 明 6 满 足 本 定 理 。 如 不 然 ,则 对 某 个 串 x ,d ( x ) 是 6 可 压 缩
的 。从 而
—
^
|d ( d ( x )|
) |d ( x |
) b
但 ( M )d ( d U ) ) 是:r 的 一 个 描 述 ,它 的 长 度 至 多 为
|M | < > + | i W (:r ) ) | < ( 6 — 1 ) + ( \ d ( x |
(
:T 的 这 个 描 述 比 d(:T ) 更 短 。这 与 后 者 的 最 小 性 矛 盾 。
) ~
b)= \ d( x ) \
—1
练习
6.1 用 一 个 实 际 的 程 序 设 计 语 言 ( 或 它 的 一 个 合 理 的 近 似 ) 写 一 个 本 质 上 反 映 递 归 定 理 的 例 子 ,它
将其自身打印岀来。
6.2 证 明 :MJNTM 的 任 何 无 限 子 集 都 不 是 图 灵 可 识 别 的 。
A 6.3 证 明 : 如 果 A<TB 且 B<TC,则 八<丁( 。 :
^
6.4 设 ATM'= { ! M 是 一 个 谕 7K 图 灵 机, 接 受 串 w}。证 明 :A M 相对 ATM 是 不 可 判 定 的 。
A 6.5 命 题 B i V y O+ j y s j y] 是 否 为 Th( N , rV :
+ ) 的 成 员? 为 什 么? 3: y[x +:
y =:
r] 呢?
问题
6.6 l ,令 Zm ={ 0 ,
对 每 个 m〉 l,2 ,… ,
m — 1},且 令 + ,X ) 是 如 下 模 型 :它 的 论 域 是 Z m ,
=( Zm ,
它有对应于模 m 计算的 + 和 X 关 系 。证 明 :对 每 个 m ,理 论 Th(7m ) 是 可 判 定 的。
6.7 证 明 :对 于 任 意 两 个 语 言 A 和 B ,存 在 语 言 J 使 得 A<T / 且 八
6.8 证 明 :对 任 意 语 言 A ,存 在 语 言 B ,使 得 且 B $TA 。
*
6.9 证 明 :存 在 两 个 语 言 A 和 B 是 图 灵 不 可 比 的 ,即 使 得 且 B <TA。
*
6.10 设 A 和 B 是 两 个 不 交 的 语 言。如 果 AGC 且 BGC,则 称 语 言 C 分 离 A 和 B 。描 述 两 个 不 交 的 图
灵 可 识 别 语 言 ,使 得 它 们 不 可 由 任 何 的 可 判 定 语 言 分 离 。
第6章可计算性理论的高级专题 171
( definable )。证 明 下 述 每 个 关 系 在
A a. 尺
0 ={0}
-
Ok ) 只 在 a\
+ ) 中 是 可 定 义 的。
Th( N , ^
,… , 6 尺 时 为 真 ,则 称 尺 在 丁11( 1\ ,+ ) 中是可定义的
b. 尺 i = { 1 }
Ac. R = = { ( a , a ) | a G N }
d.i?< ={ U , ) a,
6| 6 eN 并且 a<b )
6.2 2 描 述 两 个 不 同 的 图 灵 机 M 和 iV , 使 得 以 任 意 输 人 开 始 时 ,M 输 出 ( N ),且 iV 输 岀 〈 M〉
。
.
^
6 23 在 递 归 定 理 的 不 动 点 形 式 (定 理 6 . 6 ) 中 ,令 变 换 〖 是 互 换 图 灵 机 描 述 中 的 状 态 和
到 的 函 数 。 给 出 f 的 不 动 点 的 一 个 例 子。
accept
^ reject
.
*
6 24
A 6.25
证 明 :EQTM
^ mEQ TM o
用 递 归 定 理 给 出 问 题 5.1 6 中 赖 斯 定 理 的 另 一 种 证 明 。
A 6.26 给出下列句子的一个模型:
必eq = V ( X ,X )]
.^
A ix V x ,y \ R \ 9
A V x y z iRi ( x ,y ) A R \ ( y z )) - R \ ( x ,z )]
^^^
►
6.2 7 设 釦 如 问 题 6.26 所 定 义 ,给 出 下 列 句 子 的 一 个 模 型 : ^
知 = eq
A oc , y\_R\ { x , y ) 1 i~
2(
^ )]
^^
?
—
A V ( , ) - ( R z ( x , y ) ㊉ 尺 2 (:
y,工))]
' R\ x y
►
A6.28
<) 是 有 论 域 N 和 “小 于” 关 系 的 模 型 ,证 明 Th( N ,
设 (N, <) 是 可 判 定 的 。 ^
习题选解
6.3 设 Mf 判定 A, 判 定 B。用 谕 示 图 灵 机 M3 , 使 得 判 定 A 。机 器 模 拟 ,每 次 Mi 向
它 的 谕 示 查 询 串 1,机 器 iVf 3 检 验 是 否: res 并 将 结 果 提 供 给 Mlc > 因 为 M3 没 有 B 的 谕 示 且 不 能
直 接 执 行 检 验 ,因 此 它 在 输 入 I 上 模 拟 M2 以 获 得 那 些 信 息 。因 为 机 器 M3 * M2 使 用 相 同 的 谕
示 C,因 此 M3 能 获 得 直 接 查 询 的 结 果 。
172 第二部分可计算性理论
6.5 命 题 3: :> +:
rV y [ y =:
y] 是 Th( N ,+ ) 的成员 ,因为在论域 N 上关于 “+ ” 的标准解释下 ,这个命
题是真的 。回忆我们在本章中令 N = { 0 ,
1,2 ,… ,故可取 :
r = 0。 3 x \/ y l x J r y = x ] 不是 Th
'
丨
+
( N , ) 的成员 ,因为命题对这个模型不再是真的 。 比如 ,z 取论域中的任意值 ,y = l , 都 会 引
起 x \ y = x 为假 。
~ ~
_。
—
6.21 + ) 中是可定义的 ,因 为 和(:
a.尺 在 Th( N, :
r + y = y]。
r )= V y[: ::
+
c. R = 在 Th( N , ) 中是可定义的 ,因 为 參 = ( M ,
T )= V i[和
; I ]。
(x ) :c 十 M = ;
.
6 25 用反证法 。 假设有图灵机 X 判定性质 P ,P 满足赖斯定理的条件 。 这些条件中有一条如下 :存在
图灵机 A 和 B ,满 足 < A〉6 P 且 < B ) 乐 P 。用 A 和 B 构造图灵机尺 :
尺 =“在输入加上 :
1. 使用递归定理获得自己的描述 〈尺 > 。
2 在 〈尺〉上运行 X。
.
3 如果 X 接受 < R ),在 w 上模拟 B 。如果 X 拒绝 ( R ), 在 w 上模拟 A 。
”
如果 〈尺〉6 P ,那么 X 接受 〈只〉且 1 0 0 = 1X 5)。但是 < B )乐 P , 与〈尺〉 矛 盾 ,因 为 P
^
和图灵机有相同的语言。如果 0 0 乐 P ,我们得到一个类似的矛盾 。因此 ,我们的初始假设是错
误的 ,每个满足赖斯定理的条件的性质是不可判定的 。
.
6 26 命 题 卜q 用等号关系给出三个条件 。模型 ( A ,R O 是 的一个模型 ,其中 A 是任何域 ,凡 是 A
上的等价关系 。例如 ,A 是整数域 z ,R Ui o u“
} 就是一个模型 。ez
6.28 把 Th( N, +
<) 归约到 Th( N , ), 这我们已经证明是可判定的
^ ^。证明如何把 (N ,
+ ) 的语言上的句子扣 ,当它们在各自的模型中同时保持真或假 。 对和中 /<
句 子 和 转 换 成 (N ,
)的每个出现 ,用扣中的公式 3 々[ G +々= j)
’
<) 的语言上的
代替 ,这里的々每次都是不同的变量 。
” 意味着我们对 ;
句 子 和 与 句 子 h 是相等的 ,因为 “ t 小于) 。判
增加一个非 0 值就能得到 )
+ ) 的算法需要把扣写成前束范式 ,需要一点点额外工作。新的存在量词带到了句子的
定 Th( N ,
前面 ,为此 ,这些量词必须穿过句子中出现的布尔运算 。量词穿过 A 和 V 时不改变 ,而穿过 I时
3 变为 V ,V 变 为 3 。这 样 - ,
- -
^
变 成 等 价 的 表 达 式 VA 变 成
第三部分
Introduction to the Theory of Computation , 3e
复杂性理论
第 7 章|
Introduction to the Theory of Computation , 3 e
时间复杂性
如 果 求 解 一 个 问 题 需 要 过 量 的 计 算 资 源 ( 时 间 或 存 储 量 ),那 么 即 使 它 在 理 论 上 是 可
判 定 的 ,实 际 上 它 仍 然 可 能 是 不 可 解 的 。本 书 的 最 后 这 一 部 分 介 绍 计 算 复 杂 性 理 论
门 研 究 求 解 计 算 问 题 所 需 要 的 时 间 、 存 储 量 或 者 其 他 资 源 的 理 论 。先 从 时 间 开 始 。
本 章 旨 在 介 绍 时 间 复 杂 性 理 论 的 基 础 知 识 。首 先 要 介 绍 一 种 度 量 求 解 问 题 时 所 需 时 间
的 方 法 ,然 后 介 绍 怎 样 根 据 所 需 要 的 时 间 来 给 问 题 分 类 ,最 后 讨 论 某 些 可 判 定 问 题 需 要 耗
费 极 大 量 时 间 的 情 况 ,以 及 当 遇 到 这 样 的 问 题 时 该 怎 样 识 别 它 们 。
7. 1 度量复杂性
考 察 下 列 例 子 。 语 言 A = { 0q
”
>0 }。显 然 A
^
是 一 个 可 判 定 的 语 言。 单 带 图 灵 机 需
要 多 少 时 间 来 判 定 A 呢? 考 察 下 面 判 定 A 的 单 带 图 灵 机 。我 们 给 出 该 图 灵 机 的 低 级 描
述 ,包 括 读 写 头 在 带 子 上 的 实 际 运 动 ,从 而 可 以 计 算 运 行 时 所 经 过 的 步 数 。
^
iV =“对 输 入 串
1. 扫 描 带 子 ,如 果 在 1 的 右 边 发 现 0 , 就拒绝 。
2. 如 果 带 子 上 既 有 0 也 有 1 ,就 重 复 下 一 步 。
3. 扫 描 带 子 ,删 除 一 个 0 和 一 个 1。
4. 如 果 所 有 1 都 被 删 除 以 后 还 有 0 , 或 者 所 有 0 都 被 删 除 以 后 还 有 1 ,就拒绝 。
否 则 ,如 果 在 带 子 上 既 没 有 剩 下 0 也 没 有 剩 下 1 ,就接受 。
”
^
我 们 将 分 析 判 定 A 的 图 灵 机 ]1 的 算 法 所 需 的 时 间 。 对 此 ,首 先 介 绍 一 些 术 语 和
记 法。
在 一 个 特 定 的 输 入 上 ,算 法 所 使 用 的 步 数 可 能 与 若 干 参 数 有 关 。 例 如 , 如 果 输 入 是 一
个 图 ,则 步 数 可 能 依 赖 于 图 的 结 点 数 、 边 数 和 最 大 度 数 ,或 者 这 些 因 素 的 组 合 ,或 者 它 们
与 其 他 因 素 的 某 种 组 合 。 为 了 简 单 起 见 ,把 算 法 的 运 行 时 间 纯 粹 作 为 表 示 输 入 字 符 串 的 长
度 的 函 数 来 计 算 ,而 不 考 虑 其 他 参 数 。在 最 坏 情 况 分 析 ( worst-case analysis ) 中 ,即 这 里
考 察 的 形 式 ,考 虑 在 某 特 定 长 度 的 所 有 输 人 上 的 最 长 运 行 时 间 。 在 平 均 情 况 分 析 ( aver -
age-case analysis ) 中 ,考 虑 在 某 特 定 长 度 的 所 有 输 人 上 的 运 行 时 间 的 平 均 值 。
( running
整 数 集 合 , f U ) 是 M 在 所 有 长 度 为 n 的 输 入 上 运 行 时 所 经 过 的 最 大 步 数 。 若 /U ) 是
M 的 运 行 时 间 ,则 称 iVf 在 时 间 /U ) 内 运 行 ,M 是 /U ) 时 间 图 灵 机 。 通 常 使 用 rz 表 示
输 入 的 长 度。
—
令 M 是 一 个 在 所 有 输 入 上 都 停 机 的 确 定 型 图 灵 机。M 的 运 行 时 间
time ) 或 者 时 间 复 杂 度 ( time complexity ) 是 一 个 函 数 /:N N , 其 中 N 是 非 负
7. 1 . 1 大 0 和小 o 记法
因 为 算 法 的 精 确 运 行 时 间 通 常 是 一 个 复 杂 的 表 达 式 ,所 以 一 般 只 是 估 计 它 的 趋 势 和 级
别。通 过 一 种 被 称 为 渐 近 分 析 ( asymptotic analysis ) 的 方 便 的 估 计 形 式 ,可 以 试 图 了 解
第 7章 时 间 复 杂 性 175
—
数集 。
设 / 和 g 是 两 个 函 数 / ,g : N R+ 0 称 f ( n ) = 0 ( g ( n )) , 若 存 在 正 整 数
:
( 和 72 。,使 得 对 所 有 有
当 /( n )= 0( g( w )) 时 , 称 g( n ) 是 f ( n ) 的上界 ( upper
f(n)
^ c g( n )
bound ) , 或 更 准 确 地 说 ,
g ( n ) 是 /( n ) 的渐近上界 ( asymptotic upper bound ) , 以 强 调 没 有 考 虑 常 数 因 子 。
直观地讲 ,f ( n ) = 0 ( g ( n ) ) 意味着如果忽略一个常数因子的差别 ,那么 / 将小于或
_
者等于 g 。 可以把 0 看作代表一个隐藏的常数 。 在实践中 ,大部分可能碰到的函数 / 都有
一个明显的最高次项 A 。在这种情况下 ,写成 /(〃)= 0( g(〃)),这里 g 是不带系数的 A 。
设 /iU ) 是 函 数 5 V + 2 V + 2277 + 6 。 保留最高次项 5 V ,并且舍去它的系
数 5 , 得 到 /JrO OU 3 )。
^
验证一下这个结果是否满足上面的形式定义 。为此令 c 等于 6 , 等 于 10, 则 对 于 所
有
”>10 ,有 5 w3 + 2 + 22 T? + 6
??
2
^ 6 ?? 3
0
此外 ,有 /1( /0 = 0( 4
,因为 V 比 V 大 ,所 以 它 也 是 的 一 个 渐 近 上 界 。
)
但是 ,A ( n ) 不等于 0( n 2 )。不论给 c 和 n 赋什么值 ,始终不能满足定义的要求 。 。
大 o 记法以一种特别的方式与对数相互影响 。 通常写对数时必须指明基数
( 或称为对数的底 ),如:r = l 0 g2这里基数 2 表明该等式等价于等式 P logw 的值随
着基数 6 的改变而乘以相应的常数倍 ,因为有恒等式 logw = log2 2 / logj。所以 , 写 f ( n )=
;
O d o g n ) 时不必再指明基数 ,因为最终要忽略常数因子 。
令 /2 ( n ) 是函数 3 nlog 2 W + 5 nlog2 log2 + 2。此时有 /2
W ( n ) = 0 ( n\o g n ) , 因为 log 比
"
log logn 更占支配地位 D
…
含义也一样 。该表达式代表 F 的一个上界 ,其中 c 是某个常数 。
在某些分析中会出现表达式 /( 二沙 。由恒等式 72 = 21 得 Y = 2 2 ”,可以看 …… ~
… ^
(
出 代 表 # 的 一 个 上 界 ,其 中 c 是 常 数 。 表 达 式 以 另 一 种 方 式 代 表 了 同 样 的 界 ,
因为表达式 0( 1 ) 代表不超过某个固定常数的值 。
■
f ( n)
lim (W)
=0
n-*- oo
^
则称 / U ) = o ( g ( r? ) ) 。换 言 之 , f U ) = o { g { n ) ) 意 味 着 对 于 任 何 实 数 c > 0 ,存 在 一 个 数
no , 使得对所有 /( n X c Cw )
^ o
dBO 容 易 验 证 下 面 的 等 式。
1. ^ / n = o ( n )
2. w = o ( rzlog ( log n ) )
3. nlogClog n ) = o ( n\og n )
4. wlog n= o ( n 2 )
5. n 2 = o ( n3 )
但 是 , f U ) 不 会 等 于 0( /( 72 ))。 ■
7 . 1 .2 分析算法
本 小 节 分 析 语 言 八 = { 0 4叫 >0 } 对 应 的 图 灵 机 算 法 。为 了 便 于 阅 读 ,这 里 重 述 一 遍
此 算 法。
Mi =“对 输 入 串 w: ^
1. 扫 描 带 子 ,如 果 在 1 的 右 边 发 现 0 , 就 拒 绝 。
2. 如 果 带 子 上 既 有 0 也 有 1 ,就 重 复 下 一 步 。
3. 扫 描 带 子 ,删 除 一 个 0 和 一 个 1。
4. 如 果 删 除 所 有 1 后 还 有 0 , 或 者 所 有 0 都 被 删 除 以 后 还 有 1 ,就 拒 绝 。否 则 ,
如 果 在 带 子 上 既 没 有 剩 下 0 也 没 有 剩 下 1 ,就 接 受 。
”
为了分析 ,把 它 的 四 个 步 骤 分 开 来 考 虑 。步 骤 1 中 ,机 器 扫 描 带 子 以 验 证 输 入 的
形 式 是 0 * 1 * 。执 行 这 次 扫 描 需 要〃步 。如 前 面 约 定 的 ,通 常 用 n 表 示 输 入 的 长 度 。将 读
写 头 重 新 放 置 在 带 子 的 左 端 另 外 需 要〃步 。所 以 这 一 步 骤 总 共 需 要 2 n 步 。 用 大 O 记 法 ,
称 这 一 阶 段 需 要 O( n ) 步 。注 意 ,在 机 器 描 述 中 没 有 提 及 重 新 放 置 读 写 头 的 操 作 。渐 近 记
法 允 许 在 机 器 描 述 中 忽 略 那 些 对 运 行 时 间 的 影 响 不 超 过 常 数 倍 的 操 作 细 节。
在 步 骤 2 和 3 中 ,机 器 反 复 扫 描 带 子 ,在 每 一 次 扫 描 中 删 除 一 个 0 和 一 个 1。 每 一 次
扫 描 需 要 OU ) 步 。因 为 每 一 次 扫 描 删 除 两 个 符 号 ,所 以 最 多 扫 描 n / 2 次 。 于 是 步 骤 2 和
3 需 要 的 全 部 时 间 是 ( rz / 2 )OU )= OU 2 ) 步 。
在 步 骤 4 中 ,机 器 扫 描 一 次 来 决 定 是 接 受 还 是 拒 绝 。这 一 步 需 要 的 时 间 最 多 是 OU )。
所以 ,iV 在长度为 n 的输入上总共耗时为 0( rz )+0( 722 )+0( 72 ),或 0( n 2 )。换言之 ,
TIMEU ( rO )
^ —
它的运行时间是 OU 2 )。这就完成了对该机器的时间分析 。
为 了 根 据 时 间 需 求 来 给 语 言 分 类 ,下 面 定 义 一 些 记 法 。
令 纟:N R + 是 一 个 函 数 。 定 义 时 间 复 杂 性 类 ( time complexity class )
O U U ) ) 时 间 的 图 灵 机 判 定 的 所 有 语 言 的 集 合。
为由
回 忆 语 言 A ={ 0* 1M 々>0 }。前 面 的 分 析 表 明 ,因 为 在 时 间 OU2 ) 内 判 定 A ,而
TIMECn2 ) 包 括 所 有 在 时 间 OU 2 ) 内 可 以 判 定 的 语 言 ,所 以 A 6 TIME( n 2 )。
是 否 存 在 渐 近 更 快 地 判 定 A 的 机 器 呢?换 言 之 ,是 否 对 于 某 个 K « )= o( n 2 ),A 属 于
TIME( Krz ))? 在 每 一 次 扫 描 中 删 除 两 个 0 和 两 个 1 , 而 不 仅 仅 是 各 一 个 ,就 可 以 减 少 运 行
第尸章时间复杂性 177
时 间 ,因 为 这 么 做 把 扫 描 次 数 减 少 了 一 半 。但 是 这 样 只 使 得 运 行 时 间 提 高 了 2 倍 ,不 影 响
渐 近 运 行 时 间 。下 面 的 机 器 M2 采 用 不 同 的 方 法 ,可 以 渐 近 更 快 地 判 定 A 。 它 表 明
TIME( log n )
” 0
“对 输 入 串
1. 扫 描 带 子 ,如 果 在 1 的 右 边 发 现 0 , 就 拒 绝 。
2. 只 要 在 带 子 上 还 有 0 和 1,就 重 复 下 面 的 步 骤 。
3. 扫 描 带 子 ,检 查 剩 余 的 0 和 1 的 总 数 是 偶 数 还 是 奇 数 。若 是 奇 数 ,就 拒 绝 。
4. 再 次 扫 描 带 子 ,从 第 一 个 0 开 始 ,隔 一 个 删 除 一 个 0; 然 后 从 第 一 个 1 开 始 ,
隔 一 个 删 除 一 个 1。
5. 如 果 带 子 上 不 再 有 0 和 1 ,就 接 受 。否 则 ,拒 绝 。
”
在 分 析 M2 之 前 ,先 来 验 证 它 的 确 可 以 判 定 A 。在 步 骤 4 中 ,每 执 行 一 次 扫 描 ,剩 余
的 0 的 总 数 就 减 少 一 半 ,其 他 的 0 被 删 除 了。因 此 ,如 果 开 始 时 有 1 3 个 0 , 那 么 在 步 骤 4
执 行 一 次 以 后 就 只 剩 下 6 个 0。随 后 每 次 执 行 分 别 剩 下 3 个 、1 个 和 0 个 0 。该 步 骤 对 1 的
数 目 有 同 样 的 效 果。
现 在 来 检 查 在 每 次 执 行 步 骤 3 时 0 和 1 的 数 目 的 奇 偶 性。再 次 假 定 开 始 时 有 1 3 个 0
和 1 3 个 1。第 一 次 执 行 步 骤 3 时 ,有 奇 数 个 0 ( 因 为 1 3 是 奇 数 ) 和 奇 数 个 1,以 后 每 次 执
行 时 分 别 只 剩 下 偶 数 个 ( 6 个 )、 然 后 是 奇 数 个 (3 个)、 又 是 奇 数 个 (1 个) 0 和 1。由 于
步 骤 2 指 定 的 循 环 条 件 ,当 剩 下 0 个 0 或 0 个 1 时 ,步 骤 3 不 再 被 执 行 。对 于 得 到 的 奇 偶
序 列 ( 奇 、 偶 、 奇 、 奇 ),如 果 把 偶 替 换 成 0 , 把 奇 替 换 成 1 ,并 且 反 排 这 个 序 列 ,就 得 到
1 1 0 1 ,即 1 3 , 这 是 开 始 时 0 和 1 的 数 目 的 二 进 制 表 示 。该 奇 偶 序 列 总 是 以 反 排 的 方 式 给 出
二 进 制 表 示。
当 步 骤 3 检 查 剩 下 的 0 和 1 的 总 数 是 偶 数 时 ,实 际 上 是 在 检 查 0 数 目 的 奇 偶 性 与 1 数
目 的 奇 偶 性 是 否 一 致 。如 果 这 两 个 奇 偶 性 始 终 一 致 ,那 么 0 和 1 的 数 目 的 二 进 制 表 示 就 一
致 ,从 而 这 两 个 数 目 就 相 等 。
为 了 分 析 以2 的 运 行 时 间 ,首 先 注 意 ,每 一 步 骤 都 消 耗 OU ) 的 时 间 ,然 后 确 定 每
一 步 骤 需 要 执 行 的 次 数 。 步 骤 1 和 5 执 行 一 次 ,共 需 要 0( 7 2 ) 的 时 间 。 步 骤 4 在 每 一 次
执 行 时 至 少 删 除 一 半 的 0 和 1 ,所 以 至 多 l + log2 « 次 循 环 就 可 以 把 全 部 字 符 删 除 。 于 是
步 骤 2 、3 和 4 总 共 消 耗 时 间 ( l + \og 2 n ) 0( n ) 即 O( Mogrz )。M2 的 运 行 时 间 是 O( rz )+
9
Oinlogn ) = 0 0 1ogw )。
前 面 已 经 证 明 A 6 TIMEU 2 ),而 现 在 有 更 好 的 界 ,即 AGTIMEUlogn )。 这 个 结 果
在 单 带 图 灵 机 上 不 可 能 进 一 步 改 进 。实 际 上 ,单 带 图 灵 机 在 ohiogn ) 时 间 内 判 定 的 语 言
都 是 正 则 语 言 ,问 题 7.2 0 要 求 证 明 这 一 点 。
如 果 图 灵 机 有 第 二 条 带 子 ,就 可 以 在 OU ) 时 间 (也 称 为 线 性 时 间 ( liner time )) 内
判 定 语 言 A 。下 面 的 双 带 图 灵 机 M3 在 线 性 时 间 内 判 定 A 。 机 器 的 运 行 方 式 和 上 面 那
些 判 定 A 的 机 器 不 同 ,它 只 是 简 单 地 将 所 有 0 复 制 到 第 二 条 带 子 上 ,然 后 拿 来 和 1 进 行
匹 配。
^
3 =“对输入串
1. 扫 描 带 子 1 ,如 果 在 1 的 右 边 发 现 0 , 就 拒 绝 。
2. 扫 描 带 子 1 上 的 0 , 直 到 第 一 个 1 时 停 止 ,同 时 把 0 复 制 到 带 子 2 上 。
3. 扫 描 带 子 1 上 的 1 直 到 输 入 的 末 尾 。每 次 从 带 子 1 上 读 到 一 个 1 ,就 在 带 子 2
178 第三部分复杂性理论
上 删 除 一 个 0 , 如 果 在 读 完 1 之 前 所 有 的 0 都 被 删 除 ,就拒绝 。
4. 如 果 所 有 的 0 都 被 删 除 ,就接受 。如 果 还 有 0 剩 下 ,就拒绝 。
”
这 个 机 器 分 析 起 来 很 简 单 。四 个 步 骤 的 每 一 步 明 显 地 需 要 OU ) 步 ,所 以 全 部 运 行 时
间 是 0(〃),因 而 是 线 性 的 。 注 意 ,这 是 可 能 的 最 好 运 行 时 间 ,因 为 光 是 读 输 人 就 需 要
步。
总 结 一 下 关 于 A 的 时 间 复 杂 度 的 结 果 ,即 判 定 A 所 需 要 的 时 间 。 给 出 一 个 单 带 图 灵
机 純 ,能 够 在 时 间 OU2 ) 内 判 定 A , 而 一 个 更 快 的 单 带 图 灵 机 M2 , 能 够 在 时 间
O( nlogn ) 内 判 定 A 。问 题 7.2 0 的 证 明 将 指 出 ,不 存 在 更 快 的 单 带 图 灵 机 。 随 后 将 给 出 一
个 双 带 图 灵 机 M3 , 能 够 在 时 间 OU ) 内 判 定 A 。因 此 A 在 单 带 图 灵 机 上 的 时 间 复 杂 度 是
O( logrz ), 在 双 带 图 灵 机 上 是 O( n )。注 意 ,A 的 复 杂 度 与 选 择 的 计 算 模 型 有 关 。
^ 上 面 的 讨 论 突 出 了 复 杂 性 理 论 与 可 计 算 性 理 论 之 间 的 一 个 重 大 区 别。 在 可 计 算 性 理 论
-
中 ,丘 奇 图 灵 论 题 断 言 ,所 有 合 理 的 计 算 模 型 都 是 等 价 的 ,即 它 们 所 判 定 的 语 言 类 都 是
相 同 的 。 在 复 杂 性 理 论 中 ,模 型 的 选 择 影 响 语 言 的 时 间 复 杂 度 ,如 在 一 个 模 型 上 线 性 时 间
内 可 判 定 的 语 言 在 另 一 个 模 型 上 就 不 一 定 是 线 性 时 间 内 可 判 定 的。
在 复 杂 性 理 论 中 ,根 据 计 算 问 题 的 时 间 复 杂 度 来 对 问 题 分 类 。但 是 用 哪 种 模 型 来 度 量
时 间 呢?同 一 个 语 言 在 不 同 的 模 型 上 可 能 需 要 不 同 的 时 间 。
幸 运 的 是 ,对 于 典 型 的 确 定 型 模 型 ,时 间 需 求 的 差 别 不 是 太 大 。 所 以 ,只 要 分 类 体 系
对 复 杂 性 上 相 对 较 小 的 差 异 不 是 很 敏 感 ,那 么 对 确 定 型 模 型 的 选 择 就 关 系 不 大 。在 下 面 几
节 中 ,将 进 一 步 讨 论 这 一 想 法 。
7.1.3 模型间的复杂性关系
现 在 考 察 计 算 模 型 的 选 择 怎 样 影 响 语 言 的 时 间 复 杂 度。考 察 三 种 模 型 :单 带 图 灵 机 、
多 带 图 灵 机 和 非 确 定 型 图 灵 机。
设 KT? ) 是 一 个 函 数 ,t ( n ) 则 每 一 个 iU) 时 间 的 多 带 图 灵 机 都 和 某
一 个 OU 2( /
0 ) 时 间 的 单 带 图 灵 机 等 价。
^ nQ
证 明 思 路 此 定 理 的 证 明 思 想 非 常 简 单 。 回 忆 一 下 ,定 理 3 .8 说 明 了 怎 样 把 一 个 多
带 图 灵 机 转 变 为 一 个 模 拟 它 的 单 带 图 灵 机 。 分 析 这 种 模 拟 ,确 定 它 需 要 多 少 额 外 的 时
间 。证 明 模 拟 多 带 机 的 每 一 步 最 多 需 要 单 带 机 的 0(〆〃)) 步 。 因 此 总 共 需 要 时 间 为
0( P( n)) 步 。
证 明 设 M 是 一 个 在 时 间 〆 幻 内 运 行 的 々 带 图 灵 机 。构 造 一 个 在 时 间 OG2 U )) 内
运 行 的 单 带 图 灵 机 S。
机 器 S 模 拟 M 运 行 ,正 如 定 理 3.8 所 描 述 的 那 样 。 回 忆 一 下 ,S 用 它 的 一 条 带 子 表 示
M 的 所 有 々 条 带 子 的 内 容 。这 些 带 子 连 续 存 放 ,M 的 读 写 头 的 位 置 都 标 在 恰 当 的 方 格 上 。
开 始 时 ,S 让 它 的 带 子 形 成 表 示 M 的 所 有 带 子 的 格 式 ,然 后 模 拟 M 的 步 骤 。 为 了 模 拟
M 的 一 步 ,S 扫 描 带 子 上 的 所 有 信 息 ,确 定 在 M 的 读 写 头 下 的 符 号。然 后 S 再 次 扫 描 带 子 ,
更 新 带 子 内 容 和 读 写 头 位 置 。如 果 M 的 读 写 头 向 右 移 动 到 带 子 上 以 前 没 有 读 到 的 位 置 ,那 么
S 必 须 增 加 分 配 给 这 条 带 子 的 存 储 空 间。为 此 ,它 把 自 己 的 带 子 的 一 部 分 向 右 移 动 一 格 。
现 在 来 分 析 这 种 模 拟 。对 于 M 的 每 一 步 ,机 器 S 两 次 扫 描 带 子 上 活 跃 的 部 分。第 一
次 获 取 决 定 下 一 步 动 作 所 必 需 的 信 息 ;第 二 次 完 成 这 一 步 的 动 作 ,S 的 带 子 上 活 跃 部 分 的
第 /章 时 间 复 杂 性 179
长 度 决 定 了 S 扫 描 一 次 需 要 多 长 时 间 ,所 以 必 须 确 定 这 个 长 度 的 上 界 。为 此 取 M 的 々 条
带 子 上 活 跃 部 分 的 长 度 之 和 。因 为 在 步 中 ,如 果 M 的 读 写 头 在 每 一 步 都 向 右 移 动 ,
则 M 用 掉 个 带 子 方 格 。若 它 还 向 左 移 ,则 不 用 那 么 多 ,所 以 每 一 个 活 跃 部 分 的 长 度
最 多 是 i U )。于 是 S 扫 描 一 次 它 的 活 跃 部 分 需 要 O U( n )) 步 。
模 拟 M 的 每 一 步 ,S 执 行 两 次 扫 描 ,还 可 能 最 多 向 右 移 动 丨 次 。 每 一 次 用 时
O( U n )), 所 以 ,模 拟 M 的 一 步 操 作 ,S 总 共 耗 时 O U( /2 ))。
现 在 来 界 定 模 拟 所 需 要 的 全 部 时 间 。 在 开 始 阶 段 ,S 让 它 的 带 子 形 成 恰 当 的 格
_
式 ,这 需 要 O U ) 步 。 随 后 ,S 模 拟 M 的 M W 步 操 作 ,每 模 拟 一 步 需 要 O U U ))
步 ,所 以 模 拟 部 分 需 要 M n ) X O U U )) = O Q2 ( /0 ) 步 。 因 此 ,整 个 M 的 模 拟 过 程 需 要
O ㈤ + O U2 ㈤) 步 。
假定 (这 是 合 理 的 假 定 ,因 为 如 果 时 间 更 少 ,M 连 输 入 都 读 不 完 ),则 S 的
运行时间是 O U 2( n ))
,证 毕 。 裼
下 面 考 察 对 非 确 定 型 单 带 图 灵 机 的 类 似 定 理。证 明 这 种 机 器 所 判 定 的 语 言 在 确 定 型 单
带 图 灵 机 上 也 是 可 判 定 的 ,但 需 要 更 多 的 时 间 。在 此 之 前 ,必 须 定 义 非 确 定 型 图 灵 机 的 运
行 时 间 。回 忆 一 下 ,一 个 非 确 定 型 图 灵 机 当 它 的 所 有 计 算 分 支 在 所 有 输 入 上 都 停 机 时 ,成
为 一 个 判 定 机。
—
设 i v 是 一 个 非 确 定 型 图 灵 机 ,并 且 是 个 判 定 机 。i V 的运行时间 ( running
time) 是 函 数 /:N N ,其 中 /U ) 是 在 任 何 长 度 为 rz 的 输 入 上 所 有 计 算 分 支 中 的 最 大 步
-
数 ,如 图 7 1 所 示 。
确定型 非确定型
f{n ) 拒绝 /⑷
'
// 接受
V 接受/拒绝 拒绝
图 7- 1 测量确定型和非确定型时间
非确定型图灵机运行时间的定义不是用来对应任何实际的计算设备的 。相 反 ,稍 后 将
说 明 ,它 是 一 个 有 用 的 数 学 定 义 ,有 助 于 刻 画 一 类 重 要 的 计 算 问 题 的 复 杂 性 。
紐 他 设 iU ) 是 一 个 函 数 ,tdn )>n 0 则每一个〆/2 ) 时 间 的 非 确 定 型 单 带 图
灵机都与某一个 ”时 间 的 确 定 型 单 带 图 灵 机 等 价。
证 明 设 iV 是 一 个 在 时 间 Kn ) 内 运 行 的 非 确 定 型 图 灵 机 ,同 定 理 3.1 0 的 证 明 一 样 ,
构 造 确 定 型 图 灵 机 D,D 通 过 搜 索 N 的 非 确 定 型 计 算 树 来 模 拟 N 。现 在 分 析 这 种 模 拟。
在 长 度 为〃的 输 入 上 ,N 的 非 确 定 型 计 算 树 的 每 一 个 分 支 的 长 度 最 多 是 Mn),树 的 每
一 个 结 点 最 多 有 6 个 子 女 ,其 中 6 是 N 的转移函数所决定的合法选择的最大值 。因 此 树 叶
的 总 数 最 多 是 以0 0 。
模 拟 过 程 以 宽 度 优 先 法 探 查 这 棵 树 。 换 言 之 ,在 访 问 深 度 为 +1 的 结 点 之 前,
180 第三部分复杂性理论
^
行时间是 OUU )6 )
“
正如定理 3.10 中所描述的 ,图灵机 D 有三条带子 。按照定理 7.8 , 把它转变为单带
图灵机最多使运行时间乘方 。 这样 ,单带模拟机的运行时间是
2 G(心)),定理得证 。 ■
7.2 P类
定理 7.8 和定理 7.10 显示岀一个重要的差别 。一方面 ,问题的时间复杂度在确定型
单带和多带图灵机上最多是平方或多项式的差异 ;另一方面 ,在确定型和非确定型图灵机
上 ,问题的时间复杂度最多是指数的差异 。
7.2. 1 多项式时间
运行时间的多项式差异可以认为是较小的 ,而指数差异则被认为是大的 。看一下为什
么要选择区分多项式和指数 ,而不是选择别的某两类函数 。
首先 ,注意到典型的多项式 (如〃3 ) 与典型的指数 ( 如 2”) 在增长率上存在巨大的
差异 。例如 ,令〃是 1000 , 这是一个算法输人的合理规模。在这种情况下 ,V 是 10 亿 ,
虽然是大数 ,但还可以处理 。然而 ,2” 则是一个比宇宙中的原子数还大得多的数 。多项式
时间算法就很多目的而言是足够快了 ,而指数时间算法则很少使用。
典型的指数时间算法来源于通过搜索解空间来求解问题 ,这 称 为 蛮 力 搜 索 ( brute -
force search ) 例如 ,分解一个数为素数因子的一种方法是搜遍所有可能的因子 。搜索空
0
现在给出复杂性理论中的一个重要定义 。
BDI
^ P 是 确 定 型 单 带 图 灵 机 在 多 项 式 时 间 内 可 判 定 的 语 言 类 。换 言 之 ,
P = UTIME ( )
k ^
在理论中 ,P 类扮演核心的角色 ,它的重要性在于 :
1. 对于所有与确定型单带图灵机多项式等价的计算模型来说 ,P 是不变的 。
2.P 大致对应于在计算机上实际可解的那一类问题 。
第 1 条表明 ,在数学上 ,P 是一个稳健的类 ,它不受所采用的具体计算模型的影响 。
第 2 条表明 ,从实用的观点看 ,P 是恰当的 。 当一个问题在 P 中的时候 ,就有办法在
时间 V (々是常数) 内求解它 。至于这么长时间是否实用就依赖于々和实际的应用情况 。
当然 , 100
的运行时间不太可能有任何实际应用。不管怎样 ,把多项式时间作为实际可解
性的标准已经被证明是有用的 。一旦为某个原先似乎需要指数时间的问题找到了多项式时
间算法 ,则一定是了解了它的某些关键的方面 ,通常就能进一步降低它的复杂性 ,达到实
用的程度 。
7.2. 2 P 中的问题举例
是要确定是否存在从 s 到〖 的有向路径 。令
P A T H ={( G ,s ,t )| G 是 具 有 从 s 到 f 的有向路径的有向图 }
图 7- 2 PA 丁H 问题 :存在从 s 到( 的路径吗
PATHePo
证明思路通过给出判定 PATH 的多项式时间算法来证明该定理。在描述算法之前 ,
要注意到该问题的蛮力算法是不够快的 。
PATH 的蛮力算法通过考察 G 中所有可能的路径来确定是否存在从 s 到 f 的有向路
径 。一条可能路径就是 G 中长度最多为 m 的结点序列 ,m 是 G 中的结点数 。( 如果从 s 到
f 存在有向路径 ,那么就存在长度不超过 m 的有向路径 ,因为路径上不需要重复结点 。
)
但是这些可能的路径数是 m 这是 G 中结点数的指数倍 。因此该蛮力算法消耗指数时间 。
'
为了获得 PATH 的多项式时间算法 ,必须设法避免蛮力搜索 。一种办法是采用图搜
索方法 ,如宽度优先搜索。连续标记 G 中从 s 岀发 ,长度为 1 ,2 , 3 , 直 到 m 的有向路径
可达的所有结点 。用多项式可以容易地界定该策略的运行时间 。
证明 P A T H 的一个多项式时间算法 M 运行如下 :
对输入 < G , t ),G 是包含结点 s 和 的有向图 :
s,
1. 在结点 s 上做标记 。
2. 复重下面步骤 3 , 直到不再有结点被标记 。 ^
3. 扫描 G 的所有边 。如果找到一条边 ( a ,6 ), a 被标记而 6 没有被标记 ,那么标
记 6。
4. 若〖 被标记 ,则 接 受 ;否则 ,拒绝 。
”
分析该算法 ,证明它在多项式时间内运行 。显然 ,步骤 1 和 4 只执行一次。步骤 3 最
多执行 m 次 ,因为除最后一次外 ,每一次执行都要标记 G 中的一个未标记的结点。所以
用到的总步骤数最多是 l +1 + m ,是 G 的规模的多项式 。
M 的步骤 1 和 4 很容易用任何合理的确定型模型在多项式时间内实现 。步骤 3 需要扫
描输入 ,检查某些结点是否被标记 ,这也容易在多项式时间内实现 。所以 M 是 PATH 的
多项式时间算法 。 ■
■MR! RELPRIMEePo
〈:r,
^^
y〉 :
|:c 与 y 互素 }
襄尸章时间复杂性 183
证 明 思 路 解 决 该 问 题 的 一 种 算 法 是 搜 遍 这 两 个 数 的 所 有 可 能 的 公 因 子 ,如 果 没 有 发
现 大 于 1 的 公 因 子 ,就 接 受 。然 而 ,用 二 进 制 或 其 他 任 何 以 々 为 基 的 记 法 ( k >2 ) 表 示 的
数 字 的 大 小 是 它 表 示 长 度 的 指 数 倍 。因 此 该 蛮 力 算 法 需 要 搜 遍 指 数 多 个 可 能 的 因 子 ,消 耗
指 数 的 运 行 时 间。
我 们 改 用 一 种 古 老 的 数 值 过 程 来 求 解 该 问 题 ,称 为 欧 几 里 得 算 法 (Euclidean algorithm ),
以 此 计 算 最 大 公 因 子。两 个 自 然 数:r 和 的 最 大 公 因 子 ( greatest common divisor ) 记 为 gcd
(x,
3;),是 能 同 时 整 除:r 和y
^
的 最 大 整 数 。 例 如 gcd( 1 8 ,2 4 )= 6 。显 然 ,:
r 和 y 是互素的充
30 = l 。在 证 明 中 把 欧 几 里 得 算 法 描 述 为 算 法 E , 它 使 用 函 数 mod ,
分 必 要 条 件 是 gcd( x ,
x mod 3 等 于 用 J 去 整 除:r 所 得 的 余 数 。
^
证 明 欧 几 里 得 算 法 E 如下:
对 输 入〈:ra〉,:
r 和 y 是二进制表示的自然数:
1. 重 复 下 面 的 操 作 ,直 到 :y = 0。
2.
3.
赋 值 oc
交换
4. 输 出 x 。
”
T
— x mod :y 。
:
和 y 的 值。
算 法 1? 以 :为 子 程 序 求 解 RfXPRJME 。
尺 =“对 输 入 〈X ,7 > ,:
T 和y 是二进制表示的自然数:
1 在〈:r ,W 上 运 行 。
2. 若 结 果 为 1 ,就 接 受 ;否 则 ,就 拒 绝 。 ”
显 然 ,若 E 在 多 项 式 时 间 内 运 行 且 正 确 ,则 i? 也 在 多 项 式 时 间 内 运 行 且 正 确 。所 以
只 需 分 析 E 的 时 间 和 正 确 性 。该 算 法 的 正 确 性 是 众 所 周 知 的 ,不 在 这 里 进 一 步 讨 论 它 。
为 了 分 析 E 的 时 间 复 杂 度 ,首 先 证 明 步 骤 2 的 每 一 次 执 行 (除 了 第 一 次 有 可 能 例 外)
都 把 x 的 值 至 少 减 少 一 半 。执 行 步 骤 2 以 后 ,由 函 数 mod 的 性 质 知:r<3; 。步 骤 3 后 ,有
x>3N 因 为 这 两 个 值 已 经 交 换 。于 是 当 步 骤 2 随 后 执 行 时 有 : r>3 。若:
y = 3::
y<y x /2 , x 至 少 减 少 一 半 。笔 x l K y ,贝lj 工 mod :
;
_ 则: r mod
^
y<i/ 2 ,x 至 少 减 少 一 半 。
*
每 一 次 执 行 步 骤 3 都 使:r 和 的 值 相 互 交 换 ,所 以 每 两 次 循 环 就 使 得 x 和 原先的值
^
至 少 减 少 一 半 。于 是 步 骤 2 和 3 执 行 的 最 大 次 数 是 21og2:r 和 21og2 3;中 较 小 的 那 一 个 。 这
两 个 对 数 与 表 示 的 长 度 成 正 比 ,步 骤 的 执 行 次 数 是 OU )。
所 以 整 个 运 行 时 间 是 多 项 式 的。
^
:的 每 一 步 仅 消 耗 多 项 式 时 间 ,
■
最 后 一 个 多 项 式 时 间 算 法 的 例 子 表 明 ,每 一 个 上 下 文 无 关 语 言 是 多 项 式 时 间 可 判 定 的。
每一个上下文无关语言都是 P 的成员。
证 明 思 路 定 理 4.8 证 明 了 每 一 个 CFL 都 是 可 判 定 的 ,并 且 为 每 一 个 CFL 给 出 了 判
定 算 法 。如 果 那 个 算 法 在 多 项 式 时 间 内 运 行 ,那 么 本 定 理 作 为 推 论 就 必 然 成 立 。回 忆 一 下
那 个 算 法 ,看 它 运 行 得 是 否 够 快 。
令 L 是 一 个 由 CFGG 产 生 的 CFL,G 是 乔 姆 斯 基 范 式 。由 问 题 2.3 8 知 :因 G 是 乔 姆
斯 基 范 式 ,故 任 何 得 到 字 符 串 W 的 推 导 都 有 2〃一 1 步 ,7 2 是 w 的 长 度 。当 给 L 的 判 定 机
输 入 长 为 n 的 字 符 串 时 ,它 通 过 试 遍 所 有 可 能 的 2〃一 1 步 推 导 来 判 定 L 。如 果 其 中 有 一 个
得 到 w 的 推 导 ,该 判 定 机 就 接 受 ;否 则 ,就 拒 绝 。
分 析 一 下 该 算 法 可 知 ,它 不 能 在 多 项 式 时 间 内 运 行。々 步 推 导 的 数 量 可 能 达 到 々 的 指
184 第三部分复杂性理论
数 ,所 以 该 算 法 可 能 需 要 指 数 时 间 。
为 了 获 得 多 项 式 时 间 算 法 ,在 此 介 绍 一 种 强 有 力 的 技 术 ,称 为 动 态 规 划 ( dynamic
programming )。这 种 技 术 通 过 累 积 小 的 子 问 题 的 信 息 来 解 决 大 的 问 题 。把 子 问 题 的 解 都 记
录 下 来 ,这 样 就 只 需 对 它 求 解 一 次 。 为 此 ,把 所 有 子 问 题 编 成 一 张 表 ,当 碰 到 它 们 时 ,把
它 们 的 解 系 统 地 填 入 表 格。
在 本 例 中 ,考 虑 G 的 每 一 个 变 元 是 否 产 生 加 的 每 一 个 子 串 这 样 的 子 问 题 。 算 法 把 子
问 题 的 解 填 入 一 张〃X〃表 格 。 对 于 表 的 第 ( i ,j ) 项 包 含 产 生 子 串 1 …叫 的
所 有 变 元。 的 表 项 没 有 使 用。
算 法 为 w 的 每 一 子 串 填 写 表 项 。 首 先 为 长 为 1 的 子 串 填 写 表 项 ,然 后 是 长 为 2 的 子
串 ,依 此 类 推 。它 利 用 短 子 串 的 表 项 内 容 来 辅 助 确 定 长 子 串 的 表 项 内 容 。
例 如 ,假 定 该 算 法 已 经 确 定 了 由 哪 些 变 元 产 生 所 有 长 度 不 超 过 々 的 子 串 。 为 了 确 定 变
— -
元 A 是否产生某一长为々 + 1 的 子 串 ,算 法 把 该 子 串 以 々 种 可 能 方 式 分 裂 为 非 空 的 两 段 。
对 于 每 一 种 分 裂 方 式 ,算 法 考 察 每 一 条 规 则 A BC,利 用 以 前 计 算 的 表 项 来 确 定 是 否 B
产 生 第 一 段 而 且 C 产 生 第 二 段 。 如 果 B 和 C 都 产 生 各 自 的 段 ,那 么 A 就 产 生 该 子 串 ,并
且 被 加 入 相 关 联 的 表 项 。算 法 从 长 为 1 的 串 开 始 ,对 规 则 A 6 考察表格。
证 明 下 面 的 算 法 D 实 现 了 这 一 证 明 思 路。 令 G 是 产 生 CFL L 的 乔 姆 斯 基 范 式 的
CFG。假 设 S 是 起 始 变 元 。(回 忆 一 下 ,空 串 在 乔 姆 斯 基 范 式 文 法 中 被 特 殊 处 理 。算 法 在
) 注 释 写 在 方 括 号 中。
步 骤 1 中 处 理 泌= 6 的 特 殊 情 况。
—
D =“ 对 输 入
1. 若 切 = 且 5 e 是 一 条 规 则 ,则 接 受 。否 则 拒 绝 。 [w = e 的 情 况]
2. 对 i =
^ [考 察 每 一 长 为 1 的 子 串]
—
3. 对 每 一 变 元 A:
4 检查 A 6 是 否 是 一 条 规 则 ,其 中 6
5 若 是 ,把 A 放 入 table( i ,
i) 0
6. 对 / = 2 n: [Z 是 子 串 的 长 度 ]
7. 对
” / +1 : D 是 子 串 的 起 始 位 置]
一
8 令 j =i +L l [j 是 子 串 的 结 束 位 置]
—
~
0
9. 对 k =i j — 1: Ik 是 分 裂 位 置]
10. 对每一条规则 A BC:
11 . 若 tabled 9 k ) 包 含 B 且 tabLe( k ~\~ l 9 j ) 包 含 C,则 把 A 放 人 tabled ,j )
0
1 2. 若 S 在 加6心(l, n) 中 ,则 接 受 ;否 则 ,拒绝 。 ”
现 在 分 析 D。每 一 步 很 容 易 在 多 项 式 时 间 内 运 行 。步 骤 4 和 5 最 多 运 行 ㈣ 次 ,其 中 v
是 G 中 的 变 元 数 ,是 与 n 无 关 的 固 定 常 数 ;因 此 这 两 步 运 行 O( n ) 次 。 步 骤 6 最 多 运 行
次 。步 骤 6 每 运 行 一 次 ,步 骤 7 最 多 运 行; z 次 。步 骤 7 每 运 行 一 次 , 步 骤 8 和 9 最 多 运 行
n 次 。步 骤 9 每 运 行 一 次 ,步 骤 1 0 运 行 r 次 ,这 里 r 是 G 的 规 则 数 ,是 另 一 个 固 定 常 数 。
所 以 步 骤 1 1 ( 即 该 算 法 的 内 层 循 环 ) 运 行 0( n3 ) 次 。 总 计 D 执 行 0( /z3 ) 步 。
7. 3 NP 类
如 7.2 节 所 揭 示 的 ,许 多 问 题 可 以 避 免 蛮 力 搜 索 而 获 得 多 项 式 时 间 解 法 。但 是 ,在 某
些 其 他 问 题 (包 括 许 多 有 趣 而 有 用 的 问 题) 中 ,避 免 蛮 力 搜 索 的 努 力 还 没 有 成 功 ,求 解 它
第尸章时间复杂性 185
们 的 多 项 式 时 间 算 法 还 没 有 找 到。
为 什 么 对 这 些 问 题 寻 找 多 项 式 时 间 算 法 还 没 有 取 得 成 功 呢? 我 们 不 知 道 这 个 重 要 问 题
的 答 案 是 什 么 。 可 能 这 些 问 题 具 有 基 于 未 知 原 理 的 多 项 式 时 间 算 法 ,但 至 今 还 没 有 被 发
现 ,或 者 它 们 中 的 某 些 问 题 就 是 不 能 在 多 项 式 时 间 内 解 决 。 它 们 可 能 是 固 有 地 难 计 算 的 。
关 于 该 问 题 的 一 个 不 寻 常 的 发 现 是 ,许 多 问 题 的 复 杂 性 是 联 系 在 一 起 的 。发 现 其 中 一
个问题的多项式时间算法可以用来解决整个一
类 问 题 。从 一 个 例 子 开 始 来 理 解 这 一 现 象 。
有 向 图 G 中 的 哈 密 顿 路 径 ( Hamiltonian
path ) 是 通 过 每 个 结 点 恰 好 一 次 的 有 向 路 径。考
虑 这 样 一 个 问 题 :验 证 一 个 有 向 图 是 否 包 含 一 条
-
哈 密 顿 路 径 连 接 着 两 个 指 定 的 结 点 ,如 图 7 3 所
示 。令 图 7- 3 哈密顿路径经过每个结点恰好一次
^^ ^
只八] / \ 77 = {〈00,〉
|0 是包含从 5 到 z 的哈密顿路径的有向图}
通 过 修 改 定 理 7.1 2 给 出 的 P A T H 的 蛮 力 算 法 ,很 容 易 获 得 HAM P A T H 问 题 的 指 数
时 间 算 法 。 只 需 增 加 一 项 检 查 ,验 证 可 能 的 路 径 是 哈 密 顿 路 径 。没 有 人 知 道 HAMPATH
是 否 能 在 多 项 式 时 间 内 求 解。
HAMPATH 问 题 还 具 有 一 个 特 点 ,称 为 多 项 式 可 验 证 性 ( polynomial verifiability ),
这 对 于 理 解 它 的 复 杂 性 很 重 要 。虽 然 还 不 知 道 一 种 快 速 (即 多 项 式 时 间 ) 的 方 法 来 确 定 图
中 是 否 包 含 哈 密 顿 路 径 ,但 是 如 果 以 某 种 方 式 ( 可 能 采 用 指 数 时 间 算 法 ) 找 到 这 样 的 路
径 ,就 能 很 容 易 让 人 相 信 它 的 存 在 ,这 只 需 给 出 它 即 可 。换 言 之 ,验 证 哈 密 顿 路 径 的 存 在
性 可 能 比 确 定 它 的 存 在 性 容 易 得 多。
另 一 个 多 项 式 可 验 证 的 问 题 是 合 数 性 。回 忆 一 下 ,当 一 个 自 然 数 是 两 个 大 于 1 的 整 数
的 乘 积 时 ,称 该 自 然 数 为 合 数 (composite ) ( 即 合 数 就 是 非 素 数 的 数)。令
COMPOSITES = { x \ x= pqy 整 数 p ,
q>l }
虽 然 不 知 道 判 定 该 问 题 的 多 项 式 时 间 算 法 ,但 是 能 轻 易 地 验 证 一 个 数 是 合 数—只 需 要 该
数 的 一 个 因 子 即 可 。最 近 ,发 现 了 一 个 可 验 证 某 数 是 素 数 还 是 合 数 的 多 项 式 时 间 算 法 ,但
它 比 前 面 提 到 的 合 数 性 验 证 方 法 更 复 杂。
有 些 问 题 可 能 不 是 多 项 式 可 验 证 的 。 例 如 ,HAM PATH , 即 H AMPA 问题的补
问 题。尽 管 能 够 (以 某 种 方 式 ) 判 定 图 中 没 有 哈 密 顿 路 径 ,但 如 果 不 采 用 原 先 做 判 定 时 用
的 那 个 指 数 时 间 算 法 ,就 没 有 其 他 办 法 让 别 人 验 证 它 的 不 存 在 性 。下 面 是 形 式 化 的 定 义 。
语言 A 的验证机 ( verifier ) 是 一 个 算 法 V ,这 里
|对 某 个 字 符 串 c ,V 接 受〈 w ,
A = { u; c〉}
因 为 只 根 据 w 的 长 度 来 度 量 验 证 机 的 时 间 ,所 以 多 项 式 时 间 验 证 机 ( polynomial time veri-
fier ) 在 i t; 的 长 度 的 多 项 式 时 间 内 运 行 。 若 语 言 A 有 一 个 多 项 式 时 间 验 证 机 ,则 称 它 为 多
项 式 可 验 证 的 ( polynomially verifiable )。
验 证 机 利 用 额 外 的 信 息 ( 在 定 义 7.15 中 用 符 号 c 表 示) 来 验 证 字 符 串 c 是 A 的 成 员 。
该 信 息 称 为 A 的 成 员 资 格 证 书 ( certificate ) 或 证 明 ( proof ) 注 意 ,对 于 多 项 式 验 证 机 ,
0
证 书 具 有 多 项 式 的 长 度 的 长 度),因 为 这 是 该 验 证 机 在 它 的 时 间 界 限 内 所 能 访 问 的 全
部 信 息 长 度 。把 该 定 义 应 用 到 语 言 HAMPATH 和 COMPOSITES 上 。
186 第三部分复杂性理论
对 于 问 题 ,字 符 串 〈 G ,
6,
《〉eHAMPATH 的证书就只是一条从 6 到 z
的哈密顿路径 。 对于 COMPOSITES 问题 ,合数 :
r 的证书只是它的一个因子 。 在这两种
情况下 ,当把证书交给验证机以后 ,它就能在多项式时间内检查输人是否在语言中 。
NP 是 具 有 多 项 式 时 间 验 证 机 的 语 言 类 。
NP 类是重要的 ,因为它包含许多具有实际意义的问题。从前面的讨论可知 ,HAMPATH
和 COMPOSITES 都是 NP 的成员 。COMPOSITES 也是 NP 的子集 P 的成员 ,但要证明
这个更强的结论非常困难 。 术语 NP 即非确定型多项式时间 ( nondeterministic polynomial
time ) , 来源于使用非确定型多项式时间图灵机的另一特征 。 在 NP 中的问题有时被称为
NP 问题 。
下面是一个在非确定型多项式时间内判定 HAMPATH 问 题 的 非 确 定 型 图 灵 机
( NTM )。 回忆一下 ,在定义 7.9 中 ,定义非确定型机器的时间为最长计算分支所用的
时间 。
“对输入 < G , 0 , 这里 G 是包含结点 s 和 f 的有向图 :
s,
1. 写一列 m 个 数 ,/?2 , ,
P 參
m 是 G 的结点数 。 列中每一个数都是从 1 到
中非确定地挑选 。
2. 在列中检查重复性 ,若发现有重复 ,则拒绝 。
3. 检查 s = 和 = 是否都成立 。若有一个不成立 ,则拒绝 。
^
4 . 对 于 1 到 m — l 中的每一个 f ,检查 ( A ,
个不是 ,则拒绝 。否则 ,所有检查都通过了 ,接受 。
”
A + I ) 是 否 是 G 的一条边 。若有一
为了分析该算法并且验证它在非确定型多项式时间内运行 ,考察它的每一步骤 。 在步
骤 1 中 ,非确定的选择显然在多项式时间内运行 。在步骤 2 和 3 中 ,每一步是一次简单的
检查 ,所以合起来它们仍在多项式时间内运行 。 最后 ,步骤 4 显然也在多项式时间内运
行 。于是 ,该算法在非确定型多项式时间内运行 。
一个语言在 NP 中 ,当 且 仅 当 它 能 被 某 个 非 确 定 型 多 项 式 时 间 图 灵 机 判 定。
证明思路我们证明怎样把一个多项式时间验证机转化为等价的多项式时间 NTM 以
及怎样反向转化 。 NTM 通过猜想证书来模拟验证机 ,验证机通过把接受分支作为证书来
模拟 NTM。
证明对于该定理从左向右的方向 ,设 A G N P,要证 A 被多项式时间 N T M iV 判定 。
由 N P 的定义 ,存在 A 的多项式时间验证机 V。 假设 V 是一个在时间 W 内运行的图灵机 ,
构造 N 如下 :
N 对长为 n 的输人 w:
1. 非确定地选择最长为 V 的字符串
2. 在输入 < vu ,
c ) 上运行 V。
3. 若 V 接受 ,则接受 ;否则拒绝 。 ” ^
为了证明该定理的另一个方向 ,假设 A 被多项式时间 N T M N 判定 ,构造多项式时间
验证机 V 如下 :
V =“对输人〈 w ,
c〉,这里 w ,c 是字符串 :
1. 在输入 w 上模拟 N ,把 c 的每一个符号看作是对每一步所做的非确定性选择
的描述 (正如在定理 3.10 的证明中那样)。
第尸章时间复杂性 187
7. 3. 1 NP 中的问题举例
无向图中的一个团 ( clique ) 是 一 个 子 图 ,其 中 每 两 个 结 点 都 有 边 相 连 。 6 团 ( t
-
clique ) 就 是 包 含 々 个 结 点 的 团 。图 7 4 展 示 一 个 包 含 5 团
的 图。
团问题旨在判定一个图是否包含指定大小的团 。令
CLJQU£ = { < G,〉G 是 包 含 々 团 的 无 向 图 }
々|
:
CLJQLTf 属 于 NP。
证 明 思 路 团 即 是 证 书。
证 明 下 面 是 C L I Q U E 的验证机 V。
-
图7 4 包含 5 团的图
^
1. 检查 c 是否是 G 中々个结点的子图。
2. 检査 G 是否包含连接 c 中结点的所有边 。
3. 若两项检查都通过 ,则接受 ;否则 ,拒绝 。
”
另一种证明如果读者喜欢从非确定型多项式时间图灵机的角度来理解 NP 类 ,那么
可以通过给岀判定 C L I Q U E 的图灵机来证明本定理 。注意这两种证明的相似性 。
N =“ 对输人 〈 G ,
々〉,这里 G 是一个图 :
1. 非确定地选择 G 中々个结点的子集 c 。
2. 检查 G 是否包含连接 c 中结点的所有边 。
3. 若是 ,则接受 ;否则拒绝 。
” ■
…,
下面考虑与整数算术有关的问题 SUBS£T Sl M 。 给定一个数集:n , 々和一个目 - ;
标数 h 要判定在这个集合中是否有一个加起来等于( 的子集 。即
SUBSET- SUM = { ( s ,t ) \ s ,
…,A },且存在
{,…,
=
:y / } { 3:
i,…,
& }使得 2 y i = t )
^
i *
^ SUBSET- SUM
证 明 思 路 子 集 就 是 证 书。
NP。
1. 检 查 c 是 否 是 加 起 来 等 于〖 的 数 的 集 合 。
2. 检 查 S 是 否 包 含 c 中 的 所 有 数 。
3. 若 两 项 检 查 都 通 过 ,则 接 受 ;否 则 拒 绝 。
”
另 一 种 证 明 还 可 以 通 过 给 出 判 定 SUBSET- SUM 的 非 确 定 型 多 项 式 时 间 图 灵 机 来 证
明 本 定 理 ,如 下 所 示 :
iV =“ 对 输 入 iS t ) :
’
1. 非 确 定 地 选 择 S 中 的 数 的 一 个 子 集 合 c 。
2. 检 查 c 是 否 是 加 起 来 等 于〖 的 数 的 集 合 。
3. 若 检 查 通 过 ,则 接 受 ;否 则 拒 绝 。
”
注 意 这 些 集 合 的 补 集 ( CLIQUE和SUBSET-SUM ) 不 是 很 明 显 地 属 于 NP。 验 证 某 种
事 物 不 存 在 好 像 要 比 验 证 它 存 在 更 加 困 难 。 我 们 定 义 另 外 一 个 复 杂 性 类 ,称 为 coNP ,它
包 括 NP 中 的 语 言 的 补 语 言 。 还 不 知 道 coNP 是 否 与 NP 不 同 。
7.3. 2 P 与 NP 问题
如 前 所 述 ,NP 是 在 非 确 定 型 图 灵 机 上 多 项 式 时 间 内 可 解 的 语 言 类 ,或 者 等 价 地 说 ,
是 成 员 资 格 可 以 在 多 项 式 时 间 内 验 证 的 语 言 类 。P 是 成 员 资 格 可 以 在 多 项 式 时 间 内 判 定 的
语 言 类 。 把 这 些 内 容 总 结 如 下 ,其 中 ,把 多 项 式 时 间 可 解 的 粗 略 地 称 为 “快 速 地 ” 可
解 的。
?= 成 员 资 格 可 以 快 速 地 判 定 的 语 言 类 。
NP = 成 员 资 格 可 以 快 速 地 验 证 的 语 言 类 。
前 面 已 经 给 出 了 语 言 的 例 子 ,如 :
和CUQUf ,它们是 NP 的 成 员 ,但 不
知 道 是 否 属 于 P。多 项 式 可 验 证 性 的 能 力 似 乎 比 多 项 式 可 判 定 性 的 能 力 大 得 多 。但 难 以 想
象 的 是 ,P 和 NP 也 有 可 能 是 相 等 的 。现 在 还 无 法 证 明 在 NP 中 存 在 一 个 不 属 于 P 的 语 言 。
P = NP 是 否 成 立 的 问 题 是 理 论 计 算 机 科 学 和 当 代 数 学 中 最 大 的 悬 而 未 决 的 问 题 之 一 。
如 果 这 两 个 类 相 等 ,那 么 所 有 多 项 式 可 验 证 的 问 题 都 将 是 多 项 式 可 判 定 的 。 大 多 数 研 者
相 信 这 两 个 类 是 不 相 等 的 ,因 为 人 们 已 经 投 入 了 大 量
的 精 力 为 NP 中 的 某 些 问 题 寻 找 多 项 式 时 间 算 法 ,但
没 人 取 得 成 功 。研 究 者 还 试 图 证 明 这 两 个 类 是 不 相 等
的 ,但 是 这 要 求 证 明 不 存 在 快 速 算 法 来 代 替 蛮 力 搜 索 。
目 前 科 学 研 究 还 无 法 做 到 这 一 步 。图 7 - 5 显 示 了 两 种
可 能 性。
已 知 最 好 的 判 定 语 言 是 NP 的 确 定 型 方 法 使 用 指
图 7- 5 这两个可能中有一个是正确的
数 时 间 。换 言 之 ,可 以 证 明
^
NP£ EXPTIME = UTIME( 2 )
k
但 是 ,不 知 道 NP 是 否 包 含 在 某 个 更 小 的 确 定 型 时 间 复 杂 性 类 中 。
7.4 NP 完全性
在 p 与 NP 问 题 上 的 一 个 重 大 进 展 是 在 2 0 世 纪 7 0 年 代 初 由 斯 蒂 芬 • 库 克 ( Stephen
Cook ) 和 列 奥 尼 德 列 文 ( Leonid Levin ) 完 成 的 。 他 们 发 现 NP 中 某 些 问 题 的 复 杂 性 与
第 7章 时 间 复 杂 性 189
整 个 类 的 复 杂 性 相 关 联 。 这 些 问 题 中 任 何 一 个 如 果 存 在 多 项 式 时 间 算 法 ,那 么 所 有 NP 问
-
题 都 是 多 项 式 时 间 可 解 的 。这 些 问 题 称 为 NP 完 全 的 ( NP complete )。 NP 完 全 性 现 象 对
于 理 论 与 实 践 都 具 有 重 要 意 义。
在 理 论 方 面 ,试 图 证 明 P 不 等 于 NP 的 研 究 者 可 以 把 注 意 力 集 中 到 一 个 NP 完 全 问 题
上 。如 果 NP 中 的 某 个 问 题 需 要 多 于 多 项 式 时 间 ,那 么 NP 完 全 问 题 也 一 定 如 此 。 而 且 ,
试 图 证 明 P 等 于 NP 的 研 究 者 只 需 为 一 个 NP 完 全 问 题 找 到 多 项 式 时 间 算 法 就 可 以 达 到 目
的 了。
在 实 践 方 面 ,NP 完 全 性 现 象 可 以 防 止 为 某 一 具 体 问 题 浪 费 时 间 去 寻 找 本 不 存 在 的 多
项 式 时 间 算 法 。虽 然 ,可 能 缺 乏 足 够 的 数 学 依 据 来 证 明 该 问 题 在 多 项 式 时 间 内 不 可 解 ,但
是 我 们 相 信 P 不 等 于 NP,所 以 ,证 明 一 个 问 题 是 NP 完 全 的 就 成 为 它 的 非 多 项 式 性 的 一
个 强 有 力 的 证 据。
给 出 的 第 一 个 NP 完 全 问 题 称 为 可 满 足 性 问 题 ( satisfiability problem )。 回 忆 一 下 ,
-
取 值 为 TRUE 和 FALSE 的 变 量 称 为 布 尔 变 量 ( Boolean variable ) ( 见 0.2 节 )。通 常 用 1
表 示 TRUE ,用 0 表 示 FALSE。 布 尔 运 算 ( Boolean operation ) AND , OR , NOT 分 别
表示为 A , V , 这 些 运 算 在 下 表 中 描 述 。用 上 横 线 作 为 符 号 的 缩 写 ,所 以 的意思
^
■
是 ' •To
'"
0 A 0=0 0 V 0 =0 0=1
0 A 1 =0 0 V 1 =1 1=0
1 A 0=0 1 V 0 =1
0 八 1 =1 1 V 1=1
布 尔 公 式 ( Boolean formula ) 是 包 含 布 尔 变 量 和 运 算 的 表 达 式 。例 如 ,
:
多 = O A y ) V ( x 八 艺)
是 一 个 布 尔 公 式 。如 果 对 变 量 的 某 个 0 , 1 赋 值 使 得 一 个 公 式 的 值 等 于 1 ,则 该 布 尔 公 式 是
可 满 足 的 (satisfiable )。 上 面 的 公 式 是 可 满 足 的 ,因 为 赋 值:r = 0 , )= 1 ,% = 0 使得多的
值 为 1。称 该 赋 值 满 足 #。可 满 足 性 问 题 (satisfiability problem ) 就 是 判 定 一 个 布 尔 公 式
是 否 是 可 满 足 的。令
S A T ={〈 p k 是 可 满 足 的 布 尔 公 式 }
现 在 表 述 一 个 把 SAT 问 题 的 复 杂 性 与 NP 中 所 有 问 题 的 复 杂 性 联 系 起 来 的 定 理 。
SATGP , 当 且 仅 当 P = NP。
下 面 叙 述 该 定 理 证 明 的 核 心 方 法。
7.4 . 1 多项式时间可归约性
在 第 5 章 中 ,定 义 了 把 一 个 问 题 归 约 到 另 一 个 问 题 的 概 念 。 当 问 题 A 归 约 到 问 题 B
时 ,B 的 解 就 可 以 用 来 求 解 A 。现 在 定 义 一 种 关 于 计 算 效 率 的 可 归 约 性 。当 问 题 A 有 效 地
归 约 到 问 题 B 时 ,B 的 有 效 解 就 可 以 用 来 有 效 地 求 解 A 。
—
若 存 在 多 项 式 时 间 图 灵 机 M,使 得 在 任 何 输 入 w 上 ,M 停 机 时 /( w )
恰 好 在 带 子 上 ,则 称 函 数 /:2 * 2 * 为 多 项 式 时 间 可 计 算 函 数 ( polynomial time computa -
ble function ) 0
190 第三部分复杂性理论
—^
ble ) 到 语 言 JB , 或 简 称 为 多 项 式 时 间 可 归 约 ( polynomial time reducible ) 到 J3 , 记 为
A<PB , 若 存 在 多 项 式 时 间 可 计 算 函 数 /:2 * 2 * ,对 于 每 一 个 X V , 有
A => f( v u )G B
函 数 / 称 为 A 到 B 的 多 项 式 时 间 归 约 ( polynomial time reduction ) 0
注意 ,步骤 2 在多项式时间内运行是因为两个多项式的合成还是多项式 。 親
在进一步说明多项式时间归约之前 ,先 介 绍 3S A T ,它 是 可 满 足 性 问 题 的 一 种 特 殊 情
况 ,因为其中所有公式都具有一种特殊形式 。文 字 ( literal ) 是 一 个 布 尔 变 量 或 布 尔 变 量
的非 ,如 x 或无 。子 句 ( clause ) 是由 V 连接起来的若干文字 ,如 (I〗 V 石 V 石 V 工4 )。一
'
^ ^
3 工5 工6 6
若所有子句都有三个文字 ,则 为 3cnf 公 式 ,如
~
M xT ) A ( ^3 V r 5 V 工6 ) A ( 工3 V 1 6 V 工4 ) 八 (工4 V 工5 V 工6 )
( xi M X2 •
它对应的彡中的文字做标记。 无2 x2
除两种情形以外 ,G 的边连接了所有的结点对。
:
同一个三元组内的结点无边相连 ,相反标记的两个
结点无边相连 ,如 x2 和 。例如当 # =(! :
〗 VA V
X2 ) A ( x i V ^ 2 V j:
*
2) A (xi V X2 V 工2 ) 时 ,图 7 - 7 表
示了这种构造 。
现在说明这种构造为何能发挥作用 ,证明必是
图 7- 7 归约从 V X! V X2 ) A
可满足的当且仅当 G 有々 团 。 - ( V X2 V X2 ) A ( x i V 0:
2 V X2 ) 生 成 的 图
假定彡有满足赋值 。在满足赋值下 ,每个子句
X[
…
量赋真值 ,使得标记团结点的每个文字都为真 。这可以办到 ,因为具有相反标记的两个结
点无边相连 ,所以不可能两个都在团中 。给变量的这种赋值满足 因为每个三元组包含
一个团结点 ,所以每个子句包含一个赋值为 TRUE 的文字 。 # 可满足 。 職
:
定 理 7.2 5 和 定 理 7.26 说明 ,如果 CJLJQl/f 在多项式时间内可解 ,那么 3SAT 也如
此 。乍一看 ,这两个问题之间的联系显得很不寻常 ,因为表面上它们是非常不同的 。但是
多项式时间可归约性允许把它们的复杂性联系起来 。现在转向一个定义 ,它允许用类似的
方式把一整类问题的复杂性联系起来 。
7.4 . 2 NP 完全性的定义
如 果 语 言 B 满 足 下 面 两 个 条 件 ,就 称 为 NP 完 全 的 ( NP complete ): -
1.B 属 于 NP,并 且
2. NP 中 的 每 个 A 都 多 项 式 时 间 可 归 约 到 B 。
若上述的 B 是 NP 完 全 的 ,且 B e p ,贝1J P = NPD
192 第三部分复杂性理论
证明从多项式时间可归约性的定义直接可得。
:
NP 完 全 的 ,且 6<〆 ,C 属 于 NP ,则 C 是 NP 完 全 的 。
若上述的 B 是
证 明 已 知 C 属 于 NP ,必 须 证 明 NP 中 每 一 个 A 都 多 项 式 时 间 可 归 约 到 C 。因 为 B
是 NP 完 全 的 ,所 以 NP 中 的 每 个 语 言 都 多 项 式 时 间 可 归 约 到 B ,而 B 又 多 项 式 时 间 可 归
_
约 到 C 。多 项 式 时 间 归 约 是 可 以 复 合 的 ,即 若 A 多 项 式 时 间 可 归 约 到 B ,且 C 多 项 式 时 间
可 归 约 到 B ,则 A 多 项 式 时 间 可 归 约 到 C 。因 此 NP 中 的 每 个 语 言 都 多 项 式 时 间 可 归 约 到
C。
7 . 4.3 库 克 -列 文 定 理
一 旦 有 了 一 个 NP 完 全 问 题 ,就 可 以 从 它 出 发 ,通 过 多 项 式 时 间 归 约 得 到 其 他 NP 完
全 问 题 。然 而 ,建 立 第 一 个 NP 完 全 问 题 更 加 困 难 。现 在 ,通 过 证 明 SAT 是 NP 完 全 的 来
完成这一 步 。 *
e
SAT 是 NP 完 全 的 。
该 定 理 以 另 一 种 形 式 描 述 了 定 理 7.22。
证 明 思 路 证 明 SAT 属 于 NP 是 简 单 的 ,下 面 很 快 就 要 证 明 它 。 证 明 的 难 点 是 要 证
NP 中 的 任 何 语 言 都 多 项 式 时 间 可 归 约 到 SAT。
为 此 ,给 NP 中 的 每 一 个 语 言 A 构 造 一 个 到 SAT 的 多 项 式 时 间 归 约 。 A 的 归 约 在 字
符 串 w 上 产 生 布 尔 公 式 # , 用 它 模 拟 A 的 NP 机 器 在 输 人 w 上 的 运 行 。 如 果 机 器 接 受 ,那
么必有一个满足赋值对应于接受计算 。 如 果 机 器 不 接 受 ,那 么 没 有 赋 值 能 满 足 厂 因 此 ,
当 且 仅 当 0 可 满 足 时 ,w 属 于 A 。
实 际 上 ,虽 然 必 须 处 理 很 多 细 节 ,但 是 构 造 一 个 以 这 种 方 式 运 算 的 归 约 在 概 念 上 是 简
单 的 。一 个 布 尔 公 式 可 以 包 含 布 尔 操 作 AND , OR 和 NOT,这 些 操 作 形 成 了 电 子 计 算 机
中 使 用 的 电 路 的 基 础 。因 此 ,可 以 设 计 布 尔 公 式 来 模 拟 图 灵 机 这 一 事 实 毫 不 令 人 奇 怪 。细
节 在 于 这 种 思 想 的 实 现 上。
证 明 首 先 ,证 明 SAT 属 于 NP。非确定型多项式时间机器可以猜测给定的公式必的
一 个 赋 值 ,当 赋 值 满 足 0 时 接 受 。
下 面 ,从 NP 中 任 取 一 个 语 言 A ,证 明 A 多 项 式 时 间 可 归 约 到 SA 7\ 设 iV 是 在 时 间
W 内 判 定 A 的 非 确 定 型 图 灵 机 ,6 是 某 个 常 数。( 为 了 方 便 ,实 际 上 假 定 iV 在 时 间 W — 3
内 运 行 ,但 只 有 那 些 对 细 节 感 兴 趣 的 读 者 可 能 会 担 心 这 个 次 要 的 地 方 。) 下面的概念有助
于 描 述 该 归 约。
在 w 上 ,iV 的 对 应 画 面 (tableau ) 是 一 张 V XV 的 表 格 ,其 中 行 代 表 N 在 输 入 it,
-
上 的 一 个 计 算 分 支 的 格 局 ,如 图 7 8 所 示 。
为 了 方 便 ,以 后 假 定 每 一 个 格 局 都 以 符 号 # 开 始 和 结 束 ,这 样 画 面 的 第 一 列 和 最 后 一
列 都 是 # 号。画 面 的 第 一 行 是 N 在 w 上 的 起 始 格 局 ,每 一 行 都 根 据 iV 的 转 移 函 数 从 上 一
行 得 到 。如 果 画 面 的 某 一 行 是 接 受 格 局 ,则 称 该 画 面 为 接 受 的 (accepting )。
以 在 切 上 的 每 一 接 受 画 面 对 应 iV 在 w 上 的 一 个 计 算 分 支 。 所 以 判 定 iV 是 否 接 受 w
的 问 题 等 价 于 判 定 是 否 存 在 N 在 W 上 的 接 受 画 面 的 问 题。
该定理的另一种证明出现在 9.3 节 。
襄尸章时间复杂性 193
% w2 ... 起始格 M
第二个格局
窗口
第 M 个格局
图7 8 - 对 应 画 面 是 的 格 局 表
-
(V
)2 个画面格子中的每一格称为一个单元 (cell )。第 行第 j 列的单元称为 cell[w ],
并且包含 C 中的一个符号 。 用 0 的变量表示单元中的内容 。 若 7,s 取值 1 ,则意味着
cell[z ,>] 包含 s。
现在设计彡,使得变量的一个满足赋值确实对应 N 在 w 上的一个接受画面 。公式多
是四部分的 AND 运算 :# cell A《Start A move A j>accept 依次描述每一部分。
^
如前面所述 ,开启变量:r ,,,,,对应于把符号 s 放进 cell[D]。 为了获得在赋值与画面
>
^C S
^C
sU : “
符号 A 和 V 代表反复出现的 AND 和 OR 。例如 ,上面公式中的一部分
V 工 i ,j ,s
sec
是下式的缩写:
工 O C i,
j,s2 H 工i ,
j
S2 ,
其中 C = { si , …,5/ }。因此 , 实际上是一个长的表达式 ,它为画面中的每个单元包
-
含一个片段 ,因为纟和)从 1 变到 V 。每一片段的第 1 部分称在相应单元中至少一个变量
被开启 。每一片段的第 2 部分称在相应单元中至多一个变量被开启 ( 照字面意思就是说 ,
每一对变量中至少有一个被关闭 )。这些片段由 A 运算连接起来 。
&eU 在方括号中的第 1 部分规定 ,至少有一个与每个单元相关联的变量开启 ;而第 2
部分规定 ,对每个单元只有一个变量开启 。 满足彡 (从而也满足彡。 ) 的任何变量赋值必
定使得对每个单元恰好开启一个变量 。 于是 ,任何满足赋值都给表中的每个单元指定了一
个符号 。 ,fnove 和 eeept 等部分保证该表格确实是一个接受画面 ,如下 。 ^
公式一urn 保证表的第一行是 N 在 W 上的起始格局 ,它明确规定相应的变量是开启的:
= 工1 ,1 ,林 A 3Tl ,2 ,go A 工1 ,
3, A 工1,4 , 2 A ••• A 工 l ,n+2 , >n
^
* 《 U> tt
/\ 工 I l
_八 A 工l,
n* —1,l_l A 工l ,*
n ,林
194 第三部分复杂性理论
必accept — V
^
i , j ,q
-
子如图 7 9 所示 。
( a) (b) (c)
致 更 新 。 因 此 ,如 果 上 格 局 是 合 法 格 局 ,那 么 下 格 局 也 是 ,并 且 下 格 局 是 根 据 N 的 规 则
从 上 格 局 转 移 得 到 。 注 意 ,这 个 证 明 显 然 易 懂 ,但 它 的 关 键 依 赖 于 选 择 了 大 小 为 2 X 3 的
窗 口 ,如 问 题 7.2 6 所 说 明 的 。
现在转向 fnove 的 构 造 ,它 规 定 画 面 中 的 所 有 窗 口 都 是 合 法 的 。 每 个 窗 口 包 含 6 个 单
元 ,它 们 可 以 用 固 定 数 目 的 方 式 设 置 为 合 法 窗 口 。公 式 0 指 出 ,这 6 个 单 元 的 设 置 必 mQVe
须 是 这 几 种 方 式 之 一 ,即
A -
_ move (( D ) 窗 口 是 合 法 的 )
i< n A< j<n
^ \
)窗口顶部居中位置的是单元 [ , ] -
^_
位 于 (/ ,
) Z > 0 把 这 个 公 式 中 的 文 字 “( ) 窗口是合法
的” 替 换 为 下 面 的 公 式 ,把 窗 口 的 6 个 单 元 的 内 容 写 为 ,
…,叫
V ( 工 )- l , a
“
A ,a
2
A ,a
3
A 00i -\- J , j — l ,a 4 A \ , j ,a. 八 / + 1,
1,•
a6 )
是一个合法窗口
-
下 面 分 析 归 约 的 复 杂 性 ,证 明 它 在 多 项 式 时 间 内 完 成。为 此 考 察 的 大 小。首 先 ,估
^
计 一 下 它 的 变 量 的 数 目 。回 忆 一 下 ,画 面 是 一 个 表 格 ,所 以 它 包 含 〃
72 个 单 元 。每
个 单 元 有 与 它 相 关 联 的 Z 个 变 量 ,/ 是 C 中 符 号 的 数 目 。因 为 / 只 依 赖 于 图 灵 机 N ,而 不
依 赖 于 输 入 的 长 度〃,所 以 变 量 总 数 是 0( rz 2 M 。
估计一下彡的每个部分的大小。对 画 面 的 每 个 单 元 ,公 式 &ell 包 含 固 定 长 度 的 公 式 片
段 ,所 以 长 度 为 ou2& )。公 式 一tart 对 顶 行 的 每 个 单 元 包 含 一 个 片 段 ,所 以 长 度 为 o( v )。
公 式 釦。 和 cxept 对 画 面 的 每 个 单 元 包 含 固 定 长 度 的 公 式 片 段 , 所 以 它 们 的 长 度 为
%
Oin2 k ) 于 是 ,0 的 总 长 为 0(〃
0
〃)。该 结 果 完 全 符 合 目 标 ,因 为 它 说 明 # 的 长 度 是 /2 的 多
项 式 。如 果 长 度 超 过 了 多 项 式 关 系 ,那 么 该 归 约 将 不 可 能 在 多 项 式 时 间 内 生 成 它。( 实 际
上 我 们 少 估 了 一 个 CKlogn ) 因 子 ,因 为 每 个 变 量 的 下 标 可 以 达 到 V ,要 把 它 们 写 进 公 式
可 能 需 要 O( logn ) 个 符 号 。 但 是 这 个 外 加 的 因 子 不 改 变 结 果 的 多 项 式 特 性 。
)
为 看 出 能 在 多 项 式 时 间 内 生 成 该 公 式 ,注 意 它 的 高 度 重 复 性 。公 式 的 每 一 部 分 由 许 多
几 乎 相 同 的 片 段 组 成 ,只 是 在 下 标 上 有 简 单 的 变 化 。因 此 可 以 容 易 地 构 造 一 个 归 约 ,在 多
项式时间内从输人 w 生 成 0。 ■
这 样 就 完 成 了 库 克-列 文 定 理 的 证 明 ,证 明 SAT 是 NP 完 全 的 。 证 明 其 他 语 言 的 NP
完 全 性 通 常 不 需 要 这 样 长 的 证 明 。 NP 完 全 性 还 可 以 通 过 从 一 个 已 知 为 NP 完 全 的 语 言 出
发 的 多 项 式 时 间 归 约 来 证 明 。为 此 可 以 用 SAT,但 是 用 3SAT ( 即 在 定 理 7.2 6 之 前 定 义
的 SAT 的 特 殊 情 况 ) 通 常 更 加 容 易 。回 忆 一 下 ,3SAT 的 公 式 是 合 取 范 式 形 式 的 ,每 个
子 句 有 三 个 文 字 。首 先 ,必 须 证 明 3SAT 自 己 是 NP 完 全 的 。把 它 作 为 定 理 7 . 3 0 的 推 论
来 证 明。
⑹微册4 3SAT 是 NP 完全的。
证 明 显 然 3SA 丁 属 于 NP ,所 以 只 需 证 明 NP 中 的 所 有 语 言 都 在 多 项 式 时 间 内 归 约
到 3SAT。 为 证 明 这 一 点 ,一 种 方 法 是 证 明 SAT 多 项 式 时 间 归 约 到 3 SAT。这 里 改 用 另 一
种 方 法 ,修 改 定 理 7.3 0 的 证 明 ,使 得 它 直 接 产 生 每 个 子 句 有 三 个 文 字 的 合 取 范 式 形 式 的
公 式。
定 理 7.3 0 产 生 的 公 式 已 经 几 乎 是 合 取 范 式 形 式 的 了。公 式
每 个 子 公 式 包 含 一 个 大 析 取 以 及 析 取 的 大 合 取。因 此 、 &ell 是 子 公 式 的 大 合 取 ,
ell 是 子 句 的 合 取 ,已 经 是 cnf 形 式
196 第三部分复杂性理论
公式的长度只依赖于 iV。结果是合取范式形式的公式 。
现在已经把公式写成 cnf 形式了 ,再把它转化为每个子句拥有三个文字的形式 。在当
前拥有一个或两个文字的子句中 ,复制其中一个文字 ,使得文字总数达到 3。 在拥有超过
3 个文字的子句中 ,把它分裂为几个子句 ,额外添加一些变量来保持原公式的可满足性或
不可满足性 。
例如 ,把子句 ( V Vq ) ( 其中每个 a: 是一个文字 ) 替换为两个子句的表达
V
(
^^^
式 ( 2iV 22 V 20 A O V a 3 V a 4 ),其中 Z 是新变元 。 如果 h 的某种赋值满足原来的子句 ,
<
7.5 几 个 NP 完全问题
NP 完全性现象是很广泛的 ,众多领域中都有 NP 完全问题 。由于某些没有被深人认
识的原因 ,多数自然出现的 NP 问题不是 P 类就是 NP 完全的 。如果在为一个新的 NP 问
题寻找多项式时间算法 ,付出部分精力尝试证明它是 NP 完全的是一种明智的做法 ,因为
这样可以防止去寻找一个并不存在的多项式时间算法 。
本节再给出几个定理 ,证明几个不同的语言是 NP 完全的 。这些定理为同类问题的证
明技巧提供了示例 。一般策略是给出从 3SAT 到该语言的多项式时间归约 ,如果更加方便
的话 ,有时也从其他 NP 完全语言归约。
在构造从 3SAT 到一个语言的多项式时间归约时 ,我们寻找这个语言中能模拟布尔公
式的变量和子句的结构 ,这种结构有时称为构件 (gadget )。 例如 ,在定理 7.26 中给岀的
:
从 3SAT 到 CLJQl/f 的归约中 ,结点模拟变量 ,结点的三元组模拟子句。一个具体的结
点可以是也可以不是团的成员 ,这对应于一个变量在满足赋值中可以是真 ,也可以不是
真 。每个子句必须包含赋值为真的文字 。相应地 ,每个三元组必须包含团的一个结点 (团
要达到规定的大小)。下面是定理 7.26 的推论 ,说明 CLJQ17E 是 NP 完全的 。
CLIQUE A NP 完全的。
7.5. 1 顶点覆盖问题
若 G 是无向图 ,则 G 的顶点覆盖 ( vertex cover ) 是结点的一个子集 ,使得 G 的每条边-
都与子集中的结点之一相关联。顶点覆盖问题旨在确定图中是否存在指定规模的顶点覆盖 :
第 7章 时 间 复 杂 性 197
{ G,
VEi? TEX-COVEi? = 〈 々〉| G 是 具 有 々 个 结 点 的 顶 点 覆 盖 的 无 向 图 }
VERTEX -COVER 是 NP 完全的 。
^
证 明 思 路 要 证 明 Vf TEX- COVEi? 是 NP 完全的 ,必须证明它属于 NP 且 NP 中的
所有问题都能多项式时间归约到它 。 第 一 部 分 较 容 易 :证 书 就 是 一 个 规 模 为 々 的 顶 点 覆
盖 。通 过 证 明 3SAT 多 项 式 时 间 可 归 约 到 VERTEX-COVER 来 证 明 第 二 部 分 。 该 归 约 将
# 转换为一个图 G 和数值々,且 只 要 G 中有々个结点的顶点覆盖 ,0 就 能 够
一 个 3 cnf 公 式
被满足 。 转换是在不知道 0 能否被满足的情况下完成的 。 实际上 ,G 模拟了彡。该 图 包 含
着构件 、 模拟公式中的变量和子句 。 设计这些构件需要一点独出心裁的巧思 。
对于变量构件 ,在 G 中寻找一种结构 ,它以两种可能的方式之一参与到顶点覆盖中 ,
正好对应变量的两种可能的真实赋值 。变量构件包含两个被一条边连接的结点 。 这种结构
之 所 以 有 效 是 因 为 两 个 结 点 之 一 一 定 会 出 现 在 顶 点 覆 盖 中。 任 意 地 将 两 个 结 点 分 别 与
TRUE 和 FALSE 关联起来 。
对 于 子 句 构 件 ,要 寻 找 这 样 的 结 构 :它 使 得 顶 点 覆 盖 所 包 含 的 变 量 构 件 结 点 中 ,
至 少 有 一 个 结 点 对 应 着 该 子 句 中 至 少 一 个 取 值 为 真 的 文 字 。这 个 构 件 包 含 三 个 结 点 及
它们相连的边 ,这 样 任 何 一 个 顶 点 覆 盖 都 一 定 会 包 含 它 的 至 少 两 个 结 点 ,或 者 是 全 部
三 个 结 点 。 如果构件结点中的一个只是有助于覆盖仅仅一条边 ,则 顶 点 覆 盖 中 只 需 包
括 另 外 两 个 结 点 ,也 就 是 对 应 的 文 字 满 足 了 该 子 句 的 情 况 。 否 则 , 三 个 结 点 都 必 须 覆
盖 。 最 后 ,选择丨值使得找到的顶点覆盖一个结点对应一个变量构件 ,两 个 结 点 对 应
一个子句构件 。
: :- :
证 明 这 里 给 出 一 个 从 3SAT 到 Vf i? Tf X COVf R 的在多项式时间内运算的归约的
细节内容 ,该归约把布尔公式 # 映射为一个图 G 和值々。对于彡中的每个变量 x ,产生一
条连接着两个结点的边 。把这个构件中的两个结点标记为:r 和I。把:r 赋值为 TRUE 对应
于顶点覆盖选择该边的左结点 ,而赋值为 FALSE 对应于标记为无的结点 。
对应于子句的构件稍有点复杂 。每个子句的构件是用该子句的三个文字标记的结点组
成的三元组 。这三个结点互相连接 ,并且与变量构件中具有相同标记的结点相连接 。因 此
出 现 在 G 中的结点总数是 2 m + 3 Z ,其 中 # 有 m 个变量和 Z 个子句。令々等于 m + 2 Z。
例如 ,若 (f>= ( x\ Vxi V 工2 ) 八 ( xTV J F V A ( x T V n V A ),归约从必产生 〈G ,是 〉,
-
这里々= 8 , G 的形状如图 7 11 所 示 。
Xi A X2
_ ^
*2
2
^
图 7 11 归 约 从 必 =(:
Ci V 2:
* 1 Vl2 )八 八( TV T2 \/ 工2 )
* 产生的图
共 有 6 个 结 点 。它 们 覆 盖 所 有 边 ,因 为 显 然 每 个 变 量 构 件 的 边 被 覆 盖 了 ,在 每 个 子 句 构 件
中 的 所 有 三 条 边 也 被 覆 盖 了 ,所 有 介 于 变 量 构 件 和 子 句 构 件 之 间 的 边 也 被 覆 盖 了 。所 以 G
有 k 个 结 点 的 顶 点 覆 盖。
其 次 ,如 果 G 有 A 个 结 点 的 顶 点 覆 盖 ,通 过 构 造 满 足 赋 值 来 证 明 0 是 可 满 足 的 。为 了
覆 盖 变 量 构 件 的 边 和 子 句 构 件 的 三 条 边 ,顶 点 覆 盖 必 须 包 含 每 个 变 量 构 件 的 一 个 结 点 以 及
每 个 子 句 构 件 的 两 个 结 点 。这 就 占 用 了 全 部 顶 点 覆 盖 的 结 点 ,没 有 剩 余 的 份 额 。选 取 变 量
构 件 中 在 顶 点 覆 盖 中 的 结 点 ,把 相 应 的 文 字 赋 值 为 真 。这 个 赋 值 满 足 一 因 为 连 接 变 量 构
件 和 每 个 子 句 构 件 的 三 条 边 都 被 覆 盖 了 ,而 子 句 构 件 中 只 有 两 个 结 点 在 顶 点 覆 盖 中 ,所 以
其 中 一 条 边 必 定 被 变 量 构 件 中 的 一 个 结 点 覆 盖 ,因 此 赋 值 满 足 相 应 的 子 句。 ■
7 . 5.2 哈密顿路径问题
回 忆 一 下 ,哈 密 顿 路 径 问 题 是 问 输 入 图 是 否 包 含 从 5 到〖 恰 好 经 过 每 个 结 点 一 次 的
路 径。
是 NP 完 全 的 。
证 明 思 路 在 7.3 节 已 经 证 明 了 HAMPATH 属 于 NP 的 。 为 证 每 个 NP 问 题 多 项 式
时 间 可 归 约 到 HAMPATH ,我 们 证 明 3SAT 多 项 式 时 间 可 归 约 到 HAMPATH 。 给 出 一
种 方 法 ,把 3 cnf 公 式 转 化 为 图 ,使 得 图 中 的 哈 密 顿 路 径 对 应 于 公 式 的 满 足 赋 值 。图 中 包
含 模 拟 变 量 和 子 句 的 构 件 。变 量 构 件 是 一 个 钻 石 结 构 ,可 以 两 种 方 式 之 一 经 过 ,对 应 于 两
种 真 值 赋 值 。子 句 构 件 是 一 个 结 点 ,保 证 路 径 经 过 每 个 子 句 构 件 对 应 于 保 证 在 满 足 赋 值 中
每 个 子 句 都 被 满 足。
证明 前 面 已 经 证 明 H A M P A T H 属 于 NP , 还 需 要 做 的 就 是 证 明 3SA 丁
心H A M P A T H 对 于 每 个 3 cnf 公 式 一 我 们 说 明 怎 样 构 造 一 个 包 含 两 个 结 点 s 和 i 的 有
0
向 图 G ,使 得 s 和〖 之 间 存 在 哈 密 顿 路 径 当 且 仅 当 # 可 满 足 。
从 包 含 々 个 子 句 的 3 cnf 公式彡开始构造 :
^
必 = ( q V 心 V Q ) 八 U 2 V 62 V c2 ) 八 … 八 Q V Vck)
其 中 每 个 a ,6,c 是 文 字 Xi 或:Ci 。设 ,
…, 是 0 的 / 个 变 量 。
现在说明怎样把 # 转 化 为 图 G 。构 造 的 图 G 使 用 不 同 的 部 分 表 示 出 现 在 4 中的变量和
子 句。
把每个变量 A -
表 示 为 一 个 包 含 一 行 水 平 结 点 的 钻 石 形 结 构 ,如 图 7 1 2 所 示 。随 后 说 明
水 平 行 包 含 的 结 点 数。
把多的每个子句表示为单个结点 ,如 图 7 - 1 3 所 示 。
O Cj
-
图7 12 变 量:r, 表示为一个钻石形结构 图7 13 - ,
把 子 句 c 表示为结点
第 7章 时 间 复 杂 性 199
-
图 7 14 描绘了 G 的全局结构 。除了表示变量与子句 (它包含着这些变量) 关系的边没
有画出以外 ,它展示了 G 的所有元素及其相互关系。
下面说明怎样把代表变量的钻石与代表子句
的结点连接起来 。 每个钻石结构都包含一行水平
O
结点 ,它们由两个方向的边连接起来 。 在水平行
上除了钻石两端的两个结点以外 ,还包含 3 A + 1 O C2
个结点。这些结点被分成相邻的对 ,每个子句一 Oq
对 ,并且用另外的结点把这些结点对分隔开 ,如
-
图 7 15 所示 。
如果变量 A 岀现在子句 c,中 ,则把图 7 16 - O
所示两条从第 f 个钻石的第 )对结点到第 )个子
句结点的边添加进去 。
如果 I出现在子句 q 中 ,则把图 7 17 所示-
两条从第 i 个钻石的第 )对结点到第 )个子句结
点的边添加进去 。 _
^
把每一子句中出现的每个 或 7所对应的边 Xi
都添加进去以后 ,G 的构造就完成了。为了说明
这种构造满足要求 ,我们断言 ,如果彡是可满足
的 ,则从 s 到 〖 存在哈密顿路径 ;反之 ,如果存
^ 图 7- 1 4 G 的高层结构
在这样的路径 ,则 # 是可满足的。
zig-zag zag-zig
-
图 7 17 当 子 句 q 包含JT ,时添加的边 -
图 7 18 -
左 右式和右-左式通过钻石,由满足赋值决定
200 第三部分复杂性理论
必
定是 FALSE,该路径从右到左通过相应的钻石。所以连到结点 o 的边的次序正好也允许绕
行并返回。( 注意 ,子句中的每个真文字都给经过子句结点的绕行提供了一种选择。结果是 ,
如果子句中有几个文字为真 ,则只选取一条迂回路。
) 这样就构造好了所需的哈密顿路径 。
^
对于相反方向的证明 ,若 G 有一条从 s 到 〖 的哈密顿路径 ,给出一个 0 的满足赋值 。
若该哈密顿路径是正规的 ,即除了到子句结点的绕行以外 ,它从上到下依次通过每个钻
-
石 ,则容易获得满足赋值 。 若它以左 右式通过钻石 ,则把相应变量赋为 TRUE; 若是右 -
左式 ,则赋为 FALSE。因为每个子句结点都出现在路径上 ,通过观察经过它的迂回路线
的情况 ,可以确定相应的子句中哪个文字为 TRUE。
现在还需证明的就是哈密顿路径肯定是正规的 。违反正
规性的唯一途径是路径从一个钻石进入子句结点 ,却返回到
另一个钻石 ,如图 7 19 所示 。 -
路径从结点 到 c ,但是没有返回到同一钻石的化 ,而
^
是返回到不同钻石的心 。若是这样 ,则
隔结点 。如果 a 2 是分隔结点 ,则进人
^
或者幻必定是分
的边只能来自 和
a 3 。如果以是分隔结点 ,则
进入的边只能来自
径都不可能包含结点 a 2 。它不可能从 c 或
ci \
^ ^ ^
和化在同一子句对中 ,因此
az 和 c。 在这两种情况下 ,该路
进入心 ,因为
它从这两个结点出发通向别的地方去了。它也不可能从心
^
进人心 ,因为化是唯一仅存的化所瞄向的结点 ,它退出化后必须经过心 。所以哈密顿
路径一定是正规的 。该归约显然在多项式时间内运算 ,证毕 。
-
图 7 19 这种情况不可能发生
。
除了 s 和〖 以外 ,G 的每个结点 M 被替换为 G'的 三 个 结 点 , mid ,M°
的结点严t = / 和 沪 = 人
ut
。G 的结点 5 和 Z
" ^
被替换为 G 有两种类型的边 。首先有连接 wmid 与一以及 《 与
ut
的 边 ,则 与
w°的边 。其次 ,如果 G 中有从 w 到 I; t/n 有边相连 。这就完成了 的构造 。
通过证明 G 有 从 6 到 的 哈 密 顿 路 径 当 且 仅 当 0'有 从 到 沪 的 哈 密 顿 路 径 ,可 以 说
明这种构造满足要求 。为证明一个方向 ,注意到 G 中的哈密顿路径 P
S j U\ j ll2 J ••• ,
Uk yt
在 G 中有一条对应的哈密顿路径 p : /
第 7章 时 间 复 杂 性 201
M; ,
mid
M i ,U 2 ,
in mid
…,
, out
Mlin ,
out
5out ,
M2 t
为证明另一个方向 ,我们断言以中的任何从到沪的哈密顿路径都如同刚刚描述的
路径〆那样 ,必定是从结点的一个三元组通向另一个三元组 ,起始与结束的地方除外 。
这就将完成本证明 ,因为这样的路径在 G 中都有对应的哈密顿路径 。通过从结点 Put 出发 ,
跟踪该路径来证明本断言 。注意到路径上的下一个结点必定是 # ( 对某个 0 ,因为只有那
些结点与 S° Ut
相连 。再下一个结点必定是 Olid ,因为在哈密顿路径中 ,其他方式都不能包括
rd 。在 mid 以后是 WUt ,因为这是连接到的另一个唯一的结点。再下一个结点必定是
UT ),因为没有别的结点可以连接到 w?ut 。重复这种推理直到到达严为止。
( 对某个 ) ■
7 . 5. 3 子集和问题
回忆定理 7.21 中定义的 SUBSET SUM 问题 。在该问题中 ,有一个数集 - ,••• , X k 和 X\
^ ^
%
起在满足赋值中 A 的真值的编码 。
每个子句位置包含目标〖 中的某一值 ,这就对子集了提出一定的要求 。证明这种要求
与相应子句中的要求是一致的 ,即要求该子句的文字 1 2 3 4 ck
yi 1 0 0 0 0 0 0
之一赋值为 TRUE。 0 0
1 0 0 0 0 0
-
证 明 已 知 Sl7BS£T SL/M e N P ,所以现在来证
^
1 0 0 0 0 0
1 0 0 0 0 0
-
^
明 SSAT SLTBSET SUM 。 少3 1 0 0 0
Z3 1 0 0 0 0
设必是一个布尔公式 ,其变量是 :
n ,… , ,子句
是
"
C 。归 约 把 # 转 化 为 SUBSET-St/M 问题的
一个实例 ( S ,
••• j C k
t ),其中 S 的元素和数 是图 7 - 20 中以
通常的十进制记法表示的行 。双线上面的行标记为
〖 ^ h
A
y, 0
0
0
0
0
0
0
0
h 0 0
:y 2 ,2 , , 2:
:y/ , gl ,
/ll ,
g2 ,2 ,
…, ,
^
:yi ,
之i , /和••• h 0
^
之
2
^
和 这 些 数 的 十 进 制 表 示 分 为 两 部 分 ,如 图 7 2 0 所 - gk
K
示 。 左边部分由 1 和随后的 Z —〖 个 0 组成 。右边部分 3 3 3
对应于每个子句有一位数字 ,当子句 q 包 含 文 字 时 图 7 - 20 从 3SA 丁 到
yi c 包 含 文 字A 时 q 在 q 列 为
在 q 列 为 1; 当 子 句 ; SUBSET- SUM 的 归 约
202 第三部分复杂性理论
1 。 未指明为 1 的位都是 0 。
-
图 7 20 根据样例子句 Cl ,C 2 和 填写了一部分 :
另外 ,s 对于每个子句 C,包含一对数 A ,
( XI
^
V 石 Vx3 ) A ( X2 V :
C3 V …)八 … 八(石 V … V …)
这 两 个 数 相 等 ,由 1 和 随 后 的
^
■
一)个 0
组 成。
最后 ,目标数〖 ( 即表的底行) 由 z 个 1 和随后的々个 3 组成。
接下来 ,说明这种构造为什么能满足要求 ,证明 # 可满足当且仅当 s 的某个子集加起
来等于
“ 4 可满足 ,如下构造 S 的子集 。在满足赋值中 ,如果:, 赋值 TRUE,则选择 %;
假设 T
练习
7.1 下面各项是真是假?
a. 2 n = Oin') b. n2 = 0 ( n )
Ac. n 2
= Oin\ og 2 n) Ad. n\ogn = 0 ( n2 )
n
e. 3 n = 20( n) f . 22 = 0( 22”)
7.2 下面各项是真是假?
a. n = o ( 2 n ) b. 2 n = o ( nz )
Ac. 271 = 0 ( 3 Ad. l = o( w )
”
e. 72 = o ( logw ) f . l = o( l / n )
7.3 下面哪一对数是互素的? 写出求得结论的演算过程 。
a. 1274 和 10 505 b. 7289 和 8029
baba 和下面的文法 CFG G ,试填写定理 7.14 中识别上下文无关语言的多项式时间
—
7.4 对于字符串
算法中所描绘的表 :
S RT
R-* TR
| a
T -^ TR|b
第 /章 时 间 复 杂 性 203
7.5 下面的公式是可满足的吗?
i x \J y) M x \J y ) M x \J y ) M x M y)
7.6 证 明 P 在并 、连接和补运算下封闭 。
7.7 证 明 NP 在并和连接运算下封闭 。
7.8 : ::
令 C OiViV £ CT£ D = 〈 |G 是连通的无向图 }。分析 3.3.2 节给出的算法 ,证明此语言属于 P。
{ G〉
7.9 无向图中的三角形 ( triangle ) 是一个 3 团 。证明
- :
n? JANGLf:
e P,其中 T尺 MiVGL£=〈
{ G >丨G
包含一个三角形 }。
7.1 0 证明 ALLDFA 属于 P。
7.11 分析你的算法的时间复杂度 。
a. 证明 EQDFA P。
b. 对语言 A ,如果 A = A * ,则称 A 是星闭的 (star- dosed )。给出测试一个 DFA 是否识别一个
星闭的语言的多项式时间算法 。(注意 :EQNFA 属于 P 并未知晓 。
)
7.12 若 图 G 的结点重新排序后 ,G 可以变得与 H 完全相同 ,则称 G 与 H 是同构的 (isomorphic)。令
〈6,
/5 0={ 付|> 6和 H 是同构的图 }。 证明 JSOGNP。
问题
.
^
*
7 13 这 是 个 研 究 化 简 ( resolution ) 的问题 。化简是证明 cnf 公式不可满足性的一种方法 。 令 0 =( 八
C2 八… ACm 是一个 cnf 公式 ,C: 是其子句 。令 C = { Ci|C, 是多的子句丨。每一步化简都在 C 中
取两个子句 Ca* C6 , 它们有相同的变量:r ,在一个子句中为 ,另一个中为无。例如 Ca = (:rV X
y d y 2 \/ y k m C b = h\J Z l \J z 2 \J … \J Zl ),其中 :
y 和 都 是 文 字 。我 们 构 成 一 个 新 的 子 句
:
(% V:
y 2 V … V W V Q V z 2 V … V A ) 并去掉重复的文字 。 将新的子句添加进 C 中 。重复化简步
骤 ,直到不再有新的子句产生 。如果 C 中有空子句 (),则说明 # 是不可满足的 。
如果该化简方法不会将可满足的公式误判为不可满足的 ,则称其为正确的 ( sound )。如果
该化简方法一定会将不可满足的公式判为不可满足的 ,则称其为完备的 (complete )。
a. 证明该化简方法是正确且完备的。
b. 使用 (a ) 部 分 证 明 2SA 丁6 P。
7.14 证 明 P 在同态下封闭当且仅当 P = NP。
^7 . 1 5
*
设 AG 1 * 是任意一元语言 。证明 :若 A 是 NP 完全的 ,那么 P = NP。(提示 :考虑从 SAT 到 A
的多项式时间归约 /。对公式一令和loo 为 将 # 中 变 量 X\ , X 2 * X3 和 x4 分 别 置 为 0 ,1,0 和 0
后的归约公式 。 对指数多个归约公式运用 / 会发生怎样的情况 ?
)
7.16 在有向图中 ,一个结点的入度 ( indegree ) 为所有射人边的总数 ,出度 ( outdegree ) 为 所 有 射 出 边
的总数。证明如下问题是 NP 完全的 。给定一个无向图 G 和一个 G 结点的子集 C,是否可以通过给
G 的每条边赋予方向 ,将 G 转换为一个有向图并且满足属于 C 的结点的人度或出度为 0 , 不属于 C
的结点的人度至少为 1?
7.17 如果一个正则表达式不含 * 运算 ,则称为无 * 的 (star- free)。令 EQSF_ REX = { < 尺 ,
S〉|尺和 S 是等
价的无 * 正则表达式 }。证明 EQSF- REX 在 coNP 中 。为何这个证明不能用于通常的正则表达式?
.
7 18 差层次 ( difference hierarchy) D, P 递归定义如下:
a.D】 P = NP。
—
是 DP 完全的 。
*
7.2 0 令 /: N N 为任意 /( w )= 0( 7z logrz ) 的函数 。证明 TIME( /( TO ) 中只含有正则语言。
7.21 如果两个布尔公式有相同的变 M 集且有同样的满足赋值集 ( 就是说它们描述了同样的布尔功
能 ),则称它们等价 (equivalent)。最小布尔公式是指没有比它更短的等价公式 。 令 MIN FOR - -
-
MLTLA 是最新布尔公式集 。证明 :如果 P = NP , 则 MJN FO尺 ML7LA 6 P。
7.22 修改定理 7.14 的证明中识别上下文无关语言的算法 ,给出一个多项式时间算法 ,使它在输入一
个字符串和一个 CFG 时 ,若该文法生成该字符串 ,则它能产生该字符串的语法分析树 。
7.23 对于一个含有 m 个变量及 c 个子句的 cnf 公式 ,证明可在多项式时间内构造一个有 O ( cm ) 个状
态的 NFA ,它接受所有用长度为 m 的布尔串表示的不满足赋值 。 得出结论 : 最小化 NFA 的问
题无法在多项式时间内解决 ,除非 P = NP。
2cnf 公式是子句的 AND , 其中每个子句是至多两个文字的 OR。 令 2SAT= {〈 0〉
^
*
7.24 丨 是可满足的
2cnf 公式 }。证明 2SAT 6 P。
*
7.25 考虑下面的算法 MJiVJMLZE,以 D F A M 为输人 ,输出 DFAiVT:
MINIMIZE “对输入〈 M〉,其中旭=( 0,2 ,
占, : 。
八) 是 DFA:
9 ,
^
1. 把 M 的从起始状态出发不可达的状态全部删除 。
2. 以 M 的状态为结点 ,构造下面的无向图 G。
3. 在 G 中的每一个接受状态和每一个非接受状态之间连一条边 。另外如下添加补充的边 。
4. 反复执行下面的步骤 ,直到 G 中无新边加入为止 :
5. 对于 M 中每一对不同的状态 g 和 r 以及每一个 a 6 2:
6.
7. 对于每个状态
.
如果 (扒
…… 幻 ,dir,a )) 是 G 的一条边 ,就把边
令 [g] 代表状态的集合 :[d ={ rGQk 和 r 在 G 中无边相连 }。
/ =(0M〆,glA'), 其 中
r) 加人 G 中 。
(若 M =[r], 则 V 中只
8 形成一个新的 DFAA
保留其中一个 );对每个 ?6 Q 和 斤 2 有 y( M ,
^
( a )]; 9 o =[90 ]» A'={[9]k 6 A }。
a )=[ , (
9. 输出〈iVT > 。
”
a. 证明 M 与 iVT 等价 。
b. 证明 M'极小 ,即没有更少状态的 DFA 能识别同样的语言。可以无须证明就使用问题 1.48 的
结果 。
c. 证 明 在 多 项 式 时 间 内 运 行 。
7.26 -
在库克 列文定理的证明中 ,定义窗口为单元的 2 X 3 矩形 。 说明如果换用 2 X 2 的窗口 ,为什么
会使证明失效 。
.
7 27 这个问题来源于单人游戏 “扫雷”,并归结到图 。令 G 是一个无向图 ,它的每个结点要么有一个
隐藏的雷 ,要么是空的 。游戏者一个一个地选择结点 。如果游戏者选择了有雷的结点 ,则失败 。
如果选择了一个空结点 ,则可以知道该结点的相邻结点中共有多少雷。( 相邻结点即同该结点有
) 如果所有的空结点都被选中了,则游戏者获胜 。
边相连接的结点。
水 (地 ) 雷相连问题是一个图 ,图中的有些结点上标记了数字 。标记了数字 m 的结点 I;表
示它的相邻结点中有 m 个有雷 ,我们可以据此判定其他结点中是否有雷 。 将此问题形式化为一
个语言 ,并证明它是 NP 完全的 。
_
A7 .28 在宝石游戏中 ,有一个 mXw 格的棋盘 。在它的 m2 个格子中 ,每个位置要么放蓝色棋子 ,要么
放红色棋子 ,要么什么也不放 。通过去掉棋子使得每一列都只有一种颜色的棋子,每一行都至
少有一个棋子 ,达到此目标则获胜 。是否能够获胜取决于初始布局。令 SOLrTA 伙E = {〈 G|
〉G
:为 NP 完全的。
^
为可获胜的游戏布局 }。证明 SOLJTAJi
7.29 :- /了77从;{ 5 ,0 0= {(: (:
, , * } 是由 S 的某些子集组成的集
^
令 5 丁 5/ =〈 |5 是一个有穷集 , 1 "
合 ,纟
〉 0 , 使得 S 的元素可以被染为红色或蓝色 ,而且对所有 C,,C: 中的元素不会被染成同一
-
种颜色 }。证明 SET SFLrmiVG 是 NP 完全的 。
襄尸章时间复杂性 205
-
通 过 从 问 题 归 约 到 此 问 题 来 证 明 它 是 NP 完全的 。
*
7.33 证明下述问题是 NP 完 全 的 。 设 有 状 态 集 以 及 配 对 组 合 集 {( 5 1 ,n ), ,
( sk ,r k )}, 1 } 上的不重复的字串 ,r, 是 Q 的成员 (可以重复)。 判定是否存在
其中 & 是 2 = { 0 ,
一个 DFAAf =( Q,
HgQ , F),对每个 ; 5,)= r:。这 里 狖 5 ) 是 M 在状态 g 读取字
都有 3( % ,
串 后进入的状态 。(注意 F 在这里是不相关的 。
)
7.34
^
令 L7 = 〈
{ M, # 0 | 非确定型图灵机 M 在至少一个分支上在〖 步内接受输入:r }。 注意并不要求
:r ,
M 在所有分支上停机。证明 LT 是 NP 完全的 。
*
7 . 3 5 证 明 :g P = NP ,则任给布尔公式卜若 0 是可满足的 ,则存在多项式时间算法给出一个必的
满足赋值 。( 注意 :要求提供的算法计算一个函数而非若干函数 ,除非是 NP 包含的语言。P =
NP 的假定说明 SAT 在 P 中 ,所以其可满足性的验证是多项式时间可解的 。 但是这个假设没有
说明这项验证如何进行 ,而且验证不能给出满足赋值 。 必须证明它们一定能够被找到 。提示 :
重复地使用可满足性验证器一位一位地找出满足赋值 。 )
*
7.3 6 证 明 :g P = NP,则可以在多项式时间内将整数因子分解 。(参见问题 7.35 的提示 。 )
A# 7.3 7 证 明 :g P = NP ,则可以在多项式时间内找出无向图中的最大团 。(参见问题 7.35 的提示 。 )
7.38 图 的 一 个 着 色 ( coloring ) 是给结点指定颜色 ,使得相邻的结点不会被指定为同一种颜色 。 令
{ G〉
3 COLOi? = 〈 |G 的结点被三种颜色着色 }
证明 3 COLO尺是 NP 完全的 。( 提 示 :利用下面三个子图 。
)
调色板
o o
~~
变量
0
OR 构件
7.39 有一个盒子和一些卡片,如下图所示。盒子里有栓塞,卡片上有凹口 ,所以每张卡片可以两种方式
放人盒子中 。每张卡片上有两排孔 ,有些孔没有打穿。把所有卡片放进盒子,使得盒子的底被完全
覆盖 (即,每个孔的位置都被至少一张在该位置上无孔的卡片堵住),则谜题就算破解了。令
…,
, 丨每个代表一张卡片,
Q〉 并且这个卡片集有解 }
证明 PL7ZZLE 是 NP 完全的 。
盒子 卡片
一种方式另一种方式
栓塞之 凹口
孔
C.
206 第三部分复杂性理论
7.40 令
/> > 4 ,6 ,0 户 是 二 进 制 整 数 ,
6<, p )}
^^
] 00 尸= {
〈 使 得 a6 =c( mod
证 明 MODE兄P 6 P。( 注 意 ,最 明 显 的 算 法 不 在 多 项 式 时 间 内 运 行 。提 示 : 先 试 证 6 是 2 的 幂 的
情 况。
)
7.41 集 合 { 1,… ,々} 上 的 一 个 置 换 ( permutation ) 是 一 个 在 这 个 集 合 上 的 一 对 一 的 映 射 函 数 。令 p
为 一 个 置 换 ,〆轰示 P 自 身 的 次 复 合 。 令
PE尺 = = p 和g …,
为 { 1, 々} 上 的 置 换 是 二 进 制 整 数 }
证 明 ( 注 意 ,最 明 显 的 算 法 不 在 多 项 式 时 间 内 运 行 。提 示 : 先 试 证 ?是 2
的 幂 的 情 况。
)
.
7 42 证 明 P 在 星 号 运 算 下 封 闭 。( 提 示 :使 用 动 态 规 划 。 对 于 任 意 的 AGP,对 输 入: 其
中 建 一 个 表 ,表 示 对 于 每 个 是 否 有 子 串 % … 。
)
A7 .4 3 证 明 NP 在 星 号 运 算 下 封 闭 。
7.44 令 LWA尺 Y- SSLTM 是 所 有 数 用 一 进 制 表 示 的 子 集 和 问 题 。 为 什 么 SUBSET- SLTM 的 NP 完 全 性
-
y SSL/MG P。
^
的 证 明 不 能 用 来 证 明 UNARY- SSUM 是 NP 完 全 的 ? 求 证 L/iVAi
.
7 45 证 明 若 P = NP ,则 除 了 语 言 A = 0 和 A = 以 外 ,所 有 语 言 AGP 都 是 NP 完 全 的 。
7.46
_ 1 阶 循 环 群 当 且 仅 当 A 是 素 数 。 可 以 利 用 这 一 事 实 ,Zp无 须= 证U明 。与现
证 明 PWAffiS ={ m|m 是 二 进 制 表 示 的 素 数 } 6 NP。(提 示 : 对 于 />>1 ,乘 法 群 *
*
|:r
户 互 素 ,且 是 />
在 已 知 为 真 ,但 其 证 明 更 难 。
)
7.47
7.48
— G 表 示 无PATH
设
般认为
向图,
不 是 NP 完 全 的 ,请 说 明 原 因 。证 明 如 果 PATH 不 是 NP 完 全 的 ,贝lj P尹 NP。
令
SPA 7 7/ ={〈 G ,
a,6 ,々〉| G 包 含 从 a 到 6 、长 度 至 多 为 々 的 简 单 路 径 }
以及
UM 7 7f = {〈 G,a,6,々〉| G 包 含 从 a 到 6 、长 度 至 少 为 々 的 简 单 路 径 }
a. 证 明 SPA 丁H 6 P。
b. 证 明 是 NP 完 全 的 。
.
7 49 令 DOUBLE- SAT = { < 01 # 至 少 有 两 个 满 足 赋 值 }。证 明 DOUBLE- SAT 是 NP 完 全 的 。
A 7.50 令 HALF- CLJQL7E = 〈
{ G〉 |G 是 无 向 图 , 包 含 结 点 数 至 少 为 m/ 2 的 完 全 子 图 , m 是 G 的 结 点 数 }。
证 明 HALF-CLIQUE 是 NP 完 全 的 。
{ pk 是 一 个 可 满 足 的 cnf 公 式 ,其 中 每 个 变 量 最 多 出 现 在 々 个 位 置 }。
7.51 令 CiVFA = 〈
a. 证 明 CNF2 GP。
b. 证 明 CNF 3 是 NP 完 全 的 。
7.52 令 CNFU = { ( f ) |0 是 一 个 可 满 足 的 cnf 公 式 ,其 中 每 个 子 句 包 含 任 意 多 个 文 字 ,但 最 多 只 有
一个文字的非 K 证明 CiVFH 6 P。
.
7 53 设 # 是 3cnf 公 式 。变 量 # 的尹一赋值 ( assignment ) 是 使 每 个 子 句 包 含 两 个 不 同 真 值 的 文 字 的 赋
值 。 换 言 之 ,关 一 赋 值 满 足 彡,而 又 不 在 任 何 子 句 中 赋 值 三 个 真 文 字 。
a. 证 明 # 的 任 何 关 一 赋 值 的 否 定 依 然 是 參 一 赋 值。
b. 令 关 SAT 是 具 有 关 一 赋 值 的 3 cnf 公 式 的 集 合 。证 明 : 通 过 把 每 个 子 句 c,
(:yi V 夕2 V 夕3 )
换成两个子句
(:yi V V A )和 Oi V V 6)
^
yi 3
其 中 A 是 对 应 于 每 个 子 句 ct 的 新 变 量 ,6 是 一 个 补 充 的 新 变 量 ,可 以 得 到 从 3 SAT 到 关 SAT
的 多 项 式 时 间 归 纳。
c. 得 出 关 S_AT 是 NP 完 全 的 结 论 。
7.54 无 向 图 的 一 个 割 ( cut ) 是 把 顶 点 集 V 分 裂 成 两 个 不 相 交 的 子 集 S 和 T 。 割 的 规 模 是 一 端 在 S 中 ,
第 7章 时 间 复 杂 性 207
另一端在丁中的边的数目 。令
MAX-0 7T ={〈 G,
々>|G 有规模不少于々的割 }
-
证明 MAX CUT 是 NP 完全的 。 可以假定问题 7.53 的结论成立 。(提示 :证明关 SA T<PMAX : -
CL/T 。 对应变量 x 的构件是由 3c 个标记为:r 的结点和 3c 个标记为 X 的结点组成的集合 ,这里 c
是子句数 。 所有标记为 x 的结点都与所有标记为的结点相连 。 子句构件是由三条边组成的三
角形 ,这三条边连接三个由该子句中的文字做标记的结点 。 不同的子句构件采用不同的结点 。
证明这种归约满足要求 。
)
习题选解
.
7 1 c 假; d 真。
7.2 c 真; d. 真 。
7.28 首先,可以在多项式时间内验证一种方案是否有效 ,所以 SOLJTA 识E 6 NP。 其次 ,证明 3SAT < P
-―
以证明 ,0 可满足当且仅当 G 可解 (获胜 )。
( ) 若 0 可 满 足 。A 为真 ( 假),从相应列中移去红色 (蓝色 ) 棋子 。现在 ,棋子对应着取
值为真的文字 。因为所有子句都有一个取值为真的文字 ,所以所有行都有棋子 。
( ) 若游戏可解 ( 获胜 )。 如果某列中的红色 ( 蓝色 ) 棋子被移去 ,将相应的变量置为真
( 假 )。 每行都有棋子留下 ,所以每个子句都至少有一个为真的文字 。 因此 0 被满足 。
.
7 37 假 设 P = NP,则 CLJQLTEGP , 且对于任意的 I 可在多项式时间内检测 G 是否有一个々 团 。 一一 -
检测 G 中是否有々规模的团 ,々从 1 取到 G 的结点总数 ,就可以在多项式时间内找出 G 中最大团
的规模匕一旦知道了 G 就可按下述方法找出一个含有 个结点的团 。对 G 的每个结点:r ,移去 ;
r
并重新计算最大团的规模 。 如果规模减小了 ,恢复 x 继续测试下一个结点 。所有结点都这样处理
一遍后 ,剩下的结点就是要求的 团。
7.43
M=“ 对于输入比:
1. 非确定地将 w 分割为若干片段
^
令 A 6 NP。 构造非确定型图灵机 M 在 非 确 定 的 多 项 式 时 间 内 判 定 。
2. 对每一 A ,非 确 定 地 猜 测 可 证 明 的 证 书 。
3. 验证所有可能的证书 ,然后接受 。
如验证失败 ,则拒绝 。
”
.
7 50 -
我 们 给 出 一 个 从 CLIQUE 到 HALF CLJQLTE 的多项式时间映射归约。该归约的输入是〈G,々>
对 ,归 约 产 生 图 < H > 作 为 输 出 ,其 中 H 描述如下 。若 G 有 m 个结点且々 = 饥/2 , 则 H =
k <m/2 f 则向 G 中添加 )个结点 (每个都和原有结点连接且彼此连接 ) 得到 H,其中 j = w
_ 若
2々。
这样 H 就含有 m ;= 2m + ’
— 2々个结点。显然 ,G 有 h 团当且仅当 H 有 规 模 为 々 =m — k 的团 。
所 以 的 当 且 仅 当 如 果 々
〉 m /2 , 则 向 G 中 添 加 个结
点 但 不 添 加 任 何 边 得 到 其 中 这 样 H 有 m + j = 2々个结点 ,因此 G 有々 团当且仅当 -
H 有 b 团 。 所 以 〈 G, :
A 〉G CUQL/f 当 且 仅 当 〈 H > 6 HALF-CLJQLTE 。 还 需 要 证 明 H A L F-
:
CLJQ[/f 6 NP。证书很简单 ,就是那个团 。
第8章
Introduction to the Theory of Computation , 3 e
空间复杂性
本 章 从 计 算 问 题 所 需 要 的 空 间 大 小 (存 储 量 ) 出 发 考 察 其 复 杂 性 。 在 寻 找 许 多 计 算 问
题 的 可 行 解 时 ,时 间 和 空 间 是 最 重 要 的 两 个 需 要 衡 量 的 因 素 。空 间 复 杂 性 与 时 间 复 杂 性 有
许 多 相 似 之 处 ,它 为 按 照 计 算 难 度 来 更 深 入 地 研 究 问 题 的 分 类 提 供 了 另 外 一 种 方 法 。
与 分 析 时 间 复 杂 性 类 似 ,首 先 需 要 选 择 一 个 模 型 来 度 量 算 法 所 消 耗 的 空 间 。本 章 仍 采
用 图 灵 机 模 型 ,因 为 其 数 学 形 式 简 单 ,而 且 近 似 实 际 的 计 算 机 ,足 以 得 岀 有 意 义 的 结 果 。
—
令 M 是一个在所有输入上都停机的确定型图灵机 M 的空间复杂度
complexity ) 是 一 个 函 数 /:N N ,其 中 /( n ) 是 M 在 任 何 长 为 n 的 输 入 上 扫 描 带
( space
子 方 格 的 最 大 数 。 若 M 的 空 间 复 杂 度 为 / U ),则 称 M 在 空 间 / U ) 内 运 行 。
如 果 M 是 对 所 有 输 入 在 所 有 分 支 上 都 停 机 的 非 确 定 型 图 灵 机 ,则 将 它 的 空 间 复 杂 度
/ ( 72 ) 定 义 为 M 对 任 何 长 为 72 的 输 入 ,在 任 何 计 算 分 支 上 所 扫 描 的 带 子 方 格 的 最 大 数 。
—
与 时 间 复 杂 度 类 似 ,通 常 用 渐 近 记 法 估 计 图 灵 机 的 空 间 复 杂 度 。
惠 令 /:N R+ 是 一 个 函 数。空间复杂性类 ( space complexity class) SPACE( f ( n ) )
和 NSPACEU ( n ) ) 定 义 如 下 :
SPACE( /( n ))= { L|L 是 被 0( / U )) 空 间 的 确 定 型 图 灵 机 判 定 的 语 言 }
a
NSPACE( /( n ))= |L 是 被 0( /U )) 空 间 的 非 确 定 型 图 灵 机 判 定 的 语 言 }
第 7 章 介 绍 了 NP 完 全 问 题 SAT ,现 在 证 明 用 线 性 空 间 算 法 能 求 解 S A T 问
题 。因 为 SAT 是 NP 完 全 的 ,所 以 SAT 不 能 用 多 项 式 时 间 算 法 求 解 ,更 不 能 用 线 性 时 间
算 法 求 解 。 因 为 空 间 可 以 重 用 ,而 时 间 不 能 ,所 以 空 间 的 能 力 显 得 比 时 间 强 得 多 。
+
从 =“对 输 入 ( ),# 是 布 尔 公 式 :
2. 计算彡在该真值赋值下的值 。
3. 若
—
1. 对 于 0 中 变 量 xi , , 的 每 个 真 值 赋 值 ;
0 的 值 为 1 ,则 接 受 ;否 则 拒 绝 。”
显 然 机 器 Mi 是 在 线 性 空 间 内 运 行 ,因 为 每 一 次 循 环 都 可 以 复 用 带 子 上 的 同 一 部 分 。
该 机 器 只 需 存 储 当 前 的 真 值 赋 值 ,这 只 需 要 消 耗 O( m ) 空 间 。因 为 变 量 数 m 最 多 等 于 输
入 长 度 n ,所 以 该 机 器 在 空 间 0( 72 ) 内 运 行 。 冁'
这 个 例 子 分 析 了 一 个 语 言 的 非 确 定 性 空 间 复 杂 性 。 在 下 一 节 将 说 明 ,测 定
非 确 定 性 空 间 复 杂 性 ,对 于 测 定 它 的 确 定 性 空 间 复 杂 性 是 有 很 大 帮 助 的 。下 面 分 析 判 定 一
个 非 确 定 型 有 穷 自 动 机 是 否 接 受 所 有 字 符 串 的 问 题 。令
ALLNFA = { < A > | A 是 一 个 NFA 且 L( A )= 2 * }
首 先 给 出 一 个 非 确 定 型 线 性 空 间 算 法 来 判 定 该 语 言 的 补 ALLnfa 。算 法 的 思 想 是 利 用
非 确 定 性 猜 测 一 个 被 NFA 拒 绝 的 字 符 串 ,然 后 用 线 性 空 间 跟 踪 该 NFA ,看 它 在 特 定 时 刻
会 处 在 什 么 状 态 。需 要 注 意 的 是 ,此 时 还 不 知 道 该 语 言 是 否 在 NP 或 coNP 中 。
“对 于 输 入〈M > ,M 是 一 个 NFA:
襄汐章空间复杂性 209
_
1. 置标记于 NFA 的起始状态 。
2. 重复执行下面的语句 M 次 ,这里 g 是 M 的状态数 :
3. 非确定地选择一个输人符号并移动标记到 M 的相应状态 ,来模拟读取那个符号。
4. 如 果 步 骤 2 和 3 表 明 M 拒绝某些字符串 ,即如果在某一时刻所有标记都不落
在 M 的接受状态上 ,则接受 ;否则拒绝 。
”
如果 M 拒绝某个字符串 ,则它必定拒绝一个长度不超过 29 的字符串 ,因为在任何被
拒绝的更长的字符串中 ,上面算法中所描述的标记的位置分布必定重复出现 。介于两次重
复出现之间的那一段字符串可以删去 ,从而得到更短的被拒绝的字符串。 所以 N 可判定
ALLNFAO ( 值得注意的是 ,N 也接受格式错误的输人 。
)
该算法仅需要的空间是用来存放标记的位置和重复计数器 ,这在线性空间就可以得到
解决 。因此 ,该算法在非确定的空间 OU ) 内运行 。接下来 ,证明一个关于 ALLnfa 的确
定性空间复杂性的定理 。
8. 1 萨维奇定理
本节介绍有关空间复杂性的最早结论之 萨维奇定理。该定理表明确定型机器可
以用非常少的空间模拟非确定型机器 。 对于时间复杂性 ,这种模拟似乎需要指数倍地增加
时间 。对于空间复杂性 ,萨维奇定理说明 ,任何消耗 /(〃) 空间的非确定型图灵机都可以
—^
转变为仅消耗尸(〃) 空间的确定型图灵机 。
( 萨 维 奇 定 理) 对 于 任 何 ㊀ 函 数 /: NR + ,其 中 /( r? )>72 ,
NSPACEC /U )) G SPACECj Cw ))
证明思路我们需要确定地模拟一个 /(〃) 空间的 NTM ( 非确定型图灵机 )。最简单
的方法就是逐个地尝试 NTM 的所有计算分支 。 这种模拟要求记录当前正在尝试的是哪
一 个 分 支 ,以 便 能 够 过 渡 到 下 一 个 分 支 。 但 是 消 耗 / U ) 空 间 的 一 个 分 支 可 能 运 行
步 ,每一步都可能是非确定的选择 。 顺序地考察每一个分支要求记录某个具体
分 支 上 所 做 的 所 有 选 择 ,以 便 能 找 到 下 一 个 分 支 。 所 以 该 方 法 可 能 会 用 掉 空 间 ,
超 过 了 0( 尸 U )) 空 间 。
考虑到更具一般性的问题 ,这里采用了另一种不同的方法 。 给定 NTM 的两个格局 o
和 0 以及一个整数 〖,要求判定该 NTM 能否在 〖 步内仅用 /(〃) 空间从 Q 变到 C2 , 称该
问题为可产生性问题 ( yieldability problem ) 0 如果令 ci 是起始格局 ,c2 是 接 受 格 局 ,/ 是
非确定型机器可以使用的最大步数 ,那么通过求解可产生性问题 ,就能够判定机器是否接
受输入 。
下面给出一个确定的递归算法来求解可产生性问题 。它的运算过程为 : 寻找一个中间
格 局 0 ,递 归 地 检 查 能 否 在 以2 步 内 到 达 以 及 能 否 在《 / 2 步 内 到 达 。重复使
^
Q
用两次递归检查的空间即可显著地节省空间开销 。
该算法需要用来存储递归栈的空间 。递归的每一层需要 0( / U )) 空 间 来 存 储 一 个 格
局 。递归的深度是 log〖,这里 〖 是非确定型机器在所有分支上可能消耗的最大时间 。 因为
t = 2以㈣ ,所以 10以 = 0( /( rl ))。因此确定的模拟过程需要 CK /HrO ) 空 间 。
3. 运 行 CANYIELD cm,
O,
2 jo
4. ( 音)
c2 , 。
运行 CANYIELD cm ,
^
#
使得 iV 在 /( /2 ) 带子上的格局数不超过 2#
°,其中〃是 w 的长度 。〃
°
( w)
2 是 JV 在所有分
支上的运行时间的上界 。
M = “对输人 w :
1. 输出 GANYIELD( cstart , 2#㈤ )的结果 。
caccept , ”
算法 CANYIELD 显然求解了可产生性问题。因此 M 正确地模拟了 iV 。下面需要分析
M , 确信它在 0( /2( )) 空间内运行 。
”
CANYIELD 在递归调用自己时 ,它把所处的步骤号以及 Cl 、 Q 和《 的值都存储在栈
中 ,所以递归调用返回时能够恢复这些值 。 因此在递归的每一层需要增加 0( /( « )) 空间 。
此 外 ,递 归 的 每 一 层 把 〖 的 值 减 小 一 半 。 开 始 时 〖 等 于 2d f U ) , 所 以 递 归 的 深 度 是
^
Odog2 ( w ) ) 或 0( /( ))。因此总共消耗的空间是 0( /2(〃)),正如断言所述 。
在这个论证过程中产生了一个技术难点 ,其原因是算法 M 在调用 CANYIELD 时需
要 知 道 /U) 的 值 。修 改 M 可以克服这个困难 ,方法是对 /(〃) 不断赋值使 /( n )= l , 2,
_
3 ,… 。对于每个值 /(〃)= ,修改后的算法利用 GANYIELD 来确定接受格局是否可达 。
此外 ,利用该过程 ,还可通过检查 N 能否从起始格局岀发到达某个长度为 / + 1 的 格 局 来
确定 N 是否至少需要 z + l 大小空间 。如果接受格局可达 ,则 M 接受 ;如果没有长为 / + 1
的格局可达 ,M 拒绝 ;否则 M 继续尝试 /( n )= f + l。(也可以用另一种办法来克服这个困
难 ,即假定 M 能在空间 0( /U )) 内计算岀 /( n ),但是那样就需要把这个假定加人定理的
陈述中。
) ■
8. 2 PSPACE 类
与定义 P 类相似 ,我们为空间复杂性定义 PSPACE 类 。
irJaHisI PSPACE 是在确定型图灵机上 、 在多项式空间内可判定的语言类 。换言之 ,
襄次章空间复杂性 211
^
PSPACE = U SPACE( )
k
PSPACE 类 的 非 确 定 型 版 本 NPSPACE 可 以 类 似 地 用 NSPACE 类 来 定 义 。 然 而 ,任
何 多 项 式 的 平 方 仍 是 多 项 式 ,根 据 萨 维 奇 定 理 ,NPSPACE = PSPACE。
在 例 8.3 和 例 8.4 中 ,已 经 说 明 了 SAT 属 于 SPACEU ),AZXNFA 属 于 coNSPACE( n ),
而 根 据 萨 维 奇 定 理 ,确 定 型 空 间 复 杂 性 类 对 补 运 算 封 闭 ,所 以 ALLNFA 也 属 于 SPACEU2 )。
因 此 SAT 和 ALLNFA 这 两 个 语 言 都 在 PSPACE 中 。
现 在 考 察 PSPACE 与 P 和 NP 的 关 系 。 显 而 易 见 , PSPACE , 因 为 运 行 快 的 机 器
不 可 能 消 耗 大 量 的 空 间 。更 精 确 地 说 ,当 〃时 ,由 于 在 每 个 计 算 步 上 最 多 能 访 问 一
个 新 单 元 ,因 此 ,任 何 在 时 间 内 运 行 的 机 器 最 多 能 消 耗 〖 U ) 的 空 间 。 与 此 类 似 ,
NPSNPSPACE ,所 以 NPGPSPACE 0
反 过 来 ,根 据 图 灵 机 的 空 间 复 杂 性 也 可 以 界 定 它 的 时 间 复 杂 性 。对 于 通 过
简 单 推 广 引 理 5.7 的 证 明 可 知 ,一 个 消 耗 /U ) 空 间 的 图 灵 机 至 多 有 不 同 的
格 局 ,图 灵 机 的 停 机 计 算 不 能 出 现 重 复 格 局 。因 此 消 耗 空 间 /(〃) 的 图 灵 机@ 必 定 在 时 间
,
^
/b)20( ㈤)内 运 行 ,得 出 PSPACE EXPTIME= U TIME( 2 )
^ ^
0
用下面的一系列包含式总结迄今为止所定义的复杂性类之间的关系 :
NP PSPACE = NPSPACE EXPTIME
^
在 这 些 包 含 式 中 ,还 不 知 道 是 否 有 某 一
个 为 等 式 。也 许 有 人 会 发 现 一 个 类 萨 维 奇 定
理 的 方 法 ,使 得 这 里 的 某 些 类 能 够 合 并 为 一
个 类。但 是 在 第 9 章 将 证 明 EXPTIME ,
^ PSPACE
EXPTIME
所以上面的包含式中至少有一个是真包含 ,但
还 不 能 确 定 是 哪 一 个! 实 际 上 ,大 部 分 研 究 者
相信所有包含式都是真包含 。图 8 1 描 绘 了 这 -
些 类 之 间 的 关 系 ,假 设 所 有 类 是 不 同 的 。 图 8- 1 P、 NP、 PSPACE 和 EXPTIME 的推测关系
8. 3 PSPACE 完全性
7.4 节 介 绍 了 NP 完 全 语 言 类 ,它 代 表 NP 中 最 难 的 语 言 类 。证 明 一 个 语 言 是 NP 完
全 的 是 说 明 它 不 属 于 P 的 强 有 力 的 证 据 。若 它 属 于 P , 则 P 将 和 NP 相 等 。 本 节 为
PSPACE 类 引 入 一 个 类 似 概 念 PSPACE 完 全 性 。
IfMWWM 若 语 言 B 满 足 下 面 两 个 条 件 ,则 它 是 PSPACE 完 全 的 :
1.B 属 于 PSPACE。
2. PSPACE 中 的 每 一 个 语 言 A 多 项 式 时 间 可 归 约 到 B 。
若 B 只 满 足 条 件 2 ,则 称 它 为 PSPACE 难 的 。
在 定 义 PSPACE 完 全 性 时 ,利 用 了 定 义 7.24 中 给 出 的 多 项 式 时 间 可 归 约 性 。 为 什 么
不 定 义 并 且 采 用 多 项 式 空 间 可 归 约 性 ,而 用 多 项 式 时 间 可 归 约 性 呢? 为 了 理 解 这 个 重 要 问
题 的 答 案 ,首 先 考 察 定 义 完 全 问 题 的 动 机 。
完 全 问 题 是 重 要 的 ,因 为 它 们 是 复 杂 性 类 中 最 困 难 问 题 的 样 例 。 完 全 问 题 是 最 难 的 ,
因 为 该 类 中 的 其 他 问 题 很 容 易 归 约 到 它 。如 果 找 到 一 种 简 便 的 方 法 求 解 完 全 问 题 ,就 能 很
容 易 求 解 该 类 中 的 其 他 所 有 问 题 。 为 了 使 这 种 逻 辑 能 够 成 立 ,相 对 于 该 类 中 典 型 问 题 的 复
杂 性 ,归 约 过 程 就 必 须 是 容 易 的 。如 果 归 约 过 程 本 身 就 很 难 算 ,那 么 针 对 完 全 问 题 的 容 易
解 法 就 不 一 定 能 推 导 出 其 他 归 约 到 它 的 问 题 的 容 易 的 解 法。
所 以 ,必 须 遵 循 如 下 规 则 : 当 为 一 个 复 杂 性 类 定 义 完 全 问 题 时 ,归 约 的 模 型 必 须 比 用
来定义类本身的模型更加受限。
8 . 3. 1 TQBF 问题
-
PSPACE 完 全 问 题 的 第 一 个 例 子 是 可 满 足 性 问 题 的 推 广 。回 忆 一 下 ,布 尔 公 式 是 一 个
包 含 布 尔 变 量 、常 数 0 和 1 以 及 布 尔 运 算 符 A , V , 的 表 达 式。 现 在 定 义 更 一 般 形 式 的
布 尔 公 式。
量 词 (quantifier ) V ( 对 所 有) 和 3 ( 存 在 ) 在 数 学 命 题 中 经 常 岀 现 。 语 句 的 含 义
是 ,对 于 变 量:T 的 每 个 值 ,语 句 # 都 是 真 。类 似 地 ,语 句 3 x 0 的 含 义 是 ,对 于 变 量:C 的
某 个 值 ,语句多是真 。有 时 ,把 V 称 为 全 称 量 词 ( universal quantifier ) ,把 3 称 为 存 在 量
词 ( existential quantifier ) , 紧 跟 在 量 词 后 面 的 变 量:r 受 到 该 量 词 约 束 ( bound )。
例 如 ,对 于 自 然 数 ,语 句 VxDr + l>x] 的 含 义 是 : 每 一 个 自 然 数:r 的 后 继:r + 1 都
比 它 大 。显 然 这 个 命 题 为 真 。 然 而 ,语 句 3 [ + 3 = 3] 显 然 是 假 的 。 当 解 释 包 含 量 词 的
^^ ^
语 句 的 含 义 时 ,必 须 考 虑 所 取 值 的 域 ( universe )。 在 这 个 例 子 中 ,域 是 自 然 数 ,但 是 如 果
改 用 实 数 ,则 带 存 在 量 词 的 语 句 就 变 成 真 的 了 。
语 句 可 以 包 含 多 个 量 词 ,如 Vx 3 y b> ]。 对 于 自 然 数 域 ,该 语 句 的 语 义 是 每 一 个
^
自 然 数 都 有 另 一 个 自 然 数 比 它 大 。 量 词 的 次 序 很 重 要 。若 颠 倒 次 序 ,如 语 句 3 yV :
x], 则 给 出 完 全 不 同 的 含 义 ,即 存 在 某 个 自 然 数 比 所 有 其 他 数 都 大 。 显 然 ,第 一 个 语 句 为
r[3;
〉
真 ,第 二 个 语 句 为 假 。
量 词 可 以 出 现 在 数 学 语 句 中 的 任 何 地 方 。它 的 作 用 范 围 是 跟 在 量 化 变 量 后 的 一 对 匹 配
的 括 弧 内 出 现 的 语 句 段 。该 段 称 为 量 词 的 辖 域 ( scope ) . 通 常 ,要 求 所 有 变 量 都 出 现 在 语
句 的 开 头 会 很 方 便 ,这 时 每 个 量 词 的 辖 域 就 是 其 后 的 所 有 语 句 成 分 。 这 种 语 句 称 为 前 束 范
式 ( prenex normal form )。很 容 易 把 任 何 语 句 都 写 成 前 束 范 式 。如 不 特 别 指 明 ,只 考 虑 这
种 形 式 的 语 句。
带 量 词 的 布 尔 公 式 称 为 量 词 化 布 尔 公 式 ( quantified Boolean formula )。 对 于 这 种 公
式 ,域 是 { 0 ,
1 }。 例 如 :
Vx 3 V: V 夕)]
y) A (夕
是 量 词 化 布 尔 公 式 。这 里 , 是 真 。但 是 如 果 颠 倒 量 词 Vx 和 3 的 次 序 ,就 变 成 假 了 。
^ ^
如 果 公 式 的 每 个 变 量 都 出 现 在 某 一 量 词 的 辖 域 内 ,该 公 式 就 称 为 全 量 词 化 的 ( fully
quantified ) 全 量 词 化 的 布 尔 公 式 有 时 称 为 句 子 ( sentence ),它 要 么 是 真 ,要 么 是 假 。 例
0
如 ,前 面 的 公 式 0 是 全 量 词 化 的 。但 是 ,如 果 删 去 0 的 开 头 部 分 Vz ,该 公 式 就 不 再 是 全
量 词 化 的 。 它 既 不 是 真 ,也 不 是 假 。
TQBF 问 题 就 是 要 判 定 一 个 全 量 词 化 的 布 尔 公 式 是 真 还 是 假 。 定 义 语 言
TQBF = { < >| 是 真 的 全 量 词 化 的 布 尔 公 式 }
^^
TQBF 是 PSPACE 完 全 的 。
第S 章 空 间 复 杂 性 213
^
受 ;否则拒绝 。
2. 若 r0,在 0 上递归地调用 :
0 等 于 3: T ,首先用 0 替换:r ,然后用 1 替换:r 。 只
要有一个结果是接受 ,则接受 ;否则拒绝 。
:
3. 若 0 等 于 Vi# 在 0 上 递 归 地 调 用 T ,首先用 0 替换:r ,然后用 1 替换:r 。 若两
个结果都是接受 ,则接受 ;否则拒绝 。
”
算法 T 显然判定 TQBF 。 为了分析它的空间复杂性 ,我们发现它递归的深度最多等于
变量的个数 。 在每一层只需存储一个变量的值 ,所以空间总消耗是 O( m ),其中 m 是多中
岀现的变量的个数 。因此 T 在线性空间内运行 。 :
接下来 ,证明 TQBF 是 PSPACE 难的 。设 A 是一个由图灵机 M 在 W 空间内判定的
语言 ,6 是某个常数 。下面给出一个从 A 到 TQBF 的多项式时间归约。
该归约把字符串 w 映射为一个量词化的布尔公式 # 。# 为真当且仅当 M 接受 w 。为了
说明怎样构造一需解决一个更一般的问题。利用两个代表格局的变量集合 o 和 G 及一
个数 c o , 构造一个公式
> ,
C U
2
o 如 果 把 赋 为 实 际 的 格 局 ,则 该 公 式 为 真 当 且 仅
当 M 能够在最多 r 步内从 C 1 到达 c2 。然后 ,可以令 0 是公式 & ,c ,
h , 其中 /1 = 2办㈤ ,
d 是一个选取的常数 ,使得 M 在长为 n 的输入上可能的格局数不超过 〃
、
f( n = nk 0 为了方便 ,假设 〖 是 2 的幂 。
2 ( w ) 。 这里 ,令
^
214 第三部分复杂性理论
组的值 ,从而就能够表达
^ …
在 的一步内产生 c 2 。
^
若 >1 ,递归地构造 A/y 。作为预演 ,先尝试一种不太好的想法 ,然后再修正
它 。令
c
'
,c2 ,t — 3 TYl\ A >m:,c2 ,+ ]
, mj , y
^
符号;Wl 表示 M 的一个格局 。3 mi 是 3 xi ,
…,: :
CZ 的缩写 ,其中 Z = 0( W ),Tl ,
… ,JT/ 是
对 /Wi 编码的变量 。所以令
… ,
,的这个构造的含义是 :如果存在某个中间格局 m i ,使得 M
在至多
从 n 变到
f 步内从 d 变到叫 ,并且在至多
。然 后 再 递 归 地 构 造 这 两 个 公 式 。
C2
+ 步内从叫变到 C2 ,那么 M 就能在至多 / 步内
^
2,
—
C3
―
从而得到语法正确的量词化布尔公式 。 回忆第 0 章的内容 ,在 0.2 节中证明了布尔蕴涵
-
( ) 和布尔相等 ( = ) 可以用 AND 和 NOT 来表达 。 这里 ,为了表达的清晰 ,使用符
号 = 表示布尔相等 ,而没使用等价符号 >
。
^
为了计算公式參Csiart , ra h 的长度 ,其中 /1 = 2
, ,注意到递归每一层增加的那部分公式
的长度与格局的长度呈线性关系,所以长度是 0(/(〃))。递归的层数是 log(〃
2 ( w ) ) 或 0(/㈤)。
所以所得到的公式的长度是 0( 尸(〃))。 ■
8 . 3. 2 博弈的必胜策略
本书中 ,把博弈 ( g a m e ) 不严格地定义为两个对立方的竞赛 ,每一方都按照预先确定
的规则争取达到某一目标 。博弈有多种形式 ,从国际象棋这一类棋盘博弈 ,到作为协作或
者社会冲突模型的经济和战争博弈等 。
博弈和量词紧密相关 。 一个量化的语句存在一个之对应的博弈 ;反之 ,一个博弈也常
存在一个对应的量化语句 。这种对应关系在以下几个方面是有用的 。首先 ,把一个包含许
多量词的数学语句用对应的博弈表达出来 ,可以洞悉该语句的含义 。 其次 ,把一个博弈用
量化语句表达出来有助于理解该博弈的复杂性 。为了阐明博弈与量词之间的对应关系 ,本
节描述了一种称为公式博弈 ( formula g a m e ) 的人工博弈 。
设多 = 3:
nV 3 X3 …Q :
|>] 是一个前束范式的量词化布尔公式 ,这里 Q 代表量词
^
A
V 或者 3 。将 与下面的博弈相关联 。两名选手称为选手 A 和选手 E ,轮流为变量:n , …,
A 选值 。 选手
^
为那些 V 量词约束的变量选值 ,选手 E 为那些3 量词约束的变量选值 。进
A
行的顺序与公式开头量词出现的顺序相同。在游戏结束时 ,利用选手给变量挑选的值宣布
结果 。如果 0 ( 即删去量词后的那部分公式) 此时是 T R U E ,则选手 E 赢 ;如果 0 此时是
第S 章空间复杂性 215
FALSE ,则 选 手 A 赢 。
设七是公式
V 工2 彐工3[( 工1 V 工2 ) 八 (工2 V 3 ) A ( 2 V 3 )]
^
彐
^
~
的值。
^
在 和 的 公 式 博 弈 中 ,选 手 E 挑 选 A 的 值 ,选 手 A 挑 选 X2 的 值 ,最 后 选 手 E 挑 选 X3
举 一 个 该 博 弈 游 戏 过 程 的 例 子 。 照 例 ,用 1 表 示 布 尔 值 TRUE ,用 0 表 示 FALSE 。
设 选 手 E 挑 选: = 1 ,然 后 选 手 A 挑 选:r 2 = 0 , 最 后 选 手 E 挑 选:r 3 = l 。当 :
n, 和 工3
^
取 这 些 值 时 ,子 公 式 (:n Vx 2 ) AU2 V I 3 ) A (石 V 石) 是 1 ,所 以 选 手 E 赢 。实 际 上 ,选
手 E 总 可 以 赢 得 这 场 博 弈 ,只 要 它 挑 选
工3
A = 1 ,然 后 不 论 选 手 A 给:r 2 选 什 么 值 ,E 都 给
选 与 工2 相 反 的 值 。我 们 称 选 手 E 有 这 场 博 弈 的 必 胜 策 略 ( winning strategy )。 如 果 双
方 都 下 出 最 佳 步 骤 时 ,某 个 选 手 能 赢 ,则 该 选 手 有 该 博 弈 的 必 胜 策 略 。
现 在 稍 微 修 改 一 下 公 式 ,得 到 一 个 博 弈 ,使 得 选 手 A 有 必 胜 策 略 。设 扣 是 公 式
彐:
^
Tl V X 2 彐 工3[( 工1 V 工2 ) 八 (工 2 V 工3 ) 八 (工2 V )]
现 在 选 手 A 有 必 胜 策 略 ,因 为 不 论 选 手 E 为 选 什 么 值 ,选 手 A 可 以 选 =0, 从而使
^
X2
量 词 后 面 出 现 的 那 部 分 公 式 为 假 ,而 不 论 选 手 E 在 最 后 一 步 选 什 么 值 。 ■
下 面 考 虑 判 定 在 与 某 个 具 体 的 公 式 相 关 联 的 公 式 博 弈 中 哪 一 方 有 必 胜 策 略 的 问 题 。令
FORMULA- GAME = {〈 0〉丨 在 与 0 相 关 联 的 公 式 博 弈 中 选 手 E 有 必 胜 策 略 }
FORMULA-GAME 是 PSP ACE 完 全 的 。
- :
证 明 思 路 FOi MULA GAMf 是 PSPACE 完 全 的 ,理 由 很 简 单 ,即 它 和 TQBF 是
证 明 公 式 4=
对 于 12 的 任 意 赋 值 ,存 在 :
^
一 样 的 。为 了 看 出 FOi?M[/LA-GAM£ = TQBF,注 意 到 一 个 公 式 恰 好 当 选 手 E 在 相 关 联
的 公 式 博 弈 中 有 必 胜 策 略 时 为 TRUE , 因 为 两 种 情 况 有 同 样 的 含 义 。
X 2 3 x3 …[0] 是 TRUE 的 条 件 是 :存 在 A 的 某 种 赋 值 ,使 得
c3 的 某 种 赋 值 ,使 得
^
Atr Air
其中 在这些变量的赋值下
为 TRUE。类 似 地 ,选 手 E 在 与 # 关 联 的 博 弈 中 有 必 胜 策 略 的 条 件 是 :选 手 E 可 以 给
赋 某 个 值 ,使 得 对 于:r 2 的 任 意 赋 值 ,选 手 E 可 以 给 x3 赋 一 个 值 ,使 得 ,等 等 ,其 中
0 在 变 量 的 这 些 赋 值 下 为 TRUE。
当 公 式 不 存 在 量 词 与 全 称 量 词 之 间 交 替 时 ,同 样 的 推 理 也 能 成 立 。 如果彡的形式为
9
选 手 E 走 两 次 ,给
-^
V X \ 9 X 2 X 3 彐 X 4 3 5 V X 6[0], 选 手 A 在 公 式 博 弈 中 走 头 三 步 ,给 X\ ,工2 和 X3 赋 值 ;然 后
X4 和 X5 赋 值 ;最 后 选 手 A 给 X6 赋 一 个 值 。
: :
6 6 FORMULA-GAMf 时 成 立 ,由 定 理 8.8 , 本 定 理 成 立 。
^ ^
因 此 ,46 QBF 恰 好 当
8.3. 3 广义地理学
既 然 知 道 公 式 博 弈 是 PSPACE 完 全 的 ,就 能 更 容 易 地 证 明 某 些 其 他 博 弈 的 PSPACE
完 全 性 或 PSPACE 难 解 性 。本 小 节 从 地 理 学 游 戏 的 推 广 开 始 ,然 后 讨 论 如 国 际 象 棋 、 跳
棋 和 GO 这 样 的 博 弈 。
地 理 学 是 一 种 儿 童 游 戏 ,选 手 们 轮 流 给 世 界 各 地 的 城 市 命 名 。每 一 座 选 中 的 城 市 的 首
字 母 必 须 与 前 一 座 城 市 的 尾 字 母 相 同 ,不 允 许 重 复 。游 戏 从 某 个 指 定 的 城 市 开 始 ,以 某 一
方 因 无 法 延 续 而 认 输 为 止 。 例 如 ,如 果 游 戏 从 Peoria 开 始 ,那 么 下 面 可 以 跟 Amherst ( 因
为 Peoria 的 尾 字 母 是 a ,而 Amherst 的 首 字 母 也 是 a ),然 后 可 以 是 Tucson ,然 后 是
216 第三部分复杂性理论
Nashua 直 到 一 方 被 难 倒 并 输 掉 比 赛 为 止。
可 以 用 有 向 图 作 为 该 游 戏 的 模 型 ,图 中 的 结 点 是 世 界 各 地 的 城 市 。根 据 游 戏 规 则 , 如
果 一 座 城 市 可 以 导 向 另 一 座 城 市 ,则 从 前 一 座 城 市 到 后 一 座 城 市 画 一 个 箭 头 。换 言 之 ,如
果 城 市 X 的 尾 字 母 与 城 市 Y 的 首 字 母 相 同 ,则 图 中 就 包 含 一 条 从 城 市 X 到 城 市 Y 的 边 。
-
图 8 2 中展示了一部分地理学图。
Peoria
^ Nashua
Albany
Tokyo
Orsay Oakland
图 8- 2 代表地理学游戏的部分图
当 地 理 学 规 则 翻 译 为 这 种 图 表 示 法 时 ,一 名 选 手 从 指 定 的 起 始 结 点 开 始 ,然 后 选 手 们
交 替 地 挑 选 结 点 ,形 成 图 中 的 一 条 简 单 路 径 (即 每 个 结 点 只 能 用 一 次 ,对 应 于 要 求 城 市 不
能 重 复 )。第一个不能扩展路径的选手输掉比赛 。
在 广 义 地 理 学 ( generalized geography ) 中 ,用 任 意 的
带有指定起始结点的有向图代替了与实际城市相关联的
-
图 。例 如 ,图 8 3 是 一 个 广 义 地 理 学 游 戏 的 例 子 。
n
设 选 手 I 先 走 ,选 手 随 后 走 。 在 本 例 中 ,选 手 I 有
如 下 的 必 胜 策 略 。选 手 I 从 结 点 1 ,即 指 定 的 起 始 结 点 开
始 。结 点 1 只 能 指 向 结 点 2 和 3 , 所 以 选 手 I 的 第 一 步 必
图 8 - 3 广义地理学游戏样例
须 是 这 两 种 选 择 之 一。 他 选 3。 现 在 轮 到 选 手 II 走 了 ,但
结 点 3 仅 指 向 结 点 5 , 所 以 她 被 迫 选 择 结 点 5。 然 后 选 手 I 从 6 、7 、 8 中 选 择 6 。 现 在 选 手
n 必 须 从 结 点 6 出 发 ,但 是 它 仅 指 向 结 点 3 ,而 3 在 前 面 已 经 走 过 了。选 手 n 被 困 住 了 ,
于 是 选 手 I 赢。
如 果 改 变 这 个 例 子 ,颠 倒 结 点 3 和 6 之 间 边 的 方 向 ,则 选 手 n 有 必 胜 策 略 。你 能 看 出
来 吗? 如 果 选 手 I 像 以 前 一 样 岀 发 到 结 点 3 , 则 选 手 n 以 结 点 6 为 应 手 ,立 即 赢 得 比 赛 ,
所 以 选 手 I 唯 一 的 希 望 是 到 结 点 2 。 但 在 这 种 情 况 下 ,选 手 [[ 以 4 为 应 手 。如 果 选 手 I 现
n
在 取 5 , 则 选 手 取 6 就 赢。如 果 选 手 I 取 7 , 则 选 手 取 9 就 赢 。 无 论 选 手 I 怎 么 走 ,
n
选手 n 总 能 赢 ,所 以 选 手 n 有 必 胜 策 略。
判定在广义地理学游戏中哪一方有必胜策略的问题是 PSPACE 完 全 的 。令
GG = i ( G ,b > \ 在 图 G 上 以 结 点 6 起 始 的 广 义 地 理 学 游 戏 中 ,选 手 I 有 必 胜 策 略 }
GG 是 PSPACE 完 全 的 。
证 明 思 路 用 与 定 理 8. 8 中 判 定:TQBF 时 所 用 的 算 法 相 似 的 一 个 递 归 算 法 ,就 能 判 定
哪 方 有 必 胜 策 略 。该 算 法 在 多 项 式 空 间 内 运 行 ,所 以 GGGPSPACE。
为 了 证 明 GG 是 PSPACE 难 的 ,给 出 一 个 从 FORMULA- GAME 到 GG 的 多 项 式 时 间
襄汐章空间复杂性 217
归约 。该归约把一个公式博弈转化为一个广义地理学图 ,使得图上的游戏过程模拟公式博
弈的游戏过程 。 实际上 ,广义地理学游戏的选手就是在玩一种编码形式的公式博弈 。
证明下面的算法判定在广义地理学实例中 ,选手 I 是否有必胜策略 。换句话说 ,它
判定 GG。现证明它在多项式空间内运行 。
对输入〈G ,
6〉,G 是有向图 ,6 是 G 的结点:
1. 若 6 出度为 0 , 则拒绝 ,因为选手 I 立即输 。
2. 删去结点 6 以及与它关联的所有箭头 . 得到一个新图
, )
62 ,… ,
3. 对于 6 原先指向的每个结点幻 , 心 ,在 ( G ,
bi 上递归地调用 M。
4. 若所有调用都接受 ,则选手 II 在原先博弈中有必胜策略 ,所 以 拒 绝 。 否则 ,选
手 n 没有必胜策略 ,而选手 I 有必胜策略 ,因此接受 。”
本算法仅需要用来存储递归栈的空间 。递归的每一层给栈中添加一个结点 ,最多可能
有 m 层 ,w 是 G 的结点数 。因此算法在线性空间内运行 。
为了证明 GG 的 PSPACE 难解性 ,证明 FORMULA- GAME 多项式时间可归约到 GG 。
归约把公式
/ = 彐:n V OC 2 彐:r 3 Q A [0]
<>
&
"
映射为广义地理学的一个实例〈G,6〉 。 为了简单 ,这里假定 # 的量词以 3 开头 ,以 3 结尾 ,
并且 3 和 V 严格地交替出现 ,不符合这个假定的公式可以转化为稍长一些的符合假定的公
式 ,这只需添加一些额外的量词 ,约束一些在别处不使用的变量 ( 或称 “哑 ” 变量 )。 还
假定 0 是合取范式的 (参见问题 8.28 )。
对于归约构造图 G 上的地理学游戏 ,其中最优走步模拟
TRUE ^V
必上的公式博弈的最优走步 。 地理学游戏中的选手 I 扮演公
n
式博弈中的选手 E 的角色 ,选手 扮演选手 A 的角色 。
^ i FALSE
-
图 G 的结构部分地示于图 8 4 中 。游戏从结点 6 开始 ,
它出现在 G 的顶层左边 。 在 6 下面是一列钻石结构 ,# 的每
一个变量对应一个 。在描述 G 的右边之前 ,先看游戏在左边
如何进行 。
游戏从 6 开始 。选手 I 必须选择从 6 出发的两条边之一 ,
这两条边对应于选手 E 在公式博弈开始时的可能选择 。选手
I 选择左边 ,对应于公式博弈中选手 E 选择 TRUE ,选择右
边对应于 FALSE。 在选手 I 已经选择了一条边之后 ,假设
是左边那条 ,该选手 n 走步了。因为只有一条岀边 ,所以这
一步没有选择 。类似地 ,选手 I 的下一步也没有选择 ,游戏
-
图8 4 模拟公式博弈的地理学
从第二个钻石的顶部继续进行 。 现在再次有两条边 ,但是轮 游戏的部分结构
到选手 U 选择了 。这次选择对应于在公式博弈中选手 A 的第
一步 。 随着游戏以这种方式继续进行 ,选手 I 和 n 选择向右或向左的路径通过每个钻石
结构 。
在游戏经过所有钻石结构以后 ,路径的末端在最后一个钻石的底部结点 ,而且轮到选手
I走步了,因为假定最后一个量词是 3 。选手I的下一步没有选择。然后他们到达图 8 - 4 的结
点 r ,轮到选手 n 走下一步。
218 第三部分复杂性理论
地 理 学 游 戏 走 到 这 一 步 对 应 于 公 式 博 弈 过 程 的 结 束 。所 选 择 的 通 过 钻 石 结 构 的 路 径 对
应于给 0 的 变 量 的 赋 值 。在 该 赋 值 下 ,如 果 0 是 TRUE ,则 选 手 E 赢 得 公 式 博 弈 ;如 果 0
-
是 FALSE ,则 选 手 A 赢 。 图 8 5 所 示 的 右 边 结 构 保 证 当 选 手 E 赢 时 选 手 工 能 赢 ,而 且 当
n
选 手 A 赢 时 选 手 能 赢 ,说 明 如 下 。
TRUE FALSE
图 8- 5 模 拟 公 式 博 弈 的 地 理 学 游 戏 的 全 部 结 构 ,其 中 0= V 工2 籲
• 彐工走[( 工1 V 石 V 工3 )八
(五 V 瓦 V …) 八 A( )]
在 结 点 c ,选 手 n 可 以 选 择 一 个 对 应 0 的 某 个 子 句 的 结 点 ,然 后 选 手 I 可 以 选 择 一 个
对 应 该 子 句 中 的 一 个 文 字 的 结 点 。对 应 不 带 非 的 文 字 的 结 点 连 接 到 对 应 有 关 变 量 的 钻 石 的
左 边 (TRUE ),对 于 带 非 的 文 字 和 右 边 ( FALSE ) 情 况 类 似 ,如 图 8 5 所 示 。 -
如果 0 是 FALSE ,则 选 手 II 可 以 选 择 不 满 足 的 子 句 而 取 胜 。 选 手 I 此 时 可 以 选 择 的
文 字 都 是 FALSE ,并 被 连 到 钻 石 中 还 未 走 过 的 那 一 边 。 于 是 选 手 II 可 以 选 择 钻 石 中 的 那
个 结 点 ,而 选 手 I 无 法 走 步 了 ,从 而 输 掉 。如 果 0 是 TRUE ,则 选 手 n 挑 选 的 所 有 子 句 都
包 含 TRUE 文 字 。选 手 工 在 选 手 II 走 步 后 选 择 那 个 文 字 。因 为 该 文 字 是 TRUE ,所 以 它
被 连 到 钻 石 中 已 经 走 过 的 那 一 边 ,因 此 选 手 n 无 法 走 步 ,输 掉。 ■
定 理 8 . 1 1 说 明 在 广 义 地 理 学 中 ,不 存 在 计 算 最 佳 走 步 的 多 项 式 时 间 算 法 ,除 非 P =
PSPACE。我 们 希 望 在 计 算 如 国 际 象 棋 这 一 类 棋 盘 博 弈 的 最 佳 走 步 方 面 能 够 证 明 类 似 的 难
解 性 定 理 ,但 是 存 在 一 个 障 碍 。 采 用 标 准 的 8 X 8 国 际 象 棋 棋 盘 只 能 岀 现 有 穷 个 不 同 的 棋
局。理 论 上 ,所 有 这 些 棋 局 以 及 它 们 的 最 佳 走 步 可 以 放 在 一 张 表 里 。这 张 表 会 大 到 整 个 星
系 都 放 不 下 ,但 它 却 是 有 穷 的 ,可 以 存 放 在 图 灵 机 的 控 制 单 元 中 ( 甚 至 有 穷 自 动 机 的 控 制
单 元 中!)。于 是 机 器 就 可 以 通 过 查 表 在 线 性 时 间 内 走 出 最 佳 步 。也 许 在 将 来 会 有 办 法 度 量
有 穷 问 题 的 复 杂 性 ,但 是 目 前 的 办 法 是 渐 近 的 ,因 此 只 能 用 来 度 量 复 杂 性 随 着 问 题 规 模 的
增 加 而 变 化 的 增 长 率— 而 不 能 用 于 任 何 固 定 规 模 。不 过 ,通 过 把 许 多 棋 盘 博 弈 推 广 到
棋 盘 上 ,可 以 就 计 算 它 们 的 最 佳 走 步 的 难 解 性 给 出 某 些 证 据 。 这 种 推 广 的 国 际 象 棋 、
跳 棋 和 GO 已 被 证 明 是 PSPACE 难 的 ,甚 至 对 于 更 大 的 复 杂 性 类 是 难 的 ,这 有 赖 于 推 广 的
细 节。
襄, 章空间复杂性 219
8.4 L 类和 NL 类
到 目 前 为 止 ,我 们 只 考 虑 了 时 间 和 空 间 复 杂 性 界 限 至 少 是 线 性 的 情 况 ,即 界 限 /( W
至 少 是〃。现 在 考 察 更 小 的 亚 线 性 ( sublinear ) 空 间 界 限 。 在 时 间 复 杂 性 中 ,亚 线 性 界 限
还 不 够 读 完 输 人 ,所 以 这 里 不 考 虑 它 们 。 在 亚 线 性 空 间 复 杂 性 中 机 器 可 以 读 完 整 个 输 人 ,
但 是 它 没 有 足 够 的 空 间 存 储 输 入 。为 了 使 对 这 种 情 况 的 考 虑 有 意 义 ,必 须 修 改 计 算 模 型 。
下 面 引 人 一 种 有 两 条 带 子 的 图 灵 机 :一 条 只 读 输 入 带 和 一 条 读 写 工 作 带 。 在 只 读 带 上
输 人 头 能 读 取 符 号 ,但 不 能 改 变 它 们 。这 个 头 必 须 停 留 在 包 含 输 入 的 那 部 分 带 子 上 。可 以
给 机 器 提 供 一 个 方 法 ,使 它 能 够 检 测 读 写 头 处 于 输 入 的 左 端 和 右 端 的 时 刻 。 工 作 带 可 以 用
通 常 的 方 式 读 写 。只 有 工 作 带 上 被 扫 描 的 单 元 才 构 成 这 种 形 式 的 图 灵 机 的 空 间 复 杂 性 。
可 以 把 只 读 输 人 带 想 象 成 CD- ROM , 即 一 种 在 许 多 个 人 计 算 机 上 用 于 输 入 的 设 备 。
-
通 常 ,CD ROM 包 含 的 数 据 比 计 算 机 能 存 放 在 主 存 中 的 数 据 更 多 。 亚 线 性 空 间 算 法 允 许
计 算 机 处 理 没 有 全 部 存 放 在 主 存 中 的 数 据。
对 于 至 少 是 线 性 的 空 间 界 限 ,双 带 图 灵 机 模 型 等 价 于 标 准 的 单 带 模 型 ( 参 见 练
习 8 . 1 )。 对 于 亚 线 性 空 间 界 限 ,只 采 用 双 带 模 型 。
L 是 确 定 型 图 灵 机 在 对 数 空 间 内 可 判 定 的 语 言 类 。换 言 之 ,
L = SPACEClog n )
NL 是 非 确 定 型 图 灵 机 在 对 数 空 间 内 可 判 定 的 语 言 类 。换 言 之 ,
NL = NSPACEClog n )
我 们 关 注 log 〃空 间 ,而 不 关 注 如 士 或 log2〃空 间 的 理 由 与 选 择 多 项 式 时 空 界 限 的 理
由 相 似 。对 数 空 间 足 以 求 解 许 多 有 趣 的 计 算 问 题 ,而 且 其 数 学 性 质 也 富 有 吸 引 力 ,比 如 当
机 器 模 型 和 输 人 的 编 码 方 法 改 变 时 仍 保 持 稳 健 性 。指 向 输 入 的 指 针 可 以 在 对 数 空 间 内 表
示 ,所 以 考 虑 对 数 空 间 算 法 的 计 算 能 力 的 一 种 方 式 是 考 虑 固 定 数 目 的 输 人 指 针 的 计 算
能 力。
mm 语 言 A ={ 0 4 M 々>0 } 是 L 的 成 员 。在 7 . 1 节 中 描 述 了 一 个 判 定 A 的 图 灵
机 ,它 左 右 来 回 扫 描 输 人 ,删 掉 匹 配 的 0 和 1 。该 算 法 用 线 性 空 间 记 录 哪 些 位 置 已 经 被 删
掉 了 ,但 可 以 修 改 为 只 使 用 对 数 空 间 。
判 定 A 的 对 数 空 间 图 灵 机 不 能 删 除 输 入 带 上 已 经 匹 配 的 0 和 1,因 为 该 带 是 只 读 的 。
机 器 在 工 作 带 上 用 二 进 制 分 别 数 0 和 1 的 数 目 ,唯 而 要的空间是用来记录这两个计数器
的 。在 二 进 制 形 式 下 ,每 个 计 数 器 只 消 耗 对 数 空 间 ,因 此 算 法 在 O( l o g n ) 空 间 内 运 行 。
所以 A G L。 ■
H :H
( 回 忆 7.2 节 中 定 义 的 语 言 PATf / = {〈G,
hA|G 是 包 含 从 5 到 z 的 有 向 路 径
的 有 向 图 }。定 理 7.1 2 证 明 PATH 属 于 P,但 是 给 岀 的 算 法 消 耗 线 性 空 间 。 还 不 清 楚
PATH 是 否 能 确 定 性 地 在 对 数 空 间 内 解 决 ,但 是 的 确 知 道 一 个 判 定 P A T H 的 非 确 定 性 的
对 数 空 间 算 法。
判 定 P A T H 的 非 确 定 型 对 数 空 间 图 灵 机 从 结 点 s 开 始 运 算 ,非 确 定 地 猜 测 从 5 到 的
路 径 的 每 一 步 。机 器 在 工 作 带 上 只 记 录 每 一 步 当 前 结 点 的 位 置 ,而 不 是 整 条 路 径 (否 则 将
超 出 对 数 空 间 的 要 求 )。机 器 从 当 前 结 点 所 指 向 的 结 点 中 非 确 定 地 选 择 下 一 个 结 点 。它 反
复 执 行 这 一 操 作 ,直 至 到 达 结 点《 而 接 受 ,或 者 执 行 m 步 以 后 拒 绝 ,其 中 m 是 图 中 的 结 点
220 第三部分复杂性理论
^^
83
M 是 一 个 有 单 独 的 只 读 输 入 带 的 图 灵 机,
若 , M 在 上的 W 是输入 则 VV
^…
格局包含状态 工作带和两个读写头位置 。输入 w 不作为
、 在加上的格局的一部分 。
G( /( w ))
如果 M 在 / U ) 空间内运行 ,W 是长为 n 的输入 ,则 在加上的格局数是 n 2 。
为了解释这一结果 ,设 M 有 c 个状态和 g 个带子符号 。能够出现在丁作带上的字符串的
数目是 K/( n > 。输入头可以处在〃个位置之一 ,工作带头可以处在 / U ) 个位置之一 。因此
M 在 w 上 的 格 局 总 数 (也 就 是 M 在 w 上 的 运 行 时 间 的 上 界 ) 等 于 c n f ( n )
⑷)
或 。
我们几乎只关注不小于 log 〃的空间界限 /(〃)。 对于这样的界限 ,前面关于机器的时
间复杂性最多不超过它的空间复杂性的指数倍的断言依然成立 ,因为当 / U ) > log 〃时 ,
。
2 ( /( > ) 等于 2 ( /( r ))
^
?
~ ^
W
8.5 NL 完全性
正如在例 8.14 中提到的 ,已知 PATH 问题属于 NL,但不知道它是否在 L 中。人们相
信 PATH 不属于 L,但是不知道怎样证明这一猜想。 实际上 ,还不知道 NL 中有哪一个问题
可以被证明不属于 L。 类似于 P = NP 是否成立的问题 ,也有 L = NL 是否成立的问题 。
作为解决 L 与 NL 问题的一个步骤 ,需要先证明某些语言是 NL 完全的 。正如其他复
杂性类的完全语言一样 ,NL 完全语言在一定意义上是 NL 中最困难的语言的样例 。如果
L 与 NL 不相等 ,那么所有 NL 完全语言就不属于 L。
如前面完全性的定义一样 ,NL 完全语言定义为属于 NL,并且 NL 中的所有其他语言
都可归约到它 。但是这里不用多项式时间可归约性 ,这是因为所有 NL 中的问题都在多项
式 时 间 内 可 解 。除 了0和 以 外 ,NL 中的任何两个问题都是互相多项式时间可归约的
( 参见 8.3 节 PSPACE 完全性的定义中关于多项式时间可归约性的讨论 ),所以多项式时
间可归约性太强 ,不能把 NL 中的问题彼此区分开 。可以改用一种新型可归约性 ,称为对
数 空 间 可 归 约 性。
对数空间转换器 ( log space transducer ) 是有一条只读输入带 、 一条只
写输岀带和一条读 / 写工作带的图灵机 。输出带的头部不能向左移动 ,因此它不能读已写
内容 。工作带可以包含 O( logU )) 个符号。对数空间转换器 M 计 算 一 个 函 数 ,
其中 f ( w ) 是把 w 放在 M 的输入带上启动 M 运行到 M 停机时输出带上存放的字符串。
称 / 为对数空间可计算函数 ( log space computable function )。如 果 语 言 A 通 过 对 数 空 间
第次章空间复杂性 221
现 在 已 经 做 好 定 义 NL 完 全 性 的 准 备 。
语言 B 是 NL 完 全 的 ,如 果
1. B G N L , 并 且
2. NL 中 的 每 个 A 对 数 空 间 可 归 约 到 B 。
如 果 一 个 语 言 对 数 空 间 可 归 约 到 另 一 个 已 知 属 于 L 的 语 言 ,则 这 个 语 言 也 属 于 L,如
下 述 定 理 所 阐 明 的。
A < LB 且 B 6 L,则 A 6 U
证 明 本 定 理 的 一 个 诱 人 的 证 明 思 路 是 仿 照 定 理 7.25 的 模 式 ,那 里 证 明 了 多 项 式 时
间 可 归 约 性 的 类 似 结 果 。 按 照 这 种 思 路 ,A 的 对 数 空 间 算 法 首 先 用 对 数 空 间 归 约 / 把 输 入
w 映 射 为 /( ttO , 然 后 应 用 B 的 对 数 空 间 算 法 。但 是 存 储 /( ) 的空间需求量可能太大,
不 能 放 进 对 数 空 间 界 限 内 ,所 以 需 要 修 改 这 种 方 法 。
^
^
A 的 机 器 不 再 算 出 整 个 /( w ),而 是 当 B 的 机 器 iV 需 要 的 时 候 计 算 /( w ) 的 个 别
符 号。在 模 拟 过 程 中 ,MA 记 录 的 输 入 头 在 /( w ) 上 的 位 置 。 每 一 次 MB 移 动 时 。 MA
重 新 开 始 在 w 上 计 算 / ,除 了 所 需 要 的 /( w ) 上 的 位 置 以 外 ,其 余 输 出 全 部 忽 略 。 这 么 做
可 能 不 时 地 要 求 重 新 计 算 /( ) 的 某 些 部 分 ,因 而 在 时 间 复 杂 性 方 面 是 低 效 的 。 这 种 方 法
^
的 好 处 是 在 任 何 时 刻 只 需 存 储 /( w ) 的 一 个 符 号 ,其 结 果 是 用 时 间 来 换 取 空 间 。
若 有 一 个 NL 完 全 语 言 属 于 L ,则 L = NL。
鼸
图中的搜索
PATH 是 NL 完 全 的 。
证 明 思 路 例 8.14 证 明 了 属 于 NL ,所 以 只 需 证 明 PATH 是 NL 难 的 。换 言
之 ,必 须 证 明 NL 中 的 每 个 语 言 A 对 数 空 间 可 归 约 到 PATH 。
从 A 到 PATH 的 对 数 空 间 归 约 背 后 的 思 想 是 构 造 一 个 图 ,用 来 表 示 判 定 A 的 非 确 定
型 对 数 空 间 图 灵 机 的 计 算 过 程 。归 约 把 字 符 串 加 映 射 为 一 个 图 ,图 中 结 点 对 应 于 非 确 定 型
图 灵 机 在 输 入 w 上 的 格 局 。一 个 结 点 能 指 向 另 一 个 结 点 的 条 件 是 第 一 个 结 点 对 应 的 格 局 能
在 非 确 定 型 图 灵 机 的 一 步 内 产 生 第 二 个 结 点 对 应 的 格 局 。 因 此 ,只 要 从 对 应 初 始 格 局 的 结
点 到 对 应 接 受 格 局 的 结 点 之 间 存 在 一 条 路 径 ,则 机 器 接 受 W o
证 明 这 里 说 明 了 怎 样 给 出 一 个 从 NL 中 的 任 意 语 言 A 到 P A T H 的 对 数 空 间 归 约。
设 非 确 定 型 图 灵 机 M 在 O( logn ) 空 间 内 判 定 A 。给 定 输 人 如 在 对 数 空 间 内 构 造
其 中 G 为 有 向 图 ,G 包 含 从 s 到〖 的 路 径 当 且 仅 当 M 接 受 比 。
G 的 结 点 是 M 在 w 上 的 格 局。对 于 M 在 w 上 的 格 局 和 ,如 果 Q 是 M 从 o 出 发
的 下 一 个 可 能 的 格 局 ,则 ( n ,
Q)
^^
是 G 的 一 条 边 。更 精 确 地 说 ,如 果 M 的 转 移 函 数 指 出 ,
的 状 态 和 它 的 输 入 带 头 和 工 作 带 头 下 的 符 号 一 起 能 产 生 下 一 个 状 态 和 带 头 动 作 ,使 变
^
C\
成 Q ,那 么 (O ,
Q ) 是 G 的 一 条 边 。结 点 s 是 iVf 在 w 上 的 初 始 格 局 。 机 器 M 被 修 改 为 只
有 唯 一 的 接 受 格 局 ,把 该 格 局 指 定 为 结 点 I
该 映 射 把 A 归 约 到 PATH ,原 因 是 只 要 M 接 受 输 人 ,它 就 有 一 个 计 算 分 支 接 受 ,这
对 应 于()中 一'条 从 起 始 格 局 5 到 接 受 格 局〖 的 路 径 。 反 之 ,如 果()中 存 在 从 .S 到 / 的 路 径 ,
_
222 第三部分复杂性理论
则 M 在 输 入 w 上 运 行 时 ,某 个 计 算 分 支 必 定 接 受 ,从 而 M 接 受 zv o
为 了 证 明 该 归 约 在 对 数 空 间 内 运 算 ,给 岀 一 个 对 数 空 间 转 换 器 ,它 在 输 入 w 上 输 出
s,
<G , t ) 通 过 列 出 G 的 结 点 和 边 来 描 述 G 。列 出 结 点 很 容 易 ,因 为 每 个 结 点 是 M 在 w 上
0
的 一 个 格 局 ,可 以 在 空 间 dog 内 表 示 出 来 ,c 是 某 个 常 数 。转 换 器 顺 序 地 走 遍 所 有 可 能
的 长 为 dog
^ ^
的 字 符 串 ,检 查 每 一 个 是 否 为
…^…
在! 上 的 合 法 格 局 ,输 出 那 些 通 过 检 查 的
字 符 串 。类 似 地 ,转 换 器 也 列 出 边 。对 数 空 间 足 以 验 证 在! 上 的 一 个 格 局 C 1 能 否 产 生
格局 Q ,因 为 转 换 器 只 需 通 过 考 察
函数是否会产生格局 Q
^
o 中 读 写 头 位 置 下 的 带 子 内 容 ,以 此 来 决 定 M 的 转 移
作 为 结 果 。转 换 器 依 次 检 查 所 有 的 ( n ,
C2 ),探 知 哪 些 是 G 的 合 格
的 边 。那 些 合 格 的 边 被 添 加 到 输 出 带 上 。
定 理 8.20 的 一 个 直 接 的 副 产 品 是 下 面 的 推 论 ,它 称 NL 是 P 的 子 集 。
Po
NL
^
证 明 定 理 8.20 说 明 ,NL 中 的 任 何 语 言 对 数 空 间 可 归 约 到 PATH 。前 边 讲 过 ,消
耗 空 间 /(〃) 的 图 灵 机 在 时 间〃2G( /( W )) R 运 行 ,所 以 在 对 数 空 间 内 运 行 的 归 约 器 也 在 多 项
式 时 间 内 运 行 。因 此 ,NL 中 的 任 何 语 言 多 项 式 时 间 可 归 约 到 PATH ,由 定 理 7.12 知 后
者 属 于 P。又 知 每 一 个 多 项 式 时 间 可 归 约 到 P 中 的 语 言 的 语 言 也 在 P 中 ,所 以 证 毕 。 ■
虽 然 对 数 空 间 可 归 约 性 限 制 更 加 严 格 ,但 是 由 于 计 算 问 题 通 常 是 简 单 的 ,故 对 于 复 杂
性 理 论 中 的 大 多 数 归 约 来 说 ,它 已 经 够 用 了 。 例 如 在 定 理 8.8 中 ,已 经 证 明 了 每 一 个
PSPACE 问 题 在 多 项 式 时 间 内 归 约 到 TQBF。在 归 约 过 程 中 产 生 了 重 复 度 高 的 公 式 ,它 们
完 全 的 。这 个 结 论 在 推 论 9.6 中 证 明 [ 、
或 许 可 在 对 数 空 间 内 计 算 ,因 此 或 许 可 以 得 出 结 论 : 利 用 对 数 空 间 ,TQBF 是 PSPACE
?3?八0 时 非 常 有 用。这 种 分 离 和 对 数 空 间 可
:
归 约 性 表 明 TQBF 芒 NL。
8.6 NL 等 于 coNL
本 节 包 含 有 关 复 杂 性 类 之 间 相 互 关 系 的 已 知 结 果 中 最 惊 人 的 结 果 之 一 。 一 般 认 为 NP
与 coNP 是 不 相 等 的 。乍 一 看 ,同 样 的 结 果 对 于 NL 和 coNL 似 乎 也 成 立 。 事 实 上 ,正 如
将 要 证 明 的 ,NL 等 于 coNL。这 说 明 我 们 关 于 计 算 的 直 觉 仍 有 许 多 空 白 。
NL = coNL。
证 明 思 路 为 了 证 明 coNL 中 的 每 个 问 题 也 在 NL 中 ,先 证 明 PATH 属 于 NL , 因 为
PATH 是 NL 完 全 的 。所 给 出 的 判 定 PATH 的 NL 算 法 M 在 图 G 不 包 含 从 s 到 的 路 径
时 ,必 须 有 一 个 接 受 计 算 。
首 先 解 决 一 个 容 易 些 的 问 题。令 c 是 G 中 从 s 可 达 的 结 点 数 。假 定 c 作 为 输 人 提 供 给
M , 先 说 明 怎 样 利 用 c 求 解 PATH ,然 后 再 说 明 怎 样 计 算 c 。
给 定 G, Z 和 c ,机 器 M 如 下 运 算 。M 逐 个 地 走 遍 G 的 所 有 m 个 结 点 ,非 确 定 地 猜
s,
测 每 个 结 点 是 否 从 s 可 达 。一 旦 结 点 w 被 猜 测 为 可 达 ,M 就 通 过 猜 测 一 条 从 s 到 z/ 的 路 径
来 验 证 这 一 点 。 如 果 一 个 计 算 分 支 没 能 在 m 步 内 验 证 这 一 猜 测 ( m 是 G 的 结 点 数 ),就 拒
绝 。另 外 ,如 果 一 个 分 支 猜 测 〖 可 达 ,就 拒 绝 。机 器 M 对 那 些 已 经 被 验 证 为 可 达 的 结 点 计
数 。当 一 个 分 支 走 遍 G 的 所 有 结 点 后 ,它 查 验 从 s 可 达 的 结 点 数 是 否 等 于 c ( 即 实 际 可 达
的 结 点 数),如 果 不 等 于 就 拒 绝 。 否 则 该 分 支 接 受 。
换 言 之 ,如 果 M 恰 好 非 确 定 地 挑 选 了 从 s 可 达 的 c 个 结 点 (不 包 括 0 , 并 且 通 过 猜 测
第S 章 空 间 复 杂 性 223
^ ^
G
过程 ,就获得所需的值 c = c
从 ct 中计算出 所用的思路与前面给出的思路相似 。 算法走遍 G 的所有结点 ,决
定每一个结点是否为 Al + 1 的成员 ,然后数成员的个数 。
为了判定结点 是否在 A ,+ 1 中 ,用一个内层循环走遍 G 的所有结点 ,猜测每一个结
^
点是否在八:中 。每一次成功的猜测是由猜测一条从 s 岀发 、 长度至多为 f 的路径来证实 。
对于每个证实了在 A , 中 的 结 点 ,算 法 检 查 是 否 是 G 的一条边 。如果是其中的一
“
条边 ,则 I 在 Al + 1 中 。另外 ,证实了在 A , 中的结点的数目也被计算出来 。在内层循环结
束 时 ,如 果 证 实 属 于 的 结 点 总 数 不 等 于 则 A: 的全部结点还没有被找完 ,所以该计
算 分 支 拒 绝 。 如 果 总 数 的 确 等 于 并 且 I;还没有证实属于 A ,则可以下结论说它不在
中 。然后走到下一个 % 开始外层循环 。
证 明 判 定 PATH的算法如下 。这里令 m 为 G 的结点数 。
=“对输入〈G, 5,
之〉:
1 令 Co —1 6/ =0 o [A 0 = { 5 }有 1 个结点]
2 对 f =0 到 m -l : [从 G 计算 C ,+ l ]
3. 令 Cl+ l =1 O [G + i 计数在 Al + 1 中的结点]
4. 对 G 中的每个结点 T;( V 关S ): [检查是否 A , -M ]
5. 令 d =0 o [d 计数 Ai 中的结点数]
6. 对 G 中的每个结点 M : [检查是否 wGA ,]
非确定地执行或者跳过下列步骤 :
8. 非确定地沿着从 s 岀发 、 长度至多为 〗 的路径行进 ,如果没
有碰到结点 w ,就拒绝 。
9. d 加 1。 E ^ eA, ]
10 . 如果 ( u ,
v ) 是 G 的一条边 ,则 G +1 加 1 。W 变为下一个结
点 ,转向步骤 5 。 Ai+i ]
11. 若 d 古 a ,则拒绝 。 [检查是否找到所有 A:]
12 令 d = 0 o [现在已知 Cm ,d 计数 Aw 中的结点数]
13. 对 G 中的每个结点 [检查是否 wG Am ]
14 . 非确定地执行或跳过下列步骤 :
15 . 非确定地沿着从 s 出发 、 长度至多为 m 的路径行进 ,如果没有碰到结
点 w 就拒绝 。
16 . 若 u = t ,则拒绝 。 [找到从 s 到 f 的路径]
17 . d 加 1。 [w 6 Am ]
224 第三部分复杂性理论
^ ^
PSPACE
L NL = coNL NP
^
我们还不知道这些包含关系是否有真包含 ,虽然在第 9 章推论 9 . 6 中将证明 N L C
PSPACE 。 所以 ,coNLSP 和 PSPSPACE 中一定至少有一个成立 ,但是不知道哪一个
成立! 大多数研究者推想所有这些包含关系都是真包含 。
-
练习
8.1 证 明 对 于 任 意 函 数 /: N R + , 其 中 /( « )> 不论用单带图灵机模型还是用双带只读输入图
灵 机 模 型 ,所 定 义 的 空 间 复 杂 性 类 SPACE( /(〃)) 总是相同的 。
8.2 考 虑 下 面 标 准 的 儿 童 游 戏 的 棋 局 。设 下 一 步 轮 到 X 方 选 手 走 。请 描 述 该 选 手 的 必 胜 策 略 。(回 忆
前 边 所 学 内 容 ,必 胜 策 略 不 仅 仅 是 在 当 前 棋 局 中 的 最 佳 走 步 ,它 还 包 括 该 选 手 为 了 取 胜 而 必 须
采 取 的 所 有 应 手 ,不 论 对 手 如 何 走 步 。
)
8.3 考 虑 下 图 所 示 的 广 义 地 理 学 游 戏 ,其 中 起 始 结 点 就 是 由 无 源 箭 头 指 向 的 结 点 。 选 手 I 有必胜策
略 吗? 选 手 n 呢? 给 出 理 由 。
XD ~~K2)~K3)
4 5
8.4 证 明 PSPACE 在 并 、 补 和 星 号 运 算 下 封 闭 。
A8 . 5 证明 ADFAGL。
8.6 证 明 PSPACE 难 的 语 言 也 是 NP 难 的 。
A8 .7 证 明 NL 在 并 、 连 接 和 星 号 运 算 下 封 闭 。
问题
*
8.8 尼 姆 游 戏 的 道 具 是 几 堆 树 枝 。 在 一 步 中 ,选 手 从 一 个 堆 中 拿 走 至 少 一 根 树 枝 。 选 手 们 轮 流 交 替
地 拿 走 树 枝 ,拿 走 最 后 一 根 树 枝 的 选 手 算 输 。假 设 在 尼 姆 的 一 个 局 势 中 有 々 堆 树 枝 ,每 堆 分 別
包含 …,
, 4 根 树 枝 。如 果 把 每 个 数 写 成 二 进 制 形 式 ,并 且 每 个 二 进 制 数 排 成 矩 阵 的 一 行 ,
^
低 位 对 齐 以 后 ,每 一 列 包 含 偶 数 个 1 ,则 称 局 势 是 平 衡 的 。 证 明 下 面 两 个 事 实 :
a. 从 一 个 非 平 衡 的 局 势 出 发 ,存 在 一 步 使 得 局 势 变 成 平 衡 的 。
b. 从 一 个 平 衡 的 局 势 出 发 ,每 一 步 都 使 得 局 势 变 成 非 平 衡 的 。
令
…,
N I M = { < 5! , &> I 每个是二进制数,
选手 I 在尼姆游戏中从该局势出发有必胜策略 }
利 用 前 面 关 于 平 衡 局 势 的 事 实 证 明 N I M 属 于 L。
8.9 令 是 二 进 制 自 然 数 且 aX 6= c }。证明 ML/LTGL。
表示 A 是 B 的真子集 。 译者注
襄汐章空间复杂性 225
^
0 )。定 义 函 数 尺 r )=:r : 。
a. 令 A 2 ={〈:, 3;|尺 + ( 工)= 3;
〉 },证 明 A 2 L 。
8. 11
b. 令 A 3 =〈
^
:
{ x,
a. 令 ADD =〈 y,
:
{ :r ,
z〉
y|
:
U,
尺 ( 尺 + ( x ))=:
>
y,
+ y },证 明 A 3 L。
- - y= z ) , 证 明 ADDGL。
z > 0 且 为 二 进 制 整 数 ,x \
b. 令 PAL-ADD =〈 1 工,
3 >0 且 为 二 进 制 整 数 ,I + J 是 整 数 且 其 二 进 制 表 示 是 回 文 }。( 假
^
{ : 3;
〉
A D D 6 L。 ^
设 求 和 的 结 果 的 二 进 制 首 位 不 是 0 , 顺 读 和 倒 读 都 是 一 样 的 字 符 串 称 为 回 文。
) 证 明 PAL-
*
8.12 :
令 L/CyCL £ =〈 |G 是 包 含 一 个 简 单 回 路 的 无 向 图 },证 明 [/CYCLEeL 。
{ G〉 (注 :G 可 能 不 是 连
通 图。
)
*
.
8 13 证明对每个 存 在 两 个 长 度 为 p0 bU ) 的 正 则 表 达 式 尺 和 S ,其 中 L( i? )关 US),但 它 们 包 含
的 第 一 个 相 异 的 字 符 串 是 指 数 长 的 。换 言 之 ,U R ) 和 L( S) 必 须 是 不 同 的 ,然 而 对 某 些 常 量
>0 , 字 符 串 的 长 度 为 P 时 二 者 是 一 样 的 。
8.14 如 果 无 向 图 的 结 点 可 以 分 成 两 个 集 合 ,使 得 所 有 边 都 从 一 个 集 合 的 结 点 连 到 另 一 个 集 合 的 结
点 ,则 该 无 向 图 称 为 二 部 的 ( bipartite)。证 明 一 个 图 是 二 部 的 当 且 仅 当 它 不 含 有 奇 数 个 结 点 的
圈 。令
BIPARTITE = 〈 〉 G 是二部图}
{ G|
^
证 明 BJPAi TVTEGNL。
8.1 5 令 L/PA 丁H 是 无 向 图 中 PATH 的 对 偶 ,证 明 。( 注 :在 文 献 C). Rein -
gold[6 2]中 证 明 了 L/PATT/ GL ,Siti:BIPARTITEe L , 但 其 算 法 有 点 复 杂 。
)
8.16 回 忆 一 下 ,在 有 向 图 中 ,如 果 每 一 对 结 点 间 都 有 双 向 的 有 向 路 径 连 接 ,则 它 称 为 强 连 通 的
( strongly connected ) 0 令
STRONGLY- CONNECTED = {〈 G〉 |G 是 强 连 通 图 }
证 明 STRONGLY- CONNECTED 是 NL 完 全 的。
^
8.17 令 ,M2 ) \ MY 和 M2 是 NFA’UiV ) fl L( M2 )关 0 }。 证 明 B O T H N F A 是 NL 完
全 的。
8 . 1 8 证 明 AnfaS NL 完 全 的 。
8 . 1 9 证 明 EDFA 是 NL 完 全 的 。
*
8.20 证 明 2 SAT 是 NL 完 全 的 。
8.21 令 C N F H1 = { < 0 k 是 一 个 可 满 足 的 cnf 公 式 ,其 中 每 个 子 句 包 含 任 意 多 个 肯 定 的 文 字 ,但 最 多
只 有 一 个 否 定 的 文 字 。并 且 ,每 个 否 定 的 文 字 在 彡 中 最 多 出 现 一 次 }。 证 明 CiVFH1 SNL 完
全 的。
*
.
8 22 给 岀 一 个 是 NL 完 全 的 上 下 无 关 语 言。
A* 8.23 令 CYCLE =〈 > G 是 包 含 一 个 有 向 回 路 的 有 向 图 }。证 明 CrcLE 是 NL 完 全 的 。
{ G|
.
8 24 { R,
令 EQREX = 〈 S〉| 尺 和 S 是 等 价 的 正 则 表 达 式 }。证 明 EQREXGPSPACE。
8.25 梯 子 ( ladder ) 是 一 个 字 符 串 的 序 列 51 52 ** •»5
* 其中每个字符串与前一个字符串恰好只在一
个 字 母 上 不 同 。例 如 ,下 面 是 一 个 英 文 单 词 的 梯 子 :
head ,hear ,near , fear , bear,beer , deer , deed , feed , feet , fret , free
4 LADD£: { M,
i? DFA = 〈
:
结 束 的 梯 子 }。证 明 LADM i? DFA 属 于 PSPACE。
—
s , 0 | M S f D F A ,L ( M) 包含一个以字符串 5 开 头 、以 字 符 串 z
8.26 五 子 棋 游 戏 由 两 名 选 手 “X” 和 “ O” 在 1 9 X 1 9 的 网 格 上 比 赛 。选 手 们 轮 流 放 棋 子 ,第 一 个 把
自 己 的 5 个 棋 子 连 续 地 放 在 一 行 、 一 列 或 者 一 条 对 角 线 上 的 选 手 就 是 贏 家 。考 虑 把 该 游 戏 推 广
到 棋 盘 上 。令
GM = { ( B ) I 其 中 选 手“X”有 必 胜 策 略 }
J3 是 推 广 的 五 子 棋 的 棋 局 ,
226 第三部分复杂性理论
这 里 的 棋 局 是 指 放 有 一 些 棋 子 的 棋 盘 ,它 可 能 在 下 棋 的 过 程 中 出 现 。
证 明 GMG PSPACE。
.
8 27 证 明 如 果 每 一 个 NP 难 的 语 言 也 是 PSPACE 难 的 ,则 PSPACF = NP。
8.28 证 明 当 限 制 跟 在 量 词 后 面 的 那 部 分 公 式 是 合 取 范 式 时 ,TQBF 仍 是 PSPACE 完 全 的 。
8.29 定 义 八 隱 二 以 剋 ⑽糾 剋 是 一 个 接 受 输 入 功 的 LBA } , 证 明 ALBA 是 PSPACE 完 全 的 。
*
8.30 猫 捉 老 鼠 游 戏 由 两 名 选 手 “猫” 和 “老 鼠” 在 一 个 任 意 的 无 向 图 上 竞 赛 。在 给 定 时 刻 ,每 名 选
手 占 据 图 的 一 个 结 点。 选 手 们 轮 流 走 到 与 当 前 占 据 的 结 点 相 邻 的 结 点 上 。图 中 有 一 个 特 殊 的 结
点 称 为 “洞”。 如 果 双 方 同 时 占 据 同 一 个 结 点 ,则 猫 赢 。如 果 老 鼠 在 此 之 前 到 达 洞 ,则 老 鼠 赢 。
如 果 双 方 同 时 到 达 以 前 占 据 的 位 置 ,则 为 平 局 。令
HAPPY- CAT = {〈 G,
c, /0 丨 G ,
m, c, h 分 别 为 图 和 猫 的 位 置 、老 鼠 的
m,
位置和洞 ,
使得如果猫先走 ,
则猫有必胜策略 }
-
证 明 HAPPy CAT 属 于 P。
8.31 考 虑 问 题 7.3 9 中 描 述 的 语 言 PUZZLE 的 双 人 版 。每 名 选 手 开 始 时 都 有 一 叠 排 好 序 的 谜 卡 。他
们 轮 流 地 按 序 把 卡 片 放 进 盒 子 ,并 有 权 选 择 哪 一 面 朝 上 。 如 果 在 最 终 的 盒 子 中 所 有 孔 的 位 置 都
被 堵 住 了 ,则 选 手 I 赢 。如 果 还 有 孔 的 位 置 没 被 堵 住 ,则 选 手 n 赢 。证 明 对 于 给 定 的 卡 片 的 起
始 格 局 ,判 定 哪 位 选 手 有 必 胜 策 略 的 问 题 是 PSPACE 完 全 的 。
.
8 32 理 解 在 问 题 7.2 1 中 对 MJN- FORMULA 的 定 义 。
a. 证 明 PSPACE。
b. 解 释 下 面 的 论 证 为 何 不 能 证 明 MIN- FORMULA 6 coNP:
如 果 尺ML7LA , 则 # 有 更 小 的 等 价 公 式 。一 个 非 确 定 型 图 灵 机 通 过 猜 测 这 个 等
价 公 式 能 验 证 j eMIN - FORMULA
<> Q
.
8 33 设 A 是 由 正 确 嵌 套 的 圆 括 号 组 成 的 语 言。例 如 , (( )))( ) 属 于 A . 而 )
(( )) 和 (( ) (则 不 属 于
A 。证 明 A 属 于 L。
*
8.34 设 B 是 由 正 确 嵌 套 的 圆 括 号 和 方 括 号 组 成 的 语 言。 例 如 , :
([ ( )( )]( )[ ]) 属 于 J3 , 而 ([)]不
属 于 B。证 明 B 属 于 L。
习题选解
8.5 构 造 一 个 图 灵 机 M 判 定 ADFA 。 对 于 输 人 (其 中 A 为 DFA ,如 是 一 个 字 符 串),M 在 W
上 模 拟 A ,方 法 是 通 过 跟 踪 A 的 当 前 状 态 和 输 入 头 的 位 置 ,并 适 时 地 修 改 它 们 。 因 为 只 需 要 存
储 指 向 输 入 的 指 针 ,所 以 完 成 这 个 模 拟 需 要 的 空 间 是 Odog 幻 。
8.7 令 义!,A 2 分 别 是 由 NL 机 器 州 和 iV2 判 定 的 语 言。构 造 三 个 图 灵 机 :Nu 判 定 AiUA ,iV。
判 定 Al 0 A 2 , JV * 判 定 Af , 每 个 图 灵 机 的 输 入 为 w。
图灵机 iVu 不 确 定 地 分 支 来 模 拟 州 或 iV2 , 在 两 种 情 况 下 ,如 果 被 模 拟 的 机 器 接 受 ,则 Nu
接受。
。
图 灵 机 iV 不 确 定 地 在 输 入 串 中 选 择 一 个 位 置 将 它 分 成 两 个 子 串 。由 于 没 有 足 够 的 空 间 存 储 子
。
串 ,所 以 在 工 作 带 上 只 存 放 该 位 置 的 指 针 。首 先 ,N 在 第 一 个 子 串 上 模 拟 iV。不确定地分
支 模 拟 iV! 的 不 确 定 性 。在 其 中 任 何 一 个 分 支 上 达 到 的 接 受 状 态 后 ,iV。在第二个子串上模
拟 iv2 。如 果 其 任 何 一 个 分 支 达 到 iV2 的 接 受 状 态 ,则 N 接受 。 。
机 器 的 算 法 比 较 复 杂 ,下 面 描 述 其 步 骤 。
N ,= “对 于 输 入 说:
1. 初 始 化 两 个 输 入 位 置 指 针 灼 和 外 ,令 外 = 0 ,外 = 0 , 即 外 和 和 指 向 第 一 个 输 人 字
符 前 面。
2. 若 p2 之 后 无 输 入 符 号 则 接 受 。
襄汐章空间复杂性 227
3. 向前移动外 ,非确定地选择一个输入位置 。
4. 在 h 和外之间的子串上模拟 iVi ,分支不确定地模拟 M 的不确定性 。
5. 若模拟的这个分支达到了 M 的接受状态 ,则令仏 = 外 ,返回步骤 2。如果 M 在这
”
个分支上拒绝 ,则拒绝 。
到 s 的边 ,从而修改
、
8.23 将 PATH 归约到 CYCLE 。归约的思路是通过在图 G 上添加一条从 f
PATH 问题的例子 i G ,
s,t 。若在 G 中存在一条从 5 到( 的路径 ,那么在修改后的 G 中就存在
一个有向回路。因为在修改前的 G 中或许已经存在其他回路 ,所以在修改后的 G 中除了从 5 到
-
f 的回路外 ,有可能存在其他回路 。为了解决这个问题 ,首先要修改 G ,使之不包含回路 。 引入
分级有向图 ( leveled directed graph ) 的概念 ,分级有向图中的结点被分成多个组 :A\ ,A 2 , *
,
到下一级
,
点 , '是 在最后一级的对应结点。图 G 包含从 5 到〖 的路径当且仅当包含从 / 到 的路径 。
如果修改 G',在其中增加一条从 到 / 的边 ,则得到了从 PATH 到 CYCLE 的归约 。 这个归约
计算是很简单的 ,并且其完成只需要对数空间 。更进一步说 ,一个直观的过程证明了 CYCLE 6
NL 综 上 所 述 ,CyCLE 是 NL 完全的 。
0
第9章
Introduction to the Theory of Computation , 3 e
难 解 性
某些计算问题在理论上虽然是可解的 ,但是获得其解需要耗费大量的时间或空间 ,导
致其难以在实践中得到应用 ,这 样 的 问 题 称 为 难 解 的 ( intractable )。
在第 7 、 8 章中 ,介绍了几个被认为是难解的问题 ,但是还没有一个得到证明 。例如 ,
虽然还不知道怎样证明 ,但大多数人相信 SAT 问题和其他所有 NP 完全问题都是难解的 。
本章给岀几个能够被证明是难解的问题 。
为了给岀这些例子 ,先证明几个定理 ,将图灵机的能力与计算可获得的时间或空间数
量关联起来 。在本章的最后 ,进一步讨论了证明 NP 中的问题是难解的可能性 ,也就是解
决 P 问题与 NP 问题的可能性 。首先 ,介绍相对化技术 ,利用它来证明采用某些方法并不
会达到这一目标 。然后 ,讨论一种被研究者采用并已显示出一定前景的方法—电路复杂
性理论 。
9. 1 层次定理
通常的直觉是 ,给图灵机更多的时间或空间就能扩大它所能求解的问题类 。 例如 ,在
时间 n3 内 ,图灵机应能比在时间 n 2 内判定更多的语言 。 层 次 定 理 ( hierarchy theorem )
证明了这种直觉在满足某些条件下的正确性 。采用术语层次定理 ,是因为这些定理中的每
一个都证明了时间和空间复杂性类不全相同—它们形成一个层次结构 ,其中时空界限较
大的类比时空界限较小的类包含更多的语言 。
空间复杂性层次定理比时间复杂性层次定理稍简单一些 ,故首先介绍它 。 在实际陈述
—
定理之前 ,引入下面的定义 。
对 于 函 数 /:N N ,其 中 /( W ) 至 少 为 CKlogn ),如 果 函 数 / 把 P 映 射 为
f ( n ) 的 二 进 制 表 示 ,并 且 该 函 数 在 空 间 OC / U )) 内 是 可 计 算 的 ,则 称 该 函 数 为 空 间 可
构 造 的 ( space constructible )。
换言之 ,如果存在某个图灵机在 0( /(〃)) 空间内运行 ,而且在输人 1 时总能停机 ,
停机时 /( n ) 的二进制表示出现在带子上 ,则 / 是空间可构造的 。为了具备时间和空间可
构造性 ,如〃\og 2 n 和W 这一类带小数的函数被向下舍入到紧邻的较小的整数上 。
'
(HO 通常出现的复杂度至少为 O( logn ) 的函数都是空间可构造的 ,包括 log2 rz ,
log2 72 和 W 2
0
© 其中 ,1”的意思是 n 个 1 的字符串。
第 夕 章 难 解 性 229
从下面的讨论中可以理解空间可构造性在空间层次定理中的作用。若 / U ) 和 g( n )
是两个空间界限 , f ( n ) 渐近地比 g( rz ) 大 ,则机器在 / U ) 空间内所能判定的语言比在
gU )空间内多。然而 ,假如 /( n ) 超过 g( /2 ) 的那部分数量非常小而且难以计算 ,那么机
器可能无法有效地利用多出来的那部分空间 ,因为仅是计算多出来的空间数量所需消耗的
空间就可能比所获得的空间还要多。在这种情况下 ,机器在 /( n ) 空间内所能计算的语言
不会比在 g( n ) 空间内更多 。规定 /( n ) 是空间可构造的就可避免这种情况 ,这样就可以
证明 ,机器所能计算的语言比它在任何渐近更小的界限内所能计算的语言更多 ,如下面的
定理所示 。
( 空 间 层 次 定 理) 对 于 任 何 空 间 可 构 造 函 数
间 0( /( n )) 内 可 判 定 ,但 不 能 在 空 间 0( /( 72 )) 内 判 定 。
证明思路必须说明一个语言 A 具有两个性质:第一 ,A 在 0( /(〃)) 空间内可判定 ,
/: N — N ,存 在 语 言 A ,在 空
第二 ,A 不能在 o( /U )) 空间内判定 。
通过给岀判定算法 D 来描述 A 。算法 D 将在 0( /(〃))) 空间内运行 ,从而保证了第
一个性质。进而 ,D 将保证 A 不同于任何在 0( /( n )) 空间内可判定的语言 ,从而保证了
第二个性质。不要指望语言 A 能够像迄今为止本书中介绍的其他语言那样 ,有一幅简单明
了的图像 。语言 A 只能通过算法来描述 ,没有更简单的 、 非算法的定义 。
为保证 A 不能在 o( / U )) 空间内判定 ,设计 D 用以实现定理 4.9 中证明接受问题
ATM 不可解时所采用的对角线法 。如果 M 是在 o( /( W )) 空间内判定一个语言的图灵机 ,
则 D 保证 A 与 M 的语言至少存在一点不同的地方 。是哪个地方? 就是对应于描述 M 自己
的地方 。
看一看 D 的运算方式 。简单地讲 ,D 把它的输人看作是图灵机 M 的描述 。(如果输入
不是任何图灵机的描述 ,则 D 在该输人上的动作是无意义的 ,所以武断地让 D 拒绝即
可。
) 然后 D 在同一输人 (即〈M > ) 上在空间界限 f ( n ) 内运行 M。 如果 M 在这么大空
间内停机 ,则 D 接受当且仅当 M 拒绝 。 如果 M 不停机 ,则 D 拒绝 。所以如果 M 在空间
f ( n ) 内运行 ,则 D 有足够的空间保证它的语言不同于 M 的语言 。否则 ,D 没有足够的空
间算出 M 的结果 。但幸运的是 ,并没有要求 D 的行为与不能在 0( /( )) 空间内运行的机
器不同 ,所以 D 在该输入上的动作是无关紧要的 。
该描述抓住了证明的本质,但忽略了几个重要的细节 。如果 M 在 o( / U )) 空间内运
行 ,则 D 必须保证它的语言不同于 M 的语言 。但是即使 M 在 0( /( 幻 ) 空间内运行 ,它也
可能对于小的 n 消耗比 /( n ) 多的空间 ,只要这种渐近行为还没有 “消亡”,D 就有可能
没有足够的空间在输入〈M〉上把 M 运行完 ,从而使 D 失去一次避开 M 的语言的机会 。
于是 ,一不小心 ,D 就可能与 M 判定同一语言 ,从而定理无法得证。
通过修改 D,给它另外的机会来避开 M 的语言可以弥补这一问题 。不是只在 D 收到
输入〈M〉时才运行 M,而是只要收到形式为 〈 M〉10 * 的输人 ,即形如 〈 M〉后面跟着
一个 1 和一些 0 的输人 ,就运行 M。那么 ,如果 M 真的在 0( /( d ) 空间内运行 ,则由于渐
近行为最终肯定是要消亡的 ,所以对于某个大的々值 ,D 将 有 足 够 的 空 间 在 输 入 上
230 第三部分复杂性理论
把 M 运行完 。
最后一个技术问题是 ,当 D 在某个字符串上运行 M 时 ,M 可能陷入死循环而占用有
穷空间 。但是 D 应该是一个判定机 ,所以必须保证 D 在模拟 M 时不会循环 。 任何在空间
o( /( n )) 内 运 行 的 机 器 只 消 耗 时 间 。修 改 D ,使它计算在模拟 M 中用掉的步数 。
如果计数超过 2 ,则 D 拒绝 。
>
—
不判定 A ,这与假设矛盾 。所以 A 不是在 0( /U )) 空间内可判定的 。 ■
对 于 任 意 两 个 函 数 /i ,
/2 :N N ,其 中 A U) 等 于 o( /2 ( n )),/2 是 空 间
可 构 造 的 ,有
SPACEC /UnDSSPACEChU )) 。
该推论允许把不同的空间复杂性类彼此分开。例如 ,容易证明对于任何自然数 c,函数
nc 是空间可构造的。因此对于任意两个自然数 d <c2 , 可以证明 SPACEC ^i )C SPACE( 2 )
^
0
回 忆 一 下 表 示 A 是 B 的真子集 。
证明萨维奇定理说明 NL
SPACE( n ), 所以推论成立 。
N L £ PSP ACE。
^
SPACE( log2
^
), 空间层次定理说明
231
SPACE( log2 n )C
_
—
正如在 8.5 节末所说的那样 ,就对数空间可归约性而言 ,TQBF 是 PSPACE 完全的 ,
所以 NL。
现在建立本章的主要目标 : 证明存在理论上可判定而实际中不可判定的问题 ,即可
判定而难解的问题 。 每一个类 SPACE( V ) 包含在类 SPACEU ) 中 ,后者又严格包
含在类 SPACE( 2”) 中 。 所以得到下面补充的推论 ,把 PSPACE 与 EXPSPACE = U*
^
SPACE( 2 )分开 。
鎌CTi PSPACE C EXPSPACE 0
就判定过程必须消耗多于多项式的空间这一意义而言 ,该推论证明存在难解的但可判
定的问题 。语言本身有一些不太自然 —它们只是为了分离复杂性类才有意义 。在讨论时
—
间层次定理以后 ,利用这些语言来证明其他更加自然的语言的难解性 。
謙蜃邏 , 对于函数 hN N ,其 中 〆72 ) 至 少 为 0( n logn ),如 果 函 数 把 1 映 射 为
t( n ) 的 二 进 制 表 示 ,并 在 时 间 OU( rz )) 内 可 计 算 ,则称该函数为时间可构造的 ( time
constructible) 0
‘
dMtk 通常出现的不小于 nlog/2 的函数都是时间可构造的 ,包括函数 nlogrz ,n ,
n2 以及 2”。
例如 ,为了证明是时间可构造的 ,首先设计一个图灵机 ,以二进制计算 1 的个
数 。为此该图灵机沿着带子移动一个二进制计数器 ,每到一个输入位置就把它加 1 ,直至
输人的末端 。因为对于 n 个输入位置的每一个都需要消耗 O( logTz ) 步 ,所以这部分工作消
耗 O( nlogrz) 步 。然后 ,从 n 的二进制表示中计算岀 Lni」
的二进制形式 。因为涉及的数
的长度是 Odog/z ),所以任何合理的计算方法都将消耗 OUlogn ) 时 间 。 ■
—
性 。可以对其他计算模型证明更紧的时间层次定理。
( 时 间 层 次 定 理) 对 于 任 何 时 间 可 构 造 函 数 hN N ,存 在 语 言 A ,在 时
间OU( n )) 内 可 判 定 ,但 在 时 间 oO( n )/log£( n)) 内 不 可 判 定 。
证明思路本定理的证明类似于定理 9.3 的证明。构造一个图灵机 D 在时间 OGO ))
内判定语言 A,而 A 不能在时间 oU0i)/ lOgKrz)) 内被判定。这里 ,D 读取一个形如〈M>10 * 的
输 入 模 拟 M 在输人 w 上的运行 ,确保时间消耗不超过〆n )。如果 M 停机的时间在这
之内 ,则 D 给出相反的输出 。
证明中重要的差别涉及模拟 M 的开销以及计算模拟所使用的步数的开销 。 机器 D 必
232 第三部分复杂性理论
高效率的模拟 。
证 明 下 面 的 OUU )) 时间算法 D 所判定的语言 A 不是在 oUU )/log〖 U )) 时间内
可判定的 。
1)=“对输人 0>:
*
1. 令 ?2 是 W 的长度 。
2. 利用时间可构造性计算〆〃),把值「Kn )/ l0g( 72 )1 存放在一个二进制计数器中 。
在每一次执行步骤 4 、 5 之前 ,把该计数器减 1。如果计数器减到 0 , 就拒绝 。
3. 若 w 的形式不是〈M〉 10 * ,其中 M 是某个图灵机 ,则拒绝 。
4. 在 w 上模拟 M。
5. 若 M 接受 ,则拒绝 ;若 M 拒绝 ,则接受 。
”
考察该算法的每一步以确定运行时间 。 步骤 1 、 2 、 3 能够在 O( Kn )) 时间内完成 。
在步骤 4 , 每次 D 模拟 M 的一步 ,它都要读取 M 的当前状态以及 M 读写头下的带子
符号 ,在 M 的转移函数中查找 M 的下一个动作 ,以使它能够适当地更新 M 的带子内容 。
所有这三个对象 (状态 、 带子符号和转移函数) 都存放在 D 的带子上的某处 。 如果它们彼
此分开很远 ,则 D 每次模拟 M 的一步都需要走许多步来收集这些信息 。所以 ,D 总是把
这些信息放在一起 。
可以把 D 的单带组织成轨道 。得到两条轨道的一种方法是以奇数位置存储一条轨道 ,
以偶数位置存储另一条轨道 。另一种获得两条轨道效果的方法是扩大 D 的带子字母表 ,使
它包括每一对符号 :一个符号来自上轨道 ,另一个符号来自下轨道 。 更多的轨道效果也可
以类似获得 。注意 ,如果只使用固定数目个轨道 ,多轨道就只增加一个常数倍的时间开
销 。 这里 ,D 采用三条轨道 。
第一条轨道存储 M 的带子内容 ,第二条轨道包含 M 的当前状态和转移函数的副本 。
在模拟过程中 ,D 将信息保持在第二条轨道上 ,靠近第一条轨道上 M 的读写头的当前位
置 。每次 M 移动读写头时 ,D 搬动第二条轨道上的所有内容 ,使它靠近该读写头 。第二
条轨道上信息的长度仅依赖于 M,而不依赖于 M 的输人的长度 ,所以搬动操作只使模拟
时间增加常数倍 。进一步讲 ,所需的信息都靠得很近 ,所以在转移函数中查找 M 的下一
个动作并更新带子内容的开销就只是个常数 。因此 ,如果 M 在 时 间 内 运 行 ,D 就能
在O(gU ))时间内模拟它 。
在步骤 4 的每一步 ,D 必须把原先在步骤 2 中设置的步数计数器减 1。 这里 ,D 可以
在不显著增加模拟时间的条件下完成这一操作 ,这只需把二进制计数器存放在第三条轨道
上 ,并使它保持靠近当前读写头的位置 。该计数器的量值大约是 Kn )/logKn ),所以它的
长度是 log( Kn)/logi( n)),即 O( logKn ))。因此在每一步 ,更新和移动它给模拟时间增加
KrO /logdrz )倍的幵销 ,于是使得全部运行时间达到 O( KrO )。所以 A 是 OUU )) 时间内
可判定的 。
拉賺置
_
为 g( n ) 等 于 O( K /2 )/ logKr0 ),所 以 存 在 某 个 常 数 no ,使 得 对
且 G 是 时 间 可 构 造 的 ,有
■0EKI
指数空间完全性
对于任意两个函数
“ 山:
N
TIMEChUDSTIMECkCTi—
对 时 间 复 杂 性 建 立 类 似 于 推 论 9 . 4 , 9.5 和 9.7 的 推 论。
))。
第 夕 章 难 解 性
为 了 证 明 A 不 是 oUUVlogM /z )) 时 间 内 可 判 定 的 ,采 用 类 似 于 定 理 9.3 的 证 明 中 所
使 用 的 推 理 。 假 定 其 反 面 成 立 ,即 存 在 图 灵 机 M 在 时 间 g( n ) 内 判 定 A ,即 gU ) 等 于
o( t( n )/ \o g t( n )) 这 里 ,D 能 够 在 时 间 dgU ) 内 模 拟 M,
0 其 中 d 是 某 个 常 数 。如 果 全 部 模
拟 时 间 (不 包 括 更 新 步 骤 计 数 器 的 时 间 ) 最 多 是 KW / logK /O , 则 模 拟 过 程 可 以 完 成。因
利 用 前 面 的 结 果 ,可 以 证 明 一 个 具 体 的 语 言 事 实 上 是 难 解 的 。证 明 过 程 分 成 两 步 。首
先 ,层 次 定 理 说 明 图 灵 机 在 EXPSPACE 内 比 在 PSPACE 内 判 定 更 多 的 语 言 。然 后 ,证 明
有 关 广 义 正 则 表 达 式 的 一 个 具 体 的 语 言 是 EXPSPACE 完 全 的 ,因 此 不 能 在 多 项 式 时 间 内
( 甚 至 不 能 在 多 项 式 空 间 内) 判 定 。
233
,d g{ n)< t{ n )/ \o g t{ n )
。
0
^
而
在 推 广 正 则 表 达 式 之 前 ,先 简 要 回 顾 一 下 定 义 1 . 2 6 中 正 则 表 达 式 的 定 义 。它 们 是 从
原 子 表 达 式 0 ,e 以 及 字 母 表 中 的 符 号 出 发 ,通 过 运 用 正 则 运 算 构 造 起 来 的 。 这 些 正 则 运
算 包 括 并 、 连 接 和 星 号 ,分 别 用 1 。和
^
* 表 示 。从 问 题 8 . 2 4 可 知 ,可 以 在 多 项 式 空 间 内
判 定 两 个 正 则 表 达 式 的 等 价 性。
下 边 将 证 明 ,如 果 允 许 正 则 表 达 式 采 用 比 通 常 的 正 则 运 算 更 多 的 运 算 ,则 分 析 表 达 式 的
复 杂 性 将 急 剧 上 升 。设 个 是 指 数 运 算 ( exponentiation operation), 若 是 一 个 正 则 表 达 式 ,々
是 一 个 非 负 整 数 ,则 写 法 i? 个々等价于 i? 自 身 连 接 々 次 。也 可 把 缩 写 为 W 。换 言 之 ,
久
= R \ k = RoR o ••• o R
广 义 正 则 表 达 式 允 许 指 数 运 算 ,也 允 许 通 常 的 正 则 运 算 。显 然 ,广 义 正 则 表 达 式 仍 然
产 生 正 则 语 言 ,跟 标 准 正 则 表 达 式 一 样 。通 过 重 复 基 本 的 正 则 运 算 表 达 式 ,可 以 除 去 指 数
运 算 。令
EQRExt = {( Q ,R ) I Q 和 尺 是 等 价 的 带 指 数 运 算 的 正 则 表 达 式 }
为 了 证 明 EQREXf 是 难 解 的 ,可 以 证 明 它 对 于 类 EXPSPACE 是 完 全 的 。 任 何
EXPSPACE完 全 问 题 都 不 可 能 在 PSPACE 中 ,更 不 用 说 P 了 。 否 则 EXPSPACE 将 等 于
PSPACE , 与 推 论 9.7 矛 盾 。
>ytailigk 语 言 B 是 EXPSPACE 完 全 的 ,如 果
1. BGEXPSPACE , 并 且
2. EXPSPACE 中 的 每 个 A 都 多 项 式 时 间 可 归 约 到 B 。
234 第三部分复杂性理论
EQREXT 是 EXPSPACE 完 全 的 。
证 明 思 路 在 度 量 EQREXT 的复杂性时 ,假定所有指数都写成二进制整数 。表达式的
长度是它包含的所有符号的总数 。
:
接下来概略地叙述判定 f QREXt 的 EXPSPACE 算法 。 为了判定两个带指数的表达式
是否等价 ,首先用重复表达式的办法删除指数 ,然后把得到的表达式转化为 NFA。最后
再利用一个类似于例 8.4 中判定 ALLNFA 的算法的 NFA 等价性判定过程 。
为了证明 EXPSPACE 中的语言 A 多项式时间可归约到 EQREXt ,利用 5.1 节介绍的
利用计算历史的归约技巧 ,其构造类似于定理 5.10 的证明中给出的构造 。
…^
给定一个判定 A 的图灵机 M ,设计一个多项式时间归约 ,把输入 m 映射为一对表达
式 M 和尺2 , 使得它们等价当且仅当 M 接 受 表 达 式 私 和 尺2 模 拟 在 ;上 的 计 算。
表达式私产生计算历史中可能出现的符号组成的所有字符串。表达式私产生所有不代表
拒绝计算历史的字符串 。于是 ,若图灵机接受输入 ,就不会有拒绝计算历史存在 ,表达式
私和沁将产生同一个语言。回忆一下 ,一个拒绝计算历史就是机器在输入上进人拒绝计
算的格局序列 。参见 5.1 节有关计算历史的介绍 。
本证明的难点在于所构造的表达式的长度必须是 72 的多项式 (以使归约能够在多项式
时间内运算),而模拟计算的长度可能是指数的 。这时指数运算就有助于用相对短的表达
式表示长的计算 。
证明首先给出一个非确定的算法 ,判定两个 NFA 是否等价 。
〈 iVhiVd ,其中 % 和 iV2 是 NFA:
对输入
1. 给 队 和 N 2 的起始状态打上标记。
2. 重 复 下 面 的 操 作 欠 ,其 中 % 和 g2 是 乂 和 N 2 的状态数 。
3. 非确定地选择一个输入符号 ,改变在 ] 和 2 的状态上标记的位置 ,以模拟
读入这个符号 。
^^
4 . 若在任何时刻 ,标记放在一个有穷自动机的接受状态上 ,而没有放在另一个有
穷自动机的接受状态上 ,则接受 ;否则拒绝 。
”
^^
如果自动机 ] 和 ] 是等价的 ,iV 显然拒绝 ,因为它只在确定一台机器接受某个串
而另一台机器不接受时才能接受。如果这两个自动机不等价 ,则存在某个字符串被一台机
器接受而不能被另一台接受 。这样的字符串中必定有长度不超过 2 +力的 。若不然 ,考虑
…
用这样的串中最短的一个作为非确定选择的序列 。因为只存在 21
^ 种不同的方式把标记
^
放在 和 ] 的状态上 ,所以在更长的字符串中标记的位置必定重复 。 把介于重复之间
的那部分字符串删除 ,就得到更短的字符串。因此算法 iV 在它的非确定选择中会猜到这
个串并接受 。所以 N 运算正确 。
算法 iV 在非确定线性空间内运行 ,于是根据萨维奇定理 ,可以得到判定该问题的确
定型 OU 2 ) 空间算法 。下面用该算法的确定形式设计判定 EQREXt 的算法 。
对输入〈私 ,
私 > ,其中私和沁是带指数的正则表达式 :
1. 把沁和处转化为等价的正则表达式氏和氏 ,其中氏和压利用重复代替指数。
2. 利用引理 1.29 的证明中给出的转化过程 ,把氏和压转化为等价的 NFAM 和 ]V2 。
3. 利用算法 iV 的确定版来判定 iV 1 * iV2 是否等价 。”
显然算法 E 是正确的 。为了分析它的空间复杂性 ,注意到用重复替换指数的方法可能
第P 章 难 解 性 235
^
2 % 其中 n 是输入的长度 。引 理 1.29 的 转 化 过 程 使 长 度 线 性 增 加 ,因 此 NFAiV!
^
-
最多有 0(〃2 « ) 个 状 态 。 因 为 输 入 长 度 是 OU2”),所 以 算 法 N 的 确 定 版 消 耗 空 间
222 :
^
0(( )2 )= 0( ) 0 于是 f QREXt 是指数空间可判定的 。
:
下 面 证 明 £ QREXt 是 EXPSPACE 难 的 。设 图 灵 机 M 在 空 间 2( & 内 判 定 语 言 A ,其中
々是某个常数 。归 约 把 输 入 w 映 射 为 一 对 正 则 表 达 式 表 达 式 私 就 是 △ * ,若 用
r 和 Q 表示 M 的带子字母表和状态集 ,则 A = UQU { # } 是计算历史中可能出现的所有
,
符号组成的字母表 。构造表达式尺2 使它产生不代表 M 在 w 上 的 拒 绝 计 算 历 史 的 所 有 字
符串。当然 ,M 接受 w 当且仅当 ] 在加上没有拒绝计算历史 。因此这两个表达式等价当
^
且仅当 M 接 受 构 造 过 程 如 下 。
^
^
在 加 上 的 一 个 拒 绝 计 算 历 史 是 由 符 号 # 分 隔 的 一 系 列 格 局 。采 用 标 准 的 格 局 编 码 ,
其中代表当前状态的符号放在当前读写头位置的左边 。假 定 所 有 格 局 的 长 度 为 如 果
^
长度不够 ,就 用 空 白 符 填 在 右 边 。拒 绝 计 算 历 史 的 第 一 个 格 局 是 在切上的初始格局,
最末格局是一个拒绝格局 。每一个格局都必须根据转移函数中指定的规则从前一个格局转
变而来 。
一个字符串不代表拒绝计算的情况可能有几种。或 者 它 非 正 常 开 始 ,或 者 非 正 常 结
束 ,或 者 在 中 间 某 处 不 正 确 。表 达 式 i?2 等 于 i? bad
- start Ui? bad- window U 尺 bad - reject ,其 中 每 个
子表达式对应于字符串不代表拒绝计算的上面三种情况之一 。
^
现在构造表达式 /? bad - start ,使它产生所有不以 在 加 上 的 起 始 格 局 Ci 开 头 的 字 符
串。格 局 Cl 形如 (?0 W1 W2 … UL>”U # 。 为处理 Cl 的 每 一 部 分 ,把 i? bad - start 写 成 几 个 子
表达式的并 :
i? bad - start = S0 \J S\ U…U U& U S#
表达式 SQ 产生所有不以奶开头的字符串 。令 SG 是 表 达 式 。记 法 △ - 。是 △
9
中除去仍以后 ,所有符号的并的简写 。
表达式 S! 产 生 所 有 第 二 个 位 置 上 不 是 训 的 字 符 串。令 Si 是 一 般 地 讲,
对 于 表 达 式 S, 是 。于 是 S: 产生所有这样的字符串 ,它们在前 Z 个位 t
’
—
表达式 s6 产生所有在〃 2 到 2 & > 的某个位置上不包含空白符的字符串 。 为 此 本 来 可
+
^_
以引进子表达式 S„+ 2 直到 S2 >
,但是那样做将会使表达式 i4ad - start 的长度为指数 。改令
Sb = A 1 (△ U 〆
e
于是 S6 产生的字符串在前 n + 1 个位置包含任何字符 ,在 接 下 来 的 个位置也包含任何字
符 ,其中 〖 也可以从 0 到 2U
)
- 2 , 再下一个位置包含除空白符以外的任何字符 。
最 后 ,3 # 产生所有在位置 YA + 1 上不包含符号 # 的 字 符 串。令 S # 是
前边已经完成了 i? bad
- Start 的构造 ,现在开始下一部分 i? bad - reieCt 。它 产 生 所 有 非 正 常 结
束的字符串 ,即不包含拒绝格局的字符串 。任何拒绝格局都包含状态 Reject ,所 以 令
236 第三部分复杂性理论
尺 bad - reject
— A—
^
^
于是 i
-
ad reject 产 生 所 有 不 含 的 字 符 串。
最后构造表达式 i 使它产生所有这样的字符串 : 其中的一个格局不能正确
^ - bad window 9
丨#
2” (
_
*)
2
i
图 9- 1 相邻格局的对应位置
9.2 相对化
EQREXt 难解性的证明依赖于对角化法 。 为什么不用同样的方法证明 SAT 是难解的
呢? 或许 ,可以用对角化法证明一个非确定型多项式时间图灵机能够判定一个不在 P 中的
语言 。 本节介绍相对化 ( relativization ) 方法 ,它给出有力的证据排除了用对角化法解决
P 与 NP 问题的可能性 。
在相对化方法中 ,将修改计算模型 ,给图灵机一些本质上是 “免费 ” 的信息 。依据实
际提供给它的信息 ,图灵机就可能比以前更轻松地解决某些问题 。
例如 ,假定对任何长度的布尔公式 ,给图灵机以在一步内解决可满足性问题的能力 。
不管怎样实现这一奇迹 想象一个附带的 “黑匣子” 给了机器这种能力 。 可以把这个黑
匣子称为谕示 ,以强调它没必要对应于任何物理设备 。 显然 ,不管 P 是否等于 NP ,机器
都可以利用谕示在多项式时间内解决任何 iVP 问题 ,因为每一个 JVP 问题都可多项式时间
归约到可满足性问题 。这样的图灵机被称为相对于可满足性问题进行计算 ,因此才有术语
相对化 。
一般地讲 ,谕示可以对应于任何具体的语言 ,不仅仅是可满足性问题 。 谕示允许图灵
机判定该语言的成员资格 ,而不必自己计算岀答案 。 下面把这个概念简略地形式化 。读者
可能会回忆起在 6.3 节曾经碰到过谕示 。 那时 ,定义它是为了根据不可解度来给问题分
类 。这里 ,利用谕示是为了更好地理解对角化方法的能力 。
针对一个语言 A 的谕示是一个能够判断任何串加是否在该语言中的设
备 。谕示图灵机 (oracle Turing machine ) MA 就是在通常的图灵机基础上增加查询 A 的谕 %
能 在 一 步 内 计 算 得 知 这 个 字 符 串 是 否 属 于 A。
$ PA 是 采 用 谕 示 A 的 多 项 式 时 间 谕 示 图 灵 机 可 判 定 的 语 言 类 。 类 似 地 可 以 定 义
NPA# 0
如 前 面 提 到 的 ,相 对 于 可 满 足 性 问 题 的 多 项 式 时 间 计 算 包 含 了 NP 的 全 部 。
, 因为 P T 是 一 个 确 定 型 复 杂 性 类 ,在 补 运 算
^ ^
。进 一 步 ,coNP
^
换 言 之 ,NP£ P P
下 封 闭。
(5BBTO 正如 pa7 包 含 不 属 于 P 的 语 言 一 样 。NP T 包 含 不 属 于 NP 的 语 言 。问
-
题 7.2 1 中 定 义 的 语 言 M l N FORMULA 的 补 集 给 出 了 这 样 的 一 个 例 子 。
-
MIN FORMULA 似 乎 不 在 NP 中 ( 虽 然 它 是 否 属 于 NP 还 不 知 道 )。 然 而 ,
MJiV- FO履ULA 属 于 NPSAT , 因 为 以 SAT 为 谕 示 的 非 确 定 型 多 项 式 时 间 谕 示 图 灵 机 可
以如下检查彡是否属于它 。首 先 ,因 为 非 确 定 型 机 器 可 以 猜 测 使 两 个 布 尔 公 式 的 值 不 相 同
的 赋 值 ,所 以 两 个 布 尔 公 式 的 不 等 价 问 题 是 NP 内 可 解 的 ,从 而 等 价 问 题 属 于 coNP。 然
后 ,判 定 MJiV- FORMULA 的 非 确 定 型 谕 示 机 器 非 确 定 地 猜 测 一 个 更 小 的 等 价 公 式 ,用 谕
示 SAT 来 检 查 它 是 否 真 的 是 等 价 的 ,若 是 ,则 接 受 。 ■
对角化方法的局限
4
下 一 个 定 理 表 明 存 在 谕 示 A 和 B ,使 得 可 以 证 明 ? 与 NPA 不 同 ,而 PB 与 NPB 相 同 。
这 两 个 谕 示 很 重 要 ,因 为 它 们 的 存 在 表 明 不 太 可 能 用 对 角 化 方 法 解 决 P 与 NP 问 题 。
对 角 化 方 法 的 核 心 是 一 台 图 灵 机 对 另 一 台 图 灵 机 的 模 拟 。模 拟 是 这 样 完 成 的 :模 拟 机
器 能 够 确 定 另 一 台 机 器 的 行 为 ,从 而 以 不 同 的 方 式 动 作 。 假 定 给 这 两 台 机 器 以 同 样 的 谕
示 ,那 么 每 当 被 模 拟 机 器 询 问 谕 示 时 ,模 拟 机 也 询 问 ,所 以 模 拟 过 程 可 以 像 以 前 一 样 进 行
下 去 。因 此 ,凡 是 仅 用 对 角 化 方 法 证 明 的 关 于 图 灵 机 的 定 理 ,当 给 两 台 机 器 以 相 同 谕 示 的
时 候 ,将 仍 然 成 立 。
特 别 地 讲 ,如 果 能 用 对 角 化 方 法 证 明 P 与 NP 不 同 ,就 能 下 结 论 说 它 们 相 对 于 任 何 谕
示 也 是 不 同 的 。但 是 PB 与 NPS 相 等 ,所 以 结 论 不 成 立 。因 此 对 角 化 方 法 不 足 以 分 开 这 两
个 类 。类 似 地 ,依 据 简 单 模 拟 的 证 明 不 能 说 明 这 两 个 类 相 等 ,因 为 那 将 证 明 它 们 相 对 于 任
何 谕 示 都 是 相 等 的 ,但 实 际 上 PA 与 NPA 不 相 等。
1. 存 在 谕 示 A 使 得 PA N P A 。
即 可。 ^
2. 存 在 谕 示 B 使 得 PB = N P B 。
证 明 思 路 展 示 谕 示 B 是 容 易 的 ,只 需 令 B 是 任 意 的 PSPACE 完 全 问 题 ( 如 TQBF )
构 造 谕 示 A 。设 计 A 使 得 NPA 中 的 某 个 语 言 LA 在 证 明 它 时 需 要 蛮 力 搜 索 ,因 而 不
NPA & 结 论 。构 造 过 程 依 次 考 察 每 一 个 多 项 式 时 间 谕 示
:
^
可能属于 PA 。因 此 可 以 得 岀 PA
机 器 ,保 证 每 一 个 都 不 能 判 定 语 言 L a 。
证 明 令 B 是:TQBF 。有 下 面 一 系 列 包 含 关 系 :
^
包 含 关 系 1 成 立 ,因 为 可 以 把 非 确 定 型 多 项 式 时 间 谕 示 机 器 转 变 为 非 确 定 型 多 项 式 空 间
机 器 ,该 机 器 不 使 用 谕 示 ,而 是 计 算 出 对 TQBF 的 查 询 的 答 案 。由 萨 维 奇 定 理 可 知 包 含 关 系
238 第三部分复杂性理论
'
如下设计 A 。SMl 9 M2 ,
…
为 了 证 明 不 属 于P … ,是所有多项式时间谕示图灵机
的列表 。 为了简单 ,假定 : 在时间 V 内运行 。构造过程分步骤进行 。 第 f 步构造 A 的一
部 分 ,保 证 不 判 定 LA 。 通过声明某些字符串在 A 中而另外一些字符串不在 A 中来构
造 A 。 每一步仅确定有穷个字符串的状态 (指在或者不在 A 中 )。幵始 ,没有关于 A 的任
何信息 。从步骤 1 开始 。
…
步骤 / 迄今为止 ,已经声明有穷个字符串在或不在 A 中。选择 让它比所有这些
串的长度都长 ,而且《 充分大使得 2” 比一大 , 是 :的运行时间。现在说明怎样扩展
9.3 电路复杂性
将按照数字电路设计的电子器件用导线连在一起 ,就构成了计算机 。也可以用对应数
字电路的理论模型 (称 为 布 尔 电 路) 来模拟如图灵机这样的理论模型 。建立图灵机与布尔
电路之间的联系有两个目的 。第一 ,研究者相信电路提供了一种方便的计算模型 ,用以处
理 P 与 NP 问题及其相关问题 。第二 ,电路为有关 SAT 是 NP 完 全 的 库 克
供了另一种证明方法 。 本节讨论这两个主题 。
- 列文定理提
一个布尔电路 ( boolean circuit ) 是由导线 ( wire ) 连 接 的 门 ( gate ) 和
第9章 难 解 性 239
输入 ( input ) 的 集 合 ,其 中 不 允 许 出 现 循 环 。 门 有 三 种 形 式 :与 门 、 或 门 和 非 门 ,如
-
图 9 2 所示。
布尔电路中导线传递布尔值 0 和 1。门是计算布尔函数 AND、 OR 和 NOT 的 处 理 器 。
当两个输入都是 1 时 ,AND 函数输岀 1 ,否 则 输 出 0。 当两个输入都是 0 时 ,OR 函 数 输
出 0 , 否 则 输 出 1。NOT 函 数 输 出 其 输 人 的 反 面 ,换 言 之 ,若 输 入 是 0 , 它 输 岀 1 ,若输
人 是 1 ,它 输 出 0 。输 入 被 标 记 为 X\ ,••• 。其中一个门被指定为输出门 ( output gate )。
-
图 9 3 描绘了一个布尔电路 。
输入变量
' A A
输人
输出
与 或 非 输出门
布尔电路从输入的赋值中计算输出值。它沿着导线传播值 ,计 算 与 相 应 的 门 关 联 的 函
数 ,直到输出门被赋予一个值 。图 9 4 显示了布尔电路从输入的赋值中计算出值的过程 。 -
—
用函数来描述布尔电路的输入 / 输出行为 。 给带 n 个输人变量的布尔电路 C 关 联 一 个
函数 / c:{ 0 , 1 },其中 ,当输入 XI ,
1 }” { 0 , … , 设 置 为 <21 ,
…,a „ 时 ,若 C 的 输 出 为 6 ,
…,
则写 /cUi , & )= 6。称 C 计算函数 /c 。有时考虑有多个输出门的布尔电路 。带々个输
出位的函数计算一个值域为{ 0 ,
1 H 的 函 数。
(Hd 7T - 输 入 奇 偶 函 数 ( parity function ) parityn:{ 0 ,1 } W
- { 0 ,1 }
> 输 出 1 ,当且
仅当输人变量中有奇数个 1。图 9 5 的电路计算有 4 个变量的奇偶函数 parity - “
■
输人 0 0
0 0
T1 输 出
图9 4 - 布尔电路计算的例子
-
图9 5 计算 4 个变量的奇偶函数的布尔电路
^
当 且 仅 当 ( ( 加)= 1,其 中 n 是 w 的 长 度 。
电 路 的 规 模 (size) 是 它 所 包 含 的 门 的 数 目。当 两 个 电 路 有 同 样 的 输 入 变 量 ,并 且 在
每 一 输 入 赋 值 上 都 输 出 同 样 值 的 时 候 ,称 它 们 是 等 价 的 。如 果 一 个 电 路 没 有 与 之 等 价 的 更
小 的 电 路 ,则 它 是 ( 规 模 ) 极 小 的 (size minimal )。极 小 化 电 路 问 题 在 工 程 上 有 明 显 的 应
用 ,但 是 一 般 难 以 解 决 。甚 至 判 定 一 个 具 体 的 电 路 是 否 是 极 小 的 这 个 问 题 也 不 见 得 是 在 P
—
或 NP 内 可 解 的 。一 个 电 路 族 中 的 每 一 个 电 路 C, 如 果 是 极 小 的 ,则 称 该 族 是 极 小 的 。一
个 电 路 族 (Co ,Ci ,C2 ,
… ) 的 规 模 复 杂 度 (size complexity ) 是 一 个 函 数 /: N N ,其 中
f( n ) 是 C„ 的 规 模 。当 明 显 在 讨 论 规 模 时 ,用 电 路 族 的 复 杂 度 指 代 其 规 模 复 杂 度 。
电 路 的 深 度 ( depth ) 是 从 输 人 变 量 到 输 出 门 的 最 长 路 径 的 长 度 (导 线 的 数 目)。如 同
定 义 电 路 的 规 模 一 样 ,可 以 定 义 深 度 极 小 ( depth minimal) 的 电 路 和 电 路 族 以 及 电 路 族 的
深 度 复 杂 度 (depth complexity )。 在 关 于 并 行 计 算 的 1 0.5 节 中 ,电 路 的 深 度 复 杂 度 尤 为
重 要。
语 言 的 电 路 复 杂 度 ( circuit complexity ) 是 该 语 言 的 极 小 电 路 族 的 规 模
复 杂 度 。 语 言 的 电 路 深 度 复 杂 度 ( circuit depth complexity ) 类 似 定 义 ,只 是 把 规 模 换 成
深 度。
容 易 推 广 例 9.21 ,给 出 计 算〃个 变 量 的 奇 偶 函 数 的 有 ou ) 个 门 的 电 路 。
一 种 办 法 是 构 造 一 棵 由 计 算 XOR 函 数 的 门 组 成 的 二 叉 树 ,这 里 XOR 函 数 就 是 2 输 入 奇 -
偶函数 iparity ,然 后 如 前 面 的 例 子 那 样 ,用 2 个 NOT 、 2 个 AND 和 1 个 OR 实 现 每
个 XOR 门 。
令 A 是 包 含 奇 数 个 1 的 字 符 串 组 成 的 语 言 ,那 么 A 的 电 路 复 杂 度 是 0(〃)。 ■
语 言 的 电 路 复 杂 度 与 它 的 时 间 复 杂 度 有 关。任 何 时 间 复 杂 度 小 的 语 言 其 电 路 复 杂 度 也
—
小 ,如 下 面 的 定 理 所 述 。
设 hN N 是 一 个 函 数, 若 A G T I M E( Krz )),则 A 的 电 路 复
杂 度 为 O U2( n ))。
该 定 理 提 供 了 一 条 证 明 P关 N P 的 途 径 ,以 此 证 明 N P 中 的 某 个 语 言 的 电 路 复 杂 度 超
过 多 项 式。
证 明 思 路 设 M 是 在 时 间 Mrz ) 内 判 定 A 的 图 灵 机 。( 为 了 简 单 ,忽 略 M 的 实 际 运 行
时 间 0(〆 ) 对 每 一 个 n ,构 造 电 路 (
〃)) 中 的 常 数 因 子 。 :模拟 M 在 长 为 w 的 输 入 上 的 运
算 。C„ 的 门 分 成 行 ,每 一 行 对 应 M 在 长 为 rz 的输入上进行运算的〆〃) 步 之 一 。门 的 每 一
行 代 表 M 在 相 应 步 骤 上 的 格 局 (状 态 、读 写 头 位 置 、 带 子 内 容 )。 每 一 行 用 导 线 连 到 上 一
行 ,以 使 它 从 上 一 行 的 格 局 能 够 计 算 本 格 局。修 改 M 使 得 输 入 编 码 为 { 0 ,
1 }。 另 外 ,当
M 即 将 接 受 时 ,它 把 读 写 头 移 到 最 左 单 元 ,在 进 人 接 受 状 态 之 前 先 在 那 里 写 下 符 号 U。这
样 一 来 ,就 可 以 指 定 电 路 的 最 后 一 行 的 一 个 门 为 输 出 门 。
证 明 设 M =( Q,
2,r,d,go ,
(
7aeeept ,
teieet ) 在 时 间 Krz ) 内 判 定 A ,设 w 是 长 为 n 的 输
入 。定 义 M 在 u;上 的 画 面 为 一 张 的 表 格 ,其 行 是 M 的 格 局。画 面 的 顶 行 包
含 M 在 w 上 的 起 始 格 局 。第 f 行 包 含 计 算 历 史 的 第 纟 步 的 格 局。
为 了 方 便 ,本 证 明 修 改 了 格 局 的 表 示 形 式 。在 3.1.1 节 描 述 的 旧 的 形 式 中 ,状 态 岀 现
在读写头正在读取的符号的左边 。与之不同 ,现在把状态和读写头下的符号表示为一个单
一的复合字符 。例如 ,若 M 在状态心带子上包含字符串 1011 ,读写头正读取左起第二个
符号 ,旧形式为切011 ,新形式为
的符号 0。
_
11 ,其中复合字符
画面的每一格可以包含一个带子符号 (r 的 成 员 ) 或 状 态 和 带 子 符 号 的 组 合 (Q x r
的 成 员 )。称 画 面 的 第 〖 行 、 第 j 列 的 那 一 格 为 画 面 的 顶 行 是 Cd /[ i ,i ],
ceLL\\ ,t { n )\ , 该 行 包 含 起 始 格 局 。
~
…,
_ 第 夕 章 难 解 性
在 定 义 画 面 的 概 念 中 ,关 于 M 做 了 两 个 假 设 。 第 一 ,正 如 证 明 思 路 中 所 讲 的 ,仅当
读写头在最左带子单元上并且该单元包含符号U时 ,M 才接受 。第二 ,一旦 M 停机 ,它 就
永 远 待 在 同 一 格 局 中 。 所 以 ,通 过 查 看 画 面 最 末 一 行 的 最 左 单 元 就 能 确 定
cell [\ ,\ ]
-
M 是 否 已 经 接 受 。图 9 6 显 示 了 M 在 输 入 0010 上的部分画面 。
°
^
0
2 3
0 0
tin )
起始格局
第二个格局
241
同 时表示状态 g 和读写头下
0 0
0
cell [ t( n ) ,\ ]
—
( 接受位置 )
第/(«) 个格局
每 一 单 元 的 内 容 都 由 上 一 行 的 某 些 单 元 来 决 定。 如 果 知 道 了 1 ,> 1 ], -
WZ[f — 1 ,
7 ]和 c W[
‘
l,
)+ l] 的 值 ,就能根据 Af 的 转 移 函 数 获 得 的 值。例 如 ,
-
下图放大了图 9 6 的画面的一部分 。上一行的三个符号 0 、 0 和 1 是不含状态的带子符号 ,
所以中间符号在下一行必须保持为 0 , 如下图所示 。
0 0
现在开始构造电路 C„ 。对 应 画 面 的 每 一 个 单 元 有 多 个 门 ,这 些 门 从 影 响 某 一 单 元 的
另外三个单元的值中计算出该单元的值 。
为了使构造更容易描述 ,添加一些灯来表示电路中某些门的输出 。 灯 只 是 用 作 说 明 ,
不影响电路的操作 。
设 々 是 r U ( r x Q) 中 元 素 的 数 目 。对于画面的每一个单元有々盏灯 ,r 的 每 个 成 员
对应一盏灯 ,(r x Q) 的 每 个 成 员 对 应 一 盏 灯 ,总 共 盏 灯。称 这 些 灯 为
其 中 i< <(〖(〃)o e n j( r x Q)。在一个单元中的灯的状况表明了该单元的内容 ;如 果
~
242 第三部分复杂性理论
^_
开着 ,ceUli , 就包含符号 5。当然 ,如果电路构造正确 ,一个单元中只能
有一盏灯开着 。
不妨挑一盏灯来看看 ,假设就是 W心,
)] 中 的 如 果 该 单 元 包 含 符 号 S,
这 盏 灯 应 该 开 着 。考 虑 影 响 的 三 个 单 元 ,确 定 哪 些 赋 值 会 使 包 含 s。
通过考察转移函数 5, 就可以做此决定。
假定 ,按照 5,当单元 ceW[z — 1,j
_
l],cell [ i — l , _
j ],ceLL \ i — \ , 7 + 1] 分别包含 a ,
6, _
c 时 ,cell{i ,]\ 包 含 s ~
0 用导线连接电路 ,使得如果 Zfg /i心一 1 , ) 一 1, a ],light[i — l ,j,
—l,+ l ,c] 都开着 ,贝P蝓/U[f ,
^^
b] 和
~
/U[i ) ),s] 也开着 。 为此把 z 一 1 行的这三盏灯连 ’
到与门 ,其输岀连到
一般来讲 , — _ _
cell \ i — \ ,j ], cell \ i — \ , 7 + 1] 有几个不同的赋值 (ai ,
都 可 以 使 包 含 5。 在 这 种 情 况 下 ,用 导 线 连 接
电路 ,使得对应每一组赋值 A,
匕,cf ,各自的灯都连到与门 ,所有与门都连到或门 。这个
电路如图 9 7 所示 。-
刚才描述的电路对每盏灯都一样 ,只是
o
^
在边界上有几处例外 。 画面的左边界上的每 ⑧ )…
个单元 ,即 ceZZ[f ,
l ], ,只 有 上
一行的两个单元可能影响它的内容 。 在右边
界上的单元也是一样 。在这种情况下 ,修改
电路 ,让它模拟 M 在这种情况下的行为 。
第一行的单元都没有前驱 ,需要用一种
特殊方式处理它们 。 这些单元包含起始格
局 ,它们的灯用导线连到输人变量 。 于是
_
^
\ \] 连到输入训 ,因为起始格
light[\ A , q
- —
_
图9 7 盖灯的电路
局以起始状态符 Qb 开始 ,读写头在 wi 上起
^ ^ ^ ^
2 ••• ■
_
归 约 /,把字符串映射为电路 ,其中
f ( w ) = < C>
蕴涵
w 布尔电路 C 是可满足的
因 为 A 属 于 NP ,所以它有多项式时间验证机器 V,其 输 入 的 形 式 为〈 x ,
C〉,这里 c
可以是证明 x 属 于 A 的 证 书 。 为了构造 /,用 定 理 9.25 的方法得到模拟 V 的 电 路。把 w
的符号填入对应于:r 的 电 路 的 输 入 。剩 下 的 电 路 输 入 都 对 应 证 书 c。把 这 个 电 路 称 为 C,
并输出它 。
若 C 是 可 满 足 的 ,则存在一个证书 ,所 以 w 属 于 A 。 反 之 ,若 加 属 于 焱 ,则 存 在 一
个 证 书 。所 以 C 是可满足的 。
为 了 证 明 该 归 约 在 多 项 式 时 间 内 运 算 ,必 须 考 察 定 理 9.25 的 证 明 ,注 意 到 电 路 的
构 造 可 以 在〃的 多 项 式 时 间 内 完 成 。验 证 机 的 运 行 时 间 是 V ,所 以 构 造 的 电 路 的 规 模 是
OU2 M 。电 路 的 结 构 非 常 简 单 ( 实 际 上 它 的 重 复 度 很 高 ),所 以 归 约 的 运 行 时 间 是
0( # ) 0
必的每一个变量对应 C 的 一 条 导 线 。变 量 : 对 应 输 入 导 线 ,变 量 g, 对 应 门 输 出 的 导 线 。
把多的变量标记为
^
现在描述彡的子句 。首先使用蕴涵直观地描述 的 子 句 ,再 将 蕴 涵 ( P Q ) 转 换 成
—
—^^
( P V Q) o C中每一个带输入导线和输出导线的非门等价于表达式
( zvi
—
► vuj ) A ( w, wj )
该表达式转换成两个子句
7)
^
( wi V A (t 7V
注意 ,当且仅当 % 和 的 赋 值 正 确 地 反 映 非 门 的 功 能 时 ,这两个子句才同时被满足 。
244
( ( wi
转换成四个子句为
A
iuui \!
第三部分复杂性理论
C中 每 一 个 带 输 入 和 以 及 输 岀 的 与 门 等 价 于 表 达 式
^7)
Wj
W) A ( ( w7
M wi ) A (^ V
C中 每 一 个 带 输 入 和 以 及 输 出 的 或 门 等 价 于 表 达 式
((
^7 A ^7)
转换成四个子句为
ivui
Wk ) A
uJk ) A ( wi V 7 V
\j Wj \J
(( 研
t
A
/\
Wj )
'
^7 V
-
w j )^ W k )
*
■
_
wT ) A
) 八 ( ^T M vuj M vuk ) f\ ( wi V 7 V
四 个 子 句 才 能 被 满 足 。另 外 ,把 子 句 加 人 # 中 ,V0 , 是 c 的输出门 。
所描述的某些子句包含的文字少于三个 。通过重复文字就可以把这些子句扩展到所需
要的长度 。例如 ,将子句 (⑽ ) 扩展为等价的子句 OlVm \/ VUm \J Wm ) 这就完成了构造 。
下边简要地说明了该构造满足要求 。如果存在满足 C 的赋值 ,那么根据 C 在该赋值上
^
在这两种情况下 ,只有当变量 VOi 、 VUi 和 的 赋 值 正 确 地 反 映 了 门 的 功 能 时 ,所 有
I
A
( ( wz
A ( w7 V
((
A wj)
A ^7 )
t
->■
zvk )
V wT ) A ( w7 V
Wk )
A
A
((
^* A
( ( w/
0
^
^7 V
A Wj )
—
wk )
wk )
练习
A9 . 1
证明 TIME( 2”)= TIME( 2» +1 ) o
A9.2 证明 TIME( 2n )$ TIME( 22 ”)。
A9.3 证明 NTIME( n ) C PSPACE。
9.4 -
如在图 9 4 中所做的那样 ,标出图 9 5 所描绘的电路中所有门计算出的值 ,从而说明它在输 -
人 0110 上的计算历史 。
9.5 给出三个输人变量上计算奇偶函数的电路 ,并说明它在输入 011 上的计算历史 。
9.6 证明若 AGP , 则 PA = P。
9.7 给出带指数的正则表达式 ,产生如下在字母表 { 0 ,1 } 上的语言 :
Aa. 所有长度为 500 的字符串 。
Ab. 所有长度不超过 500 的字符串 。
Ac. 所有长度不少于 500 的字符串。
Ad. 所有长度不等于 500 的字符串。
e. 所有恰好包含 500 个 1 的字符串。
f . 所有包含至少 500 个 1 的字符串。
g. 所有包含至多 500 个 1 的字符串 。
h. 所有长度不少于 500 并且在第 500 个位置上为一个 0 的字符串 。
i. 所合包含两个 0 并且其间至少相隔 500 个符号的字符串 。
9.8 若 尺 是 正 则 表 达 式 ,令 尺 代 表 表 达 式
Rm UR U…U尺
说明怎样利用通常的指数算子实现算子 ,但不许用 o
^
9.9
9. 1 0 在问题 8.29 中已经证明 ,ALBA 是 PSPACE 完全的 ,
a. 说明 ALBA 是否属于 NL 并给出解释 。
b. 说明 ALBA 是否属于 P 并给出解释 。
第P 章 难 解 性 245
9.11 在问题 7.19 中给出 了语言 MAX- CLJQLTE ,证明 MAX CLJQLTE 6 PMr 。 -
—
问题
回忆一下 ,指定多个输出门 ,就可以考虑输出 { 0 ,1 } 上的字符串的电路了。设 a
^
l }2”
{0 ,
‘ :
9.12
l + i 计算两个 + 1 位结果 。 证明可以用 0( 2 )
{0,
” 位二进制整数的和并输出 规模的电路计
—
/
算函数 n o
9. 13 定义函数 majority :{ 0 ,
l}n { 0 ,1 }为 :
”
0 Y j X i < n/ 2
majorityn( x \ ,••• ,xn )=
1 YjXi
^n 2
于是 ma知rh:
y „ 函数返回输入中的多数派 。证明 majority 可以用下面的电路计算 :
^ /
”
a. OU 2 ) 规模的电路 。
b. Odnlogn ) 规模的电路 。(提示 :递归地把输入数分成两半并利用问题 9.12 的结果 。
)
*
9.14
9.15
如问题 9.13
假设 A 和 B
— :
样定义问题 ma知n7 y „ 。 证明它可以用 O( TZ ) 规模的电路计算 。
是两个谕示 。 现只知道其中一个是 TQBF 的谕示 ,但不知道到底是哪一个 。请给
出一个能访问 A 和 B 的算法 ,并且该算法能在多项式时间内解决 TQRF 问题 。
9.16 证明存在谕示 C 使得 NPC 关 coNPc 。
9.17
- - query oracle Turing machine )
^
/c 查询谕示图灵机 ( 是在每个输入上允许至多进行々次査询的
谕 示 图 灵 机 。用 符 号 表 示 对 谕 示 A 的 f 查询谕示图灵机 M ,定 义 为 能 在 多 项 式 时 间
内 被 判 定 的 语 言 集 合。
a. 证 明 NPUcoNPGPM7 ,1 。 '
^
,1
^
b. 假设 NP关 coNP ,证明 PUcoNP P5 。
.
9 18 -
定 义 唯 一 满 足 ( unique sat ) 问 题 为 : 是 一 个 只 有 唯 一 满 足 赋 值 的 布 尔 公 式 }。
证明 L/SA:TGPSA 。 7'
.
9 19 令 EREXt =〈 〉尺是一个具有指数形式的正则表达式 ,L( i? )= 0 } , 证明
{ 尺| EREXtGP。
9.20 说明下面的关于 P关 NP 的错误 “证明” 错在哪里 。 采用反证法 。假设 P = NP ,则 SATGP。
^
所以 ,对于某个々,SAT 6 TIME( )0 因 为 NP 中的每个语言多项式时间可归约到 SAT% 所
NPGTIME( V )。 因此 P Q T I M E( V )。但是 ,由时间层次定理 ,TIMECV + 1 ) 包 含 不 在
以
^ —
TIME( ) 中的语言 ,这与 PGTIME( V ) 矛盾 。所以 P关 NP。
9.21 考虑函数外 XN 2 * # * 定义如下 :令 pad( s , r> = s # ,其中 j = max( 0 ,Z m ), 是 5 —
-
l ) 就是在 5 的末尾添加足够多的新符号 # ,使得结果的长度至少是 Z 。 对
的长度 。 于是 pad( s ,
于任何语言 A 和函数 /:N N , 定义语言恥AA ,
/) 为 :
pad ( A ,
/) = { pad ( 5,
/( m )) | 饥 是 5 的 长 度}
证明 :若 AGTIMEU ), 6 W 2 )GTIME(
则舛以A , 3)
。
”
9.2 2 证 明 :若 NEXPTIME 关 EXPTIME ,贝lj P> NP。你会发现问题 9.21 中定义的函数外
^
对证明
本问题是有用的 。
A9 .2 3 —
如 问 题 9.21 样定义 pad
a. 证明 :对任何语言 A 和任何自然数々,A 6 P 当且仅当
0
(A,
^^
V )GP。
b. 证明 P关 SPACE( n )。
9.24 :
证明 TQBF$ SPACE( TZ1/3 )。
*
9.25 参 考 问 题 5 . 1 4 中 关 于 2 DFA ( 双头有限自动机 ) 的定义 ,证明在 P 中存在一个语言不能被
2 DFA 识别 。
习题选解
9.1 大 O 记法定义了时间复杂性类 ,因此常量因子对分类没有影响 。 函数 2”+ 1 的时间复杂性是
246 第三部分复杂性理论
PSPACE。
9.7 :
a. I 5 00 b.(2 Ue)500 c. 25002 * d.(2 Ue)499 U 25012 *
复杂性理论高级专题
本 章 简 要 地 介 绍 复 杂 性 理 论 中 的 几 个 其 他 专 题 。 这 是 一 个 非 常 活 跃 的 研 究 领 域 ,包
含 着 丰 富 的 研 究 内 容 。 本 章 涉 及 很 多 更 为 高 级 的 专 题 内 容 ,但 不 是 对 所 有 问 题 进 行 全 面
综 述 。需 要 特 别 指 出 的 是 ,其 中 有 两 个 重 要 的 专 题 超 出 了 本 书 的 范 围 ,它 们 分 别 是 : 量
子 计 算 ( quantum computation ) 和 概 率 可 核 查 证 明 ( probabilistically checkable proof )。
《 The Handbook of Theoretical Computer Science 》[7 4 ] 提 供 了 关 于 计 算 理 论 早 期 工 作 的
综述。
本 章 的 主 要 内 容 包 括 近 似 算 法 、 概 率 算 法 、 交 互 式 证 明 系 统 、并 行 计 算 以 及 密 码 学
等 。除 了 交 互 式 证 明 系 统 和 密 码 学 两 节 中 用 到 概 率 算 法 之 外 ,其 他 各 节 都 是 相 互 独 立 的 。
10 . 1 近似算法
在有的问题如最优化问题 (optimization problem ) 中 ,我 们 试 图 在 所 有 的 可 行 解 中 找
到 最 好 的 解 。例 如 ,寻 找 图 中 的 最 大 团 ,最 小 顶 点 覆 盖 ,或 者 两 个 顶 点 之 间 的 最 短 路 径
等 。前 两 个 问 题 是 NP 难 解 问 题。当 最 优 化 问 题 是 NP 难 解 问 题 的 时 候 ,不 存 在 找 到 最 好
解 的 多 项 式 时 间 算 法 ,除 非 P = NP。
在 实 践 中 ,找 到 绝 对 最 好 的 解 通 常 较 为 困 难 ,而 且 可 能 用 户 并 非 一 定 要 找 到 某 个 问 题
的 绝 对 最 好 的 解 ,即最优解 。 一 个 接 近 最 优 的 解 可 能 已 经 足 够 好 ,而 且 可 能 更 容 易 找 到 。
顾 名 思 义 ,近似算法 (approximation algorithm ) 是 为 寻 求 这 种 近 似 最 优 解 而 设 计 的 。
例 如 ,考 虑 7.5 节 所 讨 论 的 顶 点 覆 盖 问 题 。顶点覆盖问题被描述为一个表示判定问题
( decision problem ) 的 语 言 VERTEX- COVER 。判 定 问 题 只 有 两 个 答 案— 是 或 非 。该 问
- -
题 的 最 优 化 形 式 记 作 MJiV VERTEX COVER 。任 意 给 定 一 个 图 ,其 目 标 是 在 所 有 可 能 的
顶 点 覆 盖 中 找 到 一 个 最 小 的 顶 点 覆 盖 。下 述 多 项 式 时 间 算 法 近 似 地 解 这 个 最 优 化 问 题 。它
给 出 一 个 顶 点 覆 盖 ,其 规 模 不 超 过 最 小 顶 点 覆 盖 的 2 倍 。
A =“对于输人〈G〉 ,这里 G 是 一 个 无 向 图 :
1. 重 复 下 述 操 作 直 至 G 中 所 有 的 边 都 与 有 标 记 的 边 相 邻 。
2. 在 G 中 找 一 条 不 与 任 何 有 标 记 的 边 相 邻 的 边。
3. 给 这 条 边 作 标 记。
4. 输 出 所 有 有 标 记 的 边 的 顶 点 。
”
fc& jUlBI 上 述 算 法 A 是 一 个 多 项 式 时 间 算 法 ,它 给 出 G 的 一 个 顶 点 覆 盖 ,其 规
模 不 超 过 G 的 最 小 顶 点 覆 盖 的 2 倍。
证明 A 的 运 行 时 间 显 然 是 多 项 式 界 限 的 。设 X 是 它 输 出 的 顶 点 集 合 ,H 是 有 标 记
的 边 的 集 合 ,因 为 G 的 每 一 条 边 要 么 属 于 H ,要 么 与 H 中 的 一 条 边 相 邻 ,所 以 X 与 G 中
所 有 的 边 关 联 。因 此 ,X 是 一 个 顶 点 覆 盖 。
为 了 证 明 X 的 规 模 不 超 过 最 小 顶 点 覆 盖 y 的 2 倍 ,我 们 要 确 认 两 个 事 实 :X 中 顶 点
的 数 目 大 小 是 H 的 2 倍 和 H 不 大 于 Y。首 先 ,H 中 的 每 一 条 边 为 X 提 供 2 个 顶 点 ,从 而
248 第三部分复杂性理论
X 中 顶 点 的 数 目 大 小 是 H 的 2 倍 。 其 次 ,Y 是 一 个 顶 点 覆 盖 ,从 而 H 中 的 每 一 条 边 与 Y
中 的 某 个 顶 点 关 联 。由 于 H 中 的 边 互 不 相 邻 ,故 Y 中 的 顶 点 不 可 能 同 时 关 联 H 中 的 两 条
边 。由 于 Y 中 有 不 同 的 顶 点 关 联 H 中 的 每 一 条 边 ,所 以 顶 点 覆 盖 Y 不 小 于 H 。因 此 ,X
中 顶 点 的 数 目 大 小 不 超 过 Y 的 2 倍。 *
:
M / iV- V£RT£X- COV£ R 是 一 个 最 小 化 问 题 ( minimization problem ),因 为 我 们 的 目
标 是 求 可 行 解 中 最 小 的 解 。 在 最 大 化 问 题 ( maximization problem ) 中 ,我 们 试 图 求 最 大
的 解 。如 果 一 个 最 小 化 问 题 的 近 似 算 法 总 能 找 到 不 超 过 最 优 解 k 倍 的 可 行 解 ,则 称 这 个 算
- -
法 是 k 优 的 (々 optimal )。 前 面 关 于 顶 点 覆 盖 问 题 的 算 法 是 2- 优 的 。对 于 最 大 化 问 题 ,一
个 t 优 近 似 算 法 总 能 找 到 不 小 于 最 优 解 大 小 的 的 可 行 解。
+
下 面 是 最 大 化 问 题 MAX - CUT 的 近 似 算 法 。把 顶 点 集 V 划 分 成 两 个 互 不 相 交 的 子 集
S 和 了,称 为 无 向 图 中 的 割 ( cut ) 0 一 个 顶 点 在 S 中 ,另 一 个 顶 点 在 T 中 的 边 对 称 作 割 边
( cut edge ) 0 如 果 一 条 边 不 是 割 边 ,则 称 作 非 割 边 ( uncut edge ) 0 割边的数目称作割的大
-
小。MAX CUT 求 输 入 图 G 中 的 最 大 割 。正 如 在 问 题 7.5 4 中 所 说 明 的 ,该 问 题 是 NP 完
全 问 题 。下 述 算 法 因 子 2 的 范 围 内 在 近 似 MAX CUT 。 -
B =“对 于 输 人〈 G〉,这 里 G 是 顶 点 集 为 V 的 无 向 图 :
1. 令 S = 0 和 T = V。
:
2. 如 果 把 一 个 顶 点 从 S 移 到 T 或 从:T 移 到 S ,使 割 的 大 小 变 大 ,则 做 这 样 的 移
动 ,并 且 重 复 这 一 步 。
3. 如 果 不 存 在 这 样 的 顶 点 ,则 输 出 当 前 的 割 并 且 停 止。
”
该 算 法 从 一 个 (假 定 是 ) 坏 的 割 开 始 ,然 后 做 局 部 改 进 ,直 到 不 能 进 一 步 做 局 部 改 进
为 止 。虽 然 这 个 过 程 一 般 不 能 给 出 最 大 的 割 ,但 是 可 以 证 明 ,它 给 出 的 割 的 大 小 至 少 是 最
大割大小的一半。
- -
上 述 算 法 B 是 AMX CL/T 的 2 优 的 多 项 式 时 间 近 似 算 法 。
证 明 由 于 每 次 执 行 步 骤 2 增 加 割 的 大 小 ,而 割 的 大 小 不 超 过 G 的 边 数 ,故 B 在 多 项
式 时 间 内 运 行。
现 在 证 明 B 输 出 的 割 不 小 于 最 大 割 的 一 半 。实 际 上 ,要 证 明 更 强 的 结 论 : B 输 出 的 割
至 少 包 含 G 中 所 有 边 的 一 半 。 观 察 到 ,在 G 的 每 一 个 顶 点 ,割 边 不 少 于 非 割 边 ,否 则 B
要 把 该 顶 点 移 到 另 一 边 。把 所 有 顶 点 的 割 边 数 加 在 一 起 ,这 个 和 是 割 边 总 数 的 2 倍 ,因 为
每 一 条 割 边 对 它 的 两 个 端 点 各 计 算 一 次 。根 据 前 面 的 观 察 ,这 个 和 不 小 于 所 有 顶 点 非 割 边
数 之 和 。于 是 ,G 中 的 割 边 不 少 于 非 割 边 ,从 而 B 输 出 的 割 中 至 少 包 含 所 有 边 的 一 半 。 ■
10.2 概率算法
概 率 算 法 以 随 机 过 程 为 工 具 。典 型 算 法 包 含 一 条 “掷 硬 币 ” 的 指 令 ,并 且 掷 硬 币 的 结
果 可 能 影 响 算 法 后 面 的 执 行 和 输 出 。对 某 些 类 型 的 问 题 ,相 对 于 确 定 型 算 法 ,用 概 率 算 法
更容易解决。
对 于 一 个 具 体 的 计 算 任 务 ,用 掷 硬 币 做 出 决 定 怎 么 能 比 通 过 实 际 计 算 或 者 估 计 而 得 到
的 最 好 的 选 择 更 好 呢? 有 时 ,计 算 最 好 的 选 择 可 能 需 要 过 多 的 时 间 ,而 估 计 则 可 能 带 有 偏
好 ,使 得 出 的 结 论 无 效 。例 如 ,统 计 学 家 用 随 机 抽 样 确 定 有 关 一 个 大 的 群 体 中 所 有 人 的 信
息 ,如 他 们 的 爱 好 或 政 治 倾 向 。调 查 所 有 的 人 可 能 需 要 太 长 的 时 间 ,调 查 一 部 分 随 机 挑 选
第1 0 章 复 杂 性 理 论 高 级 专 题 249
出 来 的 人 则 可 能 得 出 错 误 的 结 论。
1 0 . 2. 1 BPP 类
为 了 更 为 形 式 化 地 讨 论 概 率 计 算 问 题 ,这 里 首 先 定 义 一 个 新 的 计 算 模 型 — 概 率 图 灵
机 ,然 后 介 绍 一 个 与 高 效 的 概 率 计 算 相 关 的 复 杂 性 类 并 给 出 几 个 例 子 。
^E
Pr[6] = 2 ~
其 中 ,6 是 在 分 支 6 中 出 现 的 掷 硬 币 步 的 步 数 ,定 义 M 接 受 加 的 概 率 为
Pr[M 接 受 w ] = PrM
b是 接 受 分 支
换 言 之 ,如 果 模 拟 M 对 w 的 计 算 ,在 每 一 掷 硬 币 步 ,用 掷 硬 币 决 定 下 一 步 的 动 作 ,
则 M 接 受 w 的 概 率 等 于 它 到 达 接 受 格 局 的 概 率 。令
Pr[ M 拒 绝 w ]= 1 — Pr[ M 接 受 ic
; ]
通 常 ,当 概 率 图 灵 机 接 受 属 于 某 一 语 言 的 所 有 字 符 串 并 且 拒 绝 不 在 这 个 语 言 中 的 所 有
字 符 串 时 ,称 概 率 图 灵 机 判 定 该 语 言。但 是 如 果 允 许 机 器 有 小 的 错 误 概 率 ,如 对 于 某 个 正
(
数 e 0<e< 去),如 果
1. 比 蕴 涵 Pr[M 接 受 — e,并 且
2. A 蕴 涵 Pr[ M 拒 绝 w ]>l — e ,
则 称 /W 以 错 误 概 率 f 判 定 语 言 A 。换 句 话 说 ,模 拟 M 得 到 错 误 答 案 的 概 率 至 多 为 e 。我 们
接 下 来 考 虑 错 误 概 率 的 边 界 。 错 误 概 率 的 边 界 依 赖 于 输 入 串 的 长 度〃。 例 如 ,错 误 概 率 =
2 一〃表 示 指 数 地 小 的 错 误 概 率 。
我们感兴趣的是在时间和空间上运行高效的概率算法。度量概率图灵机的时间和空间
复 杂 度 的 方 法 与 度 量 非 确 定 型 图 灵 机 的 一 样 ,使 用 对 每 一 个 输 入 的 最 坏 情 况 下 的 计 算
分 支。
IrJaiHik BPP 是 多 项 式 时 间 的 概 率 图 灵 机 以 错 误 概 率
+ 判 定 的 语 言 类。
我们以错误概率
f 定 义 BPP。但 是 根 据 下 述 加 强 引 理 (amplification lemma ,任 何 严 )
格地在 0 和
+ 之 间 的 常 数 错 误 概 率 都 给 岀 等 价 的 定 义 。这 个 引 理 提 供 了 一 种 简 单 的 方 法 使
错 误 概 率 指 数 地 小 。注 意 :错 误 概 率 为 的 概 率 算 法 ,由 于 运 行 它 的 计 算 机 的 硬 件 失
灵 ,给 出 错 误 结 果 的 可 能 性 远 大 于 由 于 掷 硬 币 不 走 运 给 出 错 误 结 果 的 可 能 性 。
+
^
设 e 是 一 给 定 的 常 数 ,且 0<e< 。又 设 iV 是一台错误概率为 e 的多
2
f 时的情况 。这对应于一只装有许多红球和蓝球的盒子 。已知 f 的球是一种
考虑 e
^
这些球对应 iV 的计算分支 : 红色对应接受分支 ,蓝色对应拒绝分支 。M2 借 助 运 行
^ ^
iV 对颜色取样 。计算表明 ,如果 M2 运行 iV 多项式次 ,并且输出岀现频率高的结果 ,则
M2 犯错误的概率指数地小 。
证 明 给 定 图 灵 机 M! 和多项式 p( n ), 以错误概率 ■
判定一个语言 ,要构造
下述图灵机 M2 , 它 以 错 误 概 率 判 定 同 一 语 言。
M 2 = “对输入 J0 :
1. 计算々的值 (请注意下面的分析)。
2. 对输人:r 进行 2々次独立的 iV
^
模拟运行 。
3. 如果 iV
^
接受:r 的次数多 ,则接受 ;否则拒绝 。
”
^
我们设法限定e M2 在输入:r 上运行错误的概率 。 阶段 2 产生一个由模拟 iV 得到的
2々个结果的序列 ,每个结果要么正确要么错误 。如果这些结果大多数都正确 ,M2 给 岀 正
确的回答 。我们限定概率为至少一半的结果都是错误的 。
假定 S 表示阶段 2 *M 2 得到的结果序列 。 令 Ps 表示 M 2 得到 S 的概率 。偁定 S 中
+ w = 2匕
…
有 c 个正确的结果 ,w 个错误的结果 ,我们有 c 如 果 并 且 M 2 得到 S ,那
么以2 输出不正确 。 我们把这样的序列 S 称 为 坏 的 序 列 。令 是 !在:r 上出错的概率 。
如果 S 是一个坏的序列 ,那么
e( l — e ),再有
至多是 e V l — e 户 。
PS < ( G 产(1
^ e<l
所 以 G( 1 —
— e ,所以 ew( l — e ) c
^-
对所有 S 为坏序列的情况 / 求和 ,即得到 M2 输出不正确的概率 。 坏序列至多有 22 A
个 ,这是显而易见的 ,因为所有不同序列的总数为 22人因此 ,得到如下等式 :
Pr[M2 在 输 入 x 上 输 出 不 正 确 ]
^
^
= P s < 22 k (l ~ e ) k = ( 4e( l - e ))
坏 的s
|
-
由于假定 e< - ,我们有钴(1 一 )<1。因此 ,上述概率将随纟的增加指数地减少 ,
1 0 . 2. 2 素数性
素数是大于 1 并且不能被 1 和自身以外的任何正整数除尽的整数 。大于 1 的非素数叫
p — l },Zp 表 示 { 0 ,
的最小非负数:y 。 为 方 便 起 见 ,令 表 示 集 合 { 1 ,
…, 1 },则
每 个 数 都 和 中 的 某 个 数 是 模 等 价 的 。我 们 可 以 用 该 集 合 以 外 的 数 表 示 该 集 合 中 与 之
模 f 等价的数 。比如 ,可以用一 1 表示 /> 1。 —
算法背后的主要思想源于下述费马小定理 ( Fermat ’ s little thereom ) 0
也 如 果 户 是 素 数 ,且 则 a 广1 三
l ( mod 户)。
简单几步计算
a = 2 , 则 定 理 称 因 为 7 是 素 数 ,所 以
例如 ,如果 / = 7 ,
>
— 定 等 于 1。经 过
2 ( 7-I ) = 26 = 64 , 64 mod 7 = 1
可以证实这个结论 。假如用 /> = 6 试试 ,那么 ,
2 ( 6-I ) = 25 = 32 , 32 mod 6 = 2
得到的结果不是 1。根据这个定理 ,6 不是素数 。当然 ,我们早已知道 6 不是素数 。但是 ,
这个方法不用找到它的因子 ,就能证明 6 是合数 。问题 10.16 要求给出这个定理的证明 。
可以把上述定理看作一种 “测试” 素数的方法 ,称为费马测试 ( Fermat test )。 当我
-
们说 P 通过在 a 的费马测试 ,是指 V i ^ l ( mod p ) 该定理说明 ,任意素数 /> 都能够通
Q
过 关 于 所 有 的 费 马 测 试 。观 察 发 现 6 不 能 通 过 某 些 费 马 测 试 ,因 此 6 不 是 素 数 。
能不能利用费马测试给出判定素数性的算法? 几乎可以 。 如果一个数能够通过所有关
于小于它且与它互素的数的费马测试 ,则称这个数是伪素数 ( pseudoprime )。除了相对来
说少量的卡米切尔数 ( Carmichael number ) 夕卜 ,所有的伪素数都是素数 。卡米切尔数是
合数 ,但能通过所有比它小且互素的数的费马测试 。下面首先给岀测试伪素数的多项式时
间概率算法 ,然后给出能够完全测试素数性的多项式时间概率算法 。
判定一个数是否具有伪素数性 ,要对之进行全部的费马测试 ,因此判定伪素数性的算
法需要指数时间 。多项式时间概率算法的关键是 ,如果一个数不是伪素数 ,则它至少不能
通过全部费马测试的一半 。( 我们暂时接受这个断言 。问题 10.14 要求给出它的证明 。
)算
法随机进行若干次测试 。如果有一次测试没有通过 ,则这个数一定是合数 。如果测试都通
过 ,则这个数很可能是一个伪素数 。算法含有一个用来确定错误概率的参数是。
:
PS£[/DOPi? JMf =“ 对输入 p:
1. 在 Zf 中随机地选取 a i , …, 。
^
(
3. 如 果 所 有 计 算 值 都 等 于 1 ,则 接 受 ;否 则 拒 绝 。
”
如 果 P 是 伪 素 数 ,则 它 能 通 过 全 部 测 试 ,从 而 算 法 一 定 会 接 受 。如 果 f 不 是 伪 素 数 ,
则 它 至 多 能 通 过 全 部 测 试 的 一 半 。在 这 种 情 况 下 ,它 通 过 每 一 个 随 机 选 择 的 测 试 的 概 率 不
1 。于 是 ,它 通 过 全 部 纟 个 随 机 选 择 的 测 试 概 率 不 大 于 2 。因 为 模 指 数 是 多 项 式 时
^
大于
间 内 可 计 算 的 (见 问 题 7.4 0 ),故 这 个 算 法 在 多 项 式 时 间 内 运 行 。
为 了 把 这 个 伪 素 数 性 算 法 转 换 成 素 数 性 算 法 ,我 们 引 入 更 为 复 杂 的 测 试 ,以 避 免 卡 米
切 尔 数 带 来 的 问 题 。 基 本 原 理 是 ,对 于 任 一 素 数 1 恰 好 有 两 个 模 f 的 平 方 根 ,即 1 和
1。对 于 许 多 合 数 ,包 括 所 有 的 卡 米 切 尔 数 在 内 ,1 有 4 个 或 更 多 的 平 方 根 。例 如 ,±1
和±8 是 1 模 2 1 的 4 个 平 方 根 。如 果 一 个 数 通 过 在 a 的 费 马 测 试 ,则 算 法 随 机 地 求 1 模 这
个 数 的 一 个 平 方 根 ,并 且 看 这 个 平 方 根 是 否 是 1 或 一 1。如 果 不 是 ,则 这 个 数 不 是 素 数 。
如 果 通 过 在 a 的 费 马 测 试 ,由 于 1 ,从 而
mod f 是 1 的 一 个 平 方
mod
根 。 如 果 这 个 值 仍 是 1 ,则 可 以 重 复 用 2 除 指 数 ,只 要 得 到 的 指 数 仍 是 整 数 ,然 后 看 第 一
个 不 为 1 的 值 是 一 1 ,还 是 某 个 其 他 的 数 。下 面 描 述 这 个 算 法 ,并 且 给 出 它 的 正 确 性 的 形
式 证 明 。取 々>1 作 为 一 个 参 数 ,它 确 定 最 大 错 误 概 率 为 2 -\
P R I M E= “对 输 入
1. 若 户 是 偶 数 ,则 如 果 户= 2 , 则 接 受 ;否 则 拒 绝 。
2. 在 Zf 中随机地选取 a 1 ,••• ,ak o
3 对 i= l ,
• ,k : 拳 籲
4. 计 算 af - i m o d p ,并 且 如 果 不 等 于 1 ,则 拒 绝 。
5. P —' = s • 21 ,其 中 是 奇 数。
6.
7.
计算序列 '
^-
2 1 , ,a
-
* 2
mod pQ
如 果 该 序 列 中 的 某 个 数 不 等 于 1 ,则 找 到 最 后 一 个 不 等 于 1 的 数 。如 果 这
个 数 不 等 于 一 1 ,则 拒 绝 。
8. 这 时 已 经 通 过 全 部 测 试 ,故 接 受 。
”
下 述 两 个 引 理 证 明 算 法 是 正 确 的 。当 p 是 偶 数 时 ,算 法 显 然 正 确 。因 此 我 们
只 需 考 虑 当 /> 为 奇 数 时 的 情 况 。如 果 算 法 使 用 在 步 骤 4 或 步 骤 7 拒 绝 ,则 称
是 一 个 ( 合 数 性 ) 见 证 (( compositeness) witness )。
f 是 一 个 奇 素 数 ,则 Pr[PRJM£ 接受户]= 1。
如果 ^:
证 明 首 先 要 证 明 如 果 /> 是 素 数 ,则 不 存 在 见 证 ,因 而 不 存 在 算 法 的 拒 绝 分 支 。 如 果
_
a 是 步 骤 4 中 的 见 证 ,即 1 mod
根 据 费 马 小 定 理 ,/> 是 合 数 。如 果 <2 是 步 骤 7 中
^
(
因 子 分 解 沪 一 1,得 到
(6 - 1 K 6 + 1) = 0 ( mod p)
因 而 存 在 正 整 数 c ,使 得
— 1)( 6 + 1) = cp
(6
因 为 6关± l( mod /0 , 所 以 6 — 1 和 6 + 1 都 严 格 地 在 0 和 户 之 间 。 而 一 个 素 数 的 倍 数 不 能
表 示 成 小 于 它 的 数 的 乘 积 ,故 P 是 合 数 。 ■
下 述 引 理 显 示 算 法 以 很 高 的 概 率 识 别 合 数 。 首 先 ,我 们 引 用 数 论 中 的 一 个 重 要 的 基 本
第1 0 章 复 杂 性 理 论 高 级 专 题 253
如 果 户 是 一 个 奇 合 数 ,则 Pr[Pi? ZM£:接受户]<2 -々 。
证 明 如 下 所 示 ,如 果 /> 是 奇 合 数 ,a 是 从 Z 中 随 机 选 取 的 一 个 数 ,则 ,
Pr[a 是 一 个 见 证 ]>
这 只 需 要 证 明 在 中 见 证 至 少 和 非 见 证 一 样 多 。 为 此 ,对 每 一 个 非 见 证 我 们 设 法 找 到 一
+
个 与 它 对 应 的 独 有 的 见 证。
对 于 每 一 个 非 见 证 ,在 步 骤 6 中 计 算 的 序 列 要 么 都 是 1 ,要 么 含 有 一 个 一 1 ,这 个 一 1 的
后 面 跟 着 1。例 如 ,1 本 身 是 第 一 类 非 见 证。由 于 6 是 奇 数 ,(一 1 )s • 2 1 且( 一 1 )5.2'三1,
故 一 1 是 第 二 类 非 见 证 。 在 所 有 第 二 类 非 见 证 中 ,找 出 一 个 一 1 在 序 列 中 的 最 大 位 置 的 非
见 证。设 这 个 非 见 证 是 A , 一 1 在 它 的 序 列 中 的 位 置 为 ),这 里 序 列 位 置 从 0 算 起 。于 是 , ’
hs • 21 = — 1 ( mod / )? 0
由 于 P 是 合 数 ,所 以 或 者 P 是 一 个 素 数 的 幂 ,或 者 可 以 把 它 写 成 两 个 互 素 的 数 g 和 r
的 乘 积。我 们 首 先 考 虑 后 一 种 情 况 。 根 据 中 国 剩 余 定 理 ,在 中 存 在 一 个 数 ,使 得
t = /i ( mod q )
t 三1 ( mod r )
因此,
ts - 2
}
1 ( mod q )
t5' 2' = l ( mod r )
’
1
因 为 f 2’吴 ± Kmod 户) 但 是 f 三 l ( mod 户),所 以 〖 是 一 个 见 证。
现 在 我 们 得 到 了 一 个 见 证 ,还 可 以 得 到 更 多 的 见 证。根 据 下 述 两 点 观 察 ,可 以 证 明 对
于每一个非见证
± l ( mod p)且 s • 2J
A mod /> 是 与 它 对 应 的 独 有 的 见 证。首 先 ,根 据 选 择 j 的 方 式 ,々
= l ( mod p) Q 因 此 ,心 mod p 是 一 个 见 证 ,因 为(A ) s • 2 吴 ±1 而 且
; - 2} z
=
J
( dt ) s • 2 l ( mod /0
三 0
其 次 ,如 果 di 和 山 是 两 个 不 同 的 非 见 证 ,则 山 纟 mod p
d t mod p。 这 是 因 为
} 1
p=\ , iAM t • ts • 2 J
一1 p= l
^
所 以 ,如 果 ⑹ mod p=
2
mod ,贝lj
t5 • 2 mod mod 0 tdz 户
^
1 E l ( mod p )
^
di 是 两 个 不 同 的 非 见 证 ,则 mod p dit mod 否 则,
d\ = d\ • t • tp mod p = dz • t • tp l mod p = dz
l ~ ~
254 第三部分复杂性理论
因 此 ,见 证 的 数 目 一 定 和 非 见 证 的 数 目 一 样 多 ,证 毕 。
上 述 算 法 及 对 它 的 分 析 给 岀 下 述 定 理 。令
PRIMES = { n \ n 是 二 进 制 的 素 数 }
iglMfilsl RRJMESeBPP 0
以不小于
+ 的 概 率 被 接 受 ,不 在 语 言 中 的 输 入 以 概 率 1 被 拒 绝 。
用 类 似 于 引 理 1 0.5 中 使 用 的 概 率 加 强 技 术 (实 际 上 这 里 更 简 单 些 ),可 以 使 错 误 概 率
指 数 地 小 ,并 且 保 持 多 项 式 运 行 时 间 。前 面 的 算 法 表 明 COMPOSITES
^
RP。
1 0 . 2. 3 只读一次的分支程序
分 支 程 序 是 复 杂 性 理 论 和 某 些 实 际 领 域 (诸 如 计 算 机 辅 助 设 计 ) 中 使 用 的 一 种 计 算 模
型 。这 个 模 型 表 示 一 种 判 定 过 程 ,它 询 问 输 入 变 量 的 值 ,并 且 根 据 对 询 问 的 回 答 决 定 如 何
行 进 。 我 们 把 这 样 的 判 定 过 程 表 示 成 一 个 图 ,它 的 顶 点 对 应 于 判 定 过 程 中 在 该 点 询 问 的
变 量。
本 小 节 考 察 检 验 两 个 分 支 程 序 是 否 等 价 的 复 杂 性 。一 般 来 说 ,这 个 问 题 是 coNP 完 全
的 。 如 果 对 分 支 程 序 类 作 某 种 自 然 的 限 制 ,则 能 够 给 岀 检 验 等 价 性 的 多 项 式 时 间 概 率 算
法 。基 于 下 述 两 个 原 因 ,我 们 对 这 个 算 法 特 别 感 兴 趣 。 首 先 ,不 知 道 这 个 问 题 的 多 项 式 时
间 算 法 ,因 而 这 是 明 显 扩 大 了 能 够 有 效 检 验 成 员 资 格 的 语 言 类 的 一 个 概 率 例 子 。 其 次 ,为
了 分 析 布 尔 函 数 的 性 状 ,算 法 引 人 一 种 技 术 ,把 非 布 尔 值 赋 给 正 常 的 布 尔 变 量 。 在 1 0.4
节 将 会 看 到 ,这 种 技 术 在 交 互 式 证 明 系 统 中 起 很 大 作 用。
分 支 程 序 ( branching program ) 是 一 个 有 向 无 环 图 。其 中 ,除 两 个 输
出 顶 点 (output node ) 被 标 记 为 0 或 1 外 ,它 的 所 有 顶 点 都 被 标 记 为 变 量 。被 标 记 为 变 量
的 顶 点 叫 作 查 询 顶 点 ( query node ) 每 一 个 查 询 顶 点 引 出 两 条 边 ,一 条 标 记 0 ,另 一 条 标
0
记 1。两 个 输 出 顶 点 没 有 引 出 的 边 。 在 分 支 程 序 中 指 定 一 个 顶 点 为 起 始 顶 点 。
分 支 程 序 能 够 确 定 如 下 的 布 尔 函 数 。 对 查 询 顶 点 标 记 的 所 有 变 量 ,任 取 一 个 赋 值 ,从
起 始 顶 点 开 始 ,沿 途 在 每 一 个 查 询 顶 点 按 照 赋 给 该 顶 点 标 记 的 变 量 的 值 选 择 一 条 引 出 的
边 ,直 至 到 达 一 个 输 岀 顶 点 为 止 。分 支 程 序 的 输 出 就 是 该 输 出 顶 点 的 标 记 。 图 1 0 1 给 出 了 -
两 个 分 支 程 序 的 例 子。
分 支 程 序 与 L 类 的 关 系 类 似 于 布 尔 电 路 与 P 类 的 关 系 。问 题 1 0.1 3 要 求 证 明 多 项 式 个
顶 点 的 分 支 程 序 能 够 检 验 { 0 ,1 } 上 任 何 属 于 L 的 语 言 的 成 员 资 格 。
如 果 两 个 分 支 程 序 确 定 的 函 数 相 同 ,则 称 它 们 是 等 价 的 。问 题 1 0.9 要 求 证 明 检 验 两
个 分 支 程 序 等 价 的 问 题 是 coNP 完 全 的 。这 里 考 虑 分 支 程 序 的 一 种 受 限 制 的 形 式 ,只 读 一
有向图如果没有有向环 ,则是一个无环图 。
第1 0 章 复 杂 性 理 论 高 级 专 题 255
0.
⑻ (b)
图 10 1- 两个只读一次的分支程序
时间内运行。下 面 证 明 它 以 不 超 过
f 的错误概率判定 £QROBP 。
先考察分支程序 B 与赋给它的多项式 P 之间的关系 。注 意 ,对 于 B 的 变 量 的 任 何 布
尔赋值 ,赋给顶点的所有多项式的值都为 0 或 1。所有值为 1 的多项式都在对应这个赋值
的计算路径上 。因 此 ,当变量取布尔值时 ,B 和 的 值 相 同 。类 似 地 ,由 于 B 是只读一次
的 ,可 以 把 /> 写 成 积 项 參
:y 的 和 ,这 里 每 一 个 乂 是 心 ,
•• (1 一 心 ) 或 1,而 且 每 一 个
256 第三部分复杂性理论
积 项 对 应 于 B 中 一 条 以 起 始 顶 点 到 标 记 1 的输出顶点的路径 。当 一 条 路 径 不 含 变 量:r , 时 ,
:y / = 1。
取 P 的每一个这种含有 % = 1 的 积 项 ,把 它 分 裂 成 两 个 积 项 的 和 ,其中一项的 % =
A ,另 一 项 的 y{ = l ~ OCi o 由 于 l = xz +
( l — X,),这 样 得 到 一 个 等 价 的 多 项 式 。 继 续 分 裂
积 项 ,直到每一个 M 为 A 或者 (1 - ) 为止 。最 后 得 到 一 个 等 价 的 多 项 式 g ,对于使 B
^
等于 1 的每一个赋值 ,g 含有一个积项 。 下面着手分析算法 D 的 性 状 。
首先证明 ,如 果 历 和 氏 等 价 ,则 D 总 是 接 受 。如 果 两 个 分 支 程 序 等 价 ,则 它 们 恰
好在同样的赋值取值为 1。因 而 ,多项式 % 和 g 2 包含的积项完全一样 ,两 者 相 等 。 所 以 ,
內和外在每一个赋值都相等 。
2
其 次 证 明 ,如 果 氏 和 氏 不 等 价 ,则 D 拒 绝 的 概 率 不 小 于
f ,这 个 结 论 可 由 引 理
10.14 立即得到 。 糴
前面的证明依赖下述引理。它涉及随机地找到多项式的一个根的概率 ,这个概率与多
项式的变量数 、 变量的次数以及基础域的大小有关 。
对 于 每 一 个 <i>o ,单 变 量 :
i 的 d 次多项式 > 或者最多有 j 个 根 ,或 者
处 处 等 于 0。
证 明 对 d 作归纳 。
归 纳 基 础 : 对 d = 0 的 证 明 。0 次 多 项 式 是 一 个 常 数 ,如果这个常数不是 0 , 则多项式
显然没有根。
归纳步骤 :假设引理对 d — 1 成 立 ,要 证 明 对 d 成 立 。 如 果 是 不 恒 为 0 的 d 次多项
式 ,它有一个根 a ,则 整 除 于 是 ,p! ( sc ~ a ) 是 不 恒 为 0 的 c/ 一 1 次 多 项 式 。 根
^
据归纳假设 ,它 最 多 有 一 1 个根。 麵
HEMil 设 只 是 / 个 元 素 的 有 限 域 ,户 是 ,
…, 的不恒为 o 的 多 项 式 ,每 一
… , 随机地选自夕,则
个 变 量 的 次 数 不 超 过 d 。 如果幻 ,
证 明 对 m 作归纳 。
‘ ^ P r b U h •• )= 0]<
md
o
归 纳 基 础 : 对 m = l 的 证 明 。根 据 引 理 10.13 , 最 多 有 d 个 根 ,因 而 以 是 一 个 根 的
概率不超过 d / f 0
-
如果 6( ,…,
^
于 0 , 且 化 是 把 心 ••• CLm 代 入 Po , ,Pd 后 得 到 的 一 元 多 项 式 的 根 。
^
对于第一种情况 ,由 于 不 恒 为 0 , 一定有一个九不恒为 0 。 于是 ,所 有 A 的值等
于 0 的概率不大于九的值等于 0 的 概 率 。 根 据 归 纳 假 设 ,因 为 九 最 多 有 m — 1 个 变 量 ,
故这个概率不大于 ( m — l )d / /。
对于第二种情况 ,如果某个 A 的值不为 0 , 则 把 a 2 , … , 代 入 后 ,p 化 简 成 单 变 量
d
的多项式 ,它不恒为 0 。 归纳假设已经证明 是这个多项式的根的概率不大于
^
工1
最 后 ,在 算 法 中 使 用 随 机 性 时 ,有 一 点 是 非 常 重 要 的。我 们 对 概 率 算 法 的 分 析 是 基 于
在 计 算 时 有 可 供 使 用 的 真 随 机 源 的 假 设 的 。 但 是 ,真 随 机 源 可 能 是 很 难 ( 或 不 可 能) 获 得
的 ,因 而 通 常 用 伪 随 机 发 生 器 ( psudorandom generator ) 模 拟 它 。 伪 随 机 发 生 器 是 一 种 确
定 型 算 法 ,它 们 的 输 出 好 像 是 随 机 的 。虽 然 任 何 确 定 型 过 程 的 输 出 绝 不 可 能 是 真 随 机 的 ,
但 是 某 些 确 定 型 过 程 的 产 生 结 果 具 有 随 机 产 生 结 果 的 某 些 特 征 。随 机 性 的 算 法 使 用 这 些 伪
随 机 发 生 器 时 ,能 够 同 样 好 地 工 作 ,但 是 证 明 一 般 是 非 常 困 难 的 。实 际 上 ,概 率 算 法 使 用
某 些 伪 随 机 发 生 器 时 ,有 时 不 能 很 好 地 工 作 。已 经 设 计 出 非 常 复 杂 的 伪 随 机 发 生 器 ,在 存
在 单 向 函 数 的 假 设 下 ,不 可 能 在 多 项 式 时 间 内 检 验 出 它 们 产 生 的 结 果 与 真 随 机 结 果 的 区
别 。(见 1 0.6 节 关 于 单 向 函 数 的 讨 论 。
)
10.3 交错式
交 错 式 是 非 确 定 性 的 推 广 ,在 解 释 复 杂 性 类 之 间 的 关 系 和 对 具 体 问 题 按 照 复 杂 性 进 行
分 类 时 ,交 错 式 已 被 证 明 非 常 有 用。利 用 交 错 式 ,我 们 能 够 简 化 复 杂 性 理 论 中 的 各 种 证 明
和 展 示 时 间 与 空 间 复 杂 性 度 量 之 间 惊 人 的 联 系。
与 非 确 定 型 算 法 一 样 ,交 错 式 算 法 可 以 含 有 把 一 个 过 程 分 支 成 多 个 子 过 程 的 指 令。两
者 的 区 别 在 于 决 定 接 受 的 方 式 。如 果 有 一 个 初 始 的 过 程 接 受 ,非 确 定 型 计 算 就 接 受 。而 当
一 个 交 错 式 计 算 分 成 多 个 过 程 时 ,有 两 种 可 能 :一 种 可 能 是 ,算 法 规 定 如 果 有 一 个 子 过 程
接 受 ,则 当 前 过 程 接 受 ;另 一 种 可 能 是 ,规 定 如 果 所 有 的 子 过 程 接 受 ,则 当 前 过 程 接 受 。
用 树 表 示 产 生 子 过 程 的 分 支 结 构 ,可 以 形 象 地 表 现 交 错 式 计 算 和 非 确 定 型 计 算 之 间 的
区 别 。 每 一 个 顶 点 表 示 过 程 中 的 一 个 格 局 。在 非 确 定 型 计 算 中 ,每 一 个 顶 点 做 它 的 儿 子 的
()R 运 算 。 这 对 应 于 通 常 的 非 确 定 型 接 受 方 式 :只 要 有 一 个 儿 子 接 受 ,该 过 程 就 接 受 。 在
交 错 式 计 算 中 ,按 照 算 法 的 决 定 ,顶 点 可 以 做 AND 运 算 或 OR 运 算 ,这 对 应 于 交 错 式 计
算 的 接 受 方 式 :如 果 所 有 的 儿 子 都 接 受 ,则 该 过 程 接 受 ,或 者 如 果 有 一 个 儿 子 接 受 ,则 该
过 程 接 受 。我 们 如 下 定 义 交 错 式 图 灵 机 。
feai囑bHO 交 错 式 图 灵 机 ( alternating Turing machine ) 是 一 种 具 有 特 殊 功 能 的 非 确
定 型 图 灵 机 。 除 gaccept 和 夕 卜, 它 的 状 态 分 成 全 称 状 态 ( universal state ) 和 存 在 状 态
( existential state )。 当 对 输 入 串 运 行 交 错 式 图 灵 机 时 ,根 据 对 应 的 格 局 是 包 含 全 称 状 态 还
是 包 含 存 在 状 态 ,用 A 或 V 标 记 它 的 非 确 定 型 计 算 树 的 每 一 个 顶 点 。如 果 一 个 顶 点 标 记 八
且 它 的 儿 子 都 接 受 ,或 者 标 记 V 且 它 的 儿 子 中 有 一 个 接 受 ,则 指 定 这 个 顶 点 接 受 。如 果 起
始 顶 点 被 指 定 为 接 受 ,则 接 受 输 入 。
-
图 10 2 给出非确定型计算树和交错式计算树。交错式计算树的顶点标有 A 或 V ,分
别 表 示 计 算 儿 子 的 AND 或 OR 。
1 0 . 3. 1 交错式时间与交错式空间
交 错 式 图 灵 机 的 时 间 复 杂 性 和 空 间 复 杂 性 的 定 义 与 非 确 定 型 图 灵 机 的 一 样 ,是 每 个 计
算 分 支 所 用 的 时 间 和 空 间 的 最 大 值 。交 错 式 时 间 复 杂 性 类 和 空 间 复 杂 性 类 定 义 如 下 :
a
ATIME( f ( r? ))= |L 是 被 一 台 OUU )) 时 间 的 交 错 式 图 灵 机 判 定 的 语 言 }
a
ASPACE( f( n ))= |L 是 被 一 台 0( /( n )) 空 间 的 交 错 式 图 灵 机 判 定 的 语 言 }
258 第三部分复杂性理论
接受 拒绝一 接受
非确定型 交错式
-
图 10 2 非确定型计算树与交错式计算树
^
3. 计算 0 和 0 关于这个赋值的值。
4. 如果这两个公式的值不同 ,则接受 ;如果这两个公式的值相同 ,则拒绝 。
”
算法开始时 ,在步骤 1 用全称分支选取所有更短的公式 ,然后 ,在步骤 2 转到存在分
支选取一个赋值。 交错式一词源于在全称分支与存在分支之间交错或转换的能力 。 ■
交错式使我们能够给岀复杂性的时间度量与空间度量之间显著的联系 。粗略地说 ,下
述定理说明 ,对于多项式相关的界限 ,交错式时间与确定型空间等价 ;当时间界限指数地
多于空间界限时 ,交错式空间与确定型时间等价 。
gUMBKEI 对 于 ,有
第1 0 章 复 杂 性 理 论 高 级 专 题 259
^ ^ ,
ASPACE( /( n )) = TIME( 20( (”)))
因此 ,AL = P , AP = PSPACE 以及 APSPACE = EXPTIME。下面把这个定理的证明
分成 4 个引理 。
feifci■醒 蜃 对 于 /U )>r2 ,有 ATIME( /( rO )GSPACE( /( n ))。
证明把 0( /( n )) 时间的交错式图灵机 M 转换成 0( /( n )) 空间的确定型图灵机 S,
S 如下模拟 M: 对于输入 w ,S 对 M 的计算树做深度优先搜索 ,确定哪些顶点接受 。如果
树根 ( 对应起始格局) 接受 ,则 S 接受 。
机器 S 需要空间来存储在深度优先搜索中使用的递归栈 。 递归的每一层存储一个格
局 。递归的深度是 M 的时间复杂度 。每一个格局使用 0( /U )) 空间 ,M 的时间复杂度为
o( /u ))。因此 ,S 使用 o( /2 u )) 空间 。
注意到 S 在递归的每一层不需要存储整个格局 ,因而可以改进它的空间复杂度 。代替
存储整个格局的是 ,只记录 M 从上一格局到这个格局时所做的非确定型选择 。 然后 ,通
过多次执行从头开始的计算 ,并按照记录的 “路标” 进行 ,S 可以找到这个格局。这样把
在递归的每一层空间的使用减少到常数 。于是 ,整个使用的空间为 0( /( n ))。 ■
对 于 /( )> [ATIME( /2 ㈤ )。
有 SPACE( /㈤
”
证 明 从 一 台 0( /(〃)) 空间的确定型图灵机 M 出发 ,构造一台交错式图灵机 S,用
0( / 2( )) 时间模拟它 。 方法类似于在萨维奇定理 (定理 8.5 ) 的证明中使用的方法 ,在
^
那里构造了一个关于可产生性问题的一般过程 。
在可产生性问题中 ,任给 M 的两个格局 Cl 、Q 和一个数〖 ,要检验 M 是否能在《 步内
从 得到 。关于这个问题的交错式过程 ,首先存在地分支去猜想 n 和 c2 之间的格局
^
C2
^
这里 ,选取 2 %。
该交错式过程的每一个分支使用的最大时间等于在递归的每一步写一个格局的时间
0( /( 72 ))乘以递归的深度 1呢〃
2 (”> = 0( /( 0 )。因此 ,算法在交错式时间 0( 尸 U )) 内
运行 。
^
对 于 /( n )>logw ,有 ASPACE( /( r2 ))GTIME( 20
( /(
”
” )。
■
在 〃 时 间 内 构 造 它 。扫 描 一 次 差 不 多 也 用 同 样 的 时 间 。因 为 除 最 后 一 次 外 , 每 扫
描一次至少给一个顶点作记号 ,故扫描的总次数不超过顶点数 。 因 此 ,使用的总时间为
证 明 要 说 明 交 错 式 图 灵 机 s 如何用 0( /(〃)) 空 间 模 拟 时 间 的 确 定 型 图 灵 机
M 这 个 模 拟 是 有 点 难 办 的 ,因 为 S 可使用的空间比
0
M 的 计 算 长 度 要 小 很 多 。 这 里 ,S 只 有 足 够 的 空 间 存
储进人
… 在 加 上 运 行 的 画 面 的 指 针 ,如 图 10 3 所示 。
采用定理 9.25 证 明 中 给 出 的 格 局 表 示 法 ,一 个 符
号可以既表示机器的状态 ,又表示读写头下的带单元的
-
-
内 容 。在图 10 3 中 ,单元 d 的内容取决于它的父辈 a 、 2^ /
( (« ))
^
容 。如果单元
S 存在地猜想它的父辈的内容 。 按 照 M 的 转 移 函 数 ,
^
验 证 这 些 内 容 是 否 能 产 生 的 内 容 。 然 后 ,S 全 称 地
图 10 - 3 表示 M 在 w 上 运 行 的 画 面
^
分支去递归地验证这些猜想的内容 。如果 在第一行,
因为知道 M 的 起 始 格 局 ,S 直接地验证 d 的 内 容 。可 以 假 设 M 在接受时把它的读写头移
到带的左端 ,因 此 ,S 通过验证画面左下方单元的内容 ,能 够 确 定 M 是 否 接 受 加。从 而 ,
S 只需要存储一个指向画面中一个单元的指针 ,故使用的空间为 log2G( /(
… = 0( /(〃))。 ■
1 0 . 3. 2 多项式时间层次
交错式图灵机提供了一种手段 ,在 PSPACE 类中定义一个类的自然层次 。
设 z 是 一 个 自 然 数 ,及 交 错 式 图 灵 机 是 以 存 在 步 骤 开 始 ,在每一个输入
和每一个计算分支上最多含有纟次全称步骤与存在步骤轮换的交错式图灵机 。 交错式图
灵 机 与 此 类 似 ,只是它以全称步骤开始 。
令 Z ,TIME( f ( n ) ) 为 Z 交 错 式 图 灵 机 在 0( /( « )) 时 间 内 可 判 定 的 语 言 类 。类 似 地 ,
对于 /L 交 错 式 图 灵 机 定 义 f7 ,T I M E ( f ( n ) ) 类 。 对 于 空 间 界 限 的 交 错 式 图 灵 机 定 义
J / SPACE( f ( n ) ) 类 和 /7,SPACE( f ( n ) )。下述语言类集合称作多项式时间层次 ( polyno-
我们定义类 PH = U兄 P = Ui
! :P。显 然 ,NP =2iP , 而 且 coNP /LP。此 外 ,M I N- F O R -
MULA 6 iI2 P。
i i
^
10.4 交互式证明系统
交互式证明系统提供了一种定义类似 NP 的概率语言类的手段 ,这 很 像 多 项 式 时 间 概
率算法给岀类似 P 的概率语言类 。交互式证明系统的开发对复杂性理论产生了深刻的影
第1 0 章 复 杂 性 理 论 高 级 专 题 261
1 0. 4 . 1 图的非同构
我们用一个漂亮的例子 图同构问题来阐明交互式证明概念 。如果能够重新安排 G
的顶点的顺序 ,使得它与 H
ISO
—
样 ,
< ,H
={ G
则称图 G 与 H 同构 (isomorphic )。令
>|G 和 H 是 两 个 同 构 的 图 }
虽然 JSO 显然在 NP 中 ,但是至今没有找到这个问题的多项式时间算法 ,也没有证明它是
NP 完全的 。它是 NP 中尚未确定位置的 、 为数不多的自然问题中的一个 。
这次考虑 JSO 的补 ,即语言
NON ISO = < < G ,H > | G 和 H 是 两 个 不 同 构 的 图 }
由于不知道如何提供两个图不同构的短的证书 ,故不知道 iVONISO 在 NP 中 。 然而 ,当
两个图不同构时 ,正如将要证明的那样 ,证明者能够使检验者相信这个事实 。
假设有两个图仏和 02 。如果它们同构 ,证明者提供它们的同构映射 ,即顶点的重新
排列 ,能够使检验者相信这个事实 。但是 ,如果它们不同构 ,证明者怎么使检验者相信
呢?不要忘记 : 检验者不一定相信证明者 ,因此对于证明者来说 ,仅仅说它们不同构是不
够的 。证明者必须使检验者信服才行。考虑下述简短的协议。
检验者随机地选择 G! 或仏 ,随机地重新排列它的顶点 ,得到图 H。 检验者把 H 送
给证明者 ,证明者必须回答 H 是由 Gi 还是由 G2 得到的 。这就是整个协议 。
如果 Gi 和 02 确实不同构 ,证明者总能够执行协议 ,因为它能够区分 H 是来自 Gi 还
是来自 G2 。但是 ,如果两个图同构 ,则 H 可能来自 Gi ,也可能来自 G2 。因而即使不限
制计算能力 ,证明者给出正确回答的机会也不会好于一半对一半 。于是 ,如果证明者能够
始终如一地正确回答 (例如 ,重复 100 次协议 ),则检验者获得两个图确实不同构的令人
信服的证据 。
1 0 . 4 .2 模型的定义
为了形式地定义交互式证明系统模型 ,描述检验者 、证明者以及它们的相互作用。我
们会发现 ,记住图的非同构这个例子是有用的 。定 义 检 验 者 ( Verifier ) 是 一 个 函 数 V,
262 第三部分复杂性理论
它 根 据 至 今 传 递 的 信 息 历 史 ,计 算 下 一 次 传 送 给 证 明 者 的 信 息 。函 数 V 有 3 个 输 入 :
1. 输 入 串 。我 们 的 目 标 是 确 定 这 个 字 符 串 是 否 是 某 个 语 言 的 成 员 。在 iVOiVJSO 例 子
中 ,输 入 串 是 两 个 图 的 编 码 。
2. 随 机 输 入 。为 了 便 于 给 岀 定 义 ,给 检 验 者 提 供 一 个 随 机 选 取 的 输 入 串 ,用 来 代 替
在 计 算 中 做 概 率 动 作 的 能 力 。两 者 是 等 价 的 。
3. 部 分 信 息 历 史 。 函 数 不 能 存 储 已 进 行 过 的 对 话 。 因 此 ,通 过 用 一 个 字 符 串 表 示 到
现 在 为 止 交 换 的 信 息 来 提 供 额 外 的 存 储 能 力 。用 记 号 # m2 # … 表 示 交 换 信 息
-
检 验 者 的 输 出 或 者 是 序 列 中 的 下 一 个 信 息 m:+ 1 ,或 者 是 指 明 交 互 作 用 的 结 果 : 接 受
或 拒 绝 。于 是 V 的 函 数 形 式 为 X2 * X2* 2* U < 接受,拒 绝 }。
V( w ,r ,7?2 i # … 表 示 输 人 串 为 随 机 输 入 为 r,当 前 的 信 息 历 史 为 M
到 ,以 及 检 验 者 给 证 明 者 的 下 一 个 信 息 为
I 。
证 明 者 ( Prover ) 的 计 算 能 力 是 无 限 的 。定 义 它 为 一 个 函 数 P ,有 两 个 输 入 :
1. 输 入 串 。
2. 部 分 信 息 历 史 。
证 明 者 的 输 出 是 给 检 验 者 的 下 一 个 信 息 。 形 式 地 ,P 的 形 式 为
… # mi ) = mi + i 表 示 在 交 换 信 息
、
X 2 * — *2
,/ 之 后 ,证 明 者 把 mi +\ 送 给 检
验 者。
序列 ,
…, m k ,使 得
^
现 在 定 义 证 明 者 和 检 验 者 之 间 的 交 互 作 用。对 于 给 定 的 字 符 串 w 和 r ,如 果 存 在 信 息
.
1 当〈 々 且 Z 为 偶 数 时 ,V( w , r,mi # … # 772,)= 772 ,+ 1;
-
2 当〈 0<f 々 且 f 为 奇 数 时 ,P( w , mi # … ;
3. 该 信 息 历 史 中 的 最 后 一 个 信 息 是 接 受 。
则 记 作 (V P )( w , r )= 接 受 。
为 了 简 化 IP 类 的 定 义 ,假 设 检 验 者 的 随 机 输 入 和 检 验 者 与 证 明 者 之 间 交 换 的 每 一 个
信 息 的 长 度 都 是 P( n ),这 里 是 仅 与 检 验 者 有 关 的 多 项 式 。此 外 ,还 假 设 交 换 的 信 息 总
-^
数 不 超 过 下 述 定 义 给 出 交 互 式 证 明 系 统 接 受 输 入 串 w 的 概 率。对 于 任 意 长 度 为 n
的 字 符 串 iv , 定 义
Pr[V P 接 受 加] = Pr[( V
㈠
P )( ,r) = 接 受 ]
其 中 r 是 随 机 选 取 的 长 度 为 />(〃) 的 字 符 串。
如 果 存 在 一 个 多 项 式 时 间 可 计 算 函 数 V ,使 得 对 任 意 函 数 P 、 函 数 P
-
和字符串 XV ,
1.w 6 A 蕴 涵 pr[V< P 接 受 VU ]> }。
2.w
+
^
A 蕴 涵 Pr[V P 接 受 加]< 。
则说语言 A 在 IP 中 。 ^
换 句 话 说 ,如 果 wGA ,则 某 个 证 明 者 P (
— 个 “ 诚 实 的” 证 明 者) 能 使 检 验 者 以 高
概 率 接 受 ;但 如 果 则 没 有 证 明 者 (一 个 “不 诚 实 的” 证 明 者 戶) 能 够 使 检 验 者 以
高 概 率 接 受。
第 JO 章 复 杂 性 理 论 高 级 专 题 263
10. 4. 3 IP = PSPACE
本 节 证 明 复 杂 性 理 论 中 一 个 著 名 的 定 理 :IP 类 与 PSPACE 类 相 等 。 于 是 ,对 于
PSPACE 中 的 任 一 语 言 ,证明者能够使多项式时间的概率检验者相信该语言中字符串的成
员资格 ,而这种成员资格的常规证明可能是指数长的 。
纖iiCTRgl IP = PSPACE 0
把 这 个 定 理 分 解 成 两 个 引 理 ,分 别 给 出 一 个 方 向 的 包 含 关 系 。 第 一 个 引 理 证 明 IPG
PSPACE。虽 然 有 一 点 技 巧 ,但是这个引理的证明是用多项式空间的机器对交互式证明系
统 的 一 般 模 拟。
diyiUHIkfci IPGPSPACE。
证 明 设 A 是 IP 中 的 一 个 语 言 。假设当输入 W 的长度为 n 时 ,A 的 检 验 者 V 恰好交
^
p = p( n ) 个信息 。构造一台模拟 V 的 PSPACE 机 器 M。首 先 ,对任意的字符串 w 定 义
Pr[V 接受 = max 接 受
2
当 加 在 A 中 时 ,这 个 值 至 少 等 于 当 W 不在 A 中 时 ,至多等于
f。下面说明如何
在多项式空间内计算这个值 。用 M,表示信息历史 # … #; 。把 V 与 P 交互作用的定
义 推 广 到 从 任 意 信 息 流 幵 始 。如果能够用信息 m,+1 ,
.
1 当
2 当
且 为偶数时,
t
且 i 为 奇 数 时,
V( w ,,
r mi # …
…
…,
;
;,使得
mp 扩 充 M
^^ ^ ;
3. 该 信 息 历 史 中 最 后 一 个 信 息 是 接 受 。
则记作 (V P )( W ,
㈠
r,
M;)= 接 受 。
注意 ,这些条件要求 V 的 信 息 和 中 已 经 存 在 的 信 息 保 持 一 致 。进一步推广早先给
出的几个定义 。对 于 长 度 为 的 随 机 串 r ,定 义
Pr[从 iVf, 开 始 P )( w ,r 9 M j ) = 接 受 ]
接 受 加] = PTrl( V
这里 ,为了以后证明的需要 ,我们引人符号 P ,它 表 示 概 率 是 考 虑 所 有 和 M,上信息一 ^
致 的 串 r 上的概率 。如果不存在这样的 r,则定义概率为 0。然后定义
Pr[从 M) 开 始 V 接 受 = max Pi[从 M) 开 始 接 受 加]
对 每 一 个 和 每 一 个 信 息 流 M,,从 j = p 开 始 递 减 ) ,对 气进行归纳定义 。
^
对 包 含 户 个 信 息 的 信 息 流 如 果 对 一 些 串 r,Mp 和 V 的 信 息 一 致 并 接 受 ,则
令 N M p = l 否 则 ,令 N M p = 0 o
0
~
</> 和一个信息流 M;,如下定义 iVM;。
对)
max , NM 若)< /> 且 为 奇 数
Nm .
J
wt- avgmNM M
若), 且 为 偶 数
这里 Wt- avgw NM .+ 1 表示 Sm,+ 1 ( Prr[V( w ,r ,M;
.
- )= m>+i ] • N M J + 1 ),其中 Prr 表示在长度
i。这 是 NMJ
( }
为 /> 的 随 机 r 上 到的概 +I
以检验者传送信 +1 的 概 率 为 权 重 的 平
264 第三部分复杂性理论
均 值。
。
令 M 是 空 信 息 流 。 下 面 给 岀 关 于 iVM。的 两 个 断 言 。首 先 ,能 够 在 多 项 式 空 间 内 计 算
iVM。。对 于 每 一 个 )和 M, ,算 法 递 归 地 计 算 ]VM; ;
的 值 。计 算 max, 是 很 直 接 的 。为 计 算
wt - avgm ,我 们 需 要 遍 历 所 有 长 度 为 的 串 r ,删 除 那 些 使 得 检 验 者 产 生 与 中 的 信 息
不 一 致 输 出 的 串。如 果 所 有 的 串 r 都 被 删 除 了 ,那 么 wt - avg;V i = 0。 如 果 有 些 串 保 留 下
来 ,我 们 确 定 使 检 验 者 输 出 的 那 部 分 串 ,然 后 通 过 计 算 部 分 的 均 值 来 确 定 iVM;n i (
的 权 重 。递 归 的 深 度 为 /> ,故 只 需 要 多 项 式 空 间 。
其 次 ,NM。等 于 Pr[V 接 受 W ]。 为 了 确 定 u; 是 否 在 A 中 需 要 这 个 值 ,下 面 用 归 纳 法
证 明 第 二 个 断 言。
对 于 每 一 个 和 M),
Nm;= Pr[从 开 始 V 接 受 w ]
对 )作 归 纳 证 明 。归 纳 基 础 是 )= /> ,归 纳 从 f 到 0 逐 步 进 行 。
归 纳 基 础 :首 先 证 明 > 时 断 言 成 立。 是 接 受 或 者 拒 绝 。 如 果 是 接 受 ,则
NMp 定 义 为 1。此 时 ,由 于 信 息 流 已 经 表 明 接 受 ,故 Pr[从 开 始 ]= 1。因 此 ,
接 受 1;
断 言 为 真 。当 是 拒 绝 时 ,与 此 类 似 。 "
归 纳 步 骤 :假 设 对 于 j + l<P 和 任 意 的 信 息 流 M + 1 断 言 为 真 。 要 证 明 断 言 对 )和 任 ,
意 的 信 息 流 也 为 真 。如 果 )是 偶 数 ,则 %+ 1 是 7 传 给 P 的 信 息 。于 是 有
NM . = ( PTr [ V ( v u , r , M j ) = +i ] •
m; )
= X] ( Prr[V ( w , r , M> ) = m,
+ ] • Pr[从 M,+ i i 开 始 V 接 受 w ])
ipr[从 M) 开始 V 接受 W ]
"/
等式 1 是 气的定义 。根 据 归 纳 假 设 有 等 式 2。等 式 3 由 Pr[从 开 始V接 受 的 定 义
得 到 。因 而 当 7 是 偶 数 时 ,断 言 成 立 。如 果 j 是 奇 数 ,则
'
+ 1 是 P 传 给 V 的 信 息。 于
是有
开 始 V 接 受 w]
ipr[从 M) 开 始 V 接 受 加]
等 式 1 是 iVM 的 定 义 。等 式 2 使 用 归 纳 假 设 。我 们 把 等 式 3 分 成 两 个 不 等 式 。由 于 使 下 限
最大的证明一能够送岀使上限最大的信息 m + ,故 有<。又 由 于 这 个 证 明 者 不 可 能 送 出
/
』 1
比 这 个 m,+ 更 好 的 信 息 ,故 有>。送 出 任 何 不 使 上 限 最 大 的 信 息 都 会 使 最 后 得 到 的 值 变
1
小。这 就 证 明 当 )为 奇 数 时 断 言 也 成 立 ,从 而 完 成 定 理 1 0.2 6 的 一 个 方 向 的 证 明 。 ■
现 在 证 明 该 定 理 的 另 一 个 方 向 。这 个 引 理 的 证 明 引 人 一 个 新 的 分 析 计 算 的 代 数 方 法 。
dllil 腿 PSPACE£ IP 0
在 证 明 这 个 引 理 之 前 ,我 们 先 证 明 一 个 较 弱 的 结 果 ,用 来 说 明 这 个 新 技 术 。 可 满 足 性
的计数问题定义为语言
第 JO 章 复 杂 性 理 论 高 级 专 题 265
# SAT = |# 是 恰 好 有 々 个 满 足 赋 值 的 合 取 范 式 }
# SATG IP。
证明思路该证明描述一个协议 ,按照这个协议 ,证明者使检验者相信 :A 确实是给
定的合取范式> 的满足赋值的个数 。在给出这个协议之前 ,先考虑另一个协议 。它具有一
般协议的某种风格 ,但由于需要指数时间的检验者 ,因而是不能令人满意的 。设彡有变量
对 于 定 义 函 数 /: 如 下 :对 于 <21 ,
… e < o ,i }, 令 /〆 ,…,
七 ) 等于炎的
。
满足条件:r,= a 7 ()<f ) 的满足赋值的个数 。常数函数 /() 是 0 的满足赋值的个数 。如果
… , 满足 0 ,则 /m( ai ,
ai , …, am ) 等于 1; 否则等于 0。显然 ,对每一个 f<m 和 , …,
,有
… ,az ) = /:+1( ai ,
f i( ai , …, a ,- ,
0 ) + /VH ( ai ,
… ,a ,,
1)
关 于 的 协 议 ,从 阶 段 0 开 始 到 阶 段 m + 1 结束 。输入是有序对 ( 丰 , 0 k)
。
阶段 0 P 把 / () 传给 V。
。
。
V 检查々= /()。如果不相等 ,则 V 拒 绝 。
阶 段 1 尸 把 /〆 ) 和 /Kl ) 传送给 V。
V 检查 /QO /iCC + h d ),如果不相等 ,则 V 拒 绝 。
^
^
阶段 2 P 把 /2 ( 0 ,0 ),/2 ( 0 , 1 ),/2(1 ,0 ) 和 /2( 1 , 1 ) 传送给 V。
V 检査 /1( 0 )= /2( 0 ,0)+/2(0 , 1) 和 /i( l )= /2( l ,0 )+ /2( l ,l )o
如果有一个不相等 ,则 V 拒 绝 。
阶段 m 的每一个赋值 ,P 把 / , , ) 传送给 V。
“
对于
V检查 1
个 联 系 /m —!与 /w 的等式 。
“
如果有一个不相等 ,则 V 拒 绝 。
阶段 m + 1 对于 的每一个赋值 ,V 通过计算
^
关于这个赋值的值来检查
) 的值是否正确 。 如果对于所有的赋值都正确 ,则 V 接受 ;否 则 拒 绝 。 协议的描述
完毕 。
由于检验者必须花指数时间读证明者传送给它的指数长的信息 ,该协议没有提供
在 IP 中的证明 。尽管如此 ,现在我们来检查它的正确性 ,因为这可以帮助我们理
解下面的更有效的协议 。
凭直觉 ,如果证明者能够使检验者相信 A 中字符串的成员资格 ,则协议判定语言 A。
换句话说 ,如果字符串是 A 的成员 ,则有一个证明者能够使检验者以大概率接受 。如果该
字符串不是 A 的成员 ,则没有证明者 —即使是不诚实的或狡猾的—能够使检验者接受
的概率大于一个较小的数值 。用符号 P 表示正确地执行协议的证明者 。 当输入在 A 中时 ,
它使 V 以大概率接受 。用 P 表示当输入不在 A 中时任何与检验者相互作用的证明者 。 把
戶看成一个对手 ,当 V 应该拒绝时 ,戶好像正在企图让 V 接受 。记号 P 暗示这是一个
“不诚实的” 证明者 。
在刚刚描述的 # SAT 协议中 ,检验者不考虑它的随机输入 。只要选定了证明者 ,它
的运行就是完全确定的 。因而 ,为了证明协议正确 ,我们证明如下两点事实 。首先 ,如果
々〉中々正好是彡的满足赋值的个数 ,则有某个证明者 P 能使 V 接受 ;在每一
在输人 < >,
都会使 V 拒绝 。下面证明第二种情况 。
如果々不对 ,并且戶给出了准确的响应 ,则由于 /o ( ) 是 0 的满足赋值的个数并且
k , 因而 V 在阶段 0 就马上拒绝 。为了阻止 V 在阶段 0 拒绝 ,戶必须违背协议传送
foO
^
。 。
一个错误的 /() 值 ,记作 /()。 形象地说 ,/o ( ) 是关于 /() 值的一个谎言 。 和现实生 。
活中一样 ,谎言引出谎言。为了在后面的阶段不被戳穿 ,戶不得不继续对其他的 A 值说
谎 。这些谎言和戶一道最终将在阶段 m + 1 被戳穿 ,在那里 V 直接验证 / m 的值 。
7
更精确地说 ,因为 o( )关 / o( ),戶在阶段 1 送出的值 /:⑺) 和力(1 ) 中至少有一个
是不正确的 ;否则 ,V 在检查是否 /()( ) = /!( C + A d ) 时 拒 绝 。 例 如 /〆()) 的值不正
正确的值 ,
^
^
… , ),否 则 V 就会拒绝 。但是 ,当 V 在阶段 m + 1 检查那个不正确的值
_
々 …, „ )
(A , 时 ,无论怎样它都会拒绝 。于是 ,我们得出结论 ,如果々是不正确的 ,则
^
如下所示 ,设《 和 是两个子公式 ,把表达式
八夕 替换成
替换成 1 -a
a V /? 替换成
观察发现 ,f 的变量的次数都不大 ,这一点在后面是重要的 。运算 # 和 a 生成的
多项式的次数不超过关于 a 和 的 多 项 式 的 次 数 之 和 。因 而 ,任 何 变 量 的 次 数 不 超 过 n ,
这 里 w 是 彡 的 长 度。
如果给 P 的变量赋布尔值 ,则 f 和 0 在该赋值上得到的结果一样 。当变量取非布尔值
…
时 ,不能用 # 对计算 P 做出明显的解释 。然而 ,不管怎样 ,在这个证明中要使用这样的赋
值来分析 这很像在定理 10.12 的证明中用非布尔赋值分析只读一次的分支程序 。变量
在 g 个元素的有限域 J 上取值 ,这里 g 不小于 2
;
用户重新定义函数 / ,在证明思路中曾定义过它们。对于 0<i<m 和 a\ ,… ,
ai ' 令
… ,<2,) =
f i (a i , y] p( a\ ,
…,a )
,
… 6 < 0 ,1}
注意到这个新定义是原有定义的推广 ,当所有 A 取布尔值时 ,两者一样 。于是 ,/ 0 ( ) 仍
是必的满足赋值的个数 。每一个函数 /,( & ,… , ) 可表示 A 到 的多项式 。这些多项
式的次数不超过 P 的次数 。
下面给出关于 # SAT 的协议 。一开始 V 接收输入 〈 0 , ^
々> 并 且 算 术 化 一 得 到 多 项 式 ^
第1 0 章 复 杂 性 理 论 高 级 专 题 267
-
方括号内的注释放在描述每一个阶段的开始 。
阶段 0 [ P 传送 / ()。1 。
。
P V:P 把 / () 传送给 V。
。
V 检査 6 = /()。如果为假 ,则 V 拒绝 。
-
阶 段 1 〖 P 使 V 相信 : 如果 ( n ) 是正确的 ,则 /0 ( ) 是正确的 。S
^
P V:P 传送 /i(z) 作为 Z 的多项式的全部系数 。
V 利用这些系数计算 /i( 0 ) 和 /以1 )。
V 检 查 是 否 成 立 。若 不 成 立 ,则 拒 绝 。( 记 住 :所 有 计 算 都 在
-
域上进行 。 )
V P :V 从只中随机地选取一个数 n ,并且把它传送给 P。
阶 段2 使 V 相信 : 如果 /2( n , n ) 是正确的 ,则 /An ) 是正确的 。1
P- V: P 传送 /2( ri , z ) 作为 2:的多项式的全部系数 。
^
V 利用这些系数计算 /2( n ,0 ) 和 /2( n ,
-
l )。
V 检查 /i( n )= /2( n ,0 )+ /2( n ,
1 ) 是否成立 。若不成立 ,则 拒 绝 。
V P :V 从 7 中随机地选取一个元素 r 2 并且把它传送给 P。
阶段 •
IP 使 V 相信:如果 /z(n ,
…,r,) 是正确的 ,则 / (n ,
…,n一 D 是正确的。 1
^
/
P- V: P 传送 /:( n ,
^
… ,n
- , 作为 :的多项式的全部系数 。
i %) 2
0 和 / n , , n- ,l
n ,
V 使用这些系数计算 /:( n,…, —i ) z( ••• i )o
-
V 检査 /: dn , •
立 ,则拒绝 。
V P :V 从 7中随机地选取一个数匕 ,并且把它传送给 P。
阶段 m + 1 〖 V 直接验证 / n, 1
^^
••• , ) 是正确的 。
V 计算 p( n ,
… , ) 并且与 /卜 … , ) 比较。如果两者相等 ,则 V 接受 ;否则拒
绝 。协议的描述完毕 。 ^
下面证明这个协议识别 # SAT。首先 ,当# 有々个满足赋值时 ,如果证明者 P 按照协
议办事 ,则 V 显然一定接受 。其次 ,要证明当 0 的满足赋值的个数不是々时 ,没有证明者
^
z 的多项式系数一定是错的 。 把这些系数表示的函数记作 / z)。下面是证明中的关键
步骤 。
^
当 V 在 7 中取一个随机数 n 时 ,可以断言 / n ) 不 大 可 能 等 于 /dn )。 当 n>10
时 ,我们可以证明
268 第三部分复杂性理论
P r[ / i ( n ) = /i ( n ) ] < n-2
这个概率的上界来自引理 10.13: 次数不大于 d 的一元多项式最多有 个根 ,除非它
恒等于 0。因此任何两个次数不大于 d 的一元多项式最多在 d 个地方相等 ,除非它们处处
相等 。
回忆一下关于
A , 并且如果戶传送的关于 /l 的多项式的次
的多项式的次数不大于 /2
^
数大于〃,则 V 拒绝 。 已经肯定这两个多项式不处处相等 。因而根据引理 10.13 , 它们最
多在〃个地方相等 。7 的大小大于 2 。n 正好使它们相等的机会不超过 72 / 2 当〃>10
时 ,这个值不大于
-2
'
再扼要地重述一下至此所证明的东西 。如果 /Q( ) 是错的 ,则 /\ 的多项式一定是错的 ,
多半是错的 。
一 般 来 讲 ,如 此 进 行 可 以 证 明 对 于 每 一 个 如 果
…,
fi-\ ( n , n _ i ) # fi-i ( n ,
… » n~ i )
则当 72>10 时 ,对于在中随机选取的 r,, -
P r[/i ( n ,
••• ,
&) = fi( n ) ] < n~2
于是 ,由于对 /Q ( ) 给 出 不 正 确 的 值 , 戶 大 概 要 被 迫 对
…,
/m ( n , rm ) 给岀不正确的值 。碰巧可能在某个阶段 〗,虽然 /: 和/;不同 ,但是 V 选取
的 n 使/ z ( n ,
… ,n ) = /z ( n ,… 赘 rz )。 P 碰上这种好运的概率为阶段数 m 乘以 n - 2 ,不超
m/ n 0
+1 直接验证 /
如果 P
— 直不走运 ,它最后要传送一个不正确的 /m( n ,… , ) 值 。而 V 在阶段
的这个值 ,这时任何错误都将会被发现 。 因此 ,如果々不等于
^
m m 的满足
赋值的个数 ,则任何证明者都不能使检验者接受的概率大于 l / n Q
为了完成定理的证明 ,还需证明检验者在概率多项式时间内运行 。 根据对它的描述 ,
这是显然的 。 ■
量 词 考 虑 进 来 。对 于 和 ai , 、_
… , 6 { 0 ,1 },令
1, Qt + l 工 t + l •••Qm 工 m[ 多 (
'
,
… )] 为真
f i ( a\ ,… =
0, 否 则
其 中 ,今( ai ,
…,ai ) 是 在 # 中 把 <21 , , 代人 XI ,•• nr* .
于是 ,/o ( ) 是 0 的 真 假 值 。下
^
參
9 1 0
述算术恒等式成立 :
V
当 Q, + i =
当 Q» + i = 3 时 ,
回忆一下定义 x * 3;
时,
/* ( (21 ,
fi ( a] ,
…,
= l —( l —:r )( 1 — 3;
(2 , ) =
)。
/VH ( <2 i ,
…,(2 i ,
0) • /f+1 ( ai , , a , , 1 )
… , af ) = fi+\ ( a\ , ••• , a ,- , 0 ) * /m ( ^ i , , a , , 1 ) --
模 仿 # SAT 协议的做法 ,把所有 /: 扩张到一个有限域上 ,并且对量词使用这些等式 ,
而不是对加法运算使用等式 。这个想法的问题出在算术化时每一个量词可能使产生的多项
式的次数加倍 ,从而这些多项式的次数可能指数地增长 。这样一来 ,证明者为了描述这些
多项式 ,必须传送指数多个系数 ,进而检验者必须运行指数时间来处理这么多系数 。
为了保持多项式的系数较少 ,引入化简运算 R ,它能降低多项式的次数而不改变它们
对布尔输入的性状 。
证 明 设 是 带 量 词 的 布 尔 公 式 ,其 中 0 是 一 个 合 取 范 式。为 了 算
术化 0,引入下述表达式
ip = Qr 1 Rr 1 03: :
1 3:
203:
3 3:
... Q工 m 尺工 1 …仏历[ 必]
^^ ^ -
2 1 仏2 仏 3
0 重新写成
0’= S\ y\ S2 y 2 -
尺 },:
其中每一个 S/ 6 { V ,3 , y:6 { A ,
…,xm }。
m 9
SkykLi> \
^
对 于 每 一 个 定 义 函 数 /: 如 下。 f k U r , ,xm ) 为算术化 4 得到的多项式〆:n ,
…,
Xm ) o 对于纟<々,用 /:+ 1 定义 /i:
Si+i = V 时 ,
当 / ( …)= /m ( …,
! 0 ) • /m(…, 1) ;
当 S,+i = 彐时 , /i( …)= /*+i( … , 0 ) * /,+i(… , 1);
当 Si+i = R 时 , /i(…, a ) = ( l — a )/,+1(…, 0) + a/i+i( … ,
1) 0
^
秦
使得 :y:+ i 是最后一个输入变量 。
注意 ,当输入是布尔值时 ,对多项式作尺工运算不改变它们的值 。因此 ,/0 ( ) 仍是 4
的真假值 。但是 ,注意到 i?: r 运算产生的结果关于 x 是线性的 。在 〆 中 ,把 添 加
在 QA 的后面 ,是为了在算术化 Q 导致变量次数加倍之前把每一个变量的次数都减少为 1。
现在已为描述协议做好了准备 。本协议中的所有算术运算都在一个元素个数不少于 V
的有限域 7 上进行 ,其中〃是 0 的长度 。V 自己能够找到一个这么大的素数 ,因而不需要
■
P 提供 。
阶 段 0 〖 P 传送 /G( )。1
P v:P 把 / ( ) 传 送 给 V。
^
Q
。
V 验证 /0 ( )= 1 。如果 /()关1 ,则 V 拒 绝 。
270 第三部分复杂性理论
A - n ,…) 是正确的 。1
^
阶段 / IP 使 V 相信 :如果 /z( n ,… ,r ) 是正确的 ,则
P V :P 传送 /Kn ,
…,z ) 作为 z 的多项式的所有系数 。( 这里 n 表示令这些变量
^
0 0 0
等于前面随机选取的值 n , , 厂2 參
•• o)
V 使用这些系数计算 /:( n … ,
0) 和 M n …,
1 )。
V 检查下述等式
/i ( n … ,
0 ) • /z ( n … ,
1) 若 Si = V
f i-i ( r\ …)
、/* n …,
( 0 * /i n " ,
) ( . l) 若 Si = 3
和
-
f i-i ( n ••• ,
若不成立 ,则 V 拒绝 。
r) = (l —
^/A n … ,0 + rA ( n … ,1
) ) 若 = i?
_
V P :V 从 7 中取一个随机数 r ,并且把它传送给 P。(当 Sz = 尺时 ,用这个 r 代替
前面的 r 。
)
+
转到阶段纟 1 ,P 必须使 V 相信 / n … ,
“
r ) 是正确的 。
阶段 /< + 1 [ V 直接验证 h ( n ,
… , ) 是正确的 。l
… , ),并且与它知道的 A ( n , , ) 值比较 。 如果两者相等 ,则 V
V 计算 Mn ,
接受 ;否则拒绝 。整个协议的描述完毕 。
^
这个协议的正确性证明类似于 # 5八7 协议的正确性证明 。 显然 ,如果 0 为真 ,则 P
能够执行协议 ,并且 V 将会接受 。如果 0 为假 ,则 P 在阶段 0 必须说谎 ,传送一个不正确
的 /o() 的值。在阶段 i,如果 V 有不正确的 /£ -i ( n … ) 的值 ,则 /, ( n …,0) 和 / ( n …,1)
i
22 ) 个阶段 ,故
议进行 0(; P 在某个阶段走运的概率不超过 1 / 如果戶永远不走运 ,则
V 将在阶段々+ 1 拒绝 。 職
10.5 并行计算
并行计算机 ( parallel computer ) 是能够同时执行多个操作的计算机 。用并行计算机
求解某些问题可能会比用顺序计算机 ( sequential computer ) 快得多 ,后者每次只能做一
个操作 。 在实践中 ,两者之间的差别有点模糊不清 ,因为多数真实的计算机 ( 包括 “顺
序” 计算机) 被设计成在执行各条指令时使用某种并行性 。我们在这里关注的是大规模并
行性 ,即在一个计算中有数量巨大 (比如数百万或更多) 的处理单元一起积极参与工作 。
本节简洁地介绍并行计算理论 ,描述一个并行计算机的模型 ,然后利用这个模型给岀
几个能够很好并行化的问题 。此外 ,还要讨论并行化不适合某些问题的可能性 。
1 0 . 5. 1 一致布尔电路
在并行算法的理论研究中 ,用得最多的模型之一叫作并行随机存取机 ( Parallel Ran -
dom Access Machine , PRAM )。在 PRAM 模型中 ,理想化的处理器具有一个简单的模仿
实际计算机的指令集 ,它们通过共享存储相互作用。 在这一小节中 ,不可能详细地描述
PRAM 。我们使用在第 9 章为别的目的引入的另一个并行计算机模型— 布尔电路 。
作为并行计算模型 ,布尔电路有自己的优点和缺点 。 从好的方面讲 ,这个模型的描述
_
简单 ,使证明比较容易 。电路还明显地像现实中的硬件设计 ,在这个意义上模型是现实
的。从不好的方面讲 ,由于各个处理器是很弱的 ,电路不便于用来 “ 编程”。 此外 ,在布
尔电路的定义中不允许有回路 ,而现实中构造的电路可能有这样的回路 。
在并行计算机的布尔电路模型中 ,把每一个门作为一个独立的处理器 ,因此把布尔电
路的处理器复杂度 ( processor complexity ) 定义为它的规模。认为每一个处理器在一个单
位时间内计算它的函数 ,因此把布尔电路的并行时间复杂度
定义为它的深度 ,即从一个输入变量到输出门的最长距离 。
任何一个具体的电路都有固定的输入变量数 ,故像定义 9.22 中定义的那样 ,我们用
电路族判定语言 。 必须对电路族强加一个技术性要求 ,使它们对应于 P R A M 之类的并行
计算模型 。 在这类模型中 ,一台机器能够处理各种长度的输人 。这个要求使你能够容易地
得到电路族中的所有成员 。这个一致性 ( uniformity ) 要求是合理的 ,因为只知道存在小
的电路判定一个语言的某些成员并不是很有用 ,这个电路本身可能很难找到 。因而给出下
述定义 。
㈣邏 1
的 输 入 为 时 ,丁 输 出 〈 C„ 〉
则称这个语言的规模
门工
(H E19
A-:
:y ) V (- x A :
y =( 工 1
设 ( Cc Q,
^
,则 称 该 电 路 族 是 一 致 的 。
回忆一下 ,定义 9.23 分别用最小规模和最小深度的电路族定义语言的规模复杂度和
深度复杂度 。 为了明确要实现一个具体的并行时间复杂度需要多少处理器 ,或者反过来要
实现一个具体的处理器复杂度需要多少并行时间 ,我们在这里同时考虑一个电路族的规模
和深度 。如果存在规模复杂度为 /(〃) 和深度复杂度为的一致电路族识别某个语言 ,
令A是
- 深度联合电路复杂度不超过 (/U ),
y )。设电路的输入为
1
< o,
i}
g( n ))。
第1 0 章 复 杂 性 理 论 高 级 专 题
上由所有含奇数个 1 的字符串组成的语言。通过计算奇偶
函数可以检查 A 的成员资格 。可以用标准的 A N D、 O R 和 N O T 运算实现两个输入的奇偶
, … ,x n o 获取奇偶函数的电路的一个
(
…) 是 一 族 电 路 ,如 果 存 在 对 数 空 间 的 转 换 器 T,当 T
C2 , :
271
= V ( ciij A bjk )
对于每一个 f ,j 和々,这个函数的电路有计算 % A 心的门 g # 。另外 ,对于每一个和々,
电路包含一棵计算 V ## 的或门的二元树 。 每一棵这样的树有 m - 1 个或门和 l o g m 的深
度 。因此 ,这些布尔矩阵乘法电路的规模为 0( m 3 )= 0( n 3 / 2 ),深度为 O( logrz )。
设八 = { <2(; _
} 是 一 个 m X m 布尔矩阵 ,A 的传递闭包 ( transitive closure )
■
是矩阵
A V A2 V ••• V Am
272 第三部分复杂性理论
边表示 G 中存在一条路径 。 _
边表示 G 中存在长度为〖 的路径的图的邻接矩阵 。A 的传递闭包是图的邻接矩阵 ,图中的
,
路的规模为 OU 2 ),深度为 0( log2 n )。对每一个 A 构造一个电路 ,共要添加 OUm ) =
CK 2 )规模和 Odogn ) 深 度 。 因 此 ,传 递 闭 包 的 规 模 - 深 度 复 杂 度 为 ( OU 5 /2 ),
0( log2 )) 蘭
” 0
1 0 . 5. 2 NC 类
^
许多感兴趣的问题具有规模 )),其中々是常数 。 可以
认为 ,这样的问题是能够用适当数量的处理机高度并行化的 。这促使我们定义 NC 类 。
对于 >1 ,
Z 令 NC1 是 能 够 用 多 项 式 规 模 和 O( logy ) 深 度 的 一 致 ㊀ 电 路
族 识 别 的 语 言 类 。 NC 是 所 有 在 某 个 NO 中 的 语 言 组 成 的 语 言 类 。 用 这 种 电 路 族 计 算 的 函
'
。
证明设 A 是被一台 NL 机 M 识别的语言 ,这里 A 已被编码到
…)。为了得到 C„ ,要构造一个图 G,它很像 M 对长度为 rz 的输入
的一致电路族 (Co , ,
w 的计算图 。在构造电路时 ,我们不知道输人功,只知道 w 的 长 度 电 路 的 输 入 是 变 量
< 0 ,1 } 上 。 要构造 A
到 ,每 一 个 对 应 输 入 中 的 一 个 位 置。
回忆一下 ,M 关于 w 的格局描述了 M 的状态 、 工作带的内容以及输入头和工作读写
头的位置 ,但不包括 w 本身 。因此 ,M 关于 w 的格局集合实际上不依赖于 VU , 而仅与
的长度 n 有关 。这些多项式个格局构成 G 的顶点集 。
在 G 的边上标记输入变量 。设 和 是 G 的两个顶点 ,Q 指明输人头的位置是
^ ^
t Q
―
种路径的状态 ,它恰好接受 A 中长度为《 的字符串。这个电路具有多项式的规模和
0( log2 71) 深度 。
使用一台对数空间转换器 ,能够对输人 1” 构造 G 和 C „ 。请参见定理 8.20 中关于一
个类似的对数空间转换器的详细描述 。 ■
10.5. 3 P 完全性
现在考虑 P 中所有问题也在 NC 中的可能性 。如果这两个语言类相等 ,那是完全出人
意料的 ,因为这意味着所有多项式时间可解的问题都能够高度并行化 。 下面介绍 P 完全
性 ,它提供了 P 中某些问题是固有可串行化的理论根据。
如果
1. BGP ,
2. P 中每一个 A 对 数 空 间 可 归 约 到 J3 ,
则称语言 B 是 P 完全的 。
下述定理仿效定理 8.18 , 并且由于 NC 电路族能够计算对数空间归约 ,故可以类似地
证明它 。我们把它的证明留作练习 10.3。
疆 動 馳 如 果 A<LB 且 B 在 NC 中 ,则 A 在 NC 中 。
我们证明电路计算问题是 P 完全的 。对于电路 c 和输入 X ,记 C(:T ) 为 C 关于 X 的
:
值 。令 CJi?CWT- VALUf = {〈 C,
:r〉| C 是布尔电路且 C( x )= l }。
遇通 CIRCUIT- VALUE 是 P 完 全 的 。
证明定理 9.25 中给出的构造说明了如何把 P 中任意的语言 A 归约到 CJRCUJT
:
VALL/f 。对于输入 w ,归约生成一个模拟 A 的多项式时间图灵机的电路。该电路的输入
-
是 w 本身 。由于生成的电路具有简单和重复的结构 ,归约能够在对数空间内实现 。 ■
10.6 密码学
在通信领域中使用密码的加密技术可追溯到几千年前 。 在古罗马时期 ,儒略 恺撒把
给他的将军们的命令译成密码 ,以防止被敌人截取。在第二次世界大战中 ,图灵机的发明
人阿伦 • 图灵领导一个英国数学家小组破译德国人的密码 ,德国人用这些密码给正在大西
洋上巡逻的潜艇发送命令 。现在各国政府十分重视密码技术 ,投入很大的力量研究很难破
译的密码和寻找别人使用的密码的弱点。 如今 ,公司和个人也使用加密增加信息的安全 。
不久的将来 ,几乎所有的电子通信将会受到密码保护 。
274 第三部分复杂性理论
1 0 . 6. 1 密钥
在传统解密技术中 ,当发信人打算给报文加密 ,使得只有某个接收人能够对它解密
时 ,发信人和收信人共有一个密钥 (secret key )。 密钥是加密算法和解密算法使用的一段
信息 。因为任何得到密钥的人都能够加密和解密报文 ,故保守密钥的秘密对密码的安全是
至关重要的 。
如果密钥太短 ,可以通过蛮力搜索整个密钥空间发现它 。甚至长一些的密钥也可能容
易受到某些攻击— 等会儿还要谈这个问题 。 使密码绝对安全的唯一办法是使用与发送的
全部报文一样长的密钥 。
与报文一样长的密钥叫作一次性衬塾 (one- time pad )。本质上 ,一次性衬垫密钥的每
一位只使用一次 ,用来加密报文的一位 ,以后不再使用密钥的这一位 。 一次性衬垫的主要
问题是 ,如果通信量很大则密钥可能相当大 。因此 ,就大多数的目的而言 ,一次性衬垫由
于非常不便通常被认为是不实际的 。
使用中等长度的密钥 ,可以进行不限量安全通信的密码是更可取的 。 有趣的是 ,理论
上不可能有这样的密码 ,但矛盾的是 ,在实践中却使用着它们 。在理论上不可能有这种类
型的密码 ,是因为能够对可能的密钥空间进行蛮力搜索 ,找到比报文短很多的密钥 。因
此 ,以这种密钥为基础的密码在原则上是可破译的 。对这种自相矛盾的怪事有一种解释 。
因为当密钥有中等长度时 ,比如 100 位 ,蛮力搜索太慢 ,所以密码在实践中无论如何是能
够保证足够的安全的 。当然 ,如果密码能用其他的快速方式破译 ,那么它也是不安全和不
应该使用的 。 最重要的是 ,要确认密码不可能被快速破译 。
现在还没有办法保证使用中等长度密钥的密码实际上是安全的 。 为保证密码不能被快
速破译 ,至少需要在数学上证明不能快速地找到密钥 。然而 ,这样的证明似乎超出当代数
学的发展水平! 理由如下 ,一旦发现密钥 ,验证它的正确性是容易做到的 ,只需检査用它
解密后的报文 。因此 ,密钥验证问题可以公式化为 P 中的一个问题 。如果能够证明不能在
多项式时间内找到密钥 ,就证明了 P 不等于 NP ,从而取得重大的数学进展 。
由于不能从数学上证明密码是不可破译的 ,因此改成依靠实践证据 。在过去 ,密码的
质量靠雇用专家来评价 。请他们破译密码 ,如果他们不能破译 ,就会增加对密码安全性的
可信度 。这种方法有明显的不足 。如果别人有比我们更好的专家 ,或者我们对自己的专家
缺乏信任 ,那么密码的完整性可能受到损害 。尽管如此 ,直到最近这还是唯一可供使用的
方法 ,像美国国家标准与技术局正式批准的数据加密标准 ( DES) 这样一些广泛使用的密
码的可靠性也有赖于它。
计算复杂性理论提供了另一种获得密码安全性证据的方法 。 我们可以给出破译这个密
第1 0 章 复 杂 性 理 论 高 级 专 题 275
码 的 复 杂 度 与 另 外 某 个 问 题 的 复 杂 度 之 间 的 联 系 ,而 后 者 已 经 有 使 人 相 信 的 难 解 性 证 据 。
回 忆 一 下 ,我 们 已 经 用 NP 完 全 性 作 为 某 些 问 题 难 解 的 证 据 。 把 一 个 NP 完 全 问 题 归 约 到
密 码 破 译 问 题 ,可 以 证 明 这 个 密 码 破 译 问 题 本 身 是 NP 完 全 的 。但 是 ,这 没 有 提 供 安 全 的
充 分 证 据 ,因 为 NP 完 全 性 涉 及 最 坏 情 况 的 复 杂 性 。一 个 问 题 虽 然 是 NP 完 全 的 ,但 是 有
可 能 在 大 多 数 时 候 它 是 容 易 解 的 。 密 码 则 必 须 总 是 很 难 破 译 的 ,因 而 需 要 考 虑 平 均 复 杂
度 ,而 不 是 最 坏 情 况 的 复 杂 度 。
整 数 因 子 分 解 问 题 是 公 认 的 在 平 均 情 况 下 非 常 难 解 的 问 题 。几 个 世 纪 以 来 ,一 些 顶 尖
数 学 家 一 直 对 因 子 分 解 感 兴 趣 ,但 是 还 没 有 人 发 现 它 的 快 速 算 法 。围 绕 因 子 分 解 问 题 已 经
建 立 了 某 些 现 代 密 码 ,破 译 这 种 密 码 对 应 因 子 分 解 一 个 数 ,这 就 构 成 这 些 密 码 是 安 全 的 、
令 人 信 服 的 证 据 。因 为 破 译 这 种 密 码 的 有 效 方 法 能 够 导 岀 快 速 的 因 子 分 解 算 法 ,这 可 是 计
算 数 论 中 的 重 大 进 展!
1 0 . 6. 2 公钥密码系统
在 传 统 的 密 码 学 中 ,甚 至 当 密 钥 适 当 地 短 时 ,密 码 的 管 理 仍 是 普 遍 使 用 密 码 的 一 个 障
碍 。一 个 问 题 是 每 一 对 希 望 进 行 专 门 通 信 的 双 方 需 要 为 此 建 立 一 个 联 合 密 钥 。 另 一 个 问 题
是 每 一 个 人 需 要 保 存 一 个 秘 密 的 数 据 库 存 放 所 有 这 样 建 立 起 来 的 密 钥。
新 近 开 发 的 公 钥 密 码 很 好 地 解 决 了 这 两 个 问 题。在 传 统 的 私 钥 密 码 系 统 ( private- key
cryptosystem ) 中 ,加 密 和 解 密 使 用 相 同 的 密 钥 。与 此 不 同 ,在 公 钥 密 码 系 统 ( public- key
cryptosystem ) 中 ,解 密 密 钥 不 同 于 加 密 密 钥 ,并 且 不 容 易 从 加 密 密 钥 中 计 算 岀 来 。
虽 然 可 能 有 人 认 为 这 是 一 个 简 单 想 法 ,但 是 将 两 种 密 钥 分 开 产 生 了 意 义 深 远 的 结 果。
现 在 每 一 个 人 只 需 要 建 立 一 对 密 钥 : 一 个 加 密 密 钥 和 一 个 解 密 密 钥 D 。各 人 保 守 自 己 的
D 的 秘 密 而 公 开 E。如 果 乙 想 给 甲 发 一 条 报 文 ,乙 要 在 公 共 的 密 钥 簿 上 找 到 甲 的 E,用
它 加 密 报 文 ,然 后 发 送 给 甲 。甲 是 唯 一 知 道 自 己 的 D 的 人 ,所 以 只 有 他 能 够 解 密 这 段
报 文。
某 些 公 钥 密 码 系 统 还 可 以 用 于 数 字 签 名 ( digital signature )。如 果 一 个 人 在 发 送 报 文
之 前 对 它 运 用 他 的 保 密 的 解 密 算 法 ,则 任 何 人 能 够 运 用 他 的 公 开 的 加 密 算 法 验 证 报 文 确 实
是 他 发 的 。于 是 ,他 有 效 地 “签 署 ” 了 那 段 报 文 。这 种 应 用 要 求 可 以 以 任 何 顺 序 运 用 加 密
算 法 和 解 密 算 法 ,RSA 密 码 系 统 就 是 这 样 的 。
10.6 . 3 单向函数
单 向 函 数 和 天 窗 函 数 是 现 代 密 码 学 理 论 的 基 础 。用 复 杂 性 理 论 作 为 密 码 学 基 础 的 一 个
优 点 是 ,它 有 助 于 在 我 们 辩 论 安 全 性 时 提 供 一 个 共 同 的 假 设 平 台 。 在 存 在 单 向 函 数 的 假 设
下 ,能 够 构 造 出 安 全 的 私 钥 密 码 系 统 。在 存 在 天 窗 函 数 的 假 设 下 ,能 够 构 造 岀 公 钥 密 码 系
统 。这 两 个 假 设 还 有 一 些 其 他 的 理 论 和 应 用 的 结 果 。 在 做 一 些 准 备 后 我 们 将 定 义 这 两 种
函 数。
如果对每一个 XV , IV 和 /( w ) 的 长 度 相 等 ,则 称 函 数 2 * 是 保 长 的 ( length -
—
preserving ) 0 如 果 保 长 函 数 不 会 把 两 个 不 同 的 字 符 串 映 射 到 同 一 个 字 符 串 ,即 当:r 关 y 时 ,
, 则 称 它 是 一 个 置 换 ( permutation) o
回 忆 一 下 1 0.2 节 给 出 的 概 率 图 灵 机 的 定 义 。假 定 概 率 图 灵 机 M 计 算 概 率 函 数 H
X* 这 里 对 每 一 个 输 人 w 和 输 岀 x ,令
276 第三部分复杂性理论
~
Pr[M( xt» ) = x]
为 M 从输入如开始停机在接受状态且停机时带的内容为:T 的概率 。注意 ,M 对输入 w 有
时可能不接受 ,故
Pr[M( itO = 工]< 1
^
PrM, w [M( /XTXO ) = w] rTk
这里 PWA 表示概率是在 M 所做的随机选择和 w 的随机选取上取到的 。
单 向 函 数 (one- way function ) 是 具 有 下 述 两 条 性 质 的 保 长 函 数 /:
1. / 是 多 项 式 时 间 可 计 算 的 。
2. 对 于 每 一 台 多 项 式 时 间 概 率 图 灵 机 M、每 一 个 6 和 充 分 大 的 如果取长度为 n 的
随 机 串 w 并 且 对 输 入 /( w ) 运 行 M,则
)) = :
^
PrM ,w[M( /( i£; y,其中 f ( y ) = /( w )] n ~ k
1 0 . 6. 4 天窗函数
我们不知道如果存在单向函数 ,是否一定能够构造公钥密码系统 。 为了得到这样的系
统 ,要使用天窗函数 ,对于专门的信息它能够有效地反演 。
—
首先 ,需要讨论给函数族做索引的函数 。设有函数族 { /: },其中 〗6 2 * ,可以用一
个函数 /:2 * X 2 * 2 * 表示它们 ,这里对于每一个 i 和 = /:(!£;
)。称 / 是 一 个
索引函数 。 如果每一个被索引函数 /, 是保长的 ,则说 / 是保长的 。
tejyJUlMFEI
机 G 和一个辅助函数
h 满足下述 3 个条件 :
1. 函数 / 和 /i 是多项式时间可计算的 。
X 2*
—
天窗函数 ( trapdoor function ) 是带有一台辅助的多项式时间概率图灵
2 * 的保长索引函数 / : 2 * X 2 *
随机输出 ( i ,
t ) 和随机串则
:
= y,
其中 f i i y ) = /;( w ) ] < n
~
k
f i ,e ( w ) =
^ vue mod N
反演函数 A 为
h ( d , x ) = x d mod N
/N ,e( w ))= wedmod N =
因为 /i( <i, 故函数 /i 正好反演 /。 ■
练习
10.1 证 明 :深 度 为 CKlog /0 的 电 路 族 是 多 项 式 规 模 的 电 路 族 。
10.2 证 明 :1 2 不 能 通 过 费 马 测 试 ,从 而 不 是 伪 素 数 。
10.3 证 明 :如 果 A<LB 且 B 在 NC 中 ,则 A 也 在 NC 中 。
10.4 证 明 :有 n 个 输 入 的 奇 偶 函 数 能 用 OU ) 个 顶 点 的 分 支 程 序 计 算 。
278 第三部分复杂性理论
问题
-
ZPP 是 ZPP 机器识别语言的集合 。 证明 RPHC0 RP = ZPP。
10.11 证明 :如果 NPGBPP,| 贝JNP = RP。
10.12 证明 :如果 A 是一个正则语言 ,则存在分支程序族 (氏 , 52 ,…),使得每一个艮恰好接受 A
中长度为〃的所有字符串 ,且规模不超过〃的常数倍 。
10. 13 证明 :如果 A 是 L 中 的 一 个 语 言 ,则 存 在 分 支 程 序 族 …),使 得 每 一 个 艮 恰 好 接 受
A 中长度为《 的所有字符串 ,且规模不超过〃的多项式 。
AM 0. 14 证明 :对于任意的整数 />>1 ,如果 /> 不是伪素数 ,则 /> 至少对中的一半的数不能通过费
马测试 。
10.15 回忆一下 ,NP& T 是以可满足性问题作谕示的非确定型多项式时间图灵机识别的语言类 。证
明 :NPSAT = 22 PO
10. 16 证明费马小定理 ,即定理 10.6 。(提示 :考虑序列 a2 ,
… 。一定发生什么? 如何发生?)
10.17 证明 :如果 PH = PSPACE,则多项式时间层次只有有限个不同的层次 。
10.18 证明 :如果 P = NP ,则尸= 尸只。
10.19 设 M 是一台多项式时间概率图灵机 ,语言 C 满足下述条件 :对于某个固定的 0< 1 < 2 <1 ,
蕴涵 Pr[M 接受切] <ei 。
b. >
C 蕴涵 Pr[M 接受 w ] e 2 。
证明 :C6 BPP。(提示 :利用引理 10.5。
)
10. 20 CNFH = {〈 pk 是一个可满足的 cnf 公式 ,其中每个子句包含任意多个文字 ,但最多只有
令
:
一个非的文字 h 问题 7.52 要求证明( ]\/1 6 ?。请给出从 CIRa/JT- VALLTE 到 CiVFH 的对
*
数空间归约 ,从而得到 CiVFH 是 P - 完全的结论。
义语言类 ^
10.21 /c 头下推自动机 (tPDA ) 是具有々个双向只读输人头和一个读写栈的确定型下推自动机 。定
习题选解
10.7 如果 M 是一个运行于多项式时间的概率图灵机 ,对某个常数 r 我们对 M 进行修改 ,使得它只
次抛硬币试验 。于是 ,判定 M 接受输入串的概率的问题转化
^
能在每一计算分支上恰好进行
■
10.14 如 果 一 个 数 a 对 不 能 通 过 费 马 测 试 ,即 V1 吴 l ( mod 户),则 称 a 为一个见证 。 令 Z
U, …,
中 ,所 以 ( di — 〈d2
(
a 和 户 是 互 素 数 。因 此 ,;
中 一 半 的 成 员 是 见 证。
^
一 半 的 成 员 是 见 证。
)
^ ^
_
第1 0 章 复 杂 性 理 论 高 级 专 题
为 计 算 有 多 少 个 接 受 分 支 ,并 把 计 算 结 果 与 进 行 比 较 。这 种 计 算 消 耗 多 项 式 空 间 。
/> 一 1 } 中 所 有 与 互 素 的 数 。如 果 P 不 是 伪 素 数 ,它 在 中 有 一 个 见 证 a 。
使 用 可 以 得 到 很 多 的 见 证 。对 每 一 个 非 见 证 ,在 Z p* 中 找 到 一 个 独 特 的 见 证。如 果
否则 ,
a
是 一 个 非 见 证 ,能 够 得 到 A - i 三 1 ( mod /0 。因 此 ,
da mod /? 是 一 个 见 证 。如 果 A 和 山 是;
279
;表 示
^、
( A — 4 ) = 0。但 是 因 为 A 和 山 在 Z : ;
p ,因 此 a = c/ /( c i — 山) 且 户 有 大 于 1 的 公 因 子 。 这 导 出 了 矛 盾 ,因 为
Z 中 的 见 证 个 数 一 定 和 Z/ 中 的 非 见 证 个 数 一 样 多 ,故 而 至 少 Z
下 面 证 明 Zp .中每个不与 p 互 素 的 成 员 6 都 是 见 证。如 果 6 和 p 有 公 因 子 ,那 么 ,对 任 意 的
>0 , 有 炉 和 p 都 含 有 该 公 因 子 。闵 此 , -
^ ^ Kmod p ) 所 以 ,我 们 得 出 结 论 ,至 少 Z p 中
0
;
:
参 考 文 献
22-27.
参 考 文 献 281
19. CHOMSKY, N. Three models for the description of language. IRE Trans. on
Information Theory 2 (1956), 113-124.
20. COB HAM, A. The intrinsic computational difficulty of functions. In Pro-
ceedings of the International Congress for Logic, Methodology, and Philosophy of
-
Science , Y. Bar-Hillel, Ed., North-Holland , 1964, 24 30.
21. COOK , S. A. The complexity of theorem-proving procedures. In Proceedings
of the Third Annual ACM Symposium on the Theory of Computing (1971), 151-
158.
22. CORMEN , T., LEISERSON , C., AND RlVEST, R. Introduction to Algorithms.
MIT Press, 1989.
23. EDMONDS, J . Paths, trees, and flowers. Canadian Journal of Mathematics 17
( 1965), 449-467.
24. ENDERTON, H. B. A Mathematical Introduction to Logic. Academic Press,
1972 .
25. EVEN, S. Graph Algorithms. Pitman, 1979.
26. FELLER , W. An Introduction to Probability Theory and Its Applicatio?is, Vol. 1 .
John Wiley & Sons, 1970.
27. FEYNMAN , R. P., HEY, A. J. G., AND ALLEN , R. W. Feynman lectures on
computation. Addison-Wesley, 1996.
28. GAREY, M. R., AND JOHNSON , D. S. Computers and Intractability―A Guide
to the Theory of NP-completeness. W. H. Freeman, 1979.
29. GILL, J . T. Computational complexity of probabilistic Turing machines.
SIAM Journal on Computing 6 , 4 (1977), 675-695.
30. GOD EL, K. On formally undecidable propositions in Principia Mathematica
and related systems I. In The Undecidable , M. Davis, Ed ., Raven Press, 1965,
4-38.
31. GOEMANS, M. X., AND WILLIAMSON , D. P. .878-approximation algo-
rithms for MAX CUT and MAX 2 SAT. In Proceedings of the Twenty-sixth
Annual ACM Symposium on the Theory of Computing (1994), 422-431.
32. GOLDWASSER , S., AND MlCALI , S. Probabilistic encryption. Journal of
Computer and System Sciences (1984), 270-299.
33. GOLDWASSER , S., MlCALI, S., AND RACKOFF, C. The knowledge com -
plexity of interactive proof-systems. SIAM Journal on Computing (1989),
186-208.
34. GREENLAW, R., HOOVER , H. J., AND RUZZO, W. L. Limits to Parallel
Computation: P-completeness Theory . Oxford University Press, 1995.
35. HARARY, F. Graph Theory ^ 2 d ed. Addison-Wesley, 1971.
36. HARTMANIS, J ., AND STEARNS, R. E. On the computational complexity
of algorithms. Transactions of the American Mathematical Society 117 (1965 ),
285-306.
37. HILBERT, D. Mathematical problems. Lecture delivered before the In -
ternational Congress of Mathematicians at Paris in 1900. In Mathematical
Developments Arising from Hilbert Problems , vol. 28. American Mathematical
Society, 1976,1-34.
38. HOFSTADTER , D. R. Goedel,Escher、 Bach: An Eternal Golden Braid. Basic
Books,1979.
39. HOPCROFT, J . E., AND ULLMAN , J . D. Introduction to Automata Theory,
Languages and Computation. Addison-Wesley, 1979.
40. IMMERMAN , N. Nondeterminstic space is closed under complement. SIAM
Journal on Computing 17 (1988), 935-938.
41. JOHNSON, D. S. The NP-completeness column:Interactive proof systems
for fun and profit. Journal of Algorithms 9 , 3 (1988), 426-44 ^1.
282 参 考 文 献
878-880.
-
69. SHOR , P. W. Polynomial time algorithms for prime factorization and dis-
crete logarithms on a quantum computer. SIAM Journal on Computing 26 ,
(1997), 1484-1509.
70. SlPSER , M. Lower bounds on the size of sweeping automata. Journal of
Computer and Syste?n Sciences 27 ,2 (1980), 195-202.
71. SlPSER , M . The history and status of the P versus NP question . In Proceed-
ings of the Twenty-fourth Annual ACM Symposium on the Theory of Computing
(1992 ), 603-618.
72. STINSON , D. R. Cryptography: Theory and Practice. CRC Press, 1995.
73. SZELEPCZENYI, R. The method of forced enumeration for nondetermin -
istic automata , Acta lnformatica 26 y (1988), 279-284.
74. TARJAN, R. E. Data structures and network algorithms, vol. 44 of CBMS- NSF
Regional Conference Series in Applied Mathematics,SIAM, 1983.
75. TURING, A. M. On computable numbers, with an application to the
Entscheidungsproblem. In Proceedings, London Mathematical Society, (1936),
230-265.
76. ULLMANj. D., AHO, A. V., AND HOPCROFT, J. E. The Design and Analysis
of Computer Algorithms. Addison-Wesley, 1974.
77. VAN LEEUWEN, J., Ed. Handbook of Theoretical Computer Science A: Algo-
rithms and Complexity. Elsevier, 1990.
索 引
^
o(/( n))
proper subset ( 真子集),0.2.1 A
U union operation ( 并运算),0.2.1 ,1.1.5 Accept state ( 接受状态),1.1 ,1.1.1
0 intersection operation ( 交运算),0.2.1 Acceptance problem ( 接受问题 )
章 ,第 9 章 properties ( 性质),2.4. 1
Cormen ,Thomas ( 人名 ),参考文献 Deterministic finite automation ( 确定型有穷自动机)
Corollary ( 推论 ),0.3 acceptance problem ( 接受问题),4 1 1 ..
Correspondence ( 对应 ),4.2. 1 defined ( 定义 ),1.1. 1
unary ( — 兀),0. 2. 3
■
Halting problem ( 停机问题),5.1
G unsolvability of ( 不可解性),5.1
Gabarro , Joaquim ,
( 人名 ),参考文献 HALTJM , 5. 1
Gadget in a completeness proof ( 完全性证明中的构 Hamiltonian path problem ( 哈密顿路径问题),7. 3
件),7.5 exponential time algorithm ( 指数时间算法),7. 3
Game ( 游戏 ,博弈 ),8.3. 2 NP- completeness of ( NP 完全性),7.3
-
々- tuple (々 元组 ),0.2 2 . Literal ( 文字 ),7. 4.1
Karloff , Howard ( 人名),参考文献 Log space computable function ( 对 数 空 间 可 计 算 函
Karp , Richard M. ( 人名 ),参考文献 数),8. 5
Kayal , Neeraj ( 人名 ),参考文献 Log space reduction ( 对数空间归约),8. 5
Kolmogorov , Andrei N. ( 柯尔莫哥洛夫),6.4. 1 Log space transducer ( 对数空间转换器 ),8. 5
L Lookahead ( 前瞻性 ),2 4 4 . .
L , 8. 4 LR( 是 ) grammar ( LR (々)文法 ),2.4 .4
Labeled graph ( 标定图 ),0.2. 4 Luby , Michael ( 人名),参考文献
Ladder ( 梯子),问题 8. 25 Lund , Carsten ( 人名),参考文献
Language ( 语言) M
co- Turing- recognizable ( 补图灵识别的),4.2. 3 Majority function ( 多数函数),问题 9. 13
context - free ( 上下文无关的),2.1 Many-one reducibility ( 多一 可归约性 ),5. 3. 1
decidable (可判定的),3 1. 1 . Mapping ( 映射),0.2. 3
defined ( 定义),0.2. 5 Mapping reducibility ( 映射可归约性 ),5. 3
deterministic context-free ( 确 定 型 上 下 文 无 关 语 polynomial time ( 多项式时间),7.4. 1
言),2.4 Markov chain ( 马尔科夫链),1.1
endmarked ( 结束标记),2.4. 1 Match ( 匹配),5.2
of a grammar ( 文法的),2.1 Matijasevic Yuri ( 马提亚塞维齐 ),3.3. 1
recursively enumerable ( 递归可枚举的),3.1. 2 MAX -CLIQUE f 问题 7. 19 ,练习 9. 11
regular ( 正则的),1.1. 3 MAX -CUT 问题 7.54
f
时间),7. 3 CIRCUIT-VALUE , 1 0 . 5. 3
292 t 引
Transducer ( 转换器 ) U
finite state ( 有穷状态的),练习 1. 24 Ullman , Jeffrey D. ( 人名),参考文献
log space ( 对数空间的),8.5 Unary ( 一元的)
Transition ( 转移),1.1 alphabet ( 字母表),1.2.1,1.4 , 问题 5. 33
Transition function ( 转移函数),1.1. 1 function ( 函数 ),0.2. 3
Transitive closure ( 传递闭包),10. 5. 1 notation ( 标记),7. 2. 2 , 问题 7 44 .
Transitive relation ( 传递关系),0.2. 3 operation ( 运算 ),1.1. 5
Trapdoor function ( 天窗函数 ),10.6. 4 Uncountable set ( 不可数集 ),4.2. 1
VERTEX -COVER , 7. 5. 1 X
Virus (病毒),6. 1 . 3 XOR operation (异或运算),0. 2. 6,9. 3
Vitanyif Paul (人名),参考文献 Y
W Yannakakis , Mihalis ( 人名),参考文献
Wegman , Mark ( 人名 ),参考文献 Yields ( 产生)
Well-formed formula (良构公式),6. 2 for configurations ( 格局),3. 1. 1
Williamson , David P. ( 人名),参考文献 for context-free grammars ( 上 下 文 无 关 文 法 ),
Window , in a tableau ( 画面中的窗口 ),7.4. 3 2. 1 . 1
Winning strategy ( 必胜策略),8.3. 2 Z
Wire in a Boolean circuit ( 布尔电路的导线),9. 3 ZPP,问题 10. 10
Worst-case analysis ( 最坏情况分析),7.1 Zuckerman , Herbert S. ( 人名 ),参考文献
推荐阅读
数似 ㈧ 系统槪念 数侃挖偏
槪念与技木
中 中文版
第 第3版
软件 H
' ivm
- 獅
实践者的研究方法
大数倨分析
雛 二1
统
基于R 应用
论
^
达 七 厂?泛 咛
|
ARUnt^ iaai
m- m
'
I M FRPKIM \ M1 H( 、、
大数据分析: 数鯉義M駢散、胧髀濉营决策
作者 : Thomas H. Davenport ISBN: 978-7-111-49184-2 定价:59.00元
统计学习导论
— 基于R应用
作者 :加雷斯 詹姆斯等 ISBN : 978-7- 111-49771-4 定价 :79.00元
;
Hi
)
nu/G
机器卞屮;
:
^
r
|
\{ \
| [ \! I \
(|
'
M\ NIN( i WITII K
...
I
本书由计算理论领域的知名权威Michael Sipser所撰写。他以独特的视角,系统地介绍了计算理论的三
个主要内容 : 自动机与语言 、可计算性理论和计算复杂性理论。绝大部分内容是基本的 ,同时对可计算性
和计算复杂性理论中的某些高级内容进行了重点介绍。作者以清新的笔触 、 生动的语言给出了宽泛的数学
原理 , 而没有拘泥于某些低层次的细节。在证明之前 ,均有 “证明思路” ,帮助读者理解数学形式下蕴涵
的概念。同样 ,对于算法描述 ,均以直观的文字而非伪代码给出 ,从而将注意力集中于算法本身 ,而不是
某些模型。新版根据多年来使用本书的教师和学生的建议进行了改进 ,并用一节的篇幅对确定型上下文无
关语言进行了直观而不失严谨的介绍。此外 ,对练习和问题进行了全面更新 ,每章末均有习题选答。
作者简介
上架指导 : 计算机\计算理论
- - - -
ISBN 978 7 111 49971 8
CENGAGE
i% Learning
www.ccngagcasia.com