Browse Source

Update 'lista5.md'

capella 7 years ago
parent
commit
f0c1694955
1 changed files with 40 additions and 0 deletions
  1. 40 0
      lista5.md

+ 40 - 0
lista5.md

@@ -126,4 +126,44 @@ $$c \leq \frac{14an}{3n-154} $$
 
 Note que a partir de n = 100 a fração será sempre menor do que 9, portanto existe o $c \geq 9a$ vai satisfazer a equação anterior e vai permitir que a nossa hipótese seja verdadeira. 
 
+###### 8. Considere a seguinte variante do Particione-BFPRT, que chamaremos de Particione-D. Em vez de acionar o Select-BFPRT para calcular a mediana das medianas, ela aciona recursivamente o próprio Particione-D, para calcular uma “mediana aproximada” do vetor das medianas. Suponha que o Particione-D rearranja o vetor A[p..d] e devolve um índice q tal que A[p..q−1] ≤ A[q] < A[q+1..d] e max{k, n−k} ≤ 9n/10, onde n = d−p+1 e k = q−p+1. Analise o consumo de tempo da variante do Select-BFPRT que chama o Particione-D em vez do Particione-BFPRT.
+
+Para facilitar a visualização desse exercício vamos escrever o código Select-BFPRT novamente:
+
+```
+Select-BFPRT(A, p, r, i)
+    se p = r
+        devolve p
+    q <- Particione-D(A, p, r)
+    k <- q-p+1
+    se k = i
+        devolve k
+    senão se k > i
+        devolve Select-BFPRT(A, p, q-1, i)
+    senão
+        devolve Select-BFPRT(A, q+1, r, i-k)
+        
+
+Particione-D(A, p, r)
+    para j <- p, p+5, p+10 ... p+5*(n+1)/5-1
+        ordena_5_elementos
+    para j <- 1 até (n+1)/5-1 #numero de elementos medianos
+        A[p - 1 + j] <-->  A[p + 5*j -3] #colocar os pedianos no inicio
+    [p - 1 + ceil(n/5)]  <-->  A[ floor((p + 5 * floor(n/5) + r)/2) ]  // meio do último intervalo...
+    
+    k <-- Particione-D(A, p, p+ceil(n/5), floor( (ceil(n/5) + 1)/2 ))
+    A[k] <--> A[r] # manda a mediana para o final
+    
+    devolve particiona(A, p, r)
+```
+
+A primeira parte é verificar o consumo de tempo do Particione-D. Note que $r-p+1 = n$.
+
+$$ T(n) \leq O(n) + T(max{k, n−k}) \leq O(n) + T(9n/10)$$
+
+Vamos analizar essa recursão, note que colocamos $\leq$ , pois as linhas 3 e 5 do Particione-D podem consumir tempo menor do que as linhas 2 e 4.
+
+T(n) \leq O(n) + T(9n/10) \leq O(n) + O(n) + T(n \cdot (9/10)^2 ) \leq i \cdot O(n) + T(n \cdot (9/10)^i )$$
+
+