搜索中的重要数据结构

我有兴趣自学不同的数据结构,这是我目前所知甚少的。 我的计划是实施一些关键结构,以便了解它们的工作方式。 我正在寻找关于重要数据结构的建议。

我主要关注与搜索应用程序(例如Google / Lucene)相关的数据结构以及延迟计算和预计算之间的一般折衷。 我还对分布式数据结构感兴趣 - 可以扩展到数百/数千台服务器的数据结构 - 以及概率数据结构 - 有助于找到近似答案的数据结构,但不一定总是正确的。

维基百科有一个数据结构列表。 我目前正在考虑:

  • 哈希表
  • B + - 树
  • R-树
  • KD树
  • 基树
  • 布隆过滤器
  • 有更好的选择吗?

    最后,在像F#这样的语言中实现这些结构有什么(主要的)问题吗?


    非常有抱负。 我把它的问题投给了它的范围。

    MIT有一个在线算法和数据结构课程。 伴侣书是一个经典。 我不确定它是否能够解决分布式和概率性问题,但它们会为您提供基础知识的绝佳基础。

    我会将红黑树,哈希表,帕特里夏特里和跳过列表添加到您的议程中。

    祝你好运。


    如果你打算用功能性语言来处理这类事情,你应该看看Chris Okasaki的Purely Functional Data Structures。 基本的教训是:您对命令式编程熟悉的数据结构可能不是功能编程的最佳选择。 我希望有很多类似的材料可以Google搜索。


    对于搜索,算法比数据结构更重要。 在搜索大型搜索空间时,您通常必须使用复杂的方法来修剪搜索空间。

    您可能会看到经典的搜索算法,如alpha-beta,A *,AO *。

    然后看看像迭代深化搜索。

    在搜索算法中,像堆栈和链表(这实际上是堆栈的一种形式)和树之类的东西比散列表,B树等更重要。当然,你肯定会在那里有散列表,但它赢得了' t是算法的核心。

    这里有一些更重要的搜索算法:

  • B *搜索
  • 回溯
  • 光束搜索
  • 最佳优先搜索
  • 双向搜索
  • 爬山搜索
  • 模拟退火
  • IDA *
  • 迭代加深深度优先搜索
  • 迷你最大搜索
  • 最近邻居搜索
  • 传播激活
  • 状态空间搜索(不是一种技术,只是一种概念化问题)。
  • 就搜索的具体数据结构而言,你真的不需要任何。 基本上,你只需要你常用的数据结构工具包 - 树,哈希,列表。

    链接地址: http://www.djcxy.com/p/39869.html

    上一篇: Important data structures in search

    下一篇: Why is there no Tree<T> class in .NET?