摘要
解释一棵树 $t$ 在结构上如何以及为何与另一棵树 $t^*$ 不同,这个问题在整个计算机科学领域中都会遇到,包括理解 XML 或 JSON 数据等树状结构数据。本文探讨了如何从样本数据中学习树对之间结构差异的解释:假设我们给定一组标记的、有序树对 $\{(t_1, t_1^*),\dots, (t_n, t_n^*)\}$;是否存在一组小的规则来解释所有树对 $(t_i, t_i^*)$ 之间的结构差异?这提出了两个研究问题:(i)在这种情况下,什么是“规则”的良好概念?(ii)如何用算法学习解释数据集的规则集?
我们从数据库理论的角度探讨了这些问题,方法是(1)引入一种基于模式的树转换规范语言;(2)探索上述算法问题的变体的计算复杂度,例如,显示非常受限的变体的 NP 难解性;以及(3)讨论如何使用 SAT 求解器解决来自 CS 教育研究的数据问题。