Algorithm 树上的联合查找操作?
有人能用黑体字解释一下答案吗?怎么做的 下面是四个联合查找操作的序列(使用加权联合和完全com- 按)可进入后续树。最后两次行动是什么 回答:Union(D,A),Union(B,C),Union(D/A,B/C),Find(B/C)。Algorithm 树上的联合查找操作?,algorithm,data-structures,graph,tree,union-find,Algorithm,Data Structures,Graph,Tree,Union Find,有人能用黑体字解释一下答案吗?怎么做的 下面是四个联合查找操作的序列(使用加权联合和完全com- 按)可进入后续树。最后两次行动是什么 回答:Union(D,A),Union(B,C),Union(D/A,B/C),Find(B/C)。 之所以使用该符号,是因为集合 让我们应用四个操作: 联合(D,A)导致以下树: D / A B / C 联合(B,C)导致以下树: D / A B / C 现在,Union(D/A,B/C)意味着因为D和A
之所以使用该符号,是因为集合 让我们应用四个操作:
联合(D,A)
导致以下树:
D
/
A
B
/
C
联合(B,C)
导致以下树:
D
/
A
B
/
C
现在,Union(D/A,B/C)
意味着因为D和A属于同一个集合,所以不管第一个参数是什么,它可以是D
,也可以是A
。同样地,因为B和C属于同一个集合,第二个参数是什么并不重要,它可以是B
,也可以是C
,结果将是相同的
结果将在第三次操作后显示:
D
/ \
A B
\
C
现在,由于还允许压缩,因此Find(C)
操作将生成树:
D
/|\
A B C
如果第四个操作是Find(B)
,则树将保持不变,因为当我们在Find操作后应用压缩时,我们将使路径中遇到的所有节点都成为根的直接子节点,但因为我们不会遇到C
,我们将无法使C
成为D
的直接子级,因为它在最后一个树中
正确答案
四个操作的正确顺序是:
Union(D,A), Union(B,C), Union(D/A,B/C),Find(C).
由于集合而使用该符号 让我们应用四个操作:
联合(D,A)
导致以下树:
D
/
A
B
/
C
联合(B,C)
导致以下树:
D
/
A
B
/
C
现在,Union(D/A,B/C)
意味着因为D和A属于同一个集合,所以不管第一个参数是什么,它可以是D
,也可以是A
。同样地,因为B和C属于同一个集合,第二个参数是什么并不重要,它可以是B
,也可以是C
,结果将是相同的
结果将在第三次操作后显示:
D
/ \
A B
\
C
现在,由于还允许压缩,因此Find(C)
操作将生成树:
D
/|\
A B C
如果第四个操作是Find(B)
,则树将保持不变,因为当我们在Find操作后应用压缩时,我们将使路径中遇到的所有节点都成为根的直接子节点,但因为我们不会遇到C
,我们将无法使C
成为D
的直接子级,因为它在最后一个树中
正确答案
四个操作的正确顺序是:
Union(D,A), Union(B,C), Union(D/A,B/C),Find(C).
任何疑问都可以,任何疑问都可以,回答得很好。非常感谢你这么好的回答。非常感谢