graph - 如何使用Tree Isomorphic来解决语言模式匹配问题?

时间:2012-05-07 21:35:05

标签: algorithm data-structures graph isomorphism

Algorithm Design Manual中,它说

  

您是否在测试两棵树是否同构? - 对于图同构的某些特殊情况,例如树和平面图,存在更快的算法。 也许最重要的案例是检测树之间的同构,这是语言模式匹配中出现的问题和解析应用程序。解析树通常用于描述文本的结构;如果底层文本具有相同的结构,则两个解析树将是同构的。

我只是希望有人请给我一个例子,说明如何使用Tree Isomorphism来解决语言模式匹配问题。即,如何将语言模式匹配映射到树同构问题?

通常,如何将字符串或文本构造为树并比较它们的身份?

由于

2 个答案:

答案 0 :(得分:4)

以英语为例,我们的想法是,一些英语句子可以用以下解析树表示:

        SENTENCE               SENTENCE
       /        \             /        \
  PROPER NOUN  VERB      COMMON NOUN  VERB
      /                    /    \
     NAME                ARTICLE NOUN

英文短语“狗吠”。然后可以解析如下

ARTICLE    NOUN      VERB
 /          /         /
The       dog       barks

    COMMON NOUN
     /      \
ARTICLE    NOUN      VERB
 /          /         /
The       dog       barks


            SENTENCE
             /     \
    COMMON NOUN     \
     /      \        \
ARTICLE    NOUN      VERB
 /          /         /
The       dog       barks

另一个结构相同的句子是“落叶”。它的解析树看起来具有相同的形状,这意味着两个解析树将是同构的。也就是说,即使含义不同,它们也具有与句子相同的逻辑结构。

            SENTENCE
             /     \
    COMMON NOUN     \
     /      \        \
ARTICLE    NOUN      VERB
 /          /         /
A         leaf      falls

如果忽略实际的物理词,两个解析树也会与一般模式同构,也表示为树。

答案 1 :(得分:0)

正如文中所示,解析树是这里的关键概念。解析树表示(在某种程度上)文本的结构, 技术上是树,因此您可以使用您喜欢的任何树算法处理解析树。

  

Parse树是一个有序的有根树,它根据一些形式语法表示字符串的句法结构。

(关于Parse trees的维基百科文章)