Sunteți pe pagina 1din 6

CALCULABILITATE I COMPLEXITATE

CULEGERE DE PROBLEME
1
2

3
4

S se determine complexitatea timp i spaiu pentru MT care calculeaz funcia


f:N N , definit prin: f(n)=2n+3.
S se determine complexitatea timp i spaiu pentru MT care calculeaz funcia
f:N N definit prin:
a) f(n)=1, dac n=par si f(n)=0, altfel
b) f(n)=n/2, dac n=par si f(n)=(n+1)/2, altfel
c) f(n)=n/2, dac n=par si f(n)=3n+1, altfel (funcia lui Collatz)
d) f(n)=1, dac n=prim si f(n)=0, altfel
e) f(n)=n2. Obs. Necesitatea utilizarii mai multor tipuri de marcaje
f) f(n)=an
S se determine complexitatea timp i spaiu pentru MT care calculeaz funcia
f:NN, f(n)=n mod 3.
S se determine complexitatea timp i spaiu pentru MT care verific dac un
numr natural n este divizibil cu 3 sau nu.

S se determine complexitatea timp i spaiu pentru MT care verific dac un


numr natural n este numar Mersenne sau nu.
Obs. n = numar Mersenne k N astfel incat n = 2k-1

S se determine complexitatea timp i spaiu pentru MT care calculeaz funcia


f:N2 N definit prin:
a) f(n,k)=1, dac n>k si f(n,k)=0, altfel
b) f(n,k)=1, dac n|k si f(n,k)=0, altfel
c) f(n,k)=nk
S se construiasc o MT care s calculeze funcia f:NN, definit prin:
a) f(n)= log2n
b) f(n)= log3n
b) f(n)= n(1/2)
S se construiasc MT decidenta pentru limbajul
L={ an / n>0, 5 | 3n+1 si 7 | log3n }
i s i se determine complexitatea timp i spatiu.

S se determine complexitatea timp i spaiu pentru MT care calculeaz funcia


f:{a.b}* N definit prin:
a) f(w)=#a(w)
b) f(w)=max{#a(w ),#b(w)}

a) S se construiasc o MT care s calculeze funcia f:{0,1}*{0,1}* definit


prin: f(w)=w unde wi=1-wi, 1i|w|,
b) S se contruiasc o MT decidenta pentru limbajul
L={ww / w{0,1}*, wi=1-wi, 1i|w|}.
Fie w{0,1}* si f: {0,1}* {0,1}*, f(w) = wR.
a) Sa se construiasca o MT care sa simuleze calculul efectuat de f pe o intrare
oarecare w.
b) Sa se construiasca un ALM care sa simuleze calculul efectuat de f pe o
intrare oarecare w.
c) Sa se calculeze complexitatea timp a MT
S se determine complexitatea timp a MT decidente pentru limbajele:
a) L = {w {0,1}* / n N : w=0n1n }
b) L = {w {0,1}* / #0(w)=#1(w)}
c) L = {w {0,1}* / #0(w) #1(w)}
d) L = {w {0,1}* / #0(w) = 2 . #1(w)}
e) L = {w {0,1}* / #0(w) = 2 . #1(w)+3}
f) L = {w {0,1}* / #0(w)<#1(w)}
g) L = {w {a,b}* / nN: #a(w) n #b(w)}
h) L = {w {a,b}* / nN: #a(w) < n < #b(w)}
a) S se construiasc o MT decidenta pentru limbajul format din cuvinte binare
al caror numr de simboluri 0 difer de dublul numrului de simboluri 1:
L = {w {0,1}* / |w|02|w|1}
b) S se determine complexitatea timp a acestei maini.

10

11

12

13
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)

S se construiasc MT decidente pentru urmtoarele limbaje i s li se


calculeze complexitatea timp:
a) L = { w{a,b}* / 5 | #a(w) }.
b) L = { w{a,b}* / #a(w) | #b(w) }.
c) L = {w {a,b}* / 3 | #a(w) si 5 | #b(w)}
d) L = {w { a,b,c }* / 3#a(w)=2#b(w) si 2 | #c(w)}
e) L = { w {a.}* / n,mN, m|n}
S se construiasc MT decidente pentru urmtoarele limbaje i s se
demonstreze c ele se afl in clasa P:
L={anbn / nN}
L={anbn+1 / nN}
L={anbm / n,mN, nm}
L={anbm / n,mN, n<m}
L={anbncn / nN}
L={anbmcn / n,mN}
L={anbm / n,mN, m=2n}
L={anbmcs / n,m,sN, s=n+m}
L={anbmcp / n,m,pN, p=n x m}
L={anbmc2(n+m) / n,mN

k)
l)
m)
n)
o)
p)
q)
r)
s)
t)
u)
14

15
a)
b)
c)
16
a)
b)
c)
d)
17

18

19

L={a2nbncm / n,mN}
L={anbman / n,mN}
L={anbm / n,mN, n<m}
L={anbm / n,mN, nm2n}
L={anbm / n,mN, m|n}
L={anbm / n,mN, (n,m)=1}
L={anbmanbm / n,mN}
L={anbmanbm / n,mN, m|n}
L={anbmcs / n,m,sN, n=2m sau m=2s}
L={anbnanbn / n,mN}
L={anbnambm / n,mN}
S se construiasc MT decidente pentru urmtoarele limbaje i s se
demonstreze c ele se afl in clasa P:
L = {w {a,b}* / #b(w)= log2(#a(w)) }
S se construiasc MT decidente pentru urmtoarele limbaje i s li se
determine complexitatea timp i spatiu:
L = {w&w / w *}
L = {an&ak / n,kN, n>k}
L = {an&ak / n,kN, n|k}
S se construiasc MT decidente pentru urmtoarele limbaje i s li se
determine complexitatea timp i spatiu:
L = {w + / w=palindrom}
L = {w + / {0.1}+: w=r, unde r=mi()}
L = {w + / {0.1}+: w=r, unde r=mi()}
L = {w + / {0.1}+: w=r, unde r=mi()}
Sa se construiasc MT decidente pentru urmatoarele limbaje i s li se
determine complexitatea timp i spatiu:
a) L = {w{a,b,c}+ | u{a,b,c}*: w=uu }
b) L = {w{a,b,c}+ | u{a,b,c}*: w=uuu }
c) L = {w{a,b,c}+ | u{a,b,c}*: w=uuuu }
d) L = {w{a,b,c}+ | nu exista u{a,b,c}*: w=uu }
Sa se rezolve urmatoarele cerinte:
i) sa se construiasca o MT care sa calculeze
f:{0.1}*{0.1}*, f(a)=, unde: k=1, daca ak=0 si k=0, daca ak=1, 1i|a|;
ii) sa se construiasca o MT decidenta pentru limbajul:
L = {a{0,1}* / k=1, daca ak=0 si k=0, daca ak=1, 1i|a|}
Fie ={a,b} si L: L={ w* / nN: |w|=2n }; definim
f:LL, f(w)=w, unde w= daca w= si ||=||=|w|/2
Sa se rezolve urmatoarele cerinte:
i) sa se construiasca o MT care sa calculeze
f:{0.1}*{0.1}*, f(a)=, unde: k=1, daca ak=0 si k=0, daca ak=1, 1i|a|;
ii) sa se construiasca o MT decidenta pentru limbajul:

L = {a{0,1}* / k=1, daca ak=0 si k=0, daca ak=1, 1i|a|}

20

21

S se construiasc MT decidente pentru urmatoarele limbaje i s li se


determine complexitatea timp i spatiu:
a) L={ &u&w& / u,w*, |u|=|w|, i 1i|u|: uiwi }
b) L={ &w1&w2&&wn& / nN, 1in: wi* i 1ikn: wiwk }
S se construiasc MT decidenta pentru limbajul
L={ uu / {0,1}+, u{a,b,c}* }
i s i se determine complexitatea timp i spatiu

EXEMPLU DE REZOLVARE
Problema 1
Fie ={0,1}.
a) Sa se calculeze complexitatea timp pentru calcularea functiei f.
f: N N , f(n)=2n+3.
b) Sa se construiasc o MT care sa decida asupra limbajului
L = {w{a,b,c} | u{a,b,c}: w=uu }
i sa se determine complexitatea timp a acesteia.
Solutie
a) Respectarea formalismului TM
Stil
Utilizam o TM determinista cu 1! band
Exemplu: pt n=4 =>f(4)=2x4+3=11
n=11111 => f(n)= 111111111111
Continutul benzii dupa terminarea calculului:
11111#111111111111
M1 = "Fie secventa de intrare u (consta din n+1 simboluri de 1):
1. Se scaneaza banda i daca apar simboluri diferite de 1, M1 respinge.
2. Se depune simbolul # in prima celula libera de pe band i se aduce
cursorul in extremitatea stang a benzii.
3. Atat timp cat simbolul curent citit nu este #, se executa P4 i P5:
4. Se marcheaz simbolul curent
5. Se depun 2 simboluri 1 in primele 2 celule libere de pe band.
6. Se depun inc 2 simboluri 1 in primele 2 celule libere de pe band.
7. M1 accepta."
Corectitudinea este evidenta: de mentionat ca la Pasul 6 se depun doar 2
simboluri 1 i nu 3 pt ca deja aveam unul in plus de la dublarea intrarii (4
este codificat prin 5 simboluri 1).
Complexitatea M1 se calculeaza astfel (nu se includ revenirile cursorului):
Etapa
Nr.pasi
Nr.executii/Implementar
Complexitate
e
1
n
1
O(n)
2
1
1
O(1)
3,4,5
3
n
O(n)
6
2
1
O(1)
7
1
1
O(1)
Complexitatea M1
O(n)
b) Respectarea formalismului TM
Stil
Utilizam o TM cu 2 benzi, notate cu B1 i B2.
Exemple: , abcabc, aa, abab, accbaccb, abbaabba L

Pcte
1
2
2

1
2
2

Contraexemple: a,b,c, ab, bcb, aaaaa L.


Reprezentare grafica a modului de lucru a TM
M2 = "Fie secventa de intrare w:
1. Se scaneaza B1 i, daca apar simboluri diferite de a,b,c, M2 respinge.
2. Atat timp cat exista simboluri nemarcate pe B1, se executa P3,P4.
3. Se marcheaz primul simbol nemarcat din extremitatea stanga
4. Se mut pe B2 primul simbol nemarcat din extremitatea dreapt;
dac nu exist, atunci M2 respinge (|w|=nr.impar).
5. Atat timp cat exista simboluri marcate pe B1, se executa P6,P7.
6. Se demarcheaz primul simbol marcat din extremitatea stanga
7. Se compar acest simbol cu primul simbol nemarcat de pe B2,
incepnd din extremitatea dreapt. Dac cele 2 simboluri nu coincid,
atunci M2 respinge; altfel se marcheaz simbolul curent de pe B2.
8. M2 accepta."
Alte solutii: apelul TM care verifica paritatea lungimii w.
TM cu o singura banda (cu/fara apelul TM pt paritate)
etc.

Alt soluie: se utilizea o TM cu 1! band; se depune un # in prima celul


liber i se mut "a 2a jumatate" a w dup # (vom avea tot mi(u) dupa #);
marcarea i demarcarea simbolurilor se face la fel.
Alt soluie: se apeleaz inti TM care verific paritatea lungimii cuvntului
de intrare; dac aceasta respinge/accept atunci i M2 respinge/continu.
Corectitudinea:
daca |w| este un numar impar, atunci M2 respinge, cf. Pasului 4;
daca |w| este un numr par i dac exist cel putin un element din a 2a
jumatate a cuvantului care difer de corespondentul sau din prima
jumatate, atunci M2 respinge, cf. pasului 7;
daca |w| este un numr par i dac toate elementele din a 2a jumatate a
cuvantului coincid cu corespondentul lor din prima jumatate, atunci M2
accept, cf. pasului 8.
Complexitatea M2 se calculeaza astfel:
Etapa
1
2,3,4
5,6,7
8
Complexitatea M2

Nr.pasi
n
2
3
1

Nr.executii/Implementar
e
1
n/2
n/2
1

Complexitatea timp: O(n2)

Complexitate
O(n)
O(n)
O(n)
O(1)
O(n)