Boole devresini benzer girdilerin partisinde değerlendirin


10

Bir boole devresim olduğunu varsayalım C bazı fonksiyonları hesaplayan f:{0,1}n{0,1}. Devrenin, en fazla 2 adet fan girişi ve fan çıkışı olan AND, OR ve NOT kapılarından oluştuğunu varsayalım.

İzin Vermek x{0,1}nbelirli bir girdi olmak. verilmişC ve x, Değerlendirmek istiyorum C üzerinde n farklı girişler x tek bir bit pozisyonunda, yani n değerler C(x1),C(x2),,C(xn) nerede xi aynıdır x bunun dışında iBu bit çevrildi.

Bunu bağımsız olarak değerlendirmekten daha verimli bir yol var mı C n kez n farklı girdiler?

üstlenmek C içeren mkapıları. Sonra bağımsız olarak değerlendirmeC hepsinde n girişler alacak O(mn)saati. Hesaplamanın bir yolu var mıC(x1),C(x2),,C(xn) içinde o(mn) Zaman?


İsteğe bağlı bağlam: (kapıları çarpma, toplama ve olumsuzlama olan) aritmetik bir devremiz varsaR, sonra hesaplamak mümkün olurdu n yönlü türevler fxi(x) içinde O(m)saati. Temel olarak, degradenin hesaplanması için standart yöntemler kullanabiliriz (geri yayılma / zincir kuralı),O(m)saati. Bu, karşılık gelen işlev sürekli ve farklılaştırılabilir olduğu için çalışır. Boole devreleri için benzer bir şey yapıp yapamayacağını merak ediyorum. Boole devreleri sürekli ve farklılaştırılamaz, bu yüzden aynı hileyi yapamazsınız, ancak belki de kullanabileceğiniz başka akıllı teknikler vardır? Belki bir tür Fourier hilesi falan?

(Varyant sorusu: sınırsız fan girişi ve sınırlı fan çıkışı olan boole kapılarımız varsa, değerlendirmeden daha asimptotik olarak daha iyi yapabilir misiniz? C n zamanlar?)


1
Andrew sorunuzu oldukça iyi yanıtladığından, sadece bir yorum bırakacağım. Eğerm büyük (gibi O(2n/n)) ve değerlendiriyorsunuz C birçok girişte (en fazla 2o(n/logn)) sonra bir C sadece boyut O(2n/n) hangisi değerlendirebilir C herhangi birinde mgirişleri. (Sorun literatürde "seri üretim" olarak da adlandırılır.) Bkz. Math.Notes Acad.Sci. SSCB 15, 558-562. Yani bazı durumlarda tekdüzelikle daha iyisini yapabilirsiniz.
Ryan Williams

Yanıtlar:


10

Böyle bir hile bulmanın kolay olmadığını ve / veya önemsiz kazançlar algoritmaları vereceği için size önemli kazançlar sağlayacağını düşünmüyorum. Bunu nasıl yapacağınız aşağıda açıklanmıştır:

Her şeyden önce, görünüşte daha kolay olsa da, probleminiz bir devre verildiğinde daha genel bir sorunu çözebilir C ve N girişler x0,,xN1, değerlendirmek C tüm girişlerden daha hızlı O~(N|C|)saati. Nedeni ayarlayabilirizC bir devreye C büyüklüğünde |C|+O~(Nn) hangi, girişte 0i10N1i, çıktılar C(xi). Temel olarak, gönderen küçük bir arama tablosu yapıyoruz0i10N1i için xive kabloyu C.

Daha sonra hızlı tatmin edilebilirlik algoritmaları yapmak için boole devrelerinin toplu değerlendirmesi için gereksiz algoritmalar kullanılabilir. Zamanında değerlendirme yapan bir algoritmaya sahip olduğumuzu düşündüğümüz basit durumda bir örnekO~(|C|2ϵ+(N|C|)1ϵ/2+N2ϵ) herhangi bir sabit için ϵ>0. Girişte bir devreC, memnuniyetini artırarak karar verebiliriz. C bir devreye C büyüklüğünde 2n/2|C| Bu, ilk seçeneklerin tüm olası seçeneklerine göre VEYA n/2 girişleri C(diğer girişleri boş bırakmak). Daha sonra toplu değerlendiririzC hepsinde 2n/2girişleri. Sonuç olarak,C iFF Ctatmin edici. Çalışma süresiO~(2(n/2)(2ϵ)|C|2ϵ)=O~(2n(1ϵ/2)poly(|C|)).

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.