一.欢迎来到我的酒馆
第1章 1.2节,问题描述与抽象。
目录
- 一.欢迎来到我的酒馆
- 二.问题描述、抽象与建模
- 1.什么是抽象
- 2.为什么要抽象
- 3.什么是建模
- 4.建什么模
- 三.面向计算机的问题分析
- 四.总结
二.问题描述、抽象与建模
什么是抽象?为什么要抽象?什么是建模?建什么模?
1.什么是抽象
看到上面一大堆问题,如果直接给出定义,很难记住,而且我们也不太愿意去记。我们可以拿生活中的例子来帮助我们理解,例如,早上去买菜,别人问你买了些什么?你会说买了一些蔬菜和水果。可能你买了很多的胡萝卜,白菜,玉米,茄子,还有草莓,西瓜等等。当别人问你买了些什么,你一般不会把你所有的都挨个讲出来,而是简要地回答买了一些蔬菜和水果。从这个例子中,我们关注的是菜篮子里的本质特征,即水果和蔬菜,而忽略了菜篮子里水果和蔬菜的种类、形状等,再比如水果是酸的还是甜的,这些我们都忽略。简单的说,抽象,抽:抽出;象:形象,特征。抽象,把象都抽掉了,剩下的就是质,就是本质性的东西。抽象是抽出事物共同的特征。
我们还以刚才的菜为例,如果我们的问题背景是吃什么,我们可以从菜篮子里抽象出水果和蔬菜;如果我们的问题背景是研究版面设计,用形状表达就可以了,蔬菜用矩形,水果用圆形表示;如果我们的问题背景是研究营养搭配,用不同的颜色,蔬菜用紫色,水果用红色表示。从这里我们可以看出,抽象是面向问题的简化描述方法,具体怎么描述,取决于我们研究的问题。
2.为什么要抽象
为什么要抽象?不抽象不能解决问题吗?抽象是人们求解问题时的认知过程和思维方法,从个别中把握一般,从现象把握本质。我们以人口普查这个问题为例,对一堆人群做人口普查工作。我们需要对人进行抽象,去掉人的爱好、性格、这个人的声音、这个人长得什么样等特征,而要抽象出:姓名、年龄、性别、地址等这些人共同具有的本质属性来表现不同的人。我们把这些共有的本质属性抽取出来形成一个框架,这个框架既可以适用于北京地区的人口普查,也适用于上海的人口普查,其它边远地区的人口普查也适用。在以人口普查为背景的问题下,我们对人抽象,形成一套适合所有地区人口普查的框架,减少重复工作。
3.什么是建模
建模,先来看看书本上是怎么定义建模这个名词的。建模是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。凡是用模型描述系统的因果关系或相互关系的过程都属于建模。建模是把现实中的系统进行模拟或者抽象,通俗来讲,就是把实际的事物用合适的形象表示出来。理解起来还是有点难,我们可以简单的概括一下,建模是一种过程,它可以将复杂的事物简化为可理解的有限图示。
从上面的描述中,我们可以提取出两个关键词:模型,建模。模型是指为了一定目的,对事物原型的一种抽象,例如航空3D模型是对现实中飞机的一个抽象表达,再比如城市交通模型是对城市交通系统的一个抽象表达。建模,即建立模型,我们对模型有一个输入,那么会得到一个输出,这样一个过程称为建模,用模型来描述相互关系的过程。例如,我们举一个例子,人口增长预测数学模型,这个模型是用来预测人口增长的,我输入第n年,会得到一个人口的增长数据表,这个过程就是建模。
4.建什么模
模型有很多种,不仅仅是我们上面举例的数学模型,建模有很多种:
- 数学建模。用计算得到的结果来解释实际的问题。
- 数据建模。是数据特征的抽象,是数据库管理的教学形式框架。
- UML建模。用于面向对象设计的建模语言规格说明,是表示标准。
- 可视化建模。用图形化的方式描述所开发系统的过程。
- 3D建模。通过虚拟三维空间来构建出三位数据的模型。
- 业务建模。以软件模型方式描述企业管理和业务所涉及的对象和要素、以及它们的属性、行为和彼此关系,业务建模强调以体系的方式。
三.面向计算机的问题分析
生活中,常常会遇到这样的问题,找不着手机了。这时候,用人的思维去找手机,你肯定会去熟悉的位置找,比如去房间里的书桌上找。你的印象中有一个大致的位置,然后根据这个位置去房间里找。但是,如果让计算机来找手机,情况就不一样了。它会不厌其烦地把整个房间遍历一遍,就是全部扫一遍,那可能会找不着吗?只要手机在房间里,那肯定能找着。
可以看到,计算机的思维和人不同。在面向计算机的问题分析时,我们关心的是,人需要怎么做,计算机才能做什么。计算机在解决一些问题的时候,人需要做的是问题描述、抽象、建模,计算机才能做求解结果。我们总结一下,面向计算机的问题求解,人需要首先完成问题描述、抽象、建模,并且做好精确的算法设计、正确的程序编制,计算机才能做好计算。
面向计算机的问题分析,是人和计算机完成各自的事情。计算机是实现人的思维的,但是因为人和计算机各自的能力与优势不同,使得求解问题的方法有很大的不同。
四.总结
1.问题描述、抽象与建模
主要内容:
(1).什么是抽象?抽象是对具体问题的简要表达。
(2).为什么要抽象?抽象可以把事物的共同特征提取出来,形成一套适合所有实例的框架。
(3).什么是建模?建模是一种问题求解的过程,用模型来描述相互关系的过程就是建模。
(4).建什么模?建模有很多种,如数学建模,数据建模,3D建模等。
2.面向计算机的问题分析
主要内容:
(1).计算机的思维和人不同。
(2).面向计算机的问题求解,人需要完成问题描述、抽象、建模,并且做好算法、程序,计算机才能做好计算。