第26章 方法匹配理论
26.1 方法匹配的提出背景
第25章建立了方法理论,明确了方法由目标、对象、条件、状态、动作、过程和结果组成:
M=(G,O,C,S,A,P,R)M=(G,O,C,S,A,P,R)
但是,系统拥有一个方法,并不意味着这个方法一定适用于当前任务。
同一个目标,在不同对象、不同状态、不同条件下,可能需要使用不同的方法。
例如:
目标=打开容器目标=打开容器
当对象是“门”时,可以使用推开方法;当对象是“瓶子”时,可能需要使用旋开方法。
因此:
目标相同≠方法相同目标相同\neq方法相同
同时,即使对象相同,如果当前状态不同,也可能需要不同的方法。
因此,方法使用之前必须进行方法匹配。
**方法匹配(Method Matching)**是指将当前目标、对象、状态、条件与候选方法进行结构比较,以判断方法是否适用于当前认知任务的过程。
其基本过程为:
当前状态→方法条件→方法匹配→方法选择→方法组合或替换当前状态 \rightarrow 方法条件 \rightarrow 方法匹配 \rightarrow 方法选择 \rightarrow 方法组合或替换
方法匹配理论解决的不是“有没有方法”,而是:
当前情况下,哪个方法能够满足当前目标。
26.2 当前状态
**当前状态(Current State)**是方法匹配发生时,对象、环境、主体以及相关关系所处的实际状态。
当前状态可以表示为:
Sc=(O,A,S,R,C,T)S_c=(O,A,S,R,C,T)
其中:
- OO:当前对象;
- AA:对象当前属性;
- SS:对象当前状态;
- RR:当前关系;
- CC:当前条件;
- TT:当前时间或状态时刻。
当前状态是方法匹配的起点。
例如,一个杯子的当前状态为:
O=杯子O=杯子 S=空S=空 R=桌面R=桌面 C=存在水源C=存在水源
系统需要实现:
G=装水G=装水
那么方法匹配就需要寻找能够使:
Scurrent=空S_{current}=空
变化为:
Starget=有水S_{target}=有水
的方法。
因此:
当前状态→目标状态当前状态 \rightarrow 目标状态
决定了方法匹配的方向。
26.3 当前状态与目标状态
方法匹配不能只判断当前状态,还必须判断目标状态。
定义:
Sc=当前状态S_c=当前状态 Sg=目标状态S_g=目标状态
如果存在方法 MM,使:
M:Sc→SgM:S_c\rightarrow S_g
则该方法具有实现当前目标的可能性。
例如:
杯子为空→倒水方法→杯子有水杯子为空 \rightarrow 倒水方法 \rightarrow 杯子有水
因此:
Sc=空S_c=空 Sg=有水S_g=有水
方法匹配的核心之一就是寻找:
M(Sc,Sg)M(S_c,S_g)
即能够完成当前状态向目标状态转换的方法。
26.4 方法条件
方法条件是方法能够成立和使用的必要条件。
第25章已经定义方法条件:
CM={c1,c2,…,cn}C_M=\{c_1,c_2,\ldots,c_n\}
当前环境也具有条件集合:
Cc={c1′,c2′,…,cm′}C_c=\{c’_1,c’_2,\ldots,c’_m\}
方法匹配需要判断:
CM⊆CcC_M\subseteq C_c
是否成立。
如果方法需要:
CM={有水源,杯子为空}C_M=\{有水源,杯子为空\}
而当前条件为:
Cc={有水源,杯子为空,桌面存在}C_c=\{有水源,杯子为空,桌面存在\}
则方法条件得到满足。
如果:
CM={有水源,杯子为空}C_M=\{有水源,杯子为空\}
而当前只有:
Cc={杯子为空}C_c=\{杯子为空\}
则:
有水源∉Cc有水源\notin C_c
方法不能直接匹配。
因此:
方法条件⊆当前条件方法条件 \subseteq 当前条件
是方法匹配的重要条件。
26.5 当前状态与方法条件的匹配
当前状态和方法条件之间存在直接关系。
方法条件描述:
方法要求什么。
当前状态描述:
当前实际有什么。
因此:
当前状态↔方法条件当前状态\leftrightarrow方法条件
可以定义状态条件匹配:
SCM(Sc,CM)SCM(S_c,C_M)
当方法要求的状态条件全部得到当前状态支持时:
SCM=1SCM=1
否则:
SCM=0SCM=0
例如:
方法要求:
S=关闭S=关闭
当前状态:
Sc=关闭S_c=关闭
则:
SCM=1SCM=1
如果:
Sc=打开S_c=打开
则:
SCM=0SCM=0
这说明方法匹配不是单纯比较方法名称,而是比较方法的适用结构与当前认知状态。
26.6 方法匹配
方法匹配是当前任务需求与候选方法之间的结构比较过程。
当前任务可以表示为:
Q=(G,O,C,S,R)Q=(G,O,C,S,R)
候选方法:
M=(Gm,Om,Cm,Sm,Am,Pm,Rm)M=(G_m,O_m,C_m,S_m,A_m,P_m,R_m)
方法匹配需要比较:
G↔GmG\leftrightarrow G_m O↔OmO\leftrightarrow O_m C↔CmC\leftrightarrow C_m S↔SmS\leftrightarrow S_m R↔RmR\leftrightarrow R_m
并进一步判断动作与过程是否能够完成目标。
因此:
MM(Q,M)=f(Gm,Om,Cm,Sm,Am,Pm,Rm)MM(Q,M)=f(G_m,O_m,C_m,S_m,A_m,P_m,R_m)
方法匹配不是单一条件,而是多个结构条件共同决定的结果。
26.7 目标匹配
目标是方法匹配的第一层。
定义:
GM(Q,M)GM(Q,M)
表示任务目标与方法目标之间的匹配程度。
如果:
Gq=GmG_q=G_m
则:
GM=1GM=1
如果二者完全不同:
GM=0GM=0
如果方法只能完成任务的一部分,则:
0<GM<10<GM<1
例如:
目标=打开门目标=打开门
候选方法:
方法A=打开门方法A=打开门
则目标完全匹配。
而:
方法B=移动到门前方法B=移动到门前
只能提供前置步骤,因此属于部分匹配。
26.8 对象匹配
目标相同还不代表方法可以使用。
还需要判断方法作用对象。
定义:
OM(Oq,Om)OM(O_q,O_m)
表示任务对象与方法对象之间的匹配。
例如:
任务对象=门任务对象=门 方法对象=门方法对象=门
则:
OM=1OM=1
如果:
任务对象=杯子任务对象=杯子
而方法对象为:
门门
则:
OM=0OM=0
对象类匹配可以先于对象实例匹配。
即:
对象类匹配→对象实例匹配对象类匹配 \rightarrow 对象实例匹配
例如:
汽车类→汽车实例汽车类 \rightarrow 汽车实例
先确认方法适用于汽车,再判断当前具体汽车是否满足要求。
26.9 状态匹配
状态匹配判断当前对象状态是否满足方法的初始状态要求。
定义:
SM(Sc,Sm)SM(S_c,S_m)
其中:
- ScS_c:当前状态;
- SmS_m:方法要求的状态。
当:
Sc=SmS_c=S_m
时,可以形成完全状态匹配。
如果当前状态经过允许的前置方法能够转换为方法要求状态,则可以形成间接匹配:
Sc→Mp→SmS_c \rightarrow M_p \rightarrow S_m
其中 MpM_p 为前置方法。
因此,状态不匹配并不一定意味着最终任务无法完成,而可能意味着需要先执行另一个方法。
26.10 方法匹配的综合判断
可以建立方法匹配的基本模型:
MM=GM∧OM∧CM∧SM∧RMMM=GM\land OM\land CM\land SM\land RM
其中:
- GMGM:目标匹配;
- OMOM:对象匹配;
- CMCM:条件匹配;
- SMSM:状态匹配;
- RMRM:结果匹配。
当:
MM=1MM=1
表示候选方法满足基本匹配条件。
但是,如果候选方法存在多个,还不能直接执行。
必须进入:
方法匹配→方法选择方法匹配 \rightarrow 方法选择
26.11 方法匹配程度
方法并不一定只有“匹配”和“不匹配”两种结果。
可以定义:
MM∈{0,1,2,3,4}MM\in\{0,1,2,3,4\}
其中:
- 00:不匹配;
- 11:弱匹配;
- 22:部分匹配;
- 33:高度匹配;
- 44:完全匹配。
例如:
M1=4M_1=4 M2=3M_2=3 M3=2M_3=2
则:
M1>M2>M3M_1>M_2>M_3
说明方法 M1M_1 在当前任务中的结构匹配程度最高。
但是,匹配程度不能单独决定方法选择。
还必须考虑方法条件、执行能力、过程完整性和结果可靠性。
26.12 方法选择
**方法选择(Method Selection)**是从多个匹配方法中,根据目标、状态、条件、结果和方法结构选择适合当前任务的方法的过程。
如果候选方法集合为:
M={M1,M2,…,Mn}M=\{M_1,M_2,\ldots,M_n\}
首先进行方法匹配:
Mi→MMiM_i\rightarrow MM_i
然后形成候选集合:
M′={Mi∣MMi>0}M’=\{M_i|MM_i>0\}
再根据匹配程度和适用条件进行选择。
可以表示为:
M∗=argmaxMi∈M′Score(Mi)M^*=\arg\max_{M_i\in M’}Score(M_i)
其中:
- M∗M^*:最终选择的方法;
- Score(Mi)Score(M_i):方法综合评价值。
综合评价可以考虑:
Score=wgG+woO+wcC+wsS+wrR+wpPScore= w_gG+ w_oO+ w_cC+ w_sS+ w_rR+ w_pP
其中:
- GG:目标匹配;
- OO:对象匹配;
- CC:条件匹配;
- SS:状态匹配;
- RR:结果匹配;
- PP:过程匹配;
- ww:各因素的权重。
权重用于表达不同匹配因素的重要程度。
26.13 方法选择的优先原则
方法选择应遵循结构优先原则。
第一优先:
目标匹配目标匹配
第二优先:
对象匹配对象匹配
第三优先:
状态匹配状态匹配
第四优先:
条件匹配条件匹配
第五优先:
过程完整性过程完整性
第六优先:
结果一致性结果一致性
因此:
目标→对象→状态→条件→过程→结果目标 \rightarrow 对象 \rightarrow 状态 \rightarrow 条件 \rightarrow 过程 \rightarrow 结果
如果核心目标不匹配,即使其他条件很好,也不能作为优先方法。
26.14 方法组合
当一个方法不能独立完成目标时,需要将多个方法组合起来。
**方法组合(Method Composition)**是将两个或多个具有结构关联的方法按照目标、状态、条件和结果连接起来,形成新的方法过程。
假设:
M1:S0→S1M_1:S_0\rightarrow S_1 M2:S1→S2M_2:S_1\rightarrow S_2
则可以组合:
M1→M2M_1\rightarrow M_2
形成:
S0→M1→S1→M2→S2S_0 \rightarrow M_1 \rightarrow S_1 \rightarrow M_2 \rightarrow S_2
例如:
寻找杯子→拿起杯子→倒水寻找杯子 \rightarrow 拿起杯子 \rightarrow 倒水
可以由三个方法组成:
M1→M2→M3M_1\rightarrow M_2\rightarrow M_3
方法组合的关键不是简单排列,而是前一个方法的结果必须能够满足后一个方法的前置条件。
即:
Result(M1)⊇Condition(M2)Result(M_1)\supseteq Condition(M_2)
26.15 方法组合的条件
两个方法能够组合,需要满足以下基本条件:
GoalCompatibility=1GoalCompatibility=1 ObjectCompatibility=1ObjectCompatibility=1 StateContinuity=1StateContinuity=1 ConditionCompatibility=1ConditionCompatibility=1 ResultConditionMatch=1ResultConditionMatch=1
因此:
MC=GC∧OC∧SC∧CC∧RCMC= GC\land OC\land SC\land CC\land RC
其中:
- GCGC:目标兼容;
- OCOC:对象兼容;
- SCSC:状态连续;
- CCCC:条件兼容;
- RCRC:结果与下一方法条件兼容。
只有满足这些条件,方法组合才具有结构完整性。
26.16 方法组合的类型
方法可以形成不同的组合结构。
顺序组合:
M1→M2→M3M_1\rightarrow M_2\rightarrow M_3
表示方法按照固定顺序执行。
条件组合:
C1→M1C_1\rightarrow M_1 C2→M2C_2\rightarrow M_2
表示不同条件选择不同方法。
并行组合:
M1∥M2M_1\parallel M_2
表示两个方法之间不存在直接的先后依赖。
循环组合:
M1→M2→M1M_1\rightarrow M_2\rightarrow M_1
表示方法可以重复使用。
因此,方法组合可以形成复杂的结构:
MethodSet→MethodStructureMethodSet \rightarrow MethodStructure
26.17 方法替换
当当前方法无法满足目标时,可以寻找另一个方法进行替换。
**方法替换(Method Substitution)**是指在目标基本保持一致的情况下,用另一个具有相同或兼容目标结果的方法替代原方法。
设:
M1M_1
为原方法,
M2M_2
为候选替代方法。
如果:
Goal(M1)=Goal(M2)Goal(M_1)=Goal(M_2)
并且:
Result(M1)≈Result(M2)Result(M_1)\approx Result(M_2)
则可以考虑:
M1→M2M_1\rightarrow M_2
这里的 ≈\approx 表示结果具有功能等价或目标等价关系,而不要求内部动作完全相同。
例如:
方法A→推开门方法A \rightarrow 推开门
如果无法使用,而存在:
方法B→拉开门方法B \rightarrow 拉开门
只要二者都能实现:
门从关闭→打开门从关闭\rightarrow打开
则:
MA↔MBM_A\leftrightarrow M_B
可以形成替代关系。
26.18 方法替换的条件
方法替换不是任意替换。
至少需要判断:
GoalMatch=1GoalMatch=1 ObjectMatch=1ObjectMatch=1 ResultCompatibility=1ResultCompatibility=1 ConditionAvailable=1ConditionAvailable=1 StateApplicable=1StateApplicable=1
因此:
Substitute(M1,M2)=1Substitute(M_1,M_2)=1
当:
GM∧OM∧RC∧CA∧SA=1GM\land OM\land RC\land CA\land SA=1
其中:
- GMGM:目标匹配;
- OMOM:对象匹配;
- RCRC:结果兼容;
- CACA:替代方法条件可获得;
- SASA:替代方法状态适用。
如果替代方法的目标不同,或者无法产生目标所要求的结果,则不能进行方法替换。
26.19 方法匹配、选择、组合与替换的关系
四者不是相互独立的过程,而构成连续的方法认知结构。
首先:
当前任务→方法匹配当前任务 \rightarrow 方法匹配
得到候选方法。
然后:
候选方法→方法选择候选方法 \rightarrow 方法选择
选择最适合的方法。
如果单一方法无法完成目标:
方法→方法组合方法 \rightarrow 方法组合
如果当前方法无法使用:
当前方法→方法替换当前方法 \rightarrow 方法替换
因此形成:
当前状态→方法条件→方法匹配→方法选择→方法组合→方法替换→目标实现当前状态 \rightarrow 方法条件 \rightarrow 方法匹配 \rightarrow 方法选择 \rightarrow 方法组合 \rightarrow 方法替换 \rightarrow 目标实现
但实际运行并不是所有步骤都必须发生。
如果存在完全匹配方法:
匹配→选择→执行匹配 \rightarrow 选择 \rightarrow 执行
如果不存在单一完整方法:
匹配→选择→组合→执行匹配 \rightarrow 选择 \rightarrow 组合 \rightarrow 执行
如果原方法无法使用:
匹配→替换→重新匹配匹配 \rightarrow 替换 \rightarrow 重新匹配
因此形成动态方法调整过程。
26.20 方法匹配的动态性
方法匹配不是一次性的。
当对象状态发生变化时,原方法的适用性可能发生变化。
例如:
S1→M1→S2S_1 \rightarrow M_1 \rightarrow S_2
如果在执行过程中实际产生:
S2′≠S2S_2’\neq S_2
则原方法的后续条件可能不再成立。
此时需要重新进行:
当前状态→方法匹配当前状态 \rightarrow 方法匹配
因此:
方法匹配→方法执行→状态变化→重新匹配方法匹配 \rightarrow 方法执行 \rightarrow 状态变化 \rightarrow 重新匹配
这使方法匹配成为动态认知过程,而不是静态查询过程。
26.21 方法匹配与知识
方法匹配依赖结构化知识。
第24章建立了:
K=(O,A,S,R,M,B)K=(O,A,S,R,M,B)
方法作为知识结构中的一部分,可以从知识中被读取。
因此:
知识→方法集合→方法匹配知识 \rightarrow 方法集合 \rightarrow 方法匹配
同时,当前状态也需要通过知识结构进行表示:
当前对象→属性→状态→关系当前对象 \rightarrow 属性 \rightarrow 状态 \rightarrow 关系
然后与方法结构进行比较。
因此:
当前知识结构↔方法知识结构当前知识结构 \leftrightarrow 方法知识结构
构成方法匹配的基础。
26.22 方法匹配与行为
方法匹配的最终目的不是获得一个抽象的匹配结果,而是为后续行为提供合适的方法。
因此:
方法匹配→方法选择→方法调用→行为方法匹配 \rightarrow 方法选择 \rightarrow 方法调用 \rightarrow 行为
如果方法匹配成功,但没有形成可执行的方法,则不能形成实际行为。
因此:
MethodMatch=1MethodMatch=1
只是表示:
方法在结构上适合当前任务。
而:
Executable=1Executable=1
才表示:
当前条件下可以进一步进入方法执行。
因此:
方法匹配≠方法执行方法匹配\neq方法执行
26.23 工程映射
在认知工程中,可以建立独立的方法匹配对象:
MethodMatch
MethodMatcher
MethodSelector
MethodComposer
MethodSubstituter
其关系为:
CurrentState
↓
MethodCondition
↓
MethodMatcher
↓
CandidateMethods
↓
MethodSelector
↓
SelectedMethod
↓
MethodComposer / MethodSubstituter
↓
MethodInvocation
核心对象可以表示为:
MethodMatch
├── GoalMatch
├── ObjectMatch
├── ConditionMatch
├── StateMatch
├── ProcessMatch
└── ResultMatch
方法选择对象:
MethodSelector
├── collectCandidates()
├── scoreMethods()
├── rankMethods()
└── selectMethod()
方法组合对象:
MethodComposer
├── checkCompatibility()
├── connectMethods()
├── buildSequence()
└── compose()
方法替换对象:
MethodSubstituter
├── findAlternatives()
├── checkSubstitution()
├── compareResults()
└── substitute()
最终形成工程结构:
CurrentState→MethodMatcher→MethodSelector→MethodComposer→MethodSubstituter→MethodInvocationCurrentState \rightarrow MethodMatcher \rightarrow MethodSelector \rightarrow MethodComposer \rightarrow MethodSubstituter \rightarrow MethodInvocation
26.24 方法匹配的统一模型
综合本章,可以建立方法匹配统一模型:
Q=(G,O,C,S,R)Q=(G,O,C,S,R)
表示当前任务需求。
候选方法:
M=(Gm,Om,Cm,Sm,Am,Pm,Rm)M=(G_m,O_m,C_m,S_m,A_m,P_m,R_m)
匹配:
MM(Q,M)MM(Q,M)
综合判断:
MM=GM∧OM∧CM∧SM∧RMMM= GM\land OM\land CM\land SM\land RM
匹配成功后:
候选方法→方法选择候选方法 \rightarrow 方法选择
如果一个方法无法完成目标:
方法→方法组合方法 \rightarrow 方法组合
如果方法不可适用:
方法→方法替换方法 \rightarrow 方法替换
因此形成完整过程:
当前状态→方法条件→方法匹配→方法选择→方法组合/替换→目标实现\boxed{ 当前状态 \rightarrow 方法条件 \rightarrow 方法匹配 \rightarrow 方法选择 \rightarrow 方法组合/替换 \rightarrow 目标实现 }
26.25 本章总结
本章建立了方法匹配理论。
第25章解决的是“方法是什么”,第26章进一步解决:
面对当前状态和目标,如何判断一个方法是否适合、如何选择方法、如何组合多个方法,以及如何用替代方法解决原方法不可用的问题。
方法匹配的起点是当前状态:
ScS_c
方法具有自身的适用条件:
CMC_M
二者进行结构比较:
Sc↔CMS_c\leftrightarrow C_M
再结合目标、对象、条件和结果进行综合判断:
MM=GM∧OM∧CM∧SM∧RMMM= GM\land OM\land CM\land SM\land RM
当存在多个候选方法时:
候选方法→方法选择候选方法 \rightarrow 方法选择
当单一方法无法完成目标时:
方法→方法组合方法 \rightarrow 方法组合
当原方法无法适用时:
原方法→替代方法原方法 \rightarrow 替代方法
最终形成:
当前状态→方法匹配→方法选择→方法组合→方法替换→方法调用→行为\boxed{ 当前状态 \rightarrow 方法匹配 \rightarrow 方法选择 \rightarrow 方法组合 \rightarrow 方法替换 \rightarrow 方法调用 \rightarrow 行为 }
由此,方法理论从“方法结构”进一步发展为“方法决策结构”,为后续的方法构建、方法调用、方法执行以及方法与行为之间的动态转换提供理论基础。