用于在度量空间中进行索引和搜索的很好解释的算法
Posted
技术标签:
【中文标题】用于在度量空间中进行索引和搜索的很好解释的算法【英文标题】:Well explained algorithms for indexing and searching in metric spaces 【发布时间】:2010-09-17 09:39:45 【问题描述】:我需要在 Postgres(*)(PL 或 PL/Python)中实现某种度量空间搜索。因此,我正在寻找好的资源(或论文),对这些想法背后的机制有非常清晰和清晰的解释,以便我可以自己实施。
我更喜欢清晰而不是效率。
(*) 更好地描述了对此的需求here。
【问题讨论】:
【参考方案1】:尤其是地理数据,先看PostGIS,看看是否需要实现什么。如果您这样做,请从Wikipedia entry on GiST 中列出的论文开始。
查看您的链接,您的度量空间似乎是具有某种编辑距离作为度量的字符串。 Navarro, Baeza-Yates, Sutinen, and Tarhio, IEEE Data Engineering Bulletin, 2001 给出了一些解决方案的不错但过时的概述; Citeseer 上的相关论文也可能有用。 Locality Sensitive Hashing 是一种可能有用的新技术,但很多论文都侧重于数学。
【讨论】:
【参考方案2】:涉及空间搜索的一些可能对您有所帮助的技术包括爬山、神经网络训练、遗传算法和粒子群。
您还需要在度量空间上定义距离度量。你这样做了吗?(出于好奇,如果你这样做了,那是什么)
【讨论】:
【参考方案3】:BK-Trees 可用于索引和搜索符合三角不等式的任何内容,包括度量空间。典型示例是在目标的给定编辑距离内搜索字符串。我写了一篇关于here的文章。
不幸的是,Postgres 中没有内置支持。您可以使用GIST 自己实现它,但显然这将是很多工作。除了将树存储在表中之外,如果不编写自己的索引,我想不出任何方法来实现它,这显然不会很有效。
【讨论】:
【参考方案4】:您可以尝试http://sisap.org,其中列出了许多现代指标索引,包括 BK 树。您可以在 C 中找到代码来尝试不同的替代方案。
【讨论】:
以上是关于用于在度量空间中进行索引和搜索的很好解释的算法的主要内容,如果未能解决你的问题,请参考以下文章