我有一个节点列表(字符串,值)。我可以在次线性时间扫描它。此外,我需要处理它,以便字符串上的每个搜索查询可以在次线性时间内完成。 如果次线性意味着小于O(n)或者它可以是O(n),那么任何人都可以更具体吗?我正在使用CPP
答案 0 :(得分:1)
扫描通常意味着“读取每个项目(在某些情况下,通常是预定义的顺序)”。如果您读取每个项目,则至少执行线性数量的读取下一项操作。我们假设操作需要一些时间,通常是常量,有时等于或大于某个最小时间,因此执行扫描需要一些时间,至少与处理的项目数量(列表长度)成比例。
所以答案是否,你不能在次线性时间内做到这一点 - 除非你的机器可以动态地复制 并将数据分成几部分由每个后代机器处理。即使这样,尽管有数据大小,拆分必须在恒定的时间内进行,否则拆分开销很容易消耗掉所有的费用。