Dinamik olarak güncellenmiş bir girdi üzerinde bir polinomun değerini koruma


10

Let sabit bir sonlu alan üzerinde bir polinom. Biz değeri verilir varsayalım bir vektör ile ilgili ve vektör .P y { 0 , 1 } n yP(x1,x2,,xn)Py{0,1}ny

Şimdi değerini hesaplamak için isteyen için bir vektör ile ilgili , öyle ki ve tam olarak bir pozisyonda farklılık (diğer bir deyişle, tam olarak bir bit çevirmek ). Bu problem için yer ve zaman ödünleşimleri nelerdir?y { 0 , 1 } n y y yPy{0,1}nyyy

Örneğin, içinde monomials sayısıdır , katsayıları ve tüm monomiyallerin değerlerini saklayabilir . Eğer , içeren her bir değerini ve daha sonra depolanan bilgileri kullanarak değerini . Genel olarak, zaman ve mekana ihtiyacımız var.P P y i y i P ( y ) O ( r )rPPyiyiP(y)O(r)

( için içeren monomialleri nasıl tanımladığımız hakkında hiçbir şey söylemiyorum . makul bir temsilini seçebilirsiniz , örnekte her bir için içeren bir listesini sakladığımızı varsayıyorum .) P y i iyiPyii

Daha iyi bir şey var mı?

Yanıtlar:


7

Fikriniz şu şekilde genelleşir: bir cebirsel devre (sonlu alanın üzerinde) veya Boolean devresi (sonlu alan elemanlarınızın bit-bilge gösterimini hesaplayan) hesaplandığında , devredeki her kapıdaki değeri koruyun. Değiştirmek zaman bir inci bit , sadece giriş başlayarak devrenin DAG birlikte bu değişikliği yaymak . Devrenin boyutu , bu zamanını ve boşluğunu alır. Bu, monomiyal sayısından çok daha küçük olabilir (bu sadece derinlik cebirsel devrelerinin boyutuna karşılık gelir 2).i y y i s O ( s )PiyyisO(s)


1
Bunun kasıtlı olup olmadığından emin değilim, ama sorun bize verildiğini söylemiyor , sadece . f ( y )yf(y)
Andrew Morgan

1
@AndrewMorgan Uygulamanıza bağlı olarak, benim için y verildiğini varsaymak iyidir. Yorum için teşekkürler!
Tatiana Starikovskaya

2
@AndrewMorgan: Gerçekten de, bu teknik olarak doğru olsa da, OQ'daki örnek yapının nasıl ifade edildiği dolaylı olarak verildiğini varsayıyor gibi görünüyordu . Eğer verilmezse bence bu problem daha da zorlaşıyor. (Tatiana, bunu soruya bir açıklama olarak eklemeye değer olabilir.)yyy
Joshua Grochow

5

Her güncellemenin değiştirilen monomiyallerin sayısıyla orantılı olması için monomiyal depolama yaklaşımınızı kolayca değiştirebilirsiniz: sadece yeni değeri ekleyerek ve her değiştirilen monomiyal için eski değeri çıkararak toplam polinom değerini güncelleyin.

için bir kez salt okunur formülünüz varsa (yani her değişken formül ağacının tek bir yaprağında görünürse ve her iç düğüm artı veya saat gibi iki girişli aritmetik bir işlemse), değerini logaritmik olarak koruyabilirsiniz formül üzerinde bir komisyon sıkıştırma ağacı kullanarak güncelleme başına süre . Bu yaklaşımı rasgele bir formüle uyguladığınızda, kez görünen bir değişkeni güncelleme süresi ; burada formül büyüklüğüdür. Dolayısıyla, log faktörü dışında, bu, değiştirilen monomiyallerin sayısının sınırlandırılmasını genelleştirir ve polinomun bir formüle daha genel genleşme tipleri için geçerlidir.P k O ( k log N ) NPPkO(klogN)N

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.