			   ץ 


  

༡ĶǤΥޥι®ʱ黻⥸塼Ǥ.

ɽ

	[ ǣ, ǣθĿ, ǣ, ǣθĿ, ...]

Τ褦, ͤȸĿȤ, Ǥͤξ¤٤ꥹȤǤ.

㤨, ޥ

	[7,1,2,7,7]  [5,7,2,7]

ɽϤ줾,

	[1,1,2,1,7,3], [2,1,5,1,7,2] Ȥʤ.

encode ΥȤ,

	ʿŪ: ۤ O(N)
	ξ: O(N)
	ǰξ: O(NlogN)

Ǥ.

decode, union,intersection ʤɤ O(N), choose ֤ǽ.


 ɽη 

  union/3, intersection/3, difference/3 ʤɤɽΥꥹȤΤ褦
˥ȤƤ, ƬӤƤ, ֤ǽǤ. 
, intersection/3  difference/3 ӤƤȤǤ֤ȤФ
Ȥ. , 礦 M ʸΥƥȤ N ʸΥѥ򸡺
Ȥ, ̾ O(M + N) ǹԤʤ, ѥ򥳥ѥ뤹 O(M / N) 
ǹԤʤȤǤ(Boyer-Moore)褦, ꥹȤ򥹥åפʤΤ
ӤƤ르ꥺबԤ. , Τ褦ʡ֤ȤФɤߡפΤ
ˤϥꥹȤǤդǤȤǻȤǤɬפ. Τˤ
٥ȤФ褤, Ȥ֤ǽǤǤ뤫, KLIC 
, ٥ѤƤ鷺Ӳ򲼤, ȥȤ㤤ꥹ
ȤѤ, ľ N Ӥɤ.

  , ϥåѤ encode ޤ, Ϣ O(N) ǹԤʤ. 
, ϥåɽΥǿΥˤʤ뤿, union, intersection 
ɤǤ, ɽȤ줿ꥹȤǤӤ, ( ٥
ȥȡꥹȤλȥ ) ٤ʤ. ޤ, ϥåɽΥŬ
˸ѤʤȤϹ˥.

  ʾΤȤ, ɽϥȤ줿ꥹȤȤΤŬǤ.


 󥳡ˡ 

  , encode ®˹ԤʤȤǤפˤʤ. ñ˥Ȥ 
O(NlogN) Ǥ뤬, ϤǤ뤳Ȥ褫, ˶ᤤ֤ǥ
뤳Ȥͤ. ޤ, ǰξǤ O(NlogN) ݾڤ.

  μݤͤ, Ϳ줿ޥǿ N ȤȤ, 
ʬ 0  C*N (C) ٤ˤޤ礬¿Ǥ, ȴԤ
ȤǤ. 㤨, ǿ 100 ΥޥǤ¿Ǥ 0  ɴ 
٤ǤȴԤ. , ֽиԤΰפФƤ, Ǥ
ϥå ( hash(X)=X ) Ȥƥϥå夹֤ǥȤԤʤ, 
֤ṳ̂Ǥ. ʳΰϺǰξǽݾڤǤޡ
ȤѤ뤳Ȥˤ, encode ΥȤ,

	ϥꥹȤǤκ Max, ǿ N,  C,
	N*C 礭ǿ Plus, ǿ Minus

ȤȤ,

	Max < N*C ΤȤ
	    (N - Minus) + Minus log(Minus)

	Max >= N*C ΤȤ
	    (N - Plus - Minus) + Plus log(Plus) + Minus log(Minus)

Ǥ. ǤɤΤǤդ X  0 =< X < N*C ǤȤ O(N), ǰ
 O(NlogN) Ǥ, ʿŪϤǤ, ۤ O(N) ǥ󥳡ɤ. 
 C ǤդǤ뤬, Ǥ, C=4 Ȥ.


 ޡȤˤĤ 

ޡȤϤ˺ǽ¤˺줺, ꤷ NlogN Ӥ
󤹤. ޤ, encode ⥸塼 mergesort_init ΥꥹȤ

	[ [ , Ŀ, , Ŀ ], [ , Ŀ, , Ŀ ], ... ]

Τ褦˽. mergesort(L,M)  L ϾΤ褦, ꥹȤΥꥹȤ
. merge_pairs(L,R) ϥꥹ L (ꥹ)ƬˣĤĥޡ
Ƥ. ʤ, mergesort  merge_pairs Ƥ֤Ӥ, ܥȥॢå
󤬿ʹԤƤ.


--------------------------------------------------------------------------
    ɧ    عطϸ
                E-Mail: usa@logos.t.u-tokyo.ac.jp

