考虑该表,该表在每个时间点存储两个stock变量 A 和 B 的值:
A B
day 1 10 0
day 2 0 10
day 3 7 7
day 4 7 7
我们要回答以下问题:
在给定的日期范围内,变量 A 达到的最大值是多少?
在给定的日期范围内,变量 A 和 B 的 sum 达到的最大值是多少?
但是,实际表可能具有数十亿行和许多变量。为了更快地获得答案,我们计划以较低的时间粒度预先计算汇总表。
问题在于,单单计算 A 和 B 的新时间粒度的最大值不足以回答第二个问题。例如:
Max-A Max-B
day 1&2 10 10
day 3&4 7 7
我们已经失去了在 3&4 的两天内达到最大 A + B 的事实。
我们可以在摘要表中添加新的 Max-(A + B)列。但是,如果有许多不同的变量,我们将面临组合爆炸式增长。摘要表最终可能会比原始表大!
是否存在一种算法/数据结构,可以有效地存储这些预先计算的最大值,以一种方式让我们对变量的任意组合提出疑问,同时避免组合爆炸?我的猜测是,它可以假设数据中存在某些规律性,然后尝试以某种普遍性为代价来利用它们。
答案 0 :(得分:2)
您想要的所有内容都没有非常好的数据结构...但是您知道一年只有365天,即您的表将没有数十亿行。
该表最多仅包含几千行,因此仅花费大量时间进行迭代即可计算所需的统计信息。