Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ELEMENTOS DE
ANÁLISIS Y DISEÑO
INTRODUCCIÓN
• tres preguntas centrales que aparecen
cuando uno quiere que un computador
haga algo:
• ¿Es posible hacerlo?
• ¿Cómo se hace?
• ¿Cuán rápido puede hacerse?
EL SIGUIENTE PASO
Una vez estudiados los temas de Teoría
de Conjuntos y Lógica, tenemos las
herramientas necesarias para enfrentar
problemas reales, de determinadas
naturalezas, que se pueden resolver con
una secuencias finita de acciones o
pasos, llamados ALGORITMOS, a los
cuales se les pueden, a su vez, evaluar su
eficiencia, finitud y su eficacia.
Fundamentos Matemáticos
necesarios para el tema.
Monotonia
Sumatorias y recurrencias
• Las sumatorias se usan mucho para el análisis
de la complejidad de programas, en especial de
ciclos, ya que realizan conteos de operaciones
cada vez que se entra al ciclo.
• Cuando se conoce una ecuación que calcula el
resultado de una sumatoria, se dice que esta
ecuación representa una solución en forma
cerrada
Técnicas de Demostración Matemática
• Prueba por contradicción
• La forma más fácil de refutar un teorema o enunciado,
es mediante un contra-ejemplo. Desafortunadamente,
no importa el número de ejemplos que soporte un
teorema, esto no es suficiente para probar que es
correcto.
• Para probar un teorema por contradicción, primero
suponemos que el teorema es falso. Luego encontramos
una contradicción lógica que surja de esta suposición. Si
la lógica usada para encontrar la contradicción es
correcta, entonces la única forma de resolver la
contradicción es suponer que la suposición hecha fue
incorrecta, esto es, concluir que el teorema debe ser
verdad.
Técnicas de Demostración Matemática
Estimación
• Consiste en hacer estimaciones rápidas para
resolver un problema. Puede formalizarse en tres
pasos:
a
• O( n) orden exponencial (a > 2)
• O(n!) orden factorial
Análisis de algoritmos
• Un ejemplo de algunas de las funciones más
comunes en análisis de algoritmos son:
Órdenes de complejidad.
La mejor técnica para diferenciar la eficiencia de los
algoritmos es el estudio de los órdenes de
complejidad.
Desventajas:
• · Se puede llegar a un ciclo infinito.
• · Versión no recursiva más difícil de desarrollar.
• · Para la gente sin experiencia es difícil de
programar.
Tipos de Recursividad
• Directa o simple: un subprograma se
llama a si mismo una o más veces
directamente.
Tipos de Recursividad
• Indirecta o mutua: un subprograma A llama a otro
subprograma B y éste a su vez llama al subprograma A.
Algoritmos recursivos
Recursión
• Un algoritmo es recursivo si se llama a sí mismo para hacer
parte del trabajo. Para que este enfoque sea exitoso, la llamada
debe ser en un problema menor que el originalmente intentado.
• · El caso base, que maneja una entrada simple que puede ser
resuelta sin una llamada recursiva
• · La parte recursiva, que contiene una o más llamadas
recursivas al algoritmo, donde los parámetros están en un
sentido más cercano al caso base, que la llamada original.
= =
Otros Métodos de Ordenamiento
• Ordenamiento por Incrementos Decrecientes. El
ordenamiento por incrementos decrecientes (o
método shellsort) es una generalización del
ordenamiento por inserción donde se gana rápidez al
permitir intercambios entre elementos que se
encuentran muy alejados.
• Ordenamiento por Mezclas Sucesivas (merge
sort). Se aplica la técnica divide-y-vencerás,
dividiendo la secuencia de datos en dos
subsecuencias hasta que las subsecuencias tengan
un único elemento, luego se ordenan mezclando dos
subsecuencias ordenadas en una secuencia
ordenada, en forma sucesiva hasta obtener una
secuencia única ya ordenada.
Algoritmos de Búsqueda
• Búsqueda Lineal. El algoritmo básico de
búsqueda lineal consiste en empezar al inicio de la lista
e ir a través de cada registro hasta encontrar la llave
indicada (k), o hasta al final de la lista.
• Búsqueda Binaria. En la búsqueda binaria se
reduce sucesivamente la operación eliminando repetidas
veces la mitad de la lista restante.
• Árboles de Búsqueda.
• Búsqueda por Transformación de
Claves (Hashing).
• Búsqueda en Textos