《计算机领域典型问题》.pptVIP

  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文档。上传文档
查看更多
设f=1%,p→∞,则Sp=100。这说明即使在并行计算机系统中有无穷多个处理器,解决这个串行执行操作仅占全部操作1%的问题,其解题速度与单处理器的计算机相比最多也只能提高一百倍。因此,对难解性问题而言,单纯的提高计算机系统的速度是远远不够的,而降低算法复杂度的数量级才是最关键的问题。 国王有众多百姓的帮助,求亲成功是自然的事。但是,如果换成是一个贫民百姓的小伙子去求婚,那就困难了。不过,小伙子可以从国王求亲取得成功所采用的并行算法中得到一个启发,那就是:他可以随便猜一个数,然后验证这个数。当然,这样做成功的可能性很小,不过,万一小伙子运气好猜着了呢?由于一个数和它的因子之间存在一些有规律的联系,因此,数论知识水平较高的人猜中的可能性就大。 我们说,这个小伙子使用的算法叫做非确定性算法。这样的算法需要有一种假想但实际并不存在的非确定性计算机才能运行,其理论上的计算模型是非确定性图灵机。 在算法计算复杂性的研究中,将所有可以在多项式时间内求解的问题称为P类问题,而将所有在多项式时间内可以验证的问题称为NP类问题,由于P类问题采用的是确定性算法,NP类问题采用的是非确定性算法,确定性算法是非确定性算法的一个特例,因此P?NP。 对于大多数实际问题来说,找到一个解可能很难,检验一个解常常比较容易,所以都属于NP类问题。现在计算机科学研究中一个悬而未决的重要问题是P=?NP。到目前为止,已经发现了一批可计算但有相当难度的问题是属于NP类问题,并且常通过证明一个问题与已知属于NP类中的某个问题等价,将其归入NP类问题。 不过,该问题是否属于P类问题,即是否能找到多项式时间计算复杂性算法求解该问题,或证明该问题不存在多项式时间计算复杂性算法求解,至今尚未解决。20世纪70年代初,库克(S.A.Cook)和卡尔普(R.M.Karp)在P=?NP问题上取得重大进展,指出NP类中有一小类问题具有以下性质:迄今为止,这些问题多数还没有人找到多项式时间计算复杂性算法。但是,一旦其中的一个问题找到了多项式时间计算复杂性算法,这个类中的其他问题也能找到多项式时间计算复杂算法,那么就可以断定P=NP。 即如果确属于这个类中的某个问题被证明不存在多项式时间计算复杂性算法,那么,就等于证明了P≠NP。通常,将这类问题称为NP完全问题。 1982年,库克因其在计算复杂性理论方面(主要是在NP完全性理论方面)的奠基性工作而荣获ACM图灵奖。 4哲学家共餐问题 对哲学家共餐问题可以作这样的描述(如图5所示):5个哲学家围坐在一张圆桌旁,每个人的面前摆有一碗面条,碗的两旁各摆有一只筷子。 图5哲学家共餐餐桌示意图 假设哲学家的生活除了吃饭就是思考问题,而吃饭的时候需要左手拿一只筷子,右手拿一只筷子,然后开始进餐。吃完后又将筷子放回原处,继续思考问题。那么,一个哲学家的生活进程可表示为: (1)思考问题; (2)饿了停止思考,左手拿一只筷子(拿不到就等); (3)右手拿一只筷子(拿不到就等) ; (4)进餐;图5哲学家共餐餐桌示意图 (5)放右手筷子; (6)放左手筷子; (7)重新回到思考问题状态(1)。 问题是:如何协调5个哲学家的生活进程,使得每一个哲学家最终都可以进餐。 考虑下面的两种情况: (1)按哲学家的活动进程,当所有的哲学家都同时拿起左手筷子时,则所有的哲学家都将拿不到右手的筷子,并处于等待状态,那么哲学家都将无法进餐,最终饿死。 (2)将哲学家的活动进程修改一下,变为当右手的筷子拿不到时,就放下左手的筷子,这种情况是不是就没有问题?不一定,因为可能在一个瞬间,所有的哲学家都同时拿起左手的筷子,则自然拿不到右手的筷子,于是都同时放下左手的筷子,等一会,又同时拿起左手的筷子,如此这样永远重复下去,则所有的哲学家一样都吃不到面条。 以上两个方面的问题,其实反映的是程序并发执行时进程同步的两个问题,一个是死锁(Deadlock),另一个是饥饿(Starvation)。 哲学家共餐问题实际上反映了计算机程序设计中多进程共享单个处理机资源时的并发控制问题。要防止这种情况发生,就必须建立一种机制,既要让每一个哲学家都能吃到面条,又不能让任何一个哲学家始终拿着一根筷子不放。采用并发程序语言、Petri网、CSP等工具,都能很容易地解决这个问题。 与程序并发执行时进程同步有关的经典问题还有:读者-写者问题(Rea

文档评论(0)

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

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

1亿VIP精品文档

相关文档