【发布时间】:2017-08-28 17:21:00
【问题描述】:
我正在尝试找到一种合理的算法,在无序的有根树中找到第一个匹配的树模式。根据some research我遇到过,这个问题是NP-Complete。我不需要找到每个模式匹配,我只需要找到任何存在的模式匹配。最好,我宁愿不必在我的树上执行“删除”(我也不想复制来删除节点)。
要注意的另一件事是树将在树匹配查询之间更新,所以我也希望可能有一些算法可以利用这一事实,可能使用一种在线方法来跟踪以前的部分匹配在树中优化未来的匹配。
根据我提到的标准,有没有一种简单的算法可以解决这个问题,但仍然比纯朴素的蛮力方法更好?
注意,我的问题类似于 this previously asked question,但这个问题是针对有序树的。
【问题讨论】:
-
“树匹配”是什么意思?是否要弄清楚一棵树何时与另一棵树具有相同的形状?还是要弄清楚一棵树何时可以适应另一棵树的形状?还是别的什么?
-
如果不考虑太,似乎这个问题将是NP完全的,因为在多次分配时很难确定哪个模式子树与哪个输入子树匹配是可能的。顶点覆盖或其他东西会减少。也许您的现实生活中的某些问题可以让您不必为此担心?
-
@btilly 我编辑了我的问题,我指的是我在问题中引用的文章介绍中定义的树模式匹配。
标签: algorithm tree pattern-matching