有没有一种方法可以基于FIRST节点填充Map来满足谓词?

时间:2019-07-03 16:45:08

标签: f# binary-search-tree

有一个名为Map.partition的函数,可将地图分为2个地图,其中一个包含满足谓词的ALL元素。谓词以键和值作为参数,并检查映射的每个元素以确定它属于哪个结果映射。

我的要求是这种情况的特例。我有一张地图,我想根据密钥是否大于或小于某个值将其分为2张地图。 这将更加有效,因为您只需要搜索树直到谓词的输出更改即可。当前的实现将是O(n),而我正在寻找的将是O(log(n))。对于自定义树实现来说,这应该很简单,但是如果可以的话,我宁愿使用内置的集合,也要自己滚动。

1 个答案:

答案 0 :(得分:0)

有关F#地图的文档,请参见以下链接:https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/collections.map-module-%5Bfsharp%5D 尽管您想实现的操作可以在O(log(n))中实现,但在此模块中未实现。最好的选择是使用分区(如您所说,将为O(n))或实现自己的Map版本。您还可以在github中搜索一些代码,该代码实现了Red-Black Tree,并包括您自己的自定义方法。

简短的回答:不,没有一种方法可以根据第一个节点拆分Map来满足谓词。

编辑:此->