算法学习
Archy_Wang_1
有些代码不应该被忘记,也没有源代码不应该被记住。
展开
-
文本相关性PM25算法
1. BM25算法 BM25是二元独立模型的扩展,其得分函数有很多形式,最普通的形式如下: ∑ 其中,k1,k2,K均为经验设置的参数,fi是词项在文档中的频率,qfi是词项在查询中的频率。 K1通常为1.2,k2通常为0-1000 K的形式较为复杂 K= 上式中,dl表示文档的长度,avdl表示文档的原创 2017-09-21 15:25:14 · 4731 阅读 · 1 评论 -
淘宝搜索排序算法分析
淘宝搜索排序的目的是帮助用户快速的找到需要的商品。从技术上来说,就是在用户输入关键词匹配到的商品中,把最符合用户需求的商品排到第一位,其它的依次排在后续相应的位置。为了更好的实现这个目标,算法排序系统基本按三个方面来推进: 一、算法模型 当用户输入关键词进行搜索的时候,系统依据算法模型来给匹配到的每个商品进行实时的计算,并按照分数的大小对商品进行排序。 对于好的算法模型,首先需要原创 2017-09-21 15:30:51 · 16543 阅读 · 1 评论 -
8大排序算法详解
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。 本文将依次介绍上述八大排序算法。 算法一:插入排序 插入排序示意图 插入排序是一种最简单直观的排序算原创 2017-09-21 15:50:08 · 460 阅读 · 0 评论 -
KMP算法详解
1. 引言 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。时间复杂度O(m+n)。2. 暴力匹配...转载 2018-03-19 11:05:18 · 250 阅读 · 0 评论 -
排序算法总结
排序的基本概念与分类假设含有n个记录的序列为r1,r2,⋯,rn,其相应的关键字分别为k1,k2,⋯,kn,需要确定1,2,⋯,n的一种排列$p_1,p_2,\cdots,pn,使其相应的关键字满足k{p1}\le k{p2}\le \cdots \le k{pn}非递减(或非递增)关系,即使得序列成为一个按关键字有序的序列{r{p1}, r{p2}, \cdots, r_{pn}}$,这样的操作...原创 2016-11-23 08:53:39 · 345 阅读 · 0 评论 -
海明码的计算方式
海明码利用奇偶性来检错和纠错的校验方法。海明码的构成方法是在数据位之间的确定位置上插入k个校验位,通过扩大码距来实现检错和纠错。 设数据位是n位,校验位是k位,则n和k必须满足以下关系: 海明码的编码规则如下: 设有k个校验位Pk,Pk-1,...,P1,n个数据位为Dn-1,Dn-2,...,D1,D0,对应的海明码为Hn+k,Hn+k-1,...,...原创 2019-07-12 09:22:20 · 2786 阅读 · 0 评论