You are on page 1of 14

ALGORITMOS DE FUERZA BRUTA

INGENIERÍA DE SISTEMAS COMPUTACIONALES


LOGRO DE LA UNIDAD

Al finalizar la unidad, el estudiante implementa programas utilizando las estrategias


de programación fuerza bruta, algoritmos voraces, divide y vencerás, backtracking,
utilizando el lenguaje C++, analizando su complejidad algorítmica.
ALGORITMOS DE FUERZA BRUTA

¿FUERZA BRUTA?

Mecanismo o método usado para conseguir un


objetivo, probando múltiples opciones

¿ALGORITMO?

Secuencia de pasos lógicos y ordenados


para llevar a cabo una tarea

¿PUEDES DEFINIR QUE ES UN ALGORITMO DE FUERZA BRUTA?

EN TU COMPUTADORA ¿QUIÉN CREES QUE SOPORTA Y HACE


TODO ESTO?...
TIEMPO DE EJECUCIÓN DE UN ALGORITMO

T1(n) ≤ cT2(n)
Invarianza: “El tiempo de ejecución de dos implementaciones distintas de un algoritmo dado
no va a diferir más que en una constante multiplicativa” [Guerequeta y Vallecillo, 2000].

Para medir la eficiencia temporal de un


algoritmo, depende más de la función que lo
define que de la constante multiplicativa

Para obtener T(n), hacemos uso de las


operaciones elementales (OE) tales
como:
 Operación aritmética.
 Asignación a una variable.
 Llamada a una función.
 Retorno de una función.
 Comparaciones lógicas
 Acceso a una estructura (arreglo, matriz, lista ligada…)
EJEMPLO OPERACIONES ELEMENTALES (OE)

¿Cuántas y cuales son las OE que tiene el siguiente algoritmo?

0 OE (*argv[] se envía como referencia y no se accede por valor)

1 OE (1 asignación)
1 OE (1 asignación)

1 OE (1 salida)
1 OE (1 entrada)
4 OE (1 acceso; 1 comparación; 1 AND; 1 comparación)
2 OE (1 asignación; 1 incremento)

2 OE (1 acceso; 1 comparación)
1 OE (1 salida)

1 OE (1 salida)
1 OE (1 pausa)
1 OE (1 retorno)
16 OE EN TOTAL
ANÁLISIS DE OPERACIONES ELEMENTALES
MEJOR CASO: ELEMENTO BUSCADO AL PEOR CASO: NO EXISTE ELEMENTO
INICIO DEL ALGORITMO BUSCADO Y ES MAYOR A 40

11 OE EN TOTAL 67 OE EN TOTAL
ANÁLISIS DE OPERACIONES ELEMENTALES
Demostrar la complejidad de

Ahora subimos la apuesta,


demostrar la complejidad de:
CONCLUSIÓN:

“Un algoritmo es más optimo que otro cuando el


número de OE (operaciones elementales) es menor
para un conjunto de entrada de datos “n”

¿Cuál es la complejidad del algoritmo de ordenamiento por selección?


COMPLEJIDAD ALGORÍTMICA

Cantidad de recursos temporales


usados por un algoritmo para resolver
un problema.

La complejidad es relativa al tamaño


de la solución del problema.
NOTACIÓN “BIG OH”

Formalmente:

T(n) = O(f(n)); si y solo si existen dos constantes


c, n0 > 0, de forma que T(n) <= c*f(n)

En términos prácticos:

- Considerar el peor escenario.


- Realizar un análisis asintótico (valores grandes para n).
- No prestar atención a términos constantes o de orden
menor.

Basados en el ejercicio anterior (complejidad A.O Selección) como se puede definir la complejidad del
algoritmo con la notación Big O?

𝑛 (𝑛+1) 𝑛2 +𝑛
f(n) = =
2 2
O(f(n)) =𝑛2
EJEMPLOS DE APLICACIÓN….

You might also like