正确性:算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到问题的正确答案。
但是算法的“正确”通常在用法上有很大的差别,大体分为以下四个层次。
1.算法程序没有语法错误。
2.算法程序对于合法的输入数据能够产生满足要求的输出结果。
3.算法程序对于非法的输入数据能够得出满足规格说明的结果。
4.算法程序对于精心选择的,甚至刁难的测试数据都有满足要求的输出结果。
对于这四层含义,层次1要求最低,但是仅仅没有语法错误实在谈不上是好算法。这就如同仅仅解决温饱,不能算是生活幸福一样。而层次4是最困难的,我们几乎不可能逐一验证所有的输入都得到正确的结果。
因此算法的正确性在大部分情况下都不可能用程序来证明,而是用数学方法证明的。证明一个复杂算法在所有层次上都是正确的,代价非常昂贵。所以一般情况下,我们把层次3作为一个算法是否正确的标准。
好算法还有什么特征呢?
很好,我听到了说算法容易理解。没错,就是它。
附:
推荐新手入门必读《dahuashujujiegou》这本书,精心搜罗了PDF、DOCX和MOBI三种格式,需用自取。
PDF格式的下载链接:
链接:https://pan.baidu.com/s/1-lO-y3hQSU4jjgGSzkevKA
提取码:vnc7
DOCX格式的下载链接:
链接:https://pan.baidu.com/s/1ZsgP63pI7VmV1EMgaHjYEg
提取码:qn10
MOBI格式的下载链接:
链接: https://pan.baidu.com/s/1TBOQLBwzIO_x3b2jcWe6BQ
提取码:h7ci