Algorithm 寻找书籍的智能暴力算法?

Algorithm 寻找书籍的智能暴力算法?,algorithm,brute-force,Algorithm,Brute Force,我想写一个暴力算法来尝试在图书馆里找到一本书。如果你要找的书不在那里,你要花多长时间才能算出来? 有什么聪明的暴力手段吗 我想在图书馆图书名称所在的列表中搜索图书名称,并从列表的中心开始?你应该继续阅读这篇文章并尝试他的方法。简而言之,他说: 使用Boyer-Moore(并将其内部循环展开几次) 使用原始系统调用滚动您自己的无缓冲输入。避免抄袭 在搜索输入字节之前先搜索它们。(但是,请不要使用缓冲区。) 正常的grep场景是输出量为 与输入量相比较小,因此输出的开销也较小 缓冲区复制很小,同时

我想写一个暴力算法来尝试在图书馆里找到一本书。如果你要找的书不在那里,你要花多长时间才能算出来? 有什么聪明的暴力手段吗


我想在图书馆图书名称所在的列表中搜索图书名称,并从列表的中心开始?

你应该继续阅读这篇文章并尝试他的方法。简而言之,他说:

  • 使用Boyer-Moore(并将其内部循环展开几次)

  • 使用原始系统调用滚动您自己的无缓冲输入。避免抄袭 在搜索输入字节之前先搜索它们。(但是,请不要使用缓冲区。) 正常的grep场景是输出量为 与输入量相比较小,因此输出的开销也较小 缓冲区复制很小,同时由于避免了许多小的复制而节省了成本 无缓冲写入可能很大。)

  • 在找到匹配项之前,不要在输入中查找换行符

  • 尝试设置(页面对齐的缓冲区、页面大小的读块、, 可以选择使用mmap),这样内核也可以避免复制字节

使程序快速运行的关键是让它们实际上什么都不做


格雷普做的正是你想要的:蛮力搜索无序数据——他的算法很聪明,即使是蛮力。

除非你对数据进行排序,否则你就没有“智能蛮力”。如果您对数据进行排序(复杂性NlogN),您可以在logN时间内找到您想要的内容,使用二进制搜索蛮力,几乎可以定义为,如果您想快速说出“这本书不在这里”,请查找Bloom筛选器。为了降低查找这本书的成本,仅将目标名称的第一个字符与书籍名称进行比较。仅当第一个字符匹配时,才应检查书籍的完整名称。1。过滤所有的书,这样你就可以缩小范围(你是唯一知道要找什么的人)。将所有这些条目添加到数据库中,3。数据开采