You are on page 1of 167



&





 


 2010

1.1

,  , 

. . . . . . . . . . . . . . . . .

1.2

  

1.3

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.1    

1.4

. . . . . . . . . . . . . . . .

1.3.2   . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.3 

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2 --

15

2.1

  . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.2

  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.3

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.4

  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.4.1  -- . . . . . . . . . . . . . 26
2.4.2  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.5

  Fourier FFT . . . . . . . . . . . . . . . . . . . . . . . 29
2.5.1  Fourier

. . . . . . . . . . . . . . . . . . . . . . . . 30

2.5.2    Fourier
2.6

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3 
3.1

35

 
3.1.1

. . . . . . . . . . . . . 31

. . . . . . . . . . . . . . . . . . . . . . . . . 38

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.2

    . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.3

  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3.1 - . . . . . . . . . . . . . . . . . . . . . 51

3.4

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4 
4.1

 
4.1.1 

4.2

53
. . . . . . . . . . . . . . . . . . . . . . . . 54

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4.3

   . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.3.1  

4.4

. . . . . . . . . . . . . . . . . . . . 65

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

5 
5.1

67

  . . . . . . . . . . . . . . . . . . . . 67
5.1.1   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

5.2

  

5.3

  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

5.3.1
5.3.2 
5.4

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.4.1    

. . . . . . . . . . . . . 86

5.4.2  Kruskal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.4.3  Prim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.5

 

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

5.5.1  . . . . . . . . . . . . . . . . . . . . . . . . 97
5.5.2    . . . . . . . . . . . . . . . . . . . . . . . . 97
5.5.3    . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.6

  . . . . . . . . . . . . . . . . . . . . 99
5.6.1  Bellman-Ford

. . . . . . . . . . . . . . . . . . . . . . . . . . 100

5.6.2  Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103


5.7

   . . . . . . . . . . . . . . . . . . 109
5.7.1  Floyd-Warshall . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.7.2     . . . . 112

5.8

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

6  
6.1

117



. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

6.1.1   
6.2

6.3

. . . . . . . . . . . . . . . . . . . . . . 119

 Turing

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

6.2.1 Turing

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
6.3.1 -:   

6.4

 -

. . . . . . . . . . . . . . 124

. . . . . . . . . . . . . . . . . . . . . . . . . . 125

6.4.1  . . . . . . . . . . . . . . . . . . . 125


6.4.2

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

6.5



6.6

7 -
7.1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

NP-

133

- Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . 134


7.1.1 NDTM . . . . . . . . . . . . 134
7.1.2

NTIME

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

ii

7.2
7.3

7.4

NP .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

NP- . . . . . . . . .
7.3.1 NP- 

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

151

153

A.1 

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

A.2  
A.2.1 

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

A.3 

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

B  
B.1

159
. . . . . . . . . . . . . . . . . . . . . . . . . . 159

iii

iv

       .    
 .

   

   ,    
  .    
 .
         .
      ,
 ,     .
      
       . ,
   
   ,
  ,  ,      ,   . 
   .

    -

 ,

   -

    .

    
 
.
      

 .

  -

           
  .
 ,     , 
    .
 

    -

   .

1.

     
     .  ,   
 .  ,
      
   .

  

,    

.

  
    .
 
      . ,     
 .   ,     
.     
      
    .
      .

     -

   
(tra table),  

NP.

   

   

 

(intra table).

1.1

,  , 

. , ``'' 
.  ,
  .  -

     .   ``''


 .

  

  
(input) 

   .


(output)

 ,

,  

 .
  1930,   ``  ''  Chur h, Godel, Herbrand, Kleene, Post, Turing,
.   
  (..

  ,  

). ,   ,  
``''   , 
1

      -

,   , fuzzy , .

1.1. ,  , 

   (partial re ursive fun tions). ,


  ,        ( , ,
).
 , ,
 .
     .

 .   ,     C
Pas al.
      C Pas al,   
 (.. ,  ,
  , .). 
  (blo k)  ( ) 

f: : : g

 C ( begin

: : : end  Pas al).

   
.  (arrays),  (stru tures - re ords
 Pas al)   (sets)   .
 (..

, ,

,  ) (.. 
, )  .

 .

( omputational problem)

  (input)
(output).      
  .
,   , 

(x; y),    x  y.

 

n , 
X = (x1 ; x2 ; : : : ; xn ) n .  
0
0 0
0
 X = (x1 ; x2 ; : : : ; xn )   
0
0
0
, x1  x2      xn .


 . 
   



(instan e) 

(15; 32)   
(8; 1; 7; 5; 3; 6; 2; 4)  

. ,
 .

   .
  , 

(solutions).

      .


480     (15; 32)   -

1.

(1; 2; 3; 4; 5; 6; 7; 8)     (8; 1; 7; 5; 3; 6; 2; 4)

  .

 .   .

- orre t),  

    .    
(   )
    .
  - ,
    .

1.2

  

    
 

(Knapsa k Problem).    , 

B  0 n ,  si  0 pi  0,
i = 1; 2; : : : ; n.    

   

   .
   :

0 1)

.    ,  

 .   


fi pi .

fi , fi 2 [0; 1,   fisi 

    (Fra tional Knapsa k Problem),

    
    . , 
 

Pn
i=1 fi pi ,

Pn
i=1 fi si

B

fi 2 [0; 1 i = 1; : : : ; n.

   (   ),    .      
 . ,
 ,

fi

fi  1  0 (  -

   0 1). 

    . ,   

i = 1; : : : ; n.

Pn
i=1 fi pi ,

Pn
i=1 fi si

B

fi

2 f0; 1g

   ,   

(s1 ; p1 ); (s2 ; p2 ); : : : ; (sn ; pn )  


.  (B; (s1 ; p1 ); (s2 ; p2 ); : : : ; (sn ; pn ))
. n fi 
  .   fi 2 [0; 1, 
fi 2 f0; 1g.
 

(feasible solution)   

    .



(optimal solution),

  

    

1.2.   

 .
  ,   .
,   .
 ( ) 

n ).

2n

, 

 (  

 ,  

 .   ,  ,
   (
  ).

 1.1. T

(30; ((20; 5); (10; 4); (15; 10); (40; 10)))

  

   30   20, 10, 15, 40, 5, 4, 10, 10, .

(1=2; 1; 1=3; 1=8); (1; 1; 0; 0),

(0; 1; 0; 1=2)



 ()  -

    .     .  

x; 1; 1; x=2), x 2 [0; 1=4,    -

(1=4

15.25.  ,  

(0; 1; 1; 0) 14.
 ,   (20; ((5; 2); (7; 10); (4; 9))) 
 ,   (1; 1; 1).  (17; ((6; 6); (11; 10); (9; 8); (8; 8)))
  ,  (1, 1, 0, 0) (0, 0, 1, 1) 16,
8
   ,  (1; 3=11; 0; 1) 16
11 . 

 (;)  , 

     
   .   
    ,   .

   
(optimization problem).
,

 

 

 

 ,

ut

 

(obje tive value).

 



( )  .   ,
  .

1.1 ( ).



 

 :








.

 2  ,   ().



 2  ,   f :  () 7! IR

    .


 2  ,    2  ():

8  2 (); f ( )  f ()

 

1.

8  2  (); f ( )  f ()

 



 

 

f ( )

  .

     
 

( ombinatorial optimization problems).

 -

,

     
  

 

 .

 1.2.      ,        .
     . 
.   
 , 

2n

 

ut

 .

      
 (Shortest Path Problem):  / 

s t,
s  t.

    

   

 

n
i; j 2 f1; : : : ; ng,  dij dji    i  j
 j  i  (    - 
    0). 
(tour),

 

(Travelling Salesman Problem

TSP): 

  , 
.
    .
 ,

i; j 2 f1; : : : ; ng dij = dji ,

     .  
       


(metri spa e)      ,

    .
2

  

 .
3

-  

d:N

 N 7! IR+

 

     : ()  ,

8i; j 2 N; d(i; j ) = d(j; i)

, ()     0,

()    , 

d(i; k) + d(k; j ).

8i 2 N d(i; i) = 0
i; j; k 2 N d(i; j ) 
,

1.3.

1.3

  
       
(..  , , ,
, .).      
 

 .

,   
  .   , 
  (Random
A ess Ma hine, RAM) .   ,
    
(   ).

   

,  (.. 
, ,  , .),
 (.. , , , , .)
  .
       .
  .      
.     
 (..    ,       ,   
,     
, .)

   ,  -

    ,  ,
      .  
      
 .
      
 . ,  
         ,
 .
    
  .



(bits)       .
,   `` ''  
       `` ''   .
,    ,   . 
     .

1.

,       
   .

.  
 `` ''  
  . , 
 

(10; 5)

(100; 30)

  .

 

ut

(1; 1) (22004 ; 22005 ).


1.3.1

   

   

     
    ,   
  .

 

(prin iple of invarian e)     -

.     
   (..

 -

        
 ). ,   
 

 

  

(   ).

1.2 (  ).   

T (n)

n    ,  
n
 T (n) .
,

 

  ,  
 (  


 .

).

  

   

      .
,    () 

      .

   

n  ,   

     . -

2n    1000n2
2
 n    100 n log n.  ,
,  

n  ,

   
   .  ,  
       .
  .  

n  
4

(   

    

log n

T (n)  

 2

n     .
  n.

ln n

1.3.

T (n) = n, n2 , n3 
k

,
,
.  T (n) = n
n
 k ,  
,  T (n) = d
 d > 1,  
.

T (n) = 1   ).



.      ,  
   (.. , ,  , .)     -

ut

1.3.2

 

      
  ,       .  , 
  

n,    .

,  
    .   ,    ,   .
,  

.       .      ,  
,       ,  . ,  


 

 .

        (  ). 
    
  , 

 -

(worst- ase analysis).


 ,    

   .
 ,          (.. .
 merge-sort heap-sort ).     (..
  qui ksort,  ),


(avegage- ase analysis)  

  .

1.3.3



       
 .



 

10

1.

    .
,   
 

IN = f0; 1; 2; : : : g.

 

 . 
 .     
(.  

  
 
g(n),  (g(n)) 
    . ,  g (n),
(g (n))  

.

IR+ ).

To

. , 

(g(n)) = ff (n) : IN 7! IR+ j (9 1 ; 2 2 IR+ ) (9n0 2 IN) (8n  n0 ) 1 g(n)  f (n)  2 g(n)g
(g(n))
  1 ; 2    f (n)  1 g (n) 2 g (n)  
 n  n0 (, 
  n).
(g (n)) .
, f (n) =
(g(n)) ( f (n) 2 (g(n)))  f (n)   (g (n)).   .
, 

f (n)

 

'   .

, 

    
 . 

n   ,   

  .

f (n) = an2 + bn + , a > 0,


2
,  n   , n 
  f (n). , d 
(nd ). , 106n2 + 104n3 + 10 2 n3 log n = (n3 log n),  n3 log n
. ,    (1),  
    n  .
, 

2
 f (n) = (n ).

O.

g(n),

O(g(n))

 

O(g(n)) = ff (n) : IN 7! IR+ j (9 2 IR+ ) (9n0 2 IN) (8n  n0 ) f (n)  g(n)g

f (n)   O(g(n))     f (n)  g(n)    n.


O    .
 , f (n) = O(g (n))  O(g (n))
, 

.
  


O(g(n)).

f (n)

(g(n)),

 O,

  

O(g(n)).

(g(n))

1.3.

11

g(n),

(g(n))

 

(g(n)) = ff (n) : IN 7! IR+ j (9 2 IR+ ) (9n0 2 IN) (8n  n0 ) g(n)  f (n)g

f (n)   O(g(n))     f (n)   g(n)    n.



    .    , O,
,  
  f (n) g (n) f (n) = (g (n)) f (n) = O(g (n))
f (n) =
(g(n)). ,  f (n) = (n2 ),  f (n) = O(n2 )
f (n) =
(n2 ). ,  g(n) = O(n3 ) g(n) =
(n3 ),  g(n) = (n3 ).
o.   O 
2
2
(tight), .    . ,  2n = O(n )
2
3
,  2n = O(n ) . O o 
, 

.


g(n), o(g(n))   

o(g(n)) = ff (n) : IN 7! IR+ j (8 2 IR+ ) (9n0 2 IN) (8n  n0 ) f (n) < g(n)gg
o 
  ,  f (n)   g (n)
n.    f (n) = o(g(n))
limn!1 fg((nn)) = 0. , 2n2 = o(n3 ), 2n2 6= o(n2 ).
! .   o, !  
.  g (n), ! (g (n))  

  

!(g(n)) = ff (n) : IN 7! IR+ j (8 2 IR+ ) (9n0 2 IN) (8n  n0 ) g(n) < f (n)g
! 
  ,  f (n)   g (n)
   n.    f (n) = ! (g (n))
f (n)
2
2
2
limn!1
g(n) = 1. , 2n = ! (n), 2n 6= ! (n ).

1.1. 

f (n) g(n)    .

       
 :

1.

10f (n) + 1010 = O(f (n)).

2.

f (n) + g(n) = (minff (n); g(n)g).

3.

f (n) + g(n) =
(minff (n); g(n)g).

4.

f (n) + g(n) = O(maxff (n); g(n)g).

5.

f (n) = (g(n)),  2f (n) = (2g(n) ).

12

1.

6.

f (n) =
(f (n=2)).

. 1, 3, 4, 6   . 2 5

ut

.

1.2.     :

25n
2n
nlog n

log4 n (log n)100 log log n


100
n0:6
2n + n2
3
log log n
2log n

n log log n
n1= log n
n
logn 2 + n

n0:1 log log n


log(n!)
(log n)log n

n1= log n = (1); log log n; log4 n; (log n)100 log log n; n0:1 log log n;
n0:6 ; n log log n; log(n!) = (n log n); lognn 2 + n = (n log n);
3
2
100
(log n)log n = (nlog log n ); nlog n ; 2log n = (nlog n ); 2n ; 2n + n2 = (2n ); 25n
1.3.  ,   


(g(n)); O(g(n)); o(g(n));


(g(n)), !(g(n)) .

f (n)
g(n)
(g(n)) O(g(n)) o(g(n))
(g(n)) !(g(n))
n
+5
n
5
100
2
2 +2 +n
4
3
n n
16log n
4
n
5
102n
n1= log log n
n0:001
n!
nn
20
nlog n
2n
.

f (n)
2n+5
n4 n3
54n
n1= log log n
n!
20
log
n n

g(n)
(g(n)) O(g(n)) o(g(n))
(g(n)) !(g(n))
100
+n

log
n
16

2
n
10

0
:
001
n

n
n

n
2

2n + 25

f (n)

1.4.

1.4

13

[11, [7, [3, [37, [30, [1    ,


,  . ,  [11 
  ,   
  ,     
. [1     .
   K. Mehlhorn [30  
 .  
 [3 [37 (.

    R. Sedgewi k).

[7

     
   . [11 [7  
.
[32        .

[41 [17 

.   
  .
[20 [33     .
  [20  

NP-  -

  . [33   
  .
[31 [42    .
      
   .

14

1.

2 --

 -- (divide-and- onquer)   
 (.. , ,  Fourier).
--  .  -      :

1.

   - (subinstan es).

2.

 -  .

3.

     -.

--     (top-down).
    .
 ,    -  ,    - - .
  --  (merge-sort),   (qui ksort),
  
 .

    

.
  -- :

1.     .
,   , ,
 .

  ,

    .
2. -   ' 
,    . ,    , 

n .

n=2     

3. ( ) .

   , -

15

16

2. --

  . ,  
 ,    
 .
4.      -
    .    ,    
.   , 
 .

     ,   
--  ()
. --   
     .
   .

     ,   
(Mapple, Mathemati a, ).
 -- 
,  ,  

n- -

,   Fourier (Fast Fourier


Transform).

2.1.    

n-

 -

Fibona i.    ;  
;  

n-

Fibona i .

Fibna iRe ( )

n  1 then return(n);
return(Fibona iRe (n
1) + Fibona iRe (n 2));
if

T (n)   n-   T (n) = (1) + T (n


1) + T (n 2) T (1) = (1).
 T (n)    Fin
bona i  T (n) = (' ),  '  
p
1+ 5  1:618.
2
x = x + 1. ' 
(golden ratio)  ' =
2
. 

 

!

  , -

 :   ,
   .  
 (

'n )  n

 .
 

(n).

2.1.  

17

n
f 1; fp 0;
for i
1 to n do
f f + fp;
fp f fp;
return(fp );

Fibna i( )

    (invariant)   

i, i = 1; : : : ; n,  f  i + 1- 
 fp  i- .  

 for-loop  
Fibona i,

ut

2.1

 

      
   .

  -

,  
    .   ,   
  .

 

,     
,     .
  

n .

x y, 

  

(n)   .
 n- x y , 2
    (n )  (n
 n  ). ,
2
a la russe  (n )  (   -

  ). ,
  1,  

(n)

.    
   .
  

n  .  x = xn xn 1    x2 x1 y = yn yn 1    y2 y1 ,
xi ; yi 2 f0; 1g   x y .
 
,  x y   
n=2 x + x ,
    . x x = 2
h
`
xh   n=2  x`  
n=2   . , y = 2n=2 yh + y`. x  y
--.  

x  y = 2n xhyh + 2n=2 (xh y` + x` yh) + x` y` = 2n zh + 2n=2 zm + z`

(2.1)

18

2. --

zh = xh yh, zm = xh y` + x`yh , z` = x` y` .
 x  y    (xh yh ,
xh y`, x` yh, x` y`)  n2 - .  

    

 .
 

xy

 (2.1)  

 . 

     (2.1)


2n  (n).

 -- 
.  ,  
      .


T1 (n)

 

n-

.    

T1 (n) = 4 T1 (n=2) + (n)


T1 (1) = (1).   
T1 (n) = (n2 ). ,
 --

    .
     

zm . ,  zm 
xh yh x` y`,  ( n2 + 1)- :

zm = (xh + x` )(yh + y`) xh yh x` y` = xh y` + x` yh


 


n -

zm ,  (2.1)  3 -

, 6  

2n ,  . ,
 (n).
 T (n)   n- 
 .  T (n) :

T (n) = 3 T (n=2) + (n)


T (1) = (1).

 

T (n) = (nlog2 3 ) = (n1:59 ).

, --   
     
a la russe.

2.2


 

A, B

n  n   C = A  B .

  :

8i = 1; : : : ; n; j = 1; : : : ; n C [i; j =

n
X
k=1

A[i; kB [k; j

(2.2)

2.2.  

19

 ,  

(n). C n2 ,   (n3 ).

     1960, V. Strassen [39 -- 

O(nlog 7 ) = O(n2:81 ).

 Strassen  
  .
,   

n .

A=

A11 A12
A21 A22

; B=

n
22

A, B

B11 B12
B21 B22

; C=

C11 C12
C21 C22

C11
C12
C21
C22

=
=
=
=

A11 B11 + A12 B21


A11 B12 + A12 B22
A21 B11 + A22 B21
A21 B12 + A22 B22
n  n   -

  , 
 

n
22

2

n  n (n2 ).

T1 (n)   
2
T1 (n) = 8 T1 (n=2) + (n ) T1 (1) = (1).
3
  T1 (n) = (n ).  ,


 -- .
     
 .  

D1
D2
D3
D4
D5
D6
D7

=
=
=
=
=
=
=

2

n:

(A21 + A22 A11 )(B22 B12 + B11 )


A11 B11
A12 B21
(A11 A21 )(B22 B12 )
(A21 + A22 )(B12 B11 )
(A12 A21 + A11 A22 )B22
A22 (B11 + B22 B12 B21 )

   

C11
C12
C21
C22

=
=
=
=

D2 + D3
D1 + D2 + D5 + D6
D1 + D2 + D4 D7
D1 + D2 + D4 + D5

C  :

20

2. --

  Strassen 
  


2  2.

2  2 
n  n (n2 ).
2 2
n

,    Strassen, 

T (n),  

2
T (n) = 7 T (n=2) + (n ) T (1) = (1).
log 7 ) = (n2:81 ).
T (n) = (n

 

      Strassen -

n. 
O(n2:376 ) [10. R. Raz

    

A. Shpilka [36   

(n2 log n)   

 .

2.3

 . A   .
   
    .
  .
     (
  ). ,         
(  ).  
   Diffie Hellman [13   
 70.


( -

   )

q   p.

p q

,   
  .
 ,  

p.  a b   .
qa = qa mod p   1 . , 
b
qb = q mod p   .  p q , qa qb
 


  .
1

p (modulo-p arithmeti )  log p  

  .
 

  

p,  .

   

  ,    
.     :
 

qa

mod p

p, q ,

qa ,

.  

p,

(qa mod p)b mod p = qab mod p


a0
qa =
 

a0 ,  q  qa  

   (dis rete logarithm problem)

 ()    .

     (fa toring) .

2.3.

21

 

p, a qb, 

Ka = qba mod p = (qb mod p)a mod p = qab mod p


,  

p, b, qa , 

Kb = qab mod p = (qa mod p)b = qab mod p


 

Ka = Kb .

 , '

     ,
   .

qa ,

p, q,
ab

   , 

qb .

Ka = Kb

 

(  ).  
  ,   .

     -

n- x   p.
n
    x mod p x, n,
p .   
a
b
 qa = q mod p qb = q mod p.
i
  x mod p, i = 2; : : : ; n, i 1 mod p  x   n 
  x


. --    .

n , n-  x     n2 -
n -  x   .  n
 x.
2
, n-  x    x   
n 1 -  x.    .
2


   .

x; n; p)
if n = 1 then return(x mod p);
t ExponRe (x;bn=2 ; p);
t t2 mod p;
if n is odd then return(t  x mod p);
else return(t);

ExponRe (

T (n)     n-

.   
  
2

n-

p (

512 ,   

2512

22

2. --

log p ).

T (n=2).  T (n)  

 

O(log2 p).

T (n) = T (n=2) + O(log2 p)


T (1) = O(1).
  T (n) =
2
O(log n log p)  O(log2 p)  n .  ,  n 512 ,
10 = 1024 .
   2
. ExponRe     .

  , 

 -. 

  - 

 -.

2.2.     ExponRe .
.   
 

xn mod p  -

n.    a la russe (

   ).

x; n; p)
t x; r 1;
while n  1 do
if n is odd then r
t t2 mod p;
n bn=2 ;
return(r );

ExponIter(

r  t mod p;

` = blog n + 1     n = n` n` 1 : : : n2 n1
n.     
2i 1 mod p (
 i-  while-loop, i = 1; : : : ; `, t = x
 ).   ni (  i- bit  n) 1,  
2i 1 mod p. ,   
  r  t = x
P`
i 1 = n ( 
   r x 
i=1 ni 2
n
p).   r   x mod p  


 

ut

 .

2.3. 

22

A=

1 1
1 0

!
.

Fn = [fn ; fn 1

n-  (n 1)-  Fibona i. 


 n  1,  A  Fn = [fn + fn 1 ; fn  Fn+1
  .   A 
,   O(log n)  n  

  Fibona i.

2.4.  

23

F1 = [1; 0      .
n 1  F n  1.
  Fn = A
1
n
1
A
( n
1  A) O(log n)
 n- .  
  .    A 
[a+b; a; a; b.    
. 

ut

 (    ).

2.4

 

     ,
, , .

A(x) = in=01 ai xi B (x) = ni=01 bi xi


n 1.
Pn 1
i
 A(x) B (x)  A(x) + B (x) =
i=0 (ai + bi )x
n
1.  A(x) PB (x)  A(x)B (x) =
P2(n 1)
i
i x 2(n 1)  i = ij =0 aj bi j , i = 0; : : : ; 2(n 1),
i=0
  ai ; bi = 0  i  n.   x0 
 x   x0   .
   A(x)




( oeffi ient representation)    

 

A = [a0 ; a1 ; : : : ; an 1 .

   , 

(n)  
,    x0
 Horner (n). Horner, 

(n2 )  .

,     :

A(x0 ) = a0 + x0 (a1 + x0 (a2 +    + x0 (an 2 + x0 an 1 )    ))


2.4.     

x0  Horner.

   

(n).

. :

A[a0 ; : : : ; an 1 , x0 )
r A[n 1; i n 2;
while i  0 do
r A[i + r  x0 ;
i i 1;
return(r );

Horner(

while-loop 

n    

( ). ,  
Horner

(n).

ut

24

2. --

2.5.  -- 

  

1.

 

O(nlog 3 ).

n  2     

.

.  --    .

A(x) =

Pn 1
i
i=0 ai x

B (x) =

Pn 1
i
i=0 bi x

n 1, C (x) =
A(x)B (x)  .
A(x) B (x)
A(x) =
P 2 1
i A (x) = Pn=2 1 a
i
A` (x) + xn=2 Ah (x), A` (x) = n=
a
x
i
h
n=2+i x , B (x) =
i=0
i=0
P 2 1
Pn=2 1
i
i
B` (x) + xn=2 Bh (x), B` (x) = n=
i=0 bi x Bh (x) = i=0 bn=2+i x .
    ,  C (x) = A(x)B (x) 

  :

C (x) = (A` (x) + xn=2 Ah (x))(B` (x) + xn=2 Bh (x))


= A` (x)B` (X ) + xn=2 (A` (x)Bh (x) + Ah (x) + B` (x)) + xn Ah (x)Bh (x)
= A` (x)B` (x) + xn=2 [(A` (x) + Ah (x))(B` (x) + Bh (x)) A` (x)B` (x) Ah (x)Bh (x)
+xnAh (x)Bh (x)
 , 

C (x)

 

n=2 1  2(n 1). 


T (n 1)   n 1. 
 2n (n),
   T (n
1) = 3 T (n=2 1) + (n)
log
3
T (0) = (1).  T (n) = (n
) .
ut

 

-

(point-value

n 1  n 
(x0 ; y0 ); : : : ; (xn 1 ; yn 1 ), i = 0; : : : ; n 1,  yi   
 xi  xi   .

representation). ,

    

n 1  n  - (yi ; xi ).

,   -,

n  xi  .

    -  
  .  -

1      . 
    n .  A(x) n
1  (x0 ; y0 ); : : : ; (xn 1 ; yn 1 ) B (x)
n 1  (x0 ; y00 ); : : : ; (xn 1 ; yn0 1 ). A(x) + B (x) 0
0
 (x0 ; y0 + y0 ); : : : ; (xn 1 ; yn 1 + yn 1 ) 
(n).

2.4.  

25

(n2)

0, 1, ..., n1
b0, b1, ..., bn1

c0, c1, ..., c2(n 1)


2n 1
(n log n)

A(zi), B(zi),
i = 0, , 2(n 1)


2n 1
(n log n)

C(zi) = A(zi)B(zi),
i = 0, , 2(n 1)

(n)

2.1:

(n log n).

  

2n 1  B (x) -

A(x)  (x0 ; y0 ); : : : ; (x2(n 1) ; y2(n 1) )


0
0
 (x0 ; y0 ); : : : (x2(n 1) ; y
2(n 1) ). A(x)B (x) 
0
(x0 ; y0 y00 ); : : : ; (x2(n 1) ; y2(n 1) y2(
n 1) )  (n).
.

  

   - 
     
   .
    ,         .
    ,   - 


( -point evaluation problem).

2
 Horner (n ).

xi ,
 -- (n log n).


       

 ( )

(n log n).

( -point interpolation problem).

(n log n)    -

,   -

(n log n)      2.1: 


  2n
1 ,   

 -, 

2n 1    .

26

2. --

2.4.1

 --

A(x)

1   
n .     n  2.
n 1:  A (x)  A(x)
0
2
     x,  A1 (x)   2
2
    x.   A(x)  A(x) = A0 (x )+ x A1 (x ),


A0 (x) = a0 + a2 x + a4x2 + : : : + an 2xn=2 1

A1 (x) = a1 + a3 x + a5x2 + : : : + an 1xn=2 1

n x0 ; x1 ; x2 ; : : : ; xn 3 ; xn 2 ; xn 1   
n
3
2
2
 A(x)  i = 0; : : : ;
2 1, xi = xn=2+i .   A(x)
2
2
  A(x) = A0 (x ) + xA1 (x ).   
   n   A(x) n=2   A0 (x)
n=2   A1 (x).
,    A0 (x) A1 (x) 
2 2
2
     n=2, .  x0 ; x1 ; : : : ; x
n=2 1 . 
  A0 (x)
A1 (x) n=2 1 n=2   .  ,
i = 0; : : : ; n=2 1, :
A(xi ) = A0 (x2i ) + xi A1 (x2i )
(2.3)

A(xn=2+i ) = A0 (x2n=2+i ) + xn=2+i A1 (x2n=2+i ) = A0 (x2i ) + xn=2+i A1 (x2i )

(2.4)

     
  .

T (n)  n  A(x) n 1.
--    A(x) n=2  A0 (x)
A1 (x) n=2
1.   
2 T (n=2) (. T (n=2)  n=2 
n=2 1).    n   A(x)
(n)  (2.3) (2.4). ,
   T (n) = 2 T (n=2) + (n)
T (1) = (1).   T (n) = (n log n).


,  --   

n  (  )

1 (n log n).

 -

   :
 (  1 ),   (
 2 ), . . . ,

j  ), j = 1; : : : ;blog n 1.

,  

2j

1; 2; : : : ; n2 ; 1; 2; : : : ;

2j -

n.

( 

2.4.  

27

    ( ). , 
 ,   

1   ()

1 1   ,  

   - , .  
,      (. 2.2).

P
A(x) = 7i=0 ai xi
p20 = p24 ; p21 = p25 ; p22 = p26 ; p23 = p27

 2.1.   8  
7. 

p40 = p42 ; p41 = p43

p0 ; : : : ; p7

 :

(   

  ).
     /
     
 .    /     .    
  :

A00 (p40 )
A01 (p40 )
A10 (p40 )
A11 (p40 )

=
=
=
=

a0 + a4 p40
a2 + a6 p40
a1 + a5 p40
a3 + a7 p40

   

A00 (p41 )
A01 (p41 )
A10 (p41 )
A11 (p41 )

=
=
=
=

a0 + a4 p41
a2 + a6 p41
a1 + a5 p41
a3 + a7 p41

p40 = p42 p41 = p43 ,  

  :

A0 (p20 )
A0 (p21 )
A0 (p22 )
A0 (p23 )
A1 (p20 )
A1 (p21 )
A1 (p22 )
A1 (p23 )

=
=
=
=
=
=
=
=

A00 (p40 ) + p20 A01 (p40 ) = (a0 + a4 p40 ) + p20 (a2 + a6 p40 )
A00 (p41 ) + p21 A01 (p41 ) = (a0 + a4 p41 ) + p21 (a2 + a6 p41 )
A00 (p40 ) + p22 A01 (p40 ) = (a0 + a4 p42 ) + p22 (a2 + a6 p42 )
A00 (p41 ) + p23 A01 (p41 ) = (a0 + a4 p43 ) + p23 (a2 + a6 p43 )
A10 (p40 ) + p20 A11 (p40 ) = (a1 + a5 p40 ) + p20 (a3 + a7 p40 )
A10 (p41 ) + p21 A11 (p41 ) = (a1 + a5 p41 ) + p21 (a3 + a7 p41 )
A10 (p40 ) + p22 A11 (p40 ) = (a1 + a5 p42 ) + p22 (a3 + a7 p42 )
A10 (p41 ) + p23 A11 (p41 ) = (a1 + a5 p43 ) + p23 (a3 + a7 p43 )

   

p20 = p24 , p21 = p25 , p22 = p26 , p23 = p27 ,

28

2. --

(  )   

A(p0 )
A(p4 )
A(p1 )
A(p5 )
A(p2 )
A(p6 )
A(p3 )
A(p7 )

=
=
=
=
=
=
=
=

A(x) :

A0 (p20 ) + p0 A1 (p20 )
A0 (p20 ) + p4 A1 (p20 ) = A0 (p24 ) + p4 A1 (p24 )
A0 (p21 ) + p1 A1 (p21 )
A0 (p21 ) + p5 A1 (p21 ) = A0 (p25 ) + p5 A1 (p25 )
A0 (p22 ) + p2 A1 (p22 )
A0 (p22 ) + p6 A1 (p22 ) = A0 (p26 ) + p6 A1 (p26 )
A0 (p23 ) + p3 A1 (p23 )
A0 (p23 ) + p7 A1 (p23 ) = A0 (p27 ) + p7 A1 (p27 )

   , 8 

n   ).

log n  )

 3 (

   (7 
/ , 3  , 1  , 0   / 
).       
,    

2.4.2

(log n) = (n log n).

(n)

ut

n-    
n
n
  x = 1. , !   ! = 1
 n-  . n n-  ,
2ik=n , k = 0; 1; : : : ; n 1, e = 2:71 : : :  ,
e
 = 3:14 : : : , i2 = 1.   

eiu = os(u) + i sin(u)


n-  os(2k=n)+ i sin(2k=n),
k = 0; 1; : : : ; n 1.

 

  
    ( 2.2).


n-

 ,

f!0 ; !1 ; : : : ; !n 1g.
n

!n.

  

n-

!n = e2i=n

n-  

n-    ,
 n-  n-  . ,


!nj !nk = !nj +k = !nj +k mod n


 

n-

  

 2,    

n-  

2.5.   Fourier FFT

()

29

()

(1)1

(8)3

(8)

(8)4

(8)1
1 (2)1

(8)0

(2)0

i
(8)5
(8)

(4)1

(4)3

(4)2

(4)0

(8)7
2- (1+i)
(8)

2- (1+i)
(8)5

2- (1+i)
(8)

2- (1i)

i
2

(8)

(8)

(8)

1
6

(8)

1
4

(8)0

n = 8    . ()
 n = 1; 2; 4, 8.   .
n=2+k
k
k
- !n !n
!
n=2   . k ,
k  ),
0  k  n=2, (i) !nk = !nn=2+k ( -  !n=
2
n=2+k 2
k
2
k
(ii) (!n ) = (!n
) = !n=2 (    -). , n-

2.2: () 

     
  2.4.1.

n -

 . , 

0 ; : : : ; !n=2 1 g
f(!n0 )2 ; (!n1 )2 ; : : : ; (!nn 1)2 g = f!n=
2
n=2
 ,  

0; : : : ; n=2 1,

k =

k
(!nk )2 = (e2ik=n )2 = e2ik=(n=2) = !n=
2

k
(!nn=2+k )2 = !n2k+n = !nn!n2k = !n2k = e2i2k=n = e2ik=(n=2) = !n=
2

k = 0; : : : ; n=2 1,
k
(!nk )2 = (!nn=2+k )2 = !n=
2

  

n-   

j = 1; : : : log n.

n  2,
j
2 -

j
()  2

  

n 1  n-  (n log n)  

--    2.4.1.

2.5

  Fourier FFT

  Fourier (Dis rete Fourier Transform - DFT) 

A = [a0 ; : : : ; an 1 n   Y = [y0 ; : : : ; yn 1 yk =

Pn 1
kj
j =0 aj !n

30

2. --

k = 0; : : : ; n 1.

  Fourier  

A     A(x) = nj =01 aj xj  n- 


. ,  k -     Fourier 
2ik=n . ,
  k  n-  ,  e
yk = A(e2ik=n ) = A(!nk ), k = 0; : : : ; n 1.
  Fourier  . 
      Fourier
   --.  
  

2.5.1

n  2.

 Fourier

AP
n A(x) = nj =01 aj xj
A(x)  n-

    Fourier 
,      

1.

    

   -- 
 2.4.1.
 ,  

 Fourier

(Fast Fourier Transform - FFT)   Cooley Tukey, 1965, 


   Fourier. 

A[a0 ; : : : ; an 1 )
n
if n = 1 then return(a0 );
!n e2i=n ; ! 1;
A0 [a0 ; a2 ; : : : ; an 2 ; A1 [a1 ; a3 ; : : : ; an 1 ;
Y0 FFT(A0 ); Y1 FFT(A1 );
for k
0 to n=2 1 do
yk Y0 [k + !Y1 [k; yn=2+k Y0 [k !Y1 [k; !
return([y0 ; : : : ; yn 1 );

FFT(

/*

 2 */

/* - */

/* - */

/* - */

!  !n;

  2.4.1   FFT
 
4

  , 

 for-loop,

= 0; : : : ; n=2 1

(n log n).

!n  n-  .  k-
!  k  n-  !nk . 

, 

k-  for-loop,  :


n=2+k
() n=2 + k  n-  !n

). ,

!nn=2+k .

()

, 

!nk

(   

!nn=2+k = e2i(n=2+k)=n = e2ik=n ei = !nk ( os( ) + i sin( )) = !nk

os() = 1

sin() = 0

.  

!   

!nk  !n = e2ik=n e2i=n = e2i(k+1)=n = !nk+1


!    .

2.5.   Fourier FFT

31

2.6.   FFT,    -

A = [1; 0; 0; 1; 0; 0; 0; 1, B = [1; 4; 2; 3; 4; 5; 2; 1,
C = [1; 0; 0; 0; 0; 0; 0; 0; 1; 0; 0; 1; 0; 0; 1; 1.
 Fourier  

A, B , C

.    2.1  

   .

 . p0 = 1; p1 =
p2  A B ,
p2
p2
p2
(1
+
i
)
;
p
=
i;
p
=
(
1
+
i
)
;
p
=
1
;
p
=
(1
+
i
)
;
p
=
i
, p7 =
2
3
4
5
6
2
2
2
2 (1 i).

   2.1,    

A [3; 1; 1
2i; 1; 1; 1; 1+2i; 1,  B [12; 0:879+0:464i; 5+11i; 5:121 7:536i; 2; 5:121+
7:536i; 5 11i; 0:879 0:464i.
FFT. ,   Fourier  

   16 ,

C [3; 2:014 0:166i; 3:414


2:414i; 1:248
2:014i; 1; 0:166
0:599i; 0:586
0:414i; 0:599 + 1:248i; 3; 0:599
1:248i; 0:586 + 0:414i; 0:166 + 0:599i; 1; 1:248 + 2:014i; 3:414 + 2:414i; 2:014 + 0:166i.

   Fourier  

2.5.2

ut

   Fourier

   

n-

(n log n),    n- 


(n log n)  
  2.1.

A = [a0 ; a1 ; : : : ; an 1
Y = [y0 ; y1 ; : : : ; yn 1 n-  ,

  

A(x)

    

 

yk =

n
X1
j =0

aj !nkj k = 0; : : : ; n 1

a0 ; a1 ; : : : ; an 1 .   
  Y = V  A n n , A 
    , Y    
kj
 n-  , V n  n  V [k; j = !n , k; j 2
f0; 1; : : : ; n 1g.
1  Y , V 1  
A   V
1   .
V .   V
 

 2.1.

  

nn
V 1

 

k; j 2 f0; 1; : : : ; n 1g,

V [k; j = !nkj k; j 2 f0; 1; : : : ; n 1g


V 1 [k; j = !n kj =n k; j 2 f0; 1; : : : ; n 1g

V  V 1  .

n
X1
1 nX1 `(k j ) 1 nX1 (k j ) `
1
k`
`j
(V  V )[k; j =
!n !n =n =
!
=
(!
)
n `=0 n
n `=0 n
`=0

(2.5)

32

2. --

= !n0 = 1 (V  V 1 )[k; k = 1
k = 0; 1; : : : ; n 1.  -  k 6= j
(n 1)  k j  n 1.
k j
,  k
j  n !n 6= 1. 
k j 0
 (2.5)   n   (!n
) = 1
k j
!n
.      n   ,
  (. 

n
X1

k = j )  !nk

(!nk j )n
(
k
j
)
`
(!n ) = k j

(!nn )k j 1 1k j 1
= k j
=0
!n
1
!nk j 1
!n
1
`=0
1 1
    V  V
1
 -  0. , V  V
1
V
  V .
1

,   

P
(1=n) nj =01 yj !n kj ,

k = 0; : : : ; n

A(x)

  

ak =

A(x)  
    [y0 =n; : : : ; yn 1 =n  
(n 1) g.
0
1
 n-  f!n ; !n ; : : : ; !n
k =
     n-  , !n
!nn !n k = !nn k k 2 f0; 1; : : : ; n 1g. ,   
  n-  (n log n)  FFT   n-  !n   
!n 1 .    Y=n = [y0 =n; : : : ; yn 1 =n
     n
1 
y0 ; : : : ; yn 1  n-  .  
1.

,  

  Fourier (Inverse Fourier Transform).


     FFT, -

n 1 
(n log n),  
(n),     (n log n).
   
-

2.7.     Fourier   
  Fourier    2.6 
   .

A(x) = 3 x B (x) = 2+3x  . 


   C (x) = A(x)B (x)   
2.8. 

 2.1   FFT    .

C (x)  A(x) B (x) 2. 


C (x). FFT

 3 - 

  2,    4

n = 4).

A = [3; 1; 0; 0 B = [2; 3; 0; 0.
n = 4 f1; i; 1; ig  !4 = i.  
f1;
1g  !2 = 1.
 

2.6.

33

A(x), FFT   [3; 1; 0; 0,  A0 = [3; 0, A1 =


[ 1; 0, !4 = i,  FFT([ 1; 0).
FFT([3; 0)  !2 =
1, FFT([3) FFT([0).
  Y0 = [3 Y1 = [0,   y0 =
3 + 1  0 = 3 y1 = 3 1  0 = 3. , FFT([3; 0)  [3; 3.
, FFT([ 1; 0)  y0 =
1+1  0 = 1 y1 = 1 1  0 = 1,
 [ 1;
1.
   FFT([3;
1; 0; 0). k = 0,
y0 = 3 + 1  ( 1) = 2, y2 = 3 + ( 1)  ( 1) = 4. k = 1,
y1 = 3 + i  ( 1) = 3
i, y3 = 3 + ( i)  ( 1) = 3 + i. ,
  YA = [2; 3
i; 4; 3 + i.   YA =
[A(1); A(i); A( 1); A( i),     A(x)  
  f1; i;
1; ig.
 FFT([2; 3; 0; 0)  B (x)   YB =
[5; 2 + 3i; 1; 2 3i.
  C (x)   YC = [10; 9 + 7i;
4; 9
9+7
i
9
7
7i.  FFT    YC =4 = [5=2; 4 ; 1; 4 i
i 9 7i
  FFT([5=2;
1) FFT([ 9+7
4 ; 4 ).
i 9 7i
FFT([5=2;
1)  Y0 = [3=2; 7=2. FFT([ 9+7
4 ; 4 )  Y1 =
[9=2; 7i=2.
1  9=2 = 6
k = 0,  y0 = 3=2 + 1
1
y2 = 3=2 + ( 1)  9=2 = 3. k = 1, 1 = 7=2 + i 1  7i=2 = 7,
1 7i=2 = 0.     
3 = 7=2 + ( i)
C = [6; 7; 3; 0   C (x) = 6 + 7x 3x2 .
ut


2.6

--   [7 [11.  Karatsuba Ofman [25.

 Strassen [39. () 


 Coppersmith Winograd [10.  
    Diffie
Hellman [13. FFT  Cooley Tukey [9.

34

2. --

3 

(dynami programming), -

-,     .

 , -- 

 -,  -



 ),   
   -. ,   -.

   

   
 -  .   
- (. 2.1).
 ,    -
 -     .

  

: 
  -.     (bottom-up). 
    ,  
  .  
  . O ``''  /    
 .
--  
 

(re ursively) ``''

   ( ) -.
 . -- 
  (top-down), ``''  


. --  





- (. 

merge-sort qui ksort FFT).


    (bottom-up), ``''      -.
    -
 .

,

   

35

 

36

3. 

 -

(overlapping sub-instan es). -

 - 
 .         .

 3.1 (  -  Pas al).     2.1.


 

C (n; k) =

k n  :

 

n
n!
=
n 2 IN; 0  k  n
k
k!(n k)!

  


P
(1 + x)n = nk=0 nk xk



xk   

(    ).

C (n; k)  
(

C (n; k) =

C (n 1; k 1) + C (n 1; k)
1

0<k<n

(3.1)

 :

n k)
if k = 0 or k = n then return(1);
else return(BinomialDC(n
1, k 1) + BinomialDC(n 1, k));

BinomialDC( ,

(C (n; k)) ( C (n; k)


((n=e)k ) O(nk )
k)     C (n; k) .

 
-  

 
  

n k (.. C (30; 15) = 155117520).

  Pas al

    -

. 

0  k  n.

C  C [n; k = C (n; k),

     

(3.1).  :

n k)
for i
0 to n do
C [i; 0 1; C [i; i 1;
for j
1 to i 1 do
C [i; j C [i 1; j 1 + C [i 1; j ;
return(C [n; k );

Binomial( ,

(nk)  (nk) (    (k ) ;).  




  .

ut

37

        



(optimal substru -

tures prin iple of optimality):    


   -.     
 (  ).

 3.2 (  ).

     
  .

,     

    .

,    

v w    
  w u.   
 v  w    w  v ,   
 v  u   w .     
 w ,     v u.
 

     .      


 

s  t.

s t,  

  

,     '    
 ( ). ,  
  

v  w    w  v,

ut

 .

  ,     
,     

-.  

    `` '' - (..


     

w).

   top-down ,

  --,  -
. ,  bottom-up ,
,    -
    .

    :

1.      
   .

2.       .

3.  ,     
 ( bottom-up ).

38

3. 

4.  - ,  .    
    .

3.1

 

  
   (.
).  

2.2 

pq q r,

p q r    .
A1 ; A2 ; : : : ; An , Ai di 1  di ,
i = 1; 2; : : : ; n,  A = A1 A2    An . -

 

  



 

 . , :

A = (   ((A1 A2 )A3 )    An )
A = (A1 (A2 (A3    (An 1 An )    )))
A = ((A1 A2 )(A3 A4 )    (An 1 An ))

  
.   
     !

 3.3. 

A3 89  3, A4 3  34.

A1 A2 A3 A4 , A1 13  5, A2 5  89,

   

/  .

  

     .

(((A1 A2 )A3 )A4 )


((A1 A2 )(A3 A4 ))
((A1 (A2 A3 ))A4 )
(A1 ((A2 A3 )A4 ))
(A1 (A2 (A3 A4 )))

13  5  89 + 13  89  3 + 13  3  34 = 10582
54201
2856
4055
26418

  
  .    -

ut

    .

   

(x
y)
z

(Matrix Chain Multipli ation)

n (A1 ; A2 ; : : : ; An ), Ai di 1  di ,
x; y; z
x
y
z = x
(y
z ) =
A1 A2 A3 = (A1 A2 )A3 = A1 (A2 A3 )

  

. ,  

3.1.  

39

i = 1; 2; : : : ; n,   A1 A2    An       .  
.
.

   



(,  

 ).
 

 

(exhaustive sear h):

  (  )  ,    . 

P (n) 

n . ( ) 
  i i + 1, i = 1; 2; : : : ; n
1,    ( i n
i ).
2
,  P (n)  

P (n) =
P (1) = 1.
n- Catalan:

n
X1
i=1

P (i)P (n i)

P (n) = T (n

1 2n
4n
T (n) =
=
3=2
n+1 n
n

1), T (n)

,    
(.. 

P (n)    1015 n = 30)   

    
  .
   .
      .

Ai::j

Ai    Aj .

 

A1::n. ()    i i + 1,
1  i < n,   A1::i Ai+1::n , 
 A1::n = A1::i Ai+1::n .  
 A1::n d0  di  dn   
 A1::i Ai+1::n .  A1::n ,
 A1::i Ai+1::n  ( 
 A1::i Ai+1::n ,   
 A1::n .

   3.3. H    3

A1::3 A4  1326 . 
 A1::3 . A1::2 A3 9256
A1 A2::3 1530 .    (
)  A1::3  (A1 (A2 A3 ))A4 2856


.
2

    

n .

40

3. 

 ,  

m[i; j

 Ai::j . 1  i  n, m[i; i = 0 Ai::i = Ai
.  Ai::j  ,
   Ai::k Ak +1::j k , i  k < j  
Ai::k Ak+1::j .  m[i; k + m[k + 1; j + di 1 dk dj .
   Ai ; : : : ; Aj ,    k = i; i +1; : : : ; j 1
  . 

 . ,


 -

Ai::j   :
(

m[i; j =

minik<j fm[i; k + m[k + 1; j + di 1 dk dj g


0

 

i<j
i = j

(3.2)

m[1; n,  

A1::n .
m[1; n    m[i; j    i j ,

 


1  i < j  n.

  

n(n

1)

-.

m[i; j - Ai::j


   m[i; k m[k + 1; j  - Ai::k
Ak+1::j , i  k < j .
     m[1; n.

 

   .

,   

m[i; j   Ai::j j i  p 1 
Ai::j j i = p, p = 2; : : : ; n 1. ,
  m[i; j  i j , i j
 2, 3, .  (3.2)   1  i < j  n, 
m[i; k m[k + 1; j , 1  k < j ,    m[i; j . 
    

   :
MatrixChainMultipli ation(

d[0; 1; : : : ; n)

/*

d   */

i 1 to n do
m[i; i 0;
for p
2 to n do
for i
1 to n p + 1 do
j i + p 1; m[i; j 1;
for k
i to j 1 do
q m[i; k + m[k + 1; j + d[i 1d[kd[j ;
if q < m[i; j then m[i; j
q;
return(m[1; n);
for

p, MatrixChainm[i; j  i j , 1  i < j  n, 
 for-loop    i 

 for-loop   
Multipli ation  

1 (. j

i=p

1).

3.1.  

n(n

1)

41

. 

3
  O(n ).
  

O(n).

m[i; j , 1  i < j  n.

(n2 )

3.1.   MatrixChainMultipli ation 

[30; 35; 15; 5; 10; 20; 25 ( n = 6 ).

d=

m[i; j 1  i < j  n. m[1; n = 15125 


((A1 (A2 A3 ))((A4 A5 )A6 ).   [11, 15.3.
ut

.  

3.2.  (top-down) 

m[1; n

 (3.2).    ; 
    4 .  
   
 .

.    :
Re MatrixChain(

if

d[i 1; : : : ; j )

i = j then return(0);

for

k
q

/*

i to j

m   m[i; j */

1 do

d[i 1; : : : ; k) +
Re MatrixChain(d[k; : : : ; j ) + d[i
1d[kd[j ;
if q < m then m
q;
return(m);
Re MatrixChain(

d[0; : : : ; n).

Re MatrixChain(

  

m[1; n    for-loop (
k = 1; : : : ; n
1 . 
 k  m[1; k  
n
k  m[k + 1; n. ,   
T (n)  n   :


T (n)  1 +

T (n) =
(2n ),

n
X1

n
X1

k=1

k=1

T (1) =
(1).

[T (k) + T (n k) + 1 = n + 2

T (k)

 , 

  

(n3 )

-

 .
       
  -.

 -     (. 3.1).

ut

42

3. 

1..4
1..1

2..4

1..2

2..2

3..4

2..3

4..4

3..3

4..4

2..2

3..3

1..1

3..4
2..2

3..3

1..3
4..4

4..4

1..1

2..3

1..2

3..3

2..2

3..3

1..1

2..2

3.1:    Re MatrixChain

4 .

-  .
    -,
    .
 [11, 15.5.

3.3. MatrixChainMultipli ation     

m[1; n.

    .

 

m[1; n    .

A1::n

-

.     

k (  Ai : : : Aj )   
 m[i; j , 1  i < j  n.  
s[i; j .   ,    m[1; n,  

    
 .
 

Ai::j = Ai::s[i;j As[i;j +1::j .


3.1.1

 -

Ai : : : Aj

s[i; j

 

ut

 3.2  top-down    
  ,     .
        (top-down)    
.

,



 .     
.

,     -

   - .
    .  - , 
    .

, 

3.2.    

43

-        . ,   -,  
 ,  
  ,    .
      
  .

Re MemMatrixChain(

for

d[0; : : : ; n)

1 to n do
for j
1 to n do
m[i; j 1;

return(Re MemChain(
Re MemChain(

/* */

d[0; : : : ; n));

d[i 1; : : : ; j );

m[i; j < 1 then return(m[i; j );


if i = j then m[i; j = 0;
if

else
for

k
q

i to j

1 do

d[i 1; : : : ; k) +
Re MemChain(d[k; : : : ; j ) + d[i
1d[kd[j ;
if q < m[i; j then m[i; j
q;
return(m[i; j );
Re MemChain(

  Re MemMatrixChain

(n3 )

m[i; j , 1  i < j  n,  .  
m[i; k m[k + 1; j ,   m[i; j 
.

3.2

   

     
       (Travelling Salesman Problem, TSP).           
   .
       1.2.
      

N = f1; 2; : : : ; ng   d : N  N 7! IR+ 
dij dji    i  j  j  i .

(. 

)  .
 ,     
   , .

dii = 0, 8i

2N

  

    '

44

3. 

 (.

dij =
6 dji) '  

.      
    .  ,  ,
  ( 

 ).

 ,
  1.

 (permutation)    1   

 : N 7! N (1) = 1
(i)  i.

. , 1-1  ()
  


 :

L() = d(n)1 +

n f1g

(n

1)!

n
X1
i=1

d(i)(i+1)

 ,   

     

 .
T       

NP (NP-hard,  ).

 

    
     (sub-exponential).
  ,       . ,  ,
    .
      . 
  1 

d1j

j . 
j  1.

   /   

 ,    

j  1   (.

N n f1; j g). ,    


1     j  1 
n f1; j g. ,   / 

 

 (   )  
 .         
  .
  , 

S  N nf1g ,  i 2 N n S
  1 N n S 6= f1g. L(i; S )
     i  1
  S . , S = ; ( ),
L(i; ;) = di1 i 2 N n f1g. S 6= ;,     
 i,   1,    S  
  . 

L(i; S ) = minfdij + L(j; S n fj g)g


j 2S

(3.3)

3.2.    

45

S = N nf1g,  1 
 N n S . ,     1
  L(1; N n f1g)    .


   3.3    ,
    .       . ,

L(i; S ) S k + 1 ,
L(j; S n fj g).   L(i; S ) 
S = ;,  1; 2; : : : ; n 1.

 

      .  


   .

J (i; S )

j    i  1  .

d[1 : : : n[1 : : : n)
for i
2 to n do
L(i; ;) d[i; 1;
for k
1 to n 2 do
for all S  N n f1g ; jS j = k do
for all i 2 (N n f1g) n S do
q 1;
for all j 2 S do
if d[i; j + L(j; S n fj g) < q then
q d[i; j + L(j; S n fj g); t
L(i; S ) q; J (i; S ) t;
q 1;
for j
2 to n do
if d[1; j + L(j; N n f1; j g) < q then
q d[1; j + L(j; N n f1; j g); t j ;
L(1; N n f1g) q; J (1; N n f1g) t;
return(L(1; N n f1g), J );

TSP(

j;

L(i; ;)   L(1; N nf1g) 


(n
1). k = 1; : : :; n 2,  
S  N nf1g k n k 2 .  n k 1
i 2 (N n f1g) n S .  (i; S ),   L(i; S ) 
(k )  3.3. ,  
 

      :

n
X2 n
k=1

(n k

  ,

1)k = (n2 2n )

L (n2n ) .

, -

n
  (n2 )  
.

46

3. 

8
5
1

2
10

20

15

13

12
4

3
9
10

3.2:       4 .  [7,  5.6.1.

   
 .

,  

 (..

n  20).

 , -

     . 


20 ,  n2 2n 4:2  108 , o 

   

1:2  1017 .

3.4.  

N = f1; 2; 3; 4g

 

  3.2.      TSP    .

.  

L J

   .  

    .
  .

ijS
1
2
3
4

;
5

f2g

f3g

f4g

f3; 4g f2; 4g f2; 3g f2; 3; 4g

15 (3) 18 (4) 25 (4)


18 (2)
20 (4)
25 (4)
13 (2) 15 (3)
23 (2)

35 (2)

 35.  
 

3.3

1; 2; 4; 3.

J , 

ut

 

    
     ( 

3.3.  

47

Knapsa k Problem).    -

   1.2. 

si > 0 pi > 0, i = 1; : : : ; n.

B > 0 n 

   -

  . ,   

Pn
i=1 fi si

B

fi 2 f0; 1g i = 1; : : : ; n.

Pn
i=1 fi pi

    ,    

NP.

 

       
  .      

(n2n ).

  , 

 .
       

A  f1; : : : ; ng  .   

  j 2 A   , A nfj g 
 B
sj  f1; : : : ; ng n fj g.  j
. 

      ,   


f1; : : : ; j 1g

  ,    

i = 0; 1; : : : ; n b = 0; : : : ; B ,  P (i; b)  
b.  
P (n; B )   f1; : : : ; ng
B .
P (0; b) = 0 b = 0; : : : ; B ( ). 
b  0, P (i; b) = 0 i = 1; : : : ; n ( 
 .

f1; : : : ; ig

 ).

P (i 1; b),      i
b, b = 0; : : : ; B .    i 
    P (i
1; b).  
 i  ,    f1; : : : ; i
1g
 b
si .    P (i 1; b si ) + pi . 
     P (i; b). ,   P (i; b) 
 

  

 :

P (i; b) =

8
>
<
>
:

maxfP (i 1; b); P (i
0
0

1; b si ) + pi g

b0
i = 0

i = 1; : : : ; n b = 1; : : : ; B

(3.4)
    .   

P (i; b)     i.

i,       
 b.   i  
   i
1.  (n + 1)(B + 1) .
   (nB ).
 

48

3. 

(B )    i     i
1. 
     i 
i 1.
,   (nB )
     

   

(B ) .

B; (s1 ; p1 ); : : : ; (sn ; pn ))
for i
0 to n do P [i; 0 0;
for b
1 to B do P [0; b 0;
for i
1 to n do
for b
1 to B do
if b
si  0 then
t P [i 1; b si + pi ;
else t
0;
if P [i
1; b  t then
P [i; b P [i 1; b;
else P [i; b
t;
return(P [n; B );

Knapsa k(

3.5.       
 .     ;

.    ,   


P (n; B )    .

      
.

  

P (j; B ) > P (j

1; B ).

     .  

B sj (   j )   0
0
  j  P [j ; B
sj > P [j 0 1; B sj , .

  return :

b
for

B;

if

n down to 1 do
P [i; b > P [i 1; b then
print(i); b
b si;

   , -

P [0 : : : n; 0 : : : B . ,
      (B ) ,     (nB ) .
ut
  

3.3.  

49

3.6.       

(10; ((3; 5); (2; 7); (4; 4); (6; 8); (5; 4)))    .

.   

ijb
0
1
2
3
4
5

0
0
0
0
0
0
0

1
0
0
0
0
0
0

2
0
0
7
7
7
7

 .

3
0
5
7
7
7
7

4 5 6 7 8 9 10
0 0 0 0 0 0 0
5 5 5 5 5 5 5
7 12 12 12 12 12 12
7 12 12 12 12 16 16
7 12 12 12 15 16 16
7 12 12 12 15 16 16
  P (4; 10) = 16. 
 ,  f1; 2; 3g f1; 2; 5g.   3.5, 

ut

.

3.7.    (Partition Problem)  -

X = fx1 ; x2 ; : : : ; xn g 
X1 X2  .     X :

9X1; X2  X : (X1 \ X2 = ;) ^ (X1 [ X2 = X ) ^ 

i2X1

xi =

X
i2X2

xi A

(3.5)

    
 .


   

X;

X
. , S   2 S =
i2X xi . ,
0
X  X  S . .  ,     

     (.
3.8). ,       
 .


X0

 ).

X 0 n fj g

0
 j 2 X

 

0
 X

( 

xj ;''.

 ``''

  .  

 ``''   `` 

X0

fx1; : : : ; xj 1g

    

     .

p : [n  [S

7! f0; 1g

p(i; j ) = 1
 Xi = fx1 ; : : : ; xi g  j , p[i; j = 0 
, 0  i  n, 0  j  S .
3
k
[k
k
f0; : : : ; kg
 

.
.

  

50

3. 

j > 0, p[0; j = 0      0.
i 2 [n, p[i; 0 = 1  , p[i; j = 0 j < 0,

 .

i = 1; : : : ; n j = 1; : : : ; S , p[i; j = 1   p[i 1; j = 1 (.
 fx1 ; : : : ; xi 1 g  j )  p[i 1; j
xi = 1 (.
 fx1 ; : : : ; xi 1 g  j
xi  j  
xi ). , p[i; j = p[i 1; j _ p[i 1; j xi .   

    :

p(i; j ) =

8
>
>
>
<
>
>
>
:

p(i 1; j ) _ p(i 1; j
1
0
0

xi )

i = 1; : : : ; n j = 1; : : : ; S

j=0
j<0
i = 0 j > 0

(3.6)

      

p(n; S ) -

  .
        .

(nS )
(S ) .    X 2n . ,
n
   
(n2 ),   

    .

3.8.     

ut

 .

,    
. ``'' 

, -

.    ,

( )  : 

B  ``   B ;''  
 , ``  B ;''

 

.

 ``'' 

 

.

,   

,   .

 :

  ,       (.

  

 ).
     
 .

.  

X = fx1 ; : : : ; xn g X1 X2  -

   :

max

8
<X
:

i2X1

xi ;

X
i2X2

xi

9
=
;

3.3.  

B = 12

i2X xi

51

 .    

      ``''.

3.3.1

ut

-

NP 

    

   
 

   .

 ,  
  

n   B .

 .  
     

B log B B
B    

 . 
.  
 

log B      .

,    ( )
    .
   


 -

(number problem).     

        `` '' .   
`` ''    
  

2n .

n.

  , -

      
 .
     
 `` ''    
    . 
   .

  

  `` '' 

 

  .
   
  `` '' ( 

n)  

  .  
-

(pseudo-polynomial-time algorithms).

-   
 .

x   , n   `` ''  x, max(x)   
, 

  . - 


((n max(x))k ),  k  1.

 ,

 

O((n log max(x))k ),

52

3. 

k  1.

- , 

((n max(x))k ),

   (  ) 
 , 

(n log max(x)).

,
!

 -        (.
3.7).

3.4

    
    [11, [32, [5. Bellman        .

      
Held Karp [22.

4 

     
   .  ,
   - 
    .   -     
    .
    
  (  )  -
   .  
(greedy algorithm). , 
  



 .

   .
  .  
  .  :
1.   `` ''   
  ,
2.    (  )
`` ''  ,
3.     -   .
 ,       `` ''     ``
''  .
 

(adaptive) -

   `` '' ,

-

   `` ''  .
`` ''



(irrevo able),

 .  `` ''   -
  .  ,   
-    . ,  `` '' . `` '' (  )
  -   .

53

54

4. 

,     -
   .

 -

  -  ,
/  .

  -

   .

     
,   .
  ,  ,     (..

,

). ,   
 .      

 -

(greedy- hoi e)   .   

   
.     -
   . 


,

 

  .

4.1

 

   ,

 

sele tion problem)  

(a tivity

A = f1; 2; : : : ; ng 

   (..  -

i2A
si ,  -

 , , .). 
    ,  
,  

fi , fi > si  0.

 

 .
  ,   
.    
  

[si ; fi ).

i j

 [si ; fi ) \ [sj ; fj ) = ;.



     ,

i 

     .
`` ''   
.  ,   
    .
   .

``''        
.    
(. 

fi si ),  (.  si ),
fi), 

 (. 
 .

    

4.1.  

55

10

11

12

13

14

15

16

17

18

4.1:     
.

 .

 ,  

   

 f2      fn

f1

O(n log n)  ).

( 

  

    -  


.    :

(s1 ; f1 ); : : : ; (sn ; fn))


C f1g; j 1;
for i
2 to n do
if si  fj then
C C [ fig; j i;
return(C );

greedySele tion(

/*  

f1  f2      fn

*/

  .   



    

i ,  i . 
     - Ai = fk 2 A : sk  fi g
    i.

 .
  

fi



 -  ,     .  

(n)

   

.
,    greedySele tion   

i 1 2 3 4 5 6 7 8 9 10
si 0 2 3 5 4 10 9 11 11 14
fi 3 5 6 7 9 11 12 15 16 17
  1,    2.  ,   3,   4 5,  6,
 7,  8,  9 10. 
      4.1.

56

4. 

f1; 3; 6; 8g

    ,

   .  


f2; 4; 7; 10g

.    2 

 1     . 


f1  f2 .

 ,  4   3, 7 

6, 10  8 (   ).

4.1.        ,  , 
 ,   
 .

  

   .

    

.  

((1; 5); (4; 6); (5; 10))

 

2,    1 3.
    
.  

((1; 10); (2; 3); (3; 4); (4; 5); (5; 6); (6; 7); (7; 8); (8; 9); (9; 10)),

  1,   .
    
.

(7; 9)),

 

((1; 3); (1; 3); (2; 4); (2; 4); (3; 5); (4; 6); (5; 7); (6; 8); (6; 8); (7; 9),

   6.

 ,

 , ..  1 8. , 

ut

 , ..  1, 5, 7, 10.

4.1.1



 4.1       .   
      .  



     .

4.1.

greedySele tion    

 .

A   -

greedySele tion   1 (  -

A1 = fi 2 A :
C (A) (C (A1 ))  
 A (  A1 ).  C (A) = 1 + C (A1 ).
 )     -

si

 f1 g

. 

  . ,
   .    


n 1  .

A n .

4.1.  

57

C  (A) (C  (A1 ))    (  )  A (  A1 ).  ,




   A1 .  C (A1 ) = C (A1 ) C (A) = 1 + C (A1 ).


 C (A)  1 + C (A1 ) = C (A)   
 A.


  C  A,  `   C  .  f`  f1   

1
.  i 2 C nf`g

si  f`  f1  C n f`g    - A1 .


   C n f`g C (A)
1 ' . 


    ,

C  (A) 1  C  (A1 ) ) C  (A)  1 + C  (A1 ) = C (A)

ut

.

.       

C  (A) = 1 + C (A1 ).

,      ,

    
,     ,  
      -

A1 .

 -

 4.1     .

ut

  4.1   
.     
 -     .
     .   
     
 .      ,
   .   
 .

4.2.     .

   

 .

m[i; T   
Ai = f1; : : : ; ig   T . m[i; T  

 :
1

  

 

C.

  1 

,    

      .

58

4. 

8
>
<

i > 0 0  T < fi
m[i; T =
i > 0 T  fi
>
:
i = 0 T < 0
      m[n; fn , fn m[i 1; T
maxfm[i 1; T ; m[i 1; si + 1g
0

  .    
  


(n fn) .

(n fn)

   
,   ,  : 

m[i = (xi ; yi ), xi   


Ai = f1; : : : ; ig yi  . m[i 
  :

m[i =

8
>
<
>
:

(xi 1 ; yi 1 )
(xi 1 + 1; fi )
(0; 0)

i > 0 si < yi 1
i > 0 si  yi 1
i = 0

    , 

m[n   .

ut

n ,  i, i = 1; : : : ; n,
fi , fi > si  0.  

4.3. 

si

     (..
).   
,    .
    .

.   

 

(interval

oloring problem).   


  .       ,    
.


d   ()  (,
d

   ). ,  

.    
.      
 .   

k,
     k .
, d .
    .   

4.2.

59

(s1 ; f1 ); : : : ; (sn ; fn ))
F max1in ffi g; 1;
for k
0 to F do
for all j 2 fi : (1  i  n) ^ (fi = k )g do
1; /*  j    */
for all j 2 fi : (1  i  n) ^ (si = k )g do
C [j ; + 1; /*  j  */
return(C );

greedyIntervalColoring(

 

(n F ).

 

     

2n  . 
   si fi  .
  (n log n)   (n)
. 

ut

  .

4.2

  (..

, , , , .)

 /  

t1 ; t2 ; : : : ; tn .

       .
        
  

(s heduling prob-

lems).
 ,  
 .

f1; : : : ; ng

 

 , 

 

/   .

,

(i).

 -

i (),

X
j :(j )(i)

T (), T () = n A().

(i).

,  A(),

n
1X
()
n i=1 i

   

tj

   

A() =

 

     

  

i () =

,

   

  .

,

     .

60

4. 

 4.1.  4    8, 7, 2, 5. 
  ,  8, 15, 17, 22,  62.   2, 5, 7, 8,
 2, 7, 14, 22,  45. 
 .

   .

     
  .  
  ().
 ,      


t1  t2      tn (  O(n log n) 

).  :

T = t1 + (t1 + t2 ) + (t1 + t2 + t3 ) +    + (t1 +    + tn)


= n t1 + (n 1)t2 + (n 2)t3 +    + tn
=

n
X
i=1

(n i + 1)ti

    .

t1; t2 ; : : : ; tn )
0; T 0;
for i
1 to n do
= + ti ; T T + ;
return(T=n);

greedyS heduling(

4.2.

/*  

t1  t2      tn

*/

    

.

,   

. 

n   

.  ,   
.


   

     ( 

     . ,  (j )

   j   .  
Pn

T ( ) =
j =1 (n j + 1)t (j ) .

     ,
 k     k ,  ` 


  k   .   ,  (k ) > k .
  k
1    ,
 k < ` tk  t` .
 ). 

4.2.

61

tk t`   T ( ) (n  (k)+1)tk
(n
k + 1)t` .    k `,

 k   k `   (k ),  tk t` 
 (n
k + 1)tk (n  (k) + 1)t` .
       k ` :


[(n k + 1)tk + (n  (k) + 1)t` [(n  (k) + 1)tk + (n k + 1)t` =


= (n k + 1)(tk t` ) (n  (k) + 1)(tk t` ) = ( (k) k)(tk t`)  0


 (k ) > k tk  t` . ,    
  k `    (
)    
.      

 .

ut

4.4.       
      
.

.   4.2   
  EAXE  

k = 1; 2; : : : ; n.

 ,

,      . 

    
. 
 

n 1 .

n  n t1 

  

 ,   

n 1 .

ut

4.5.       . , 

n 

X = fx1 ; : : : ; xn g        X .  

   .

.    
),

x1

     xn

 ( -

.   

   ,     
 ,        ( ,   ).
 

(n log n)     (n)

   (   ).     ,    
    .

A       
 , .   [x1 ; x1 +1.   , A


62

4. 

J    x1 .  x1    
X ,   J   [x1 ; x1 +1. (A nfJ g) [f[x1 ; x1 +1g
       X ,  ,

   A , . , -

     ( 
).

X1 = X n [x1 ; x1 +1    X   
A   


 [x1 ; x1 + 1. A1 = A n f[x1 ; x1 + 1g    
 X1 (   A ). , 


   , 

    .
     

ut

    .

4.6.   1, 5, 20  
   .      .    
   .

.   20 , 
 5 ,   1.

x  ( ) , 
20 , 5 , 1   20, 5, 1   
 x. :


20

bx=20

 

x5

x 20 20 ; 5

bx5 =5

x1

x5

5 5 ; 1

x1

20 20 +5 5 + 1 = x,   .

   ,
        .
    ,    

20   20 .

, ,

    20 
  .    20
 .     
. ,  20  
  5 1 

x 20 20 .

x,

      
  .
     .
,  20, 12, 1   24
, 

2  12,  1  20 + 4  1.

ut

4.3.   

4.3

63

  

    
    (.

 1.2).

 

B > 0 n ,   i si > 0 pi > 0, i = 1; : : : ; n.  i


   fi 2 [0; 1  fi si
 fi pi .    

  , 

     
 . ,   

fi P
2 [0; 1  i, 
n
 
i=1 fi pi .
 

  3.3,

2 f0; 1g

fi

B

, 

   

NP-

, 

Pn
i=1 fi si

   -

 . ,  
 

(n log n)  .

(.

 3.3),

    -

    .

F  = (f1 ; : : : ; fn ).
(f1 ; : : : ; fi 1 ; fi+1 ; : : : ; fn )  
n 1  2.

,  

 

i,

fi si

F i =


      (
,  ). 

i,

ri = pi=si .

 ,    -

 ,

r1  r2      rn
(n log n) ).

(   

 ,    


i  .

  

(   )  .

B; (s1 ; p1 ); : : : ; (sn ; pn ))
for i
1 to n do
ri pi =si ; F [i 0.
 ri , . r1  r2      rn .
for i
1 to n do
if B  0 then F [i
0;
else if B  si then
F [i 1; B B si ;

greedyKnapsa k(

else

F );

F [i

B=si ; B

B F [i si ( = 0);

return(
2

    -, 

  

F .

  

F   .

64

4. 

(n log n)     (n)

    .
 

B.

(n log n).

    
   

i = 1; : : : ; k

)   (.
 

k 

Pk
i=1 si

>

1 ( 
fi = 1),   -

i = k +1; : : : ; n (  ) 
fi = 0),    k  

 (.

fk = B

k 1
X
i=1

si =sk

  .
   ,
         .
      1 -

f1 , 0 < f1  1.    ,
B  f1 s1 .   ( )

    1 ,       1.  

F

  

 , 
)

(f1

f1 ) s1

(f1

f1 ) s1

f1 < f1

  1. 

 (

  1.

  

B  f1 s1 . ,   
 F   1  
 

. ,     
  1   . ,  
      .

4.3.

greedyKnapsa k    -

 .

      -

.   .

0

,    .

 
.

B  0,   n 1

n  B .  F = (f1 ; : : : ; fn )
 = (f  ; : : : ; f  ) 
 ,  F
n
1
f1 = f1 .        .
 , F 1 = (f2 ; : : : ; fn ) 
B f1 s1   2; : : : ; n.     ,



F 1 = (f2 ; : : : ; fn )  B
f1 s1 = B f1 s1
 

4.3.   

 

2; : : : ; n.

65

F 1

F 1

  

-.  :

n
X
i=2

fi pi =

n
X
i=2

fi pi

    

f1 p1 +



n
X
i=2

fi pi = f1 p1 +

f1 = f1 ,   :

n
X
i=2

fi pi

F F     . ,

ut

 .

4.7.     
   .   ,      .

B , B    1 (.. B = 100). 
 (1; 1 + ") (B; B ). r1 = 1 + "
r2 = 1. " > 0,       
.   1+ ".   
  B .   
. 

    .
     
   . ,  
    .  ,
   .

   ,

  .

4.3.1

ut

 

       
    . 
, 

i   

   -  


i  .

   

 3.3.
,    
   -.

    - ,       
  ``'' -.

66

4. 

        
-.     
   . 
     
  -    .    
 ()  - .  
 bottom-up , 
 top-down   :   .
  ,   -,  
.
 ,             .



   /   
     
-.

4.4

         [11, [32, [7.  


     Borodin, Nielsen, Ra koff [6.

5 

,   () ()   .    
  , '   
     .

,     
.
   ,
  (, , .)  
.

     

      .
  ,     
.    
 ,  
.    
 ,   
.
 ,       .

 (layout)  (.. , 
- grid, )     . 
     
 .
 ,  
   .

  

 ,   .     
,    (Minimum Spanning Tree),
  .

5.1

 

 (V; E )

 

, 

E.

G(V; E ),

67

  
(graph)



68

5. 

()

()

()

()

5.1:   - .

G(V; E ),

V = fv1 ; : : : vn g

 .

-

,


e = (v1 ; v2 ).

 

e = fv1 ; v2 g,

E = fe1 ; : : : ; em g

 (undire ted graphs),


   .

 (dire ted graphs),  ,

(v1 ; v2 )
- .  G(V; E )
 ,  n jV j,  ,
 m jE j.
(-) e = fv1 ; v2 g  v1 v2 , 
 e.  e = (v1 ; v2 )  v1  v2 .
v1  ( )  e v2  ( )  e.
 
.
(u)  
 u 2 V . ,
(u) = fv 2 V : (u; v) 2 E g.
,  

   (     
)  (loop).
 ) 

.   (
  ).

 .

 5.1. ()   5.1 ,
(

(6; 6)), ( (2; 4) (4; 2)

).  (), (), ()   5.1 -


.
 


w:E

7! IR

G(V; E )  -

  

(weighted graph) 

G(V; E; w).

    .

 

5.1.  

- ,

69

(degree)

v,

deg(v),    v.  ,

(in-degree)  v ,  deg in (v )
   v , 
(out-degree)  v ,
 deg out (v )   v . ,

 ()   5.1, 2 2, 3 4,
5 1.  (),  3 3
 1.

(G)  G(V; E ) 
, (G)  minv 2V fdeg(v )g.
(G)  G(V; E )
 , (G)  maxv 2V fdeg(v )g.

GP
(V; E ), v2V deg(v) =
P
2 jE j,  G(V; E ), v2V degin (v) = v2V degout (v) = jE j.
5.1.   -

.  - , 1  
.   , 1  

ut

  1   .



(v0 ; v1 ; : : : ; vk ), (vi 1 ; vi ) 2 E i = 1; : : : ; k,
k. ,

(walk)

 ``'' .   
. 
 

(trail)   -

(path)   .

,   (simple path) 
( ). 
 

v  u.

  ,
 


 .

( ir uit)   ,

( y le)   . , 

 ,  .

,  (simple y le) 
 .

d(u; v)  u; v    
 .
D(G)  G(V; E )   
 G, D (G)  maxu;v 2V fd(u; v )g.

5.2.   ,

w   u  w.

.  ,   ' .
  ,   

-

,  . ,   
  .   ,   

u  w.

70

5. 

   

u  w ,

   .

     
.
    

ut

( ) .

0
G0 (V 0 ; E 0 ) 
(subgraph)  G(V; E )  V  V
0
0
0
0
G (V ; E )    (spanning)  V = V

E0  E.

(, /    ),

0
V

(indu ed)

0
0
 E = f(u; v ) 2 E : u; v 2 V g (  
0
    V ).
-

( onne ted)   -

. ,  ``''
     .


G(V; E ) , 

 

( on-

ne ted omponents).     .
       .

,   () ()   5.1 , 

()   ,  

f1; 2; 3; 4g

f5; 6g

  

      
``   

u v''.

u; v 2 V ,
 (     )   u  v   v
 u. 
(strongly onne ted) 
 u; v 2 V ,  (     )
 u  v  v  u.
  G(V; E ) , 


 

 

(strongly onne ted omponents).

 -

   . ,  () 
 5.1      ,  

f6g

f1; 2; 3; 4g

f5g

.     

     `` 


u  v  v  u''.

  , .
     . (a y li )
(.

) 

 
.

(forest).

(tree). ,  ()   5.1

 1  .



     5.1.   
  (.. [21, 24, 12).

5.1.  

71

3 /

4 /

6 /

6 /

3 /

5 /

1
2
3
4
5
6

1
0
1
0
0
0
0

2
0
0
1
1
0
0

3
1
0
0
0
0
1

4
0
1
1
0
0
0

5
0
0
1
0
0
0

6
0
0
0
1
1
0

5.2:    .

5.1.

 -

1.

2.

3.

G(V; E )

.

 .

 ,

 , 

.

4.

5.

6.

jE j = jV j 1
jE j = jV j 1

 ,

  , 

 .

5.3.   5.1.
5.1.1

 

       
  .  
 

(adja en y list)

(adja en y matrix). 

G(V; E ) n m . ,  
    1; 2; : : : ; n.
    G(V; E )      v 2 V .        
L n . ,          v 2 V   L[v .      v
 . ,   G    (n + m)

G(V; E ),  A, n  n .
 A[i; j 1 (vi ; vj ) 2 E 0 . 
 ,   A[i; j  w (vi ; vj )  
 (vi ; vj )  .    G
2
  (n ) .
  

72

5. 

3 /

3 /

6 /

3 /

4 /

5 /

1
2
3
4
5
6

1
0
1
1
0
0
0

2
1
0
1
0
0
0

3
1
1
0
1
1
0

4
0
0
1
0
0
1

5
0
0
1
0
0
0

6
0
0
0
1
0
0

5.3:   - .

    
   5.2,  5.3  
- .
 

(sparse),

o(n2 ), 

      
. ,  

(dense),

(n2 ),

     
 .
     
  .         

(deg(v)) ( (n)   ).

 ,     , 
   .

5.4.         .

G(V; E ),  G2 (V; E 2 ), 
(u; w ) u w    G
(, u w    
2
2  G).     G   G
5.5.  

   .

  G   , 

2 V : (v; u) 2 E

u,

    

(.     

u).

  

   . 

O(nm).

2
2
  A  ,  A [vi ; vj   
2
2   vi vj . (vi ; vj )  G
A[vi ; vj + A2 [vi ; vj > 0.    :
2 = A  A    G.   
  A
G2 .  B [vi ; vi = 0 vi 2 V . vi ; vj 2 V ,  B [vi ; vj = 1

5.2.   

73

A[vi ; vj + A2 [vi ; vj > 0 B [vi ; vj = 0 .


log2 7 )    Strassen.
O(n
ut
5.6.

G(V; E )

 

GT

(transpose

GT (V; E T )

 

graph)

= f(v; u) 2 V  V : (u; v) 2 E g. ,
G    .

ET

    

GT

 

G    .

G   , u 2 V
v 2 L[u,   u   LT [v  v   .
T    
    G
G.  (n + m),   
.  

.

for all

v2V

LT [v

do

u 2 V do
for all v 2 L[u do
LT [v LT [v [ fug;

for all

 

AT
A).

 ,  

A (  AT

v 2 V do
for all u 2 V
AT [u; v

A   

for all

5.2

do

A[v; u;

ut

(n2 ),   A.

  

 ,  
     .


G(V; E ) s 2 V , 

  (Breadth-First Sear h)   
 

s.

   ()  .
  
   

s.

k,

,   ,

s ( 

1 

s).

  ,

    
 

s (  2  s).

, 

k, 

 


k 1.

 `` ''   

74

5. 

   
 

k + 1.

k  s  

  ,  :
, 

  , 

, 

, 

-

, 

   .
.     , 
-. -   , 
  .
    ,     
 -.

'   ,  First-In-First-

Out (FIFO) - .
 )

s.

, - (

    ,

  (     ), 
.    ,       .    ,


p.

  (.

v,

m[v

   

, -, ) 

  

 (

p[v =

NIL

p[v

).   , 
   ,  -  , 
 .

BFS(

G(V; E ), s)

s m[s
for all v 2 V n fsg do
m[v ; p[v
addToQueue( );

p[s

NIL;

while not emptyQueue() do

NIL;

extra tFromQueue();

v 2 L[u do
if m[v = then

m[u

for all

v m[v

addToQueue( );

p[v

u;

    5.4.

 (   ): 
    ,     .    FIFO  
.   

O(n).

   -

   .  


(m) (.

5.1) 

  . 
  

O(n + m),

O(m).

 

5.2.   

75

 .
  
-

p[v =
6

NIL.

s, v

,    

   -  
   .


(..

G(V; E )

,

- 

),   .

Gp (Vp ; Ep )  
  . ,  Gp (Vp ; Ep )


 
 :

Vp = fv 2 V : m[v = g

Gp

Ep = f(p[v; v) 2 E : v 2 Vp n fsgg

    

v 2 Vp.
Vp = V ,

G(V; E ),

 


Gp

s 

   -

- 

 .


Gp    .   

,        

s (.

 5.6.2 5.30).

,     

s 

G(V; E ) 
G (. Vp = V ).  
      G.
5.7.   -

      

.       

G,

``''  .    

G, . Vp 6= V ,    Vp 
()  V n Vp .  V n Vp
 s.   G ,    
Vp     G.
  

  ,  .

 , 

.        .

  .

ut

5.8.        : ()
, () , () , () .

G(V; E ) 
(bipartite)  
 V1 V2   E    V1
5.9.

76

5. 

s
2

s
2

s
2

8
Q

8
Q

9
4

s
2

s
2

s
2

8
Q

8
Q

s
2

s
2

s
2

8
Q

8
Q

s
2

s
2

5.4:     - .
  , - , . 
     .

5.3.  

  

V2 .

77

G(V; E )

 .  
.

   

G(V; E )

-.  - /  .

    

2V

.     

  


s.

V2

s.

V1

  

  

.  

V1

V1

V2 , 

V2 , 

 (  ),  . 

ut

O(n + m).
5.3

 

    (Depth-First Sear h) 
 .    () 
 ,    .
:   

v  .   

v      . 
u,     u.  
 v .

,  
 .
 ,   .



v.

v,

.

 

-

   ,  ,   ,

t   
v   -,
t   1  d[v      t.   d[v 
  v .
 m p    . m[v  
  v   p[v  
 v  .  ,     ,


m, p, d.

   

. 

 -  ,   .

G(V; E ))

DFS Init(

/*  */

78

5. 

0;

v 2 V do
m[v ; p[v
;
for all v 2 V do
if m[v = then DFS(v );

for all

NIL

DFS( )

t + 1; m[v ; d[v t;
for all u 2 L[v do
if m[u = then
p[u v; DFS(u);
m[v ;
   5.5. DFS Init     (  
)  DFS. -

DFS  , DFS( )  


 . DFS( )   

.

,  (

 - ).

 

O(n + m),    .
 ,  Gp (V; Ep )       .    , 

Gp

 

  .

Ep = f(p[v; v)

2E:v2V

p[v =
6

 


Gp

v.

To

NIL

 -

Gp

(.

   

Gp   .

   -

G(V; E ) -,  Gp

. , 
 

G .

 ,

DFS Init  DFS  ,  /  

Gp  
 DFS. ,   p[u = v  DFS(u)  
   v ( , DFS(u)
 DFS(v )).
 

Gp .

, 

5.10.       : ()
, () , () , () .      .

5.11.   
   

G.

G(V; E )

-,

5.3.  

79

5
1

5.5:     .
  , - , .      -
(.   

d[v).

  

.   
.

80

5. 

 .    ,
  :

(forest tree edges) 

Ep .

   
  

v .

(u; v)

v, 

(ba k edges) u v
u   . (u; v)   
v -.  .

(forward edges)

u v

u   . (u; v)   
v d[u < d[v (.  u  v ).


( ross edges).

-

  -

(u; v) 
   v d[u > d[v (.
 u   v ).
  

Gp .

 5.5,   .  .
 , ,  .
      ,
 ,   .
 -, 

fu; vg

 

 ()   . ,
 

fu; vg

(u; v) (v; u)   .



5.12.   - 
.

. 

fv; ug

- .  , -

d[v < d[u (   v  u). u  


v, u  - 
v . fv; ug    (v; u),
.    (u; v ), .
ut

 

  

5.13.   
.

.  

(u; v)

G(V; E ) (u; v).  


v -. ,

5.3.  

u  .  
 (u; v ).
,    G(V; E ) C .  v   C
  ,  (u; v ) (``'')  C 
 v . u      v  () 
 v  u (  C n (u; v )), ()    v ,
 C . , (u; v ) .
ut
 

81

5.14.    5.13 - .
 

(n) (    -

) - .

.  -
  .  

m  n 1.
,     n
1
.  ,  O(n + m) = O(n).
ut
   . ,

5.3.1

-  

(arti ulation point)

    . 


(bi onne ted)  .

   
. ,    
      .
 ,    ,
   .
  , 

G(V; E ).  ,
  G .  Gp (V; Ep )   
s  .   s
 Gp .
 - 

 5.1.

Gp



s  Gp ,   
  Gp . , s  Gp   G.
 ,   s   Gp .

-  (.

5.12),

    
 

s.

s .

ut

82

5. 

    

Gp

   . 
  

 5.2.

v
Gp
v

Gp , .

 
 

u1 ; : : : ; uk   v  Gp ,  Tu1 ; : : : ; Tuk  
v.   Tu1 ; : : : ; Tuk
 v , v 
    Tu1 ; : : : ; Tuk   Gp 
.  ,   v .  v
``''  Tui   Gp . ,
Tui   v .
ut
.

 

    5.1  

Gp .

    5.2  ,   

`(v) v 2 V :
8
>
<

`(v) = min

>
:

`(u)
d[w
d[v

u  v  Gp
w  v  (v; w)

v 
  w
 d[w = `(v ).  
 v   w . ,  Gp  w v
,

  .
     5.2  

 5.3.

  

Gp

 

`(u)  d[v

Gp

`(v).

u  v `(ui )  d[v.

u  - 
v.   v ( v)  Gp .
   5.2,  v .
,  u1 ; : : : ; uk   v  Gp . ui , i = 1; : : : ; k ,
`(ui ) < d[v,     v
-  d[v .   v  Gp .
   5.2,  v .
ut
  

 

   
- 
  5.6.

G(V; E ).

  -

5.3.  

83

1 (1) 8

1 (8)
1

1 (2) 5

2 (3) 1

1 (6) 4

2 (4) 2

1 (7) 7

9
1 (9)

2 (5) 3

5.6:      .
  

G(V; E ).

    .

v  
`(v) d[v. 8
5 `(1) = 2  2 = d[5.

 . 


G(V; E )   Gp (V; Ep ) 
d[v v 2 V .

1.  

2.   

Gp    -

,   ,    ( 
- (postorder) ).

d[v, d[w w  v
(v; w), `(u) u  v.
  

`(v)

s  Gp   Gp
v u `(u)  d[v .

3.

`(v) v
`(v) 

    . 

u `(u)  d[v   
  v .   .
,   O(n + m) = O(m).

5.15.

r 

(root)  

v  r.

G(V; E )

, ,  .

s       G.
 G , s .

1. 

 

84

5. 

2.    


G(V; E )

3.    

NIL

G.

 

 .

 

G.

.  ,  

s  .
v    ,  s  v
 s.  v , s  .
  G  s   . 
,    s. s , 
 . ,  G .
 r  G. u r
 u.   r ,
T
T
 DFS(r ) ( BFS(r ))   G (V; E ) (. 5.6).
       G.
ut


5.3.2


1

 

,    
  . ,
'' ( `` '') 

(u; v)   u ``

 .

  
 (..

a x2 + [(a + )(b + d) a b d x + b d).

     .   ,  
    .
   .
  . 

u.

(u; v) 

( ,   `` '').

( 5.13).      .  
   .      (topologi al sort).



G(V; E ) 
(u; v ) 2 E , u   v . ,    
 

   DAGs  ,  

Dire ted A y li Graphs.

5.3.  

85

1
3

5
4
6
7
11

10

8
9
10

11

4
1

5
7

9
11

10

5.7:   . ()

G(V; E ).

()    1. ()  .
      . 
    .
    .

   .  
    .
     .   Last-In-First-Out

v      
v   
      Q (
(LIFO)

Q.

(   DFS( )).

Last-In-First-Out)    .     for-  DFS Init, 


.  

(n + m),

   .   
  5.7.
      ,

   

v.

(u; v), u  u     

,

v LIFO.

86

5. 

 5.4.

(u; v)

 ,

    

  (u; v ).   (u; v ),
u - v   .
v -  (u; v )  

(. 5.13).

u -,
v , (u; v)
 DFS(v ).     v
   . u -  DFS(v ).
, u      v .
ut

,   .

   

v.

5.16.    5.7,       3.

5.4

  

G(V; E; w)  , 

   w : E 7! IR+ .   T (V; ET )  G  w (T )   ,
P
w (T ) =
e2ET w(e).
    G   -

  -

.   ,  .

  ' .    
.

,   

   .

  

G(V; E; w)
G   .

(Minimum Spanning Tree - MST) 

    

      
     .
       
   (.. , , ).   ,      ().

5.4.1

   

  ,    

(S; V n S )  G(V; E ) 
 S  V V n S (. 5.9). 
   S   V n S 
( ut set) 

.

( ut)

      

  , B.

5.4.   

87

4
5

5
4

10
5

10

3
6
6

12
4
8

5.8:     ().     .

1
5
4
2
7
5.9:

f1; 2; 3; 5; 6g

 .
, 

nS

4
5

10
5

10

3
6
6

12
4

  ,

 ,

n S = f4; 7; 8; 9g

   .

S =

-

(S; V n S ),  ,  .
   f5; 8g 4.

S  V , (S; V n S ) = f(u; v) 2 E : u 2 S v 62 S g.
e
  (S; V n S )    S   V n S (
e 2 (S; V n S )). E 0  E   (S; V n S ) E 0 \ (S; V n S ) 6= ;
0
(.  E  ).

(S; V n S ).

      . ,   .
  ,    
   .
      
  ,   .

T (V; ET )  G(V; E; w),  e  


ET .  e  T  .  S V n S 
  ,  TS T   
S
 T n e. TS   S , 
TS   S = V n S . ,


88

5. 

 

   

 .    
    .
    ,  
  
 

 

(S; V n S ).

,

e    (S; V n S )

(. B.2 5.2).
    
 .   , 

 . ,  .  

     .
 

 .  
   n
1 ,   .  

 .

G(V; E; w))
 ;;
while jj < n
1 do

MST(

return(

 [ feg;
);

e  ;

e   :
  ,   [ feg ( ),


1.

2. 

 ,   [ feg .

  

,

G.  
  ( ),
  [ feg  e  .  
  jV j 1 ,  (. 5.1)
. ,     .
  
 .    
     . 



G.

      
 

5.2.


, 

G(V; E; w)

(S; V n S )

    

n n
n

 

  - ( ) 
( )  

(S; V n S )
(S; V n S )


  , 

 

  

.

 

5.4.   

89

S
u

p
v

y
V\S

(S; V n S )  e = fu; vg  
 (S; V n S ),  e.
5.10: 

G    ,  e = fu; vg
(S; V n S ).   [feg 
T , e   .  e 
T   [ feg   T .   , 
0
T    [ feg  .
 p    T   e,  u v .
To p + e    e  T .  
e  S   V n S ,  p ``''   (S; V n S ) (.
B.2).  p  (S; V n S ).
0
 e = fx; y g 2 (S; V n S )  (. 5.10).
0
0
0
T = (T + e) n e     G  e 
T + e  p + e  . 
0
 T n e      T  
(S; V n S ). ,   [ feg   T 0 .
 e    (S; V n S )
0
0
 e 2 (S; V n S ),   e    e . , 
0
 T   T :
.

  

w(T 0 ) = w(T ) + w(e) w(e0 )  w(T )

T 0   G.
   [feg   G. ,
   (S; V n S )   .
ut

 

w(e)  w(e0 ).

, 

5.17.     : 

G(V; E; w)    G.

.  . ,  
 .

ut

90

5. 

G(V; E; w),  e 
.     G  
0
G (V; E n feg; w )    e.
5.18. 

  

e.

G(V; E n e).

,  

G   e. T n e . 
(S; V n S )   . e ,
0
0
e  . e  , w (e )  w (e).
0
0
,  T = (T n e) + e  G  e.
ut


5.19.     :   -

G(V; E ),  T (V; ET )    G. G0 (V; E n ET )


    ET .

 .

, 

,   ,  

ut

.

T (V; ET )  G(V; E; w) 
, Wmax (T )     T , . Wmax (T ) =
maxfw(e) : e 2 ET g.   T  
T 0  G,  Wmax(T )  Wmax(T 0 ). ,    
    G   
5.20.  

(bottlene k minimax ).

e = fu; vg   T .  w(e ) =
Wmax(T ).   (S; V nS )    e  T .

 T , e    (S; V n S ).
0
  T   (S; V n S ),

 w (e ) = Wmax (T ). ,  
T 0  G,  Wmax (T 0 )  Wmax(T ).
ut

. 

5.4.2

, 

 Kruskal

 Kruskal      .  
 

   (. 5.12).

   Kruskal (. 5.11)  
( -, union-find). 

 - makeSet( ),
 

v, findSet(v),    v,

5.4.   

MST-Kruskal(

91

G(V; E; w))

 ,

v 2 V do
v
;i 1
while jj < n
1 and i  m do
ei = fu; vg
if
u =
6
v then
  [ fei g
u; v
for all

w(e1 )      w(em ).

makeSet( );

findSet( )

findSet( )

; union(

i + 1;
return();

);

5.11:   Kruskal .   .  
    /  . 
     .  

n 1 ,   .
u; v),

union(

  

u v

 .

     

  
  / . (   )


.

     .

   .
   

(m log m).


(m log m).

 
   

makeSet.    , 

(n)  ( union).
 (m log m).
( findSet)

(n)  -

O(m) 

 

 [ fei g
ei    . 
 , ei   
   ,   

 .  5.2, 


 .

G(V; E; w)  T  G.     G(V; E; w=2)


5.21. 

    .

 

G0    G0 w(T )=2.

 ,   Kruskal
  

w(T ).

   

92

5. 

10

2
7

1
4

10

2
7

1
4

10

2
7

2
8
5

10
6
3

3
6
6 7

1
5
4

12
4
8

2
8
5

2
5
10
6
3

6
6 7

5
4

12
4
8

2
8
5

2
5
10
6
3

6
6 7

5
4

12
4
8

2
5

4
5
10
5

1
4
5
10
5

1
4
5
10
5

2
8
5

10
6
3

3
6
6 7

1
5
4

12
4
8

2
8
5

2
5
10
6
3

6
6 7

5
4

12
4
8

2
8
5

2
5
10
6
3

10

10
6
3

3
6
6 7

12

4
8

1
4

10

5
10
6
3

3
6
6 7

12

4
8

1
4

6
6 7

12
2

4
8

5.12:    Kruskal.

4
8

    
   . 
  , .

  .  Kruskal  
   .
 

5.4.3

T.

ut

 Prim

 Prim     .

 . ,
     
  .  
(. 5.14).
 (.

 

[v v 62 S .  
p[v      v [v (.
 fp[v ; v g 2 E w (p[v ; v ) = [v ). , v 62 S 

   

5.13)  

5.4.   

93

G(V; E; w))
for all v 2 V do
[v 1; p[v
;
 r   V .
[r 0; S ;;  ;;
while jS j < n do
 v [v = minu62S f [ug;
if p[v 6=
then
  [ fv; p[vg;
S S [ fvg;
for all u 2 L[v do
if u 62 S and w(v; u) < [u then
[u w(v; u); p[u v;
return();

MST-Prim(

NIL

NIL

5.13:   Prim .
    

[v   .
v .
  

S . v 62 S  

,        

[v fp[v; vg   ,.

  ,       . 
(binary heap),  Prim 

O(m log n), .

     Kruskal. , 

p   (n).



n 1  ,   ,
O(n log n).     ,   

     .
   .

O(m log n).

 

 Prim Fibona i   

O(m + n log n).

     

 Kruskal .
    Prim,   

(S; V n S ),
 

  
      .
  ,  

 (.

5.2)

5.22.  G(V; E; w)   , 
e ()   (  , 
8e 2 E n fe g; w(e ) < w(e).    G  e.

94

5. 

1
5
4
2
7

1
5
4
2
7

1
5
4
2
7

4
5

5
10
6

8
5

6 7

6 7

12
4

1
4

5
10
6

10
5

10

12

10

10

6 7

12
4

4
5
10
5

1
4
5
10
5

1
4
5
10
5

2
8
5

10

6 7

1
5
4

12
4
8

2
8
5

2
5
10
6

6 7

5
4

12
4
8

2
8
5

2
5
10
6

6 7

4
5
10
5

1
4
5
10
5

1
4

2
8
5

10
6
3

3
6
6 7

12
4
8

2
8
5

5
10
6
3

3
6
6 7

12
4
8

12
2

4
8

4
1

5.14:    Prim  1.
,   
   .   
   .  
       .
   .

      ;  
 ;

. . 


e  T

. 

G  e .

e  

 .  ``''   . , 

(T + e ) e     G. w(e) > w(e ), e


 e  
 ,  (T + e )
T .       T .
  
 3,    




G.

  

G  3     

5.5.  

95

(..  1, 2, 3).

G g,  
 g
1    G. 

   e .  
,    

     
(.
Kruskal 

5.23).

   

ut

g 1   .

G(V; E; w)   . G (. T ,  
0
0
T , w(T ) > w(T )).

5.23. 

   

T T 0  G. ,  
0
0
0
0
w (T ) = w (T ).  T  T , e 2 T n T .
0
0
0
 (S; V n S )     e  T . e 62 T ,
 e 2 T   (S; V n S ). 
0
0
,   w (e) < w (e ) ( w (e) > w (e )  ). ,
0 0
 (T n e ) + e    G  
w(T 0 ).       T 0 .
ut
.  

G(V; E; w)  T  G. 
0
0
   G  e w (e ).
0
  O(n)  G
(  T ).
5.24. 

G0

.  

T.

 

T.

e0

 

C  .   G0 
O(n), n   .
ut

5.5

 

  

 ,

G(V; E; w)  .   
w : E 7! IR  .  ,

   , , , .  ,
 

w(e)  

e 2 E  

       .

G(V; E; w) /  ,  () p = (v0 ; v1 ; : : : ; vk )    
Pk
 . , w (p) =
d(u; v)  v 
i=1 w(vi 1 ; vi ).
u     u  v .  

96

5. 

d(u; v) =

v  u.
(shortest path)  u  v    d(u; v ).

 



    () (. 5.2). 
      . , 


s t.

s t 

     (Shortest Paths Problem - SPP), 

G(V; E; w)

      -

,    

   .

 

  ,   .
      .

G(V; E; w), s 2 V ,  t 2 V ,     s 
t.     
  , 

(Single-Pair Shortest Path Problem).


  , 
    

G(V; E; w) s 2 V ,

s   -

.     
(Single-Sour e Shortest Paths Problem).    :    Bellman-Ford
   Dijkstra. 
    
   .

   , 
  .
 , 

G(V; E; w) 

     .  
    (All-Pairs Shortest Paths
Problem)  

jV j

 .  
 . ,   Floyd-Warshall 
  .

,    

.
 .

   -,  
   

   .    ,
    .   
     .

5.5.  

97

3
5

12

10

(1; 2; 5; 6; 1)
5, (1; 5; 6; 1) 7.    
 1   1

5.15:    .

 .

5.5.1

   

G(V; E; w)

  .

d(u; v)

-, 

u; v

2V

, 

 

 ,   
(.

4).

  ,  

 , .
,   (..    5.15)

s,   s 
 .  p  s 
0
 ,  p  p

    . , 
    
.

s  . u,
s  u   , 
d(s; u)  d(s; u) = 1.


 

5.5.2

  

       
       
 . ,       
  . ,    
    .

 5.5.

(u0 ; u1 ; : : : ; uk )
p

ui

pij

G(V; E; w)
u0
uj

uk



i j 0i<jk
ui uj
,

 

p =

,   

.

p   ui uj ,   
 ui
uj  p0ij w(p0ij ) < w(pij ).

  

 .

98

5. 

pij  p0ij  p, u0 uk  
  p.       p  u0
uk

 

ut

.

      

G(V; E; w)   5 . ,
u; v; w 2 V ,  d(u; v)  d(u; w) + d(w; v). ,      u  v     
 u
w w v .  

 .

 5.1.

(v; u) 2 E

G(V; E; w)
d(s; u)  d(s; v) + w(v; u)

, 

, 

2V

G(V; E; w),  p   
s  t.    p    
5.25. 

   .  
  ;

5.5.3

  

  

G(V; E; w) s -

     (Shortest Paths Tree).   


(   ) 

 

u  s.   
s u       (

 5.5).  


s    s.

p n .
p[u 

   ()  


p[u

 

 

u 

. , 

u   s u  (.

  

  ,  5.2,    ,  5.3). 

p,      Gp (Vp ; Ep )  :
Vp = fv 2 V : p[v 6=

NIL

g [ fsg

Ep = f(p[v; v) 2 E : v 2 Vp n fsgg

G(V; E; w)    s     

5.26.  
 

5

G.

,    -  

 .

5.6.  

5.6

99

 

      5.1.

s. u, 
``''  `[u   d(s; u). `[s = 0 `[u = 1
u   s.   u
 s.    `[u    
  s  u
.


G(V; E; w)

 

      

,  `[u > `[v + w (v; u),  


(v; u)   `[u = `[v + w(v; u). 
   v  s
v  `[v,  
   u  s
u 
`[u.        s  v 
(v; u).
 `[u ``''     
 d(s; u).       
 s
u   . s u 
 d(s; u).  s
u
,   `[u = d(s; u).     
  , s
u   .

  5.1.

5.1.

`[u

G(V; E; w)

  

d(s; u)

, 

`[u = 1  d(s; u) u 2 V n fsg. , 


`[s = 0  d(s; s)  d(s; s) = 0 s 
 ,  d(s; s) =
1 .
.

        . 

(v; u) .  `[u


`[u  d(s; u)  .

,


`[u , :

`[u = `[v + w(v; u)  d(s; v) + w(v; u)  d(s; u)


  

`[v  d(s; v)  .

 -

    5.1.

ut

u 
s, `[u = 1  .
ut
.  

      
  .     
     .

100

5. 

1
8

2
5

10

4
5

4
8

8
2

2
2

4
1

2
0

5
6

4
3

5.16:    Bellman-Ford. 
     

i -

i 

.     .     (

L(i; u) = 1).

    .

5.6.1

 Bellman-Ford

 Bellman-Ford     
     .
      
   . Bellman-Ford 
  ,  .

G(V; E; w) n m s.
i = 0; : : : ; n 1 u 2 V ,  L(i; u)    s u 
i  .   n
1 ('  

).

  

s,  L(n 1; u) = d(s; u) u 2 V .
, L(0; s) = 0 L(0; u) = 1 u   .

,    ,

5.6.  

101

  .

s u  i + 1  s v  i 
(v; u), v (v; u) 2 E .  s
u  i + 1
     s
u  i  
   s v  i  (v; u),
v (v; u) 2 E .  s u  i + 1   
  . ,  L(i + 1; u)  

L(i + 1; u) = minfL(i; u); min

v:(v;u)2E

fL(i; v) + w(v; u)gg

(5.1)

G  
s,     s u (  )
   S
u  n 1  .
  s, L(i; u) = L(n
1; u) = d(s; u)
i  n u 2 V .  L(n; u) < L(n
1; u) u,


   .

s  
(5.1)   . i = 0; : : : ; n
1
u,  L(i +1; u)   L(i; v ) 
v 2 V .    ,  p[u   (
 u)   s
u  i  .
  

  Bellman-Ford.  
Bellman-Ford   5.16.
   .  
      
  5.6.

  , 

G(V; E; w); s)
for all u 2 V do
`[u 1; p[u
;
`[s 0;
for i
1 to n 1 do
for all (v; u) 2 E do
if `[u > `[v + w(v; u) then
`[u `[v + w(v; u); p[u
for all (v; u) 2 E do
if `[u > `[v + w(v; u) then

Bellman-Ford(

NIL

return(

v;

);

n 1    foru,  `[u   L(i; u) (.


   s
u  i  )   


102

5. 

i- . `[s = 0 `[u = 1 u 2 V nfsg. 


    i, i = 0; 1; : : : ; n
1, `[u  L(i; u).  i + 1,
     
  5.1.

 (5.1),     

i + 1, `[u  L(i + 1; u) u. ,   
n
1 `[u  L(n 1; u). 
 s, `[u = d(s; u)    (n
1)- . 

,    .
     .
  
 Bellman-Ford

(nm).

, 

   

5.2.

G(V; E; w)
s

. 

,    

`[u = d(s; u)

. ,   .

 .

s,



`[u = 1 = d(s; u)   (. 5.1


). u  s,  p = (v0 ; v1 ; : : : ; vk 1 ; vk ), v0 = s,
vk = u,  s u  k .   
 i, i = 0; 1; : : : ; k , `[vi = d(s; vi ).   () 
n 1  u  s, ()  `[u
 d(s; u) ( 5.1).
( 0) `[s = 0 = d(s; s).    
  i
1.     (vi 1 ; vi )  i,

d(s; vi )  `[vi  `[vi 1 + w(vi 1 ; vi ) = d(s; vi 1 ) + w(vi 1 ; vi ) = d(s; vi )

`[vi = d(s; vi ) .

 ,   

(vi 1 ; vi )    `[vi .   `[vi 1 = d(s; vi 1 )


 .     p  s
u
     vi  s
vi  ( 5.5).
   n 1, `[u = d(s; u) u.

 5.1.      

 5.1,   

`[u

 

d(s; u).

  

ut

  .

5.3.

G(V; E; w)
s


.

. 

,  

5.6.  

103

= (v0 ; v1 ; : : : ; vk ), v0 = vk , 
 s.   s,
 `[vi , i = 0; 1; : : : ; k ,     n
1.  ,     
.

  . 

`[vi  `[vi 1 + w(vi 1 ; vi ) i = 1; : : : ; k (  

 ).   ,

k
X
i=1

`[vi 

k
X
i=1

`[vi 1 +

k
X
i=1

v0 = vk

w(vi 1 ; vi ) )

k
X
i=1

w(vi 1 ; vi )  0

    .

   

 .

ut

5.27.   Bellman-Ford    5.15




a.

5.28.    
Bellman-Ford   .

(u; v)  `[u > `[v + w(v; u)    .


s.  (u; v ), 

. 

(u; v)

 

    

p.

   

p,

 

    Bellman-Ford.

(u; v) 2 E do
if `[u > `[v + w(v; u) then
print(u; v );
y v; x p[y; p[y NIL;
while x 6= NIL do
print(x);
y x; x p[y; p[y NIL;

for all

return(
5.6.2

);

 Dijkstra

 Dijkstra       .  Dijkstra 
   -   
Bellman-Ford.  ,

m s.

  .

G(V; E; w) n -

 ,

104

5. 

 Dijkstra    
 .    
    .   
,       .
   .

 ,   
  .
   Dijkstra   

`[u   u 
s. `[s = 0 `[u = 1 u  
.   S    .
u 2 S ,  p[u   (  u)  
s u   .
.  

 ,  
.

  ,   

( )    (

).

62 S

  , 

`[u    u  s (. 5.4).    
  u .   ,
   u    
.
   , 

s 

s.
s  .

       


   Dijkstra   5.17.

G(V; E; w); s)
for all u 2 V do
`[u 1; p[u
;
`[s 0; S ;;
while jS j < n do
 u `[u = minv 62S f`[v g;
S S [ fug;
for all v 2 L[u do
if `[v > `[u + w(u; v ) then
`[v `[u + w(u; v); p[v u;

Dijkstra(

NIL

,  

     .  
    .


O(m) .

 (binary heap)  
,     

O(log n).

   

O(log n).

5.6.  

105

8
2

2
2

10

2
5

3
2

2
5

15

5
2

6
3

10

3
2

10

3
2

2
14

5
2

14

3
2

14

2
4

3
5.17:     Dijkstra.  
   .

S )  .

  (

  (

V n S)

      .
      .
  .

106

5. 

O((n + m) log n)   .
O     O(n log n + m) 
 

Fibona i.

.     Prim  Dijkstra.
 

S.

 

,    

  .   Prim,      
 ,

[u = minv2S fw(v; u)g.

  Dijkstra,  

       
 ,

E ).

`[u = minv2S f`[v + w(v; u)g (  w(v; u) = 1 (v; u)not 2

   

     (    

ut

 ).

      Dijkstra  
 .    
     .

5.4.

G(V; E; w)
u

  

 , 
 , 

 

  . 

d(s; s) = 0.

`[u = d(s; u)

jS j

, .  

S  ,  `[s =

    

u  
,  `[u = d(s; u).    ,   u
   `[u   .
 ,     `[u > d(s; u) (
   5.1).  s
u
 p     `[u.  z 
 p  u. ,   p d(s; u) = d(s; z ) + w (z; u) < `[u.
  ( w (z; u)  0), 
 

u.

  

d(s; z ) < `[u


z   (. z 62 S ). , 

(5.2)

`[u  `[z + w(z; u) = d(s; z ) + w(z; u)


(z; u)   `[u
   z  S . `[z = d(s; z )  .
     p 
 S .  x   S   p ( x 
 s),  y  x  p ( y   z ).
 x, y , z   5.18.  p  s u
 

5.6.  

107


( S)


( V \ S)
u

z
p

y
x

5.18: H    Dijkstra . -

s.
u  s   y

   
 ,  

z   .

,   

x, s y, s

p  s  x,  y,  z  

 ( 5.5).  

, 

d(s; y) = d(s; x) + w(x; y)  d(s; z )

(5.3)

 ,   

`[y  `[x + w(x; y) = d(s; x) + w(x; y)  d(s; z ) < `[u


    
 

`[y  

x  S .

(x; y) -

  

.   (5.3) (5.2) .





62 S

u    .

`[y < `[u.

   

ut

5.29.       
     -

x, x > 0,   () . 
  x   Dijkstra  
: 

 .

5.30.         

 .

       
  .

108

5. 

`  
  s. `[s = 0 `[v = 1 v 
 .  v  -  p[v
u, 
`[v
`[u + 1.
.   . 

     


s,    

 Dijkstra  .
 

2V

  -

`[v. ,
0
 v  - ( )
0
v ,  `[v  `[v .
  

 .  
,   - .  

x   v  
0
 . p[v = x `[v = `[x + 1.  x
0
  x `[x  `[x.
0
v  - (  )  v 
0
  x  x  x. 
   (x; v ) v .
0
  ,   : `[v  `[x + 1 = `[v .

  -. 

       -.
    
 ( 
).     5.1 
  ,  
(  )   Dijkstra 

ut

5.31.       
       (.   -

p b(p) = maxe2p fw(e)g).  G(V; E; w),


s,  t,  s
t  


.  

  

(Bottlene k Shortest Path

Problem).    Dijkstra     .

    Dijkstra,  

     .

    ;

5.32.    
(.

O(n + m))

    

  .  
.

5.7.   

. 

G(V; E; w)

0.

109

 , 

   ,

  .
      ( 5.3.2).

s ,

    .
   ,  


s.

`[s = 0

`[u =

`[u

u   .    

  .    , 
     . 
  .
    Dijkstra         
 .   ,   .   
 .      .   

(n + m) .

   ,    

 , 

`[u

  

d(s; u).

     


u   `[u    .

       .
  

u  

      .

5.7

ut

  

      , -

G(V; E; w)  ,   d(u; v)
 u
v  (u; v). 


    
 .
   Dijkstra (
 )   Bellman-Ford (  )

u2V

.     

n .  O(nm + n2 log n) 
2
, O(n m)  



.

  ,   Floyd-Warshall 
    

O(n3 )

  .   

110

5. 

G(V; E; w))
for i
1 to n do
for j
1 to n do
if (vi ; vj ) 2 E then D0 [i; j
w(vi ; vj );
else D0 [i; j
1;
D0 [i; i 0;
for k
1 to n do
for i
1 to n do
for j
1 to n do
if Dk 1 [i; j > Dk 1 [i; k + Dk 1 [k; j then
Dk [i; j Dk 1 [i; k + Dk 1 [k; j ;
else Dk [i; j
Dk 1 [i; j ;

Floyd-Warshall(

5.19:   Floyd-Warshall .

,  Floyd-Warshall     
Dijkstra

5.7.1

n  

(n2 ) .

 Floyd-Warshall

,   

G(V; E; w) 

(  ).    ,
   .
  ,   -

V = fv1 ; v2 ; : : : ; vn 1 ; vn g. vi ; vj 2 V ,  w(vi ; vj ) = 1
i 6= j (vi ; vj )  ,  w(vi ; vi ) = 0.

. 

      
  . ,   -

d(vi ; vj ) vi ; vj 2 V  ``''
d(vi ; vk ) d(vk ; vj )  vk 2 V n fvi ; vj g ( `''

 


    ).  -

d(vi ; vj )
vi vj    vk ,
      vi
vk     
 vk
vj  ( 5.5).    


vi

vj

 , 

 

(vi ; vj ).

 

  . ,

d(vi ; vj ) = minfw(vi ; vj );

min

fd(vi ; vk ) + d(vk ; vj )g

vk 2V nfvi ;vj g

(5.4)

Floyd-Warshall     
    bottom-up .
  bottom-up  ,   

vi vj

Vk = fv1 ; : : : ; vk g, k = 0; 1; : : : ; n.
 vi
vj 

 

,  

5.7.   

111

2
1

5
3

3
2
5

3
2

4
4

5.20:     Floyd-Warshall.

vi vj

Vk ,  Vk . V0 = ;,
(vi ; vj ). , k = n Vn = V ,    

.

(vi ; vj ) 2 V  V , k = 0; 1; : : : ; n,  Dk [vi ; vj  
 vi
vj   Vk = fv1 ; : : : ; vk g.
D0 [vi ; vj = w (vi ; vj )  V0 = ;.     k ,
  Dk [vi ; vj (vi ; vj ) 2 V  V .
 vi
vj   Vk+1 = Vk [
fvk+1g   vk+1 (   
 ).   vk +1 ,   vi
vj 
 Vk +1 Dk +1 [vi ; vj = Dk [vi ; vj ( 
 vi
vj   Vk ). ,  
vi vj     vi vk    vk vj
   Vk .  
 Dk +1 [vi ; vj = Dk [vi ; vk + Dk [vk ; vj .   

  . ,

Dk+1 [vi ; vj = minfDk [vi ; vj ; Dk [vi ; vk + Dk [vk ; vj g


  
  

Dn [vi ; vj .

Dk [vi ; vj =

vi vj .

w(vi ; vj )
minfDk 1 [vi ; vj ; Dk 1 [vi ; vk + Dk 1 [vk ; vj g

d(vi ; vj )

k=0
k = 1; 2; : : : ; n

(5.5)

(5.5)     (5.4)

Dk [vi ; vj  . 
   Dk  
 Dk 1   . k = 0; 1; : : : ; n,
 Dk n  n. D0 
 

  .     

Dn .

   


D0 ; D1 ; : : : ; Dn .

 Floyd-Warshall.

112

5. 

D0

B
B
=B
B
B

0

D2

B
B
=B
B
B

0

D4

B
B
=B
B
B


1
0

1
1 1
1 1
3
0

5
1
0

1
1 1
1 1
3
0

4
1
0

1
1 1
1 1
3

2 1
1 3 1C
C
0 2 1C
C
A
1 0 4 C
1 1 0 1
0
2 1
1 3 1C
C
0 2 1C
C
A
1 0 4 C
3 1 01
0
2 2
1 1 5C
C
0 2 6C
C
A
1 0 4C
3 1 0

5.21:

D1

D3

1
0

1
1
1 1 0
1 1 1
3 4 1
0

B
B
=B
B
B


B
B
=B
B
B

0

D5

B
B
=B
B
B


1
0

0
1
0

1
1 1
1 1 1

3
0
8
9
7
3

1
0
10
8
4

0
1
0
7
3

2
3
2
0
1
2
1
2
0
1
2
1
2
0
1

1
1C
C
1C
C
C
4
0

1
1C
C
1C
C
C
2
5
6
4
0

4 A
01
C
C
C
C
C
A

D0 ; D1 ; : : : ; D5 Floyd-Warshall

   5.20.

 Floyd-Warshall   5.19. 

D0 ; D1 ; : : : ; Dn Floyd-Warshall    5.20
  5.21.

  Floyd-Warshall    for-loops

(k; i; j ) 2 f1; : : : ; ng3 (n3 ).  (n2 )


, k = 1; : : : ; n,    Dk
Dk 1 .
  

    

Dn    . vi 
Dn [vi ; vi < 0    Floyd-Warshall.


5.7.2

   

      
    .  
 

n    (),

vi   p n . 
p[vj   vj   vi . ,  p[vj
   vj   vi
vj . 
n , P n  n .   i-
 P    vi , i = 1; : : : ; n. ,
(vi ; vj ),   P [vi ; vj    vj 
 vi
vj . vj  vi vi vj
 (. i = j ),   P [vi ; vj  
.

NIL

5.7.   

113

P  Floyd-Warshall.
P0 ; P1 ; : : : ; Pn   
  D0 ; D1 ; : : : ; Dn . , Pk 
 vi  Vk = fv1 ; : : : ; vk g.
P0      . ,   P0 [vi ; vj vi  (vi ; vj ) 
,
 i = j (vi ; vj ) 62 E . ,


NIL

P0 [vi ; vj =

NIL

vi

i = j (vi ; vj ) 62 E

Pk    Pk 1
    Dk    Dk 1 .
Dk 1 [vi ; vj  Dk 1 [vi ; vk + Dk 1 [vk ; vj ,     Dk [vi ; vj   vk .   ,  Pk [vi ; vj = Pk 1 [vi ; vj 
 vi
vj  (   vj   ) 
  vk . Dk 1 [vi ; vj > Dk 1 [vi ; vk + Dk 1 [vk ; vj ,
    Dk [vi ; vj   vk .

Pk [vi ; vj = Pk 1 [vk ; vj      vi vj    vk
vj    Pk 1 . ,
  vj   vi
vj     vj 
 vk
vj     .
      Pk 
   Pk 1  . ,  
    Pn .
  

Pk [vi ; vj =

Pk 1 [vi ; vj
Pk 1 [vk ; vj

P0

Dk 1 [vi ; vj  Dk 1 [vi ; vk + Dk 1 [vk ; vj


Dk 1 [vi ; vj > Dk 1 [vi ; vk + Dk 1 [vk ; vj

  

Pk

Pk 1     Floyd(n3 ). 
2
(n )   Pk     Pk 1 .

 

Warshall.  

5.33.    Floyd-Warshall      


Pn .

 

 

P0 ; P1 ; : : : ; P5

P5    5.20.

P0 ; P1 ; : : : ; P5

 -

   5.20   5.23.

 

P5   5.22.

5.34.   Floyd-Warshall    5.15.

ut

114

5. 

1
3

2
5

2
4

4
1

4
2

2
1

2
5

4
1

2
1

3
2
5

5.22:       5.20.

5.8

[21, 24, 12    . [21 


  . [24     .
[12      .
[19     . 
   [11, 
 .   
  [17, 41, 32, 2. [17
. [41   
   . [41
     . [32
    . 
 [32     (Linear Programming). [32    ,
,  

NP, .

[2 -

     .
  [2 , , .

 

  ,  [2

5.8.

P0

B
B
=B
B
B

0

P2

B
B
=B
B
B

0

P4

B
B
=B
B
B


NIL

NIL

NIL

115

NIL

1
2
3

NIL
NIL

NIL

NIL

NIL

NIL

NIL

NIL

NIL

5
1

NIL

NIL

NIL

NIL

2
2

1
2
3

NIL

NIL

NIL

NIL

NIL

NIL

NIL

NIL

NIL

1
1

2
2
2

1
1
3
3

NIL
NIL

NIL

NIL

NIL

NIL

NIL

NIL

NIL

NIL

5.23:

NIL

NIL
NIL
NIL

NIL

4
4
4
4

C
C
C
C
C
A

B
B
=B
B
B


P1

C
C
C
C
C
A

B
B
=B
B
B


P3

C
C
C
C
C
A

B
B
=B
B
B


P5

NIL

P0 ; P1 ; : : : ; P5

NIL

NIL

NIL

NIL

NIL

NIL

NIL

NIL

NIL

1
1

NIL

NIL

NIL

2
2

1
2
3
NIL

1
1
3
3

NIL

NIL

NIL

NIL

NIL

NIL

NIL

NIL

NIL

1
1

2
2
2

1
1
3
3

NIL

5
5
5
5

NIL

1
1
1

NIL

2
2

NIL

NIL
NIL
NIL

NIL
NIL
NIL
NIL

NIL

4
4
4
4

1
C
C
C
C
C
A
1
C
C
C
C
C
A
1
C
C
C
C
C
A

NIL

Floyd-Warshall

   5.20.

    .
      [1. 
  ,      
[7, 11  [40.
     ,  Kruskal   1956 [27.  Prim   1957 [35,
 Jarnik  1930.
    ,  Dijkstra 
 1959 [14.  Bellman-Ford   1958    R. Bellman [4 L. Ford [19.  Floyd-Warshall   1962    R. Floyd [18 S. Warshall
[43.

,  R. Warshall   -

     
 .

116

5. 

6  

  (Computational Complexity Theory)  


  
.

 

( ), 

  ,  
     .
 ,  
.    
Turing (Halting Problem).
 ,  
.

      

.   ,     
       .    
    .
       ,    



( omplexity lasses),  -

. 

 

   .   

( omplete)  .  
 ,   
  .

6.1



 ,       .       .

      . 
         .
   
    .
 ,     

117

118

6.  

'  .    (formal
languages)  . 
    
,   
 .


       . ,
 ,

    . 
  

V.

G(V; E; w), s; t 2

     . 

 

s  t   .
t  s. 

  


s t  ,   

 .
   -

(G(V; E; w); s; t),    s t .


s t    .  s t  
. 

.
     

B  s t  t
   (G(V; E; w ); s; t; B ). 

-
 .

    : .

f ;

(de ision problem).

   
   S  ,   I  S . (i; s) 2    i
    s  i. 
6.1.

 .

  ,   .
 
- 

B.

      ``

  

B ;'' , ``B ;'' .

 

 (.. ),  
   (.. ),
.
           
 

(formal languages).

,     
   .  ,
(en oding)

e    

6.1. 

119

e(i)    1.  e(i) 

 i. ()     
 ,    
 .   i e(i)

 ,    L(; e)   .

 e  
  , L(; e)   e(i) 2  , i
    .

6.2. 

 , 

6.1.1

.

  

   ,  
 


(tra table),   

(intra table).   

  .

 

(    )
,        .
   ,
    .

  , .
,   
      1970.
   .    
,  ,  .  ,
 ,       .
        
   .

    

O(nk ), n    k  . -

P.
P        S. Cook

    


R. Karp,   Cook - Karp.


      Cook - Karp.
' ,     
   . ,
   
  ,  
1

 

 

    (..

e(i)  , .).

  

x  dlog jj xe , 

120

6.  

   . 
(..  ).

(n100 ) n=100 ).
 ,   (2
 , 

    
.    

 (.. 1, 2, 3).
,      , 
,  .

  

  .

,    
,   .

6.1.             .
    ;

6.2

 Turing

  , Turing 
  . Turing 
      .
,     
Turing  (Multitape Deterministi Turing Ma hines).
 Turing
.

1

 

(tape)    

( ells)      .  (blank)
  

. 

,  

(tape head)  

    . ,
Turing 



Q.

(state).   

  Turing  
,  

 

(transition fun tion).

     ,
   , 
 ,  . 
,   (
(

L),

 (

Turing




 

S ).

(initial state)  

(final state).

k  1.
M k    M = (Q; ; ; q0 ; F ) :

6.3 ( Turing). 


Turing

R), 



6.2.  Turing

Q

. To



121

Q   q0

  .

   .

 

  

xy

 .

 q0 2 Q
 F Q
 : (Q n F ) 

.
   .

7! Q  k  fL; R; S gk

 .

   
Turing 

. 

,  

    .
   
 

 

(input tape).

 Turing.  -

   Turing (DTM)   


,    
. ,   / DTM


q0 .

 )

 Turing

    .

  

 (

  

x 2  .

xy

),   

x  

   .


 

     

F.

  :   

 ,   

 (halt) 

 .  Turing  ,

F =f

F =f
g.
, M (x) =

.  Turing ,

M  x
(a epts)  x.  
,
 M (x) =
 M
(reje ts)  x. 

x 2     M  
M
 L(M ).
  

  

  ,     
  , 



(output tape).  

   

   .   


 .  

M (x)

M (x) = y.

x  

.

 6.1.  Turing          .

122

6.  

,  



f0; 1g
f
g

xy1101

1101,   

M = (Q; ; ; q0 ; F ). ,      =
= f0; 1; xyg.  q0 ,   F =
   Q = fq0 ; s; s0 ; s1 g [ F .  

, 

   :

p2QnF
q0
q0
q0
q0
s
s
s
s
s0
s0
s0
s0
s1
s1
s1
s1

2

B
0
1

xy
B
0
1

xy
B
0
1

xy
B
0
1

xy

(p; )
(q0 ; B; R)
(q0 ; 0; R)
(q0 ; 1; R)
(s; xy; L)
(; B; R)
(s0 ; xy; R)
(s1 ; xy; R)
(s; xy; S )
(; B; R)
(q0 ; 0; L)
(q0 ; 0; L)
(q0 ; 0; L)
(; B; R)
(q0 ; 1; L)
(q0 ; 1; L)
(q0 ; 1; L)

 

1101  -

       .
   .

(q0 ; B1101)
(q0 ; B1101xy)
(s0 ; B11xyxy1)
(s; B1xy101)
6.2.1

!
!
!
!

(q0 ; B1101)
(s; B1101xy)
(q0 ; B11xy01)
(s1 ; Bxyxy101)

!
!
!
!

(q0 ; B1101)
(s1 ; B110xyxy)
(s; B11xy01)
(q0 ; Bxy1101)

!
!
!
!

(q0 ; B1101)
(q0 ; B110xy1)
(s1 ; B1xyxy01)
(s; Bxy1101)

! (q0; B1101) !
! (s; B110xy1) !
! (q0; B1xy101) !
! (
; Bxy1101)

Turing

   , , Turing       (  ).    ,

Turing

(universal Turing ma hine),

  .
, DTM

  -

M  x  M . M (x) , U (M ; x) 
M (x).  
 U (M ; x) = M (x). M (x) ,  U (M ; x) .

 DTM

     

6.3. 

6.3

123



M , x 2 L, M (x)

DTM- (semide idable) DTM

  

.

x 62 L, M (x) .
L   DTM(de idable)
DTM M    L  

2
  n L . , x 2 L, M (x) =
, x 62 L, M (x) =
.
,

Turing -


x 2  ,     ``x 2 L ;'' (  
  ).

Turing   


DTM

x 2 




. 

, Turing  (  ).

( omputes) 

f : 

7! 

f (x) = y, M (x) = y,

f (x) , M (x) .

DTM- DTM  .

      

    

  .
 Chur h - Turing  () ()    ()  Turing.
     (..

-definability  Chur h,

-   Godel,   Herbrand - Godel,

  Post,  Markov). 
 ()  ()   Turing .  Chur h Turing     Turing 
    .

6.2.   :
1. DTM- DTM-.
2.

DTM-,  

DTM-

.
3.

2

plement) 

DTM- 

DTM- .

 n L
L

 

( om-

124

6.  

(1) ' ( DTM , 

).  (2),      DTM


.  DTM 

 (3),  (1) (2)  .  ,  DTM




DTM

. 

0
DTM M  L   M M (  M , 
0
 M , .).    M (x) M (x) 

M (x) . x 2    L  (
 L),  M (x) M (x) .
ut
6.3.1

-:   

  Turing.
:     ( Turing).

, - (un ountably)

 ( ountably) 
Turing.   Chur h - Turing, - 
   ( 
 ).
       
Turing (Halting Problem),  DTM

6.1.
.

M (x) .

x,

  - (unde idable).

      -

.  DTM

M
H (M ; x) =

 DTM

x, M (x)  .
M (x) , H (M ; x) =
.
 H , DTM J  :

 J

 

H (M ; M )  H

J (M ))   
H

  .

  ,  .




H (M ; M ) =

J (M ) .

H (M ; M ) =

J (M ) .

J (M )  M (M ) .  
    J    (  J (J )). ' , J (J )
 J (J ) .
ut

  DTM-. 
 DTM- 
 .

6.4.  -

6.4

125

 -

         .

 

(.. , )    .
    

M ,        M ,   
 .    
.

  Turing

     Turing

.

,  DTM

 .

(run-

(time omplexity)  M 
t : IN 7! IN  : n 2 IN,  t(n)  
  M  x n.
 t(n)    M ,  M  t(n)
DTM t(n)-.
   ( L)
ning time)



   (  ) DTM 

 ( L).

DTM

( )

O(t(n)).

t(n)-  ,    

t : IN

7! IN

,  -

   (deterministi time omplexity lass)

DTIME[t(n)

O(t(n)).

 /  

DTIME[t(n)  fL : L DTM O(t(n))-g


6.4.1



   

DTIME[t(n)

    
,  , 


6.2.

DTIME[t(n) log2 t(n).


3

t(n).

 

(Time Hierar hy Theorem).

 

t(n)



t(n) DTIME[t(n)
,

.  ,

     .
  

   -

  .

,  ( , , )
  .

126

6.  

  6.2 

k = 1; 2; 3; : : : .

DTIME[nk ,

, 

DTIME[n  DTIME[n2  DTIME[n3    


  

P EXP.

P    ,
EXP    . ,

P

[
k0

DTIME[nk

EXP 

[
k 0

DTIME[2n

 (   )  ,     

P  EXP. ,   P  EXP. 

  . ,
 6.2 

  .

6.3.  

P  EXP.

ut

.   6.2.

6.4.  , 
      
(  ).

6.4.2

   .

  Cook - Karp  

  -

   .
 

 

 .
        ,    

P.

 
 (Boolean formula)   
  . 

(, Conju tive Normal Form - CNF)  . ,

   ( lauses),  = 1 ^ 2 ^ : : : ^ m ,
   (literals), i = `i1 _ `i2 _ : : : _ `ik . 
 xi  :xi . ,  (x1 _ x2 ) ^
(x2 _ x3 ) ^ (:x1 _ :x3 ) . 


 .

6.4.  -

127


6.1: G (V; E )     = (x1 _ x2 ) ^ (x1 _ :x3 ) ^
(:x1 _ x2 ) ^ (x2 _ x2 ) [33, 9.1.

(satisfiable)   -

  .  


k- (k-SAT), 

  .

 .
 k -        Turing M
    M  

.

6.3.

 2- 

n  x1 ; : : : ; xn m
.  ,   2  .
   x _ y (:x ! y ) ^ (:y ! x).
 , 
G (V; E )   . , V = fx1 ; : : : ; xn g [ f:x1 ; : : : ; :xn g.
`i _ `j  ,   G  (:`i ; `j ) (:`j ; `i )  
x ::x  (. 6.1). ,  G
0
  . ,  G  (`; ` )
0
 (:` ; :`).
    x
  x  :x  :x  x.
 ()  G  O(n + m),
()   :x  x
O(n(n + m))  n   .
 
(n + m),  
.

 

P.

  2-.

   p x
 :x :x  x. 
  (x) = 1. (x) = 1 (:x) = 0,   p
(`1 ; `2 )  (`1 ) = 1 (`2 ) = 0.  
 

128

6.  

:`1 _ `2

 

   

 .

(x) = 0.
 ,   :x
 x,    . 
    G 
   

  1  0.
  ,  :
, 


`    1  `
`. ,    0  

(    

:`

).

      . '

x :x  
 `
x :` ` :x :`  

`.

 ,

G .    . ,
  ` x  0 , :` 
 :x ( ). , `   0 
 x.

 

G .

     
  . ,

  1  0. ,
    

6.5.  

  ,  , 

.  

L1 \ L2 L1 [ L2
,

. 
.

M1

M2

L1

ut

.

P.

L1

L2

DTM 

P, 

L1

L2

-

 ,  ( 

. x 2  
L1 \ L2 M1(x) = M2 (x) = ,  L1 [ L2
 M1 (x) =  M2 (x) = ,  L1 M1 (x) = .
   M1 (x) M2 (x) .
Turing)   

  
 . , 

6.5

P.

ut



(redu tion) 



( ompleteness)  

   .
,

(hard)  -

   .

6.5. 

129

R(x)

6.2:  

1  2 [33, 8.1.

( omplete)    .
,    .
        .   

1
2 
R x R(x)   x 2 1
R(x) 2 2 .  R 
 1  2 . R
 -  1 -  2  -  1
-  2 . R  1  2  
/ Turing  2  1 (. 6.2).
 1 2  
 2    1 .   (
 R)  .
 .

6.4 ( ).

2

R 
x, x 2 1 R(x) 2 2 .  /  R 
 1  2 .

1

 6.4   Karp.    ,  .

6.6.     ( 
 

2 ,  2   3 ,   1   3 ).

1

. DTM DTM . ,  .

6.7.  
( 

2

 

1   2 2 2 P,  1 2 P).

.


ut

R  1  2  DTM

 DTM , 

130

6.  

DTM (. 6.2).  
DTM 

ut

1 .

G(V; E ), G ,  
4
 V1 V2 .     P,
6.8. - 


   (. 5.9).   ,      
 2-.

.  -

G(V; E ).

 /

G 2 
G G .
i 2 V    xi . fi; j g 2 E ,
  (xi _ :xj ) ^ (:xi _ xj )  xi  xj .  


 

 ,    (, 
 ).   

G .
   G(V; E ) , V1 , V2  .  
 1   V1   0   V2
  G ,  G .
, G ,   G
 V1   1  V2 
 0. V1 V2  


   (  ).

ut

   ,

1   2  2  ,   1 
    . 

(.


1

6.2 6.7 6.8).

 ,   

.  

1

(

1

 2



).

2

2

 ,

  

   

    
 .

C .  
C ( C-, C-hard) 0 2 C   .
 2 C,     C ( C-, C- omplete).

6.5. 


V

 .

G(V; E ) 

 (independent set)

6.6.

131

  .  ,
    

P.

 -

,   
, 

NP.

   
 .     
   .

C  

  

C 

     .
  
  ,   (.

NP).

,    

,     
.
      

 C,    
0
0
 C  C.  C 
0
    C ,  C   
0
C , C  ( ollapse)  C0 .
:

6.9.  

C0

 

   C  C0 ,  C = C0 .

. 

0

2 C0

C0 ,

0

.  2 C C   ,  0 2 C.
0
0
,  C  C. , C  C. ,
0
0
 C  C . , C = C .
ut

 

6.6

  ,
  [33.    
    [33. 
  .
   ,  Turing, 
 ,  ,  
[23, 29, 38. [23   ,  ,
Turing, -.

[29 

     
 Turing  -.

[29

   . [38 
   
 .

132

6.  

7 -

NP

-

  ,       (RAM)   Turing (DTM). 


 ,  -    -
Turing (Non-Deterministi Turing Ma hines - NDTM).
   ( )    DTM , NDTM 
 (

 )

NDTM 

     .
 ,  NDTM 
 (

 )

DTM. , NDTM

  DTM  `` '' . , NDTM   DTM   `` ''. 


    DTM ( 
   DTM).
 NDTM DTM  

.  

         .
        


P NP.

      - Turing     
.  -    
,  , . -
     
  ,  ,
 .

NP,

 

,    -  
 .

NDTM DTM   , 

   - Turing   .

133

134

NP

7. -

7.1

-

- Turing

N
k  1    N = (Q; ; ; q0 ; F ).  6.3,
 Q  ,  q0 2 Q ,  F  Q 
  ,     . 
  N  
 
- Turing (Non-Deterministi Turing Ma hine - NDTM)

  ((Q n F ) 
/  

k)

 (Q  k  fL; R; S gk )

(Q n F ) 

k ,    

( , , ). ,
  NDTM     , NDTM     


.

, DTM   NDTM,  

  
7.1.1

.

NDTM

-    
    
  NDTM.

   ,

     /   . , NDTM   


( omputation paths) / .  

, NDTM  `` ''.
NDTM

 


N (x) .

N (x) .

 NDTM
 
,

N (x) 

2 

   

    .

N (x)
. 
 x
  N (x)
.  , N (x) =
, 
, N (x) =
.

NDTM N
L   x, ()
  N (x) , () x 2 L N (x) =
.


x 2   
 x





 

NDTM- (de idable) NDTM  .


 -  ,    .   
 .   ( )  . , 
-.

7.1. - Turing

135

q0

7.1:   NDTM.  
  .

   

N (x) 
N (x)  q0


( omputation tree).   

x.

   

  .

) .
N (x)   

(  
   

( 7.1).  /  
,   .

N   x 
x 

       

  .    
, 

- ( ``'') 

   

x.

x      ,     N (x).
,     t : IN 7! IN.

NDTM N t(n)
x n, 
  N (x)   t(n).
  - t(n) NDTM
 t(n)  .   , 
 NDTM

-

 

NDTM    () 
.

7.1.2

NTIME

  -
 

NTIME[t(n).

O(t(n))  



- (non-deterministi time omplexity lass),

NTIME[

  :

NTIME[t(n)  fL : L NDTM O(t(n))-g

136

7. -

DTM    NDTM,

NP

-

DTIME[t(n) -

NTIME[t(n)  t(n).  ,  DTIME  


NTIME (.. DTIME[n  NTIME[n [34).    ( 


t(n),
0
0
NTIME[t(n)  DTIME[t (n), t (n) 0
t(n) ),
 t(n).   ,    t (n) = O(
 > 1.

 )

7.1.

  

 -

 

O( t(n) )

 , 

>1

t(n)

N NDTM  t(n) -

d  
 N . d  `` -''  N . 
 d > 1,   N  DTM. DTM M
   N  .
  N      N  d- .
t   , M    N
  - .  M
    t(n). 
M   .
   , M  d- ( 1 ; : : : ; t )        N   i  -
i .    , M  
. , M  ( 1 ; : : : ; t )  1
 .  M  d- t, 
t  1 . M   t, 
 t    

.
  N t(n), M 
  d- 1; 2; : : : ; t(n). 
t
d- t O(d ). ,
Pt(n)
t
t(n)+1 ).
  M
ut
t=1 O(d ) = O(d


. 

   7.1   


t(n),

NTIME[t(n) 

[
>1

DTIME[ t(n)

   7.1     - Turing   


    Turing.      -

7.2.

NP

137

     Turing. 
  7.1    
Chur h-Turing.

7.1.        ( 
) 

NTIME[n2 .

. NDTM ``'' ( -)


    . 
      .

, ( )  
  

B.

 ,  ``''  . ,
 . 

O(n2 ).

7.2

ut

 , . [33,  2.9.

NP

  

NP,

 - . ,

NP =

[
k0

NTIME[nk

7.2.    

k  1.

k-  NP

  2-;

   k-. NDTM
, ``'' ( -)  `` '' 
    (..     ). 
, NDTM      (   
)  ``''  . 
. 
 

- .
( ) 
   NDTM .

R     .

R 


DTM x; y 2  ,

NP

ut

 

(polynomially de idable)

(x; y) 2 R. H R 
(x; y) 2 R,   y
k
  x (,  k  1   jy j  jxj ).

(polynomially balan ed)

7.2 ( 

NP).

NP

L = fx 2  : (x; y) 2 R

y 2  g

 

138

7. -

NP

-

R.  L 
NDTM N  : x, N ``''
k
( -) y jy j  jxj  
(x; y) 2 R.  , N     x
(x; y ) 2 R. ,  N (x) 
k
 y  jxj . N   x
 y   (x; y ) 2 R (.
.

  

7.1 7.2).

jxj

nk .

'


(x; y)

2R

y 

 DTM , 

 

 , 
 R :

N (x).

x.

L 2 NP NDTM N  L
(x; y) 2 R  y

' ,

L = fx 2  : (x; y) 2 R

y 2  g

R   N (x) 
k
jxj . H R  
y  
 N (x).
ut

7.2      
 7.2, / 
:

x  , ``

NP 

 ''

DTM   
 . ,  ``''
 .

NP.

y  x

 `` ''

() .  
`` ''  .
,  ``''  

 (

    )
   

.

 

   



.

 ,  

 .

 ``''    

 

B.

 .  

7.3.   
 

NP 

L1; L2 2 NP

  .

, 

L1 [ L2; L1 \ L2 2 NP

NP

7.3.

-

139

NP   .
1   2  2 2 NP,

7.4.   
  
 

7.3

NP

1 2 NP.

-

P  NP DTM   NDTM.
     NP 

 .  ,  

NP   ,   

   

k-.

 

             .
     

NP.

,    

NDTM .  
   ,  .

P  NP.
  NP

 ,    
 

NP,

 .

  

``''    .

 

NP  ,  
 NP-  (   ).  
 NP- (NP- omplete)  NP
0 2 NP   .

NP- .
P = NP.
7.3.

 

P = NP,    NP (  NP-)  . ,      (  2 P).


0
0
 2 NP   ,  2 NP 
 P (. 6.7). , P = NP.
ut
.

P=
6 NP,

NP  . , P NP
,     NP 
 NP  P. ,  P 6= NP, ,  NP- (intermediate) ,  P
NP- (. 7.2).  NP- 
.

  7.3 

  (graph isomorphism).
7.3  

NP-

  .    

NP

(   

140

7. -

NP

-

NP-

NP

7.2: 

 

NP).

NP P 6= NP.

     -

,   
( 

P)

NP-.

 

,   


NP-.

  -

NP-. , 
  NP- -



7.5.  

1 ; 2 2 NP    1   2 .

    , ,  
.
1.

1 2 P,  2 2 P.

2.

2 2 P,  1 2 P.

3. 

2 NP-,   1 .

4.  

1 2 NP- ,   2   1 .

. (1)   ,

1 P  NP- 2  2

P = NP.

62 P

ut

.

7.6. 

NP

  ;

  

.
 

NP;

NP   .

P=
6 NP,

. (2), (3), (4)

L 2 NP

P = NP,
P 6= NP, 

  (. 6.5).

 

NP

  .  

   . 

P  

  NDTM.  , . .. [33,
10.

ut

7.3.

NP

-

141

NP- 

7.3.1

    
  

NP-,

NP-.

 
  

NP

  

  (),   .    (Satisfiability),  

 (   ).

,   


.

 

NP-

    70 

S. Cook [8  L. Levin [28  . 7.4 


 Cook - Levin.

7.4.

 

( ).

NP-.

  

(. 7.2). , 

L 2 NP

NP

 .   
NDTM  .
 

,  NDTM

x, 
 x x 2 L.
      N fa1 ; : : : ; am g  
fq0; q1 ; : : : ; q` 1g. ,  n   x. N   t(n),     t(n) .
 x  :


t(n).

L 2 NP

(i; j; t)  `` i  aj   t'', 1 


i  t(n), 1  j  m, 1  t  t(n). mt2 (n) .

1.

(i; t)  ``     i  
t'', 1  i  t(n), 1  t  t(n). t2 (n) .

2.

(k; t)  `` N    qk   t'',
0  k  ` 1, 1  t  t(n). `t(n) .

3.

t,

 

(m + 1)t(n) + ` . (m + 1)t2 (n) + `t(n)


 t(n)  (-)  N .

    .

NDTM
.

 NDTM

142

7. -

NP

-

x    -

    . 
    
:

1. ,    .

2. ,  .

3. ,

 .

n  x  t(n) n 
, N   q0 .

4.  
.

5. 

t  t(n), N

  .

6. ,     
 .

7. ,   .
    

   .

  NDTM .

 

 .

  

 

x .

  .

       

ut

x .

 2-,  2 
 ,  ( 6.3).  ,
 3-,  3   ,

NP-

7.5.

 3-

NP-.

   3- 

NP

(. 7.2).    
3-.

,  

  3-.

  .     j
k  4  0j 3  .  j = `j1 _ : : : _ `jk  


7.3.

NP

-

k  4 .

143

3  zj1 ; : : : ; zjk

3,

 

 :

0j = (`j1 _ `j2 _ zj1 ) ^ (:zj1 _ `j3 _ zj2 ) ^ (:zj2 _ `j4 _ zj3 ) ^ : : :


^(:zjk 4 _ `jk 2 _ zjk 3 ) ^ (:zjk 3 _ `jk 1 _ `jk )
0     j   k  4   
0
0
j . H   .
0
   (.
0
   ). 
0
j j .    j ,  `p   
0
   . j  
     zji , i = 1; : : : ; k
3:

zji =

1
0

i<p 1
ip 1

 ,  
  

`1 ; : : : ; `k

0j

-

. ,  

ut

j .

   7.5  

NP-.

, -

         
  . (..  
3  ).

     

(.. ),    
 

NP-.

7.7.    2- (Maximum 2-Satisfiability) -

   ,
   B  .


.

     2-

NP-.

.    2- 


NP.

NP-,   3-  

2-.   10
  :

C = f(x); (y); (z ); (w); (:x _ :y); (:y _ :z ); (:x _ :z ); (x _ :w); (y _ :w); (z _ :w)g
    x _ y _ z (  x, y ,
z  0)  6  10  C . , 
 x _ y _ z  7  10 

144

7. -

(   

w).

NP

-

    

 .

 = 1 ^ : : : m   3-.  
  . j = `j1 _ `j2 _ `j3  




Cj =


wj

f(`j1 ); (`j2 ); (`j3 ); (wj ); (:`j1 _ :`j2 ); (:`j2 _ :`j3 );


(:`j1 _ :`j3 ); (`j1 _ :wj ); (`j2 _ :wj ); (`j3 _ :wj )g

Cj .

0

Cj ,
0   

  2-   

j = 1; : : : ; m.

 

B 7m.

7m  0
     ,
 .
ut
 ,  

 
 ,    
    ,    ,  
 



NP-  .

(independent set) - 

 .    
(Maximum Independent Set),  -

B.

 

G(V; E )
B 



7.6.
.

  

NP-.

NDTM ``''  -

B ( )    
2
O(n ). ,    ()  NP.

 
  . 

NP-,

  3-

n 

3-.  ,  3 . -

G (V; E ), jV j = 3m, 
m  .
    G ,    .


    .  
   , 
  , ..
7.3
, 

xi :xi .

  

 = 1 ^ : : : ^ m ,  j = `j1 _ `j2 _ `j3 .

G (V; E )

V = fvji : j = 1; : : : ; m i = 1; 2; 3g

To

7.3.

NP

-

145



















7.3:   3-    . 

 = (x1 _ x2 _ x3) ^ (:x1 _:x2 _:x3) ^ (:x1 _ x2 _ x3)

[33, 9.2.

E = ffvji ; vjk g : j = 1; : : : ; m i 6= kg [ ffvji ; vpk g : j 6= p `ji = :`pk g


 . 


m    .

     .  

G

.
   .
 

G  m . , 
xi :xi )   

  (..
 .

      1
. 

G



m,    

  1  .   
     .
 ,  

 
G 

 1 .    

    
,   .  , 


ut

m .

      

NP-

  

  .  ,   
   .

  ,    Konig (. .. [12)
     .

7.8.       
   2.

146

7. -

NP

-

.   2   
 .  ,   ,
 ( , 
).  

bn=2

ut

  .
, 

NP-

 .

,  -

,     (-

7.4)  3- ( 7.5)

NP-,  

2-,   2 ,

P ( 6.3).

     ,
  

7.9. - ,

NP-.

( lique)

 ( ,  
).    (Maximum Clique),  -

G(V; E ) B .

 

G B

 .     

.   

NP-.

G   
G.
ut

  

C 
(vertex over)      C . 

7.10. - ,

   (Minimum Vertex Cover),  -

G(V; E ) B .   G
B  .      

NP-.

X  V 
 V n X )  .

(.

, 

X     
V n X .  X  V     V n X
  . . G
B   jV j
B

ut

 .

7.4

 Garey Johnson [20 

NP-.

[20   

  

NP- 

NP- .

7.4.

147

NP-     

    [33.
  

NP-

[33 

  .  

  [33.
, Ja k Edmonds (.. . [16, 15   [33) 
     
, 

P   NP.

 , Edmonds

     . Edmonds 
      
( 

NP- ).

 Cook-Levin  

NP-

[8, 28.  

  -

NP-  [26.

148

7. -

NP

-

[1 A. Aho, J. Hop roft, and J. Ullman.

The Design and Analysis of Computer Algorithms.

Addison-

Wesley, Reading, MA., 1974.


[2 R.K. Ahuja, T.L. Magnanti, and J.B. Orlin.
tions.

Network Flows: Theory, Algorithms, and Appli a-

Prenti e-Hall, 1993.

[3 S. Baase.

Computer Algorithms:

Introdu tion to Design and Analysis.

Adisson-Wesley, 2nd

edition, 1988.
[4 R. Bellman. On a Routing Problem.
[5 R.E. Bellman.

Quarterly of Applied Mathemati s,

Dynami Programming.

16(1):87-90, 1958.

Prin eton University Press, 1957.

[6 A. Borodin, M. Nielsen, and C. Ra koff. (In remental) Priority Algorithms. In


13th ACM-SIAM Symposium on Dis rete Algorithms (SODA '02),

[7 G. Brassard and P. Bratley.

Algorithmi s: Theory and Pra ti e.

[8 S. Cook. The Complexity of Theorem Proving Pro edures. In


Theory of Computing (STOC '71),

Pro . of the

pp. 752-761, 2002.

Prenti e-Hall, In ., 1998.


Pro . of the 3th ACM Symp. on

pp. 151-158, 1971.

[9 J.M. Cooley and J.W. Tu key. An Algorithm for the Ma hine Cal ulation of Complex Fourier
Series.

Mathemati s of Computation,

19(90):197-301, 1965.

[10 D. Coppersmith and S. Winograd. Matrix Multipli ation via Arithmeti Progressions. In
of the 19th ACM Symp. on Theory of Computing (STOC '87),

[11 T.H Cormen, C.E Leiserson, R.L Rivest, and C. Stein.


Edition).

Pro .

pp. 1-6, 1987.

Introdu tion to Algorithms (Se ond

MIT Press and M Graw-Hill, 2nd edition, 2002.

[12 R. Diestel.

Graph Theory.

Springer, New York, 2nd edition, 2002.

[13 W. Diffie and M.E. Hellman. New Dire tions in Cryptography.


mation Theory,

IEEE Transa tions on Infor-

22(6):644-654, 1976.

[14 E.W. Dijkstra. A Note on Two Problems in Conne tion with Graphs.

Numeris he Mathemati ,

1:269-271, 1959.
[15 J. Edmonds.

Optimum Bran hings.

J. Res. National Bureau of Standards,

1966.

149

17B(4):233-240,

150

[16 J. Edmonds. Systems of Distin t Representatives and Liner Algebra.


of Standards,

[17 S. Even.

17B(4):241-245, 1966.

Graph Algorithms.

Computer S ien e Press, 1980.

[18 R.W. Floyd. Algorithm 97 (Shortest Path).

Communi ations of the ACM,

[19 L.R. Ford and D.R. Fulkerson.

Flows in Networks.

[20 M.R Garey and D.S. Johnson.

Computers and Intra tability:

ompleteness.

[21 F. Harary.

J. Res. National Bureau

5(6):345, 1962.

Prin eton University Press, 1962.

A Guide to the Theory of

NP-

W.H. Freeman and Company, 1979.

Graph Theory.

Addison-Wesley, 1969.

[22 M. Held and R. Karp. A Dynami Programming Approa h to Sequen ing Problems.
Journal on Applied Mathemati s,

[23 J. Hop roft and J. Ullman.

SIAM

10(1):196-210, 1962.

Introdu tion to Automata Theory, Languages, and Computation.

Addison-Wesley, Reading, MA., 1979.


[24 Bondy J.A and U.S.R. Murty.

Graph Theory with Appli ations.

North-Holland, 1976.

[25 A. Karatsuba and Y. Ofman. Multipli ation of Multidigit Numbers on Automata (in Russian).
Doklady Akademii Nauk SSSR,

145:293-294, 1962.

[26 R.M. Karp. Redu ibility Among Combinatorial Problems. In R.E. Miller and J.W. That her,
editors,

Complexity of Computer Communi ations,

[27 J.B. Kruskal.


Problem.

pp. 85-103. Plenum Press, 1972.

On the Shortest Spanning Subtree of a Graph and the Travelling Salesman

Pro eedings of the Ameri an Mathemati al So iety,

[28 L.A. Levin. Universal Sorting Problems (in Russian).

7:48-50, 1956.

Problemy Pereda hi Informatsii,

9(3):265-

266, 1973.
[29 H.R. Lewis and C.H. Papadimitriou.

Elements of the Theory of Computation.

Prenti e-Hall,

1981.
[30 K. Mehlhorn.

Data Stru tures and Algorithms: Volumes I, II, and III.

[31 R. Motwani and P. Raghavan.

Randomized Algorithms.

[32 C. Papadimitriou and K. Steiglitz.

Springer, 1984.

Cambridge University Press, 1995.

Combinatorial Optimization:

Algorithms and Complexity.

Prenti e-Hall, In ., 1982.


[33 C.H. Papadimitriou.

Computational Complexity.

Addison-Wesley, 1994.

[34 W.J. Paul, N. Pippenger, E. Szemeredi, and W.T. Trotter.


Determinism and Related Problems.
Computer S ien e (FOCS '83),

In

On Determinism versus Non-

Pro . of the 24th IEEE Symp. on Foundations of

pp. 429-438, 1983.

151

[35 R.C. Prim. Shortest Conne tion Networks and Some Generalizations.
Journal,

Bell System Te hni al

36:1389-1401, 1957.

[36 R. Raz and A. Shpilka. Lower Bounds for Matrix Produ t in Bounded Depth Cir uits with
Arbitrary Gates. In

Pro . of the 33rd ACM Symp. on Theory of Computing (STOC '01),

pp.

409-418, 2001.
[37 R. Sedgewi k.
[38 M. Sipser.

Algorithms.

Addison-Wesley, 2nd edition, 1988.

Introdu tion to the Theory of Computation.

[39 V. Strassen. Gaussian Elimination is not Optimal.

PWS Publishing, 1997.

Numeris he Mathematik,

[40 R.E. Tarjan. Depth-First Sear h and Linear Graph Algorithms.

13:354-356, 1969.

SIAM Journal on Computing,

1(2):146-160, 1972.
[41 R.E. Tarjan.

Data Stru tures and Network Algorithms.

[42 V. Vazirani.

Approximation Algorithms.

SIAM, 1983.

Springer, 2001.

[43 S. Warshall. A Theorem on Boolean Matri es.

Journal of the ACM,

9(1):11-12, 1962.

152

           .

,   ,   -

,   (Master Theorem). 


  , 

A.1

T (1) = (1)  .

   
   .

, 

 :

T (n) =

2 T (n=2) + n
2

n = 2k k  2
n = 2

(A.1)

n 2    
n=2 .
 

  :

T (n) = n + 2 T (n=2)
= n + 2 n=2 + 22 T (n=4)
= n + 2 n=2 + 22 n=22 + 24 T (n=23 )
.
.
.

= n + 2 n=2 + 22 n=22 +    + 2i 1 n=2i 1 + 2i T (n=2i )


= n i + 2i T (n=2i )


i = log n 1  ,   


, T (n) = n log n.

n=2log n 1 = 2.

  , 
.

   

 :     (.
  ),   
   .  
  

153

154

A.

n2

n2

+
(n/2)2

n2/2

(n/2)2

log n

+
(n/4)2

(n/4)2 (n/4)2

n2/4

(n/4)2

+
.
.
.

.
.
.

: (n2)
A.1:   

T (n) = 2 T (n=2) + n2 .

   

,    
(..  (A.1)  

n  2).

   


 

(re ursion tree).    

      .


T (n) = 2 T (n=2) + n2 .

   

  A.1.    

(    0)

,   

log
Xn
i=0

n2 =2i = n2

i=0

1 1=2 2 2

k.

log n (   log n + 1 ).

log
Xn

  

n2 =2i .

k+1

< 2n2 = (n2 )


  

A.1.     

T (n) = 4 T (n=2) + n T (1) = 1.

log n + 1  n 
i
i, i = 0; : : : ; log n + 1,  i 2 n. ,

.  
.

T (n) =

log
Xn
i=0

2i n = n

log
Xn
i=0

  


1 2

2k+1

1.

2i = n(2n 1) = (n2 )

k+1

  

ut

A.2.  

155

A.2.       :

T (n) =

T (n=2) + 1
1

n = 2k k  1
n = 1

.  

i = log n,
T (n) = log n + 1.


A.2

  

(A.2)

T (n) = i + T (n=2i ).

n=2log n = 1.

ut

 

     
  .
,    
 .
, 

T (1) = (1).

T (n) = 2 T (n=2) + (n)

    

(n log n).


    T (n) = (n log n).
   n 
   T (n).  1 ; 2 2 IR+  ``''  
1
(n)  .  

(A.1),  ,

1 (n=2) log(n=2)  T (n=2)  2 (n=2) log(n=2)


 

1 n log n  T (n)  2 n log n

,   , :

T (n)  2 1 (n=2) log(n=2) + 1 n = 1 n (log n 1) + 1 n = 1 n log n

T (n)  2 2 (n=2) log(n=2) + 2 n = 2 n (log n 1) + 2 n = 2 n log n


.  T (n) = (n log n).
A.2.1



, 

T (n) = 2 T ( n) + log n
m
m=2 ) +
T (1) = (1).  m = log n,  T (2 ) = 2 T (2
m.   T (2m ) S (m)  S (m) =
2 S (m=2) + m S (1) = (1).   
S (m) = (m log m).    ,
T (n) = (log n log log n).
1
T (n) = 2 T (n=2) + f (n)
f (n) = (n)

1 ; 2 2 IR+
1 n  f (n)  2 n
.

, 

, 

 

, 

 

. 
.

156

A.

A.3.    

T (1) = 1.
1.

T (n) = T (n 1) + 3.

2.

T (n) = T (n 1) + 2n.

3.

T (n) = 2 T (n=2) + n.

4.

T (n) = T (n=3) + 1.

5.

T (n) = T (n=2) + n.

6.

T (n) = 2 T (n 1) + 1.

.
1.

T (n) = 3(n 1) + 1.

2.

T (n) = 2n(n 1) + 1.

3.

T (n) = n log n.

4.

T (n) = log3 n.

5.

T (n) = 2n 1.

6.

T (n) = 2n 1.

A.3

 (Master Theorem)   


f (n)  .

T (n) = a T (n=b) + f (n), a b 

   :

1.

f (n) = O(nlogb a " )  " > 0,  T (n) = (nlogb a ).

2.

f (n) = (nlogb a ),  T (n) = (nlogb a log n).

f (n) =
(nlogb a+" )  " > 0,  n0
 n  n0 , a f (n=b) < f (n),  T (n) = (f (n)).

3.

2 IN



     ,   

f (n) nlogb a (. )   .   ,
"
f (n)  (.    n )
logb a .   ,  f (n) nlogb a 
 n
 .   , f (n)  
nlogb a  a f (n=b) < f (n)   n. 

A.3. 

157

f (n)    

.

 ,  T (n) = 9 T (n=3) + n. a = 9, b = 3,
nlogb a = nlog3 9 = n2 . f (n) = n,     
2
T (n) = (n ).
 ,  T (n) = T (2n=3) + 1. a = 1, b = 3=2,
logb a = nlog3=2 1 = n0 = 1 = f (n).    
n
 T (n) = (log n).
logb a =
 T (n) = 3 T (n=4) + n log n a = 3, b = 4, n
nlog4 3  n0:793 . f (n) = n log n 3 f (n=4) < f (n)   
  T (n) = (n log n).
 ,  T (n) = 2 T (n=2) + n log n. logb a = nlog2 2 = n
    n

  f (n) = n log n.    
2
,  T (n) = (n log n).  


 .

A.4.     :
1.

T (n) = 6 T (n=5) + n log6 n.

2.

T (n) = 5 T (n=6) + n.

3.

T (n) = 3 T (n=9) + n.

4.

T (n) = T (n 1) + n2 .

5.

T (n) = T (n=5) + T (7n=10) + 3n.

6.

T (n) = T (5n=9) + T (4n=9) + n.

.
1.

T (n) = (nlog5 6 ).

2.

T (n) = (n).

3.

T (n) = ( n log n).

4.

T (n) = (n3 ).

5.

T (n) = (n).

6.

T (n) = (n log n).

158

A.

B  

 (, ) 
 

 

(spanning tree)  .

 :  ,  , ,
, - .

B.1.

  .

   

 ( ),    (
 ``''  ).
 ,
. , 

 

   . 

 .

  .  
 

.   , 

 (  )

    ( 
). ,    

ut

   .

 5.1,   

n n 1 .

,      .
  B.1   
 .

  

- ()   
  .   
   .

B.1

 
 

G.

G(V; E ) n m ,  T (V; ET ) 

   

T ,  G

T (  T ).  5.1.(6),
T (  E n ET ) 
 
 G  


.

159

160

B.  

E n ET m n + 1 ( 
( hords)  T ), m
n + 1   G
T.

  .
 


( ut set).

- 

   

T,

 

T (  T  ). 
5.1.(3),  T  . 
e 2 ET  T ,  V1 V2     T n e
(.     e).  (V1 ; V2 ) 
    V1   V2 . , e 2 (V1 ; V2 )
 (V1 ; V2 )     G. 
    
 G  
 T .  ET n
1 , n 1 
  G   .


,   ( )  
.      ( )
   

G   

 ( ). ,    
( ) 

n 1 ).

n m m n + 1

B.2.
.

  .

   

 .

 

``'' ``''  .

, 

``''    
``''.

"k = k

 ``''  ``''

   .  
   

"k + k = 2"k , .

ut

T 0   ()  G.
0
0
0
0
0
e 2 T n T , e 2 T n T ,    (T + e) n e  
 G.
B.1. 

T 0 + e  e. 
e0 2 T 0    T .  e0  
T  e  .  e0 
0
0
 . ,  (T + e) n e    G.
ut
.

2 T n T0

, 

T T 0   ()  G.
0
0
0
0
e 2 T n T , e 2 T n T ,    (T n e) + e  
B.2. 

G.

B.1.

. 

e  T

161

  . 

  .

0
 T

S V n S

e ,

0
0
e 2 T  S  V n S (
0
0
, e   (S; V n S )). e  T  
0
 . ,  e  T n e   
(T n e) + e0    G.
ut

You might also like