算法

推特的推荐算法

Twitter 旨在为您提供当今世界上发生的最好的事情。这需要一种推荐算法,将每天发布的大约 5 亿条推文提炼成少数几条热门推文,最终显示在您设备的For You时间轴上。该博客介绍了该算法如何为您的时间线选择推文。

我们的推荐系统由许多相互关联的服务和工作组成,我们将在本文中详细介绍。虽然应用程序的许多区域都推荐推文——搜索、探索、广告——但这篇文章将重点关注主页时间线的“为你推荐”提要。

我们如何选择推文?

Twitter 推荐的基础是一组核心模型和功能,它们从推文、用户和参与数据中提取潜在信息。这些模型旨在回答有关 Twitter 网络的重要问题,例如“您将来与其他用户互动的可能性有多大?” 或者,“Twitter 上有哪些社区,其中有哪些热门推文?” 准确回答这些问题使 Twitter 能够提供更相关的推荐。

推荐管道由使用这些功能的三个主要阶段组成:

  1. 在称为候选采购的过程中从不同的推荐来源获取最佳推文。
  2. 使用机器学习模型对每条推文进行排名。
  3. 应用启发式和过滤器,例如过滤掉来自您已阻止的用户的推文、NSFW 内容和您已经看过的推文。

负责构建和提供 For You 时间线的服务称为 Home Mixer。Home Mixer 建立在 Product Mixer 之上,Product

算法分析—大O、大Ω、大θ

前言

在算法的学习中,最开始便是要学习算法的分析。学习算法分析时,我们便会接触到这么几个符号:大O、大Ω、大θ,常常让人难以理解。

在通常的算法分析时,我们可以明白,在输入规模较小,各种算法之间的时间消耗并无明显差别。只有当输入规模较大时,对各个算法之间消耗差别的对比与分析才有意义。所以上面几个符号便常用于表达当规模逐渐趋向于一个极大数时的算法复杂度。

在表示一个算法时间复杂度时,我们常用如 T(n)=O(n^2) 的形式表示,而在渐进分析中的 “=” 更倾向于 “” 的意思。打个比方:渐进表达式 f(n) = O(g(n)) 所表达的意思是 O(g(n)) = [ f(n),h(n),…,g(n) ], f(n) ∈ O(g(n))

一、大O表示法

f(x) = O(g(x)) 表示的含义是f(x)以g(x)为上界

大O是我们在分析算法复杂度时最常用的一种表示法。当函数的大小只有上界,没有明确下界的时候,则可以使用大O表示法,该渐进描述符一般用与描述算法的 最坏复杂度f(x) = O(g(x))正式的数学定义:存在正常数c、n、n0,当 n>n0 的时,任意的

算法中的大O表示法

算法中的大O表示法

1.算法概念

计算机科学中的算法指的就是计算机执行的指令。

算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务,如计算职工的薪水或打印学生的成绩单。

一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。

               -----------       
      输入 --> |   算法    | --> 输出
               -----------  

算法的核心是创建问题抽象的模型和明确求解目标,之后可以根据具体的问题选择不同的模式和方法完成算法的设计。

2. 时间复杂度

算法的时间复杂度是指算法需要消耗的时间资源。

一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做:

T(n) = O(f(n))

算法执行时间的增长率与f(n) 的增长率正相关,称作渐近时间复杂度(Asymptotic Time Complexity),简称时间复杂度。

3. 空间复杂度

算法的空间复杂度是指算法需要消耗的空间资源。

其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。

同时间复杂度相比,空间复杂度的分析要简单得多。

4. 大 O 表示法

速率限制-基于漏桶(Leaky bucket)与令牌桶(Token bucket)算法的流量控制

互联网服务赖以生存的根本是流量, 产品和运营会经常通过各种方式来为应用倒流,比如淘宝的双十一等,如何让系统在处理高并发的同时还是保证自身系统的稳定,通常在最短时间内提高并发的做法就是加机器,但是如果机器不够怎么办?那就需要做业务降级或系统限流,流量控制中用的比较多的两个算法就是漏桶和令牌桶.…

每个程序员都应该收藏的算法复杂度速查表

算法复杂度这件事

这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 OBig-O 复杂度。我之前在参加面试前,经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,以便我在面试时不会被问住。最近这几年,我面试了几家硅谷的初创企业和一些更大一些的公司,如 Yahoo、eBay、LinkedIn 和 Google,每次我都需要准备这个,我就在问自己,“为什么没有人创建一个漂亮的大 O 速查表呢?”所以,为了节省大家的时间,我就创建了这个,希望你喜欢!

 数据结构操作

数组排序算法

大 O 复杂度图表

Big O Complexity Graph

Big O Complexity Graph

推荐阅读

    

常用的数据结构以及算法

一、关于数据的几个概念

1、数据。是对客观事物的符号表示。在计算机科学是指所有能够输入到计算机中并能被

计算机程序处理的符号集合。包括数值、文字、图像、图像、音频、视频等形式。

2、数据项。所谓数据项就是数据中具有独立含义的、不可再分割的最小数据单位。是客

观实体一种特征的数据表示。

Round-Robin负载均衡算法及其实现原理

轮询调度算法(Round-Robin Scheduling)

轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。

算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。

轮询调度算法流程

假设有一组服务器N台,S = {S1, S2, …, Sn},一个指示变量i表示上一次选择的服务器ID。变量i被初始化为N-1。其算法如下:…

微信、陌陌的架构方案分析(LBS之二)

目标

解决大型应用(微信、陌陌级别)中,用户经纬度在不断更新,用户查找频繁的问题。(每分钟1000W级)

方案A

本方案前,请先阅读 http://www.alivenode.com/index.php/archives/300(LBS的球面距离计算以及Geohash方案探讨(LBS之一))

由上文,简单可得;
1、仅需每分钟将用户的经纬度,上报到数据库;
2、然后每次用户查找附近好友时,通过 LIKE ‘wm3yr3%’,即可获取…

            

(转)查找附近的xxx 球面距离以及Geohash方案探讨

 
本博客内容转自:http://www.wubiao.info/372

随着移动终端的普及,很多应用都基于LBS功能,附近的某某(餐馆、银行、妹纸等等)。

基础数据中,一般保存了目标位置的经纬度;利用用户提供的经纬度,进行对比,从而获得是否在附近。

目标:
查找附近的XXX,由近到远返回结果,且结果中有与目标点的距离。