📅  最后修改于: 2020-09-23 10:48:57             🧑  作者: Mango
用一阶逻辑构造知识库的过程称为知识工程。在知识工程中,研究特定领域,学习该领域的重要概念并生成对象的形式表示的人称为知识工程师。
在本主题中,我们将了解已经熟悉的电子电路领域的知识工程过程。此方法主要适合于创建专用知识库。
以下是知识工程过程的一些主要步骤。使用这些步骤,我们将开发一个知识库,使我们能够对数字电路(一位全加法器)进行推理,如下所示
该过程的第一步是确定任务,对于数字电路,有各种推理任务。
在第一层或最高层,我们将检查电路的功能:
在第二级,我们将检查电路结构细节,例如:
在第二步中,我们将汇总数字电路所需的相关知识。因此,对于数字电路,我们具有以下必需的知识:
该过程的下一步是选择函数,谓词和常量以表示电路,端子,信号和门。首先,我们将把大门与其他物体区分开。每个门都表示为一个由常量命名的对象,例如Gate(X1)。每个门的功能取决于其类型,该类型被视为诸如AND,OR,XOR或NOT之类的常量。电路将由谓词标识:电路(C1)。
对于终端,我们将使用谓词:Terminal(x)。
对于门输入,我们将使用函数In(1,X1)表示门的第一个输入端子,对于输出端子,我们将使用Out(1,X1)。
函数Arity(c,i,j)用于表示电路c具有i输入,j输出。
门之间的连通性可以用谓词Connect(Out(1,X1),In(1,X1))表示。
我们使用一元谓词On(t),如果终端上的信号打开,则为true。
要编码有关逻辑电路的常识,我们需要遵循以下规则:
∀ t1, t2 Terminal (t1) ∧ Terminal (t2) ∧ Connect (t1, t2) → Signal (t1) = Signal (2).
∀ t Terminal (t) →Signal (t) = 1 ∨Signal (t) = 0.
∀ t1, t2 Connect(t1, t2) → Connect (t2, t1).
∀ g Gate(g) ∧ r = Type(g) → r = OR ∨r = AND ∨r = XOR ∨r = NOT.
∀ g Gate(g) ∧ Type(g) = AND →Signal (Out(1, g))= 0 ⇔ ∃n Signal (In(n, g))= 0.
∀ g Gate(g) ∧ Type(g) = OR → Signal (Out(1, g))= 1 ⇔ ∃n Signal (In(n, g))= 1
∀ g Gate(g) ∧ Type(g) = XOR → Signal (Out(1, g)) = 1 ⇔ Signal (In(1, g)) ≠ Signal (In(2, g)).
∀ g Gate(g) ∧ Type(g) = NOT → Signal (In(1, g)) ≠ Signal (Out(1, g)).
∀ g Gate(g) ∧ Type(g) = NOT → Arity(g, 1, 1)
∀ g Gate(g) ∧ r =Type(g) ∧ (r= AND ∨r= OR ∨r= XOR) → Arity (g, 2, 1).
∀ g Gate(g) → Circuit (g).
现在我们对电路C1的问题进行编码,首先我们对电路及其门极组件进行分类。如果已经考虑了有关该问题的本体,则此步骤很容易。此步骤涉及编写概念实例的简单原子语句,这称为本体。
对于给定的电路C1,我们可以使用原子语句对问题实例进行编码,如下所示:
由于电路中有两个XOR,两个AND和一个OR门,因此这些门的原子语句为:
For XOR gate: Type(x1)= XOR, Type(X2) = XOR
For AND gate: Type(A1) = AND, Type(A2)= AND
For OR gate: Type (O1) = OR.
然后代表所有门之间的连接。
注意:本体论定义了关于存在本质的特定理论。
在这一步中,我们将找到加法器电路所有端子的所有可能值集。第一个查询将是:
输入将产生电路C1的第一输出为0而第二输出为1的输入的组合是什么?
∃ i1, i2, i3 Signal (In(1, C1))=i1 ∧ Signal (In(2, C1))=i2 ∧ Signal (In(3, C1))= i3
∧ Signal (Out(1, C1)) =0 ∧ Signal (Out(2, C1))=1
现在我们将调试知识库,这是整个过程的最后一步。在这一步中,我们将尝试调试知识库问题。
在知识库中,我们可能省略了诸如1≠0之类的断言。