Actividad #3
October 2, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Actividad #3...
Description
CORPORACION UNIVERSITARIA IBEROAMERICANA
Actividad Activida d 3 - Algoritmos Algoritmos - Taller de de práctica práctica
Denisee Katherine Rodríguez Guerrero Matemáticas Discreta 2022
1.
Detectando la moneda falsa. Se tienen n monedas y se sabe que una de ellas es falsa (las otras n− 1 son auténticas). La moneda falsa pesa ligeramente menos que las otras y y todas las auténticas pesan lo mismo. Se tiene una balanza que puede comparar el peso de dos objetos, pero sólo indica si los pesos son iguales o cual es mayor de los dos. Determine un procedimiento para detectar la moneda falsa, tratando de minimizar el número de veces que se hace una comparación en la balanza. Sugerencia: Recuerde el uso de la búsqueda binaria. ¿Cuál es la solución de esta recurrencia?
Solución:
Se forman dos grupos de ⌊n/2⌋ monedas, quedando una aparte aparte si n es impar. Se comparan los pesos de los dos grupos. Si los l os pesos son distintos entonces el grupo más ligero tiene la moneda falsa y se puede proceder recursivamente con ese grupo. Si los pesos son iguales, esto solo puede suceder si n es impar y entonces la moneda falsa es la que se puso aparte. Considere el siguiente segmento de pseudocódigo 1. 1. k←1 k←1 2. 2. Para i←1 i←1 a a n 3. 3. Para j←1 Para j←1 a a i 4. 4. Para k←k k←k + + 1 2.
Donde n tiene inicialmente un valor que es entero positivo. Determine con una buena precisión el valor de k al finalizar la ejecución del segmento Solución:
k se incrementa en cada iteración del para interior, interior, y este se realiza i veces en ii-ésima -ésima iteración del para exterior por lo tanto el numero total de incrementos en k será: 0+1+2…+n= 1/2n(n+1) 0+1+2…+n= 1/2n(n+1)
3. 1. 2. 3. 4.
Considere el siguiente segmento de pseudocódigo 1. k←0 k←0 2. Mientras n > 1 3. k←k + k←k + 1 4. n←⌊ n/2⌋
Solución:
Valores de k N k
1 0
2 1
3 1
4 2
5 2
6 2
7 2
8 3
9 3
10 3
11 3
12 3
13 3
14 3
15 3
16 4
17 4
Si n es una potencia de 2, n = 2, entonces k=ℓ=log2 al finalizar se necesita dividir ℓ veces a 2 por 2 par que ya no se tenga n>1. en otro caso existe un ℓ tal que 2−1 < n j (ya no es posible que K este en L). El bloque del sí (líneas 4-6) se encarga de que se mantenga este invariante a la siguiente llamada recursiva: para esto elimina la \mitad" del rango que no puede contener K.
b. Muestre la operación de ordenamiento ([4, 8, 3, 2, 5, 1], 0, 5)
var indexOfMinimum = function(array, startIndex) { // Set initial values for minValue and minIndex, // based on the leftmost entry in the subarray: var minValue = array[startIndex]; var minIndex = startIndex;
for (var i = startIndex + 1; i < array.length; i++) { if (array[i] < minValue) { minIndex = i; minValue = array[i]; } } // Loop over items starting with startIndex, // updating minValue and minIndex as needed: return minIndex; }; var array = [4, 8, 3, 2, 5, 1, 0, 5]; var index = indexOfMinimum(array, 2); // For the test array [4, 8, 3, 2, 5, 1, 0, 5], // the value 9 is the smallest of [.. 3, 2, 5, 1, 0, 5] // Since 9 is at index 4 in the original array, // "index" has value 4 println("The index of the minimum value of the subarray starting at index 2 is " + index + "." ); Program.assertEqual(index, 4); Program.assertEqual(indexOfMinimum(array, Program.assertEqual(indexOfMinimum(array, 0), 4), 1); 4);
c. Se podría cambiar ⌊(k − i + 1)/3 ⌋ por ⌈(k − i + 1)/3 ⌉ = Si se podría ya que no afectaría en nada la función original. original. d. Escriba una recurrencia para el número de comparaciones Realizadas por el algoritmo con entrada de longitud n (no es es Necesario resolverla Ejemplo Algoritmo 1: T(n) = 10 T(n) = 10-4 2n segundos n = 38 datos T(n) = 1 año Algoritmo 2: T(n) = 10 T(n) = 10-2 n3 segundos n = 1000 bits T(n) = 1 año
View more...
Comments