Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
aa:lab:2 [2023/10/20 14:52]
tpruteanu
aa:lab:2 [2025/10/14 10:42] (current)
dmihai
Line 1: Line 1:
-====== ​Computing ​====== +====== ​Notații asimptotice și analiză amortizată ​======
-/* +
-<note important>​ +
-Solutii: ​ https://​drive.google.com/​file/​d/​1Y6JV-pDyuvejx3g8KL6SpWzbp52VMWnY/​view?​usp=sharing +
-</​note>​ +
-*/+
  
-===== Mașina Turing =====+==== Notații asimptotice ​====
  
-După definiția de la curs, o mașină Turing poate fi caracterizată printr-un 6-tuplu: ​$ (Q, \Sigma, ​\Gamma, B, q_1, \delta)$, unde: +\Theta(f(n)) = \{ g: \mathbb{R}^{+} ​\rightarrow \mathbb{R}^{+}\ |\  
-    * $ Q $ e mulțimea stărilor interne +\begin{array}{l} 
-    * $ \Sigma $ e alfabetul de intrare (simboluri aflate pe bandă la începutul rulării) +\exists c_1c_2 \in \mathbb{R}^+\cr 
-    * $ \Gamma $ e alfabetul benzii (simboluri pe care le putem folosi în timpul rulării mașinii) +\exists n_0 \in \mathbb{N
-    * $ B $ e starea default a unei celule nescrise (**blank symbol**) ​  +\end{array}\  
-    * $ q_1 $ e starea inițială +suchthat\ \foralln \ge n_0,\ \ c_1f(n) \le g(n) \le c_2f(n) ​\}$
-    * $ \delta $ e funcția de tranzițiedefinită astfel: $ \delta: Q \times \Gamma \rightarrow (Q \cup \{Y, N, H\}\times \Gamma \times \{\leftarrow, -,\rightarrow\}$ +
-        * $ Y $ e starea de acceptare, când mașina ajunge în această stare, se oprește cu răspunsul „da” +
-        * $ N $ e starea de rejectare, când mașina ajunge în această stare, se oprește cu răspunsul „nu” +
-        * $ H $ e starea de terminare, când mașina ajunge în această stare, se oprește cu răspunsul format din conținutul benzii+
  
-===== Exerciții =====+{{:​aa:​lab:​theta_fn.png|}}
  
-1. Amintiți-vă mașina ''​isEven''​ de la curscare determină dacă un număr în baza 2 este par.+$ O(f(n)) = \{ g: \mathbb{R}^{+} \rightarrow \mathbb{R}^{+}\ |\  
 +\begin{array}{l} 
 +\exists c \in \mathbb{R}^+\cr 
 +\exists n_0 \in \mathbb{N} 
 +\end{array}\  
 +such\ that\ \forall\ n \ge n_0,\ \  
 +0 \le g(n) \le cf(n) \}$
  
-    * scrieți care sunt configurațiile prin care trece mașina pentru inputul100+{{:aa:​lab:​o_fn.png|}}
  
-    * scrieți care sunt configurațiile prin care trece mașina pentru inputul1011+$ \Omega(f(n)) = \{ g\mathbb{R}^{+} \rightarrow \mathbb{R}^{+}\ |\  
 +\begin{array}{l} 
 +\exists c \in \mathbb{R}^+\cr 
 +\exists n_0 \in \mathbb{N} 
 +\end{array}\  
 +such\ that\ \forall\ n \ge n_0,\ \  
 +0 \le cf(n) \le g(n) \}$
  
-/* +{{:aa:​lab:​omega_fn.png|}}
-<​hidden>​ +
-Soluție:+
  
-(ꞓ, q<​sub>​1</​sub>,​ 100) ⊢ (1, q<​sub>​1</​sub>,​ 00⊢ (10, q<​sub>​1</​sub>​, 0) ⊢ (100, q<​sub>​1</​sub>,​ □⊢ (10, q<sub>​2</​sub>,​ 0) ⊢ (10, Y, 0)+$ o(f(n)) = \{ g: \mathbb{R}^{+} \rightarrow \mathbb{R}^{+}\ |\  
 +\begin{array}{l} 
 +\forall c \in \mathbb{R}^+\cr 
 +\exists n_0 \in \mathbb{N} 
 +\end{array}\  
 +such\ that\ \forall\ n \ge n_0,\ \  
 +\le g(n) < cf(n\}$
  
-(ꞓ, q<​sub>​1</​sub>,​ 1011) ⊢ (1, q<​sub>​1</​sub>,​ 011⊢ (10, q<​sub>​1</​sub>,​ 11⊢  +$ \omega(f(n)) = \{ g: \mathbb{R}^{+} \rightarrow \mathbb{R}^{+}\ |\  
-(101q<​sub>​1</​sub>,​ 1) ⊢ (1011, q<​sub>​1</​sub>,​ □⊢ (101, q<sub>​2</​sub>,​ 1) ⊢ (101, N, 1) +\begin{array}{l} 
-</​hidden>​ +\forall c \in \mathbb{R}^+\cr 
-*/+\exists n_0 \in \mathbb{N} 
 +\end{array}\  
 +such\ that\ \forall\ n \ge n_0,\ \  
 +0 \le cf(n) < g(n\}$
  
-^  ^ 0 ^ 1 ^ $\square$ ^  +===== Syntactic sugars ======
-| $ q_1$ | $ q_1, 0, \rightarrow$ | $ q_1, 1, \rightarrow$ | $ q_2, \square, \leftarrow$ ​ |  +
-| $ q_2$ | $ Y, 0, -$ | $ N, 1, -$ | $ N, \square, -$  | +
  
-----+Notațiile asimptotice sunt adesea folosite pentru a ne referi la funcții arbitrare cu o anumită creștere. Pentru simplitate, putem scrie //expresii aritmetice//​ astfel:
  
-2. Scrieți primele 15 configurații prin care trece mașina de mai jos pentru inputul 1011. Ce observați?+$ f(n) = \Theta(n) + O(\log(n)) $
  
-^  ^ 0 ^ 1 ^ $\square$ ^  +Care trebuie citită: ​$math[\exists g \in \Theta(n)] și $math[\exists h \in O(\log(n))] a.î. $math[f(n) = g(n) + h(n),\ \forall n \in \mathbb{R}^{+}].
-| $ q_1$ | $ q_1, 1, \rightarrow$ | $ q_1, 0, \rightarrow| $ q_2, \square, ​\leftarrow$ ​ |  +
-| $ q_2$ | $ q_2, 1, \rightarrow| $ q_2, 0, \rightarrow$ | $ q_1, \square, ​\rightarrow$ | +
  
-/+Putem de asemenea scrie //ecuații//:
-<​hidden>​ +
-Soluție:+
  
 +$ \Theta(n^2) = O(n^2) + o(n)$
  
-(ꞓ, q<​sub>​1</​sub>,​ 1011⊢ (0q<​sub>​1</​sub>,​ 011) ⊢ (01, q<​sub>​1</​sub>,​ 11) ⊢ (010, q<​sub>​1</​sub>,​ 1) ⊢ (0100, q<​sub>​1</​sub>,​ □) ⊢ +Care ar trebui citite: $math[\forall f \in \Theta(n^2),\ \exists g \in O(n^2)] și $math[\exists h \in o(n)] a.î. $math[f(n= g(n+ h(n),\ \forall n \in \mathbb{R}^{+}].
-(010, q<​sub>​2</​sub>,​ 0⊢ (0101, q<​sub>​2</​sub>,​ □⊢ (0101□, q<​sub>​1</​sub>,​ □⊢ +
-(0101, q<​sub>​2</​sub>,​ □⊢ (0101□, q<​sub>​1</​sub>,​ □⊢ (0101q<​sub>​2</​sub>,​ □) ⊢ ...\\ \\+
  
-Se observă ​că mașina ciclează pentru acest input. +Observați ​că ecuațiile nu sunt simetrice ​și ar trebui citite de la stânga la dreaptaDe exemplu:
-</​hidden>​ +
-*/+
  
-----+$\Theta(n) = O(n)$
  
-3. Scriețprimele 15 configurații prin care trece mașina de mai jos pentru ​inputul 01.+Deșe adevărat că, pentru orice funcție $math[\Theta(n)] există o funcție egală în $math[O(n)],​ putem vedea că există funcții în $math[O(n)] ​pentru ​care nu există niciun corespondent în $math[\Theta(n)].
  
-^  ^ 0 ^ 1 ^ $\square$ ^  +Ca regulăfiecare notație asimptotică din stânga unui egalar trebui citită ca o funcție **cuantificată universal** ($math[\forall f]) din acea clasăiar fiecare notație asimptotică din dreapta unui egal ar trebui citită ca o funcție **cuantificată existențial** ​ ($math[\exists g]) din clasa respectivă.
-| $ q_1$ | $ q_10\rightarrow| $ q_1, 1, \rightarrow$ | $ q_21, \leftarrow$ ​ |  +
-q_2$ | $ q_2, 0, \leftarrow$ | $ q_2, 1, \leftarrow$ | $ q_1, 1, \rightarrow$ | +
  
-/* +$\left(\frac{\omega(n^2)}{\Theta(n)}\right) = \Omega(n) + o(n)$
-<​hidden>​ +
-Soluție:+
  
-(ꞓ, q<​sub>​1</​sub>,​ 01⊢ (0q<​sub>​1</​sub>,​ 1) ⊢ (01, q<​sub>​1</​sub>,​ □⊢ (0, q<​sub>​2</​sub>,​ 11⊢ (□, q<​sub>​2</​sub>,​ 011⊢ (□, q<​sub>​2</​sub>,​ □011 +$math[\forall f \in \omega(n^2)\ and\ 
-(1, q<​sub>​1</​sub>,​ 011⊢ (10q<​sub>​1</​sub>,​ 11) ⊢+ ​\forall g \in \Theta(n),\ \exists h \in \Omega(n)] și $math[\exists j \in o(n)]  a.î. 
 +$math[\left(\frac{f(n)}{g(n)}\right=  
 +h 
 +(n+ j(n),\ \forall n \in \mathbb{R}^{+}]
  
-⊢ (101, q<​sub>​1</​sub>,​ 1) ⊢ (1011, q<​sub>​1</​sub>,​ □) ⊢ (101, q<​sub>​2</​sub>,​ 11) ⊢ 
-(10, q<​sub>​2</​sub>,​ 111) ⊢ (1, q<​sub>​2</​sub>,​ 0111) ⊢ (□, q<​sub>​2</​sub>,​ 10111) ⊢ (□, q<​sub>​2</​sub>,​ □10111) ⊢ ...\\ \\ 
  
-Se observă că mașina ciclează pentru acest input. Ea va continua să scrie 1 la stânga și la dreapta pe bandă. +===== Exerciții =====
-</​hidden>​ +
-*/ +
- +
----- +
- +
-4. Considerăm mașinile Turing cu următorii membrii fixați: +
- +
-  * $ \Sigma ​\{X\}$ +
-  * $ \Gamma ​\{X, \square\}$ +
-  * $ B \square$ +
- +
-Știind că mașina trebuie să se oprească în starea $ H $ și are un numar **k** de stări ( $ |Q| k $ ), aflați numărul **maxim** de tranziții ce pot fi efectuate de această mașină atunci când banda de intrare este goală și definiți funcția de tranziție $ \delta $ pentru: +
- +
-    * o stare ( $ k 1 $ ) +
- +
-    * două stări ( $ k = 2 $ ) +
- +
-    * trei stări ( $ k = 3 $ ) +
- +
-<​hidden>​ +
-<​note>​ +
-**Hint:** soluția optimă pentru $ k = 1 $  este 2 tranziții, pentru $ k 2 $ este 6 tranziții, iar pentru $ k 3 $ este 21 tranziții. +
-</​note>​ +
-</​hidden>​ +
- +
-/* +
-<​hidden>​ +
- +
-Acest exercițiu face referire la conceptul de Busy Beaver, mai precis cazurile cu 2 simboluri și 1,2 sau 3 stări. Aceasta este o problemă interesantă și deschisă din perspectiva teoriei calculabilității și a complexității algoritmice. Pentru a găsi numărul maxim de tranziții și funcția de tranziție $ \delta$, este nevoie de o abordare exploratorie și de un efort considerabil de analiză pentru fiecare configurație specifică a mașinii. \\ \\  +
- +
-<​note>​ +
- +
-Mai multe informații găsiți aici: https://​en.wikipedia.org/​wiki/​Busy_beaver +
- +
-</​note>​ +
-</​hidden>​ +
-*/ +
- +
----- +
- +
-5. Arătați că, dacă $ f $ și $ g $ sunt două funcții //​computabile//,​ atunci și compunerea lor $ f \circ g$ e computabilă. +
- +
-/* +
-<​hidden>​ +
-Fie $ M_f$ o Mașină Turing care "​computează"​ $ f \Rightarrow \forall w, M_f[w] \rightarrow f(w)$ \\ \\ +
-Similar, fie $ M_g$ o Mașină Turing care "​computează"​ $ g \Rightarrow \forall w, M_g[w] \rightarrow g(w)$ \\ \\ +
- +
-Pentru a nu apărea probleme, este important ca $ M_f$ și $ M_g$ să nu aibă stări cu aceeași denumire. Construim $ M_{fg}$ care începe prin a rula tranzițiile din $ M_f$ pe inputul $ w \Rightarrow$ obținem pe bandă $ f(w)$. Folosind stări auxiliare, mutăm cursorul până la începutul rezultatului aflat pe bandă, lăsând mașina $ M_{fg}$ în configurația:​ $ (□, Stare-Inițială-M_g,​ f(w))$, care rulează apoi tranzițiile din $ M_g$ pe noul input, $ f(w)$. În final se obține $ g(f(w))$, adică $ (g \circ f)(w)$. +
-</​hidden>​ +
-*/ +
- +
----- +
- +
-6. Fie o definiție mai restrictivă de mașină Turing, unde singura diferență apare la: $ \delta: Q \times \Gamma \rightarrow (Q \cup \{Y, N, H\}) \times \Gamma \times \{\leftarrow,​\rightarrow\} $ +
- +
-Cu alte cuvinte, la fiecare tranziție, capul mașinii **trebuie** să se mute pe celula din stânga sau din dreapta, nu poate rămâne pe loc. +
- +
-Arătați că, oricare ar fi o mașină $ M $ conform definiției de la curs, există o mașină $ M' $ conform acestei definiții, astfel încât $ \forall w \in \Sigma^*, M[w] \equiv M'[w]$ (cele două mașini dau același răspuns indiferent de input). +
- +
-/* +
-<​hidden>​ +
-Trebuie să demonstrăm că putem echivala orice tranziție a mașinii $ M$ cu o tranziție sau un set de tranziții în cadrul mașinii $ M'$.\\ \\ +
- +
-Dacă mașina $ M$ are o tranziție care mută capul de citire la stânga sau la dreapta, atunci acea tranziție va arăta identic pentru mașina $ M'$, pentru că, în acest caz, nu există nici un fel de restricție. +
- +
-Pentru $ \delta M(q,​c) ​(q',​c',​dir), ​ dir \in \{\leftarrow,​ \rightarrow\}$,​ construim $ \delta M'​(q,​c) ​(q',​c',​dir)$.\\ \\ +
- +
-Dacă mașina $ M$ are o tranziție care nu modifică poziția capului de citire, putem simula acest comportament în cadrul mașinii $ M'$, mutând capul de citire la dreapta după care înapoi la stânga, trecând printr-o stare auxiliară. +
- +
-Pentru $ \delta M(q,c) = (q',​c',​-)$ construim $ \delta M'​(q,​c) = (q_{aux},​c',​\rightarrow)$ și $ \delta M'​(q_{aux},​x) = (q',​x,​\leftarrow)$,​ $ \forall x \in \Gamma$.  +
-</​hidden>​ +
-*/ +
- +
----- +
- +
-7. Fie o mașină Turing a cărei bandă constă în $ k $ //piste//. Fiecare celulă e împărțită pe orizontală în $ k$ porțiuni ce conțin fiecare câte un simbol. La începutul computației,​ simbolurile din input se află pe prima pistă (în fiecare celulă, pe prima porțiune), restul simbolurilor fiind $ B $. Capul de citire se află pe celula ce conține primul simbol din input. +
- +
-$ M = (Q, \Sigma, \Gamma, B, q_1, \delta)$, unde fiecare element al tuplului are aceeași semnificație ca până acum, în afară de: $ \delta: Q \times \Gamma^k \rightarrow (Q \cup \{Y, N, H\}) \times \Gamma^k \times \{\leftarrow,​-,​\rightarrow\} $ +
- +
-Cu alte cuvinte, la fiecare tranziție, capul mașinii citește simultan $ k $ simboluri și scrie $ k $ simboluri (în rest, ca și în definiția din curs, capul se mută apoi o celulă la stânga/​dreapta sau rămâne pe loc **pe toate pistele simultan**, iar mașina trece într-o nouă stare). +
-Arătați că oricare ar fi o masină $ M'$ conform acestei definiții, există o mașină $ M$ conform definiției de la curs, astfel încât $ \forall w \in \Sigma^*, M[w] \equiv M'​[w]$. +
- +
-/* +
-<​hidden>​ +
- +
-Soluția constă în a mapa fiecare tuplu $ t \in \Gamma ^k$ la un simbol din $ \Gamma'​$. Pentru a putea face acest lucru, $ \vert \Gamma ' \vert = \vert \Gamma \vert ^k$. \\ \\ +
- +
-Fie a și b simbolurile din $ \Gamma '$ la care se mapează tuplurile: $ (t_1,t_2 ... t_k)$, respectiv $ (t_1', t_2' ... t_k')$ din $ \Gamma ^k$. \\ \\ +
- +
-Construim $ \delta M'$ în felul următor: +
- +
-Pentru $ \delta M'(q, (t_1,t_2 ... t_k)) = (q', (t_1', t_2' ... t_k'), dir) \Rightarrow \delta M(q, a) = (q', b, dir), dir \in (\leftarrow,​ -, \rightarrow)$. +
- +
-</​hidden>​ +
-*/ +
- +
----- +
- +
-8. Fie o versiune de mașină Turing a cărei bandă se extinde arbitrar doar în partea dreaptă, //nu și în stânga//. La începutul computației,​ inputul e scris pe bandă, cu primul simbol pe prima celulă, unde se află și capul de citire. La orice moment de timp, dacă capul de citire se află pe prima celulă și mașina face o tranziție care îl mută la stânga, acesta rămâne pe loc. +
-Arătați că oricare ar fi o masină $ M$ conform definiției de la curs, există o mașină $ M'$ conform acestei definiții, astfel încât $ \forall w \in \Sigma^*, M[w] \equiv M'​[w]$. +
- +
-/* +
-<​hidden>​ +
- +
-Vom simula comportamentul mașinii $ M$ utilizând un caracter unic, care nu exista în $ \Gamma _M$, spre exemplu: $ ' \vert '$. Așadar, fie $ M'$ construită în următorul fel: +
- +
-$ \delta M'​(q,​c) = \delta M(q,c), \forall q \in Q_M, c \in \Gamma _M$ +
- +
-$ \Gamma _{M'} = \Gamma _M \cup \{ ' \vert ' \} , \{ ' \vert ' \} \notin \Gamma _M$ +
- +
-$ Q_{M'} = Q_M \cup \{ q_1', q_{1aux}'​ \}$ \\ \\ +
- +
-Pentru fiecare stare, vom insera tranziția care nu ne va permite depașirea acestui caracter spre stânga. +
- +
-$ \delta M'(q, ' \vert '​) ​(q, ' \vert ', \rightarrow ), \forall q \in Q$ \\ \\+
  
-În plus, în $ M'$ trebuie să schimbăm starea inițială pentru a scrie $ ' \vert '$ în stânga inputului.+1. Dați exemple de câte o funcție din următoarele clase de complexitate:​
  
-\delta M'(q_1', c\delta M'(q_{1aux}',​ c, \leftarrow ​)\forall c \in \Gamma _M$+  * O(n)
 +  * $ \Omega(log(n))$ 
 +  * $ \Theta(n^2)
 +  * $ \omega(\frac{1}{n})$ 
 +  * $ o(3^n)$
  
-$ \delta M'​(q_{1aux}',​ □) = (q_1, ' \vert ', \rightarrow ), q_1 -$ starea inițială a mașinii $ M$+2. Verificați valoarea de adevăurmătoarelor propoziții:​
  
-</​hidden>​+  * $ \sqrt{n} \in O(\log{n})$ 
 +  * $ \log{n} \in O(\log{(\log{n})})$ 
 +  * $ n \in O(\sqrt{n}\cdot\log{n})$ 
 +  * $ n + \log{n} \in \Theta(n)$ 
 +  * $ \log{(n\cdot \log{n})}\in\Theta(\log{n})$ 
 +  * $ \sqrt{n}\in\omega(\log{n})$
  
-*/+3. Fie funcția:
  
-----+<code c> 
 +int f(int *a, int n, int key) { 
 +    int lo = 0, hi = n;             
 +    while (lo < hi) {                  
 +        int mid = lo + (hi lo) / 2; 
 +        if (a[mid] < key) 
 +            lo = mid + 1; 
 +        else 
 +            hi = mid; 
 +    } 
 +    return lo; 
 +
 +</​code>​
  
-9. Fie o versiune de mașină Turing cu singura diferență că, la orice tranziție, capul de citire poate sta pe loc, sau se poate mișca la stânga/​dreapta cu orice număr $ n \in \mathbb{N}$ de poziții.  +a) Folosiți notații asimptotice pentru a descrie limita superioară f$.
-Arătați că oricare ar fi o mașină $ M'$ conform acestei definiții, există o mașină $ M$ conform definiției de la curs, astfel încât ​\forall w \in \Sigma^*, M[w] \equiv M'[w]$.+
  
-/* +b) Folosiți notații asimptotice pentru a descrie limita inferioară a $ f$.
-<​hidden>​+
  
-Construim $ \delta M$ în felul următor: \\ \\+c) Folosiți notațiile asimptotice pentru a estima numărul de iterații din bucla ''​while''​.
  
-Pentru o tranziție care nu modifică poziția capului de citire, nu se schimbă nimic.+d) Îmbunătățiți limitele superioare pentru $ f$ folosind aceste estimări.
  
-Pentru $ \delta M'​(q,​c) = (q',​c',​-)$ construim $ \delta M(q,c(q',​c',​-)$, $ q,q' \in Q_M \cup \{ Y, N, H \} , c,c' \in \Gamma _M$ \\ \\+ePuteți găsi limite strânse ​(tight boundspentru f?
  
-Pentru orice stare în care se ajunge cu tranziție la dreapta, adăugăm $ (n-1)$ extra stări și $ (n-1)$ extra tranziții în $ M$.+==== Exerciții syntactic sugars ====
  
-Pentru $ \delta M'​(q,​c) = (q',​c',​ n \rightarrow)$,​ construim\\ \\+4. Demonstrați/​infirmați următoarele propoziții:
  
-$ \delta M(q,c) = (R_{n-1}q',c, \rightarrow)$+  * f(n) = \Omega(\log(n)) \land g(n)=O(n) \implies f(n)=\Omega(\log(g(n))$ 
 +  * $ f(n) = \Omega(\log(n)) \land g(n)=O(n) \implies f(n)=\Theta(\log(g(n))$ 
 +  * $ f(n) = \Omega(g(n)) \land g(n)=O(n^2) \implies \frac{g(n)}{f(n)}=O(n)$
  
-$ \delta M(R_{n-1}q',​x) = (R_{n-2}q',​x,​ \rightarrow),​ \forall x \in \Gamma _M$ 
  
-$ \delta M(R_{n-2}q',​x) ​(R_{n-3}q',​x,​ \rightarrow),​ \forall x \in \Gamma _M$+==== Analiză amortizată ====
  
-$ ...$ 
  
-$ \delta M(R_1q',x) = (q',x, \rightarrow), \forall x \in \Gamma _M\\ \\+1. Implementați un contor binar împreună cu operația de incrementare ​(''​inc''​), folosind un array de tip ''​unsigned''​. Folosiți o variabilă globală pentru a număra numărul de schimbări de biți (flips) într-o secvență de $ noperații de incrementare.
  
-Pentru orice stare în care se ajunge ​cu tranziție la stânga, se procedează similar.+2. Experimentați ​cu diferite valori ale lui ''​n''​ și utilizați observațiile obținute pentru a realiza o analiză agregată a costului unei secvențe de $ n$ operații de incrementare.
  
-</​hidden>​ +3. Aplicați celelalte două metode de analiză amortizată.
-*/+
  
-----+4. Pentru editorul din laboratorul trecut, implementați un buffer de text, folosind un array care își dublează dimensiunea atunci când este plin și o înjumătățește atunci când este pe jumătate gol. Implementați operațiile ''​add''​ și ''​remove''​.
  
-10. Fie o mașină Turing cu o bandă bidimensională infinită a cărei cap de citire poate fi deplasat în orice direcție (sus, jos, stânga, dreapta) sau poate rămâne pe loc. +Estimați costul unei secvențe ​de operații de adăugare și eliminare? 
-Arătați că oricare ar fi o mașină $ M'$ conform acestei definițiiexistă o mașină $ M$ conform definiției de la curs, astfel încât $ \forall w \in \Sigma^*, M[w] \equiv M'[w]$.+Luați în considerare scenariul nefavorabilfără a face nicio presupunere asupra ordinii în care apar operațiile.