【问题标题】:Good data structure or database to represent objects and transitions between objects?好的数据结构或数据库来表示对象和对象之间的转换?
【发布时间】:2013-10-13 14:14:53
【问题描述】:

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

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

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

典型的用例是获取一些起始资源,例如 5 美元和 100 日元,并确定这些资源可以转换成什么:多少条糖果?怎么有 T 恤?如果包含数百个资源,每个资源都可能有几十个到其他资源的转换,则图表会复杂得多。

感谢您的想法!

【问题讨论】:

  • 你不能定义任何两个资源之间的转换吗?这基本上会使那个集团成为一个集团。或者你想要更紧凑的东西,或者对可能的交易有一些限制?

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


【解决方案1】:

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

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

这些边可能需要被定向,并且如果转换是反向的,则有 2 条边,一个在任一方向。或者,如果转换是逆向的,您可以有一个无向图并将边权重定义为从“最小”节点到“最大”节点的转换比率(您需要对节点进行一些可能的任意排序)。 “转换是逆向的”我的意思是,如果您从任何资源转到任何其他资源,您也可以再次返回,如果这样做,您将获得与最初开始时相同的数量(尽管这并没有'从示例中似乎不成立)。

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

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

Resource
  ID, ...

Transition
  ResourceID1, ResourceID2, Cost

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 2020-09-27
    • 2021-10-03
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2019-01-20
    相关资源
    最近更新 更多