多个关键优先级的数据结构

问题描述

我一直在尝试为程序提供类似堆的数据结构。 在此程序中,我有节点对象。节点具有两个数字字段:时间和方向(都是自然数,我们可以假设相同的时间表示不同的方向)。我在节点中定义了:

def __lt__(self,other):
 if self.time < other.time:
   return self
 elif self.time == other.time:
   if self.direction < other.direction:
     return self
   else:
     return other
 else:
   return other

数据结构将获得一个函数进行排序(获取节点,返回值)。 弹出操作应:

  • 如果其值不同,则返回具有最小f(N)的节点N。
  • 如果有多个最小值,则返回最小的时间(如果相异)。
  • 如果时间上有多个最小值,则返回方向上的最小值。

问题是,有没有一种简单的方法来维护结构,以便我们根据f()进行比较,但是如果存在多个最小值,则诉诸于节点本身?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)