用两个简单的例子说明一下:

某日小明上数学课,他的老师给了很多个不同的直角三角板让小明用尺子去量三角板的三个边,并将长度记录下来。两个小时过去,小明完成任务,把数据拿给老师。老师给他说,还有一个任务就是观察三条边之间的数量关系。又是两个小时,聪明的小明连蹦带跳走进了办公室,说:“老师,我找到了,三条边之中有两条,它们的平方和约等于另外一条的平方。”老师拍拍小明的头,“你今天学会了一个定理,勾股定理。它就是说直角三角形有两边平方和等于第三边的平方和”。

另一个故事,某日老师告诉小明“今天要教你一个定理,勾股定理。”小明说,“什么是勾股定理呢?”“勾股定理是说,直角三角形中有两条边的平方和等于第三边的平方。”然后老师给了一大堆直角三角板给小明,让他去验证。两个小时后,小明告诉老师定理是正确的.

两个故事刚好是语法分析里面对应的两个方法:第一个故事说的是自底向上的分析方法,第二个故事说的是自顶而下的分析方法。

在三维建模软件里也存在这个问题:

自底向上就是先建零件图,然后去组装装配图!三维网技术论坛; b2 c2 d( t9 G" k
自顶向下就是先建装配图,再在装配图中建零件图!

或者先建立一个总装配体的零件图,然后切割成各个零件图!

两种分析方法的根本区别是:自底向上的分析,是从具体到抽象;自顶向下的分析,是从抽象到具体。两种分析思路恰恰又是哲学思考问题的两大方向。可见计算机科学与哲学也是相通的.

------------------------------以上是转载内容,分割线以下是自己补充的内容------------------------------------------------------------------------

补充内容:

在软件设计或者算法设计中,经常会遇到自顶向下或者自底向上的设计方法,其实可以将一个设计项目想象成金字塔,然后自底向上就是从金字塔的底部开始,先建立基脚,从底部逐渐修建直到完成金字塔的顶端,这种方法对整体完成的样子是未知的,由具体到抽象;而自顶向下是已知金字塔的基本形状和轮廓,先建立完整骨架,再完成具体的添砖加瓦的工作,这是由抽象到具体的方法。

转载于:https://www.cnblogs.com/Qsir/p/5838802.html

【转】自底向上和自顶向下的区别相关推荐

  1. 红黑树 自底向上和自顶向下插入, 自顶向下删除

    本文主要参考 Mark Allen Weiss 的 Data Structures and Algorithn Analysis in Java (Second Edition) 的中译本,对其中省略 ...

  2. 【算法】归并排序:自底向上、自顶向下(分治思想)的实现

    [算法]归并排序:自底向上.自顶向下(分治思想)的实现 1 自底向上 算法 import java.util.Arrays;/*** 归并排序:自底向上*/ public class Sort {/* ...

  3. 分治法 —— 快速排序和归并排序(自底向上和自顶向下)

    问题: 对于给定的含有n个元素的数组a,对其按元素值递增排序. - 快速排序 1.基本思想: 划分:在待排序的n个元素中任取一个元素(通常取第一个元素)作为基准,把该元素放入最终元素后,整个数据 序列 ...

  4. 算法导论之贪心算法(Huffman编码和拟阵)

    贪心算法,在解决最优化问题上,通过得到子问题的局部最优解来合成问题的一个解,以局部最优选择来输出一个全局最优解. 问题要用贪心算法来求解,需满足和动态规划一样的最优子结构特征,同时还需要再每个子问题最 ...

  5. [递归]一文看懂递归

    1. 递归的定义 编程语言中,函数 Func(Type a,--) 直接或间接调用函数本身,则该函数称为「递归函数」. 在实现递归函数之前,有两件重要的事情需要弄清楚: 递推关系:一个问题的结果与其子 ...

  6. 浅谈动态规划和分治、贪心算法的区别

    一个问题必须拥有重叠子问题和最优子结构,才能使用动态规划去解决. 一.动态规划与分治算法 分治和动态规划都是将问题分解为子问题,然后合并子问题的解得到原问题的解. 但是不用的是,分治法分解出的子问题是 ...

  7. 机器视觉与计算机视觉的区别与联系

    机器视觉和计算机视觉是两个既有区别又有联系的专业术语. 机器视觉(machine vision)偏重于计算机视觉技术工程化,能够自动获取和分析特定的图像,以控制相应的行为.计算机视觉(computer ...

  8. 模块化程序设计之自顶向下、逐步求精

    模块化程序设计最早出现在汇编语言中,在结构程序设计的概念提出以后,逐步完善并形成了模块化的程序设计方法.按照模块化程序设计思想,无论多么复杂的任务,都可以划分为若干个子任务.若子任务较复杂,则可以继续 ...

  9. 五大算法设计思想,你都知道吗?

    作者:叫我不矜持 链接:https://www.jianshu.com/p/bf8b0668d191 一.分治法 1.概念: 将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分 ...

最新文章

  1. 数据结构实验之二叉树五:层序遍历(STL和模拟队列两种方法)
  2. 1016 Phone Bills (25 分) 【未完成】【难度: 中 / 知识点: 模拟】
  3. linux中使用xshell远程连接
  4. 算法总结 -- 博弈论(PN图)
  5. PythonGUI编程|使用Tkinter制作快递查询软件
  6. linux命令txt,Linux常用命令(非常详细!)
  7. SQL in和exists 比较
  8. python lambda表达式及用法_python lambda表达式简单用法
  9. element $prompt 输入类型密码_手把手教程 | 为你支招 安全保存账号和密码的两种方法...
  10. 给定一个字符串,求第一个不重复的字符
  11. PHP 简体中文繁体互转
  12. 【超详细】随机变量及其分布——《概率论与数理统计》第二章学习笔记
  13. 无线网络技术复习笔记(5)——无线城域网、广域网
  14. visual studio 提高速度的选项
  15. php 伪静态规则,常用伪静态规则(for Nginx)
  16. 一文学会快速傅里叶变换(FFT)
  17. 软件工程--团队作业2
  18. 由于没有公钥,无法验证下列签名: NO_PUBKEY 4F4EA0AAE5267A6C
  19. oracle 三表关联查询
  20. 日本杂货连锁店Loft首家海外直营店于上海开业

热门文章

  1. 怎么样采集声音的波形和频率_示波器采集模式
  2. python判断数据是否在另一个集合中_python判断一个集合是否包含了另外一个集合中所有项的方法...
  3. java反编译工具_推荐Java反编译工具luyten、jd-gui
  4. 2018java计算机二级考试试题和答案,2018年计算机等级考试二级JAVA习题答案(1)
  5. mysql 正则截取字符串_mysql字符串查找截取与正则表达式的联合应用 | 学步园
  6. 灯三段调光原理_各种筒灯、射灯、斗胆灯最全的解释?用对地方,效果加倍
  7. python sqlite
  8. Excel删除重复数据
  9. 从北大高材生被华为辞退中我们需要学到什么?
  10. Mysql学习总结(72)——MySQL 开发者开发,设计规范再总结