Professional Documents
Culture Documents
443432
:
http://webcourse.cs.technion.ac.il/234247/Spring2012/
:
'
'
:
anton@kix.co.il
18.06.2012 0.1
:
http://my.kix.co.il/pub/bySemester/2012Spring/Algorithms/
1
213//31/21
" }
. -
, - () -. -
. -
, ' -
. -
:
"" -
.
Pseudo codeBFS -
BFS
""
-
""
| | :
) . O (V + E
BFS . s -
dist ( s, v ) - s - . v -
= ) . dist ( s, v
) dist ( s, v s v - " s -." v -
1
) ( u , v . dist ( s, v ) dist ( s, u ) + 1
u s - v . s - v -
" s -
u -
) ( u, v
. dist ( s, v ) dist ( s, u ) + 1 u . s -
2
] d [v ) d [v] dist ( s, v . v
.
.
enqueue
) d [v] dist ( s, v . v
: ) enqueue ( Q, s ) d [ s ] = 0 = dist ( s, s
= ] d [v v , s - .
: v - . u v
) d [u ] dist ( s, u
d [v] -
.
3
BFS Q } , {v1 ,..., vn
d [vr ] d [v1 ] + 1
] d [vi ] d [vi +1
3
.
) . ,
.(enqueue
4
vi - Q - , v j v j - ] . d [vi ] d [v j
:4
, -
.2
-
.1
( )
()
-
( )FIFO
] [
vi v j - ) 3 (.
vi - v j -
] d [v ) . (.
BFS ) G
( . s
BFS v s - ) . d [v] = dist ( s, v
v , s - v -
s - v v . v
v . d [v ] = d [u ] + 1
. v .
v , 4 ] , d [v] d [u
.
v . , u
v , 3 , d [v] d [u ] + 1 .
v ) . d [v] = dist ( s, v .
] u = p[v d [v] = d [u ] + 1 dist ( s, v ) = dist ( s, u ) + 1
s - v -" p[v ] - v -
s -. p[v] -
2
293//31/21
) ( v, u
u . u -
.
,BFS / .
DFS
: ) G = (V , E s. V -
: v V ] d [v . v
d [v] : p[v] - v.
DFS:
(1) for all v in V
d[v] = 0
p[v] = nil
mark all edges unused
i = 0
v = s
(2) i = i + 1
d[v] = i
(3) while there are unused (v,u) do
)choose unused (v,u
mark (v,u) used
if d[u] = 0 then
p[u] = v
v = u
v = u
i = i + 1
d[v] = i
(4) if p[v] != nil then
]v = p[v
)goto (3
else
if there is u with d[u] = 0 then
v = u
)goto (2
(5) stop
] d [v ] i , d [v.
) ,
(.
DFS . s -
DFS .
predecessor subgraph
: , G ) ( u , v v
) . ( u , v
: ) ( u , v u v DFS
) (.
: . G ) ( u , v u - v
.DFS
) :(cross G
DFS , DFS.
DFS
color[u ] - white.gray -
f [u ] - . u -
adj[u ] - BFS . u
DFS(G):
u in V do
for each
color[u] = white
p[u] = nil
i = 0
for each u in V do
)if color[u] = white then DFS_VISIT(u
DFS_VISIT(u):
color[u] = gray
i = i + 1
d[u] = i
for each v in adj(u) do
if color[v] = white then
p[v] = u
)DFS_VISIT(v
i = i + 1
f[u] = i
10
f [u ] : . 2
.
DFS
-
| | -
) -
( ' DFS_VISIT - .
: DFS_VISIT ( "") .
DFS_VISIT ' , :DFS_VISIT
-
| |
" | |
|
| |
DFS
.1 G ,
.DFS_VISIT
.2 v u DFS v u
f [u ] -
.3 v" (v
v -" ) . v
) )
((
) . u v ( y ( xx ) y ) v u ( w ( zz ) w
1
, G u , v
:
11
.1 ]] [ d [u ], f [u [ d [v], f [v]] - ,
/ . u, v
.2 ]] [ d [u ], f [u ]] , [ d [v], f [v u v
.DFS
.3 ]] [ d [v], f [v [ d [u ], f [u ]] - u v
.DFS
:
: d [u ] < d [v ] . 2 :
- d [v] < f [u ] .a v u ""
. u - v . u v -
u - ] f [v ] < f [u" , [ d [v], f [v]] [ d [u ], f [u ]] -
).(3
f [u ] < d [v] .b
u . v -
- d [v] < d [u ] .
2
v u DFS / G"
] (*) d [u ] < d [v ] < f [v ] < f [u
1 )*( ) (3 v u
.DFS
12
3
DFS G / , v u" ] , d [u
u , u - v - .
: v . u w u - v - w -
, u , d [ w] > d [u ] 2 ] d [u w ,
u - v - .
: ] d [u u - v - v
. u v -
. u w v . w , u
] ) f [ w] f [u w = u ( .:
13
3
163//31/21
-( . - )
.
, .
?
} -
|)
14
({
)
)
) :
,DFS :
( -)
DFS -
)
1
. -
: ,
: -
. -
2 DFS :
:
DFS -.
. -
. -
.DFS -
( ) :2
DFS -.
DFS
)
DFS : (
- ( . - - -) -
15
1 DFS
1 ,DFS
: ,
. -
,DFS
. - ,2
, -
- .
).
:
:
( -
, ,
.
) :
-
. ,
( DFS - ).
(
.
16
() .
).
( -
, :
( DFS - ) , )
-. -
)2 DFS
)1 DFS , ,when possible
() .
)/ DFS.
:
DFS -.
( ).
17
4
/13/431/21
| |
| |
DFS -.
DFS - . ,
( DFS -) .
: DFS -.
DFS - -
, T -
-
.
-
( DFS -).
: T -
.1
DFS -
DFS -
DFS - ."
, -
. -
1 .
:
DFS - ( -
18
).
-
:
.
.
:1
,1 ,DFS DFS ,
.
, -
,DFS -
:
.
)
(
DFS -
, ()
,-
)
.
(
( ()
. - -
:
, . -
,
.
,
.
19
, .
"
: ( ) , -
. , ( ).
" , " ( )
, .
: :
: ,
.
.
( ) -
(
, )
:
, -
"
".
20
:
}
| {
, -.
, - . -
, .
-
,
, -
21
5
263/431/21
" T -
T .2 .
T .1 .
( ) ,
( ).
( .
:
) .
.
( ) , -
)
.
( - -).
.
. ,
-
)
.
, ,
.
(
).
( " ).
22
Prim
.2 } {
:
.1
.2
.1
-
.
{ } . -
.
: -
, Prim .
Prim ,
.
Prim
-
, Prim
| | .
| | " .
. -
. -
: -
)
.
) . -
" | |
| |
23
Kruskal
.2 .
.1 :
.
} {
} {
, -
, - .
. . -
( )
:
} | {
-.
, , .
: " ( ).
. -
} {
, ,
.
Union Find -
: -
-
, - ( )
- .
{ } -
? 3
2 | |
" | | :
| |
| |
| |
| |
24
= 3 =
.'
. -
? -
?
-
. -
, - -
: -
-. -
25
, - -
.
. -
-
6
//3/431/21
/
: ) , G = (V , E'
, w : E . s
: v V s . dist ( s, v ) -
)"(
d : V :
d (s) = 0
) ) . d ( v ) dist ( s, v (.
)relaxation (u,v
) d ( v ) > d ( u ) + w ( u, v ) . d ( v ) d ( u ) + w ( u, v
,
. parent ( v ) u
'
.
26
. "
. ) ( u , v ) d ( v ) > d ( u ) + w ( u, v ) . ( u , v
}{
d : V" . 2 :
. s d "
) . ( u, v
. ) ( u , v ) d ( v ) d ( u ) + w ( u , v v
) . d ( v ) = dist ( s, v
. , u v ) d ( u ,
) d ( u ) dist ( s, u . ) d ( v
.v ) d ( v ,
) d ( v ) d ( u ) + w ( u , v ) d ( s, u ) + w ( u , v ) dist ( s, v
s v
, x ) ( u , v ) . d ( x ) dist ( s, x
. d ( s ) = 0 - ) d ( s
, v = s ) , d ( s ) d ( u ) + w ( s, u d ( s ) < 0
. dist ( s, s ) d ( s ) < 0
." v ) . dist ( s, v ) = d ( v ) d ( v ) dist ( s, v ) -
d"( , ) . d ( v ) dist ( s, v
v ) , d ( v ) > dist ( s, v s - v -
27
dist p p s - .
dist p ( s, s ) = d ( s ) = 0
M
) dist p ( s, v ) < d ( v
i
) dist p ( s, ui ) = d ( ui
) dist p ( s, ui +1 ) < d ( ui +1
) ( ui , ui +1 .
-
: ) G = (V , E , )
( , . s V
: . dist ( s, v ) = d ( v ) - v
:
v V ) d ( v
. d ( s ) 0
i = 1 V 1
) ( u , v
) ( u, v
) O (V ) + O (VE ) = O (VE
28
'
, v s - v - k k
) . d ( v ) = dist ( s, v
' . k k = 0 s ' 0
) ( . d ( s ) = 0 = dist ( s, s ) -
: k . k + 1 v
s - v - k + 1.
) ( u , v , k + 1 s - . v - k
( u , v ) -
s -) u -
( ,
' k ) . d ( u ) = dist ( s, u k + 1 -
) ) ( u , v ,( u
) d ( v ) d ( u ) + w ( u , v ) = dist ( s, u ) + w ( u , v ) = dist ( s, v
) (u,v
s v
'
G - s - v
s - v - V 1.
,
V 1.
29
"
' s - V 1,
' V 1 ".
- , '
)(Dijkstra
: , . s
: d ( v ) = dist ( s, v ) - v
:
v V ) , d ( v d ( s ) 0
Q ) Q V ) - d ( v ) dist ( s, v
.( s Q
Q
Q - u ) d ( u.
u Q - ) ( u , v ) . ( u , v
O (V 2 ) -
O ( E log V ) -
) ( u , v
) , d ( v ) d ( u ) + w ( u , v
. :
'
30
) d ( u ) d ( u u . Q - v
) . d (u ) d (v
u d ( u ) , Q - ) d ( u ) d ( v
u - . u , v
v
.
: u v -
. d ( u ) = d ( u1 ) d ( u2 ) L d ( uk ) = d ( v ) -
'
) ( u, v
) , d ( v ) d ( u ) + w ( u , v
d ( v ) , v ) ) d ( v
( z v ) d ( z ) d ( v-
-
) d ( z ) + w ( z, v ) d ( z ) d ( v
'
. :
) d ( v ) d ( u ) + w ( u , v ) . d ( v ) d ( u ) + w ( u , v
31
' ( ')
-
32
7
07/05/2012
.
" .
, ,
.
:
9
9
12
11
10
33
.2
.1 : ,
} {
.
, -
pseudo code
.
.
Greedy Activity Selector
} {
:
" .
: () " ,
" .| :
.
| , -
- ( ) .
- - - . -
(
. -
, ).
-
, . -
34
,
.
.i
.ii
.iii
. . -
-
( ).
, , -
).
, - ( -
( ).
| | -
|
|
. -
:
|
.
, .
prefix code ) (prefix
.
.prefix code
35
: .
prefix code
, ,
.
prefix codes , .
0 , , 2 - .
:
. -
":
.
" , .
, . | | ,
| |
36
| | .
| | .
:
.
, . .
| |
37
Huffman :
38
243/5321
Huffman
| |
} {
:
:1
:
. -
39
2 -
(
}
:2
( ).
:3
prefix
: -
. -
. -
, -
( )
. -" , -
)
, ,1-
40
. - ,
: :
) ( .
. ,
/
-
, --
prefix-
"
( ) .
-"
. -
2 :
) (
) ( ,
) (
.
) (
) (
) ".
" , | | -
41
| |
( ).
{
}
- .
"
} :
{
.
/ .
|{
)2 -
)1 -
( - ,) - -
:
, :
42
.2
.a
.b
.c
.d
.1-
.a
(
)
{ } .i
.ii
)
)
(
(
.b
.i
.ii
./
:
43
44
( )
:1
"
- ,
:
)2 ( ) .
)1
)/
.
9
12./6.21
: ( ).
:
:
-
45
.
?
,:
)
"
,
-
}
:
( )
: , .
46
"
: .
:
| | - Bellman-Ford
:
| |
- 1
{.
{
,
)
( )
- 2
-
}
. -
47
( {
| |
| |.
/ - -
-
.
" -
| |
| |
, -
.
)
( : )
)2
) ./
-
-
( .
, )
- -
.
)1
(
-
).
. - - }
{.
( -
).
--
}
{.
- }
{.
-
.
,
, - - -
}
.
{ . :
48
. -
- -
}
-
{
49
{
-
.
-
01
18./5.21
Sequence Alignment
: ( ocurrance ).
.occurrence
: .
o_currance occurrence .
o_ccur_anceoccurre_nce .
,
( )alignment
.2
.1
./ -
. ,
. .
. -
:
.2
.1
.
( ) -
50
-
(
:
)
( {
: , : .
( )
51
.
{
- "
".
3 .
( )
-
- :
52
-
-
: - ?
sequence alignment -
.
. (
).
. ( )transpose
:
:
, -
transpose .
: ?
] [ 3 .divide and conquer
().
.2
)
.1 :
-
.i
) -
.ii
) -
(
(
-
3 )
53
(.
:
?
:
( : , )
54
00
/63/631/21
, .
() , , .
?
?
)2
)1
)/
)4
()
()
)2 :
-
-
-
-
)1 :
" | |
55
| |
15
12
3
5
10
10
7/7
10/12
3/3
0/5
10/15
4/4
7/10
7/10
56
--
, .14
( "
"
( ).
_
S
| |
57
.| | -
.| | -
, - ( ) .
, .
":
.
2
| |.
).
| |
| |
( S
:
( )
-
.
, - ,
58
u
1/2
2/2
1/1
2/2
1/2
v
)1( :
)2( :
()1
:
u
u
2
t
2/2
2
1
1/2
1/1
1/2
2/2
v
59
1/2
v
1
u
1/2
t
1/2
s
0/1
1/2
1/2
v
1/2
0/2
( "" )
60
1/1
0/2
e
u
e
v
eR
)-
(.
3
:
)
) | |
|
| | |
61
02
223/631/21
:/
)2 .
:
, -
)+(v
:
. -
)-(v
)-(v
)+(v
Gf
f
G
f
62
)-
( -
:
. -
( -
)1 :
:
,
,
| |.
-
-
-
-
| |
63
))-
(.
(.
Ford Fulkerson
)2
)1 -
.a
--
.b
--
:)/
.
(
) -
.c
.
min-cut-max-flow
. :
-
)2
-
)1-
)/
| |
)-
- .0 -
(
, -
) -
( , ,/ -
| |
64
| |
- .
| | -
_
S
-
-
-
-.
()
. -
.
:
).
- - . -
-
..
-
).
- - . -
-
..
-
65
S
}
_
S
s
}
| | -
| | -
. -
|
| |
| ,1
?
| | :
| |
| |
. pre-processing | |
| | .
| |
.
, , Ford
Fulkerson .
, , .
.
66
:
u
M
M
v
, Ford Fulkerson |
" | -
| | |
| .
. , .
" |
| |
( .)dijekstra
( ) -
.
67
- Edwards Karp
03
283/631/21
Ford Fulkerson
.
| |
Edmond Karp
.2 : .
.1 - - :
() .
.a-
-
| | | |
:
1
.
( )
} {
( )
2 MagicKarp | | | |
! ,
( . - ,
).
:1
, .
| |
68
,
(.)2
2 -
-
.
-
.
:
. - ,
(.)1
(. )/
:2
:
, ,
, -
. -
- , -
-
" ,
| |
| |
:EK
,
| |.
| | | |
| |
( -
69
:| | -
).
perfect matching-
).
).
| :
( . -
| | (
,
}
.
{
{}
( : , ).
3 -
| | | | -
,
- .
, -
| |.
:
-
( )2 - ,
-
-
(
)
(
)
(
)
-
-
:
.
.
- ,
| |
.
} {
70
( )1
- 2
. - ,
- .2 - " -".
.
"" . -
,
: -
.2
| |
Ford Fulkerson -
}| | | |{
: | |
." | | | | .
71
| |
Hall
( ) . -
Hall
|
| | |.
| | -
| |
:
:I ,
|
)*(
:II
{|
|} |
| |
.
|
| | . . -
( )/ , ( !) :
.
-
-
/ , -
, , - -
min-cut-max-flow - | |
-
.| | -
( } {
{ } -
).
S
72
-
.
.
,
|
| |
| |
"
| |
| |
| |
||
-
-
| | -
| |
73