2016 - 2024

感恩一路有你

十大经典算法 什么是算法设计?

浏览量:1434 时间:2021-04-04 03:56:55 作者:admin

什么是算法设计?

算法设计比较困难,编码只基于算法的伪码。需要一些编写代码的基本知识。算法设计更注重思想。基本上,算法是设计好的,所以编写程序并不困难。算法设计的代价远高于编码。高中生可以编码。在印度,程序员基本上都是高中生。而中国的计算机专业本科生基本上都成了程序员。

影响算法设计的因素?

影响预测算法性能的主要因素有三个:问题的复杂性、模型的复杂性和可用的训练数据量。

一个复杂的问题同时有大量的训练数据,一个复杂的模型可以得到更准确的结果。

一个复杂的问题没有足够的数据,线性模型可能是最好的结果。

一个简单的问题可以通过线性模型来解决。

方法:复杂模型用于解决复杂问题,简单模型用于解决简单问题,同时必须考虑数据规模。列多于行或相对简单问题的数据集倾向于使用线性模型;行多于列的复杂问题倾向于使用非线性模型(积分法)。

算法设计的步骤?

1. 明确主题的含义,列出主题的输入、输出和约束条件

另一个主题是这样的:“有一个mxn矩阵,每行从左到右递增,每列从上到下递增。请实现一个函数来查找矩阵中的元素elem,如果找到了元素,请返回元素的位置我刚才说的行和列是按升序排列的。我在草稿纸上画了一个3x4矩阵,里面的元素是1~12,所以我想当然地认为矩阵的左上角是最小的元素,右下角是最大的元素。所以整个话题的思维方向是错误的。

2. 想一想如何使算法的时间复杂度尽可能小

继续以上述主题为例。有以下几种算法:

A.遍历整个矩阵进行查找,则复杂度为O(m*n);

B.由于每行都是有序的,因此可以对每行进行二进制搜索,因此复杂度为O(m*logn)。但这只使用了row order的属性。

c.最好的算法是从矩阵的左下角开始,比较左下角元素的大小(假设x)和元素的大小。如果elem大于x,那么x所在列中的元素将被排除,因为x是列中最大的元素。如果elem大于x,那么x所在列中的元素将被排除在外,因为x是此行中最小的元素,小于x,它必须小于x右边的元素。每次迭代都会将矩阵的大小减少一行或一列。复杂度为O(max(m,n))。

我们可以从复杂度高的实现方法开始,然后考虑如何利用主题的具体条件来降低复杂度。

3. 写伪代码或代码

现在有很多种算法,比如工程应用算法,比如排序、红黑树等,可以从经典书籍或大学课本上学习。但例如,人工智能等一些学习算法对高等数学、建模和分类都有很高的要求。没有一个算法学习是可能的。

十大经典算法 算法设计的四个步骤 算法设计怎么写

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。