Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmos
1. OBJETIVOS
Al finalizar la práctica:
1
1.2. Atributos de egreso CACEI
2
Práctica 11
2. TEORÍA
++i
}
Devuelve max
}
3
2.2. Búsqueda lineal
i = i + 1
}
Devuelve encontrado
}
4
Práctica 11
primos( n )
{
c = 2
Mientras c <= n
{
es_primo = True
j = 2
Mientras j < c
{
residuo = c MOD j
j = j + 1
}
c = c + 1
}
}
5
2.3. Números primos
Listado 2. Versión 2
primos( n )
{
c = 2
Mientras c <= n
{
Si test_primalidad( c ) = True { Print( c ) }
c = c + 1
}
}
test_primalidad( c )
{
es_primo = True
j = 2
Mientras j < c
{
residuo = c MOD j
j = j + 1
}
Devuelve es_primo
}
6
Práctica 11
Divisores( p )
{
c = 1
Mientras c <= p
{
Si (p MOD c) = 0 { Print( c ) }
c = c + 1
}
}
El siguiente pseudo código guarda en una lista todos los divisores de un número entero
natural, n:
Divisores( p, list )
{
c = 1
i = 0
Mientras c <= p
{
Si (p MOD c) = 0
{
list[ i ] = c
i = i + 1
}
c = c + 1
}
Devuelve list ①
}
7
2.5. Búsqueda binaria
// Devuelve el índice del elemento donde haya encontrado, si alguna, la primer ocurrencia.
bbinaria( list[], elems, key ): Int
{
inf = 0
sup = elems - 1
sup = centro - 1
}
En caso contrario
{
inf = centro + 1
}
}
}
Devuelve -1
}
8
Práctica 11
3. ALGORITMOS VORACES
i = i + 1
}
Si acum != p
{
sol={0}
}
Devuelve sol
}
9
4. PROGRAMACIÓN DINÁMICA
Devuelve sol
}
4. PROGRAMACIÓN DINÁMICA
10
Práctica 11
coins_used[0] = 0
last_coin[0] = 1
cents = 1
While cents <= make_change
{
min_coins = cents
new_coin = coins[0]
cents = cents + 1
}
11
4.2. Problema del cambio, (versión [BRASSARD97])
/*
Devuelve el mínimo número de monedas necesarias para cambiar N unidades. El vector d[0..n-1]
especifica las denominaciones: en el ejemplo hay monedas de 1, 4 y 6 unidades (n=3).
*/
función monedas( N )
{
vector d[] = [1,4,6]
matriz c[0..n-1, 0..N]
Devuelve c[n,N]
}
12
Práctica 11
5. PRE-LABORATORIO
Intenta realizar en tu casa todos los ejercicios de la sección IN-LABORATORIO para que el día
de la práctica llegues con dudas.
(2022-1): Ya realizaste las secciones Fuerza bruta y Dividir y vencer, por lo que deberás
concentrarte en los algoritmos voraces y de programación dinámica.
13
6. IN-LABORATORIO
6. IN-LABORATORIO
Realiza los programas indicados. Para todos ellos utiliza, cuando sea necesario, los valores
vistos en clase. Donde esté indicado, n será un valor introducido por el usuario del programa.
4. Llenar una lista con todos los factores primos de un valor entero n.
2. Problema de la mochila.
a. Maximizando el valor.
7. POST-LABORATORIO
14
Práctica 11
1. Para ambas versiones de programación dinámica escribe la segunda parte del algoritmo,
es decir, aquella parte que indica las monedas a entregar. Guarda dichas monedas en un
arreglo para que posteriormente lo imprimas.
8. ENTREGABLES
Están especificados en la HdT.
9. BIBLIOGRAFÍA
[AHO98]
Aho, Alfred V.; Hoptcroft, John E.; Ullman, Jeffrey D. Estructuras de datos y algoritmos.
Adisson Wesley. MÉXICO: 1998.
15