我正在将VB6转换为C#,我希望使我的数据结构更有效地保持值和关系.在VB中,我有一组值和另一组关系,这些值与这些关系的优先级之间存在关系.我还有一个算法,当一组值传递给它时,返回将这些值连接在一起所需的所有关系.例如,假设值集合包含1-10并且关系集合包含
1,2-
3,2
5,2
2,8
8,10
9,10
如果输入是1,9,10,则返回的关系将是 -
1,2
2,8
8,10
9,10
由于可能存在多条路径,因此会返回最少量的关系,但需要注意关系优先级.如果关系具有更高的优先级,则将添加该关系,并且将从那里添加其余关系.我正在考虑使用Disjoint-set数据结构,但我不确定.
有任何想法吗?
更多信息 -
值的数量通常小于100且关系小于500.集合是静态的,并且将一次又一次地使用算法来查找路径.另外,我没有问这个问题,但是Disjoint-set数据结构中的算法是否最有效?
听起来你有一个图表.这是一个带有节点和边缘的结构.有许多处理Graphs的库和工具.微软甚至发表了一篇关于如何处理它们的论文.我认为图表很棒,在很多情况下非常有用.
图形的一大好处是能够为节点之间的边缘分配优先级.然后当你想找到两个节点之间的路径时,图形可以选择具有理想优先级的路径.
在您的情况下,您的值是节点,您的关系是边缘.