【发布时间】:2016-04-07 11:53:39
【问题描述】:
我想实现一个关联集合,将键 K 映射到值 V。我还想将每个值 V 与权重相关联,所以我们有 Map[K → (V, Double)]。
现在的想法是拥有这个集合的有限内存版本,它只存储超过权重阈值 t 的元素。每次将元素 e 插入此集合中,我们都会将 e 的权重增加一些量,例如1,并将所有其他元素的权重 e' != e 衰减某个衰减因子,例如 0.0001。 这确保了此集合中存在的元素要么是 a. 最近,或 b。 经常。
当然,人们可以实现这种数据结构的简单版本,它主动执行衰减操作,并检查所有元素的阈值 t 的偏差。那将是非常低效的。
我想知道是否已经有一个数据结构可以做到这一点。也许有一个相关的数据结构可以用来实现我的要求。感谢您的意见。
【问题讨论】:
-
前段时间我在 C# 中创建了我所谓的 MRU 字典,它基本上可以满足您的要求,尽管衰减与缓存的大小成正比。您可以在informit.com/guides/content.aspx?g=dotnet&seqNum=626查看文章
标签: memory data-structures hashmap