Browse Source

Add 'lista3.md'

capella 7 years ago
parent
commit
27e8a211d8
1 changed files with 33 additions and 0 deletions
  1. 33 0
      lista3.md

+ 33 - 0
lista3.md

@@ -0,0 +1,33 @@
+##### 3.
+
+Qunado ele faz refeência a memória, ele está querendo dizer o tamanho da pilha de execução. Ou seja, cada vez que chammos a recursão uma nova função é achamada e o consumo de memória aumenta. Pra resolver esse problema, vamos sempre iniciar a recursão na menor parte:
+
+```
+QUICKSORTE2 (A, p, r)
+    meio = (p+r)/2
+    enqunato p < r
+        q <- particiona(A, p, r)
+    se q >= meio
+        QUICKSORTE2 (A, p, q-1)
+        p <- q + 1
+    senao
+        QUICKSORTE2 (A, q+1, r)
+        r <- q - 1
+```
+
+Note que o pior caso para a memória com esse algorítmo não será quando q estiver na posição r-1. O pior caso vai se dar quando q se encontrar no meio. Nesse caso (M é a qunatida de memória):
+
+$$M(1) = 1$$
+$$M(n) = O(n) + M(n/2)$$
+
+Desenvolvendo pelo método da substitituição:
+
+$$M(n) = an + M(n/2) = an + an/2 + M(n/2) =  \sum\_{j = 1}^{i} \franc{an}{2^(i-1)} + M(\frac{n}{2^i})$$
+
+$$M(n) = an \cdot \frac{1/2^i - 1}{1/2-1} + M(\frac{n}{2^i})$$
+
+Suponha que n seja multiplo de 2, ou seja, $n = 2^i$. Dessa forma:
+
+$$M(n) = a \cdot \frac{1 - n}{1/2-1} + M(1) = 2a \cdot \frac{1 - n}{-1} = 1 + 2a \cdot (n - 1)$$
+
+Vaja que no pior caso o nosso consumo de memória vai ser linear.