Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

 

Al-Khowarizmi

Persa, Matemático, astrónomo, geógrafo, tratado del álgebra(ecuaciones lineales), texto sobre aritmética. La casa de la sabiduría (universidad en el califato). Uso del método científico. 
Siglo 9
Algoritmo más famoso de Euclids, para el maximo comun divisor de dos numeros.

Algoritmos:

Conjunto de pasos/reglas para resolver un calculo y con eso solucionar un problema. Manual o automático. Los pasos deben ser claros, precisos y objetivos. 

Heuristicos: basados en optimismo. No se puede controlar el error. Pero se puede calcular despues de dar un resultado.

Soporte teorico minimo: tomar las entradas, usando reglas, y restringimos la complejidad del problema. En caso de no encontrar una solucion, nos acercamos a una, con aproximacion, estableciendo el rango de error.

Algoritmia: ciencia que permite evaluar el efecto de los factores externos sobre algoritmos(disco, memeoria, red, cpu, tiempo) y el comportamiento

Estudio de los algoritmos, y se puede decidir correctamente cual algoritmo utilizar en un caso dado.

Se elije dependiendo de:
-Eficiencia, más rapido, menos recursos, simple y elegante. Debe resolver el problema. 

Asistente Tomas Segura.

Tomás Segura

Cel: 89347661

correo: tomas.seguram@gmail.com
 

 

solucion NO general=solucion alambrada, particular

Problemas e instancias:

problema= multiplicar dos numeros cualesquiera. Conjunto infinito (o MUY grande) de instancias, podemos dar los numeros que sea, que nos da solución.

instancia= multiplicar 34x98, donde los numeros ya estan fijados, ya elejidos.

no es instancia= -12x83.7, porque el divide and conquer no usa negativos, ni float.

Podemos decir que un algoritmo no es general, si se encuentra un CONTRAEJEMPLO.

Eficiencia: qué tan rápido se ejecuta un algoritmo para una instancia tamaño n

Empíricamente: a posteriori. Elegir un algoritmo que se programa todo y se hace benchmark, se aplican las mismas instancias y se hace una comparación y se dice cual es  mejor.

Teóricamente: a priori. Se determina matemáticamente la cantidad de recursos(tiempo y espacio) necesarios para cada algoritmo, en función de el tamaño de la instancia. En este enfoque, no se depende del hardware, ni del lenguaje. 

Principio de invariancia:

Se habla del mismo algoritmo, pero diferentes implementaciones, pero puede variar el lenguaje, el hardware(RAM,CPU), la red. Pero el algoritmo tiene el mismo t(n) para a1 y a2.

d y c: Uno acota al otro,  

d=1/c

Entre dos algoritmos, no se difere el tiempo de implementacion, en mas de una constante multiplicativa.

Orden de c*t(n)=  n, n^2, n^3, n^k, c^n

No ocupo unidad de medida para la eficiencia teórica de un programa. 

 

Caso promedio y peor caso:

Tiempo depende del tamaño de la instancia en particular.