良好的数据结构或数据库来表示对象之间的对象和转换?

时间:2013-10-13 14:14:54

标签: algorithm data-structures graph nosql graph-algorithm

我无法选择用于帮助识别资源和资源之间转换的数据结构。在定义图表之后,我想对资源之间的转换进行分析,以确定哪些输入可以产生什么输出。

例如,我们可以采用传统货币:

  • 美元 - > 3:2 - >欧元
  • 欧元 - > 2:3 - >美元
  • 欧元 - > 1:100 - >日元
  • Yen - > 95:1 - >欧元
  • Yen - > 50:1 - > T恤
  • 美元 - > 2:1 - >糖果吧

典型的用例是采取一些起始资源,如5美元和100日元,并确定这些可以转化为什么:多少个糖果棒?怎么样的T恤?通过拥有数百个资源,每个资源可能会转移到其他资源,图表会变得更加复杂。

感谢您的想法!

1 个答案:

答案 0 :(得分:2)

这听起来像是标准图表的问题。

让每个资源成为一个节点,如果它们之间存在过渡,则连接2个节点,边缘权重为过渡比率。

这些边缘可能需要被定向,并且,如果过渡是反向的,则有两条边,一条在任一方向上。或者,如果转换是反转的,则可以使用无向图并将边权重定义为从“最小”节点到“最大”节点的转换比(您需要对节点进行一些可能的任意排序)。通过“转换是逆转”我的意思是,如果你从任何资源转到任何其他资源,你也可以再次返回,如果你这样做,你会得到与你最初开始时相同的数量(尽管如此,似乎坚持这个例子。

然后你可能不得不使用breadth-first search(或类似的)来确定从一个资源到另一个资源。

就SQL而言,可能的结构如下:

Resource
  ID, ...

Transition
  ResourceID1, ResourceID2, Cost