Professional Documents
Culture Documents
Subsecuencia de suma
mxima
A
k i
Subsecuencia de suma
mxima
Ejemplo:
Secuencia: -2,11,-4,13,-5,-2
Respuesta: 20
Subsecuencia de suma
mxima
int maxSum = 0;
for( i=0; i<a.length; i++)
{
for( j=i; j<a.length; j++)
{
int thisSum = 0;
for (k=i; k<=j; k++)
thisSum += a[k];
if (thisSum > maxSum)
maxSum = thisSum;
}
}
Subsecuencia de suma
mxima
Tiempo: O(n3)
n 3n 2n
1
6
i 0 j i k i
n 1 n 1
Subsecuencia de suma
mxima
Notar que
Subsecuencia de suma
mxima
int maxSum = 0;
for( i=0; i<a.length; i++)
{
int thisSum = 0;
for (j=i; j<=a.length; j++)
{
thisSum += a[j];
if (thisSum > maxSum)
maxSum = thisSum;
}
}
7
Subsecuencia de suma
mxima
Tiempo: O(n2)
Solucin 3: Usando dividir para reinar
Subsecuencia de suma
mxima
Dividiendo el problema
Primera mitad
Segunda mitad
Cruza por el medio ambas mitades
Subsecuencia de suma
mxima
Dividiendo el problema
Ejemplo:
Primera mitad
Segunda mitad
4 -3 5 -2
-1 2 6 -2
10
Subsecuencia de suma
mxima
Dividiendo el problema
Ejemplo:
Primera mitad
Segunda mitad
4 -3 5 -2
-1 2 6 -2
11
Subsecuencia de suma
mxima
Dividiendo el problema
Ejemplo:
Primera mitad
Segunda mitad
4 -3 5 -2
-1 2 6 -2
12
Subsecuencia de suma
mxima
Dividiendo el problema
Ejemplo:
Primera mitad
Segunda mitad
4 -3 5 -2
-1 2 6 -2
Subsecuencia de suma
mxima
Algoritmo:
14
Subsecuencia de suma
mxima
15
Subsecuencia de suma
mxima
Observaciones:
16
Subsecuencia de suma
mxima
Induccin (reforzada)
Algoritmo
17
Subsecuencia de suma
mxima
Seudocdigo
18
Subsecuencia de suma
mxima
19
Multiplicacin de matrices
20
Multiplicacin de matrices
Algoritmo simple:
// A, B: matrices de N x N
int[][] C=new int[N][N];
C[i][j]+=A[i][k]*B[k][j];
21
Multiplicacin de matrices
22
Multiplicacin de matrices
23
Multiplicacin de matrices
24
Multiplicacin de matrices
Tiempo: O(N3)
Mejora: disminuir nmero de subproblemas
Estrategia de Strassen:
25
Multiplicacin de matrices
Respuesta final:
26
Multiplicacin de matrices
27
Multiplicacin de matrices
Detalles a considerar:
28
Subsecuencia comn ms
larga
Subsecuencia comn ms
larga
Definiciones
30
Subsecuencia comn ms
larga
Definiciones
Z es subsecuencia comn de X e Y si es
subsecuencia de X y de Y
Ejemplos:
Subsecuencia comn ms
larga
X tiene 2m subsecuencias
Tiempo: O(2m)
32
Subsecuencia comn ms
larga
33
Subsecuencia comn ms
larga
34
Subsecuencia comn ms
larga
Subsecuencia comn ms
larga
36
Subsecuencia comn ms
larga
Implementacin:
37
Subsecuencia comn ms
larga
Ejemplo:
void LCS(b,X,i,j){
if (i==0 || j==0)
return;
if (b[i,j]==\){
LCS(b,X,i-1,j-1);
print(X[i]);}
else if (b[i,j]==|)
LCS(b,X,i-1,j);
else \\ -
LCS(b,X,i,j-1);
}
38