级联矩阵算法和可能的二叉树数量有什么关系?

What is the relationship between the concatenated matrix algorithm and the number of possible binary trees?

表示n个矩阵相乘时,可能的情况数P(n)等于C(n-1)。 (C是加泰罗尼亚数)此时,C(n)就说是n个节点可以创建的不同二叉树的个数。我没有认知理解。如果你能解释一下,我将不胜感激。

请解释为什么n矩阵乘法n-1个结点能做出的二叉树的个数和n矩阵乘法的例数一样

了解需要 2 个步骤:

第1步:N个矩阵相乘的不同方式的数量是完整个有N个叶子的二叉树的数量。

请注意,“完整”二叉树是其中每个节点都有 0 或 2 children。

矩阵乘法不可交换,所以矩阵必须按原来的顺序相乘。每个案例都可以这样形成:

  • 按顺序写下所有矩阵
  • 重复将两个相邻的矩阵或中间乘积相乘,直到只剩下一个。

并非所有执行此操作的方法实际上都是不同的。例如:

ABCDE -> (AB)CDE -> (AB)C(DE) -> (ABC)(DE) -> (ABCDE)

包括与以下完全相同的乘法:

ABCDE -> ABC(DE) -> (AB)C(DE) -> (ABC)(DE) -> (ABCDE)

在这两种情况下,我们都生产产品 AB 和 DE。先做哪一个并不重要,因为我们以相同的方式组合它们。

您可以将任何不同的情况映射为二叉树,其中每个内部节点都是一个乘积,而叶子是原始矩阵。以上案例的树是:

      *
     / \
    *   \
   / \   \
  *   C   *
 / \     / \
A   B   D   E

树显示了哪些矩阵对形成的每个乘积有贡献,与我们实际执行它们的顺序无关,因此每个不同的树实际上是矩阵相乘的不同方式。

第二步:有N个叶子的完全二叉树的个数就是有N-1个节点的二叉树的个数

对于任何有 N 个叶子的完全二叉树,都有 N-1 个内部节点——每对相邻叶子之间有一个。这些节点本身形成一个(不一定是完整的)二叉树。上面树中的 * 节点就是一个例子。

对于任何具有N-1个节点的二叉树,只有一种方法可以连接N个叶子以形成一棵完整的树。原来的树有N个空闲位置children,所以你要全部填满

因此,具有N个叶子的完全二叉树的数量等于具有N-1个节点的二叉树的数量,因为这些事物之间存在one-to-one对应关系。