【问题标题】:Choosing data structure for resource allocation decision tool为资源分配决策工具选择数据结构
【发布时间】:2018-05-21 02:34:36
【问题描述】:

我正在尝试制作一个小型决策工具。

我有一个在预设时刻发生的事件列表(例如,X 总是在 00:12 发生),每个事件都是加权的

我得到了一个资源列表,每个资源在再次可用之前都有一个持续时间和时间跨度。此外,每个资源都以自己的方式修改活动时发生的事件的权重。不消耗资源也是可能的。

按照我的想法,最佳资源分配是事件权重的最高总和,如果事件发生在资源活动时间内,则应用资源修饰符。

我在数据结构方面对我的问题进行建模时遇到了很大的麻烦。我想到了两种可能的解决方案:

我有第一个直觉,我应该有一个树,其中每个节点代表和事件(通过它的计时器)以及我的选择列表的状态(哪些可用,哪些不可用,哪些是活动的)。但是我如何跟踪节点之间的变化呢?我不知道如何管理这样的结构。

是一个布尔二维数组,每行一个事件,每列一个选择,然后我遍历列,如果为真,得到相应的事件权重,相应的选择权重修饰符等......一个好迈向一个体面的解决方案?

有什么见解吗?

【问题讨论】:

  • 如果您听说过在操作系统中进行调度,那么您可以从那里得到一个想法。
  • 操作系统?最早截止日期优先,固定优先级抢先调度等... ?嗯...我真的没有看到链接?在我的上下文中,没有重新排列的队列顺序或中断,只有以固定顺序到达的事件以及资源之间的选择以最大化这些事件的潜力。你能告诉我更多关于你的意思吗?
  • 你不认为进程也有权重,首先完成权重最高的进程,在你的问题中是这样的,但不确定

标签: algorithm data-structures decision-tree


【解决方案1】:

我建议查看一个优先级队列,您可以在其中按事件权重对资源进行排序,这样优先级队列的顶部就是权重最高的资源。项目可用后,您可以将其添加到队列中。既然您提到要重新确定项目权重的优先级,我建议您查看fibonacci heap 作为优先级队列的基础数据结构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 2012-05-06
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多