Re: [问题] 在O(|V|)的时间内找到non-cut点

楼主: fenzhang (分帐)   2013-08-03 17:20:51
我的意思是你所说的第一点
题目叫我们O(V)的时间找NON-CUT点
没有要我们考虑输入时间吧
你可以说O(V)的算法不存在所以题目叙述错误
但不能说输入要O(V+E)就是题目不够严谨
就我举的例子来说,没有错,输入完整张图的确是要O(V+E)
但是如果每加一个点就询问一次而且真的有O(V)的算法可以回答这个问题
这样总复杂度就是O(V^2+E)
我举这个例子只是想反驳你"输入时间比算法时间长等同于题目不够严谨"这个叙述
给你一张无向图,请设计一个O(V)的算法找一个NON-CUT点
给你一个有序数列,请设计一个O(lgN)的算法找序列中有多少数小于K
我个人的想法是
如果看到下面那题应该不能说输入序列就要O(N)所以题目不严谨
作者: DJWS (...)   2013-08-03 19:48:00
了解了! 多谢你的解释如果有序数列储存在stack里面,它会有O(lgN)的算法吗?我想说的是这样:如果时间复杂度要低于输入大小,那么就要对输入格式进行假设。不过这道题目并没有提到这件事。想要深入了解的板友,可以搜寻一下sub-linear time algorithm
作者: magrady (元元)   2013-08-06 20:42:00
很有道理, 时间复杂度要低于输入大小的话, 通常就没有办法随心所欲的转换资料成为方便处里的资料结构所以我觉得明确的定义输入后使用的资料是必须的
作者: bleed1979 (十三)   2013-08-06 20:51:00
一般算法课本的虚拟码都不太管输入的。传入一个array就假设里面已经有值。

Links booklink

Contact Us: admin [ a t ] ucptt.com