0% encontró este documento útil (0 votos)
62 vistas10 páginas

ALGORITMOS

Un algoritmo es un conjunto de instrucciones ordenadas y finitas para resolver un problema. Los algoritmos son objeto de estudio de la algoritmia y pueden expresarse de varias formas como pseudocódigo o diagramas de flujo. El análisis de algoritmos evalúa los recursos como tiempo y memoria que consume.

Cargado por

Langosta Evil
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
62 vistas10 páginas

ALGORITMOS

Un algoritmo es un conjunto de instrucciones ordenadas y finitas para resolver un problema. Los algoritmos son objeto de estudio de la algoritmia y pueden expresarse de varias formas como pseudocódigo o diagramas de flujo. El análisis de algoritmos evalúa los recursos como tiempo y memoria que consume.

Cargado por

Langosta Evil
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

ALGORIOTMO

Un algoritmo es un conjunto de instrucciones o reglas definidas y no-


ambiguas, ordenadas y finitas que permite, típicamente, solucionar un
problema, realizar un cómputo, procesar datos y llevar a cabo otras
tareas o actividades.1 Dado un estado inicial y una entrada, siguiendo
los pasos sucesivos se llega a un estado final y se obtiene una solución.
Los algoritmos son el objeto de estudio de la algoritmia
En la vida cotidiana, se emplean algoritmos frecuentemente para
resolver problemas determinados. Algunos ejemplos son los manuales
de usuario, que muestran algoritmos para usar un aparato, o las
instrucciones que recibe un trabajador de su patrón. Algunos ejemplos
en matemática son el algoritmo de multiplicación, para calcular el
producto, el algoritmo de la división para calcular el cociente de dos
números, el algoritmo de Euclides para obtener el máximo común
divisor de dos enteros positivos, o el método de Gauss para resolver
un sistema de ecuaciones lineales.
En términos de programación, un algoritmo es una secuencia de pasos
lógicos que permiten solucionar un problema

En general, no existe ningún consenso definitivo en cuanto a la


definición formal de algoritmo. Muchos autores los señalan como listas
de instrucciones para resolver un cálculo o un problema abstracto, es
decir, que un número finito de pasos convierten los datos de un
problema (entrada) en una solución (salida).216789 Sin embargo, cabe
notar que algunos algoritmos no tienen necesariamente que terminar o
resolver un problema en particular. Por ejemplo, una versión modificada
de la criba de Eratóstenes, que nunca termine de calcular números
primos, no deja de ser un algoritmo.
Medios de expresión de un algoritmo
Los algoritmos pueden ser expresados de muchas maneras, incluyendo
al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de
programación entre otros. Las descripciones en lenguaje natural tienden
a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo
evita muchas ambigüedades del lenguaje natural. Dichas expresiones
son formas más estructuradas para representar algoritmos; no obstante,
se mantienen independientes de un lenguaje de programación
específico.
La descripción de un algoritmo suele hacerse en
tres niveles:
1. Descripción de alto nivel. Se establece el problema, se selecciona
un modelo matemático y se explica el algoritmo de manera verbal,
posiblemente con ilustraciones y omitiendo detalles.
2. Descripción formal. Se usa un pseudocódigo para describir la
secuencia de pasos que encuentran la solución.
3. Implementación. Se muestra el algoritmo expresado en un
lenguaje de programación específico o algún objeto capaz de
llevar a cabo instrucciones.
También es posible incluir un teorema que demuestre que el algoritmo
es correcto, un análisis de complejidad o ambos
Diagrama de flujo
Los diagramas de flujo son descripciones gráficas de algoritmos; usan
símbolos conectados con flechas para indicar la secuencia de
instrucciones y están regidos por ISO.
Los diagramas de flujo se emplean para representar algoritmos
pequeños, ya que abarcan mucho espacio y su construcción es
laboriosa. Por su facilidad de lectura se utilizan como introducción a los
algoritmos, descripción de un lenguaje y descripción de procesos a
personas ajenas a la computación.
Pseudocódigo
El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una
descripción de alto nivel de un algoritmo que emplea una mezcla de
lenguaje natural con algunas convenciones sintácticas propias de
lenguajes de programación, como asignaciones, ciclos y condicionales,
aunque no está regido por ningún estándar.
El pseudocódigo está pensado para facilitar a las personas el
entendimiento de un algoritmo y, por lo tanto, puede omitir detalles
irrelevantes que son necesarios en una implementación.
Programadores diferentes suelen utilizar convenciones distintas, que
pueden estar basadas en la sintaxis de lenguajes de programación
concretos. Sin embargo, el pseudocódigo, en general, es comprensible
sin necesidad de conocer o usar un entorno de programación
específico, y es a la vez suficientemente estructurado para que su
implementación se pueda hacer directamente a partir de él.
Así, el pseudocódigo cumple con las funciones antes mencionadas para
representar algo abstracto, los protocolos son los lenguajes para la
programación. Busque fuentes más precisas para tener mayor
comprensión del tema.

Sistemas formales
La teoría de autómatas y la teoría de funciones recursivas proveen
modelos matemáticos que formalizan el concepto de algoritmo. Los
modelos más comunes son la máquina de Turing, máquina de
registro y funciones μ-recursivas. Estos modelos son tan precisos como
un lenguaje máquina, careciendo de expresiones coloquiales o
ambigüedad; sin embargo, se mantienen independientes de cualquier
computadora y de cualquier implementación.

Implementación
Muchos algoritmos se han ideado para implementarse en un programa.
No obstante, los algoritmos pueden ser implementados en otros medios,
como una red neuronal, un circuito eléctrico o un aparato mecánico y
eléctrico. Algunos algoritmos incluso se diseñan especialmente para
implementarse usando lápiz y papel. El algoritmo de
multiplicación tradicional, el algoritmo de Euclides, la criba de
Eratóstenes y muchas formas de resolver la raíz cuadrada son solo
algunos ejemplos.

Variables
Son elementos que toman valores específicos de un tipo de datos
concreto. La declaración de una variable puede realizarse comenzando
con var. Principalmente, existen dos maneras de otorgar valores
iniciales a variables:

1. Mediante una sentencia de asignación.


2. Mediante un procedimiento de entrada de datos (por ejemplo:
'read')

Estructuras secuenciales
La estructura secuencial es aquella en la que una acción sigue a otra
en secuencia. Las operaciones se suceden de tal modo que la salida de
una es la entrada de la siguiente y así sucesivamente hasta el fin del
proceso. La asignación de esto consiste en el paso de valores o
resultados a una zona de la memoria. Dicha zona será reconocida con
el nombre de la variable que recibe el valor. La asignación se puede
clasificar de la siguiente forma:

1. Simples: Consiste en pasar un valor constante a una variable (a


← 15)
2. Contador: Consiste en usarla como un verificador del número de
veces que se realiza un proceso (a ← a + 1)
3. Acumulador: Consiste en usarla como un sumador en un proceso
(a ← a + b)
4. De trabajo: Donde puede recibir el resultado de una operación
matemática que involucre muchas variables (a ← c + b*1/2).
5. Un ejemplo de estructura secuencial, como obtener el área de un
triángulo:
6. Inicio
7. ...
8. float b, h, a;
9. printf("Diga la base");
10. scanf("%f", &b);
11. printf("Diga la altura");
12. scanf("%f", &h);
13. a = (b*h)/2;
14. printf("El área del triángulo es %f", a)
15. ...
16. Fin

Algoritmos como funciones

Un algoritmo se puede concebir como una función que transforma los


datos de un problema (entrada) en los datos de una solución (salida).
Más aún, los datos se pueden representar a su vez como secuencias
de bits, y en general, de símbolos cualesquiera.21214 Como cada
secuencia de bits representa a un número natural (véase Sistema
binario), entonces los algoritmos son en esencia funciones de los
números naturales en los números naturales que sí se pueden calcular
En ocasiones los algoritmos son susceptibles de nunca terminar, por
ejemplo, cuando entran a un bucle infinito. Cuando esto ocurre, el
algoritmo nunca devuelve ningún valor de salida, y podemos decir que
la función queda indefinida para ese valor de entrada. Por esta razón se
considera que los algoritmos son funciones parciales, es decir, no
necesariamente definidas en todo 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 que se tarde, se
dice que dicha función es computable. No todas las funciones entre
secuencias datos son computables
Análisis de algoritmos
Como medida de la eficiencia de un algoritmo, se suelen estudiar los
recursos (memoria y tiempo) que consume el algoritmo. El análisis de
algoritmos se ha desarrollado para obtener valores que de alguna forma
indiquen (o especifiquen) la evolución del gasto de tiempo y memoria
en función del tamaño de los valores de entrada.
El análisis y estudio de los algoritmos es una disciplina de las ciencias
de la computación y, en la mayoría de los casos, su estudio es
completamente abstracto sin usar ningún tipo de lenguaje de
programación ni cualquier otra implementación; por eso, en ese sentido,
comparte las características de las disciplinas matemáticas. Así, el
análisis de los algoritmos se centra en los principios básicos del
algoritmo, no en los de la implementación particular. Una forma de
plasmar (o algunas veces "codificar") un algoritmo es escribirlo
en pseudocódigo o utilizar un lenguaje muy simple tal como Léxico,
cuyos códigos pueden estar en el idioma del programador.

Características de los algoritmos


Asimismo, los algoritmos presentan una serie de características
comunes. Son:
 Precisos. Objetivos, sin ambigüedad.
 Ordenados. Presentan una secuencia clara y precisa para
poder llegar a la solución.
 Finitos. Contienen un número determinado de pasos.
 Concretos. Ofrecen una solución determinada para la
situación o problema planteados.
 Definidos. El mismo algoritmo debe dar el mismo resultado al
recibir la misma entrada.
¿Cuáles son las características de los
algoritmos?
Independientemente del uso que se le dé a los algoritmos, todos
guardan en común las siguientes características:

1. Inicio y fin: parten de un estado inicial desde el cual ejecutan


una serie de instrucciones para llegar a un estado final de salida
o finalización.
2. Exactitud: deben indicar un orden claro, específico y lógico de
instrucciones para la ejecución de cada paso, sin que exista
espacio para la ambigüedad.
3. Secuencia: deben seguir una serie de pasos ordenados,
entendibles y previamente establecidos.
4. Completos: deben tener en cuenta todas las posibilidades y
presentaciones del problema para ejecutar la solución exacta.
5. Finitos: el número de pasos para ejecutar la tarea debe ser
finito para darla por concluida.
6. Abstractos: representan una guía o modelo para ordenar
procesos

¿Qué tipos de algoritmos existen?


Según su sistema de signos, es decir, cómo se describen los pasos a
seguir, los algoritmos pueden ser:

 Cuantitativos y cualitativos: si funcionan a través de


cálculos matemáticos o secuencias lógicas.
 Computacionales o no computacionales: si requieren o
no del uso de un ordenador para la solución o ejecución de una
determinada tarea.

Según su función y estrategia, es decir, qué hacen y cómo lo hacen,


existen cinco tipos de algoritmos:
 Algoritmos de búsqueda: aquellos que encuentran uno o
varios elementos que presenten un conjunto de propiedades
dentro de una determinada estructura de datos. Las búsquedas
pueden ser:
o Secuenciales: comparan el elemento a buscar con cada
elemento del conjunto, hasta encontrarlo.
o Binarias: comparan el elemento de búsqueda con un elemento
ubicado en el medio de una serie ordenada para determinar si
son iguales.

 Algoritmo de ordenamiento: son los que se utilizan para


reorganizar elementos de un listado, siguiendo unas pautas de
orden numérico o alfanumérico. Pueden ser:
o De burbuja: comparan cada elemento de la lista a ordenar,
intercambiando posiciones si no están ordenados correctamente.
o Por selección: ordenan a partir del elemento más pequeño de
forma consecutiva.
o Rápido: eligen un elemento del conjunto y reubican el resto en
torno a este en función de si son menores o mayores respecto a
él.

 Algoritmos voraces: se trata de un tipo de algoritmo


aplicado a problemas de optimización y se utiliza para la toma de
decisiones lógicas para llegar a una solución final global. Estos
algoritmos no son reversibles una vez que se toma la decisión de
ejecutarlos.

 Programación dinámica: este tipo de algoritmo está


asociado al método con el que se procesa el resultado. La
solución de un elemento depende de la solución de una serie de
problemas más pequeños, por lo que conforme se van
solucionando subproblemas, se van almacenando las soluciones
para que no sea necesario calcularlas nuevamente. Con la
programación dinámica se reduce el tiempo de ejecución del
algoritmo.
 Algoritmos probabilísticos: este tipo de algoritmosbasa sus
resultados en el azar, de manera que, en líneas generales, se pueda
obtener una buena solución para cualquier distribución aleatoria
de inputs de entrada. El azar representa una optimización de tiempo
respecto a si se determinara la mejor alternativa para cada caso
individual. Se obtiene, en consecuencia, una buena solución a un
problema para cualquier distribución de datos de entrada.

También podría gustarte