我是一名新开发人员。请帮助我理解什么是算法操作的后验和先验分析。我用谷歌搜索了它,但我没有得到任何正确的答案。
6 回答
算法的先验分析:这意味着我们在特定系统上运行算法之前对其进行分析(空间和时间) - 也就是说,我们仅通过查看算法而不是在特定系统上运行来确定算法的时间和空间复杂度(使用不同的处理器和编译器)。
算法的Apostiari分析:这意味着我们只有在系统上运行后才对算法进行分析。它直接依赖于系统并随系统而变化。
在行业中,我们无法进行 Apostiari 分析,因为软件通常是为匿名用户制作的,该用户在与业内现有系统不同的系统(在 Pentium 3 或 Pentium 4 等处理器中)上运行它。
在 Apriory 中,这就是我们使用渐近符号来确定时间和空间复杂度的原因,因为它们在计算机之间发生变化,但渐近地它们是相同的。
A Priori Analysis - 这都是关于算法的理论分析。通过假设所有其他因素(例如处理器速度)是恒定的并且对实现没有影响来衡量算法的效率。
后验分析 - 这更多是对算法的经验分析。所选算法使用编程语言实现,然后在目标计算机机器上执行。在此分析中,将收集实际统计信息,例如所需的运行时间和空间。
在后验分析中,我们在系统上运行算法以检查其原始静态,以便我们可以计算其时间和空间复杂度。但由于它因系统而异,所以它不是那么有效。我们根据特定的系统要求计算其时间复杂度。
在先前的分析中,我们只看到算法并根据渐近符号对其进行分析。就渐近符号而言,它不会将系统更改为系统。
从管理软件测试(Peter Farrell-Vinay)的第 12.7 节开始,先验分析是使用一些理论模型(如有限状态机)定义函数的阶段。然后使用该模型来确定该功能的各种特征(如时间和空间使用)。
在后验阶段,收集函数特征(如时间和空间使用)的证据,并与先验分析期间计算的证据进行比较。
后验分析依赖于硬件算法和编程语言算法,它给出了准确的答案
先验分析与硬件无关,它取决于执行语句的次数