自顶而下,逐步求精

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/L_zf66/article/details/78691534

首先,什么是“自顶而下,逐步求精”呢?

自顶而下:
将复杂的大问题分解为相对简单的小问题,找出每个问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。其核心本质是”分解”。
对要完成的任务进行分解,先对最高层次中的问题进行定义、设计、编程和测试,而将其中未解决的问题作为一个子任务放到下一层次中去解决。这样逐层、逐个地进行定义、设计、编程和测试,直到所有层次上的问题均由实用程序来解决,就能设计出具有层次结构的程序。 按自顶向下的方法设计时,设计师首先对所设计的系统要有一个全面的理解.然后从顶层开始,连续地逐层向下分解,起到系统的所有模块都小到便于掌握为止 。
逐步求精:
将现实问题经过几次抽象(细化)处理,最后到求解域中只是一些简单的算法描述和算法实现问题。即将系统功能按层次进行分解,每一层不断将功能细化,到最后一层都是功能单一、简单易实现的模块。求解过程可以划分为若干个阶段,在不同阶段采用不同的工具来描述问题。在每个阶段有不同的规则和标准,产生出不同阶段的文档资料。
这里写图片描述

接下来用一个实例来具体了解“自顶而下,逐步求精”的使用。

哥德巴赫猜想是数论中的一个著名难题, 是由法国数学爱好者克里斯蒂安·哥德巴赫于1742年在给著名数学家欧拉的一封信中提出的。二百多年来, 虽有无数数学家为其呕心沥血、绞尽脑汁, 却始终无人能够证明或者证伪这个猜想 。
“哥德巴赫猜想”可以表述为:任何一个大于等于4的偶数均可以表示为两个素数之和。

现在我们用“自顶而下,逐步求精”来尝试求解。

第一步 提出问题: 验证哥德巴赫猜想

第二步 设一上限数A,验证从4到A的所有偶数是否能被分解为两个素数之和。
1. 定义一个变量X,初值为4。
2. 每次令其加2,并验证X能否被分解为两个素数之和,直到X不小于A为止。

第三步 如何验证X是否能被分解为两个素数之和。
1. 从B=2开始;
2. 判别X—B是否仍为素数:
3. 若是,输出该偶数的分解式。
4. 否则,换更大的素数,再继续执行2.。如此循环,直到用于检测的素数大X/2且X 与其之差仍不是素数,则输出“哥德巴赫猜想”不成立。

第四步 查找下一个素数。
(1)当前素数B加1
(2)判别B是否是素数;
(3)若是素数,返回P;
(4)否则,B加1,继续执行( 2)。

经过四步分解精化,将“验证哥德巴赫猜想”这个命题已经分解为计算机可以求解的数学模型了。

模块化数学模型,化繁为简,这就是“自顶而下,逐步求精”的一种使用。

猜你喜欢

转载自blog.csdn.net/L_zf66/article/details/78691534
今日推荐