Foros del Web » Programación para mayores de 30 ;) » Java »

¿Alguien puede calcular el T(n) de este código?

Estas en el tema de ¿Alguien puede calcular el T(n) de este código? en el foro de Java en Foros del Web. public class KMP { private static void preKMP(String subcadena, int[] sig) { int M = subcadena.length(); int j = sig[0] = -1; for (int i ...
  #1 (permalink)  
Antiguo 21/07/2012, 23:09
 
Fecha de Ingreso: julio-2012
Mensajes: 1
Antigüedad: 11 años, 8 meses
Puntos: 0
Pregunta ¿Alguien puede calcular el T(n) de este código?

public class KMP {


private static void preKMP(String subcadena, int[] sig) {
int M = subcadena.length();
int j = sig[0] = -1;
for (int i = 1; i < M; i++) {
j++;
if (subcadena.charAt(i) != subcadena.charAt(j)) sig[i] = j;
else sig[i] = sig[j];
while (j >= 0 && subcadena.charAt(i) != subcadena.charAt(j)) {
j = sig[j];
}
}
for (int i = 0; i < M+1; i++)
System.out.format("next[%d] = %d\n", i, sig[i]);
System.out.println();
}


public static void algorithm(String subcadena, String text) {
int M = subcadena.length();
int N = text.length();
int i, j;
int[] next = new int[M+1];


preKMP(subcadena, next);
for (i = 0, j = 0; i < N && j < M; i++) {
while (j >= 0 && text.charAt(i) != subcadena.charAt(j)) {
j = next[j];
}
j++;
System.out.format("attempt %d\n", i);
System.out.format("position:");
for (int t = 0; t < i-j+1; t++)
System.out.print(" ");
System.out.format("%d\n", i-j+1);
System.out.format("text: %s\n", text);
System.out.print("pattern: ");
for (int t = 0; t < i-j+1; t++)
System.out.print(" ");
System.out.format("%s\n ", subcadena);
for (int t = 0; t < j-1; t++)
System.out.print(" ");
for (int t = 0; t < i-j+1; t++)
System.out.print(" ");
System.out.print("^\n");
System.out.format("Shift by %d (%d-next[%d])\n\n", j-next[j], j, j); // shift by needs to be fixed


try {
Thread.sleep(1000);
} catch (Exception e) {}
}


if (j == M) {
System.out.format("Found \'%s\' at position %d\n", subcadena, i-M);
return; // found at offset i
}


// not found
System.out.format("\'%s\' not found\n", subcadena);
}




// test client
public static void main(String[] args) {
String pattern = args[0];
String text = args[1];
KMP.algorithm(pattern, text);
}
}

Etiquetas: complejidad, ejecucion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:16.