Re: [讨论] 技术总监有可能不懂BFS吗??

楼主: NewSpec (新规格)   2023-04-24 23:29:16
看到这个可以聊一下big O notation,很多人在面试的时候可能会回答/或听到面试官说“big O notation是一个评估算法效能的方式”
…..其实并不是的哦~
big O notation在数学上是用来描述一个函数的参数在趋近于特定值或无限时的行为表达方式。在computer science领域则是在看“当input size趋于无限时,函数行为为何”的“分类方式”,和效能没有直接关系。
举个例子,例如今天有解同一个问题的两个算法,一个分析出来其时间复杂度为10^100*x,另一个分析出来时间复杂度是10^(-100)*x^1.1。则前者的big O notation为O(x),后者为O(x^1.1),明显前者更加,但在实务上,当然大家应该会选择后者的算法。因此big O notation基本上是一个在分析层面的工具更多一些,在效能评比上可以当作理论分析用,但不是全部,实际开发时还是要透过benchmark才能得到最正确的结论。
因此,不管你是面试官或面试者,只要你听到有人说big O notation是能拿评估算法效能的,勇敢呛回去吧XDDDD
※ 引述《LinuxKernel (Linus Torvalds)》之铭言:
: 刚看到这个 YT 影片,不喜勿点
: https://www.youtube.com/watch?v=BkszA-MvjXA
: 在地上滚的工程师 aka Nic aka 工程技术总监
: 合拍了一个 coding interview 影片
: 一开始还想说应该是反串吧
: 但看到最后怎么好像又不是??
: 软件业的工程技术总监有可能分不清楚 BFS vs. DFS 或是 stack vs. queue 吗??
作者: qwe70302 (为何一到90分就会输)   2023-04-24 23:36:00
n要够大比级数才有意义,不然常数的影响也要考虑进去
作者: MyNion (Nion Lee)   2023-04-24 23:43:00
不同的scale下效能不一定一样,实际跑Benchmark较为稳当
作者: Hsins (翔)   2023-04-25 00:06:00
呛回去不知道会不会适得其反?他是用来评估算法用来解决大型问题的可能性,也可以用来评估当今天计算资源改善时,能够获得多少价值的模型;用你的说法呛回去,对方会觉得你导果为因吧?就是因为今天一段程式,面对不同规模的资料量,以及跑在不同机器上所需要的处理时间不同,才需要用他来分析呀…你没看懂我说的吧,我没说范例那边有问题,除此之外还有更多可以纳入讨论的东西,如常数项、被忽略掉的内循环,还有
作者: WashFreeID (免洗)   2023-04-25 00:31:00
作者: Hsins (翔)   2023-04-25 00:32:00
资料本身状态等;你可以说他不代表实际执行的状况优劣,但他的确是用来评估跟分析算法性能的数学模型...https://i.imgur.com/fd0Y5Hc.png建议你勇敢寄信去呛 Steven Skiena
作者: happy8649 (Hao)   2023-04-25 00:58:00
它确实可以做基础效能评估啊,太钻牛角尖只会适得其反
作者: j0958322080 (Tidus)   2023-04-25 01:16:00
就一句 scale 的问题还能说这么长一篇也不简单就是了
楼主: NewSpec (新规格)   2023-04-25 01:25:00
唉 可以吧,我的错,就拿big O去评估效能呗
作者: Hsins (翔)   2023-04-25 01:30:00
我上面的叙述,第四第五则推文是 Robert Sedgewick 书里写的,上面截图是 The Alogrithm Design Manual 的内容,文章内容部分没错呀,但你说要呛面试官的那条叙述是对的吧https://i.imgur.com/8P8Z8sS.png教科书中都有提到这件事,而 Anany Levitin 有说在多数状况下,被乘的常数影响没有这么显著。
作者: chchan1111 (123)   2023-04-25 01:52:00
硬要琢磨理论感觉有点像在强词夺理 实务上也不太会有常数项差这么多的算法吧

Links booklink

Contact Us: admin [ a t ] ucptt.com