Problemas ADA 1

11
Problem 1-1 Observe que el bucle while de las líneas 5-7 del procedimiento de inserción-SORT en la Sección 2.1 utiliza una búsqueda lineal para escanear (hacia atrás) a través del subconjunto ordenado de A [1 ... j - 1]. ¿Podemos utilizar una búsqueda binaria (véase el ejercicio 2.3-5) en lugar de mejorar el peor de los casos el tiempo de funcionamiento global de la ordenación por inserción de T (n lg n)? INSERTION-SORT(A) 1. for j ← 2 to length[A] 2. do key ← A[j] 3. ▹ Insert A[j] into the sorted sequence A[1 ... j - 1]. 4. i ← j - 1 5. while i > 0 and A[i] > key 6. do A[i + 1] ← A[i] 7. i ← i - 1 8. A[i + 1] ← key Si lo hacemos, de hecho , "observar que el bucle while de las líneas 5-7 ... utiliza una búsqueda lineal .... " , ¿por qué está ahí? La respuesta a esta pregunta quiere llevarlos a es que es necesario preparar i tal que la línea 8 a introducir la llave en el lugar correcto . Si eso fuera todo lo que el bucle while hizo entonces, sí, una búsqueda binaria mejoraría el tiempo de ejecución , pero eso no es todo el bucle hace. Línea 2 almacena la clave fuera de la matriz, la línea 4 se prepara I para empezar en la posición de uno más bajo que el que se extrae la llave , y la línea 6 tiene cada elemento en la posición i y lo coloca uno más alto. La primera vez que a través

Transcript of Problemas ADA 1

Problem 1-1Observe que el bucle while de las lneas 5-7 del procedimiento de insercin-SORT en la Seccin 2.1 utiliza una bsqueda lineal para escanear (hacia atrs) a travs del subconjunto ordenado de A [1 ... j - 1]. Podemos utilizar una bsqueda binaria (vase el ejercicio 2.3-5) en lugar de mejorar el peor de los casos el tiempo de funcionamiento global de la ordenacin por insercin de T (n lg n)?

INSERTION-SORT(A)1. for j 2 to length[A]2. do key A[j]3. Insert A[j] into the sorted sequence A[1 ... j - 1].4. i j - 15. while i > 0 and A[i] > key6. do A[i + 1] A[i]7. i i - 18. A[i + 1] key

Si lo hacemos, de hecho , "observar que el bucle while de las lneas 5-7 ... utiliza una bsqueda lineal .... " , por qu est ah? La respuesta a esta pregunta quiere llevarlos a es que es necesario preparar i tal que la lnea 8 a introducir la llave en el lugar correcto . Si eso fuera todo lo que el bucle while hizo entonces, s, una bsqueda binaria mejorara el tiempo de ejecucin , pero eso no es todo el bucle hace.

Lnea 2 almacena la clave fuera de la matriz, la lnea 4 se prepara I para empezar en la posicin de uno ms bajo que el que se extrae la llave , y la lnea 6 tiene cada elemento en la posicin i y lo coloca uno ms alto. La primera vez que a travs del lazo , la posicin en la que la clave era (que era el lugar equivocado para la clave ) es tomada por el siguiente elemento de la lnea que deja un espacio para la clave ( si ese es el lugar adecuado para ello ) o para la elemento siguiente en la fila.

Mover los elementos es necesaria para insertar la llave en el lugar correcto. Bsqueda binaria no nos impedir mover los elementos por lo que no va a mejorar el tiempo de ejecucin .

Ejercico 2Demostrar que el tiempo de ejecucin de un algoritmo es (g (n)) si y slo si su tiempo de ejecucin del peor caso es O (g (n)) y su tiempo de funcionamiento del mejor caso es (g (n)). Esto se deduce directamente del Teorema 3.1 que fue probado en el Ejercicio 3.1-5.

En primer lugar, supongamos que f (n) = (g (n)), entonces, por definicin, existen constantes positivas C1, C2, y n0 tal que 0 C1G (n) f (n) c2g (n) para todos n n0. A continuacin, podemos ampliar la desigualdad en las piezas: 0 f (n) c2g (n) y 0 C1G (n) f (n). Estas dos partes corresponden a decir f (n) = O (g (n)) y f (n) = (g (n)) respectivamente.

En segundo lugar, supongamos que f (n) = O (g (n)) y f (n) = (g (n)) a continuacin, simplemente trabajar hacia atrs desde la primera parte para llegar a que f (n) = (g (n) ).

De las dos partes anteriores, se demuestra el teorema.

Ejercicio 3

Est la funcin lg n ! polinmicamente limitada ? Es la funcin lg lg n ! polinmicamente limitada ?Una funcin f ( n ) est delimitada polinomialmente si est acotado superiormente por un polinomio , es decir, existen constantes C, K , N0 tal que f ( n ) CNK para todo n n0 . La forma ... ! me dieron ganas de usar la igualdad n ! = O (nn ) demostrado en el Ejercicio 3.2-3 pero nn no es un polinomio de manera que no va a funcionar . Sin embargo , notamos que podemos tomar el lg de ambos lados de f (n ) cnk que da lg f (n ) lg cnk = kc1 lg n y , por lo tanto , f ( n) es acotada polinmicamente si lg f ( n) = ( lg n).

De esto podemos ver que lg lg n ! es de la forma lg ( m! ) = (m lg m ), que tambin se demostr en el Ejercicio 3.2-3 tan lg lg n ! = ( lg n lg lg n ) = ( lg n * lg lg n) que en realidad est acotada inferiormente por lg n en lugar de arriba es lg n ! No se polinmicamente delimitada .

Del mismo modo, lg lg lg n ! = ( lg lg lg n lg lg n ) = ( lg lg n * lg lg lg n ), que est acotada superiormente por ( lg lg n) 2 = ( lg ( lg n)) 2 = lg2 ( lg n ) que es de la forma LGB = O ( NA ), que indica que cualquier funcin polinmica crece ms rpido que cualquier funcin polilogartmico as lg2 ( lg n ) est acotado superiormente por un polinomio . Por extensin , lg lg n ! se polinmicamente delimitada .

Actualizacin : Vanse las observaciones de FY abajo para ms detalles y correcciones.

Ejercicio 4

Solucin 13: Para T (n) = 4T (n / 2) + n2 log n A = 4, b = 2, f (n) = n2 log n nlogba = nlog24 = n2. Aqu f (n) es asintticamente ms grande que nlogba, pero no polinomialmente ms grande. Este caso cae en la brecha entre los casos 2 y 3. La solucin de esta recurrencia puede ser dada por el teorema segn se contempla. Si f (n) = (logkn nlogba), donde k 0, entonces la recurrencia principal tiene solucin T (n) = (logk nlogba 1 N). Por lo tanto la solucin de la recurrencia dado ser T (n) = (log2 N2).

Parte dos 1.-1a)

Solucin: A veces es cierto: para f (n) = n es cierto, mientras que para f (n) = 1 / n no es cierto. (La declaracin es siempre cierto para f (n) = (1), y por lo tanto para la mayora de las funciones con las que vamos a trabajar en este curso, y, en particular, todas las funciones de tiempo y espacio de complejidad).c)Considere f (n) + g (n), donde g (n) = O (f (n)) y sea c una constante tal que 0 g (n) n, CG (n) f (n). Pero si f (n) = O (g (n)), entonces para cualquier constante positiva c, no existe (c) de tal manera que para todo n> no (c), f (n) ma x (n, no (c)) debe ser que f (n)