我是新开发者。请帮助我理解算法操作的 a posteriori 和先验分析。我用Google搜索了,但我没有得到任何正确的答案。
答案 0 :(得分:4)
Apriori算法分析:它意味着我们在特定系统上运行之前对算法进行分析(空间和时间) - 也就是说,我们通过仅查看算法而不是运行算法来确定算法的时间和空间复杂度特定系统(使用不同的处理器和编译器)。
算法的Apostiari分析:它意味着我们只有在系统上运行算法后才对算法进行分析。它直接依赖于系统和系统之间的变化。
在行业中,我们无法进行Apostiari分析,因为软件通常是为匿名用户制作的,该用户在系统上运行它(在奔腾3或奔腾4等处理器中)来自业界人士。
在Apriory中,我们使用渐近符号来确定时间和空间的复杂性,因为它们在计算机之间变化,但渐近它们是相同的。
答案 1 :(得分:2)
简而言之
在小修分析中,我们获得了一个限制算法的函数 计算时间。
在后验分析中,我们收集实际统计数据 关于时间和空间的算法消耗,而它是 执行。
稍长一点:
另一篇文章引文
到目前为止,分析算法的最重要原因是制作 确定它能正确解决你的问题。如果我们的算法没有 工作,没有别的事情。所以我们必须分析它以证明它 将始终按预期工作。
我们还必须考虑算法的效率。如果它解决了我们的问题 问题,但在O(nn)时间(或空间!)中这样做,那么我们应该 可能会看一下重新设计。
答案 2 :(得分:0)
从section 12.7 of Manage Software Testing (by Peter Farrell-Vinay)开始,先验分析是使用某种理论模型(如有限状态机)定义函数的阶段。然后,该模型用于确定该函数的各种特征(如时间和空间使用)。
在 a posteriori 阶段,收集函数特征(如时间和空间使用)的证据,并与先验分析中计算的那些进行比较。
答案 3 :(得分:0)
在后验分析中,我们在系统上运行算法来检查其原始静力学,以便我们可以计算其时间和空间复杂度。但是因为它从一个系统变为另一个系统所以它不那么有效。我们根据特定的系统要求计算其时间复杂度。
在先前的分析中,我们只看到算法,并用渐近符号进行分析。它不会在渐近符号方面改变系统。
答案 4 :(得分:0)
先验分析-这全是关于算法的理论分析。通过假设所有其他因素(例如处理器速度)是恒定的,并且对实现没有影响,来衡量算法的效率。
后验分析-这更多是一种算法的经验分析。所选算法使用编程语言实现,然后在目标计算机上执行。在此分析中,收集了诸如运行时间和所需空间等实际统计信息。
答案 5 :(得分:-2)
后验分析依赖于硬件算法和编程语言算法,它给出了确切的答案
Priori分析与硬件无关,它取决于没有执行语句的次数