Boole ifadesini gerçekleştirmek için gereken minimum NAND / NOR geçidi sayısının belirlenmesi


9

Minimum NAND veya NOR geçidi sayısını belirlemek için herhangi bir algoritma var mı?

  1. verilen giriş sayısı
  2. tamamlanan girdinin kullanılabilirliği / yokluğu

bir Boole ifadesi gerçekleştirmek için gerekli? Bir AND-OR formunu asgari Karnaugh haritaları aracılığıyla aslen çarpım olarak alabiliriz (bildiğim kadarıyla Quine-McCluskey algoritması bunları deterministik olarak elde eder). NAND veya NOR uygulamaları için de benzer bir teknik var mı? En azından, bu teknik gerçek diyagramı bulmadan bile gerekli minimum NAND / NOR geçidi sayısını belirlemelidir?

De Morgan'ın asal suçlara ilişkin yasasını uygulamak belirleyici görünmüyor,

A ⊕ B = A'B + AB' = ((A'B)'(AB')')' [5 NAND gates]
A ⊕ B = (AB + A'B')' = ((ABAB+ABB') + (A'AB+A'B'))' = (AB(AB+B') + A'(AB+B'))' = ((AB+A')(AB+B'))' = (((AB)'A)'((AB)'B)')' [4 NAND gates by reusing (AB)']

Bu iki aşamalı veya çok aşamalı bir uygulama için mi?
Fizz

@RespawnedFluff Çok seviyeli uygulamanın amacı, kapı sayısını en aza indirmektir, bu nedenle minimal NAND / NOR uygulaması da çok seviyeli olmalıdır.
Samik

K-haritası size çok seviyeli optimizasyon için minimum sonuç vermez.
Fizz

Yanıtlar:


10

Çok seviyeli bir ağdaki minimum kapı sayısını yalnızca bir tamsayı programlama problemi [veya eşdeğeri, aşağıya bakınız] çözerek bulabilirsiniz . Bu problem NP-tamdır, bu yüzden sadece bir düzine kapıya kadar çözmek için pratiktir.

Size minimum sayıyı vermeyecek ancak gereken zaman açısından daha izlenebilir olan yaklaşım yöntemleri vardır ... Bunlar kendi başlarında geniş bir konudur, temel olarak çok seviyeli optimizasyonun tüm alanıdır. Burada [ücretsiz] genel bakışı okuyabilirsiniz .

Küçük NAND ağları için (4 değişkene kadar), sorun kapsamlı numaralandırma [veya eşdeğer yöntemler] ile tamamen çözülmüştür. Elizabeth Ann Ernst tarafından eski sonuçları özetleyen ve genişleten oldukça yeni bir [2009] doktora tezi var . Ernst, uygulamada kapsamlı yöntemi geliştiren ancak asemptolojik olmayan dal ve bağlı kullanır. Ayrıca, tamsayı programlama veya CSP (SAT aracılığıyla çözülen kısıtlama memnuniyeti) gibi diğer örtülü numaralandırma yöntemlerinin uygulamada daha kötü performans gösterdiğini not eder.

Açıkçası yöntemi için bazı yazılımlar yazdı (BESS denir), ancak bir yerde halka açık olup olmadığından emin değilim. Tezinin tam metni umich'te serbestçe bulunmaktadır . Ve aslında, aşağıda vurgulanan 2 girişli xor (2'niz açıkça) için minimum ifadeyi buldunuz:

resim açıklamasını buraya girin

Ayrıca kesin sonuçları (NAND'ler için) ABC'den sezgisel iyileştirici tarafından üretilenlerle karşılaştırdı .

ABC, optimum ağın bilindiği 4.043 işlevden 340'ı için en uygun ağı üretmeyi başardı. ABC'nin en uygun ağı üretmediği fonksiyonlar için, en uygun ağdan ortalama% 36 daha büyüktü [.]

BESS'in bitmediği ancak üst sınırın bulunmasına izin veren (aramanın terk edildiği noktada) bazı [daha büyük] ağlar var. Bu ABC için, aşağıdaki 2. grafikten de görebileceğiniz gibi, [bulunan sınırlara göre] oldukça iyi bir performans gösterdi.

resim açıklamasını buraya girin


Eğer merak ediyorsanız ABC'yi xor probleminde denedim ... ve en azından resyn2senaryo ile 5 nand kapısı verir . Bu yüzden Mantic Friday'den (misII kullanan) daha iyi değil.
Fizz

ABC için temel olarak önceden hesaplanmış optimum uygulamalar için büyük miktarda işlev arayan komut dosyaları ve veritabanları vardır, örneğin arxiv.org/pdf/1108.3675.pdf Bunu denemedim, ancak işe yarasa bile, zor iş başka yerde yapılır.
Fizz

Verdiğiniz malzemelerden geçiyorum ve çok ilginç görünüyorlar, ama onları anlamak için uğraşıyorum. Onları doğru bir şekilde anladığımda, muhtemelen ödülü vereceğim. Bu arada bir oy verin.
Samik

1

Muhtemelen daha iyi teknikler var, ancak karanlık çağlarda, Karnaugh Haritalarının iyi çalıştığını gördüm


Karnaugh haritalarından elde edilen AND-OR uygulamasından en az NAND / NOR uygulamasına nasıl geçileceği konusunda bu "karanlık çağlara" biraz ışık tutmak ister misiniz?
Samik

1

NAND ve ardından NAND, AND ve ardından OR ile eşdeğerdir.

NOR ve onu takip eden NOR, OR'ye ve onu izleyen AND'e eşittir.

NAND'ın ardından NOR izler AND ile eşdeğer olur ve AND çok anlam ifade etmez. NOR ve ardından NAND benzer şekilde OR ve ardından OR ile eşdeğerdir.

Genel durumda çok sayıda girdi içeren bir sorun için asgari bir yalnızlık bulmanın mümkün bir yolu olduğuna inanmıyorum (açıkçası küçük giriş sayıları için kaba kuvvet uygulayabilirsiniz). Quine-McClusky sadece iki seviyeli yalnızlıklara bakar (minimal iki seviyeli yalnızlık genellikle genel minimal yalnızlık değildir) ve karmaşık doğruluk tabloları ve çok sayıda girdi ile hesaplanabilir hale gelebilir.


Peki kabarcık değiştirmekten daha iyi bir yol yok mu?
Samik

1

En iyi algoritma Espresso algoritmasıdır. Bir dereceye kadar bu FPGA sentezinde uygulanır

Mantık cuma kullanabileceğiniz bir yazılım parçasıdır. NOT: Bu bir XOR'u 5 NAND geçidine indirir.


Ancak Espresso, AND-OR uygulamasını da veriyor, değil mi?
Samik

1
Espresso sadece [k-haritalarından farklı olarak] büyük girdiler (formüller) için uygulanabilir olması bakımından "en iyisidir", ancak her durumda en iyi / minimal formülü vermez.
Fizz
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.