第18章 方法构建匹配
18.1 方法构建匹配的提出背景
在认知过程中,方法并不是一个孤立存在的对象。一个方法通常是在目标、对象、条件、动作、顺序和结果等认知元素的共同作用下形成的。
前面的对象匹配解决“是什么对象”的对应问题,关系匹配解决“对象之间是什么关系”的对应问题,行为匹配解决“发生了什么行为”的对应问题,动作匹配解决“具体进行了什么操作”的对应问题。
但是,仅仅知道行为和动作仍然不足以形成完整的方法认知。
例如,同样是“移动一个物体”,可以采用直接移动、抓取后移动、推动移动、机械装置移动等不同方式。它们可能具有相同或者相近的目标,也可能产生相同的最终结果,但是内部的动作结构、动作顺序、条件要求和对象关系并不相同。
因此,需要在行为与动作之上建立方法构建关系:
目标 → 条件 → 对象 → 动作 → 动作顺序 → 过程 → 结果 → 方法
方法构建匹配研究的不是单纯的“方法名称是否相同”,而是研究:
一个方法由什么元素构成,这些元素如何组织,以及另一个方法是否具有对应的构建结构。
由此形成方法构建匹配理论。
18.2 方法的定义
方法(Method)是为了实现特定目标,在一定条件下,对相关对象组织一组动作,并按照一定结构形成的过程性认知结构。
方法不是单个动作,也不是单纯的行为描述,而是多个认知元素按照一定规则形成的结构。
可以表示为:
M = (G, O, C, A, P, R)
其中:
- M:Method,方法;
- G:Goal,目标;
- O:Object,对象;
- C:Condition,条件;
- A:Action,动作集合;
- P:Process,过程结构;
- R:Result,结果。
因此,一个完整的方法可以表示为:
目标 + 对象 + 条件 + 动作 + 过程 + 结果 → 方法
方法的核心不是某一个动作,而是这些元素之间形成的结构关系。
18.3 方法构建的定义
方法构建(Method Construction)是指认知系统根据目标、对象、条件、动作、动作顺序、过程和结果等认知元素,按照一定的结构关系形成方法的过程。
方法构建不是简单地把动作排列起来,而是建立动作与目标、对象、条件和结果之间的对应关系。
基本过程可以表示为:
目标识别 → 对象确定 → 条件确定 → 动作确定 → 动作组织 → 过程形成 → 结果确定 → 方法形成
因此:
方法 = 被组织起来的动作结构
但进一步而言:
方法 = 目标约束下的完整动作过程结构
这一区别非常重要。
如果只有动作集合:
A = {A1, A2, A3}
只能说明存在三个动作。
而如果形成:
A1 → A2 → A3
则形成了动作顺序。
如果进一步建立:
G → A1 → A2 → A3 → R
则动作被目标和结果约束,形成了方法结构。
18.4 方法构建匹配的定义
方法构建匹配(Method Construction Matching)是指对两个方法的构成元素、元素关系、动作结构、动作顺序、条件结构、目标关系和结果关系进行比较,以判断两个方法在构建方式上的对应程度。
方法构建匹配回答的核心问题不是:
“两个方法叫什么?”
而是:
“两个方法是不是由相对应的认知元素按照相对应的结构构建出来的?”
因此,方法构建匹配可以表示为:
M₁ ↔ M₂
其中:
- M₁:待匹配方法;
- M₂:目标方法;
- ↔:方法构建关系。
如果进一步展开:
M₁(G₁,O₁,C₁,A₁,P₁,R₁) ↔ M₂(G₂,O₂,C₂,A₂,P₂,R₂)
系统需要分别判断:
G₁ ↔ G₂
O₁ ↔ O₂
C₁ ↔ C₂
A₁ ↔ A₂
P₁ ↔ P₂
R₁ ↔ R₂
最终形成整体方法构建匹配结果。
18.5 方法构建匹配的对象
方法构建匹配的直接对象是方法结构。
但是,方法结构又由多个认知元素构成,因此匹配对象具有层次性。
第一层是目标匹配:
Goal₁ ↔ Goal₂
判断两个方法是否具有相同或对应的目标。
第二层是对象匹配:
Object₁ ↔ Object₂
判断方法作用于什么对象,以及对象之间是否对应。
第三层是条件匹配:
Condition₁ ↔ Condition₂
判断方法成立或者执行所要求的条件是否对应。
第四层是动作匹配:
Action₁ ↔ Action₂
判断方法中的具体动作是否存在对应关系。
第五层是过程匹配:
Process₁ ↔ Process₂
判断动作之间的组织结构和执行过程是否对应。
第六层是结果匹配:
Result₁ ↔ Result₂
判断两个方法最终产生的结果是否对应。
因此:
方法构建匹配 = 目标匹配 + 对象匹配 + 条件匹配 + 动作匹配 + 过程匹配 + 结果匹配
18.6 方法元素匹配
方法构建的第一种匹配是元素匹配。
如果两个方法分别包含:
M₁ = {G₁,O₁,C₁,A₁,P₁,R₁}
M₂ = {G₂,O₂,C₂,A₂,P₂,R₂}
则首先需要判断:
G₁ ↔ G₂
O₁ ↔ O₂
C₁ ↔ C₂
A₁ ↔ A₂
P₁ ↔ P₂
R₁ ↔ R₂
只有方法内部的基本元素具有一定对应关系,才可能进一步判断方法结构是否匹配。
因此,元素匹配是方法构建匹配的基础。
18.7 方法目标构建匹配
方法并不是为了动作本身而存在,而是为了实现目标。
因此,方法构建匹配首先需要考虑目标。
例如:
方法A:
拿取物体 → 移动物体 → 放置物体
方法B:
抓取物体 → 搬运物体 → 放置物体
虽然动作名称不同,但如果两个方法都是为了:
目标:将物体从位置A移动到位置B
那么两者在目标层面可能具有较高匹配关系。
因此:
目标相同 ≠ 方法相同
目标匹配只是方法构建匹配的一部分。
它表示两个方法具有相同或者对应的目的,但并不能直接证明两个方法的构建结构相同。
18.8 方法对象构建匹配
方法必须作用于对象。
对象不同,方法可能不同。
例如:
操作对象 → 门
和:
操作对象 → 箱子
即使两个方法都具有“打开”的目标,它们的具体方法构建也可能不同。
因此需要判断:
方法对象类型是否匹配
进一步还需要判断:
对象属性是否满足方法要求
例如某方法要求:
Object.Type = Door
Object.State = Closed
那么对象匹配不仅包括对象类别,还包括对象状态。
由此:
对象匹配 → 属性匹配 → 状态匹配 → 方法构建匹配
18.9 方法条件构建匹配
方法并不是在任何情况下都可以构建和执行。
一个方法可能具有:
C = {C₁,C₂,C₃}
例如:
- 对象存在;
- 对象处于特定状态;
- 执行主体具有相应能力。
因此两个方法即使目标和动作相同,如果条件结构不同,也可能属于不同的方法。
例如:
M₁:直接拿取 → 移动 → 放置
要求对象处于可直接操作状态。
而:
M₂:解除限制 → 拿取 → 移动 → 放置
增加了一个前置条件处理过程。
两者最终目标可能相同,但方法构建结构已经发生变化。
因此:
条件结构也是方法结构的一部分。
18.10 方法动作构建匹配
动作是方法最重要的构成元素之一。
方法可以表示为:
M = A₁ → A₂ → A₃ → … → Aₙ
因此,方法构建匹配必须判断动作集合是否对应。
例如:
M₁ = A₁ → A₂ → A₃
M₂ = B₁ → B₂ → B₃
如果:
A₁ ↔ B₁
A₂ ↔ B₂
A₃ ↔ B₃
则说明两个方法具有较强的动作结构对应关系。
但是,动作数量相同并不意味着方法相同。
例如:
A₁ → A₂ → A₃
与:
A₁ → A₃ → A₂
动作集合相同,但顺序不同,因此方法结构不同。
所以方法构建匹配必须进一步进入动作顺序匹配。
18.11 方法动作顺序匹配
动作顺序是方法区别于动作集合的重要因素。
设:
P₁ = A₁ → A₂ → A₃
P₂ = B₁ → B₂ → B₃
如果:
A₁ ↔ B₁
A₂ ↔ B₂
A₃ ↔ B₃
则两个过程具有顺序对应关系。
如果:
P₂ = B₁ → B₃ → B₂
则虽然动作元素仍然存在对应关系,但过程结构已经不同。
因此:
动作匹配 ≠ 方法构建匹配
因为方法构建不仅关注“有什么动作”,还关注:
动作以什么顺序组织起来。
18.12 方法结构匹配
方法结构匹配是方法构建匹配的核心。
可以将方法结构表示为:
G → C → O → A₁ → A₂ → A₃ → R
另一个方法表示为:
G’ → C’ → O’ → B₁ → B₂ → B₃ → R’
如果各个结构节点之间存在对应关系:
G ↔ G’
C ↔ C’
O ↔ O’
A₁ ↔ B₁
A₂ ↔ B₂
A₃ ↔ B₃
R ↔ R’
则可以认为两个方法具有结构对应性。
方法结构匹配因此不是单节点匹配,而是:
节点匹配 + 关系匹配 + 顺序匹配 + 整体结构匹配
18.13 方法过程匹配
方法通常具有过程性。
过程可以表示为:
P = {S₁ → S₂ → S₃ → … → Sₙ}
其中:
- S表示方法过程中的阶段;
- **→**表示过程转移。
例如:
准备 → 获取对象 → 操作对象 → 完成操作
另一个方法可能是:
准备 → 获取对象 → 操作对象 → 检查结果 → 完成
虽然前几个阶段一致,但是第二个方法增加了结果检查过程。
因此:
过程结构不同 → 方法构建不同
过程匹配需要判断:
- 阶段数量;
- 阶段类型;
- 阶段顺序;
- 阶段之间的关系;
- 阶段转移条件。
18.14 方法结果构建匹配
方法的构建最终受到结果约束。
如果两个方法具有不同的最终结果,那么它们即使动作相似,也不能简单地认为方法构建相同。
例如:
M₁:移动对象 → 对象到达目标位置
M₂:移动对象 → 对象进入特定状态
两者可能共享部分动作,但最终结果不同。
因此:
结果是方法构建的终点约束。
可以表示:
目标 → 方法结构 → 结果
目标规定方法要解决什么问题,结果规定方法是否达到预期状态。
18.15 方法构建的层次
方法构建具有明显的层次结构。
第一层:
目标层
确定为什么构建方法。
第二层:
对象层
确定方法作用于什么对象。
第三层:
条件层
确定方法成立需要什么条件。
第四层:
动作层
确定方法由哪些动作构成。
第五层:
过程层
确定动作如何组织。
第六层:
结果层
确定方法最终产生什么结果。
因此完整结构为:
目标 → 对象 → 条件 → 动作 → 过程 → 结果
这些元素经过组织后形成:
方法
18.16 方法构建匹配的层次
对应地,方法构建匹配也可以分为六个层次:
目标匹配
↓
对象匹配
↓
条件匹配
↓
动作匹配
↓
过程匹配
↓
结果匹配
↓
方法整体构建匹配
这形成一个由局部向整体的认知匹配过程。
18.17 方法构建匹配与方法匹配的区别
方法匹配和方法构建匹配具有联系,但不是完全相同的概念。
方法匹配主要回答:
两个方法是否属于对应的方法。
方法构建匹配进一步回答:
两个方法为什么对应,它们的构成结构是否对应。
因此:
方法匹配 = 方法整体对应判断
方法构建匹配 = 方法内部构建结构对应判断
例如:
方法A:
抓取 → 移动 → 放置
方法B:
夹取 → 搬运 → 放置
如果二者目标、对象、动作功能和过程结构一致,则可以认为:
方法A ↔ 方法B
而方法构建匹配进一步说明:
抓取 ↔ 夹取
移动 ↔ 搬运
放置 ↔ 放置
并且:
抓取 → 移动 → 放置
对应:
夹取 → 搬运 → 放置
因此,方法构建匹配是方法匹配的内部结构基础。
18.18 方法构建匹配与方法调用匹配的区别
方法构建匹配发生在方法结构层面。
方法调用匹配发生在方法被实际调用的层面。
可以表示为:
方法构建 → 方法形成 → 方法匹配 → 方法调用 → 调用匹配
方法构建匹配关注:
这个方法是如何形成的?
方法调用匹配关注:
当前这个调用是否正确地调用了这个方法?
例如:
Method = MoveObject
方法构建匹配研究:
MoveObject = 获取对象 → 移动对象 → 到达目标位置
方法调用匹配研究:
MoveObject(ObjectA, PositionB)
是否满足当前对象、参数、条件和状态。
因此二者必须保持独立。
18.19 方法构建匹配的形式模型
设两个方法:
M₁ = (G₁,O₁,C₁,A₁,P₁,R₁)
M₂ = (G₂,O₂,C₂,A₂,P₂,R₂)
定义方法构建匹配函数:
MC(M₁,M₂)
其中:
- MC:Method Construction Matching;
- M₁:第一个方法;
- M₂:第二个方法。
可以定义:
MC = F(G,O,C,A,P,R)
其中:
- G:目标匹配;
- O:对象匹配;
- C:条件匹配;
- A:动作匹配;
- P:过程匹配;
- R:结果匹配。
如果采用离散匹配值:
m ∈ {0,1}
其中:
- 1表示匹配;
- 0表示不匹配。
则:
MC(M₁,M₂) = 1
表示两个方法满足规定的方法构建匹配条件。
如果某些构建元素不匹配,则:
MC(M₁,M₂) = 0
或者进入部分匹配状态。
18.20 方法构建匹配结果
方法构建匹配不一定只有“匹配”和“不匹配”两种结果。
可以定义:
完全匹配
方法的目标、对象、条件、动作、过程和结果均对应。
结构匹配
主要方法结构对应,但部分元素存在差异。
部分匹配
只有部分动作或过程存在对应关系。
目标匹配
目标相同,但方法结构明显不同。
不匹配
目标、结构和结果均不存在有效对应关系。
因此:
方法匹配结果 → 完全匹配 / 结构匹配 / 部分匹配 / 目标匹配 / 不匹配
这使认知系统能够区分“目标相同的方法”和“结构真正相同的方法”。
18.21 方法构建的动态性
方法并不是绝对固定的。
在不同对象、不同条件和不同状态下,同一个目标可能形成不同的方法。
例如:
目标相同
↓
对象不同
↓
条件不同
↓
动作不同
↓
方法不同
因此:
同目标 ≠ 同方法
同时,一个方法也可能随着条件变化而产生新的构建结构。
例如:
正常条件 → 方法A
受限条件 → 方法B
特殊对象 → 方法C
因此方法构建具有动态性。
18.22 方法构建与认知经验
方法还可以由过去的行为和动作经验形成。
其基本过程可以表示为:
行为经验 → 动作序列 → 结果关系 → 结构归纳 → 方法形成
例如多次出现:
获取对象 → 移动对象 → 放置对象 → 目标完成
经过多次认知后,可以形成一个稳定的方法结构:
对象移动方法
因此方法不是简单记录某一次行为,而是对行为过程中的稳定结构进行组织。
这使方法成为连接经验与行为的重要认知结构。
18.23 方法构建匹配的认知意义
方法构建匹配使认知系统能够从“动作相似”进一步进入“方法结构相似”。
其意义主要体现在三个方面。
第一,能够识别不同名称下的相同结构。
例如:
抓取 → 移动 → 放置
与:
夹取 → 搬运 → 放置
虽然动作名称不同,但结构可能相同。
第二,能够区分相同目标下的不同方法。
例如:
直接移动
与:
先解除限制,再移动
目标可能相同,但构建结构不同。
第三,能够建立方法之间的结构关系。
形成:
方法A → 结构对应 → 方法B
从而形成方法知识网络。
18.24 方法构建匹配的工程对象
在认知工程中,可以将方法定义为独立对象。
Method
├── methodId
├── methodType
├── goal
├── objects
├── conditions
├── actions
├── process
├── result
└── structure
其中:
methodId
表示方法唯一标识。
methodType
表示方法类型。
goal
表示方法目标。
objects
表示方法涉及的对象。
conditions
表示方法成立条件。
actions
表示方法包含的动作。
process
表示动作过程。
result
表示方法结果。
structure
表示完整方法结构。
18.25 方法构建匹配器
可以建立独立的方法构建匹配对象:
MethodConstructionMatcher
其核心功能包括:
matchGoal()
matchObject()
matchCondition()
matchAction()
matchSequence()
matchProcess()
matchResult()
matchStructure()
matchMethodConstruction()
整体过程:
Method₁
↓
读取目标
↓
读取对象
↓
读取条件
↓
读取动作
↓
读取过程
↓
读取结果
↓
与 Method₂ 对应匹配
↓
生成方法构建匹配结果
18.26 方法构建匹配的数据结构
可以将方法构建关系抽象为:
MethodConstruction
{
goal
objects
conditions
actions
sequence
process
result
}
方法之间则形成:
MethodConstructionRelation
{
sourceMethod
targetMethod
goalMatch
objectMatch
conditionMatch
actionMatch
sequenceMatch
processMatch
resultMatch
structureMatch
}
由此,方法不再只是一个名称,而成为可以进行结构计算的认知对象。
18.27 方法构建匹配的完整认知链
方法构建匹配在整个认知体系中的位置可以表示为:
目标
↓
对象
↓
属性
↓
关系
↓
行为
↓
动作
↓
动作序列
↓
方法构建
↓
方法
↓
方法匹配
↓
方法调用
↓
状态变化
↓
场景变化
这里需要特别强调:
行为回答发生了什么。
动作回答具体做了什么。
方法回答通过什么结构完成目标。
方法构建回答这个方法是如何由认知元素组织形成的。
方法调用回答当前是否调用这个方法。
因此,它们分别处于不同的认知层级。
18.28 方法构建匹配的核心模型
最终可以形成如下模型:
目标 → 方法构建 → 方法 → 方法匹配 → 方法调用 → 动作执行 → 行为产生 → 状态变化 → 场景变化
其中:
目标规定方向。
方法构建形成解决目标的结构。
方法保存稳定的方法结构。
方法匹配寻找对应方法。
方法调用确定当前实际调用。
动作执行产生具体操作。
行为产生形成可观察的活动。
状态变化记录对象状态改变。
场景变化记录整体环境变化。
由此形成从目标到场景的完整认知链。
18.29 本章小结
方法构建匹配解决的是方法内部结构的对应问题。
方法不是一个简单的动作,也不是一个名称,而是由目标、对象、条件、动作、过程和结果等认知元素共同构成的结构。
方法构建可以表示为:
目标 + 对象 + 条件 + 动作 + 过程 + 结果 → 方法
方法构建匹配则表示:
方法结构₁ ↔ 方法结构₂
其核心过程为:
目标匹配 → 对象匹配 → 条件匹配 → 动作匹配 → 顺序匹配 → 过程匹配 → 结果匹配 → 方法结构匹配
由此可以将认知匹配进一步从单个对象、属性、关系、行为和动作推进到方法结构层面。
最终形成:
对象匹配 → 属性匹配 → 关系匹配 → 行为匹配 → 动作匹配 → 方法构建匹配 → 方法匹配 → 方法调用匹配
这一区分使方法不再只是“可以执行的一组动作”,而成为具有目标约束、对象约束、条件约束、动作结构、过程结构和结果约束的独立认知结构,为后续的方法选择、方法调用、行为执行和状态变化提供认知基础。