算法导论笔记-6

文章来源: http://thunderfyc.wodpress.com.cn/

VII Selected Topics
  27 Sorting Networks
    总共N条数据线 要排序数据沿着线传递 某些两根线之间有比较交换器 可以在逆序时交换两线数据


    
    The zero-one principle
      如果排序网络满足所有可能的由01组成的数据 就能满足任意数据

    A bitonic sorting network
      Bitonic Sequence 先增后减或先减后增再减的序列
      Half-Cleaner 将第i个 和第i+n个比较 在上下中至少有一半会全0或全1
      Bitonic Sorter 继续在上下两个分区中做Half-Cleaner

    A merging network
      XY两个有序序列 将Y反序和X合并就是Bitonic序列 然后排序即可

    A sorting network
      先将相邻两个都排序 然后做Merging Network

  28 Matrix Operations
    Transpose 转置矩阵 行列颠倒

    乘法计算 cik = sigma(aij*bjk)
    A(BC) = (AB)C A0 = 0 IA != AI A(B+C) = AB+AC

    x是向量 (x1, x2, x3,…,xn)是Linearly Dependent 当存在系数使得 c1×1+c2×2+…+cnxn = 0
    列Rank是Linearly Independent的最大列数 行Rank同 当n*n时 为矩阵rank

    Positive-definite Matrices
      n*n的矩阵A 如果是正定矩阵 那么x’Ax>0 对于所有n非零向量x x’为转置矩阵
      任意均线形独立的A  A’A是正定矩阵

    Strassen’s Algorithm for matrix Multiplication
      左上右上左下右下 X abcd Y efgh  Z rstu  Z = XY
      A1 = a      B1 = f-h      P1 = A1B1
      A2 = a+b    B2 = h        P2 = A2B2
      A3 = c+d    B3 = e        P3 = A3B3
      A4 = d      B4 = g-e      P4 = A4B4
      A5 = a+d    B5 = e+h      P5 = A5B5
      A6 = b-d    B6 = g+h      P6 = A6B6
      A7 = a-c    B7 = e+f      P7 = A7B7
      r = P5+P4-P2+P6
      s = P1+P2
      t = P3+P4
      u = P5+P1-P3-P7
      巨型稠密图时采用

    Solving systems of linear equations
      a11×1 + a12×2 + … + a1nxn = b1
      a21×1 + a22×2 + … + a2nxn = b2
      …………………………..
      an1×1 + an2×2 + … + annxn = bn

      a形成矩阵A x形成列向量X b形成列向量B
      AX = B
      X = A’B (A’A = E)
      如果A的rank比n小 无法确定

      LUP方法
      求LUP使得 PA = LU
      L是单位左下三角矩阵 U是右上三角矩阵 P是排列矩阵(每个1不同行不同列 其余为0)
      AX = B PAX = PB LUX = PB Y = UX Forward substitution 得到Y back substitution得到X
     
      Forward Substitution LY = PB = B’
         y1                 = b1′
      l21y1 + y2            = b2′
      l31y1 + l32y2 + y3    = b3′
      ………………………
      ln1y1+… + yn        = bn’

      直接求y1 yi = bi’ - sigma(lij yj)

      Back Substitution
      u11×1 + u12×2 + … + u1nxn = y1
      …………………………..
              un-1n-1 xn-1+unn xn = yn-1
                           unn xn = yn
      直接求xn xi = (yi - sigma(uijxj))/uii

      LU
      A = ((a11 wT)(v A’)) = ((1 0)(v/a11 In-1))*((a11 wT)(0 A’-vwT/a11))
        = ((1 0)(v/a11 In-1))((a11 wT)(0 L’U'))
        = ((1 0)(v/a11 L’))((a11 wT)(0 U’))
        = LU
      a11为0 或者A’-vwT/a11为0时 用P来轮换避免 正定矩阵不需要轮换
      LU 枚举K 1->n 得到ukk = akk 然后做i k+1->n lik = aik/ukk uki = aki 调整a 做i k+1->n j k+1->n aij = aij - lik*ukj 返回L U

      LUP
      交换第1行和第k行 有矩阵Q
      QA = ((ak1 wT) (v A’)) = ((1 0)(v/ak1 In-1)) * ((ak1 wT)(0 A’-vwT/ak1))
      P’(A’-vwT/ak1) = L’U’
      P = ((1 0)(0 P’)) Q

    Inverting matrices
      AX = En
      D = ((En A 0) (0 En B) (0 0 En)) D’ = ((En -A AB) (0 En -B) (0 0 En))
      A = (B CT C D) A’ = (B’+B’CTS’CB’ -B’CTS’ -S’CB’ S’)

    Symmetric positive-definite matrices and least-squares approximation
      任何正定矩阵是满rank的(nonsingular)
      对称正定矩阵的左上角矩阵 都是对称正定矩阵

      Least-squares approximation
      已知m个点 (x1 y1)… (xm ym) 求函数使得yi = F(xi) + η(i) 假定F(x) = c1+c2x +….+cnx^n-1
      设fi(x) = x^i-1
      A ((f1(x1) … fn(x1) … (f1(xm) … fn(xm))) * c (c1..cn) = Ac(F(x1) .. F(xm))

      ||η|| = sqrt(sigma(ηi)^2) = ||Ac-y||^2 = sigma(sigma(aijcj)-yi)^2
      (d||η||^2)/(dck) = sigma(2(sigma(aijcj) - yi))aik = 0
      (Ac - y)^T * A = 0 => AT(Ac-y) = 0 => ATAc = ATy
      c = ((ATA)^-1 AT)y = A’y  A’ = (ATA)^-1 * AT

  29 Linear Programming
    在等式或者不等式的约束下 找最大或最小对象

    General Linear Programs
      线性函数 f(x1, x2,.., xn) = sigma(aj*xj)
      线性不等式 f() <= b / f() >= b
      求解对象 f() 的最值

    An overview of linear programming
      以两个变元为例 我们在笛卡尔坐标系上 可以看到满足约束的变元形成一个多边形区域feasible solution 然后通过做平行线族可以得到解
      对于n变元 每个约束是一个叫做simplex的半空间
      Simplex Algorithm 通过访问每个Simplex的顶点 查找其对象值 其中最优的一个必然是解

      Algorithms for linear programming
        椭圆算法 Ellipsoid Algorithm 内点算法 Interior-point Methods
        对于整数规划 Integer Linear Program 为NP难问题

    Standard and slack forms
      Standard form
        求 sigma(cj*xj)的最大值
        约束条件 sigma(aij*xj) <= bi  xj >= 0

      Slack form
        si = bi - sigma(aij*xj) si >= 0
        xn+i = si
        最后得到若干等式 和均大于等于0的约束

    Formulating problems as linear programs
      Shortest Paths
        求d[t]最小值
        约束条件 d[v] <= d[u] + g[u][v] d[s] = 0

      Maximum flow
        求sigma f(s,v)最大值
        约束条件 f(u,v) <= c(u,v) f(u,v) = -f(v,u) sigma(f(u,v)) = 0

      Minimum-cost flow
        求sigma(a(uv)*f(uv))最小值
        约束条件 f(uv) <= c(uv) f(uv) = -f(vu) sigma(f(uv)) = 0 sigma(f(su)) = targetflow

      Multicommodity flow
        约束条件 sigma(fi(uv)) <= c(uv) fi(uv) = -fi(vu) sigma(fi(uv)) = 0 sigma(fi(su)) = targetflow i

文章来源: http://thunderfyc.wodpress.com.cn/

    The simplex Algorithm
      写成slack form 后 通过pivot操作 将目标函数的系数均为负 所有选0 即为最大
      Pivot操作即将原来在目标函数中的e 转入到约束条件 将约束中的l 放入目标函数
      每次选取一个系数正的e 然后在约束中找到l 满足其等式中 e系数为正 可以找一个常数/系数最小的 如果找不到 就是无解
      如果C(n+m, n)次没有出解 那是死循环了..

  Duality
    给出求最大值的问题 定义一个相关的求最小的问题使得两个问题共解
    已知找最大值的线型规划 找到求最小的对偶问题
    求 sigma(bi*yi)的最小值
    满足约束 sigma(aij*yi)>=cj yi>=0

  The initial basic feasible solution
    做辅助线型规划
    求-x0最大值
    约束条件 sigma(aij*xj) - x0 <= bi xj>=0
    接出来x0=0就退

30 Polynomials and the FFT
  Representation of polynomials
    Coefficient representation
      系数表示
    Point-value representation
      用n个曲线上点确定

    Fast Multiplication of Polynomials in Coefficient Form
      A*B 求A(ω0) A(ω1)… A(ω2n-1) B(ω0) B(ω1)… B(ω2n-1)
      得到C(ω0)..C(ω2n-1) 还原C
      复杂度O(nlgn)

  The DFT and FFT
    Complex roots of unity
      ω^n = 1 ωn = cos(2πi/n) + i sin(2πi/n)
      Cancellation lemma ωdk_dn = ωk_n
      Halving lemma (ω^(k+n/2))^2 = (w^k)^2
      Summation lemma sigma((ωk)^j) = 0

    The DFT
      yk = A(ωk) Discrete Fourier Transform

    The FFT
      Fast Fourier Transform
      A0(x) = ao + a2x + a4x^2 + … + a_n-2 x^(n/2-1)
      A1(x) = a1 + a3x + a5x^2 + … + a_n-1 x^(n/2-1)
      A(x) = A0(x^2)+xA1(x^2)
      递归求 复杂度nlgn

    Interpolation at the complex roots of unity
      a = DFT~(y)zu
      aj = sigma(yk*ω-kj)/2n

  Efficient FFT implementations
    0~7为例 0-4 2-6 1-5 3-7 依次配对 然后延递归树上升  可知第i个位置上的数 是i的二进制补0写法颠倒后的值

Number-Theoretic Algorithms
  Elementary number-theoretic notions
    Divisibility and divisors
      整除
    Prime and composite numbers
      素数和合数
    The division theorem remainders and modular equivalence
      Division theorem a=qn+r 可表示
      Common divisors and gretest common divisors 公约数和最大公约数
      Relatively prime integers 互素数
      Unique factorization 能够唯一分解成若干素数的乘积

  Greatest Common Divisor
    GCD recursion theorem
      gcd(a,b) = gcd(b, a mod b)
    Euclid’s algorithm
      gcd(a, b) = gcd(b, a mod b) [b > 0]  = a [b =0]
    The extended form of Euclid’s Algorithmm
      gcd(a, b) = ax +by 有解
      (d’,x’,y’) = ext_gcd(b, a mod b)  (d,x,y) = (d’, y’, x’-[a/b]y’)

  Modular arithmetic
    Finite groups
      Closure  a∈S b∈S  a@b∈S
      Identity e∈S e@a = a@e = a a∈S
      Associativity (a@b)@c = a@(b@c)
      Inverse a@b = b@a = e

      a mod n = a’ b mod n = b’
      a+b = a’+b’ (mod n)
      ab = a’b’ (mod n)

      Euler’s phi function
        Phi(n) = n(1-1/p1)(1-1/p2)…(1-1/pi) p|n

  Solving modular linear equations
    ax = b (mod n) ax +ny = b gcd(a,n)|b
    gcd(a,n) ax = 1 (mod n)的解mod n唯一 否则无解

  The Chinese remainder theorem
    对于ai = a mod ni ni两两互素 n = n1*n2*..ni
    (ai+bi) mod ni = (a+b) mod ni
    (ai-bi) mod ni = (a-b) mod ni
    (aibi) mod ni = (ab) mod ni

    设mi = n1*n2*..*ni-1*ni+1*…*nk
    mi*ti = 1 (mod ni)
    ci = mi*ti
    a = sigma(ai*ci)
   
    对于ni 两两互素 n=n1*n2*..nk
    x mod ni = ai 的解 mod n 值恒定
    x mod ni = a 的解必为 x mod n = a

  Powers of an Element
    Euler’s theorem
    a^(Phi(n)) = 1 (mod n) a<n
    Fermat’s theorem
    a^(p-1) = 1 (mod p) p是素数 a < p
   
    Modular Exponentiation
      a^b mod n
      b的二进制表示<bk,bk-1,…,b0>
      从左到右 d = (d*d) mod n 如果bi=1 d = (d*a) mod n

  The RSA public-key cryptosystem
    用于加密传输和数字签名的东西 每个人用一个Public key P和一个Secret key S 满足P(S(M)) = M S(P(M)) = M
    加密传输的时候 A将S(M)传给B B用P(S(M)) 解密
    数字签名的时候 A将S(M)和M传给B B用P(S(M))和M比较 相等的话 就证明是A发出的

    随机选择大整数 p q  n=pq 选择和(p-1)(q-1)互素的小奇数e
    计算 d 使得 ed = 1(mod (p-1)(q-1))
    e,n 作为public Key  d,n作为secret key
    P(M) = M^e mod n   S(C) = C^d mod n

  Primality testing
    the density of primes  lim(Pi(n)lnn/n) = 1 n->inf

    Pseudoprimality testing
      a^(n-1) = 1(mod n)
      Carmichael numbers 例外

      The Miller-Rabin randomized primality test
        n-1 = u*2^t 算得a^u的值之后依次计算 当且仅当只有最后为1且前一个数非n-1的时候为素数

  Integer Factorization
    Pollard’s rho heuristic
      x1任取一个数小于n xi = ((xi-1)^2 -1) mod n; d=gcd(y-xi, n) d非1非n 输出 如果i是2次幂 y=xi

文章来源: http://thunderfyc.wodpress.com.cn/

Add A Comment

You must be logged in to post a comment.

© 2008 Vain.Thunder’s Blog[CN]
Magic Vision | Design: NET-TEC of Naturkosmetik. Coding: Hartan of Brautmode.