跟踪下面生成4位二进制反射格雷码转二进制的非递归算法。以全0的n位串开始

verilog实现二进制和格雷码互转
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
verilog实现二进制和格雷码互转
最近在看数电,看到了格雷码,阎石那本书介绍转换方法为:每一位的状态变化都按一定的顺序循环。不理解,然后在网上搜了下,蛮多人写怎么转换的。然后发现John的《数字设计原理与实践》(原书第四版)中讲了两个方法特别实用。
1.什么是格雷码?
&&&&& 对于做FPGA的来说,格雷码一般是用来定义状态机,有什么优势,我前面写的FSM中需注意事项一文中有提到。格雷码的特点:相邻的两个数之间只有一位不同。这就是格雷码存在的意义。
2.转换方法
&&&&& 二进制转为格雷码方法有两个:方法1比较适用于笔试,考试等;方法二适用于代码编程,主要是为了做课程设计这类的。
&&方法一:递归法,我喊作:顺序逆序递归法
&&&&&&&& 1.& 1位格雷码有2个码字:0和1
&&&&&&&& <font color="#.& (n+1)位格雷码中的前2^n(2的N次方)个字码等于n位格雷码的码字,按顺序书写,加前缀0.
&&&&&&&&&3. (n+1)位格雷码中的后2^n(2的N次方)个字码等于n位格雷码的码字,但按逆序书写,加前缀1.
解释说明:
之所以称此方法为递归,是因为对于任意位的二进制的格雷码最终都将归结于1位二进制的格雷码的求解。上图就是根据已知的3bit二进制的格雷码,求4bit二进制的格雷码,此时的n为3,所以2^3=8,所以0-7 的格雷码为0+3bit格雷,8-15的格雷码为1+逆序3bit格雷码。
&&&方法二:向左异或法
&&&&&&&&&&&&&& 1. 对n位二进制或格雷码的码字,将数位从右到左,从0到n-1编码。
&&&&&&&&&&&&&& 2. 如果二进制码字的第i位和第i+1位相同,则对应的格雷码码字的第i位为0,否则为1.
(当i+1=n,二进制码字的第n位被认为是0)
解释说明:
&&&& 就那四位二进制数4'b0010举例,二进制第0位为0,第1位为1,异或结果为1,所以格雷码的第0位为1;二进制第1位为1,第2位为0,异或为1,所以格雷码的第1位为1;二进制第2位为0,第3位为0,异或为0,所以格雷码的第2位为0;二进制的第3位为0,二进制没有第4位,所以第4位默认为0,异或为0,所以格雷码第3位为0。。。结果4'b0010的格雷码为0011。
verilog代码实现:
//pro : binary to gray
//info: this is a pro exe that change the binary data to gray
module binary_gray(
&&& binary,
parameter n = 4;
input&&&&& [n-1:0]&&&
output& [n-1:0]&& gray;
reg&&&&&&& &[n-1:0]&& &data_
always@(binary)
&&&&&&& data_reg[0] = binary[0]^binary[1];
&&&&&&& data_reg[1] = binary[1]^binary[2];
&&&&&&& data_reg[2] = binary[2]^binary[3];
&&&&&&& data_reg[3] = binary[3];
assign gray = data_
测试代码(testbench):
`timescale 1ns / 1ps
//Module Name: gray_tb.v
module gray_
wire [3:0]
&&&&&&&& &&& binary = 0;
&&& #5&& & binary =4'b0001;
&& #10&& &binary =4'b0010;
&& #15&&& binary =4'b0011;
&&&#20&&& binary =4'b0100;
&&&#25&&& binary =4'b0101;
&&&#30&&& binary =4'b0110;
&& #35&&& binary =4'b0111;
&& #40&&& binary =4'b1000;
&& #45&&& binary =4'b1001;
&& #50&&& binary =4'b1010;
&& #55&&& binary =4'b1011;
&& #60&&& binary =4'b1100;
&& #65&&& binary =4'b1101;
&& #70&&& binary =4'b1110;
&& #75&&& binary =4'b1111;
&& #80&&& binary =4'b1111;
binary_gray u_binary_gray(
&& .binary(binary),
&& .gray(gray)
仿真结果:
3.解码实现
&&&& 解码的方法为编码中法二的逆过程,我称之为:向右异或法。
&&&& 360百科:最左边一位不变,从左边第二位起,将每一位与左边一位解码后的值进行异或。
值得注意的是:这里是同解码后的值异或。
解码代码:
//pro : gray to binary
//info: this is a pro exe that change the gray data to binary
module binary_gray(
&& &binary,
&parameter n = 4;
&input&&&& [n-1:0]&&
&output& &[n-1:0]&&
&reg&&&&&&& [n-1:0]&&& data_
always@(gray )
&&&&&&& data_reg[3] = gray[3];&
&&&&&&& data_reg[2] = gray[2]^data_reg[3];
&&&&&&& data_reg[1] = gray[1]^data_reg[2];
&&&&&&& data_reg[0] = gray[0]^data_reg[1];&
assign binary = data_
测试代码(testbench):
`timescale 1ns / 1ps
////////////////////////////////////////////////////////////////////////////////
//Engineer:&&&LYC
//Create Date:& &
//Module Name:&&gray_tb.v
////////////////////////////////////////////////////////////////////////////////
module &gray_
reg&&& &[3:0]&&
wire&& &[3:0]& &
&&&&&& begin
&&&&&&&&&&&&&&&&&&&&& gray = 0;&
&&&&&&&&&& #5 &&&&& gray =4'b0001;
&&&&&&&&&& #10&& & gray =4'b0011;&&&&
&&&&&&&&&& #15 && &gray =4'b0010;&&&&&
&&&&&&&&&& #20 && &gray =4'b0110;
&&&&&&&&&& #25 &&& gray =4'b0111;
&&&&&&&&&& #30 &&& gray =4'b0101;
&&&&&&&&&&&#35 &&& gray =4'b0100;
&&&&&&&&&&&#40 &&& gray =4'b1100;
&&&&&&&&&& #45 &&& gray =4'b1101;
&&&&&&&&&&&#50 &&& gray =4'b1111;
&&&&&&&&&&&#55 &&& gray =4'b1110;
&&&&&&&&&& #60&&&&&gray =4'b1010;
&&&&&&&&&& #65 &&& gray =4'b1011;
&&&&&&&&&& #70 &&& gray =4'b1001;
&&&&&&&&& &#75 &&& gray =4'b1000;
&&&&&&&&&& #80 & gray =4'b0000;
binary_gray& u_binary_gray(
&&&&& .binary(binary),
&&&& &.gray(gray)
仿真结果:
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网 51hei.com , All Rights Reserved&&&&算法设计与分析基础(第3版)
自营订单满49元(含)免运费
不足金额订单收取运费5元起
邀请好友参加吧
版 次:5页 数:字 数:印刷时间:日开 本:16开纸 张:胶版纸包 装:平装-胶订是否套装:否国际标准书号ISBN:6所属分类:&&&
下载免费当当读书APP
品味海量优质电子书,尊享优雅的阅读体验,只差手机下载一个当当读书APP
本商品暂无详情。
当当价:为商品的销售价,具体的成交价可能因会员使用优惠券、积分等发生变化,最终以订单结算页价格为准。
划线价:划线价格可能是图书封底定价、商品吊牌价、品牌专柜价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品曾经展示过的销售价等,由于地区、时间的差异化和市场行情波动,商品吊牌价、品牌专柜价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:折扣指在划线价(图书定价、商品吊牌价、品牌专柜价、厂商指导价等)某一价格基础上计算出的优惠比例或优惠金额。如有疑问,您可在购买前联系客服咨询。
异常问题:如您发现活动商品销售价或促销信息有异常,请立即联系我们补正,以便您能顺利购物。
当当购物客户端手机端1元秒
当当读书客户端万本电子书免费读算法设计与分析基础(第3版)
[Introduction to the Design and Analysis of Algorithms (Third Edition)]([美] Anany Levitin)【电子书籍下载 epub txt pdf doc 】
书籍作者:
[美] Anany Levitin
书籍出版:
清华大学出版社
书籍页数:
书籍ISBN:
书籍人气:
推荐指数:
算法设计与分析基础(第3版)
[Introduction to the Design and Analysis of Algorithms (Third Edition)]编辑推荐
  《算法设计与分析基础(第3版)》独辟蹊径,采用一种更全面的算法设计技术分类方法。《算法设计与分析基础(第3版)》涵盖递归与非递归算法的数学分析,也涉及经验分析和算法可视化,探讨算法的局限性及解决方法,将算法视为解决问题的工具,通过谜题和游戏来开拓算法思维  《算法设计与分析基础(第3版)》为学生提供600多道习题(含提示),为教师提供有详细解答的教师手册内容简介作者基于丰富的教学经验,开发了一套全新的算法分类方法。该分类法站在通用问题求解策略的高度,对现有大多数算法准确分类,从而引领读者沿着一条清晰、一致、连贯的思路来探索算法设计与分析这一迷人领域。《算法设计与分析基础(第3版)》作为第3版,相对前版调整了多个章节的内容和顺序,同时增加了一些算法,并扩展了算法的应用,使得具体算法和通用算法设计技术的对应更加清晰有序;各章累计增加了70道习题,其中包括一些有趣的谜题和面试问题。  《算法设计与分析基础(第3版)》十分适合用作算法设计和分析的基础教材,也适合任何有兴趣探究算法奥秘的读者使用,只要读者具备数据结构和离散数学的知识即可。  Simplified Chinese edition copyright ? 2015 by PEARSON EDUCATION ASIA LIMITED and TSINGHUA UNIVERSITY PRESS.  Original English language title: Introduction to the Design and Analysis of Algorithms, 3rd Edition by Anany Levitin, Copyright ? 2012EISBN: 1All Rights Reserved.Published by arrangement with the original publisher, Pearson Education, Inc., publishing as Pearson Education, Inc.This edition is authorized for sale only in the People’s Republic of China (excluding the Special Administrative Region of Hong Kong and Macao).  《算法设计与分析基础(第3版)》中文简体翻译版由Pearson Education授权给清华大学出版社在中国境内(不包括中国香港、澳门特别行政区)出版发行。内页插图
绪论 11.1 什么是算法 2习题1.1 61.2 算法问题求解基础 71.2.1
理解问题 81.2.2 了解计算设备的性能 81.2.3 在精确解法和近似解法之间做出选择 91.2.4 算法的设计技术 91.2.5 确定适当的数据结构 91.2.6 算法的描述 101.2.7 算法的正确性证明 101.2.8 算法的分析 111.2.9 为算法写代码 12习题1.2
131.3 重要的问题类型 141.3.1 排序 151.3.2 查找 161.3.3 字符串处理 161.3.4 图问题 161.3.5 组合问题 171.3.6 几何问题 171.3.7 数值问题 18习题1.3
181.4 基本数据结构 201.4.1 线性数据结构 201.4.2 图 221.4.3 树 251.4.4 集合与字典 28习题1.4
算法效率分析基础 322.1 分析框架 332.1.1
输入规模的度量 332.1.2
运行时间的度量单位 342.1.3
增长次数 352.1.4
算法的最优、最差和平均效率 362.1.5
分析框架概要 38习题2.1 392.2
渐近符号和基本效率类型 402.2.1
非正式的介绍 402.2.2
符号O 412.2.3
渐近符号的有用特性 432.2.6
利用极限比较增长次数 442.2.7
基本的效率类型 45习题2.2 462.3
非递归算法的数学分析 48习题2.3 522.4
递归算法的数学分析 54习题2.4 592.5
例题:计算第n个斐波那契数 62习题2.5 652.6
算法的经验分析 66习题2.6 692.7
算法可视法 70小结 73第3章
蛮力法 753.1
选择排序和冒泡排序 763.1.1
选择排序 763.1.2
冒泡排序 77习题3.1 783.2
顺序查找和蛮力字符串匹配 803.2.1
顺序查找 803.2.2
蛮力字符串匹配 81习题3.2 823.3
最近对和凸包问题的蛮力算法 833.3.1
最近对问题 833.3.2
凸包问题 84习题3.3 873.4
穷举查找 893.4.1
旅行商问题 893.4.2
背包问题 903.4.3
分配问题 91习题3.4 933.5
深度优先查找和广度优先查找 943.5.1
深度优先查找 943.5.2
广度优先查找 96习题3.5 98小结 100第4章
减治法 1014.1
插入排序 103习题4.1 1054.2
拓扑排序 106习题4.2 1094.3
生成组合对象的算法
生成子集 113习题4.3 1144.4
减常因子算法
约瑟夫斯问题 119习题4.4 1204.5
减可变规模算法
计算中值和选择问题
二叉查找树的查找和插入
拈游戏 127习题4.5 128小结 129第5章
分治法 1315.1
合并排序 133习题5.1 1355.2
快速排序 136习题5.2 1405.3
二叉树遍历及其相关特性 141习题5.3 1435.4
大整数乘法和Strassen矩阵乘法
大整数乘法
Strassen矩阵乘法 146习题5.4 1485.5
用分治法解最近对问题和凸包问题
最近对问题
凸包问题 151习题5.5 153小结 154第6章
变治法 1556.1
预排序 156习题6.1 1586.2
高斯消去法
计算矩阵的逆
计算矩阵的行列式 166习题6.2 1676.3
平衡查找树
2-3树 173习题6.3 1746.4
堆和堆排序
堆排序 180习题6.4 1816.5 霍纳法则和二进制幂
二进制幂 184习题6.5 1866.6 问题化简
求最小公倍数
计算图中的路径数量
优化问题的化简
简化为图问题 192习题6.6 193小结 194第7章 时空权衡 1967.1 计数排序 197习题7.1 1997.2 字符串匹配中的输入增强技术  Horspool算法  Boyer-Moore算法 204习题7.2 2077.3 散列法  开散列(分离链)  闭散列(开式寻址) 211习题7.3 2137.4 B树 214习题7.4 217小结 218第8章 动态规划 2198.1 三个基本例子 220习题8.1 2248.2 背包问题和记忆功能  背包问题  记忆化 227习题8.2 2298.3 最优二叉查找树 230习题8.3 2348.4 Warshall算法和Floyd算法  Warshall算法  计算完全最短路径的Floyd算法 238习题8.4 241小结 242第9章 贪婪技术 2439.1 Prim算法 245习题9.1 2499.2 Kruskal算法 250习题9.2 2559.3 Dijkstra算法 256习题9.3 2599.4 哈夫曼树及编码 260习题9.4 264小结 265第10章 迭代改进 26610.1 单纯形法
线性规划的几何解释
单纯形法概述
单纯形法其他要点 275习题10.1 27610.2
最大流量问题 278习题10.2 28510.3
二分图的最大匹配 286习题10.3 29110.4
稳定婚姻问题 292习题10.4 295小结 296第11章 算法能力的极限 29711.1 如何求下界  平凡下界  信息论下界  敌手下界  问题化简 300习题11.1 30211.2 决策树  排序的决策树  查找有序数组的决策树 305习题11.2 30611.3 P、NP和NP完全问题  P和NP问题  NP完全问题 311习题11.3 31411.4 数值算法的挑战 316习题11.4 322小结 323第12章 超越算法能力的极限 32512.1 回溯法  n皇后问题  哈密顿回路问题  子集和问题  一般性说明 329习题12.1 33112.2 分支界限法  分配问题  背包问题  旅行商问题 336习题12.2 33812.3 NP困难问题的近似算法  旅行商问题的近似算法  背包问题的近似算法 349习题12.3 35212.4 解非线性方程的算法  平分法  试位法  牛顿法 358习题12.4 360小结 361跋 363附录A
算法分析的实用公式 366附录B
递推关系简明指南 369习题提示 380参考文献 414
前言/序言一个人在接受科技教育时能得到的最珍贵的收获是能够终身受用的通用智能工具。  ——乔治·福赛思  无论是计算科学还是计算实践,算法都在其中扮演着重要角色。因此,这门学科中出现了大量的教材。它们在介绍算法的时候,基本上都选择了以下两种方案中的一种。第一种方案是按照问题的类型对算法进行分类。这类教材安排了不同的章节分别讨论排序、查找、图等算法。这种做法的优点是,对于解决同一问题的不同算法,它能够立即比较这些算法的效率。其缺点在于,由于过于强调问题的类型,它忽略了对算法设计技术的讨论。  第二种方案围绕着算法设计技术来组织章节。在这种结构中,即使算法来自于不同的计算领域,如果它们采用了相同的设计技术,就会被编成一组。从各方(例如[BaY95])获得的信心使我相信,这种结构更适合于算法设计与分析的基础课程。强调算法设计技术有三个主要原因。第一,学生们在解决新问题时,可以运用这些技术设计出新的算法。从实用的角度看,这使得学习算法设计技术颇有价值。第二,学生们会试图按照算法的内在设计方法对已知的众多算法进行分类。计算机科学教育的一个主要目的,就是让学生们知道如何发掘不同应用领域的算法间的共性。毕竟,每门学科都会倾向于把它的重要主题归纳为几个甚至一个规则。第三,依我看来,算法设计技术作为问题求解的一般性策略,在解决计算机领域以外的问题时,也能发挥相当大的作用。  遗憾的是,无论是从理论还是从教学的角度,传统的算法设计技术分类法都存在一些严重的缺陷。其中最显著的缺陷就是无法对许多重要的算法进行分类。由于这种局限性,这些书的作者不得不在按照设计技术进行分类的同时,另外增加一些章节来讨论特殊的问题类型。但这种改变导致课程缺乏一致性,而且很可能会使学生感到迷惑。  算法设计技术的新分类法  传统算法设计技术分类法的缺陷令我感到失望,它激发我开发一套新的分类法([Lev99]),这套分类法就是本书的基础。以下是这套新分类法的几个主要优势。  新分类法比传统分类法更容易理解。它包含的某些设计策略,例如蛮力法、减治法、变治法、时空权衡和迭代改进,几乎从不曾被看作重要的设计范例。  新分类法很自然地覆盖了许多传统方法无法分类的经典算法(欧几里得算法、堆排序、查找树、散列法、拓扑排序、高斯消去法、霍纳法则等,不胜枚举)。所以,新分类法能够以一种连贯的、一致的方式表达这些经典算法的标准内容。  新分类法很自然地容纳了某些设计技术的重要变种(例如,它能涵盖减治法的3个变种和变治法的3个变种)。  在分析算法效率时,新分类法与分析方法结合得更好(参见附录B)。  设计技术作为问题求解的一般性策略  在本书中,主要将设计技术应用于计算机科学中的经典问题(这里唯一的创新是引入了一些数值算法的内容,我们也是用同样的通用框架来表述这些算法的)。但把这些设计技术看作问题求解的一般性工具时,它们的应用就不仅限于传统的计算问题和数学问题了。有两个因素令这一点变得尤其重要。第一,越来越多的计算类应用超越了它们的传统领域,并且有足够的理由使人相信,这种趋势会愈演愈烈。第二,人们渐渐认识到,提高学生们的问题求解能力是高等教育的一个主要目标。为了满足这个目标,在计算机科学课程体系中安排一门算法设计和分析课程是非常合适的,因为它会告诉学生如何应用一些特定的策略来解决问题。  虽然我并不建议将算法设计和分析课程变成一门教授一般性问题求解方法的课程,但我深信,我们不应错过算法设计和分析课程提供的这样一个独一无二的机会。为了这个目标,本书包含了一些和谜题相关的应用。虽然利用谜题来教授算法课程绝不是我的创新,但本书打算通过引进一些全新的谜题来系统地实现这个思路。  如何使用本书  我的目标是写一本既不泛泛而谈,又可供学生们独立阅读的教材。为了实现这个目标,本书做了如下努力。  根据乔治?福赛思的观点(参见前面的引文),我试图着重强调隐藏在算法设计和分析背后的主要思想。在选择特定的算法来阐述这些思想的时候,我并不倾向于涉及大量的算法,而是选择那些最能揭示其内在设计技术或分析方法的算法。幸运的是,大多数经典算法满足这个要求。  第2章主要分析算法的效率,该章将分析非递归算法的方法和分析递归算法的典型方法区别开来。这一章还花了一些篇幅介绍算法经验分析和算法可视化。  书中系统地穿插着一些面向读者的提问。其中有些问题是经过精心设计的,而且答案紧随其后,目的是引起读者的注意或引发疑问。其余问题的用意是防止读者走马观花,不能充分理解本书的内容。  每一章结束时都会对本章最重要的概念和结论做一个总结。  本书包含600多道习题。有些习题是为了给大家练习,另外一些则是为了指出书中正文部分所涉及内容的重要意义,或是为了介绍一些书中没有涉及的算法。有一些习题利用了因特网上的资源。较难的习题数量不多,会在教师用书中用一种特殊的记号标注出来(因为有些学生可能没有勇气做那些有难度标注的习题,所以本书没有对习题标注难度)。谜题类的习题用一种特殊的图标做标注。  本书所有的习题都附有提示。除了编程练习,习题的详细解法都能够在教师资源中找到。请发送邮件到,申请教师相关资源(也可联系培生公司的当地销售代表,或者访问www.pearsonhighered.com/irc)。本书的任何读者都可以在CS支持网站http://cssupport.pearsoncmg.com上找到PowerPoint格式的幻灯片文件。如果对算法有兴趣,欢迎加入QQ群“算法学习交流”,群号:。  第3版的变化  第3版有若干变化。其中最重要的变化是介绍减治法和分治法的先后顺序。第3版会先介绍减治法,后介绍分治法,这样做有以下几个优点。  较之分治法,减治法更简单。  在求解问题方面,减治法应用更广。  这样的编排顺序便于先介绍插入排序,后介绍合并排序和快速排序。  数组划分的概念通过选择性问题引入,这次利用Lomuto算法的单向扫描来实现,而将Hoare划分方法的双向扫描留至后文与快速排序一并介绍。  折半查找归入介绍减常量算法的章节。  另一个重要变化是重新编排第8章关于动态规划的内容,具体如下所述。  导述部分的内容是全新的。在前两版中用计算二项式系数的例子来引入动态规划这一重要技术,但在第3版中会介绍3个基础性示例,这样介绍的效果更好。  8.1节的习题是全新的,包括一些在前两版中没有涉及的流行的应用。  第8章其他小节的顺序也做了调整,以便达到由浅入深、循序渐进的效果。  此外,还有其他一些变化。增加了不少与本书所述算法相关的应用。遍历图算法不再随减治法介绍,而是纳入蛮力算法和穷举查找的范畴,我认为这样更合理。在介绍生成组合对象的算法时,新增了格雷码算法。对求解最近对问题的分治法有更深入的探讨。改进的内容包括算法可视化和求解旅行商问题的近似算法,当然参考文献也有相应的更新。  第3版一共新增约70道习题,其中涉及算法谜题和面试问题。  先修课程  本书假定读者已经学习了离散数学的标准课程和一门基础性的编程课程。有了这样的知识背景,读者应该能够掌握本书的内容而不会遇到太大的困难。尽管如此,1.4节、附录A和附录B仍然对基本的数据结构以及必须用到的求和公式与递推关系分别进行复习和回顾。只有3个小节(2.2节、11.4节和12.4节)会用到一些简单的微积分知识,如果读者缺少必要的微积分知识,完全可以跳过这3个涉及微积分的小节,这并不妨碍对本书其余部分的理解。  课程进度安排  如果打算开设一门围绕算法设计技术来讲解算法设计和分析理论的基础课程,可以采用本书作为教材。但要想在一个学期内完成该课程,本书涵盖的内容可能过于丰富了。大体上来说,跳过第3~12章的部分内容不会影响读者对后面部分的理解。本书的任何一个部分都可以安排学生自学。尤其是2.6节和2.7节,它们分别介绍了经验分析和算法可视化,这两小节的内容可以结合课后练习 布置给学生。  下面给出了针对一个学期课程的教学计划,这是按照40课时的集中教学来设计的。  课次 主题
节  1 课程简介
1.1~1.3  2,3 分析框架;常用符号 、 和
2.1,2.2  4 非递归算法的数学分析
2.3  5,6 递归算法的数学分析
2.4,2.5(+附录B)  7  蛮力算法
3.1,3.2(+3.3)  8 穷举查找
3.4  9 深度优先查找和广度优先查找
3.5  10~11 减一算法:插入排序、拓扑排序
4.1,4.2  12 折半查找和其他减常量算法 4.4  13 减变量算法
4.5  14~15 分治法:合并排序、快速排序
5.1~5.2  16 其他分治法示例 5.3、5.4或5.5  16  减变量算法5.6  17~19 实例化简:预排序、高斯消去法、平衡查找树
6.1~6.3  20 改变表现:堆和堆排序或者霍纳法则和二进制幂
6.4或6.5  21 问题化简 6.6  22~24 时空权衡:串匹配、散列法、B树 7.2~7.4  25~27 动态规划算法
8.1~8.4(选3节)  28~30 贪婪算法:Prim算法、Kruskal算法、Dijkstra算法、哈夫曼算法 9.1~9.4  31~33 迭代改进算法
10.1~10.4(选3节)  34 下界的参数
11.1  35 决策树
11.2  36 P、NP和NP完全问题
11.3  37 数值算法
11.4(+12.4)  38 回溯法 12.1  39 分支界限法
12.2  40 NP困难问题的近似算法 
12.3  致谢  我要向本书的评审表达衷心的感谢,还要感谢本书前两版的许多读者,他们提供了许多宝贵的意见和建议,帮助本书得以改进和完善。本书第3版尤其得益于下列人士的评审,包括Andrew Harrington(芝加哥洛约拉大学)、David Levine(圣文德大学)、Stefano Lombardi(加州大学河滨分校)、Daniel McKee(宾州曼斯菲尔德大学)、Susan Brilliant(弗吉尼亚州立联邦大学)、David Akers(菩及海湾大学)以及两名匿名评审。  我要感谢培生出版社所有为本书付出不懈努力的工作人员和相关人士。尤其要感谢本书编辑Matt Goldstein、编务助理Chelsea Bell、市场经理Yez Alayan和产品总监Kayla Smith-Tarbox。我还要感谢Richard Camp为本书审稿,Windfall Software的Paul Anagnostopoulos和Jacqui Scarlott为本书排版并提供项目管理支持,以及MaryEllen Oliver为本书进行校对。  最后,我要感谢两位家人。另一半整天都在写书比自己本人写书更让人崩溃,我的妻子Maria已容忍我多年并任劳任怨地帮助我,本书400多幅插图以及教师手册都是凭她一己之力完成的。女儿Miriam是我多年的英语老师,她不但阅读了本书大量篇幅,还帮我为每章找到了合适的名人名言。  Anany Levitin
绪论 11.1 什么是算法 2习题1.1 61.2 算法问题求解基础 71.2.1
理解问题 81.2.2 了解计算设备的性能 81.2.3 在精确解法和近似解法之间做出选择 91.2.4 算法的设计技术 91.2.5 确定适当的数据结构 91.2.6 算法的描述 101.2.7 算法的正确性证明 101.2.8 算法的分析 111.2.9 为算法写代码 12习题1.2
131.3 重要的问题类型 141.3.1 排序 151.3.2 查找 161.3.3 字符串处理 161.3.4 图问题 161.3.5 组合问题 171.3.6 几何问题 171.3.7 数值问题 18习题1.3
181.4 基本数据结构 201.4.1 线性数据结构 201.4.2 图 221.4.3 树 251.4.4 集合与字典 28习题1.4
算法效率分析基础 322.1 分析框架 332.1.1
输入规模的度量 332.1.2
运行时间的度量单位 342.1.3
增长次数 352.1.4
算法的最优、最差和平均效率 362.1.5
分析框架概要 38习题2.1 392.2
渐近符号和基本效率类型 402.2.1
非正式的介绍 402.2.2
符号O 412.2.3
渐近符号的有用特性 432.2.6
利用极限比较增长次数 442.2.7
基本的效率类型 45习题2.2 462.3
非递归算法的数学分析 48习题2.3 522.4
递归算法的数学分析 54习题2.4 592.5
例题:计算第n个斐波那契数 62习题2.5 652.6
算法的经验分析 66习题2.6 692.7
算法可视法 70小结 73第3章
蛮力法 753.1
选择排序和冒泡排序 763.1.1
选择排序 763.1.2
冒泡排序 77习题3.1 783.2
顺序查找和蛮力字符串匹配 803.2.1
顺序查找 803.2.2
蛮力字符串匹配 81习题3.2 823.3
最近对和凸包问题的蛮力算法 833.3.1
最近对问题 833.3.2
凸包问题 84习题3.3 873.4
穷举查找 893.4.1
旅行商问题 893.4.2
背包问题 903.4.3
分配问题 91习题3.4 933.5
深度优先查找和广度优先查找 943.5.1
深度优先查找 943.5.2
广度优先查找 96习题3.5 98小结 100第4章
减治法 1014.1
插入排序 103习题4.1 1054.2
拓扑排序 106习题4.2 1094.3
生成组合对象的算法
生成子集 113习题4.3 1144.4
减常因子算法
约瑟夫斯问题 119习题4.4 1204.5
减可变规模算法
计算中值和选择问题
二叉查找树的查找和插入
拈游戏 127习题4.5 128小结 129第5章
分治法 1315.1
合并排序 133习题5.1 1355.2
快速排序 136习题5.2 1405.3
二叉树遍历及其相关特性 141习题5.3 1435.4
大整数乘法和Strassen矩阵乘法
大整数乘法
Strassen矩阵乘法 146习题5.4 1485.5
用分治法解最近对问题和凸包问题
最近对问题
凸包问题 151习题5.5 153小结 154第6章
变治法 1556.1
预排序 156习题6.1 1586.2
高斯消去法
计算矩阵的逆
计算矩阵的行列式 166习题6.2 1676.3
平衡查找树
2-3树 173习题6.3 1746.4
堆和堆排序
堆排序 180习题6.4 1816.5 霍纳法则和二进制幂
二进制幂 184习题6.5 1866.6 问题化简
求最小公倍数
计算图中的路径数量
优化问题的化简
简化为图问题 192习题6.6 193小结 194第7章 时空权衡 1967.1 计数排序 197习题7.1 1997.2 字符串匹配中的输入增强技术  Horspool算法  Boyer-Moore算法 204习题7.2 2077.3 散列法  开散列(分离链)  闭散列(开式寻址) 211习题7.3 2137.4 B树 214习题7.4 217小结 218第8章 动态规划 2198.1 三个基本例子 220习题8.1 2248.2 背包问题和记忆功能  背包问题  记忆化 227习题8.2 2298.3 最优二叉查找树 230习题8.3 2348.4 Warshall算法和Floyd算法  Warshall算法  计算完全最短路径的Floyd算法 238习题8.4 241小结 242第9章 贪婪技术 2439.1 Prim算法 245习题9.1 2499.2 Kruskal算法 250习题9.2 2559.3 Dijkstra算法 256习题9.3 2599.4 哈夫曼树及编码 260习题9.4 264小结 265第10章 迭代改进 26610.1 单纯形法
线性规划的几何解释
单纯形法概述
单纯形法其他要点 275习题10.1 27610.2
最大流量问题 278习题10.2 28510.3
二分图的最大匹配 286习题10.3 29110.4
稳定婚姻问题 292习题10.4 295小结 296第11章 算法能力的极限 29711.1 如何求下界  平凡下界  信息论下界  敌手下界  问题化简 300习题11.1 30211.2 决策树  排序的决策树  查找有序数组的决策树 305习题11.2 30611.3 P、NP和NP完全问题  P和NP问题  NP完全问题 311习题11.3 31411.4 数值算法的挑战 316习题11.4 322小结 323第12章 超越算法能力的极限 32512.1 回溯法  n皇后问题  哈密顿回路问题  子集和问题  一般性说明 329习题12.1 33112.2 分支界限法  分配问题  背包问题  旅行商问题 336习题12.2 33812.3 NP困难问题的近似算法  旅行商问题的近似算法  背包问题的近似算法 349习题12.3 35212.4 解非线性方程的算法  平分法  试位法  牛顿法 358习题12.4 360小结 361跋 363附录A
算法分析的实用公式 366附录B
递推关系简明指南 369习题提示 380参考文献 414

我要回帖

更多关于 二进制转化为格雷码 的文章

 

随机推荐