問題タブ [conjunctive-normal-form]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
107 参照

sql - CNF を実装するための分離された IN 式を持つ SQL where 句

動的に追加されたプロパティ (転置テーブル) に従ってユーザーにクエリを実行する必要があります

私は4つのテーブルを持っています

  • ユーザー- ユーザー向け
  • propertyGroup - プロパティのグループの場合、グループをデータベースに動的に追加できます
  • propertyValue - propertyGroup の可能な値
  • usersPropertyValues - ユーザーを関連するプロパティに接続します

その外観は次のようになります。

したがって、mix-em-all クエリは次のようになります。

そのすべてがここにあります:http://sqlfiddle.com/#!3/49329/1

propertyValueIdのセットでデータをクエリし、グループに関してこのプロパティのセットに一致するすべてのユーザーを取得したいので、ユーザーはすべてのグループから少なくともプロパティを持っている必要があります。次のような一般的な CNF 句に一致します: (pvId は propertyValueId の省略形です)

上記の例では、pvId_x&pvId_y はグループ A に属し、pvId_w&pvId_z はグループ B に属します。

私がうまくいかなかったのは、ここに示されているように、IN演算子のAND演算子を連結しようとしました( or 一部をシミュレートします - 論理和):

両方のユーザーを取得する代わりに (両方とも (1 または 2) と (5 または 6) を持っています)、何も取得しませんでした。

結果セットが空である理由は理解していますが、適切な where 句を実装する方法は理解していません。- どのようにそれを行うことができますか?

私の質問: 上記の SQL 構造に CNF ロジックを実装するにはどうすればよいですか?

編集:除外された結果の例: (sqlfiddle の例に関して:

ところで、これを最後に JPA に実装する必要があるため、JPA に解決策があればそれも素晴らしいことです。そうでない場合は、翻訳します...ありがとう

0 投票する
1 に答える
74 参照

conways-game-of-life - Game Of Life の接続法標準形

ミニサットを使って7×7サイズの人生ゲームを解いて、安定した世代を手に入れたいです。

ここで、生と死のルールを単純化します。 Von Neumann de rayon 1 南、東、北の隣人が生きているセルは生きています。(xin : 北の隣人; xie : 東の隣人; xis : 南の隣人) 私の公式 ですが、これを CNF(Conjunctive normal form) に変更する方法がわかりません。

誰かが私を助けることができますか?T

0 投票する
1 に答える
3653 参照

math - この論理文を接続法標準形に変換してください

この文を CNF に変換するのに苦労しています。

(A ∨ B) ⇔ (C ∧ D)。

私はすでに二条件消去論理規則を使用して⇔を消去しようとしました。

(A ∨ B) → (C ∧ D) ∧ (C ∧ D) → (A ∨ B)。

次に、含意消去論理規則で → を消去しました。今私が持っています

¬(A ∨ B) ∨ (C ∧ D) ∧ ¬(C ∧ D) ∨ (A ∨ B)。

私はここでかなり立ち往生しています。私の教授は、文を減らすために分布規則を使用する必要があると言います。分配性ルールの要件に一致するものを見つけることができないようです。そのため、私が知らない論理ルールを実行する前に、分配ルールを使用できないようです。

ここで何が欠けていますか?スタック オーバーフローは、CNF への変換を再開するのに役立ちますか?

0 投票する
1 に答える
489 参照

logic - Writing conditions in Conjunctive Normal Form

Conjunctive Normal Form (CNF) is a standardized notation for propositional formulas that dictate that every formula should be written as a conjunction of disjunctions. Every boolean formula can be converted to CNF. So for example:

A | (B & C)

Has a representation in CNF like this:

(A | B) & (A | C)

Is it a best practice in programming to write conditionals in CNF?

0 投票する
1 に答える
172 参照

c - C で結合正規形を解く

任務の手伝いを求めています。連言正規方程式 (cnf) を解くアルゴリズムを (C で) 書かなければならず、かなりの数時間後にそれを機能させることができません...

私のプログラムはDPLLを実装しています。より正確には、インスタンス化するリテラルを選択した直後に cnf を単純化する部分で、問題が発生します。私は非常に明確であるかどうかわからないので、ここに例を示します:

式 : (a OR b) AND (not-a OR not-b) AND (not-a OR b)

インスタンス化: a=TRUE b=FALSE

この時点で関数 simple を使用すると、(not-a OR b) が満たされなくなるはずですが、すべての節が満たされていることがわかります。

私が定義したデータ型は次のとおりです (管理しやすいように、リテラルには char の代わりに整数を使用しました)。

そして、ここに私の単純化関数があります

長いコードで申し訳ありません。どの重要な部分に注目すべきか正確にはわかりません。完全ではないメモリの解放など、他にもいくつかの問題が残っていることを私は知っています(私は思う)。

それとは別に、問題をデバッグしようとしているときにいくつかのエラーを見つけましたが、古いものを修正しながら新しいものを作成しているような気がします:/

誰かがこれについて私を助けることができるなら、前もってThx!また、重要な場合は、Windows 10 を使用しており、cygwin を介して gcc でコンパイルしています。

gcc *.c

0 投票する
2 に答える
3012 参照

java - How to read .cnf file in java

I have a .cnf file which contains numbers as Conjunctive Normal Form.

I need to read and store them in a data structure (matrix or list) to be able to work with them as index. (I need this to solve a 3-SAT problem.)

How can I read and store them in Java?