Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 针对相同类型的多个查询的优化算法_Algorithm_Search_Optimization - Fatal编程技术网

Algorithm 针对相同类型的多个查询的优化算法

Algorithm 针对相同类型的多个查询的优化算法,algorithm,search,optimization,Algorithm,Search,Optimization,有一类特殊的算法编码问题要求我们评估多个查询,这些查询可以是两种: 对一系列数据执行搜索 更新给定范围内的数据 我最近研究的一个例子是(虽然不是唯一的一个): 现在,为了优化我的算法,我有一个想法: 我可以使用动态规划来保留特定范围的搜索结果,并根据需要生成其他范围的数据 例如,如果我必须计算从索引4到7的数组中的数字之和,我已经可以将元素之和保持为4,将元素之和保持为7,这很简单,然后我只需要两个+4个元素的差,即O(1)。但这会引发另一个问题:在更新操作期间,我必须更新更新元素之后所有元素的

有一类特殊的算法编码问题要求我们评估多个查询,这些查询可以是两种:

  • 对一系列数据执行搜索
  • 更新给定范围内的数据
  • 我最近研究的一个例子是(虽然不是唯一的一个):

    现在,为了优化我的算法,我有一个想法: 我可以使用动态规划来保留特定范围的搜索结果,并根据需要生成其他范围的数据

    例如,如果我必须计算从索引4到7的数组中的数字之和,我已经可以将元素之和保持为4,将元素之和保持为7,这很简单,然后我只需要两个+4个元素的差,即O(1)。但这会引发另一个问题:在更新操作期间,我必须更新更新元素之后所有元素的存储搜索数据。这似乎效率低下,尽管我没有实际尝试过

    有人建议我可以使用一些特殊的数据结构来组合后续的更新操作

    问题:有没有已知的方法来优化此类问题?是否有一种特殊的数据结构可以做到这一点?我提到的想法;它是否可能比直接方法更有效?我应该试试吗?

    它可能会有帮助:
    (范围部分)

    查看段树和二元索引树。我对的回答可能有助于解释段树和二元索引树之间的区别。简单地说,要更新一个范围,您需要使用带有延迟更新的段树。我以前使用过BIT,所以我认为它在这个特定的更新中会起作用。但是,如果操作是乘法而不是加法,则使用位有点麻烦。我要去看一段树,好的!分段树似乎适合我!我不知道这是不是最有效率的,但肯定比我的效率高。