📜  DAA算法需求

📅  最后修改于: 2020-12-10 03:42:41             🧑  作者: Mango

算法需求

1.了解问题的基本概念。

2.寻找解决问题的方法。

3.提高现有技术的效率。

4.了解设计算法的基本原理。

5.比较该算法相对于其他技术的性能。

6.这是最好的描述方法,无需描述实现细节。

7.该算法向设计人员清楚说明了需求和目标。

8.好的设计可以产生好的解决方案。

9.了解问题的流程。

10.在所有情况下(最佳情况,最坏情况,平均情况)测量方法的行为(或性能)

11.借助算法,我们还可以识别算法所需的资源(内存,输入-输出)周期。

12.在算法的帮助下,我们将艺术转化为科学。

13.了解设计原理。

14.我们可以测量和分析涉及输入大小的问题的复杂性(时间和空间),而无需执行和运行它;它将降低设计成本。

算法分析

该分析是估计算法效率的过程。我们可以基于两个基本参数来分析算法:

  • 空间复杂度:空间复杂度可以理解为算法运行完成所需的空间量。
  • 时间复杂度:时间复杂度是输入大小n的函数, n是指算法完成运行所需的时间量。

让我们通过一个例子来理解它。

假设计算机科学中有一个要解决的问题,通常,我们通过编写程序来解决程序。如果要使用某种编程语言(例如C)编写程序,则在编写程序之前,有必要用非正式语言编写蓝图。

换句话说,您应该使用类似于英语的语言描述要包含在代码中的内容,以使其在实现之前更易读和易懂,这只是算法的概念。

通常,如果存在问题P1 ,则它可能有许多解决方案,因此这些解决方案中的每一个都被视为一种算法。因此,可能有许多算法,例如A 1 ,A 2 ,A 3 ,…, A n

在将任何算法实现为程序之前,最好先从时间和内存上找出这些算法中哪一个是好的。

最好根据时间来分析每种算法,与哪种算法可以更快地执行以及与之相对应的内存所占用的内存更少有关。

因此,“算法设计与分析”讨论了如何设计各种算法以及如何对其进行分析。经过设计和分析之后,选择需要最少时间和最少内存的最佳算法,然后将其实现为C中的程序。

在本课程中,我们将更多地关注时间而不是空间,因为从硬件的角度来讲,时间是一个更具限制性的参数。携带计算机并更改其速度并不容易。因此,如果我们在特定平台上运行算法,那么我们或多或少会陷入平台在速度方面给我们带来的性能。

但是,另一方面,内存相对更灵活。我们只需添加存储卡即可根据需要增加内存。因此,我们将专注于时间而不是空间。

运行时间是根据特定的硬件来衡量的,而不是可靠的衡量标准。当我们在不同的计算机上运行相同的算法或使用不同的编程语言时,我们将遇到相同的算法花费不同的时间的情况。

通常,我们进行三种类型的分析,如下所示:

  • 最坏情况下的时间复杂度:对于“ n ”个输入大小,最坏情况下的时间复杂度可以定义为算法完成其执行所需的最大时间。因此,它不过是由对输入大小为n的实例执行的最大步骤数定义的函数。
  • 平均用例时间复杂度:对于“ n ”个输入大小,平均用例时间复杂度可以定义为算法完成其执行所需的平均时间。因此,它不过是由对输入大小为n的实例执行的平均步骤数所定义的函数。
  • 最佳情况下的时间复杂度:对于“ n ”个输入大小,最佳情况下的时间复杂度可以定义为算法完成其执行所需的最短时间。因此,它不过是由对输入大小为n的实例执行的最小步骤数定义的函数。