哪种数据结构适合这种现实情况?

时间:2019-08-07 07:33:36

标签: data-structures heap breadth-first-search

真实世界问题:

假设在银行,客户可以在柜台前获得服务。 并且在柜台,他们根据客户的服务时间。 服务时间最短的客户在服务时间比先前客户长的客户之前得到服务。这就是说,计数器按照第一种方法完成了最短的工作。

我的工作:

现在我的工作是选择合适的数据结构以找到优化的 解决柜台问题。 并合理地选择数据结构(每200页2页或接近2页)。

尝试:

因此,根据我的观察,我认为BFS是针对这种情况的理想数据结构。但是我不知道如何用观点和解释来描述它。我必须对此进行广泛的解释。

期望:

5-6指出了为什么选择示例的数据结构。

1 个答案:

答案 0 :(得分:1)

首先想到为什么不应该使用BFS?

因为您希望以最短的工作时间为客户服务,所以您需要以最短的时间找到工作。 如果使用BFS,则每次要查找下一个要服务的客户时,都将遍历所有节点。因此,这不是理想的解决方案。

您需要什么?

您需要一些算法/数据结构,该算法/数据结构可以在新客户到来或为某些客户提供服务时高效地找到最短的工作,而无需遍历整个客户/工作列表。 可以使用堆(优先级队列),更具体地说是Min-Heaps

为什么要堆?

  1. 在堆中的插入时间为O(logN)
  2. 可以以O(logN)时间复杂度提取最小/最大元素,而无需遍历堆中的每个节点。
  3. 无论执行什么操作(插入/提取),最小/最大元素始终始终分别位于min-heap / max-heap的顶部节点。

希望这会有所帮助。