基于结构的图评估算法:原理、实现与验证
在图的评估领域,一种基于结构的评估算法应运而生,它能够为图的评估提供有效的解决方案。下面将详细介绍该算法的原理、实现以及验证过程。
1. 算法原理
1.1 数据结构
该算法处理两个扩展图,分别为标准解决方案图和学生尝试图。简单图 $G = (N, E)$ 由节点集和边集定义,边是节点对。而扩展图中,节点和边都有类型和一组属性,它是一种多重图,即一对节点可能有多条不同类型的边。
节点和边的类型体现了基于图的语言的基本特征。以 UML 图为例,不同类型的图由特定类型的节点和边组合而成。如用例图的节点类型有参与者和用例,边类型有关联、依赖和泛化。未被类型涵盖的特征则编码为属性,属性是简单的名值对。
评估两个扩展图时,会得出一组差异。当两个图大小相同时,能检测到最相关的差异,如节点的插入和删除。其余差异基于等大小扩展图节点集之间的映射计算。若映射 $m : N →N ′$ 中,节点 $a ∈N$ 与 $m(a)$ 无法区分,则无差异;否则,会标记相应差异,如类型不同或属性不同。
仅对节点进行评估在算法中很重要,因其计算速度快且用于启发式方法。但完整评估还需考虑边。当强制两个图大小相同时,会标记连接节点的弧的删除。其余弧依赖于映射,若不匹配则标记边的插入、遗漏、类型错误或属性差异。
根据差异集可计算成绩,空差异集对应最高成绩(如 100 分)。每种差异有一定惩罚值,通过从最高成绩中减去惩罚值得到成绩。惩罚值取决于差异类型和图的大小,一般节点差异影响大于边差异,但最终取决于基于图的语言。需根据专家教师给出的实际成绩调整特定语言的权重。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



