收藏 分享(赏)

计算机算法设计与分析-卢开澄.docx

上传人:oceanpvg 文档编号:3038402 上传时间:2018-10-02 格式:DOCX 页数:174 大小:706.74KB
下载 相关 举报
计算机算法设计与分析-卢开澄.docx_第1页
第1页 / 共174页
计算机算法设计与分析-卢开澄.docx_第2页
第2页 / 共174页
计算机算法设计与分析-卢开澄.docx_第3页
第3页 / 共174页
计算机算法设计与分析-卢开澄.docx_第4页
第4页 / 共174页
计算机算法设计与分析-卢开澄.docx_第5页
第5页 / 共174页
点击查看更多>>
资源描述

1、计 算 机 算 法 设 计 与 分 析卢 开 澄 谭 明 术 编 著中 国 铁 道 出 版 社1 9 9 8 年 北 京( 京 ) 新 登 字 063 号内 容 简 介计 算 机 算 法 设 计 与 分 析 是 计 算 机 专 业 一 门 十 分 重 要 的 专 业 基 础 课 , 本 书 提 供 了 一 本 十 分 实 用 的 教 科 书 。本 书 重 点 介 绍 了 算 法 设 计 的 基 本 方 法 , 如 优 先 策 略 、 分 治 策 略 、 动 态 规 划 以 及 DFS 和 B FS 等 搜 索 法 。 还 分 别 针 对 具 体 的 排 序 、 查 找 , 匹 配 , 概 率

2、算 法 , 几 何 算 法 , 数 论 算 法 , 近 似 算 法 和 N P 理 论 等 问 题 作 了 介 绍 。本 书 适 用 于 计 算 机 , 数 学 及 相 关 专 业 作 教 材 使 用 , 也 可 作 为 广 大 从 事 计 算 机 软 件 开 发 的 人 员 自 修 用 书 。图 书 在 版 编 目 (CIP) 数 据计 算 机 算 法 设 计 与 分 析 / 卢 开 澄 , 谭 明 术 编 著 . - 北 京 : 中 国 铁 道 出 版 社 , 1997.12ISBN 7-113-02909-4 . 计 . 卢 谭 . 电 子 计 算 机 -算 法 设 计 电 子 计 算

3、机 -算 法 分 析 . TP301.6中 国 版 本 图 书 馆 CI P 数 据 核 字 ( 98 ) 第 02674 号书 名 : 计 算 机 算 法 设 计 与 分 析著 作 责 任 者 : 卢 开 澄 谭 明 术出 版 发 行 : 中 国 铁 道 出 版 社 ( 10 0 05 4 , 北 京 市 宣 武 区 右 安 门 西 街 8 号 )策 划 编 辑 : 严 晓 舟责 任 编 辑 : 严 晓 舟封 面 设 计 : 马 利印 刷 : 中 国 铁 道 出 版 社 印 刷 厂开 本 : 7 8 7 1 09 2 1/ 1 6 印 张 : 10 . 7 5 字 数 : 2 58 千版 本

4、 : 1 9 9 8 年 月 第 1 版 19 9 8 年 月 第 1 次 印 刷印 数 : 1 20 0 0 册书 号 : IS BN 7-1 1 3-0 29 0 9-4/ T P28 7定 价 : 1 6 . 20 元版 权 所 有 盗 印 必 究凡 购 买 铁 道 版 的 图 书 , 如 有 缺 页 、 倒 页 、 脱 页 者 , 请 与 本 社 发 行 部 调 换 。摘 要算 法 设 计 与 分 析 是 计 算 机 科 学 重 要 理 论 课 程 。 本 书 用 深 入 浅 出 的 方 法 讨 论 有 关 的 基 本 算 法 , 以 及 若 干 重 要 问 题 。 如 优 先 策 略

5、 、 动 态 规 划 、 分 治 策 略 及 搜 索 法 等 。 在 讨 论 算 法 的 同 时 对 若 干 重 要 的 问 题 作 比 较 深 入 的 剖 析 , 如 F FT , 分 类 查 找 问 题 等 。 本 书 可 作 为 计 算 机 专 业 教 材 。 有 关 的 专 业 也 可 用 作 参 考 书 。序 言本 书 力 图 写 成 一 本 计 算 机 系 高 年 级 适 用 的 算 法 教 材 。 充 分 考 虑 学 生 的 接 受 能 力 , 以 便 学 生 掌 握 计 算 机 算 法 设 计 与 分 析 的 基 本 概 念 和 方 法 。计 算 机 贵 在 神 速 。 如 每

6、 秒 能 做 数 亿 次 乘 法 的 大 型 机 , 相 当 于 集 中 了 数 亿 人 的 计 算 能 力 , 的 确 身 手 不 凡 。 计 算 机 的 发 展 速 度 之 快 也 是 惊 人 的 。 短 短 50 年 时 间 内 , 它 不 仅 完 全 改 变 了 自 己 , 也 改 变 了 这 个 世 界 面 貌 。 在 今 天 , 人 们 几 乎 无 处 不 感 觉 到 它 的 存 在 , 世 界 也 从 此 进 入 了 计 算 机 时 代 。 计 算 机 元 器 件 从 继 电 器 , 真 空 管 , 晶 体 管 , 集 成 电 路 , 大 规 模 集 成 电 路 , 发 展 到

7、超 大 规 模 集 成 电 路 ; 结 构 上 从 每 台 机 器 作 为 运 算 工 具 的 “ 单 兵 作 战模 式 , 发 展 到 今 天 将 范 围 遍 及 各 大 洲 的 计 算 机 群 组 成 的 网 络 ; 算 法 也 从 单 机 的 串 行 计 算 发 展 到 网 络 上 并 行 的 分 布 计 算 。一 台 作 109 次 / 秒 运 算 的 计 算 机 的 效 率 超 过 10 亿 人 同 时 工 作 , 它 可 以 作 中 期 的 天 气 预 报 , 可 以 控 制 庞 大 的 化 工 厂 的 生 产 过 程 , 甚 至 可 以 驾 驭 现 代 化 战 斗 机 器 , ,

8、 它 看 似 无 所 不 能 。 然 而 , 事 实 上 并 非 如 此 。 举 个 极 为 简 单 的 例 子 : 要 搜 索 所 有 26 个 英 文 字 母 组 成 的 排 列 , 以 每 年 365 天 计 , 每 秒 能 完 成 109 个 排 列 的 超 高 速 电 子 计 算 机 不 停 地 工 作 , 需 要 26 ! / ( 365 24 3600 109 ) 1.2101 0 年 。 即 使 计 算 机 运 行 速 度 随 着 技 术 的 提 高 而 提 高 , 恐 怕 这 是 也 难 以 实 现 的 , 因 为 计 算 机 速 度 提 高 也 是 有 极 限 的 。由 此

9、 可 以 看 出 , 计 算 机 的 能 力 不 是 无 限 的 , 有 些 问 题 理 论 上 能 实 现 而 实 际 上 办 不 到 。 讨 论 哪 类 问 题 可 由 计 算 机 来 作 , 哪 类 问 题 计 算 机 则 不 能 作 , 属 于 可 计 算 性 理 论 研 究 的 范 畴 。 本 课 程 只 研 究 那 些 理 论 上 是 可 计 算 的 一 类 问 题 的 算 法 , 并 对 算 法 进 行 分 析 。一 个 算 法 就 是 一 系 列 的 将 输 入 转 换 为 输 出 的 计 算 步 骤 。 算 法 设 计 与 分 析 这 门 学 科 还 很 年 轻 , 尚 未

10、定 型 , 还 在 发 展 过 程 中 , 但 无 疑 是 十 分 重 要 的 。 本 书 介 绍 了 算 法 设 计 的 四 个 基 本 方 法 , 即 优 先 策 略 、 分 治 策 略 、 动 态 规 划 以 及 DFS 与 BFS的搜 索 法 。 还 分 别 针 对 具 体 的 排 序 、 查 找 、 匹 配 、 概 率 算 法 、 几 何 算 法 、 数 论 算 法 、 近 似 算 法 和NP 理 论 等 问 题 也 作 了 介 绍 , 以 引 起 读 者 进 一 步 学 习 和 研 究 的 兴 趣 。 以 实 例 来 熟 悉 算 法 是 本 书 作 者 的 意 愿 , 希 望 读

11、者 通 过 它 来 较 快 掌 握 和 理 解 相 应 算 法 。 对 于 算 法 的 描 述 , 本 书 采 用 自 然 语 言 按 步 骤 叙 述 的 办 法 , 而 不 采 用 类 似 于 某 一 高 级 语 言 较形 式 化 的 方 式 , 作 者 认 为 这 样 做 比 较 自 然 , 灵 活 。 有 些 算 法 的 思 想 本 来 很 直 观 , 一 旦 加 以 形 式 化 , 反 而 将 简 单 的 问 题 异 乎 寻 常 地 复 杂 化 了 。算 法 的 研 究 本 属 于 数 学 范 畴 , 特 别 是 算 法 的 复 杂 性 分 析 , 更 是 离 不 开 数 学 , 但

12、算 法 这 门 学 科 也 不 全 是 纯 数 学 问 题 , 它 不 能 不 考 虑 相 应 的 数 据 结 构 。 研 究 算 法 离 不 开 数 据 结 构 , 本 书 十 分 强 调 这 个 观 点 。本 书 适 用 于 计 算 机 、 数 学 及 相 关 专 业 作 教 材 使 用 。 由 于 作 者 水 平 有 限 , 缺 点 和 不 妥 之 处 请 读 者 不 吝 指 正 。作 者1997 年1目 录序 言第 一 章 基 础 知 识 11.1 引 言 11.2 算 法 分 析 21.3 常 用 记 号 61.4 递 归 61.5 图 81.6 二 元 树 111.7 二 分 树

13、131.8 基 本 数 据 结 构 14习 题 一 17第 二 章 优 先 策 略 192.1 最 小 树 的 库 鲁 斯 卡 尔 ( K ruskal) 算 法 192.2 最 短 路 的 戴 克 斯 特 拉 算 法 202.3 安 排 问 题 222.4 哈 弗 曼 编 码 25习 题 二 28第 三 章 分 治 策 略 303.1 引 言 303.2 斯 特 拉 逊 ( St rassen) 矩 阵 乘 法 323.3 快 速 富 里 叶 变 换 ( FF T ) 363.4 卷 积 42习 题 三 44第 四 章 动 态 规 划 454.1 引 言 454.2 矩 阵 链 乘 494.

14、3 最 长 公 共 子 序 列 504.4 最 优 多 边 形 三 角 剖 分 514.5 加 工 顺 序 问 题 534.6 流 动 推 销 员 问 题 55习 题 四 57第 五 章 搜 索 法 595.1 深 度 优 先 搜 索 法 595.2 图 的 遍 历 605.3 0 1 规 划 的 隐 枚 举 法 635.4 宽 度 优 先 搜 索 法 655.5 分 支 定 界 法 675.6 流 动 推 销 员 问 题 分 支 定 界 解 法 695.7 剪 枝 术 74习 题 五 74第 六 章 内 排 序 766.1 引 言 766.2 插 入 排 序 776.3 选 择 排 序 78

15、6.4 冒 泡 排 序 786.5 快 速 排 序 806.6 归 并 排 序 826.7 堆 排 序 856.8 计 数 排 序 896.9 基 数 排 序 906.10 希 尔 ( Shell) 排 序 926.11 排 序 网 络 946.12 外 存 排 序 简 介 996.13 阶 式 归 并 法 102习 题 六 103第 七 章 查 找 及 均 衡 树 1057.1 查 找 第 k 个 元 素 1057.2 最 佳 二 分 树 1077.3 均 衡 树 1127.4 哈 希 ( Hash) 表 118习 题 七 121第 八 章 字 符 串 匹 配 1228.1 引 言 1228

16、.2 KMP ( Knut h-Morris-Pratt ) 算 法 123238.3 BM ( Boyer Moore) 算 法 1268.4 拉 宾 卡 普 ( RabinKarp) 算 法 127习 题 八 128第 九 章 概 率 算 法 数 论 算 法 计 算 几 何 1299.1 概 率 算 法 1299.2 随 机 数 与 素 数 测 试 1319.3 数 论 算 法 1329.4 线 段 问 题 1359.5 凸 包 138习 题 九 141第 十 章 复 杂 性 理 论 14210.1 基 本 概 念 14210.2 SAT 问 题 与 库 克 ( Cook) 定 理 146

17、10.3 一 些 NP 完 备 问 题 14710.4 近 似 算 法 15010.5 密 码 学 154习 题 十 158参 考 书 目 160 8 第 一 章 基 础 知 识1.1 引 言计 算 机 是 通 过 程 序 来 完 成 各 种 操 作 的 。 什 么 是 程 序 呢 ? 有 人 说程 序 = 算 法 + 数 据 结 构 。 这 是 有 一 定 道 理 的 。 它 至 少 说 明 了 两 点 : 一 是 要 让 计 算 机 完 成 任 务 首 先 要 有 算 法 ; 其 次 , 研 究 算 法 不 能 不 考 虑 数 据 结 构 。算 法 ( algorit hm ) 一 词 来

18、 自 19 世 纪 一 位 波 斯 数 学 家 , 它 就 是 计 算 的 步 骤 和 法 则 , 也 就 是 一系 列 的 将 输 入 转 换 为 输 出 的 计 算 步 骤 。在 计 算 机 出 现 的 30 年 代 , 人 们 就 研 究 过 算 法 并 使 其 形 式 化 , 同 时 提 出 并 研 究 了 各 种 形 式的 计 算 模 型 , 证 明 了 “ 停 机 问 题” 的 不 可 计 算 性 。 所 谓 停 机 问 题 指 的 是 : 是 否 有 算 法 对 于 任 意 给 定 的 程 序 , 都 能 判 断 它 是 否 造 成 停 机 ? 从 理 论 上 判 定 什 么 样

19、 的 问 题 可 以 通 过 算 法 利 用 计 算 机求 解 , 什 么 问 题 不 可 以 , 属 于 “可 计 算 性 理 论” 研 究 的 课 题 。 虽 然 可 计 算 性 理 论 对 于 计 算 机 科 学 有 着 重 要 的 影 响 , 但 在 理 论 上 知 道 一 个 问 题 在 计 算 机 上 可 解 还 不 足 以 知 道 实 际 上 是 否 办 得 到 。 这 类 例 子 很 多 。有 许 多 具 有 实 际 应 用 的 问 题 是 可 以 通 过 计 算 机 解 决 的 , 但 解 决 这 些 问 题 所 需 时 间 和 存 储空 间 是 如 此 之 大 , 以 致

20、于 它 实 际 上 无 法 运 行 。 显 然 , 程 序 运 行 所 需 时 间 和 空 间 的 分 析 具 有 极 重 要 的 意 义 。 因 此 , 这 个 问 题 已 经 成 为 计 算 机 科 学 领 域 研 究 的 一 个 重 要 课 题 , 叫 做 复 杂 性 分 析 , 或 时 间 和 空 间 复 杂 性 分 析 。对 算 法 的 研 究 , 第 一 步 是 设 计 算 法 , 第 二 步 是 复 杂 性 分 析 。 对 同 一 问 题 , 若 有 两 种 不 同 的算 法 , 两 种 算 法 孰 优 孰 劣 要 依 复 杂 性 分 析 的 结 果 来 判 断 。 需 要 的

21、时 间 较 短 , 存 取 单 元 较 少 的 算 法 是 较 好 的 。对 一 个 算 法 的 评 价 一 般 从 以 下 四 个 方 面 进 行 考 察 : 1. 正 确 性 ;2. 运 行 时 间 ;3. 占 用 空 间 ;4. 简 单 性 ;所 谓 正 确 性 就 是 指 在 给 定 有 效 的 输 入 之 后 , 算 法 经 过 有 限 时 间 的 计 算 并 产 生 正 确 答 案 。 要 对 算 法 正 确 性 进 行 证 明 , 最 有 效 的 办 法 就 是 数 学 归 纳 法 。 运 行 时 间 是 指 一 个 算 法 在 计 算 机上 运 算 所 花 费 的 时 间 ,

22、它 大 约 等 于 计 算 机 执 行 一 种 简 单 操 作 ( 如 赋 值 , 运 算 , 比 较 操 作 等 ) 所 需 时 间 乘 以 算 法 中 简 单 操 作 次 数 。 占 用 存 储 空 间 通 常 考 虑 三 个 方 面 的 占 用 情 况 : 一 是 存 储 算 法本 身 占 用 , 二 是 输 入 输 出 数 据 所 占 用 , 三 是 算 法 在 运 行 过 程 中 临 时 占 用 。 算 法 运 行 过 程 中 临 时 占 用 的 存 储 空 间 大 小 被 定 义 为 算 法 的 空 间 复 杂 性 , 用 数 量 级 的 形 式 给 出 。 简 单 性 指 的 是

23、 程 序 2 2实 现 复 杂 程 度 。1.2 算 法 分 析算 法 分 析 是 指 对 一 个 算 法 所 需 资 源 进 行 预 测 。 资 源 常 指 计 算 时 间 。 本 书 主 要 采 用 单 处 理 器 随 机 存 储 器 ( R AM ) 作 为 计 算 模 型 , 算 法 可 用 程 序 表 达 。 在 R AM 模 型 中 , 指 令 一 条 接 一 条 地 执 行 , 无 并 行 操 作 。输 入 规 模 ( input size ) 依 赖 于 研 究 的 具 体 问 题 , 在 许 多 问 题 中 , 指 的 是 输 入 的 元 素 个 数 。例 1 下 面以 求两

24、 个 n 阶 方阵 A = ( ai j ) nx n , B = (bij )n x n 之积 为 例 , 令 C = AB = (ci j ) nx n , 其 中nci j = ai k bk j i , j = 1 , 2 , , nk = 1试 用 自 然 语 言 形 式 表 达 两 个 n 阶 方 阵 的 乘 积 如 下 : S1.i 1 , C0。S2. 若 i n 则 做始 j 1 , 转 S3 终 , 否 则 转 S7。 S3. 若 j n 则 做始 k 1 , 转 S4 终 , 否 则 转 S6。 S4. 若 k n 则 做始 cij cij + aik bk j , k

25、k + 1 , 转 S4 终否 则 转 S5。 S5.j j + 1 , 转 S3 S6.i i + 1 , 转 S2S7. 输 出 ( cij ) , 结 束 。其 中 C 0 表 示 对 矩 阵 C 置 零 , 即ci j 0 , i , j = 1 , 2 , , n。始 和 终 为 语 句 括 号 , 如 S2 , 当 i n 时 做 两 件 事 , 即 j 1 , 和 转 S3 。若 i n 则 依 次 做 两 个 操 作 : j 1 和 转 S3。时 间 复 杂 性 分 析 : 矩 阵 C = ( cij ) n x n 有 n 个 元 素 , 每 个 元 素 要 作 n 次 乘

26、法 , n 次 加 法 , 故 需 n3次 乘 法 , n3 次 加 法 。 所 以 时 间 复 杂 性 为 ( n3 ) 。空 间 复 杂 性 分 析 : 3 n2 个 存 储 单 元 用 以 存 放 3 个 矩 阵 A, B , 和 C。 故 空 间 复 杂 性 为 O ( n2 ) 。能 否 用 少 于 3n2 个 单 元 ? 留 给 读 者 思 考 。后 面 3.2 节 读 者 将 了 解 求 两 个 n 阶 方 阵 之 积 的 时 间 复 杂 性 为 ( n3 ) 并 非 天 经 地 义 。算 法 研 究 的 第 一 步 是 针 对 问 题 设 计 算 法 , 进 一 步 则 必 须

27、 对 所 设 计 的 算 法 进 行 理 论 分 析 , 看 一 看 究 竟 所 设 计 的 算 法 是 否 可 行 , 跟 其 它 的 算 法 比 较 好 坏 程 度 。 比 如 下 面 的 汉 诺 ( Hanoi ) 塔 问 题 便 是 一 例 。 该 问 题 是 组 合 数 学 名 题 。问 题 ( 汉 诺 塔 ) : n 个 圆 盘 依 其 半 径 大 小 从 下 而 上 套 在 柱 A 上 , 如 图 1.1 所 示 。 每 次 只 允 许取 一 个 转 移 到 B 或 C 柱 子 上 , 而 且 不 允 许 大 的 放 在 小 的 上 方 。 现 A 柱 上 有 大 小 不 等 的

28、 n 个 圆 盘 , 要 求 将 它 转 移 到 C 柱 上 , 试 问 应 如 何 进 行 , 并 对 移 动 的 盘 次 进 行 估 计 。 限 制 只 有 A , B , C 三 根 柱 子 可 供 使 用 。 3 第 一 步 算 法 设 计 :n = 2 时 , 先 将 最 上 面 一 个 盘 子 取 出 套 在 B 柱 上 , 再 将 第 二 盘 套 在 C 柱 上 , 最 后 将 B 柱 上 的 盘 取 下 套 在 C 柱 上 。 两 个 盘 子 的 转 移 结 束 。n = 3 时 , 先 利 用 上 面 n = 2 的 办 法 , 将 前 面 两 个 盘 子 套 在 B 柱 上

29、 , 再 将 A 柱 上 最 后 一 个 盘子 套 上 C 柱 上 , 最 后 再 利 用 n = 2 时 的 算 法 , 将 B 柱 上 的 两 个 盘 子 套 到 C 柱 上 , 3 个 盘 子 时 转 移 结 束 。n 个 盘 子 的 汉 诺 塔 问 题 可 以 递 归 地 利 用 上 述 的 算 法 。 n = 2 , n = 3 已 解 决 。假 定 n - 1 的 汉 诺 塔 问 题 已 解 决 , 先 将 A 柱 上 前 面 n - 1 个 盘 子 套 在 B 柱 上 , 再 将 A 柱 上 最 后 一 个 盘 子 取 下 套 到 C 柱 上 , 最 后 再 利 用 n - 1

30、个 盘 子 的 办 法 , 将 B 柱 上 n - 1 个 盘 子 套 到 C 柱 上 。 n 个 盘 子 的 问 题 结 束 。图 1 .1 4 = p算 法 分 析令 Sn 表 n 个 盘 子 的 汉 诺 塔 问 题 搬 动 的 盘 次 , 则 有Sn = 2Sn - 1 + 1 S1 = 1S2 = 2S1 + 1 = 2 + 1S3 = 2S2 + 1 = 22 + 2 + 1S4 = 2S3 + 1 = 23 + 22 + 2 + 1Sn = 2n - 1 + 2n - 2 + + 2 + 1 = 2n - 1所 以 汉 诺 塔 问 题 是 指 数 型 问 题 , Sn = 2n -

31、 1 是 n 的 指 数 函 数 。 由 于 我 们 对 一 个 算 法 的 评 价 是 以 输 入 规 模 n 的 数 量 级 来 衡 量 , 当 n 很 大 时 低 阶 项 相 对 来说 不 太 重 要 , 有 时 还 忽 略 最 高 次 项 的 常 系 数 , 说 它 是 nk 或 2n 量 级 。 所 以 在 算 法 分 析 时 , 通 常 把 算 法 中 包 含 简 单 操 作 次 数 的 多 少 就 作 为 算 法 的 时 间 复 杂 性 。例 2 设 A 是 含 n 个 数 据 项 的 一 个 数 组 。 A = ( a1 , a2 , , an ) 。 对 某 一 指 定 项

32、x , 如 果 x 在 此 数 组 中 , 设 x = ak , 则 输 出 它 的 下 标 k ; 如 果 x 不 在 其 中 , 则 输 出 0 作 为 结 束 。顺 序 搜 索 算 法 ( Sequen tial Search)输 入 A, n , x。 A 是 一 个 具 有 n 项 的 数 组 。S1.j 1S2. 若 ( j n) ( A j x) 则 做始 j j + 1 , 转 S2 终 , 否 则 转 S3 S3. 若 j n 则 做始 j 0 , 转 S4 终 否 则 转 S4 ,S4. 打 印 j , 结 束 。平 均 情 况 分 析 , 设 Ii 表 示 要 找 的 数

33、 x 在 数 组 A 中 第 i 个 位 置 ( 即 x = A i ) 的 情 况 , i = 1 , 2 , n , In + 1 表 示 x 不 在 数 组 中 的 情 况 。 又 设 t ( I ) 是 算 法 在 输 入 I 时 所 做 比 较 次 数 。 显 然 , 对 于1 i n , t ( Ii ) = i , t ( In + 1 ) = n。 设 p 是 x 在 数 组 中 的 概 率 , 若 x 确 定 在 该 数 组 中 则 p = 1。 并 假p设 x 出 现 在 每 个 位 置 的 可 能 性 是 相 同 的 , 于 是 对 1 i n , p( Ii ) =所

34、以 总 的 比 较 次 数 n , p ( In + 1 ) = 1 - p。n + 1t ( n) = p( Ii ) t ( Ii )i = 1n= i = 1p i + ( 1 - p) n nn + 12 + (1 - p) n若 肯 定 x 在 数 组 中 , 这 时 t ( n) = n + 1 , 即 平 均 要 查 找 一 半 数 组 A。2最 坏 情 况 : 当 x 是 数 组 中 最 后 一 项 和 x 不 在 数 组 中 时 , T ( n) = n。 即 是 说 x 要 和 所 有 的 n个 项 进 行 比 较 。 最 好 的 情 况 , 一 次 比 较 找 到 。上

35、面 讨 论 的 数 组 A = ( A 1 , A 2 , , A n ) 是 无 序 的 , 所 以 只 能 采 取 顺 序 查 找 的 办 法 , 即 5 AA 1 , A 2 , , A n 依 次 比 较 的 方 式 。 如 若 数 组 A 是 按 顺 序 排 列 , 即A 1 A n 2n2 + 1 , An2 + 2 , , A n中 去 找 。 作 一 次 比 较 , 可 将 搜 索 省 去 一 半 。 而 且 对 后 面 的 查 找 可 继 续 递 归 地 利 用 二 分 查 找 的办 法 。 最 坏 情 况 下 比 较 的 次 数 将 大 大 减 少 。下 面 再 以 这 例

36、 子 说 明 数 据 结 构 对 研 究 算 法 的 重 要 性 。 二 分 查 找 对 于 静 态 的 序 列 A, 以 顺 序 存 储 为 宜 , 即 A i 与 A i + 1 相 邻 二 元 素 的 储 存 地 址 也 是 相 邻 的 。 这 样 二 分 查 找 计 算 地 址比 较 容 易 。 问 题 在 于 实 际 上 数 据 A 总 是 动 态 的 , 不 断 地 有 新 的 元 素 插 入 到 序 列 中 去 , 也 有 元素 从 序 列 中 删 除 , 所 以 顺 序 存 储 这 样 一 种 数 据 结 构 实 际 上 是 不 实 用 的 。 一 个 元 素 的 插 入 或

37、删除 都 将 引 起 将 近 一 半 的 元 素 要 “搬 家” , 即 改 变 存 放 的 地 址 。 后 面 将 详 细 地 讨 论 “ 查 找” 问 题 , 它必 须 仰 仗 于 提 出 新 的 数 据 结 构 。 这 里 只 不 过 先 强 调 一 下 研 究 算 法 不 能 不 考 虑 它 的 数 据 结 构 。 二 分 算 法 适 用 顺 序 存 储 这 种 方 式 , 但 顺 序 存 储 这 样 一 种 数 据 结 构 实 际 上 很 不 适 用 。本 书 用 数 学 方 法 对 算 法 的 效 率 进 行 分 析 , 而 不 考 虑 用 什 么 样 的 计 算 机 , 或 用

38、什 么 样 的 计 算 机 语 言 。 运 算 时 间 T ( n) 是 输 入 规 模 n 的 函 数 。 本 书 中 讨 论 的 函 数 有 多 项 式 , 对 数 函 数 , 指 数 函 数 , 或 它 们 的 乘 积 。 设 机 器 每 步 花 时 间 为 10 - 6 秒 。 现 举 例 列 表 比 较 于 后 。表 1.2.1nT ( n ) 10 2 0 4 0 80ln n 2 .3 1 0 - 6 秒 3 1 0 - 6 秒 3 .7 1 0 - 6 秒 4 .4 1 0 - 6 秒n 1 0 - 5 秒 2 1 0 - 5 秒 4 1 0 - 5 秒 8 10 - 5 秒n

39、ln n 2 .3 1 0 - 5 秒 6 1 0 - 5 秒 14 .7 1 0 - 5 秒 35 1 0 - 5 秒n2 1 0 - 4 秒 4 1 0 - 4 秒 1 6 1 0 - 4 秒 64 1 0 - 4 秒n10 2 .8 小 时 1 1 8 .5 天 3 .3 1 02 年 3 .4 1 03 世 纪2n 1 0 - 3 秒 1 秒 12 .7 天 3 .8 1 08 世 纪3n 5 .9 1 0 - 2 秒 0 .9 7 小 时 3 .9 103 世 纪 4 .7 1 022 世 纪从 表 1.2.1 可 以 看 出 , 它 们 关 于 输 入 规 模 n 的 增 长 速

40、度 的 差 别 是 非 常 明 显 的 。 效 率 分 析是 非 常 重 要 的 , 我 们 可 用 以 判 断 应 用 某 一 算 法 解 某 一 类 问 题 时 , 允 许 的 规 模 有 多 大 , 还 可 以 判定 哪 一 个 方 法 较 好 。 6 0若 lim即 lim001 .3 常 用 记 号下 面 介 绍 本 书 经 常 用 到 的 一 些 符 号 和 术 语 。N 非 负 整 数 集 合 0 , 1 , 2 , N + 正 整 数 集 合 1 , 2 , R 实 数 集 合R + 正 实 数 集 合*R 非 负 实 数 集 合| S| 有 限 集 合 S 中 元 素 个 数

41、| x | 字 符 串 x 的 长 度 , 即 x 中 字 符 个 数 x 小 于 或 等 于 x 的 最 大 整 数 , 简 称 x 的 向 下 取 整 ( floor of x) x 大 于 或 等 于 x 的 最 小 整 数 , 简 称 x 的 向 上 取 整 ( ceiling of x )设 f 和 g 是 由 N 到 R * 的 两 个 函 数 , 引 进 下 列 渐 近 记 号 。 定 义 1 令 f : N R *O( f ) C g : N R * | v c R * , v n N, “ n n0 , 使 g ( n) cf ( n) 也 就 是 O( f ) 为 函 数

42、g: N R * 的 集 合 , 它 以 cf ( n) 为 上 界 。 即 若 存 在 c R * , 且 lim g( n)n f ( n)= c, 则 g O ( f ) 。基 于 上 述 概 念 , 例 若 f ( n) = n3 , g( n) = n2 , 则 g O( f ) , 但 f| O ( g) 。定 义 2 令 f : N R * ( f ) g : N R * | v n N , v c R * , “ n n , 使 g( n) cf( n ) g ( n )n f ( n) = c 0 , c 可 为 无 穷 大 , 则 g ( f ) 。定 义 3 令 f :

43、N R * 。g ( n ) +n f ( n) = c, c R , 则 g ( f ) 。 其 中 c R + 表 示 c 0 , c 。 g ( f ) 意 味 着 g 和 f同 阶 。 (1 ) 表 示 一 个 常 数 。O, , 有 以 下 性 质 ( 假 定 f, g , h : 1N 1R * ) : (1 ) f O ( g) , g O ( h) f O ( h) ;(2 ) f O ( g) g ( f ) ;(3 ) f ( g) g ( f ) ;(4 ) O ( f + g) = O ( max f, g ) 。1.4 递 归在 一 个 算 法 中 , 常 常 含 有

44、 对 其 自 身 的 调 用 , 当 我 们 在 分 析 该 算 法 的 时 间 复 杂 性 时 , 就 会 出现 递 归 关 系 式 。 所 以 下 面 对 如 何 求 解 递 归 式 作 简 要 介 绍 。首 先 , 有 些 递 归 式 可 化 为 一 个 和 来 求 解 , 其 次 用 生 成 函 数 来 求 解 , 这 两 种 方 法 容 易 在 许 多书 中 可 找 到 , 如 拙 著 组 合 数 学 一 书 。还 是 以 1.2 的 汉 诺 塔 问 题 为 例 , 已 知 7 3n2Sn = 2 Sn - 1 + 1 S1 = 1 ,前 面 已 介 绍 S2 = 2 S1 + 1

45、= 2 + 1 = 3S3 = 2 S2 + 1 = 2 (2 + 1) + 1= 22 + 2 + 1S4 = 2 S3 + 1 = 2 + 22 + 2 + 1假 定 Sn = 2n - 1 + 2n - 2 + + 2 + 1 = 2n - 1可 证 Sn + 1 = 2Sn + 1 = 2下 面 介 绍 母 函 数 法 。 设n + 1 - 2 + 1 = 2n + 1 - 1 。2S ( x) = S1 + S2 x + S3 xx S2 = 2 S1 + 1x2 S3 = 2 S2 + 1+ 2求 和 得 S( x) - S1 = 2xS ( x) + ( x + x + ) (1

46、 - 2x) S ( x) = S1 + x1 - x= 1 1 - xS ( x) = 1= 1 + x1 - x= A + B(1 - x) ( 1 - 2x ) 1 - 2x 1 - x= A( 1 - x ) + B ( 1 - 2 x ) ( 1 - 2x) (1 - x)比 较 等 式 两 端 分 子 : ( A + B) - x ( A + 2B) = 1 A + B = 1 A + 2B = 0 B = - 1 , A = 2即S( x) = 21 - 2x -11 - xS( x) 的 xn - 1 项 系 数 为 S ,= 2 1 + ( 2x) + (2x) 2 + -

47、(1 + x + x2 + )n Sn = 2另 一 方 面 , 由 于 假 设- 1 2S( x) = 1 + S2 x + S3 x +2- ) 2 xS ( x ) = 2 S1 x + 2 S2 x + ( 1 - 2x ) S( x) = 1 + ( S2 - 2S1 ) x + ( S3 - 2S2 ) x +由 于 S2 - 2S1 = S3 - 2S2 = = Sn - 2 Sn - 1 = 1 ( 1 - 2x ) S( x) = 1 + x + x2 +( 1 - 2x ) S( x) = 1 8 1 - x 9 S( x) = 1(1 - x) (1 - 2x)异 途 同

48、 归 得 了 相 同 的 结 果 。 求 得 S ( x) , 便 可 求 得 序 列 S1 , S2 , , Sn , 。1 .5 图客 观 世 界 中 有 许 多 状 态 用 图 来 描 述 , 可 以 达 到 直 观 , 便 于 思 考 的 效 果 。 一 个 图 是 由 一 些 顶 点 和 连 接 两 顶 点 间 的 连 线 组 成 , 而 不 计 较 连 线 长 度 、 弯 曲 及 顶 点 位 置 。定 义 1 一 个 图 G 是 一 个 二 元 组 ( V ( G ) , E ( G ) 常 简 记 为 G = ( V , E ) 。图 中 每 条 边 均 为 无 向 边 的 图 称 为 无 向 图 , 如 图 1.5.1 ( a ) 图 中 每 条 边 均 为 有 向 边 的 图 称 为 有 向 图 , 如 图 1.5.1 ( b)图 1 .5 . 1若 顶 点 间 有 一 边 相 联 , 则 称 这 两 点 相 邻 接 ; 若 顶 点 v 是 边 e 的 一 顶 点 , 则 称 v 与 e

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报