美文网首页
计算机问题求解

计算机问题求解

作者: 瀚苑小黄猫 | 来源:发表于2016-12-30 00:27 被阅读171次

程序开发过程


  • 分析阶段:程序开发的第一步是弄清问题。在软件开发领域,这一工作阶段通常被称为需求分析
  • 设计阶段:问题的严格描述仍然是描述性的,而计算机求解是一个操作过程。在真正编程之前,需要有一个能解决这个问题的计算过程模型。这种模型包括两个方面,一方面需要表示计算中处理的数据,另一方面必须有求解问题的计算方法,即通常所说的算法
  • 编码阶段:有了解决问题的抽象计算模型,下一步工作就是用某种适当的编程语言实现这个模型,做出一个可能由计算机执行的实际计算模型,也就是一个程序
  • 检查测试阶段:复杂的程序通常不可能一蹴而就,写出的代码中可能有各种错误,最简单的是语法类型错误。经过反复检查修改,最后得到一个可以运行的程序。
  • 测试/调试阶段:程序可以运行并不代表它就是所需的那个程序,还需要通过尝试性的运行确定其功能是否满足需要,这一工作阶段称为测试调试。测试/调试过程中可能会出现运行时错误逻辑错误,需要修正,直至得到令人满意的程序。
  • 以上即一个从问题出发,最终得到可用程序的开发过程。
  • 相对而言,设计阶段的工作更困难一些。编码阶段的工作相对容易一些。

一个简单例子


虽然一个问题的说明性描述与其操作性描述表达的是同一个问题,但它们却非常不同。前者说明了需要解决的问题是什么,针对什么样的问题,期望什么样的解;而后者说明通过怎样的操作过程可以得到所要的解。

如:求出任一个非负实数的平方根(牛顿迭代法)。

算法描述


  1. 对给定正实数 x 和允许误差 e ,令变量 y 取任意正实数值,如令 y=x
  2. 如果 y*yx 足够接近,即 |y*y-x| < e ,计算结束并把 y 作为结果;
  3. z=(y+x/y)/2 ;
  4. z 作为 y 的新值,回到步骤 1 。

Python 程序实现


def sqrt(x):
    y = 1.0
    while abs(y * y - x) > 1e-6:
        y = (y + x/y) / 2
    return y

其中,变量 y 初值为 1.0,允许误差为 10-6。通过各种数值测试,可以看到这个函数确实能完成所需要的工作。

总结


在上述例子中,最不清晰的是从平方根的定义到求平方根的算法。然而 ......

算法设计是一种创造性工作,依赖于对问题的认识和相关领域的知识,没有放之四海而皆准的路径可循。

摘自北大裘宗燕老师《数据结构与算法》

相关文章

  • 可计算问题笔记

    可计算问题理论笔记 计算机可以求解哪些问题? 求解计算问题的思路 衡量求解计算问题的算法优劣--复杂度分析 复杂度...

  • 计算机问题求解

    程序开发过程 分析阶段:程序开发的第一步是弄清问题。在软件开发领域,这一工作阶段通常被称为需求分析。 设计阶段:问...

  • 关于分治法

    任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越...

  • 计算机科学基础课程

    基础课程 大学计算机——计算思维的视角(山东大学 )简介: 简述计算机发展 , 软硬件系统 , 计算机问题求解与算...

  • 数据结构和算法 -- 1.概论

    1.1问题求解 编写计算机程序的目的 解决实际的应用问题 问题抽象 分析和抽象任务需求,建立问题模型 数据抽象 确...

  • 《算法与数据结构 C语言描述》第一章 绪论

    1.1 从问题到程序 用计算机实现问题求解,实质上就是在计算机中建立一个解决问题的模型。可以有不同的抽象形式 ——...

  • 顺序栈的应用四:求解迷宫路径

    迷宫求解 求迷宫中从入口到出口的所有路径是一个典型的程序设计问题。由于计算机解迷宫时,通常用的是”穷举求解“的方法...

  • 基于计算机的问题求解哲学

    本文脱胎于北理的大学计算机网课。是本人闲暇之余自学整理,中间夹杂着自己的想法,因此,若笔者有理解上的错误,还望阁下...

  • 计算机应用技术

    计算机及应用概述 计算机的发展历史 计算:映射和基于规则的符号串的变换过程算法:求解某类问题的通用法则或方法,即符...

  • 孩子学编程,培养的应该是计算思维

    计算思维 计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列...

网友评论

      本文标题:计算机问题求解

      本文链接:https://www.haomeiwen.com/subject/abbpvttx.html