作者:starfish starfish@vip.sina.com
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。

一个算法应该具有以下五个重要的特征:

有穷性: 一个算法必须保证执行有限步之后结束;
确切性: 算法的每一步骤必须有确切的定义;
输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件;
输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
 

Did you know Algorithm 一词的由来

Algorithm(算法)一词本身就十分有趣。初看起来,这个词好像是某人打算要写“Logarithm”(对数)一词但却把头四个字母写的前后颠倒了。这个词一直到1957年之前在Webster's New World Dictionary(《韦氏新世界词典》)中还未出现,我们只能找到带有它的古代涵义的较老形式的“Algorism”(算术),指的是用阿拉伯数字进行算术运算的过程。在中世纪时,珠算家用算盘进行计算,而算术家用算术进行计算。中世纪之后,对这个词的起源已经拿不准了,早期的语言学家试图推断它的来历,认为它是从把algiros(费力的)+arithmos(数字)组合起来派生而成的,但另一些人则不同意这种说法,认为这个词是从“喀斯迪尔国王Algor”派生而来的。最后,数学史学家发现了algorism(算术)一词的真实起源:它来源于著名的Persian Textbook(《波斯教科书》)的作者的名字Abu Ja'far Mohammed ibn M?sa al-Khowarizm (约公元前825年)——从字面上看,这个名字的意思是“Ja'far 的父亲,Mohammed 和 M?sa 的儿子,Khowarizm 的本地人”。Khowarizm 是前苏联XИBA(基发) 的小城镇 。Al-Khowarizm 写了著名的书Kitab al jabr w'al-muqabala (《复原和化简的规则》);另一个词,“algebra”(代数),是从他的书的标题引出来的,尽管这本书实际上根本不是讲代数的。

逐渐地,“algorism”的形式和意义就变得面目全非了。如牛津英语字典所说明的,这个词是由于同arithmetic(算术)相混淆而形成的错拼词。由algorism又变成algorithm。一本早期的德文数学词典 Vollstandiges Mathematisches Lexicon (《数学大全辞典》) ,给出了Algorithmus (算法)一词的如下定义:“在这个名称之下,组合了四种类型的算术计算的概念,即加法、乘法、减法、除法”。拉顶短语algorithmus infinitesimalis (无限小方法) ,在当时就用来表示Leibnitz(莱布尼兹)所发明的以无限小量进行计算的微积分方法。

1950年左右,algorithm一词经常地同欧几里德算法(Euclid's algorithm)联系在一起。这个算法就是在欧几里德的《几何原本》(Euclid's Elements ,第VII卷,命题i和ii)中所阐述的求两个数的最大公约数的过程(即辗转相除法)。

常用算法

排序
内排序
排序问题的计算复杂性
比较排序算法
冒泡排序
选择排序
插入排序
快序排序
合并排序
Shell排序
堆排序
线性时间排序算法
计数排序
基数排序
桶排序
外排序
其他资料
选择
查找
串匹配
有关数论的算法
数论的基本知识
最大公约数
模运算
求解模线性方程
中国余数定理
元素的幂
RSA公开密钥加密系统
素数的测试
整数的因子分解
计算几何学
搜索算法
图论算法
图的遍历
广度优先搜索
深度优先搜索
图的连通性
无圈有向图和拓扑排序
有向图的强连通分支
无向图的割点和桥
最小生成树
Kruskal算法和Prim算法
组合数学算法
最优化问题
近似算法

Algorithm(算法相关推荐

  1. 子图同构问题与Ullmann Algorithm 算法(一)

    目录索引 目录索引 写在前面的话 子图同构定义 子图同构的映射关系 Reference 写在后面的话 写在前面的话 谨以此片献给 my best love, grandpa. 时光匆匆流逝,我们永远无 ...

  2. 《Algorithm算法》笔记:元素排序(2)——希尔排序

    <Algorithm算法>笔记:元素排序(2)--希尔排序 Algorithm算法笔记元素排序2希尔排序 希尔排序思想 为什么是插入排序 h的确定方法 希尔排序的特点 代码 有关排序的介绍 ...

  3. Algorithm:【Algorithm算法进阶之路】之十大经典排序算法

    Algorithm:[Algorithm算法进阶之路]之十大经典排序算法 相关文章 Algorithm:[Algorithm算法进阶之路]之数据结构二十多种算法演示 Algorithm:[Algori ...

  4. Algorithm:【Algorithm算法进阶之路】之算法中的数学编程相关习题(时间速度、进制转换、排列组合、条件概率、斐波那契数列)

    Algorithm:[Algorithm算法进阶之路]之算法中的数学编程相关习题(时间速度.进制转换.排列组合.条件概率.斐波那契数列) 目录 时间速度 排列组合 进制转换 条件概率 斐波那契数列 时 ...

  5. Algorithm:【Algorithm算法进阶之路】之数据结构基础知识

    Algorithm:[Algorithm算法进阶之路]之数据结构基础知识 相关文章 Algorithm:[Algorithm算法进阶之路]之数据结构二十多种算法演示 Algorithm:[Algori ...

  6. Algorithm:【Algorithm算法进阶之路】之数据结构二十多种算法演示

    Algorithm:[Algorithm算法进阶之路]之数据结构二十多种算法演示 目录 一.数据结构算法 1.顺序表 2.链表 3.栈和队列 4.串的模式匹配 5.稀疏矩阵 6.广义表 7.二叉树 8 ...

  7. OpenCV均值漂移meanshift algorithm算法的实例(附完整代码)

    OpenCV均值漂移meanshift algorithm算法的实例 OpenCV均值漂移meanshift algorithm算法的实例 OpenCV均值漂移meanshift algorithm算 ...

  8. OpenCV-细化算法(thinning algorithm)算法详解——提取二值图的骨架

    昨天不是说同学问我怎么绘制出轮廓的中心线.然后我上网查了一下其实这个有专门的算法叫做细化算法.用专业术语去描述绘制出轮廓的中心线叫做(提取图像的骨架).然后这一篇博客呢是我对这个细化算法的解读与实操~ ...

  9. C++ vector类型要点总结(以及各种algorithm算法函数)

    概述 C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中,用容器向量(vector)实现. 容器向量也是一个类模板.vector是C++标准模 ...

最新文章

  1. 2018-3-13 目标改动---智能算法
  2. 如何用 OpenGL 绘制雪花?
  3. mybatis 复习笔记02
  4. 以太坊完整工作原理和运行机制!
  5. Coursera课程Python for everyone:Quiz: Many-to-Many Relationships and Python
  6. OLAP是什么意思?
  7. 经典C语言程序100例之二三
  8. js 数组(Array)
  9. JPBC库只使用椭圆曲线群,不使用双线性性质。找单位元,逆元等
  10. 化工企业数据分析报表系统项目之销售模块分析
  11. 数据科学家成长指南(上)
  12. Unix平台下的常用命令技巧之五 资源与性能
  13. 8.2 知识蒸馏方法概述
  14. 文心一言打开f12后进入空白页面
  15. 《论语》原文及其全文翻译 学而篇1
  16. 安卓Unity3D Camera图像和音频采集推送代码
  17. SOCKS5实现(一)
  18. 曹操梦中杀人应该是可信的
  19. 文章标题 SPOJ - DRUIDEOI : Fata7y Ya Warda!(单调栈)
  20. 谷歌浏览器提示密码泄露弹窗关闭

热门文章

  1. 开机出现“Disk I/O error”的故障解决
  2. HTML Url 编码(Encode 和 Url Decode)
  3. 承包了我今日笑点的AI“文心一言”,被质疑是“套壳”?
  4. 神操作!“AI程序员”走进偶像剧,网友:我服!
  5. Ubuntu安装Matlab其Simulink没有菜单栏的解决方案
  6. fastadmin html模板,使用fastadmin的页面异常模板
  7. Python 自动化办公:Excel 自动绘制图表
  8. LoadRunner之并发用户数与迭代关系---并发数与迭代的区别
  9. 国内可用的css,js,图标字体,等常用前端公共库CDN服务
  10. 华中科技大计算机考研相关信息