第19章 方法匹配
19.1 方法匹配的提出背景
在认知过程中,系统面对一个目标时,不仅需要识别对象、属性、关系、行为和动作,还需要判断当前所面对的方法与已有方法之间是否存在对应关系。
例如,一个对象需要从位置A移动到位置B,当前形成的方法可能是:
抓取 → 移动 → 放置
系统已有的方法可能是:
夹取 → 搬运 → 放置
两个方法虽然使用了不同的动作名称,但其目标、对象、过程和结果可能具有对应关系。
因此,认知系统不能只通过方法名称判断两个方法是否相同,也不能只比较某几个动作,而需要从方法整体结构判断:
方法A是否与方法B属于相同、相似、对应、替代或不同的方法。
由此产生方法匹配理论。
方法匹配处于方法构建匹配之后、方法调用匹配之前。
完整关系可以表示为:
方法元素 → 方法构建 → 方法形成 → 方法匹配 → 方法调用
方法构建解决:
方法如何形成?
方法匹配解决:
已经形成的两个方法是否对应?
方法调用匹配解决:
当前是否应该调用某一个方法?
三个概念具有不同的认知职责。
19.2 方法匹配的定义
方法匹配(Method Matching)是指认知系统根据目标、对象、条件、动作、过程、结构和结果等特征,对两个或多个方法进行对应性判断,以确定它们之间是否存在方法上的认知关系。
设:
M₁ = 方法A
M₂ = 方法B
则方法匹配表示为:
M₁ ↔ M₂
其中:
- M₁:被匹配方法;
- M₂:目标方法;
- ↔:方法之间的对应关系。
方法匹配的结果可以是:
相同
高度对应
部分对应
可替代
弱对应
不匹配
因此,方法匹配不是简单的名称比较,而是对方法整体认知结构进行判断。
19.3 方法匹配的基本对象
方法匹配的基本对象是已经形成的方法。
一个方法可以表示为:
M = (G,O,C,A,P,R)
其中:
- G:Goal,目标;
- O:Object,对象;
- C:Condition,条件;
- A:Action,动作;
- P:Process,过程;
- R:Result,结果。
因此两个方法:
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₂
这些局部匹配关系共同构成方法整体匹配。
19.4 方法匹配与方法构建匹配的区别
方法构建匹配和方法匹配关系密切,但两者不是同一个概念。
方法构建匹配研究:
一个方法内部是如何构建的。
方法匹配研究:
两个已经形成的方法之间是否对应。
例如:
方法A:
目标 → 对象 → 条件 → 动作 → 过程 → 结果
方法构建匹配研究这些元素如何组织成为方法A。
而方法匹配研究:
方法A ↔ 方法B
即判断方法A和方法B是否属于对应的方法。
因此:
方法构建匹配 = 方法内部结构匹配
方法匹配 = 方法之间整体关系匹配
这是两个不同的认知层次。
19.5 方法匹配与方法调用匹配的区别
方法匹配发生在方法知识层。
方法调用匹配发生在运行过程层。
例如系统中存在:
M₁ = MoveObject
M₂ = CarryObject
方法匹配判断:
MoveObject ↔ CarryObject
是否存在目标、对象、过程和结果上的对应关系。
而实际执行时出现:
MoveObject(ObjectA, PositionB)
此时需要判断:
当前对象是否正确?
当前参数是否正确?
当前条件是否满足?
当前状态是否允许调用?
这属于方法调用匹配。
因此:
方法匹配 → 方法调用匹配
不是:
方法匹配 = 方法调用匹配
前者属于方法认知关系,后者属于实际调用关系。
19.6 方法匹配的核心条件
方法匹配至少包含以下几个基本条件:
目标对应
对象对应
条件对应
动作对应
过程对应
结果对应
其中,目标和结果通常决定方法的整体方向,动作和过程决定方法的实现结构,对象和条件决定方法适用范围。
因此可以表示为:
方法匹配 = 目标 + 对象 + 条件 + 动作 + 过程 + 结果
19.7 目标匹配
目标匹配是方法匹配的重要基础。
如果两个方法具有完全不同的目标,则即使它们包含部分相同动作,也不能直接认为两个方法匹配。
例如:
方法A:打开门
方法B:关闭门
两者都可能包含:
接触门 → 操作门
但是目标不同:
G₁ = Open
G₂ = Close
因此:
G₁ ≠ G₂
整体方法不能直接判定为相同。
目标匹配解决的是:
两个方法是否朝向同一个认知目标。
19.8 对象匹配
方法必须作用于对象,因此对象也是方法匹配的重要条件。
例如:
方法A:打开门
方法B:打开箱子
两者目标都可以描述为“打开”,但对象类别不同。
因此:
Goal₁ = Goal₂
并不能推出:
Method₁ = Method₂
还必须判断:
Object₁ ↔ Object₂
对象匹配进一步可以进入:
对象类型 → 对象属性 → 对象状态
例如:
Door + Closed
和:
Box + Closed
即使状态相同,也不能因为“Closed”相同而认为两个方法相同。
因此方法匹配必须保持对象结构。
19.9 条件匹配
方法具有适用条件。
设:
C = {C₁,C₂,…,Cₙ}
如果两个方法的条件完全不同,则它们可能属于不同的方法。
例如:
方法A:直接抓取
条件:
对象可直接接触
而:
方法B:先解除限制,再抓取
条件:
对象受到限制
两个方法虽然最终都可以实现抓取,但方法条件不同。
因此:
条件差异 → 方法差异
条件匹配用于判断两个方法是否具有相同或者对应的适用范围。
19.10 动作匹配
方法通常由多个动作构成。
例如:
M₁ = A₁ → A₂ → A₃
M₂ = B₁ → B₂ → B₃
需要判断:
A₁ ↔ B₁
A₂ ↔ B₂
A₃ ↔ B₃
动作匹配越高,两个方法的结构通常越接近。
但是:
动作匹配高 ≠ 方法一定相同
因为方法还受到目标、条件、对象、过程和结果的约束。
19.11 过程匹配
过程是方法的重要组成部分。
例如:
方法A:
获取 → 操作 → 完成
方法B:
获取 → 检查 → 操作 → 完成
两者具有相同的起点和终点,但是中间增加了一个检查过程。
因此:
动作集合具有一定对应关系
但:
过程结构并不完全相同
这说明方法匹配必须考虑过程,而不能只比较动作集合。
19.12 结果匹配
方法最终产生结果。
设:
R₁ = 方法A的结果
R₂ = 方法B的结果
如果:
R₁ ↔ R₂
则说明两个方法在结果方向上具有对应关系。
例如:
方法A → 对象到达目标位置
方法B → 对象到达目标位置
虽然具体动作可能不同,但结果一致,因此两者存在方法层面的对应可能。
但是结果相同仍然不能单独证明方法相同。
因此:
结果匹配是方法匹配的重要条件,但不是唯一条件。
19.13 方法整体匹配
方法整体匹配是将多个局部匹配结果综合起来。
设:
Gm = GoalMatch
Om = ObjectMatch
Cm = ConditionMatch
Am = ActionMatch
Pm = ProcessMatch
Rm = ResultMatch
则方法匹配可以表示为:
MM = F(Gm,Om,Cm,Am,Pm,Rm)
其中:
MM = Method Matching
表示方法整体匹配结果。
如果主要结构全部对应:
MM → 完全匹配
如果核心结构对应但存在部分差异:
MM → 部分匹配
如果目标相同但方法过程不同:
MM → 目标对应
如果目标和结构都不存在对应:
MM → 不匹配
19.14 方法匹配的类型
根据匹配程度,可以将方法匹配划分为以下类型。
19.14.1 相同方法匹配
两个方法的目标、对象、条件、动作、过程和结果基本一致。
表示:
M₁ = M₂
这种匹配说明两个方法可以视为同一方法。
19.14.2 等价方法匹配
两个方法内部动作不同,但最终目标和结果一致,并且在认知功能上可以实现相同效果。
表示:
M₁ ≈ M₂
这里的“≈”表示方法等价或功能对应,而不是结构完全相同。
19.14.3 部分方法匹配
两个方法只有部分结构对应。
例如:
A₁ → A₂ → A₃
和:
B₁ → B₂ → B₃ → B₄
其中前三个动作存在对应关系,但整体过程不同。
因此:
M₁ ⇢ M₂
表示存在部分对应。
19.14.4 替代方法匹配
两个方法的内部结构不同,但是都可以完成同一目标。
例如:
方法A:人工操作
方法B:机械操作
如果两者都能够实现同一个目标,则可以形成替代方法关系。
表示:
M₁ ⇔ M₂
这种关系强调方法功能上的可替代性。
19.14.5 不匹配
如果目标、对象、条件、过程和结果均不存在有效对应关系,则:
M₁ ≠ M₂
形成方法不匹配。
19.15 方法匹配的结构模型
方法匹配可以表示为:
M₁
↓
目标
↓
对象
↓
条件
↓
动作
↓
过程
↓
结果
与另一个方法:
M₂
↓
目标
↓
对象
↓
条件
↓
动作
↓
过程
↓
结果
进行对应。
最终形成:
M₁ ↔ M₂
因此,方法匹配实际上是一个结构对应过程。
19.16 方法匹配的优先级
不同方法元素对整体方法的影响并不完全相同。
通常可以形成:
目标 → 对象 → 条件 → 过程 → 结果 → 动作细节
目标决定方法方向。
对象决定方法作用范围。
条件决定方法适用范围。
过程决定方法组织方式。
结果决定方法最终效果。
动作细节决定方法内部具体操作。
因此,在方法匹配过程中,应当避免只依据单一动作进行判断。
19.17 方法名称匹配不能代替方法匹配
方法名称可以作为方法识别依据,但不能作为完整匹配依据。
例如:
Move
MoveObject
Carry
这些名称可能不同,但它们可能具有一定的方法对应关系。
反过来,两个名称相同的方法也不一定完全相同。
例如:
Open
可以作用于:
Door
也可以作用于:
Box
其对象、条件和过程可能不同。
因此:
名称匹配 ≠ 方法匹配
正确关系应该是:
名称识别 → 方法识别 → 方法结构读取 → 方法匹配
19.18 方法匹配与行为匹配
行为匹配研究行为之间是否对应。
方法匹配研究方法之间是否对应。
二者存在上下关系:
方法 → 动作 → 行为
例如:
方法:
抓取 → 移动 → 放置
产生行为:
对象被移动
行为匹配可能只判断:
行为A ↔ 行为B
而方法匹配进一步判断:
方法A ↔ 方法B
因此,一个行为可能由多个不同方法产生。
形成:
方法A → 行为
方法B → 行为
两个方法产生相似行为,并不意味着两个方法完全相同。
19.19 方法匹配与动作匹配
动作匹配属于更低层次。
例如:
抓取 ↔ 夹取
可以形成动作匹配。
但是:
抓取 → 移动 → 放置
与:
夹取 → 搬运 → 放置
则需要进入方法匹配。
因此:
动作匹配是方法匹配的组成条件之一。
但:
动作匹配不能替代方法匹配。
19.20 方法匹配与状态匹配
方法最终会影响对象状态。
例如:
方法A → 门打开
方法B → 门打开
两种方法都可以产生:
State = Open
因此可以形成:
方法 → 状态结果
但是相同状态并不能说明方法相同。
可能存在:
方法A → 直接打开
方法B → 解除锁定 → 打开
最终状态相同,但方法不同。
因此:
状态匹配 ≠ 方法匹配
状态是方法结果的重要参考,但不能独立决定方法关系。
19.21 方法匹配的认知过程
完整的方法匹配过程可以表示为:
获取方法M₁
↓
获取方法M₂
↓
识别目标
↓
匹配目标
↓
匹配对象
↓
匹配条件
↓
匹配动作
↓
匹配过程
↓
匹配结果
↓
形成整体方法匹配关系
↓
输出匹配类型
即:
M₁ → 元素解析 → 结构比较 → 整体判断 → 匹配结果
19.22 方法匹配结果
方法匹配的结果可以形成一个独立的认知对象:
MethodMatchResult
{
sourceMethod
targetMethod
goalMatch
objectMatch
conditionMatch
actionMatch
processMatch
resultMatch
matchType
relation
}
其中:
sourceMethod
表示源方法。
targetMethod
表示目标方法。
goalMatch
表示目标匹配结果。
objectMatch
表示对象匹配结果。
conditionMatch
表示条件匹配结果。
actionMatch
表示动作匹配结果。
processMatch
表示过程匹配结果。
resultMatch
表示结果匹配结果。
matchType
表示匹配类型。
relation
表示最终方法关系。
19.23 方法匹配的工程对象
在认知工程中,可以将方法匹配建立为独立对象:
MethodMatcher
├── matchGoal()
├── matchObject()
├── matchCondition()
├── matchAction()
├── matchProcess()
├── matchResult()
├── classifyMatch()
└── matchMethod()
整体调用关系为:
Method₁ → MethodMatcher → Method₂ → MatchResult
方法匹配器并不负责创建方法,也不负责执行方法。
它只负责:
识别方法之间的对应关系。
因此方法匹配器应当与:
MethodBuilder
和:
MethodInvocation
保持职责分离。
19.24 方法构建、方法匹配与方法调用的三层结构
到本章为止,可以建立清晰的三层关系。
第一层:
方法构建
解决:
方法如何形成。
第二层:
方法匹配
解决:
方法之间如何对应。
第三层:
方法调用
解决:
当前调用哪个方法。
因此完整结构为:
动作 → 方法构建 → 方法
↓
方法 → 方法匹配 → 对应方法
↓
目标 → 方法选择 → 方法调用
这三个层次构成方法认知的完整链条。
19.25 方法匹配的核心原则
方法匹配需要遵循几个基本原则。
第一,目标优先原则。
方法首先必须具有相同或对应的目标方向。
第二,对象约束原则。
方法必须考虑实际作用对象。
第三,条件约束原则。
方法匹配不能脱离适用条件。
第四,结构判断原则。
不能仅通过一个动作判断两个方法。
第五,过程判断原则。
方法的动作组织过程属于方法结构的一部分。
第六,结果验证原则。
方法最终结果可以作为方法对应关系的重要验证依据。
因此:
目标 + 对象 + 条件 + 结构 + 过程 + 结果 → 方法匹配
19.26 方法匹配的完整模型
综合本章内容,可以建立:
方法M₁
↓
目标识别
↓
对象识别
↓
条件识别
↓
动作识别
↓
过程识别
↓
结果识别
↓
方法结构
↓
与M₂进行对应
↓
方法匹配
↓
相同 / 等价 / 部分 / 替代 / 不匹配
该模型表明,方法匹配不是单一条件判断,而是多层认知元素共同形成的整体判断。
19.27 方法匹配在认知体系中的位置
在前面的认知匹配体系中,可以形成:
对象匹配
↓
属性匹配
↓
关系匹配
↓
行为匹配
↓
动作匹配
↓
方法构建匹配
↓
方法匹配
↓
方法调用匹配
↓
状态匹配
↓
场景匹配
其中:
对象匹配解决对象对应。
属性匹配解决对象特征对应。
关系匹配解决对象之间关系对应。
行为匹配解决行为对应。
动作匹配解决具体操作对应。
方法构建匹配解决方法内部结构对应。
方法匹配解决方法整体对应。
方法调用匹配解决实际调用对应。
状态匹配解决状态对应。
场景匹配解决整体场景对应。
这样就形成了从认知元素到认知方法,再到实际执行和场景状态的完整匹配体系。
19.28 本章小结
方法匹配是认知匹配理论中的独立层次。
它建立在方法已经形成的基础之上,不研究方法如何构建,而研究已经形成的方法之间是否存在对应关系。
方法可以表示为:
M = (G,O,C,A,P,R)
方法匹配则表示为:
M₁ ↔ M₂
其主要匹配维度包括:
目标匹配
对象匹配
条件匹配
动作匹配
过程匹配
结果匹配
最终形成:
方法整体匹配
方法匹配的结果可以进一步分为:
相同方法、等价方法、部分匹配、替代方法、不匹配。
由此形成清晰的理论分工:
方法构建匹配 → 判断方法内部结构
方法匹配 → 判断方法之间关系
方法调用匹配 → 判断实际调用关系
因此,方法认知链条进一步完整化:
目标 → 动作 → 方法构建 → 方法 → 方法匹配 → 方法调用 → 行为 → 状态 → 场景
方法由动作形成,通过方法匹配与其他方法建立认知关系,再通过方法调用进入具体执行过程,最终影响对象状态和场景状态。
这使“方法”从一个单纯的执行概念转变为一个具有目标、对象、条件、动作、过程和结果结构,并能够参与认知匹配、方法选择和方法调用的独立认知对象。