搜索中的重要数据结构
我有兴趣自学不同的数据结构,这是我目前所知甚少的。 我的计划是实施一些关键结构,以便了解它们的工作方式。 我正在寻找关于重要数据结构的建议。
我主要关注与搜索应用程序(例如Google / Lucene)相关的数据结构以及延迟计算和预计算之间的一般折衷。 我还对分布式数据结构感兴趣 - 可以扩展到数百/数千台服务器的数据结构 - 以及概率数据结构 - 有助于找到近似答案的数据结构,但不一定总是正确的。
维基百科有一个数据结构列表。 我目前正在考虑:
有更好的选择吗?
最后,在像F#这样的语言中实现这些结构有什么(主要的)问题吗?
非常有抱负。 我把它的问题投给了它的范围。
MIT有一个在线算法和数据结构课程。 伴侣书是一个经典。 我不确定它是否能够解决分布式和概率性问题,但它们会为您提供基础知识的绝佳基础。
我会将红黑树,哈希表,帕特里夏特里和跳过列表添加到您的议程中。
祝你好运。
如果你打算用功能性语言来处理这类事情,你应该看看Chris Okasaki的Purely Functional Data Structures。 基本的教训是:您对命令式编程熟悉的数据结构可能不是功能编程的最佳选择。 我希望有很多类似的材料可以Google搜索。
对于搜索,算法比数据结构更重要。 在搜索大型搜索空间时,您通常必须使用复杂的方法来修剪搜索空间。
您可能会看到经典的搜索算法,如alpha-beta,A *,AO *。
然后看看像迭代深化搜索。
在搜索算法中,像堆栈和链表(这实际上是堆栈的一种形式)和树之类的东西比散列表,B树等更重要。当然,你肯定会在那里有散列表,但它赢得了' t是算法的核心。
这里有一些更重要的搜索算法:
就搜索的具体数据结构而言,你真的不需要任何。 基本上,你只需要你常用的数据结构工具包 - 树,哈希,列表。
链接地址: http://www.djcxy.com/p/39869.html