《程序设计实践(五)》-青少年经典教育读本.pdfVIP

《程序设计实践(五)》-青少年经典教育读本.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
下载 第3章 设计与实现 给我看你的流程图而藏起你的表,我将仍然是莫名其妙。如果给我你的表,那 么我将不再要你的流程图,因为它们太明显了。 —Frederick P. Brooks, Jr., 《神秘的人月》 以上从B r o o k s 的经典书中摘录的内容想说的是,数据结构设计是程序构造过程的中心环 节。一旦数据结构安排好了,算法就像是瓜熟蒂落,编码也比较容易。 这种观点虽然有点过于简单化,但也不是在哄骗人。在前一章里我们考察了各种基本数 据结构,它们是许多程序的基本构件。在这一章中,我们将组合这些结构,要完成的工作是 设计和实现一个中等规模的程序。我们将说明被处理的问题将如何影响数据结构,从这里还 可以看到,一旦数据结构安排好之后,代码将会如何自然地随之而来。 我们的观点的另一个方面是:程序设计语言的选择在整个设计过程中,相对而言,并不 是那么重要。我们将抽象地设计这个程序,然后用 C 、C + + 、Aw k 和P e r l把它写出来。由不同 实现之间的比较,可以看出语言在这里能有什么帮助或者妨碍,以及它们并不那么重要的各 种情况。程序的设计当然可以通过语言来装饰,但是通常不会为语言所左右。 我们要选择的问题并不是很常见的,但它在基本形式上又是非常典型的:一些数据进去, 另一些数据出来,其处理过程并不依赖于多少独创性。 我们准备做的就是产生一些随机的可以读的英语文本。如果随便扔出来一些随机字母或 随机的词,结果当然是毫无意义的。例如,一个随机选取字母 ( 以及空格,用作词之间的分隔) 的程序可能产生: 没人会觉得这有什么意思。如果以字母在英语里出现的频率作为它们的权重,我们可能得到 下面这样的内容: 这个也好不到哪儿去。采用从字典里随机选择词的方式也弄不出多少意思来: 为了得到更好一些的结果,我们需要一个带有更多内在结构,例如包含着各短语出现频率的 统计模型。但是,我们怎么才能得到这种统计呢? 我们当然可以抓来一大堆英语材料,仔细地研究。但是,实际上有一种更简单也更有意 思的方法。这里有一个关键性的认识:用任何一个现成的某种语言的文本,可以构造出由这 个文本中的语言使用情况而形成的统计模型。通过该模型生成的随机文本将具有与原文本类 似的统计性质。 3.1 马尔可夫链算法 完成这种处理有一种非常漂亮的方法,那就是使用一种称为马尔可夫链算法的技术。我 第 3章 设计与实现计计49 下载 们可以把输入想像成由一些互相重叠的短语构成的序列,而该算法把每个短语分割为两个部 分:一部分是由多个词构成的前缀,另一部分是只包含一个词的后缀。马尔可夫链算法能够 生成输出短语的序列,其方法是依据 (在我们的情况下)原文本的统计性质,随机性地选择跟在 前缀后面的特定后缀。采用三个词的短语就能够工作得很好——利用连续两个词构成的前缀 来选择作为后缀的一个词: 设置w 和w 为文本的前两个词 1 2 输出w 和w 1 2 循环: 随机地选出w ,它是文本中w w 的后缀中的一个 3 1 2 打印w 3 把w 和w 分别换成w 和w 1 2 2 3 重复循环 为了说明问题,假设我们要基于本章开头的引语里的几个句子生成一些随机文本。这里采用 的是两词前缀: 下面是一些输入的词对和跟随它们之后的词: 输入前缀 跟随的后缀词 处理这个文本的马尔可夫算法将首先打印出 Show your,然后随机取出f l o w c h a r t s或 t a b l e。如果选中了前者,那么现在前缀就变成 your flowcharts,而下一个词应该是 a n d或w i l l。如果它选取t a b l e s,下一个词就应该是 a n d。这样继续下去,直到产生出足 够多的输出,或者在找

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8135026137000003

1亿VIP精品文档

相关文档