1 / 12

積和形論理式と多段論理式

積和形論理式と多段論理式. 積和形論理式 =  AND-OR の2段 多段論理式 = 3段以上の任意の形 一般的には、多段論理式の方がコンパクトな表現になる ace + ade + bce + bde + cf + df = (c + d)(e(a + b) + f) 回路面積の目安 = リテラル数 16 → 6 回路遅延の目安 = 2入力基本ゲートで表現した時の段数 5段 → 4段. 論理式の割り算. f = gh + r f をgで割った商が h で、あまりが r 一般的には、 h と r はユニークには決まらない h と r に制限をつけない=論理的割り算

jonathon
Download Presentation

積和形論理式と多段論理式

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 積和形論理式と多段論理式 • 積和形論理式 = AND-ORの2段 • 多段論理式 = 3段以上の任意の形 • 一般的には、多段論理式の方がコンパクトな表現になる • ace + ade + bce + bde + cf + df = (c + d)(e(a + b) + f) • 回路面積の目安 = リテラル数 • 16 → 6 • 回路遅延の目安 = 2入力基本ゲートで表現した時の段数 • 5段 → 4段

  2. 論理式の割り算 • f = gh + r • fをgで割った商がhで、あまりがr • 一般的には、hとrはユニークには決まらない • hとrに制限をつけない=論理的割り算 • 無限通りの割り方がある • 1回の割り算に積和形論理式の簡単化と同じ手間がかかる • ghを代数的積に制限する=代数的割り算 • 結果がユニークにできる • O(n log n)の手間で計算できる • そんなに悪くないことが多い

  3. 論理式の代数的処理 • 代数的論理式とは、論理関数の積和形論理式表現で、他の1つのキューブに含まれるキューブ(single cube containmentと呼ぶ)のないもの • ab + abc + cdは代数的論理式ではない • ab + cdは代数的論理式 • 代数式fとgの代数的積fgとは、fgを展開し、single cube containmentについて冗長性を取ったもの • fとgに共通な変数がないとfgは必ず代数的積 • (a + b)(c + d) = ac + ad + bc + bdは代数的積 • (a + b)(a + c) = aa + ac + ab + bc = a + bcは代数的積ではない

  4. 論理式の割り算の例 f= ad + ae + bcd + j g1 = a + bc g2 = a + b • fをg1で代数的に割ると、商はd、あまりはae + j • fをg2で代数的に割ると、商は(a + b)d、あまりはae + j (代数的には割れない)

  5. Weak division(代数的割り算であまりのキューブ数最小のもの)のアルゴリズム Weak_div(F,G): U = {uj}/* Fの全てのキューブだが、Gに現れるリテ ラルだけに制限したもの*/ V = {vj}/* Fの全てのキューブだが、Gに現れるリテ ラル以外のリテラルに制限したもの */ /* uj vjがFのj番目のキューブとなっている */ Vi = {vj ∈ V| uj = Gi} H = ∩ Vi R = F – GH return (H, R) • 上のアルゴリズムはO(n log n)です。どこがそうでしょうか? • O(n)にできますか?

  6. Weak divisionのアルゴリズム:例題 F = ace + ade + bc + bd + be + a’b + ab G = ae + b U = ae + ae + b + b + b + b + ab V = c + d + c + d + 1 + a’ + 1 Vae = c + d Vb = c + d + 1 + a’ H = c + d R = be + a’b + ab F = (ae + b)(c + d) +be +a’b + ab

  7. Gをどうやって選ぶか?カーネル、コカーネルGをどうやって選ぶか?カーネル、コカーネル • 効果的に割れるGを探す必要 • Gは無限にある • 問題: 論理式の集合{Fi}が与えられた時、できるだけ多く共通に割れる代数的項を探す • 探索対象=カーネルに制限 • 定義 • 積和形論理式がキューブフリーとは、すべての積項に共通なリテラルがないことを言う • 積和形論理式のカーネルとは、その論理式に含まれる複数の積項からリテラルをとってキューブフリーにしたもの • 積和形論理式のコカーネルとは、カーネルを作るときにとったリテラルの積

  8. カーネル、コカーネルの例 x = adf + aef + bdf + bef + cdf + cef + g = (a + b + c)(d + e)f + g カーネル コカーネル a + b + c df, ef d + e af, bf, cf (a + b + c)(d + e)f + g 1

  9. カーネルに関する基本定理 • 論理式F、Gについて、Fの任意のカーネルkFとGの任意のカーネルkGが共通に持つ積項がたかだか1の場合、FとGは積項数2以上の積和形論理式で代数的には割れない • つまり、論理式をカーネルで割ったしまえば、複数の論理式を共通に割れるのは、キューブに限定される

  10. カーネルの計算アルゴリズム R ← Kernel(j, G) R ← 0 If (Gがキューブフリー)R ← {G} For i = j+1, …, n { If (liが1つの積項のみで現れる) then continue c ← G/liを割り切る最大キューブ If (あるk<i に対し、lk ∈ c) then continue else R ← R ∪ Kernel(I, G/(li・c)) } Return R • Kernel(0, F)がすべのカーネルを計算 • lk ∈ cが高速化のポイント(同じカーネルを求めない)

  11. abcd+abce+adfg+aefg+adbe+acdef+beg b c a (a) e c d e f b d c (a) (a) ac+d+g e d g f d c e e f d+e b+df b+ef b+cf cd+g c+d ce+g d+e c+e k co-k ernel ernel + + + + + 1 a f g d e de (( bc )( ) ( b cf ))) beg + + + + a f g d e de ( bc )( ) ( b cf ) + + ab d e de c ( ) + abc d e + abd e c + abe d c + + ac d e def b ( ) + acd ef b = + = + a 注意: f ad ae d e =bc ( ).

  12. 多段化の例 f1 = ab(c(d + e) + f + g) + h f2 = ai(c(d+e) + f + j) + k カーネルd + eで割ると l = d + e f1 = ab(cl + f + g) + h f2 = ai(cl + f + j) + k さらにカーネルcl + fで割ると m = cl + f f1 = ab(m + g) + h f2 = ai(m + j) + k 共通に割れるカーネルはないので、キューブで割る n = am f1 = b(n + ag) + h f2 = I(n + aj) + k

More Related