Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JOIss2015

Avatar for sappleki sappleki
August 16, 2015
260

 JOIss2015

Avatar for sappleki

sappleki

August 16, 2015
Tweet

Transcript

  1. 3 xs a b a c a b a c

    a b allcp xs 10 0 1 0 6 0 1 0 2 0 llcp “abacabacab” “abacabacab” = 10 llcp “abacabacab” “bacabacab” = 0 llcp “abacabacab” “acabacab” = 1 …...
  2. 5 • allcp xs = map (llcp xs) (tail xs)

    と定義される * tail xs --- xsの空でない末尾部分 xs tail xs
  3. 7 • us,vs,wsを任意の3つの文字列を用意する • llcp us vs = m llcp

    vs ws = n とする • llcp us ws = min n m m/=n m + llcp (drop m us)(drop m ws) m==n * drop(k ks)-- ksのk番目までの要素を除く drop (k ks) k
  4. 8 • m<nの場合  us[m+1] != vs[m+1] vs[m+1] == ws[m+1] llcp

    us ws = m • m>nの場合 us[n+1] == vs [n+1] vs[n+1] != ws[n+1] llcp us ws =n
  5. 9 • m==nの場合 drop m us , drop m vs で照合を続ける

    m n ? ?us[m+1] とvs[m+1]が同じかどうかわからない
  6. 10 • 1<=i , j < n (n==length xs)として •

    p = llcp xs (drop i xs) q = llcp xs (drop j xs)とおくと              xs  a b a c a b a c a b allcp xs 10 0 1 0 6 0 1 0 2 0 * xs[j]==q xs[i]==p xs[2]==1 xs[4]==6
  7. 13 • llcp xs (drop k xs)= 1. min (p-j)

    q q != p-j 2. q + llcp (drop q xs) (drop (q+k) xs) q == p-j
  8. 14 1. allcp xsのk番目の要素は  allcp xs [i]とallcp xs[j]だけによって決定する 2. j==p

    (1<i<k && j=k-i<p)でない場合  愚直に調べる k==0,1の場合は直接計算  
  9. 15 • k<i+p j=k-iとしてllcp xs (drop j xs)と llcp (drop

    j xs) (drop k xs)のminを求める llcp xs (drop j xs)==llcp (drop j xs) (drop k xs)なら また愚直に求める  i j p k i+p p
  10. 18

  11. 24