当前位置: 首页 > news >正文

深入学习《大学计算机》系列之第1章 1.2节——问题描述与抽象

一.欢迎来到我的酒馆

        第1章 1.2节,问题描述与抽象。

目录

    • 一.欢迎来到我的酒馆
    • 二.问题描述、抽象与建模
      • 1.什么是抽象
      • 2.为什么要抽象
      • 3.什么是建模
      • 4.建什么模
    • 三.面向计算机的问题分析
    • 四.总结

二.问题描述、抽象与建模

        什么是抽象?为什么要抽象?什么是建模?建什么模?

1.什么是抽象

        看到上面一大堆问题,如果直接给出定义,很难记住,而且我们也不太愿意去记。我们可以拿生活中的例子来帮助我们理解,例如,早上去买菜,别人问你买了些什么?你会说买了一些蔬菜和水果。可能你买了很多的胡萝卜,白菜,玉米,茄子,还有草莓,西瓜等等。当别人问你买了些什么,你一般不会把你所有的都挨个讲出来,而是简要地回答买了一些蔬菜和水果。从这个例子中,我们关注的是菜篮子里的本质特征,即水果和蔬菜,而忽略了菜篮子里水果和蔬菜的种类、形状等,再比如水果是酸的还是甜的,这些我们都忽略。简单的说,抽象,抽:抽出;象:形象,特征。抽象,把象都抽掉了,剩下的就是质,就是本质性的东西。抽象是抽出事物共同的特征。
在这里插入图片描述

        我们还以刚才的菜为例,如果我们的问题背景是吃什么,我们可以从菜篮子里抽象出水果和蔬菜;如果我们的问题背景是研究版面设计,用形状表达就可以了,蔬菜用矩形,水果用圆形表示;如果我们的问题背景是研究营养搭配,用不同的颜色,蔬菜用紫色,水果用红色表示。从这里我们可以看出,抽象是面向问题的简化描述方法,具体怎么描述,取决于我们研究的问题。
在这里插入图片描述

2.为什么要抽象

        为什么要抽象?不抽象不能解决问题吗?抽象是人们求解问题时的认知过程和思维方法,从个别中把握一般,从现象把握本质。我们以人口普查这个问题为例,对一堆人群做人口普查工作。我们需要对人进行抽象,去掉人的爱好、性格、这个人的声音、这个人长得什么样等特征,而要抽象出:姓名、年龄、性别、地址等这些人共同具有的本质属性来表现不同的人。我们把这些共有的本质属性抽取出来形成一个框架,这个框架既可以适用于北京地区的人口普查,也适用于上海的人口普查,其它边远地区的人口普查也适用。在以人口普查为背景的问题下,我们对人抽象,形成一套适合所有地区人口普查的框架,减少重复工作。
在这里插入图片描述

3.什么是建模

        建模,先来看看书本上是怎么定义建模这个名词的。建模是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。凡是用模型描述系统的因果关系或相互关系的过程都属于建模。建模是把现实中的系统进行模拟或者抽象,通俗来讲,就是把实际的事物用合适的形象表示出来。理解起来还是有点难,我们可以简单的概括一下,建模是一种过程,它可以将复杂的事物简化为可理解的有限图示。
        从上面的描述中,我们可以提取出两个关键词:模型,建模。模型是指为了一定目的,对事物原型的一种抽象,例如航空3D模型是对现实中飞机的一个抽象表达,再比如城市交通模型是对城市交通系统的一个抽象表达。建模,即建立模型,我们对模型有一个输入,那么会得到一个输出,这样一个过程称为建模,用模型来描述相互关系的过程。例如,我们举一个例子,人口增长预测数学模型,这个模型是用来预测人口增长的,我输入第n年,会得到一个人口的增长数据表,这个过程就是建模。
在这里插入图片描述

4.建什么模

        模型有很多种,不仅仅是我们上面举例的数学模型,建模有很多种:

  • 数学建模。用计算得到的结果来解释实际的问题。
  • 数据建模。是数据特征的抽象,是数据库管理的教学形式框架。
  • UML建模。用于面向对象设计的建模语言规格说明,是表示标准。
  • 可视化建模。用图形化的方式描述所开发系统的过程。
  • 3D建模。通过虚拟三维空间来构建出三位数据的模型。
  • 业务建模。以软件模型方式描述企业管理和业务所涉及的对象和要素、以及它们的属性、行为和彼此关系,业务建模强调以体系的方式。

三.面向计算机的问题分析

        生活中,常常会遇到这样的问题,找不着手机了。这时候,用人的思维去找手机,你肯定会去熟悉的位置找,比如去房间里的书桌上找。你的印象中有一个大致的位置,然后根据这个位置去房间里找。但是,如果让计算机来找手机,情况就不一样了。它会不厌其烦地把整个房间遍历一遍,就是全部扫一遍,那可能会找不着吗?只要手机在房间里,那肯定能找着。
在这里插入图片描述
        可以看到,计算机的思维和人不同。在面向计算机的问题分析时,我们关心的是,人需要怎么做,计算机才能做什么。计算机在解决一些问题的时候,人需要做的是问题描述、抽象、建模,计算机才能做求解结果。我们总结一下,面向计算机的问题求解,人需要首先完成问题描述、抽象、建模,并且做好精确的算法设计、正确的程序编制,计算机才能做好计算。
        面向计算机的问题分析,是人和计算机完成各自的事情。计算机是实现人的思维的,但是因为人和计算机各自的能力与优势不同,使得求解问题的方法有很大的不同。

四.总结

1.问题描述、抽象与建模
   主要内容:
                (1).什么是抽象?抽象是对具体问题的简要表达。
                (2).为什么要抽象?抽象可以把事物的共同特征提取出来,形成一套适合所有实例的框架。
                (3).什么是建模?建模是一种问题求解的过程,用模型来描述相互关系的过程就是建模。
                (4).建什么模?建模有很多种,如数学建模,数据建模,3D建模等。
2.面向计算机的问题分析
   主要内容:
                (1).计算机的思维和人不同。
                (2).面向计算机的问题求解,人需要完成问题描述、抽象、建模,并且做好算法、程序,计算机才能做好计算。

相关文章:

  • SearchWP WordPress高级网站内容搜索插件(包含所有专业扩展)
  • 2023年全球运维大会(GOPS深圳站)-核心PPT资料下载
  • flutter学习-day13-功能型组件和状态共享
  • ImageNet 数据集介绍
  • LLM Agent发展演进历史(观看metagpt视频笔记)
  • python读取excel数据 附实战代码
  • 剑指offer 背包问题求具体方案
  • python接口自动化测试(单元测试方法)
  • 【UE5.1 MetaHuman】使用mixamo_converter把Mixamo的动画重定向给MetaHuman使用
  • Android多进程和跨进程通讯方式
  • 频谱论文:面向频谱地图构建的频谱态势生成技术研究
  • oracle aq java jms使用(数据类型为XMLTYPE)
  • 使用AppleScript自动滚动预览
  • 关于“Python”的核心知识点整理大全26
  • 【数据结构】八大排序之直接插入排序算法
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Android 架构优化~MVP 架构改造
  • DOM的那些事
  • Java的Interrupt与线程中断
  • js面向对象
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Rancher-k8s加速安装文档
  • session共享问题解决方案
  • 分享几个不错的工具
  • 坑!为什么View.startAnimation不起作用?
  • 区块链共识机制优缺点对比都是什么
  • 如何实现 font-size 的响应式
  • 一个完整Java Web项目背后的密码
  • 阿里云重庆大学大数据训练营落地分享
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​Spring Boot 分片上传文件
  • ​水经微图Web1.5.0版即将上线
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • (LeetCode 49)Anagrams
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (转)setTimeout 和 setInterval 的区别
  • (转)程序员技术练级攻略
  • ***利用Ms05002溢出找“肉鸡
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET Micro Framework初体验(二)
  • .net 托管代码与非托管代码
  • .net 中viewstate的原理和使用
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET中GET与SET的用法
  • /etc/shadow字段详解
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @DataRedisTest测试redis从未如此丝滑