当前位置: 首页 > 面试题库 >

Java中的KDTree实现

夹谷沛
2023-03-14
问题内容

我正在寻找Java中的KDTree实现。
我已经做了一个谷歌搜索,结果似乎很偶然。实际上有很多结果,但是它们大多数都是一次性的实现,我宁愿找到一些具有更多“生产价值”的东西。诸如apache集合或.NET优秀的C5集合库之类的东西。我可以在此处看到公共错误跟踪程序,并检查上一次SVN提交的时间。而且,在理想的世界中,我会找到一个很好的设计好的用于空间数据结构的API,而KDTree只是该库中的一个类。

对于这个项目,我只会在2维或3维上工作,而我只是对一个良好的最近邻实现感兴趣。


问题答案:

在《Nutshell中的算法》一书中,有一个Java中的kd树实现以及一些变体。所有代码都在oreilly.com上,并且书本身也带您逐步了解算法,以便您可以自己构建。



 类似资料:
  • kdtree 是一个简单易用的 KD-trees 的 C 语言实现。 Kd-trees 是二叉树扩展到K维的一种数据结构,可进行方便快速的查找和邻点查询。

  • 我有一个kdtree,其节点由以下字段组成:公共静态类节点实现可序列化{ 其中DataPoint定义: 公共静态类DataPoint实现可序列化{公共可比X;公共可比Y;公共可比Z; 我想序列化树,存储在文件中并在回答范围查询时反序列化。我对这个概念od序列化的理解并不好。从我收集的任何内容中,我编写了以下函数,但不起作用。有人能帮忙吗?

  • 我得到了以下树: 然后我们被告知使用最后一个孩子/前一个兄弟姐妹方法来改变这三者的实现。这导致了以下结果: 我现在正在用Java实现来执行这棵树上的不同功能。我们有一个树接口和一个TreeNode接口。他们都有许多我们需要填写的功能。 节点是这样创建的: 树是这样创建的(使用根): 最后,节点被赋予兄弟姐妹子级,如下所示: 我已经为setChild、setSibling、getNextSiblin

  • 我正在研究Java中的HashMap类。我的理解是哈希表的容量是桶数的2次方(容量16表示四个桶)。当调用put(key,value)时,key.hashCode()输出一个整数,这个新添加的(key,value)对基于key . hashcode()%的桶数放置。但是下面是HashMap.class中的实际实现 从上面的代码中,我无法理解如何安装钥匙。将hashCode()值转换为bucket。

  • 我无法理解HashFunction在中的用法。 在HashMap实现中,哈希函数的使用是查找内部数组的索引,这可以是合理的,遵循哈希函数契约(相同的键必须具有相同的hashcode,但不同的键可以具有相同的hashcode)。 我的问题是: 1)哈希函数在中的用途是什么? 2)放置和获取方法如何适用于? 3) 为什么要在内部维护双链接列表?使用作为内部实现(就像)并在插入序列中维护条目数组的单独数