算法设计方法(二)——分而治之

来源:互联网 发布:大智慧行情数据接口 编辑:程序博客网 时间:2024/04/26 18:52

基本概念:

君主和殖民者们所成功运用的分而治之的策略也可以运用到高效率的计算机算法的设计过程中,这就是分而治之的方法。该方法和软件设计的模块化方法非常相似。为了解决一个大的问题,可以:1)把它分成两个或多个更小的问题;2)分别解决每个小问题;3)把各个小问题的解答组合起来,即可得到原问题的解答。小问题通常与原问题相似,可以递归地使用分而治之策略来解决。

著名问题:

【找出伪硬币】给你一个装有16个硬币的袋子。16个硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。你的任务是找出这个伪造的硬币。为了帮助你完成这一任务,将提供哦一台可用来比较两组硬币重量的仪器,利用这台仪器,可以知道两组硬币的重量是否相同。

算法:利用分而治之的策略,先将硬币分为两组,进行比较。再将较轻一组再分为两组进行比较。最后再将较轻一组中的两枚硬币进行比较,可以得到结果。找到伪硬币总共需三步,可是如何来证明这样的算法是最优的呢?

 

 

原创粉丝点击