【发布时间】:2010-08-30 22:30:16
【问题描述】:
假设我有一个矩阵 MxN,填充了 0 到 5 之间的值。我现在想确定该矩阵中最大的连接树,其中矩阵的值被视为节点。如果一对节点水平或垂直相邻,并且两个节点的值相同,则称这对节点是连接的。树的大小等于树中的节点。
一个例子:
1 0 3 0 0 2 2 0 0 0 0 0
1 1 2 2 2 0 2 0 0 0 0 0
0 1 0 3 0 0 2 0 0 0 0 2
3 1 0 3 0 0 2 0 2 2 2 2
0 0 0 0 0 0 0
3 0 0 3 3 0 0
3 3 3 3 0 0 0
在左侧,左侧的 1 节点形成最大的树。在右侧,3 节点构成最大的树,而另外两棵由 2 节点组成的树。
我知道我可能会做一个简单的深度优先搜索,但我想知道我是否缺少一些众所周知的东西,也许是在图论领域(比如 Kruskal 的最小生成树算法,但是对于这个例子)。
【问题讨论】:
-
将项目组称为“孤岛”不是更好吗 - 假设您在给定的第一个矩阵的 LHS 下全是 1 - 1 仍然算作“树”吗?跨度>
-
肯定右边最大的树是由
0节点组成的? -
@Stephen - 是的,它看起来是那样的 - 除非这不被视为一棵树。