在动态更新的输入上保持多项式的值


10

令是固定有限域上的多项式。假设我们给定向量和向量的值。P Ý { 0 1 } Ñ ÿP(x1,x2,,xn)Py{0,1}ny

现在,我们要在向量计算的值,以使和恰好在一个位置不同(换句话说,我们在恰好翻转一位)。这个问题的空间和时间取舍是什么?ÿ '{ 0 1 } Ñ ÿ ÿ ' ÿPy{0,1}nyyy

例如,如果是中单项式的数目,我们可以将系数和所有单项式的值存储在。如果被翻转,我们使用存储的信息固定每个包含单项式的值,然后确定的值。总体而言,我们需要时间和空间。P P y i y i P y O r rPPÿ一世ÿ一世PÿØ[R

(关于目的如何识别包含的单项式没有说什么。您可以选择任何合理表示形式,在本示例中,我假设我们为每个存储一个包含的单项式的列表。) P ÿ ÿ一世Pÿ一世一世

有更好的吗?

Answers:


7

您的想法概括如下:给定一个代数电路(在有限域上)或布尔电路(计算有限域元素的按位表示),计算,然后保持电路中每个门的值。当您更改第个位时,只需从输入开始沿电路的DAG传播该更改。如果电路的大小为,则需要时间和空间。这可能比单项式的数目小得多(后者对应于深度仅为2的代数回路的大小)。ÿ ÿ 小号Ô 小号P一世ÿÿ一世sØs


1
我不确定这是否是故意的,但问题并不在于我们得到,而是。ÿFÿ
安德鲁·摩根

1
@AndrewMorgan取决于您的应用程序,对于我来说,可以假定y是给定的。感谢您的评论!
Tatiana Starikovskaya

2
@AndrewMorgan:确实,尽管在技术上是正确的,但OQ中的示例结构的措辞似乎暗含了假定被给出的方式。如果没有给出,我认为这个问题将变得更加困难。(塔蒂亚娜(Tatiana),可能需要添加它作为问题的澄清。)yÿ
约书亚·格罗肖

5

修改单项式存储方法很容易,以便每次更新仅花费与更改后的单项式数量成正比的时间:只需为每个更改后的单项式添加新值并减去旧值,即可更新多项式总值。

如果您有一个的只读公式(即每个变量都出现在公式树的单个叶子上,并且每个内部节点都是两次输入的算术运算,如加号或乘积),则可以将的值保持对数在公式上使用rake-compress树进行每次更新的时间。将这种方法应用于任意公式,更新出现次的变量的时间将为,其中N是公式大小。因此,除对数因子外,这会泛化更改后的单项式数目的界,并适用于将多项式扩展为公式的更一般类型。PPķØķ日志ññ

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.