人工智能培训课程中会讲到许多算法,那么究竟什么是算法?

算法(algorithm)是解决特定问题的步骤描述,通俗地讲,算法就是描述解决问题步骤的方法。例如,新学期开学,从家到学校的交通方式这个问题就有很多解决方案:有的学生乘坐火车,有的学生乘坐汽车,有的学生乘坐飞机,在本市的可能会自己开车或乘坐公共汽车,离学校近的可能会步行来学校。这里每一种方案就是一种算法,这么多解决方法就是这么多种算法。

在计算机中,算法也是对某一个问题的求解方法,只是它的表现形式是计算机指令的有序序列,执行这些指令就能解决特定的问题。例如,在高级程序设计语言(如C语言)中,常用的排序算法如选择排序、冒泡排序等,都是用计算机指令编写算法,来解决排序问题。

在程序设计中,算法有3种较为常用的表示方法:伪代码法、N-S结构化流程图和流程图法,用得最多的是流程图法,接下来就简单地学习算法的流程图法。流程图是描述问题处理步骤的一种常用图形工具,它由一些图框和流程线组成。使用流程图描述问题的处理步骤,形象观,便于阅读。画流程图时必须按照功能选用相应的流程图符号,常用的流程图符号如图所示。

图1-12所示的流程图符号中列举了4个图框、1个流程线和1个连接点,具体说明如下:

·起止框用于表示流程的开始或结束。

·输入输出框用平行四边形表示,在平行四边形内可以写明输入或输出的内容。

·判断框用菱形表示,它的作用是对条件进行判断,根据条件是否成立来决定如何执行后续的操作。

·处理框用矩形表示,它代表程序中的处理功能,如算术运算和赋值等。

·流程线用单向箭线或直线表示,可以连接不同位置的图框。流程线的标准流向是从左到右和从上到下,可用直线表示,非标准流向的流程线应使用箭头指示方向。

·连接点用圆形表示,用于流程图的延续。通过上面的讲解,读者对流程图符号有了简单的认识。下面以一个数组选择排序算法

的流程图为例,学习简单的流程图,如图所示。

假设一个数组要从小到大排序,结合流程图来分析选择排序的过程:

第一步,在数组中选择出最小的元素,将它与0角标元素交换,即放在开头第1位。

第二步,除0角标元素外,在剩下的待排序元素中选择出最小的元素,将它与1角标元素交换,即放在第2位。

第三步,依次类推,直到完成最后两个元素的排序交换,就完成了升序排列。这样根据流程图来编写算法的指令代码,就会变得清晰简单。读者在以后设计算法时,最好先根据设计思路出算法的流程图,其次分析其可行性,最后再完成代码。

算法的特性

一个好的算法,尤其是一个成熟的算法,应该具有以下5个特性:

(1)确定性。算法的每一步都有确定的含义,不会出现二义性。即在相同条件下,只有一条执行路径,相同的输入只会产生相同的输出结果。

(2)可行性。算法的每一步都是可执行的,通过执行有限次操作来完成其功能。

(3)有穷性。一个算法必须在执行有穷步骤之后结束,且每一步都可在有穷时间内完成。这里的有穷概念不是数学意义上的,而是指在实际应用当中可以接受的、合理的时间和步骤。

(4)高效率与低存储。算法的效率通常指的是算法的执行时间,对于同一个问题的多种算法,执行时间短的其效率就高。存储量指的是算法在执行过程中所需的最大存储空间,包括所用到的内存及外存。设计算法时应考虑到执行效率和存储需求,设计出一个“性价比”较高的算法。

要设计出一个好的算法,就要综合考虑其正确性、可读性、健壮性,还要考虑其执行效率和存储量需求。

什么是算法?算法有哪些特性?相关推荐

  1. 什么是算法算法有些什么特性_反正是什么算法

    什么是算法算法有些什么特性 What you need to know about the simple concept that powers the modern world. 您需要了解为现代世 ...

  2. 八大排序算法的性质及特性比较

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 总结图 一.排序算法的时空复杂度.稳定性 1.时间复杂度 2.空间复杂度 3.稳定性 二.排序趟数是否与序列的原始状态 ...

  3. 回溯算法——算法总结(四)

    回溯算法也叫试探法,它是一种系统地搜索问题的解的方法.回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试.用回溯算法解决这个问题的一般步骤为: 1.定义一个解空间.它包括问题 ...

  4. 一致性哈希算法——算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据

    一致性哈希算法--算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据 参考文章: (1)一致性哈希算法--算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据 (2)http ...

  5. 【机器学习】通俗的k-近邻算法算法解析和应用

    [机器学习]通俗的k-近邻算法算法解析和应用 文章目录 1 概述 2 KNN 场景 3 KNN 原理 4 实例:改进约会网站的配对效果 5 算法总结 6 KNN算法的优缺点 7 图像分类应用 1 概述 ...

  6. ML之DT(树模型):DT(树模型算法)算法的简介、代码定义、案例应用之详细攻略

    ML之DT(树模型):DT(树模型算法)算法的简介.代码定义.案例应用之详细攻略 目录 树模型 1.A brief history of forests 2.树模型的复杂度 3.树模型的目标函数

  7. 数据结构与算法 -- 算法

    一.算法的基本概念 算法是指对解题方案准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制. 算法中的指令描述的是一个计算过程,在它的作用下,系统从初始状态和初始 ...

  8. 层次聚类算法 算法_聚类算法简介

    层次聚类算法 算法 Take a look at the image below. It's a collection of bugs and creepy-crawlies of different ...

  9. 初识推荐算法---算法背景、算法概念介绍、推荐信息选取、常用推荐算法简介

    初识推荐算法 算法背景 推荐系统的基本概念 哪些信息可以用于推荐 常用的推荐系统算法 算法背景 推荐系统是根据用户的浏览习惯,确定用户的兴趣,通过发掘用户的行为,将合适的信息推荐给用户,满足用户的个性 ...

  10. 【5】数据结构与算法--- 算法 进阶

    第 4 章 算法 进阶 4.1 排序 4.1.1 排序算法简介 排序:把无序的队列变成有序的队列 排序算法:排序算法是一种将一串无规律数据依照特定顺序进行排列的一种方法或思路. 排序算法的稳定性:队列 ...

最新文章

  1. swift_020(Swift 的属性)
  2. RTSP学习笔记(2)live555
  3. SpringBoot集成多数据源
  4. [公告]博客园恢复正常运行
  5. hive 集成hbase 笔记
  6. spark.mllib:bagging方法
  7. Ubuntu彻底删除MySQL重装MySQL
  8. python语言单行注释符_云计算开发学习笔记:Python3注释
  9. 20.Java集合框架(四)
  10. 3dmax9.0 简体中文正式版(官方非汉化版本)下载网址
  11. ruby基础-安装和命令行
  12. 从零到百亿互联网金融架构发展史
  13. 怎样理解OOP?OOP又是什么?
  14. js-通过audioContext实现3D音效
  15. Kyligence 完成 2500 万美元 C 轮融资,Coatue 领投
  16. mysql:查询排名
  17. DPU网络开发SDK—DPDK(六)
  18. 文件服务器+缓存,文件服务器缓存
  19. mysql substr无效_mysql substr()函数用法
  20. 如何更新Ubuntu软件源

热门文章

  1. OLW多级标题测试-1
  2. hdu 5546 Ancient Go(★)
  3. 花样流水灯1:查表显示LED灯(原理图+程序+仿真)
  4. TAF CHAIN和以太坊2.0谁将开启新一轮牛市
  5. Allan方差定义与计算方法简介
  6. shell中spawn什么意思_linux expect spawn的用法
  7. 比较可靠的两个NTP 服务器地址
  8. 深入理解C++中五种强制类型转换的使用场景
  9. 开源开放通用赋能 英特尔助力2020 EdgeX中国挑战赛创新方案落地
  10. 二值化函数cvThreshold()参数CV_THRESH_OTSU的疑惑【转】