Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
1
3
nSPACEL log
nNSPACENL log
TM space-by decided | ticdeterminisntOLLntSPACE
TM non space- by decided | ticdeterminisntOLLntNSPACE
k
knSPACEPSPACE
4
5
?
6
8
9
?
10
11
12
13
?
14
15
1
2
3
4
5
617
U d/2 W d/2 V
18Complexity
©D.Moshkovits
(a,b,c)=Is there a path from a to b, that takes no morethan c steps.
3Log2(d)
1
4
32
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
(1,4,3)(1,4,3)(1,2,2)(1,4,3)(1,2,2)TRUE(1,4,3)(2,4,1)(1,4,3)(2,4,1)FALSE(1,4,3)(1,3,2)(1,4,3)(1,3,2)(1,2,1)(1,4,3)(1,3,2)(1,2,1)TRUE(1,4,3)(1,3,2)(2,3,1)(1,4,3)(1,3,2)(2,3,1)TRUE(1,4,3)(1,3,2)TRUE(1,4,3)(3,4,1)(1,4,3)(3,4,1)TRUE(1,4,3) TRUE
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
boolean PATH(a,b,d) {
if there is an edge from a to b then
return TRUE
else {
if (d=1) return FALSE
for every vertex v (not a,b) {
if PATH(a,v, d/2) and
PATH(v,b, d/2) then
return TRUE
}
return FALSE
}
}
19
20
Premise
21
22
Yes
No
23
24
25
Induction:
26
reachs(v, l)
1. length = l; u = s
2. while (length > 0) {3. if u = v return ‘YES’
4. else, for all (u’ V) {
5. if (u, u’) E nondeterministic switch:
5.1 u = u’; --length; break
5.2 continue}
}6. return ‘NO’
27Complexity
©D.Moshkovits
Takes up logarithmic space
This N.D. algorithm might never stop
CRs ( d )
1. count = 0
2. for all uV {3. countd-1 = 0
4. for all vV {5. nondeterministic switch:
5.1 if reach(v, d - 1) then ++countd-1 else fail
if (v,u) E then ++count; break5.2 continue
}
6. if countd-1 < CRs (d-1) fail
}
7.return count28Complexity
©D.Moshkovits
Recursive call!
Assume (v,v) E
CRs ( d
1. count = 0
2. for all uV {3. countd-1 = 0
4. for all vV {5. nondeterministic switch:
5.1 if reach(v, d - 1) then ++countd-1 else fail
if (v,u) E then ++count; break5.2 continue
}
6. if countd-1 < fail
}
7.return count29Complexity
©D.Moshkovits
Main Algorithm:
CRs
C = 1
for d = 1..|V|
C = CR(d, C)
return C
parameter
C
, C)
30
Variables` range is
31
32Complexity
©D.Moshkovits
xy[(xy)(xy)]
y[(0y)(0y)] y[(1y)(1y)]
(00)(00) (01)(01) (11)(11)(10)(10)
1 0 1
1
0
1
1
33
34
35
Space Complexity
Savitch’s Theorem
Log Space Reductions
Immerman’s Theorem
TQBF
Complexity Classes
L NL
PSPACE
Savitch, Walter
Immerman, Neil
Róbert Szelepcsényi