【发布时间】:2011-02-21 20:51:30
【问题描述】:
我需要存储 W 个项目。每个项目都有一个“字符串”属性和一个与之关联的“双”属性(项目的分数)。在每次迭代中,额外的 C 项被添加到集合中。迭代完成后,一些项目的分数会有少量更新。现在,在 W+C 项中,只有 W 项需要进行下一次迭代。将选择得分最高的“W”项目,这些项目将传给下一代。 在每次迭代中,都会添加一组不同的“C”项。
W 约为 10,000。 C 的数量级为 600。
就时间复杂度而言,使用它的最佳数据结构是什么。哈希表、堆、二叉搜索树?? 我正在使用 C++。一些提升参考将不胜感激
【问题讨论】:
-
更新的本质是什么“迭代完成后,部分item的score有少量更新。”?您会以某种方式搜索这些元素还是只是线性扫描?
-
从一个单独的模块中,我获得了哪些项目(由字符串属性标识)需要更新其分数的信息。更具体地说,从另一个模块获取当前迭代中使用的项目的信息并更新它们的分数(分数代表使用频率)。 'C' 最不常用的物品被扔掉。
-
这是用于遗传算法实现吗?
-
@Emile - 它不完全是遗传算法(但结构与遗传算法相同),我可以看到在遗传算法实施中需要同样的东西。
标签: c++ sorting data-structures hashtable