.


:




:

































 

 

 

 


. .




4

 

, , . n 0 (2 k), k- ( ). . , m- . d, m,

O (d (n + m)). , , n, m = O (n) .

, . £ - , S, | S |= m. £ S, (,,...,) (,,...,) 1 2 p 1 2 q a a a £ b b b, :

1) j, j j a < b i < j i i a = b;

2) p £ q i i a = bi £ p.

, . m ( ), t (n - t +1) , £, [2].

 

-.

.

3.4. . , , , N. , . ... , . , .

. , , :

t:=p; WHILE t<>id[t] DO t:=id[t];

, :

t:=p; WHILE t<>id[t] DO BEGIN id[t]:= id[id[t]]; t:=id[t] END;

, , , : (i0i1i2i3i4i5i6i7i8i9...)

:

(i0i2i4i6i8...)

(i1i2i4i6i8...)

(i3i4i6i8...)

...

 

4

, , . // id ,

// sz .

FOR i:=0 TO N-1 DO BEGIN id[i]:=i; sz[i]:=1 END;

// :

WHILE NOT EOF(input) DO BEGIN READLN(p,q);

t:=p;WHILE t<>id[t] DO BEGIN id[t]:=id[id[t]];t:=id[t] END;

j:=q;WHILE j<>id[j] DO BEGIN id[j]:=id[id[j]];j:=id[j] END;

IF t<>j THEN {p,q } BEGIN WRITELN(p,q);

// :

IF sz[t]<sz[j] THEN // t j

// union(j,t): j:=jÈt: j t

BEGIN id[t]:=j; sz[j]:=sz[j]+sz[t] END

ELSE // j t

// union(t,j): t:=tÈj: t j

8 , , ...

BEGIN id[j]:=t; sz[t]:=sz[t]+sz[j] END

END

END

. . , , , ,

:

F(0)=1, F(i)=2F(i-1) i>0. F (- ).

G(n), F k, F(k)≥n. G (- ).

( ) M C*M*G(M) C 9.

. :

, . .

, . .

, , ...

( ) ( ) , .

 

. .

.

( ) . , , n- n , n , n. T(n) , , n, T(n). , . 10

 

T(n) , . .

. T(n) , n. T(n) n T(n) .

. , , .

, , , . , - : , .

, , , 11.

T(n) n. T(n) - , T(n). ,

.

. (amortized analysis) , , . , , ,

, . , () .

 





:


: 2016-11-18; !; : 1768 |


:

:

, , 1:10
==> ...

1894 - | 1807 -


© 2015-2024 lektsii.org - -

: 0.016 .