Sie sind auf Seite 1von 14

ALGORITMO:

Etimologa: Proviene del nombre del matemtico persa Mohammed Al-khowanzmi, cuyo apellido traducido al latn es Algorismus. Un algoritmo es un mtodo para resolver un problema, debe presentarse como una secuencia ordenada de instrucciones que siempre se ejecutan en un tiempo finito y con una cantidad de esfuerzo tambin finito. En un algoritmo siempre debe haber un punto de inicio y un punto de terminacin, estos deben ser nicos y deben ser fcilmente identificables. En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrn. Algunos ejemplos en matemtica son el algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides para obtener el mximo comn divisor de dos enteros positivos, o el mtodo de Gauss para resolver un sistema lineal de ecuaciones. En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigedad y sin hacer referencia a una computadora en particular, y adems tiene un lmite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia definicin abarca tanto a algoritmos prcticos como aquellos que solo funcionan en teora, por ejemplo el mtodo de Newton y la eliminacin de Gauss-Jordan funcionan, al menos en principio, con nmeros de precisin infinita; sin embargo no es posible programar la precisin infinita en una computadora, y no por ello dejan de ser algoritmos. En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis de Church-Turing de que toda funcin calculable se puede programar en una mquina de Turing (o equivalentemente, en un lenguaje de programacin suficientemente general). A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemticos como maquinas de Turing entre otros. Sin embargo, estos modelos estn sujetos a un tipo particular de datos como son nmeros, smbolos o graficas mientras que, en general, los algoritmos funcionan sobre una vasta cantidad de estructuras de datos. En general, la parte comn en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos:

Tiempo secuencial.- Un algoritmo funciona en tiempo discretizado paso a paso, definiendo as una secuencia de estados "computacionales" por cada entrada vlida (la entrada son los datos que se le suministran al algoritmo antes de comenzar). Estado abstracto.- Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementacin (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo. Exploracin acotada.- La transicin de un estado al siguiente queda completamente determinada por una descripcin fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de trminos del estado actual. Aritmetizabilidad.- Solamente operaciones innegablemente calculables estn disponibles en el paso inicial. Caractersticas: Las caractersticas fundamentales que debe cumplir todo algoritmo son:

Ser definido: Sin ambigedad, cada paso del algoritmo debe indicar la accin a realizar sin criterios de interpretacin. Ser finito: Un nmero especfico y numerable de pasos debe componer al algoritmo, el cual deber finalizar al completarlos. Tener cero o ms entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende. Tener una o ms salidas: Debe siempre devolver un resultado; de nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como nicamente verlos en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programacin que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones del algoritmo.

Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada ms ni nada menos que aquello que se requiera para y en su ejecucin. En resumen un algoritmo debe ser finito, definido, legible, eficiente, concreto, no ambiguo y preciso.

Representacin de Algoritmos:
Existen varias maneras de representar algoritmos, una de las ms evidentes es el lenguaje natural; sin embargo el lenguaje natural no siempre es lo suficientemente preciso. Como alternativa tenemos el Pseudocdigo.

Pseudocdigo:
El pseudocdigo es una forma de representar un algoritmo, mediante sentencias similares al lenguaje natural, pero con una precisin mayor. Existen muchas variantes de pseudocdigo, aqu se adoptarn las siguientes normas: A. Todos los algoritmos comenzarn con una sentencia algoritmo, Esto es, una lnea con la palabra clave algoritmo seguida por el nombre del algoritmo. Por ejemplo: Algoritmo EJEMPLO Algoritmo Ganancia B. Despus de la sentencia algoritmo se declararn las constantes que se requieran en el programa. La decisin de constantes se identificar con la palabra clave constantes. Por ejemplo: Constante PI 3.1416 Constante UNO 1 C. A continuacin aparecer el desarrollo del algoritmo, al cual nombraremos PRINCIPAL. Dicho desarrollo se encontrar entre las palabras clave inicio y fin. Estas palabras clave limitarn un bloque de instrucciones siempre que se requieran. Por ejemplo:

PRINCIPAL Inicio ..... Fin D. A continuacin de la palabra clave inicio se declaran las variables. En este caso el tipo de variables se indicar al principio de la lista; separada por un espacio se colocar la lista de variables, separadas por comas (,). Cada lista incluir solamente variables de mismo tipo. Ejemplo: Flotante X, Y, Z Enteras I, J, K E. En cualquier parte del algoritmo podrn colocarse comentarios para hacer aclaraciones o comentarios relacionados con la instruccin u operacin que faciliten la interpretacin. Los comentarios aparecern encerrados entre /*y*/. Ejemplo: /* Este es un comentario*/ F. Las palabras clave se imprimirn en letra negrita. Cuando se use letra manuscrita se sugiere subrayar las palabras clave.

Diagrama de Flujo:
Diagrama de flujos que expresa un algoritmo para calcular la raz cuadrada de un nmero x. Los diagramas de flujo son descripciones grficas de algoritmos; usan smbolos conectados con flechas para indicar la secuencia de instrucciones y estn regidos por.ISO. Los diagramas de flujo son usados para representar algoritmos pequeos, ya que abarcan mucho espacio y su construccin es laboriosa. Por su facilidad de lectura son usados como introduccin a los algoritmos, descripcin de un lenguaje y descripcin de procesos a personas ajenas a la computacin.

Los smbolos que utiliza son:

Recomendaciones para los Diagramas de Flujo: Se debe evitar el cruce de lneas, en caso de ser necesario separar el flujo del diagrama a un sitio distinto, se puede realizar utilizando los conectores. Se debe tener en cuenta que solo se van a utilizar conectores cuando sea estrictamente necesario. No deben quedar lneas de flujo sin conectar. Todo texto escrito dentro de un smbolo debe ser legible, preciso, evitando el uso de muchas palabras.

Diagramas estructurados (Nassi-Schneiderman):


El diagrama estructurado N-S tambin conocido como diagrama de chapin es como un diagrama de flujo en el que se omiten las flechas de unin y las cajas son contiguas. Las acciones sucesivas se pueden escribir en cajas sucesivas y como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. Un algoritmo se represente en la siguiente forma:

ESTRUCTURAS DE CONTROL
Las estructuras de control determinan la secuencia en que deben ejecutarse las instrucciones de un algoritmo.

Existen tres Estructuras de control bsicas primitivas y combinndolas se puede escribir cualquier algoritmo. Estas estructuras primitivas son: la secuencia, la bifurcacin condicional y el ciclo. a) SECUENCIA La estructura de control ms simple es la secuencia. Esta estructura permite que las instrucciones que la constituyen se ejecuten una tras otra en el orden en que se listan. Por ejemplo, considrese el siguiente fragmento de un algoritmo:

En este fragmento se indica que se ejecute la operacin 1 y a continuacin la operacin 2. b) BIFURCACIN CONDICIONAL La estructura de bifurcacin condicional permite elegir una de dos opciones en una alternativa, dependiente del resultado obtenido al evaluar la condicin. Vase el siguiente fragmento de algoritmo:

La palabra clave si indica que estamos en una sentencia de bifurcacin condicional. Si la condicin es verdadera se ejecuta la operacin 1, de otra manera se ejecutar la operacin 2. c) CICLOS Los ciclos son estructuras de control que permiten ejecutar varias veces una operacin. Existen varios tipos de ciclos: Ciclo Mientras (WHILE) Este ciclo repite una operacin, mientras se cumpla una cierta condicin. Por ejemplo:

La palabra clave mientras, seala que se trata de un ciclo mientras. La condicin se verifica antes de ejecutar la operacin. Ciclo Hacer-mientras (DO-WHILE) En este ciclo la operacin se ejecuta y despus se evala la condicin. Si es verdadera, la operacin se evala de nuevo, y as sucesivamente.

Cuando la condicin se hace falsa el ciclo termina. Ciclo Desde (FOR) En este ciclo se ejecuta una operacin un cierto nmero de veces, especificando en un contador el incremento unitario, desde un Valor Inicial hasta un Valor Final que marcar la condicin de salida del ciclo. Por ejemplo:

d) IR A (GOTO) Existe una sentencia adicional que permite transferir la secuencia de un algoritmo a cualquier parte de l mismo. Es la sentencia ir a. Aunque la posibilidad de pasar a cualquier parte de un programa, d una sensacin de libertad de accin, tiene el terrible inconveniente de perder fcilmente el seguimiento del programa.

Algoritmo de Bsqueda:
Un algoritmo de bsqueda es aquel que est diseado para localizar un elemento con ciertas propiedades dentro de una estructura de datos; por ejemplo, ubicar el registro correspondiente a cierta persona en una base de datos, o el mejor movimiento en una partida de ajedrez. La variante ms simple del problema es la bsqueda de un nmero en un vector. Existen 2 tipos de algoritmos que son los ms usados para encontrar elementos en una estructura de datos: Algoritmo de Bsqueda Lineal: Es sencilla de implementar e intuitiva. Bsicamente consiste en buscar de manera secuencial un elemento, es decir, preguntar si el elemento buscado es igual al primero, segundo, tercero y as sucesivamente hasta encontrar el deseado. Entonces este algoritmo tiene una complejidad de O(n). Algoritmo de Bsqueda Binaria: Utiliza la tcnica divide y vencers. Uno de los requisitos antes de ejecutar la bsqueda binaria, es que el conjunto de elementos debe de estar ordenado. Supongamos que tenemos el siguiente array. 57 53 21 37 17 36 22 3 44 97 89 26 31 47 8 17 Debemos ordenarlo 3 8 17 17 21 22 26 31 36 37 44 47 53 57 89 97 Se utiliza cuando el vector en el que queremos determinar la existencia de un elemento est previamente ordenado. Este algoritmo reduce el tiempo de bsqueda considerablemente, ya que disminuye exponencialmente el nmero de iteraciones necesarias.

Como funciona la bsqueda binaria?

Necesitamos una seria de datos para realizar la bsqueda: El elemento en la posicin inicio, fin, medio. Y por supuesto el tamao del vector y elemento que queremos buscar. inicio = 0; fin = tam 1; medio = (inicio + fin) / 2; Preguntamos si el elemento buscado es igual al elemento que se encuentra en la posicin medio del array, si es afirmativo ya encontramos el elemento y no hay nada ms que hacer. 1 2 3 4 } if(buscado == array[medio]){ cout << "Se encuentra en la posicion " << medio + 1 << endl; return array[medio];

Si no es as. Preguntamos si el elemento que se encuentra en la posicin medio es mayor al elemento buscado, si es afirmativo y como el array est ordenado, quiere decir que elemento buscado es menor al del medio. Entonces ahora solo buscaramos en esa divisin del array, por lo tanto, el fin ahora sera el elemento anterior al medio. 1 2 3 } if(array[medio] > buscado){ fin = medio - 1;

De lo contrario quiere decir que elemento buscado es mayor al del medio, entonces debemos buscar en la otra divisin del array, por lo tanto el inicio sera el elemento posterior al medio. 1 2 3 } else { inicio = medio + 1;

Con cualquiera de estas 2 operaciones descartamos la otra mitad del array y por lo tanto reducimos notablemente el nmero de iteraciones. Por lo tanto, en cada iteracin, la bsqueda se reduce a la mitad del array. Realizamos esto en un bucle mientras el inicio sea menor o igual

al fin. El algoritmo de bsqueda binaria tiene una complejidad de O(log n). Nota: Para realizar la bsqueda binaria, estoy incluyendo el archivo que contiene el algoritmo de ordenamiento quicksort, para no volver a escribirlo y as reutilizar cdigo. #include quicksort.h

MTODO DE LA BURBUJA
El mtodo de la burbuja es uno de los ms simples, es tan fcil como comparar todos los elementos de una lista contra todos, si se cumple que uno es mayor o menor a otro, entonces los intercambia de posicin. Existen tres tipos o clases del mtodo de la burbuja que se distinguen por su forma y su forma de desarrollarla, estas son:

Burbuja simple: es la que compara todos con todos, generando


comparaciones extras, por ejemplo, no tiene sentido que se compare con sigo mismo o que se compare con los valores anteriores a l, ya que supuestamente, ya estn ordenados.

for (i=1; i<LIMITE; i++) for j=0 ; j<LIMITE - 1; j++) if (vector[j] > vector[j+1]) temp = vector[j]; vector[j] = vector[j+1]; vector[j+1] = temp;
Por ejemplo, imaginemos que tenemos los siguientes valores: 5 6 1 0 3

Lo que hara una burbuja simple, seria comenzar recorriendo los valores de izquierda a derecha, comenzando por el 5. Lo compara con el 6, con el 1, con el 0 y con el 3, si es mayor o menor (dependiendo si el orden es ascendiente o descendiente) se intercambian de posicin. Luego contina con el siguiente, con el 6, y lo compara con todos los elementos de la lista, esperando ver si se cumple o no la misma condicin que con el primer elemento. As, sucesivamente, hasta el ltimo elemento de la lista.

Burbuja mejorada: Una nueva versin del mtodo de la burbuja seria limitando el nmero de comparaciones, dijimos que era intil que se compare consigo misma. Si tenemos una lista de 10.000 elementos, entonces son 10.000 comparaciones que estn sobrando. Imaginemos si tenemos 1.000.000 de elementos. El metodo seria mucho mas optimo con n comparaciones menos (n = total de elementos).
Burbuja optimizada

Das könnte Ihnen auch gefallen