首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个算法的实验分析--如何证明图是O(nlogn)?

一个算法的实验分析--如何证明图是O(nlogn)?
EN

Stack Overflow用户
提问于 2021-02-23 22:54:10
回答 1查看 68关注 0票数 0

这个问题可能很愚蠢,但我已经尝试了几个小时,但我仍然找不到任何关于它的东西。也许我只是太迷茫了。

所以基本上,我是通过渐近和实验分析来分析算法的。渐近分析进行得很好,我得出结论,我的算法是O(nlogn)。问题在于实验分析。首先,我做了一些测试,以获得每次输入所需的时间。例如:

N= 1,t=0|n= 2,t=2|n= 4,t=8|n= 8,t= 24 |n= 16,t= 64 |n= 32,t= 160 (...)

如果我用这个例子做这个图,我可以看到它是一个O( n )/linearithmetic图,但是我如何证明它呢?我需要计算增长的顺序吗?如果是这样,我该怎么做呢?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-23 23:05:13

根据输入大小绘制时间。

曲线将y=A*n*log(n) + B曲线拟合到该曲线,通过创建该曲线与实验绘图之间关系的最小均方拟合来求解A和B。

对表示O(n)的线性曲线(直线)和O(n^2)执行相同的操作。结果表明,与O(n*log(n))曲线相比,其它曲线的拟合误差更大。

如果一条曲线的拟合误差较低,则您收集的数据支持该曲线以大O表示法增长。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66335485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档