【问题标题】:graph - How do I use Tree Isomorphic to solve language pattern matching?graph - 如何使用 Tree Isomorphic 解决语言模式匹配问题?
【发布时间】:2012-05-07 21:35:04
【问题描述】:

Algorithm Design Manual 中,它说

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

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

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

谢谢

【问题讨论】:

  • 只是一个快速提示,如果你在这里没有得到很好的答案,这个问题可能很适合cstheory.stackexchange.com,...

标签: algorithm data-structures graph isomorphism


【解决方案1】:

以英语为例,思路是一些英语句子可以用如下解析树来表示:

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

英文短语“The dog barks”。然后可以解析如下

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

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

【讨论】:

    【解决方案2】:

    如文中所述,解析树是这里的关键概念。解析树代表(以某种方式)文本的结构,从技术上讲,它一棵树,因此您可以使用任何您喜欢的树算法来处理解析树。

    解析树是一个有序的、有根的树,它根据某种形式语法表示字符串的句法结构。

    Parse trees 上的维基百科文章)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 2021-10-04
      • 2019-04-30
      • 1970-01-01
      相关资源
      最近更新 更多