第三章 设计与实现

第三章 设计与实现

    给我看你的流程图而藏起你的表,我将仍然是莫名其妙。如果给我你的表,那么我将不再要你的流程图,因为它们太明显了。

    以上从Brooks的经典书中摘录的内容想说的是,数据结构设计是程序构造过程的中心环节。一旦数据结构安排好了,算法就像是瓜熟蒂落,编码也比较容易。

    这种观点虽然有点过于简单化,但也不是在哄骗人。在前一章里我们考察了各种基本数据结构,它们是许多程序的基本构件。在这一章中,我们将组合这些结构,要完成的工作是设计和实现一个中等规模的程序。我们将说明被处理的问题将如何影响数据结构,从这里还可以看到,一旦数据结构安排好之后,代码将会如何自然地随之而来。

    我们的观点的另一个方面是:程序设计语言的选择在整个设计过程中,相对而言,并不是那么重要。 当然,程序的设计当然可以用编程语言来装饰,但是程序通常不会被语言所左右。

    我们要选择的问题并不是很常见的,但它在基本形式上又是非常典型的:一些数据进去,另一些数据出来,其处理过程并不依赖于多少独创性。而我们准备做的就是产生一些随机的、可读的英语文本。

    以下几种情况都是没有什么实际意义的短语和词组:

    1.随便扔出来一些随机字母或随机的词


    2.如果以字母在英语里出现的频率作为它们的权重,我们可能得到下面这样的内容:


    3.而采用从字典里随机选择词的方式也弄不出多少意思来:


    为了得到更好一些的结果,我们需要一个带有更多内在结构,例如包含着各短语出现频率的统计模型。但是,我们怎么才能得到这种统计呢?我们当然可以抓来一大堆英语材料,仔细地研究。但是,实际上有一种更简单也更有意思的方法。这里有一个关键性的认识:用任何一个现成的某种语言的文本,可以构造出由这个文本中的语言使用情况而形成的统计模型。通过该模型生成的随机文本将具有与原文本类似的统计性质。

    而实现这种处理,我们一般采取马尔科夫链算法:

3.1 马尔科夫链算法

3.2 数据结构的选择

3.3 在C语言下构造马尔科夫链数据结构

3.4 马尔科夫链算法具体实现

3.6 马尔科夫链算法的具体实现(C++环境下)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值