-5

这是问题以及我期望的结果。我已经有一个执行此操作的例程,但我想研究其他解决方案,因此需要解决方案或问题本身的任何流行名称。

If name1 and name2 are aliases or equivalent and name3 and name2 are aliases then
name1, name2, and name3 are all aliases of each other.

>>> aliases = [('name1', 'name2'), ('name3', 'name2')]
>>> consolidate_aliases(aliases)
[('name2', 'name3', 'name1')]
>>> aliases = [('A', 'X'), ('B', 'Y'), ('C', 'Z'), ('S', 'L'), ('T', 'M'), ('U', 'N'), ('Y', 'T'),  ('B', 'L')]
>>> consolidate_aliases(aliases)
[('S', 'B', 'T', 'Y', 'M', 'L'), ('U', 'N'), ('C', 'Z'), ('A', 'X')]
>>>
4

3 回答 3

1

这称为传递闭包

于 2012-04-20T08:00:41.450 回答
0

它看起来像Union-Find 算法

于 2012-04-20T08:01:42.283 回答
0

它是“图的连通分量”问题的一种变体。谷歌让它看到这样这个的答案。

于 2012-05-08T01:24:58.313 回答