Actividad #3

October 2, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF