10

我是一名新开发人员。请帮助我理解什么是算法操作的后验先验分析。我用谷歌搜索了它,但我没有得到任何正确的答案。

4

6 回答 6

5

算法的先验分析:这意味着我们在特定系统上运行算法之前对其进行分析(空间和时间) - 也就是说,我们仅通过查看算法而不是在特定系统上运行来确定算法的时间和空间复杂度(使用不同的处理器和编译器)。

算法的Apostiari分析:这意味着我们只有在系统上运行后才对算法进行分析。它直接依赖于系统并随系统而变化。

在行业中,我们无法进行 Apostiari 分析,因为软件通常是为匿名用户制作的,该用户在与业内现有系统不同的系统(在 Pentium 3 或 Pentium 4 等处理器中)上运行它。

在 Apriory 中,这就是我们使用渐近符号来确定时间和空间复杂度的原因,因为它们在计算机之间发生变化,但渐近地它们是相同的。

于 2013-06-10T01:44:33.230 回答
2

简而言之

在先验分析中,我们获得了一个限制算法计算时间的函数。

在后验分析中,我们在算法执行时收集有关算法时间和空间消耗的实际统计数据。

这里是书。

有点长:

维基百科定义

Ans另一篇文章引用

到目前为止,分析算法的最重要原因是确保它能够正确解决您的问题。如果我们的算法不起作用,那么其他一切都不重要。所以我们必须对其进行分析,以证明它总是会按预期工作。

我们还必须看看我们算法的效率。如果它解决了我们的问题,但在 O(nn) 时间(或空间!)内解决了问题,那么我们可能应该考虑重新设计。

于 2013-04-17T06:36:19.500 回答
2

A Priori Analysis - 这都是关于算法的理论分析。通过假设所有其他因素(例如处理器速度)是恒定的并且对实现没有影响来衡量算法的效率。

后验分析 - 这更多是对算法的经验分析。所选算法使用编程语言实现,然后在目标计算机机器上执行。在此分析中,将收集实际统计信息,例如所需的运行时间和空间。

于 2018-10-07T15:29:42.050 回答
2

在后验分析中,我们在系统上运行算法以检查其原始静态,以便我们可以计算其时间和空间复杂度。但由于它因系统而异,所以它不是那么有效。我们根据特定的系统要求计算其时间复杂度。

在先前的分析中,我们只看到算法并根据渐近符号对其进行分析。就渐近符号而言,它不会将系统更改为系统。

于 2016-02-24T13:50:01.033 回答
0

管理软件测试(Peter Farrell-Vinay)的第 12.7 节开始先验分析是使用一些理论模型(如有限状态机)定义函数的阶段。然后使用该模型来确定该功能的各种特征(如时间和空间使用)。

后验阶段,收集函数特征(如时间和空间使用)的证据,并与先验分析期间计算的证据进行比较。

于 2013-04-17T06:37:41.510 回答
-2

后验分析依赖于硬件算法和编程语言算法,它给出了准确的答案

先验分析与硬件无关,它取决于执行语句的次数

于 2017-03-06T13:49:18.910 回答