对于需要双向1到N映射的数据,最佳数据结构/算法是什么?

时间:2012-03-14 16:18:45

标签: python algorithm graph-algorithm

我在算法和数学方面有一个合理的(虽然生疏)背景,并且在Python和C方面有一定的熟练程度。我可以看到sorta如何做到这一点,但这是非常重要的,每次我原型时都会变得更复杂它。我来到集体面前,因为它的智慧希望找到一个我没有看到的优雅解决方案。我认为某些网络或图形变体可能是适合的,但它不是点击。这不是家庭作业: - )。

我有三组数据,A,B& C. A中的每个元素都是一个字符串,B中的每个元素都是一个int,每个C都是元数据的集合(日期,时间,描述等)。每组中可能会有成千上万的元素(尽管不是很快)。

每个A将映射到B中的零个或多个项目。相反,B中的每个元素将映射到A中的零个或多个项目.A和B中的每个项目都将具有可能共享的关联C(可能为空)与其他A和/或B一起。

鉴于A,我需要报告它映射到的所有B。然后,我需要报告那些B映射到的所有A,以及与找到的所有C相关的所有A.我还需要能够进行逆向(给定B,报告关联A,B和C)。

我知道这里有一些相当的病态可能性,我需要检测循环(深度检测应该可以正常工作)等。

思想?

1 个答案:

答案 0 :(得分:0)

我首先想到的是GraphDirected Graph

数据集中的每个元素都可以是一个节点,边缘将代表映射。你可以编写你的特定实现来为你知道你需要做的事情提供帮助方法,例如获取给定A元素映射到的所有B

更新:我没有注意到你已经标记了问题图 - 算法,我认为这意味着你已经想到了图形数据结构