Free Essay

Optimization Algorithms

In:

Submitted By maisonet92
Words 4208
Pages 17
Universidad de Puerto Rico en Bayamón
Departamento de Español

Complejidad, Rendimiento y Utilización Algorítmica

Artículo escrito por:
Hector E. Maisonet Guzmán – 841-10-3930

Curso ESCO 4005 Sección LJ1
PhD. José A. Rodríguez Valentín

21 de mayo de 2014

COMPLEJIDAD, RENDIMIENTO Y UTILIZACIÓN ALGORÍTMICA

Donald Knuth indicó: “Un algoritmo debe ser visto para ser creído”. Por lo tanto se define un algoritmo como un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas, las cuales permiten realizar una actividad mediante una serie de pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Estas actividades tienen como estado; uno inicial y uno de entrada, siguiendo una serie de pasos para llegar a su estado final y obtener una solución. Los algoritmos son independientes de los lenguajes de programación. En cada problema el algoritmo puede escribirse y luego ejecutarse en un lenguaje de programación diferente. El algoritmo es la infraestructura de cualquier solución, escrita luego en cualquier lenguaje de programación. Muchos autores han señalado a estos conjuntos de instrucciones como soluciones a problemas abstractos o soluciones a problemas de cálculo. Los algoritmos pueden ser expresados de diferentes maneras, como por ejemplo: lenguaje natural, seudocódigo, flujogramas, lenguaje de programación, entre otros. Cabe destacar que la expresión de un algoritmo mediante el uso del lenguaje natural puede contener ambigüedad y ser demasiado extensa dando como resultado una descripción no muy satisfactoria. Por otro lado, el uso de seudocódigo y de flujograma hace la descripción de un algoritmo más entendible y sencillo para el programador. El flujograma es la técnica más antigua utilizada, pero a su vez es una técnica visual de entender el algoritmo. El seudocódigo permite una solución al problema mediante un algoritmo escrito en palabras normales de un idioma utilizando palabras imperativas. (Véase Apéndice 1 para ejemplo de flujograma y Apéndice 2 para ejemplo de seudocódigo). Otra forma de entender el comportamiento de algoritmos es mediante el concepto de sistema formal, y una sistema formal es aquel sistema lógico-deductivo construido por un lenguaje formal, una gramática formal. Las cuales, restringen aquellas expresiones correctamente formadas de dicho lenguaje, las reglas de inferencia y un conjunto de axiomas. La noción de estos sistemas corresponde a la formalización rigurosa y completa del concepto de sistema axiomático. Una vez que los algoritmos son creados se implementan en programas o aplicaciones. No obstante, existen otros medios para implementar estos algoritmos, como lo son: las redes neurales artificiales, circuitos eléctricos, dispositivos eléctricos o mecánicos, por lo cual, no todo los algoritmos son necesariamente para ser implementados mediantes códigos de computadora. Existen también algoritmos que son para implementarse mediante el uso de mano escritura; como lo son: la suma, la resta, y otras aritméticas simples. Además, podemos destacar los algoritmos para grafos como el algoritmo de Euclides y el algoritmo de Hamilton, entre otros. La mayoría de los algoritmos suelen escribirse con una estructura secuencial. Las estructuras secuenciales son aquellas que ejecutan cada instrucción una detrás de las otra. Cabe destacar que estas instrucciones internamente contiene bloques de código compuestos por: selecciones condicionales, ciclos y variables. Las variables en bloque de código pueden estar clasificadas como: simples, contador, acumulador o de trabajo. Las variables simples consisten en asignar un valor constate, puede ser alfanumérico o lógico como por ejemplo (var 20, var 0.5 var TRUE, var “Hello”). Las variables tipo contador consisten en tener un uso como verificación de la cantidad de veces que se realiza un proceso, este tipo de variables se pueden utilizar como control de ciclos o centinelas como por ejemplo (var 0, then: var var + 1). Las variables tipo acumuladoras tienen como función mantener una suma de procesos como por ejemplo (var var + var_2). Las variables clasificadas como de trabajos son aquellas que pueden recibir una operación matemática que implica más de una variable como por ejemplo (result 2(var + var_2) – var_3).
Algoritmos como funciones

La rama de la teoría de la compatibilidad ha comprobado y establecido que un algoritmo se puede concebir como una función que transforma los datos de un problema en los datos de una solución. No obstante, los datos se pueden representar a su vez como secuencias de bits. Cada secuencia de bits representa a un número natural, por ende los algoritmos son en esencia funciones de números naturales que en sí se pueden calcular. Aunque, un algoritmo calcula una función f: N N donde cada número natural es la codificación de un problema o de una solución al mismo. En ocasiones, los algoritmos son sustentables para nunca terminar, por lo que se denomina que se encuentra en un ciclo infinito. Cuando se da esta situación, el algoritmo nunca devuelve ningún resultado, de tal forma se denomina a la función que es indefinida. Por otro lado, se sugiere que los algoritmos son funciones parciales, es señalar, que no necesariamente están definidas por su dominio de definición. Cuando una función puede ser calculada por medios algorítmicos, sin importar la cantidad de memoria que ocupe o el tiempo de ejecución que se tome, se caracteriza dicha función como computable. La mejor forma de ver cómo los algoritmos se comportan como funciones es analizando su comportamiento mediantes aplicaciones. Estas aplicaciones son conocidas como aplicaciones matemáticas, las cuales establecen una correspondencia entre dos conjuntos de elementos de forma que todo elemento del conjunto de partida se asocie con un elemento único del conjunto de llegada. Un ejemplo de esta aplicación es aquel conjunto de partida E en un conjunto de llegada F. La aplicación asocia un elemento x dentro del conjunto E y un elemento y dentro del conjunto F. El elemento se denomina imagen del elemento x, mientras que el elemento x se llama antecedente del elemento y. Dentro de este tipo de aplicaciones existen diferentes categorías como: inyectivas, sobreyectivas o biyectivas. Las aplicaciones invectivas son todas aquellas en las que los elementos del conjunto de llegada F tiene como máximo antecedente en el conjunto de partida E. Una aplicación no es inyectivas si existen al menos dos elementos de E distintos que tienen la misma imagen en F. Las aplicaciones sobreyectivas son aquellas en las cuales los elementos de llegada F tienen al menos un antecedente en el conjunto de partida F. Por último, las aplicaciones biyectivas son la que a su vez son inyectivas y sobreyectivas. Una vez que un algoritmo sea correctamente funcional, es necesario definir criterios para medir su rendimiento o comportamiento. Estos criterios se centran principalmente en su simplicidad y en el uso eficiente de los recursos. Muchas veces se piensa que un algoritmo sencillo no es eficiente. Sin embargo, la sencillez es una característica muy interesante a la hora de diseñar un algoritmo, pues facilita su verificación, el estudio de su eficiencia y su mantenimiento. El uso eficiente de los recursos, éste suele medirse en función de dos parámetros: el espacio y el tiempo. El espacio lo definimos como la cantidad de memoria que utiliza, y el tiempo, se define como lo que espera en ejecutar. Ambos representan los costos que supone encontrar la solución al problema planteado mediante un algoritmo. Las funciones son estructuras que pueden tomar una serie de parámetros, y que al finalizar el proceso contenido en la función vuelve al punto seguido donde fue invocado o llamado. Las funciones usan un identificador de la misma forma que las variables, y además permiten devolver un valor. Normalmente se ejecutan de forma secuencial, mientras la función no acabe su proceso el programa que lo haya invocado espera. (Vea Apéndice 3 para ejemplo implementación de una función en el lenguaje de programación C).
Análisis de Algoritmo

Los estudios matemáticos de las propiedades de los algoritmos informáticos han abarcado un amplio espectro, desde los estudios de complejidad generales hasta los resultados analíticos específicos. Una parte importante de los análisis de algoritmos son las relaciones recurrentes. Las relaciones recurrente son ecuaciones que define una secuencia recursiva, entiéndase cada término de la secuencia es definido como una función de términos anteriores. En otras palabras, una relación recurrente es la forma específica de un proceso basado en su propia definición. No obstante, un algoritmo puede ser expresado como recursivo, lo que conlleva a que la solución de un problema en términos de una llamada a sí mismo.
Para poder codificar un algoritmo recursivo se debe tener ciertas propiedades básicas, generalmente la primera llamada al subprograma se plantea sobre un problema de tamaño u orden N, cada nueva ejecución recurrente del mismo se planteara sobre problemas, de igual naturaleza que el original, pero un tamaño menor que N, de tal forma que irá reduciendo progresivamente la complejidad de problema a resolver, hasta llegar a una solución que sea más o menos trivial.
Cabe destacar que para cada proceso iterativo controlado por ciclos existe una forma recurrente de codificarlo. La clave para construir un subprograma o rutina recurrente son: tener un caso base, para evitar que la recursión no sea infinita. Cada llamada recurrente debe definir sobre un problema de menor complejidad. (Vea Apéndice 4 para ejemplos de recurrencia e iterativa). La recurrencia de primer orden son aquellas que pueden aplicar la técnica de su propia definición hasta dejar constantes y valores iniciales, dejando una versión simple de la función. Por otra parte la iteración, se aplica directamente al siguiente tipo de recurrencia comúnmente encontrado, que se reduce inmediatamente a una suma. (Vea Apéndice 5 para ejemplos de suma). La recurrencia de primer orden no lineal surge en una amplia variedad de situaciones, y no podemos esperar a tener una solución de forma cerrada. Por lo tanto, se suele utilizar la convergencia simple. Este método permite calcular los valores iniciales de una recurrencias con un aspecto complicado, que simplemente convergen a una constante, esto es posible porque cada iteración aumenta el número de dígitos significativos, a disposición de un número constante de dígitos. La recurrencia de alto nivel o alto orden son aquellas donde el lado derecho de la ecuación es una combinación lineal y así sucesivamente, y donde los coeficientes involucrados son constantes.
Algoritmos de Ordenamiento

Un algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, por lo cual el resultado de salida ha de ser una permutación o reordenamiento de la entrada que satisfaga la relación de orden dada. Las relaciones de orden más usadas son el orden numérico y el orden lexicográfico. Los algoritmos de ordenación son numerosos, por ello se debe prestar especial atención en su elección. Para determinar cuál de todos es el mejor, hay que prestar atención en la eficiencia. La eficiencia es el factor que mide la calidad y rendimiento de un algoritmo. En el caso de la operación de ordenación, existen dos criterios que suelen seguir a la hora de decidir qué algoritmo, el primero es el tiempo de menor ejecución en computadora, el segundo es el menor número de instrucciones. Sin embargo, no siempre es fácil efectuar estas medidas ya que pueden no disponerse de instrucciones para medida de tiempo.
El mejor criterio para medir la eficiencia de un algoritmo es aislar una operación específica clave en la ordenación y contar el número de veces que se realiza. Así, en el caso de los algoritmos de ordenación, se utilizará como medida de su eficiencia, el número de comparaciones entre elementos efectuados. El algoritmo de ordenación A será más eficiente que el B, si requiere menor número de comparaciones. Se pueden clasificar los diferentes tipos de algoritmos de ordenamientos como básicos y avanzados. Los algoritmos de ordenamiento básicos son aquellos que son fácil de entender, fácil de implementar y para ciertas cantidades de datos son eficientes y para otras son ineficientes. La mayoría de estos algoritmos de este tipo suelen tener un rendimiento exponencial, en otras palabras va decreciendo su tiempo de ejecución si los datos son grandes; ejemplos de tipo de ordenación son: algoritmos por selección (selection sort) y algoritmos por inserción (insertion sort). (Vea Apéndice 6 para una explicación gráfica). Por otro lado, existen los algoritmos de ordenamiento avanzados los cuales son más eficientes pero, más difícil de entender y un poco más difícil de ser implementado. El rendimiento en los algoritmos de ordenamiento avanzados la mayoría son logarítmicos, quiere indicar que su tiempo de ejecución es la mitad de los exponenciales y no se ve afectado por la cantidad de datos; ejemplos de estos tipos de ordenamiento avanzado: ordenamiento rápido (quick sort), ordenación por urnas (bin sort), ordenación por unificación (merge sort), ordenación por montículo (heap sort), entre otros. (Véase Apéndice 7 para una explicación gráfica ordenamientos avanzados).
Algoritmo de Búsqueda

En ciencias de computadoras o ingeniería de informática el uso de los algoritmos de búsqueda es imprescindible y son una de las operaciones más importantes en el procesamiento de la información ya que continuamente nos vemos en la necesidad de investigar unos datos. Un algoritmo de búsqueda consiste en buscar un elemento en una estructura de datos (listas, vectores, matrices y otros), devolviendo así, un valor lógico (Cierto o Falso) en el caso de que exista o no. Los algoritmos de búsqueda tienen dos objetivos primordiales: determinar si el elemento buscado se encuentra o no en la estructura. En el caso que se encuentre el elemento, se devuelve a la posición en la que se encuentra.
Existen diferentes tipos de búsqueda una más eficiente que otras e incluso una más fácil de implementar. Cabe destacar que la implementación de los diferentes tipos de algoritmo para buscar depende de la cantidad de datos que se maneja. Algunos ejemplos de algoritmos de búsqueda son: búsqueda linear o secuencial (linear search o sequential search), búsqueda binaria (binary search), entre otros. La búsqueda secuencial o linear busca un elemento de una lista utilizando un valor destino llamado índice (key). En este tipo de búsqueda los elementos de una lista o vector se exploran uno detrás del otro. Un buen ejemplo de este tipo de búsqueda es el directorio telefónico de una ciudad. El algoritmo de búsqueda secuencial compara cada elemento de la estructura de datos con el índice deseado. Dado que la estructura de datos no está en un orden prefijado es probable que el elemento se encuentre al inicio, a la mitad o al final.
El algoritmo para búsqueda binaria a comparación de la búsqueda linear es más rápido, debido a que comienza su ejecución a mitad de la estructura de datos. Lo único que exige este tipo de algoritmo es que siempre la estructura de dato debe estar ordenada, de tal modo que proporcione una técnica de indagación mejorada. Un ejemplo para entender este tipo de búsqueda es la exploración de una palabra en un diccionario. Según la elección de palabra, se abre el diccionario cerca del principio, al centro o al final dependiendo de la primera letra de la palabra que se pretende buscar. Puede uno acertar con la página correcta; pero, normalmente, no es así y el lector se mueve a la página anterior o posterior del texto. Por ejemplo, si la palabra comienza con «J» y se está en la «L» se mueve uno hacia atrás. Este proceso continúa hasta que se encuentra la página donde está la palabra o hasta concluir que la palabra no está en la lista. (Véase Apéndice 8 para explicación gráfica).
Implementación de Algoritmos Eficientes

La implementación de un algoritmo eficiente se refiere a aquel que tenga un costo de tiempo y de recursos mínimos. Respecto al uso eficiente de los recursos, éste suele medirse en función de dos parámetros: el espacio, es decir, memoria que se utiliza, y el tiempo, lo que demora en ejecutarse. Ambos representan unos costos que supone encontrar la solución al problema planteado mediante un algoritmo. Dichos parámetros van a servir además para comparar algoritmos entre sí, permitiendo determinar el más adecuado entre varios que solucionan un mismo problema. El tiempo de ejecución de un algoritmo va a depender de diversos factores como son: los datos de entrada que se le suministre, la calidad del código generado por el compilador para crear el programa objeto, la naturaleza y rapidez de las instrucciones de la máquina del procesador concreto que ejecute el programa, y la complejidad intrínseca del algoritmo.
Para poder categorizar los diferentes tipos de algoritmos se realiza unos estudios teóricos, lo normal de este estudio es estimar su complejidad de forma asintótica, para ello se utiliza la notación de O-grande (Big-O) para representar la complejidad de un algoritmo como una función que depende del tamaño de la entrada N. (Véase Apéndice 9 para ejemplos en una tabla de las notaciones). Otra forma de medir el rendimiento algorítmico es mediante la técnica de comparativa (Benchmark). La cual es el resultado de la ejecución de un programa informático o un conjunto de programas en una máquina, con el objetivo de estimar el rendimiento de un elemento concreto y poder comparar los resultados con máquinas similares. La técnica de comparativa se puede utilizar en componentes como en la Unidad de Procesamiento Central (CPU), Memoria de Acceso Aleatorio (RAM), tarjetas gráficas, entre otros. En el caso de los algoritmos de surgir uno nuevo y ser implementado es comparado con sus predecesores para asegurar su eficiencia. Las medidas de uso de recurso de los algoritmos están dado por el tamaño de entrada N. Existen dos tipos de medidas bastante comunes que son: complejidad temporal y complejidad espacial. La complejidad temporal se define como el tiempo que tarda en demorar un algoritmo en finalizar. En el caso de la complejidad espacial está definido por cuanto uso de memoria necesita el código y la cantidad que necita los datos sobre los cuales ejecuta el algoritmo. De esta forma los ordenadores o computadoras tienen un impacto en el consumo de energía ya sea por pila o batería o conectada a una toma de electricidad. Estos consumos pueden ser directo o indirecto; un consumo directo es la energía requerida por el ordenador o computadora. Por otro lado el consumo indirecto de energía es aquella requerida por la iluminación, enfriamiento, procesamiento y otros.
No obstante, existen otros tipos de medidas que podrían ser relevante a la hora de ejecución de un algoritmo como: capacidad de transmisión, espacio externo, tiempo de respuesta. La capacidad de transmisión se entiende como las limitaciones que puede causar el ancho de banda. En el caso de espacio externo, se ve afectado por el espacio requerido en un disco o en otro dispositivo externo; esto podría ser mediante un uso temporal. En otras palabras, que utilice el espacio externo a medida que va ejecutando o podría ser una necesidad de largo plazo, como referencia. Ejemplo de este caso es el acceso a un archivo en una memoria externa. Importante y más aún el tiempo de respuesta es bastante relevante, ya que el algoritmo debería responder en un tiempo rápido para una aplicación cuyo datos deben transferidos a eventos externos.
Conclusión

Al finalizar esta investigación podemos deducir que la eficiencia de un algoritmo depende de la utilización que el usuario le va a asignar. Aunque un algoritmo sea analizado de tal forma que uno sea más eficiente sobre los otros, esto va de la mano con la cantidad de datos que se pretende trabajar. No obstante, un “algoritmo ideal” es aquel que se puede ajustar a la cantidad de datos. El cual tiene como base una correlación entre los diferentes algoritmos ya sea para buscar, ordenar, entre otros, según la necesidad del usuario. Hoy día este tipo de algoritmo es el más implementado en las aplicaciones de las empresas y modelajes matemáticos, aunque sea más complejo internamente, tiene un mejor rendimiento ya que puede ser tanto linear, como constante o logarítmico. Un ejemplo de este “algoritmo ideal” en la implantación de un algoritmo de ordenamiento en el lenguaje de programación JAVA.
Las implementaciones algorítmicas en estos tiempos buscan cumplir con lo expresado por los dos científicos de computación Donald Knuth y Tony Hoare, donde establecen que: “Debemos olvidarnos de las pequeñas eficiencias y suspender de decir que alrededor del 97% la mayoría de las veces es ser eficiente. Esto porque la optimización prematura es la raíz de todos los males”. Un buen programador debe buscar el codificar un algoritmo que sea eficiente el 100% de las veces, cuando este se puede alcanzar aunque implique un poco más de trabajo.

Bibliografía

Aguilar, L. (2003). Fundamentos de programación: algoritmos y estructura de datos y objetos. Madrid: McGraw-Hill. Impreso.
Aguilar, L., & Martínez, I. (2004). Algoritmos y estructuras de datos: una perspectiva en C. Madrid: McGraw-Hill. Impreso.
Aho, A. V., Hopcroft, J. E., & Ullman, J. D. (1974). The design and analysis of computer algorithms. Reading, Mass.: Addison-Wesley Pub. Co. Impreso.
Ausiello, G. (1999). Complexity and approximation: combinatorial optimization problems and their approximability properties. New York: Springer. Impreso.
Brassard, G., & Bratley, P. (1998). Fundamentos de algoritmos. Madrid: Prentice Hall. Impreso.
Cormen, T. H. (2001). Introduction to algorithms. Cambridge, Mass.: MIT Press. Impreso.
García, R., & Moreno, A. (1997). Técnicas de diseño de algoritmos. Málaga: Servicio de Publicaciones e Intercambio Científico de la Universidad de Málaga. Impreso.
Goldreich, O. (2008). Computational complexity: a conceptual perspective. Cambridge: Cambridge University Press. Impreso.
Greene, D. H., & Knuth, D. E. (1982). Mathematics for the analysis of algorithms. Boston: Birkäuser. Impreso.
Knuth, D. E. (1968). The art of computer programming. Reading (Mass.): Addison-Wesley. Impreso.
Lage, F. J., & Cataldi, Z. (2008). Fundamentos de algoritmos y programación. Buenos Aires: Nueva librería. Impreso.
Levitin, A. (2012). Introduction to the design & analysis of algorithms. Boston: Pearson. Impreso.
Schrijver, A. (2003). Combinatorial optimization: polyhedra and efficiency. Berlin: Springer. Impreso.
Sedgewick, R., & Flajolet, P. (2013). An introduction to the analysis of algorithms. Upper Saddle River, NJ: Addison-Wesley. Impreso.
Sedgewick, R., & Wayne, K. D. (2011). Algorithms. Upper Saddle River, NJ: Addison-Wesley. Impreso.
Sipser, M. (2006). Introduction to the theory of computation. Boston: Thomson Course Technology. Impreso.

Apéndice 1

Obtener Datos
1000
DISPLAY
“Indique el número de” +
“estudiante: ”
GET
Número Estudiante
DISPLAY
“Indique el nombre del” + estudiante: ”

GET
Nombre Estudiante

DISPLAY
“Indique la cantidad de” + créditos matriculados: ”

GET Cantidad de Créditos

RETURN
Obtener Datos
1000
DISPLAY
“Indique el número de” +
“estudiante: ”
GET
Número Estudiante
DISPLAY
“Indique el nombre del” + estudiante: ”

GET
Nombre Estudiante

DISPLAY
“Indique la cantidad de” + créditos matriculados: ”

GET Cantidad de Créditos

RETURN

Calcular Costo
2000
Costo de Matrícula Cantidad de Créditos * Costo Por Crédito
RETURN
Calcular Costo
2000
Costo de Matrícula Cantidad de Créditos * Costo Por Crédito
RETURN

Mostrar Resulatdos
3000
DISPLAY
“Nombre:” + Nombre Estudiante
DISPLAY
“Número:” + Número Estudiante DISPLAY
“Costo de la matrícula:” + Costo Matrícula
RETURN
Mostrar Resulatdos
3000
DISPLAY
“Nombre:” + Nombre Estudiante
DISPLAY
“Número:” + Número Estudiante DISPLAY
“Costo de la matrícula:” + Costo Matrícula
RETURN

Apéndice 2

Apéndice 3:

Apéndice 4

Apéndice 5

Extraído del texto “Analysis of Algorithmss” de Robert Sedwick
Extraído del texto “Analysis of Algorithmss” de Robert Sedwick

Apéndice 6
Extraído del texto “Algorithms” de Robert Sedwick
Extraído del texto “Algorithms” de Robert Sedwick
Extraído del texto “Algorithms” de Robert Sedwick
Extraído del texto “Algorithms” de Robert Sedwick

Apéndice 7

Extraído de la página personal.kent.edu
Extraído de la página personal.kent.edu
Extraído del foro de la página www.dreamcode.com
Extraído del foro de la página www.dreamcode.com

Extraído de la página de en.wikipedia.org
Extraído de la página de en.wikipedia.org

Extraído de la página de images.zhuxinquan.com

Extraído de la página de images.zhuxinquan.com

Apéndice 8

Extraído de la página www.c-sharpcorner.com
Extraído de la página www.c-sharpcorner.com

Extraído de la página csit.parkland.edu
Extraído de la página csit.parkland.edu

Notación | Nombre | Descripción | O(1) | constante | Determinar si un número es par o impar. Usar una tabla de consulta que asocia constantetamaño. Usar una función hash para obtener un elemento. | O( log n) | logarítmico | Buscar un elemento específico en un vector utilizando un árbol binario de búsqueda o un árbol de búsqueda balanceado, así como todas las operaciones en un Heap binomial. | O(n) | lineal | Buscar un elemento específico en una lista desordenada o en un árbol degenerado (peor caso). | O(n log n) | Log linear o cuasi linear | Ejecutar una transformada rápida de Fourier; heapsort, quicksort (caso peor y promedio), o merge sort | O(n2) | cuadrático | Multiplicar dos números de n dígitos por un algoritmo simple. Bubble sort (caso peor o implementación sencilla), Shell sort, quicksort (caso peor). | O(cn), c > 1 | exponencial | Encontrar la solución exacta al problema del viajante utilizando programación dinámica. Determinar si dos sentencias lógicas son equivalentes utilizando una búsqueda por fuerza bruta |
Apéndice 9

--------------------------------------------
[ 1 ]. Premisa que se considera evidente, se acepta sin demostración y permite deducción de otras fórmulas.
[ 2 ]. Paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso de los animales.
[ 3 ]. Sistema de número binario donde se usa solo dos dígitos, el 0 y el 1.
[ 4 ]. Variable que puede ser recibida por una función, rutina o subrutina.
[ 5 ]. Elementos textuales (símbolos) que nombran identidades en los lenguajes de programación.
[ 6 ]. Repetición de un proceso hasta conseguir la meta deseada
[ 7 ]. Técnica de solución que está basada en su propia definición.
[ 8 ]. Relación de orden, se utiliza para ordenar productos cartesianos de conjuntos ordenados.

Similar Documents

Premium Essay

An Adaptive Differential Evolution Algorithm with Novel Mutation and Crossover Strategies for Global Numerical Optimization

...482 IEEE TRANSACTIONS ON SYSTEMS, MAN, AND CYBERNETICS—PART B: CYBERNETICS, VOL. 42, NO. 2, APRIL 2012 An Adaptive Differential Evolution Algorithm With Novel Mutation and Crossover Strategies for Global Numerical Optimization Sk. Minhazul Islam, Swagatam Das, Member, IEEE, Saurav Ghosh, Subhrajit Roy, and Ponnuthurai Nagaratnam Suganthan, Senior Member, IEEE Abstract—Differential evolution (DE) is one of the most powerful stochastic real parameter optimizers of current interest. In this paper, we propose a new mutation strategy, a fitnessinduced parent selection scheme for the binomial crossover of DE, and a simple but effective scheme of adapting two of its most important control parameters with an objective of achieving improved performance. The new mutation operator, which we call DE/current-to-gr_best/1, is a variant of the classical DE/current-to-best/1 scheme. It uses the best of a group (whose size is q% of the population size) of randomly selected solutions from current generation to perturb the parent (target) vector, unlike DE/current-to-best/1 that always picks the best vector of the entire population to perturb the target vector. In our modified framework of recombination, a biased parent selection scheme has been incorporated by letting each mutant undergo the usual binomial crossover with one of the p top-ranked individuals from the current population and not with the target vector with the same index as used in all variants of DE. A DE variant obtained...

Words: 11062 - Pages: 45

Premium Essay

Data Minging Fit3002 A2

...144 Peter Road, Monash University south Africa 144 Peter Road, Monash University south Africa FIT 3002 Edson Zandamela and Mbuto Carlos Machili Assignment 2 Report FIT 3002 Edson Zandamela and Mbuto Carlos Machili Assignment 2 Report 08 Fall 08 Fall Table of Contents 1. Introduction 2 2. Problem Definition 2 2.1 Objective 2 2.2 Data Characteristics 2 2.3 Model Evaluation Method 3 2.4 Budgetary Constraints 3 2.5 Response rate without a model 3 3. Data Preparation and Pre-processing 4 3.1 File formatting 4 3.2 Missing Values 4 4. Experiments 4 4.1 Learning Algorithm Selection 4 4.2 Iteration Process 6 4.2.1. Attribute selection: 6 4.2.2. Changing Parameter settings 7 4.2.3. Data Normalization 7 4.2.4. Model Recommendation 8 4.2.4.1 Lift Chart 8 4.2.4.2 Gain Chart 9 5. Campaign suggestions 10 6. Conclusion 12 1. Introduction Global Paper’s prime objective is to analyze and evaluate the market response rate of a new paper product that they are currently exploring by testing the market using a mass mailing campaign. The evaluation is based on how much the product will appeal to people based on their earned salaries (<=$50k, or >$50k) per year. The company has purchased demographic data sets (Adult data set and test data) from a known source, and through market research, it has discovered that the new product is likely to appeal to persons who make over $50K a year. This report documents the data mining processes (using...

Words: 3639 - Pages: 15

Premium Essay

Firefly Algorithm Analysis

...Abstract. The speech signal enhancement is needed to obtain clean speech signal from noisy signal. For multimodal optimization we better to use natural-inspired algorithms such as Firefly Algorithm (FA). We compare the firefly algorithm with particle swarm optimization technique. The proposed algorithm contains three module techniques. Those are preprocessing module, optimization module and spectral filtering module. The signals are taken from Loizou’s database and Aurora database for evaluating proposed technique. In this paper we calculate the perceptional evolution of speech quality (PESQ) and signal to noise (SNR) of the enhanced signal. The results of firefly algorithm and PSO are to be compare then we observe that the proposed technique...

Words: 887 - Pages: 4

Free Essay

Dpop

...for Multiagent Constraint Optimization Adrian Petcu and Boi Faltings {adrian.petcu, boi.faltings}@epfl.ch http://liawww.epfl.ch/ Artificial Intelligence Laboratory Ecole Polytechnique F´ d´ rale de Lausanne (EPFL) e e IN (Ecublens), CH-1015 Lausanne, Switzerland Abstract We present in this paper a new, complete method for distributed constraint optimization, based on dynamic programming. It is a utility propagation method, inspired by the sum-product algorithm, which is correct only for tree-shaped constraint networks. In this paper, we show how to extend that algorithm to arbitrary topologies using a pseudotree arrangement of the problem graph. Our algorithm requires a linear number of messages, whose maximal size depends on the induced width along the particular pseudotree chosen. We compare our algorithm with backtracking algorithms, and present experimental results. For some problem types we report orders of magnitude fewer messages, and the ability to deal with arbitrarily large problems. Our algorithm is formulated for optimization problems, but can be easily applied to satisfaction problems as well. 1 Introduction Distributed Constraint Satisfaction (DisCSP) was first studied by Yokoo [Yokoo et al., 1992] and has recently attracted increasing interest. In distributed constraint satisfaction each variable and constraint is owned by an agent. Systematic search algorithms for solving DisCSP are generally derived from depth-first search algorithms based on some form of backtracking...

Words: 5452 - Pages: 22

Free Essay

A Comparative Study of Artificial Bee Colony Algorithm

... Applied Mathematics and Computation journal homepage: www.elsevier.com/locate/amc A comparative study of Artificial Bee Colony algorithm Dervis Karaboga *, Bahriye Akay Erciyes University, The Department of Computer Engineering, Melikgazi, 38039 Kayseri, Turkey a r t i c l e i n f o a b s t r a c t Artificial Bee Colony (ABC) algorithm is one of the most recently introduced swarm-based algorithms. ABC simulates the intelligent foraging behaviour of a honeybee swarm. In this work, ABC is used for optimizing a large set of numerical test functions and the results produced by ABC algorithm are compared with the results obtained by genetic algorithm, particle swarm optimization algorithm, differential evolution algorithm and evolution strategies. Results show that the performance of the ABC is better than or similar to those of other population-based algorithms with the advantage of employing fewer control parameters. Ó 2009 Elsevier Inc. All rights reserved. Keywords: Swarm intelligence Evolution strategies Genetic algorithms Differential evolution Particle swarm optimization Artificial Bee Colony algorithm Unconstrained optimization 1. Introduction Population-based optimization algorithms find near-optimal solutions to the difficult optimization problems by motivation from nature. A common feature of all population-based algorithms is that the population consisting of possible solutions to the problem is modified by applying some operators on the solutions depending...

Words: 19739 - Pages: 79

Free Essay

Function for Input Control

... would like to tell you about heuristics and how it is used to access your database information. This report explains the implementation of an algorithm to optimize a QT with heuristic optimization rules. These rules were taken from [1] chapter 16 and [2] chapter 11. Heuristic optimization rules are based on properties of operations as mathematical operations in the relational algebra. Summaries of these properties can be found both in [1] and [2] also. These properties give the following heuristic rules for query optimization: 1. Perform SELECT operations as far down the tree as possible. This has the effect of reducing the number of tuples in later binary operations which are highly expensive. 2. Perform PROJECT operations as far down the tree as possible. This has the effect of reducing the number of attributes in each tuple and reduces the memory requirements, attempting to cut down on secondary storage usage. 3. Combine successive SELECT operations into one composite SELECT operation and successive PROJECT operations into one composite PROJECT operation. 4. Combine a PRODUCT followed by a SELECT into a JOIN with the selection condition in the SELECT. Also, combine a JOIN followed by a SELECT into a new JOIN which incorporates the selection condition. The remainder of this report describes an implementation of an algorithm which, given a suitable representation of a QT, optimizes according to the...

Words: 395 - Pages: 2

Free Essay

New R Program

...R Tools for Portfolio Optimization Guy Yollin Quantitative Research Analyst Rotella Capital Management Bellevue, Washington Backgrounder Rotella Capital Management Quantitative Research Analyst Systematic CTA hedge fund trading 80+ global futures and foreign exchange markets Insightful Corporation Director of Financial Engineering Developers of S-PLUS®, S+FinMetrics®, and S+NuOPT® J.E. Moody, LLC Financial Engineer Futures Trading, Risk Management, Business Development OGI School of Engineering at Oregon Health & Science University Adjunct Instructor Statistical Computing & Financial Time Series Analysis Electro Scientific Industries, Inc Director of Engineering, Vision Products Division Machine Vision and Pattern Recognition Started Using R in 1999 R Tools for Portfolio Optimization 2 Introduction DJIA: 12/02/2008 - 04/15/2009 100 GM C 80 IBM annualized return (%) JPM 60 INTC HD DD GE PG BAC R-SIG-FINANCE QUESTION: stock price 90 40 MMM 20 KFT XOM PFE CVX JNJ VZ HPQ MCD KO UTX WMT T CAT MRK AXP BA Can I do < fill in the blank > portfolio optimization in R? MSFT DIS AA 0 IBM: 12/02/2008 - 04/15/2009 0 100 5 10 conditional value-at-risk (%) 15 20 95 80 85 Maximum Drawdown Jan Mar ANSWER: drawdown (%) IBM Underwater Graph 0 -5 P/L Distribution -10 -15 Yes! (98% confidence level) 0.12 0.14 Jan Mar 0.10 VaR 0.08 Density CVaR...

Words: 663 - Pages: 3

Premium Essay

Simulation

...Steepest Descent Direction in Optimization - Application and Algorithm Hemanand. T Department of Chemical Engineering, St. Joseph’s College of Engineering, Chennai – 600 119 Abstract: An analytical solution to identify the minimum value of a function used for optimization based on steepest descent technique was extensively discussed with applications in a process. The properties of gradient vector, the oscillation of function values and overshoot were analyzed in a function for the search of minimum. The best step size in each iteration was found by conducting a one-D optimization in the steepest descent direction. The five steps in the algorithm for steepest descent direction were done for the effective search for the minimum included (i) estimate of a starting design and set the iteration counter, (ii) selection of a convergence parameter, calculation of the gradient of function f(x) at the point, (iii) then stop the iteration process at the minimum point, otherwise, search for minimum by next iteration, (iv) calculation of step size to minimize and (v) updation of the design with the new values which yield minimization of an optimization process. Keywords: Gradient Vector, Overshoot, One-D optimization, Convergence Parameter, Oscillation. 1. Introduction: In mathematics, optimization, or mathematical programming, refers to choosing the best element from some set of available alternatives. In the simplest case, this means solving problems in which one...

Words: 1260 - Pages: 6

Premium Essay

An Evolution of Computer Science Research

...Abbreviated version of this report is published as "Trends in Computer Science Research" Apirak Hoonlor, Boleslaw K. Szymanski and M. Zaki, Communications of the ACM, 56(10), Oct. 2013, pp.74-83 An Evolution of Computer Science Research∗ Apirak Hoonlor, Boleslaw K. Szymanski, Mohammed J. Zaki, and James Thompson Abstract Over the past two decades, Computer Science (CS) has continued to grow as a research field. There are several studies that examine trends and emerging topics in CS research or the impact of papers on the field. In contrast, in this article, we take a closer look at the entire CS research in the past two decades by analyzing the data on publications in the ACM Digital Library and IEEE Xplore, and the grants awarded by the National Science Foundation (NSF). We identify trends, bursty topics, and interesting inter-relationships between NSF awards and CS publications, finding, for example, that if an uncommonly high frequency of a specific topic is observed in publications, the funding for this topic is usually increased. We also analyze CS researchers and communities, finding that only a small fraction of authors attribute their work to the same research area for a long period of time, reflecting for instance the emphasis on novelty (use of new keywords) and typical academic research teams (with core faculty and more rapid turnover of students and postdocs). Finally, our work highlights the dynamic research landscape in CS, with its focus constantly ...

Words: 15250 - Pages: 61

Free Essay

Computative Reasoning

...Scott Clark Graduate Student, DOE Computational Science Graduate Fellow 657 Rhodes Hall, Ithaca, NY, 14853 September 19, 2011 sc932@cornell.edu cam.cornell.edu/∼sc932 Education Cornell University Ph.D. Applied Math (current), M.S. Computer Science Ithaca, NY 2008 - 2012(projected) • – Department of Energy Computational Science Graduate Fellow (Full Scholarship, 4 years) – Emphasis on machine learning/data mining and algorithm design/software development related to bioinformatics and optimization • Oregon State University B.Sc. Mathematics, B.Sc. Computational Physics, B.Sc. Physics Corvallis, OR 2004 - 2008 – Graduated Magna Cum Laude with minors in Actuarial Sciences and Mathematical Sciences – Strong emphasis on scientific computing, numerical analysis and software development Skills • Development: C/C++, Python, CUDA, JavaScript, Ruby (Rails), Java, FORTRAN, MATLAB • Numerical Analysis: Optimization, Linear Algebra, ODEs, PDEs, Monte Carlo, Computational Physics, Complex Systems, Iterative Methods, Tomology • Computer Science: Machine Learning, Data Mining, Parallel Programming, Data Structures, Artificial Intelligence, Operating Systems • Discovering and implementing new ideas. Give me an API and a problem and I will figure it out. • Diverse background in Math, Computer Science, Physics and Biology allows me to communicate to a wide scientific and general audience and begin contributing to any group immediately. • I have worked in many places in a myriad of...

Words: 673 - Pages: 3

Premium Essay

Linear Programming-Using Solver in Excel

...Linear Programming: Using Solver in Excel Linear Programming was conceptually developed before World War II by the outstanding Russian mathematician A.N.Kolmogorov and gained its popularity ever since the development of Simplex method by George B. Dantzig in 1947. Linear programming deals with problems of maximizing or minimizing a linear function in the presence of linear equality and/or inequality constraints. In these problems, we find the optimal, or most efficient way of using limited resources to achieve the objective of the situation. Linear Programming enables users to model large and complex problems and solve in a short amount of time by the use of effective algorithm, hence it is a powerful and widely used tool in various fields such as science, industrial engineering, financial planning and management decision making. Nowadays, with the development of technology, most of the real world Linear Programming problems are solved by computer programs. Excel Solver is a popular one. We work through different examples to demonstrate the applications of linear Programming model and the use of Excel Solver for various decision making in operation and supply chain management. Components of Linear Programming model To solve the linear programming problems, we first need to formulate the mathematical description called a mathematical model to represent the situation. Linear programming model usually consists of the following components * Decision variables: These represent...

Words: 2395 - Pages: 10

Premium Essay

Solving Reader Collision Problem in Large Scale Rfid Systems

...problem in large scale RFID systems : Algorithms, performance evaluation and discussions John Sum, Kevin Ho, Siu-chung Lau Abstract—Assigning neighboring RFID readers with nonoverlapping interrogation time slots is one approach to solve the reader collision problem. In which, Distributed Color Selection (DCS) and Colorwave algorithm have been developed, and simulated annealing (SA) technique have been applied. Some of them (we call them non-progresive algorithms), like DCS, require the user to pre-defined the number of time slots. While some of them (we call them progressive), like Colorwave, determine the number automatically. In this paper, a comparative analysis on both non-progressive and progressive algorithms to solve such a problem in a random RFID reader network is presented. By extensive simulations on a dense network consisting of 250 readers whose transmission rates are 100%, a number of useful results have been found. For those non-progressive type algorithms, it is found that DCS is unlikely to generate a collision-free solution, even the number of time slots is set to 20. On the other hand, heuristic and SAbased algorithms can produce collision-free solutions whenever the number of time slots is set to 16. For the cases when the number of time slots is not specified, heuristic-based, SAbased and Colorwave algorithms are all able to determine the number automatically and thus generate collision-free solution. However, SA-based algorithms require much longer time than the...

Words: 6608 - Pages: 27

Free Essay

Comp

...Software and deployment optimization Algorithmic efficiency Main article: Algorithmic efficiency Further information: Analysis of algorithms The efficiency of algorithms has an impact on the amount of computer resources required for any given computing function and there are many efficiency trade-offs in writing programs. Algorithm changes, such as switching from a slow (e.g. linear) search algorithm to a fast (e.g. hashed or indexed) search algorithm can reduce resource usage for a given task from substantial to close to zero. A study by a physicist at Harvard, estimated that the average Google search released 7 grams of carbon dioxide (CO₂).[25] However, Google disputes this figure, arguing instead that a typical search produces only 0.2 grams of CO₂.[26] Resource allocation Main article: Resource allocation Algorithms can also be used to route data to data centers where electricity is less expensive. Researchers from MIT, Carnegie Mellon University, and Akamai have tested an energy allocation algorithm that successfully routes traffic to the location with the cheapest energy costs. The researchers project up to a 40 percent savings on energy costs if their proposed algorithm were to be deployed. However, this approach does not actually reduce the amount of energy being used; it reduces only the cost to the company using it. Nonetheless, a similar strategy could be used to direct traffic to rely on energy that is produced in a more environmentally friendly or efficient...

Words: 370 - Pages: 2

Premium Essay

Artificial Intelligence

...cameras capture, what the people it’s observing are doing,” explains Dr. Raymond Perrault, director, Artificial Intelligence Center, SRI. “It can tell you that someone is walking through the door, or that two people have met and exchanged a package or that a person is digging a hole by the side of the road.” A robot like this with sensors could decide what information is pertinent and report the data to a group of warfighters. These intelligence systems can perceive their environment and adjust. “They manage to do [their mission] while the world changes around them,” Perrault says. To accomplish this task, they organize ideas utilizing mathematical logic. Using sensory data, the programs prove simple theorems by plugging the data into the algorithms, which results in a solution and consequent action.” Garegnani, J. (2010, December 15) Artificial Software is good for Aerospace because it gives us the capabilities to do more traveling into space than ever before. Intelligent System (IS) applications have gained popularity among aerospace professionals in the last decade due to the ease with which several of the IS tools can be...

Words: 564 - Pages: 3

Premium Essay

Optimization 7th Edition Sollution

...Credit Prerequisites Language ONUR KAYA W 14:00-16:00 ENG 206 1583 okaya@ku.edu.tr 3 6 INDR. 262 English Assistant TA/RA/Lab Assistant Name AYLİN LELİZAR POLAT GÜLÇİN ERMİŞ Email aypolat@ku.edu.tr gulermis@ku.edu.tr Office Hours Office Location Course Description Introduction to modeling with integer variables and integer programming; network models, dynamic programming; convexity and nonlinear optimization; applications of various optimization methods in manufacturing, product design, communications networks, transportation, supply chain, and financial systems. Course Objectives The course is designed to teach the concepts of optimization models and solution methods that include integer variables and nonlinear constraints. Network models, integer, dynamic and nonlinear programming will be introduced to the students. Students will be exposed to applications of various optimization methods in manufacturing, product design, communications networks, transportation, supply chain, and financial systems. Several different types of algorithms will also be presented to solve these problems. The course also aims to teach how to use computer programs such as Matlab and GAMS to solve mathematical models. Learning Outcomes Students are expected to model real life problems using mathematical models including integer variables and nonlinear equations. Students will be able to apply mathematical modeling techniques such as dynamic, integer and nonlinear programming...

Words: 768 - Pages: 4