程序员需要的数学基础

404 阅读3分钟

1.为什么学数学?

image.png

2.计算机为什么用二进制?

二进制和现代计算机计算机系统硬件实现有关,组成计算机系统的逻辑电路通常只有2个状态,开关的接通与断开,0断开,1接通,二进制数据抗干扰能力强。 二进制适合逻辑运算,真假和10对应,加减乘除都可以用0,1实现

乘除怎么表示?

位运算

不区分逻辑左移和算术左移?

右移存在问题:高位补0还是1,左移只要补0就ok

3.取余操作本身就是个哈希函数

  • 同余定理:a,b,%m相等:a和b对于模m同余
  • 奇偶数也是余数应用

哈希算法

  • 任意长度输入通过哈希算法压缩为某一固定长度输出
  • 为了增加数据散列的随机程度:f(x)=(x+MAX)%size,加一个MAX

迭代法

通过旧的变量值推出新的变量值

1.求方程精确或近似值

二分

2.查找匹配记录

二分

3.机器学习算法中的迭代

4.数学归纳法

5.递归

6.排列

  • 田忌赛马
  • 暴力破解密码

7.组合

8.动态规划

9.BFS

10.DFS

11.双向广度优先搜索

  • a,b两个人,a先BFS,记录a所有好友,然后看b是否出现在集合a中,没有就从b出发BFS,记录所有好友,然后看a和a1是否出现在b和b1并集中,没有就回到a继续从它出发BFS,记录二度好友a2,然后看b和b1是否出现在a,a1,a2并集中,如果没有回到b继续从它出发BFS,如此,until找到a的好友和b的好友交集

12.图

13.时空复杂度

14.概率与统计

  • 随机变量x和y联合:联合概率
  • 通过联合概率P(x,y)在y求和,就可以得到P(x),这个P(x)就是边缘概率
  • 朴素贝叶斯分类算法
  • 链式法则和马尔科夫假设

15.线性代数

  • 向量空间
  • 文本检索
  • 线性回归
    • 高斯消元
    • 最小二乘法
  • 矩阵

16.缓存系统:如何通过哈希表和队列实现高效访问?

缓存设计主要考虑因素:

  • 硬件性能
  • 命中率:LFU,LRU
  • 更新周期

17.如何设计一个缓存系统?

  1. 哈希表
  2. 链表+数组构建哈希表

18.搜索引擎

  • 倒排索引
    • 倒排索引基于哈希表
  • 向量空间模型
  • 相关性

搜索引擎设计框架

  • 离线
  • 在线

image.png

image.png

image.png

电商难题

  • 相关性/准确度

查询分类

  • 第一种方法是在商品分类的数据上,运用朴素贝叶斯模型构建分类器
  • 第二种方法是根据用户的搜索行为构建分类器

查询分类和搜索引擎结合

image.png

19.推荐系统

  • MovieLens数据集

  • 设计整体思路

    • 用户评分标准化
    • 衡量其他用户或物品之间相似度
    • 根据相似用户或物品,给出预测得分p
  • SVD

20.位操作

  1. (i&1)==0是偶数
  2. 集合操作{1, 3, 8}和{4, 8},10000101,10001000,或一下就找到并集

21.书籍推荐

《离散数学及其应用》 《概率统计》 《线性代数及其应用》 《程序员的数学》 《数学之美》