Algoritmo
-
Upload
aaron-andres-villacis -
Category
Education
-
view
3.244 -
download
0
description
Transcript of Algoritmo
ALGORITMO
En matemáticas, ciencias de la computación y
disciplinas relacionadas, un algoritmo (del griego y
latín, dixit algorithmus y este a su vez del matemático
persa Al-Juarismi[1] ) es un conjunto preescrito de
instrucciones o reglas bien definidas, ordenadas y
finitas que permite realizar una actividad mediante
pasos sucesivos que no generen dudas a quien deba
realizar dicha actividad.[2] Dados 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.[1]
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
patrón. Algunos ejemplos en matemática son 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 lineal de ecuaciones.
DEFINICIÓN FORMAL
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 problema abstracto, es decir, que un número
finito de pasos convierten los datos de un problema (entrada) en una
solución (salida).[1] [2] [3] [4] [5] [6] Sin embargo cabe notar que algunos
algoritmos no necesariamente tienen 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.[7]
A lo largo de la historia varios autores han tratado de definir formalmente
a los algoritmos utilizando modelos matemáticos como máquinas de Turing
entre otros.[8] [9] Sin embargo, estos modelos están sujetos a un tipo
particular de datos como son números, símbolos o gráficas mientras que,
en general, los algoritmos funcionan sobre una vasta cantidad de
estructuras de datos.[3] [1] En general, la parte común en todas las
definiciones se puede resumir en las siguientes tres propiedades siempre y
cuando no consideremos algoritmos paralelos:[7]
Tiempo secuencial. Un algoritmo funciona en tiempo
discretizado –paso a paso–, definiendo así una secuencia de
estados "computacionales" por cada entrada válida (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 implementación (los algoritmos son
objetos abstractos) de manera que en un algoritmo las
estructuras de primer orden son invariantes bajo
isomorfismo.Exploración acotada. La transición de un estado
al siguiente queda completamente determinada por una
descripción fija y finita; es decir, entre cada estado y el
siguiente solamente se puede tomar en cuenta una cantidad
fija y limitada de términos del estado actual.
En resumen, un algoritmo es cualquier cosa que funcione paso a
paso, donde cada paso se pueda describir sin ambigüedad y sin
hacer referencia a una computadora en particular, y además tiene
un límite fijo en cuanto a la cantidad de datos que se pueden
leer/escribir en un solo paso. Esta amplia definición abarca tanto
a algoritmos prácticos como aquellos que solo funcionan en
teoría, por ejemplo el método de Newton y la
eliminación de Gauss-Jordan funcionan, al menos en principio,
con números de precisión infinita; sin embargo no es posible
programar la precisión infinita en una computadora, y no por ello
dejan de ser algoritmos.[10] En particular es posible considerar una
cuarta propiedad que puede ser usada para validar la tesis de
Church-Turing de que toda función calculable se puede programar
en una máquina de Turing (o equivalentemente, en un lenguaje de
programación suficientemente general):[
MEDIOS DE EXPRESIÓN DE UN
ALGORITMOLos 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 usualmente se hace
en tres niveles:
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.
Descripción formal. Se usa pseudocódigo para
describir la secuencia de pasos que encuentran
la solución.
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.
Un algoritmo es un conjunto finito de instrucciones o pasos que sirven
para ejecutar una tarea o resolver un problema. En la vida cotidiana
empleamos algoritmos en multitud de ocasiones para resolver diversos
problemas como por ejemplo para poner una lavadora (conjunto de
instrucciones pegadas en la tapa de la máquina), para tocar música
(partituras), para construir un aeroplano a escala (expresados en las
instrucciones), para hacer trucos de magia (pasos para hacer el truco) o,
incluso, para hacer recetas de cocina (pasos de la receta). Otros ejemplos,
como el algoritmo de la división para calcular el cociente de dos números
o el algoritmo de Euclides para calcular el máximo común divisor de dos
enteros positivos pertenecen al ámbito de las matemáticas.
De un modo más formal, un algoritmo es una secuencia finita de
instrucciones realizables, no ambiguas, cuya ejecución conduce a
una resolución de un problema.
Otra definición de algoritmo es la siguiente: Un algoritmo es una
metodologia para resolver un problemas mediante una serie de
fases o etapas precisas, definidas y finitas.
El algoritmo nos da la solución genérica a un problema y lo
podremos emplear todas las veces que se nos presente ese mismo
problema: por ejemplo el algoritmo de la división es genérico e
independiente de los números que tengamos que dividir.
Una vez descubierto un algoritmo para efectuar una tarea, la
realización de ésta ya no requiere entender los principios en que se
basa dicho algoritmo, pues el proceso se reduce a seguir las
instrucciones del mismo. Por ejemplo, podemos hacer una división
siguiendo el algoritmo sin entender por qué funciona el algoritmo. La
inteligencia requerida para llevar a cabo la tarea está codificada en el
algoritmo.
Las máquinas algorítmicas son aquellas capaces de llevar a cabo
algoritmos, y entre ellas están los ordenadores. En el ámbito de los
ordenadores, los algoritmos se expresan como programas. Los
programas son
algoritmos codificados con un lenguaje no ambiguo cuya sintaxis
y semántica "entiende" el ordenador. . Hay muchos lenguajes de
programación de ordenadores, entre ellos, Fortran, PASCAL, C...
Así pues, si queremos que un ordenador efectúe una tarea,
primero debemos descubrir un algoritmo para llevarla a cabo;
programar el algoritmo en la máquina consiste en representar ese
algoritmo de modo que se pueda comunicar a una máquina. En
otras palabras, debemos transformar el algoritmo conceptual en un
conjunto de instrucciones y representar estas últimas en un
lenguaje sin ambigüedad.
Gracias a la capacidad para comunicar nuestros pensamientos
mediante algoritmos, podemos construir máquinas cuyo
comportamiento simula inteligencia. El nivel de inteligencia que simula
la máquina, estará limitado por la inteligencia que podamos
comunicarle por medio de algoritmos. Las máquinas sólo pueden
realizar tareas algorítmicas. Si encontramos un algoritmo para dirigir
la ejecución de una tarea, podemos construir una máquina para llevarla
a cabo siempre que la tecnología haya avanzado lo suficiente. Si no
encontramos un algoritmo, es posible que la ejecución esté fuera de las
capacidades de las máquinas. Un computador es todo aparato o
máquina destinada a procesar información, entendiéndose por proceso,
las sucesivas fases, manipulaciones o transformaciones que sufre la
información para resolver un problema determinado, siguiendo las
instrucciones de un programa registrado.
DIAGRAMA DE FLUJO
DIAGRAMA DE FLUJOEl diagrama de flujo es la representación gráfica
del algoritmo o proceso. Se utiliza en disciplinas
como la programación, la economía, los procesos
industriales y la psicología cognitiva. Estos
diagramas utilizan símbolos con significados bien
definidos que representan los pasos del algoritmo, y
representan el flujo de ejecución mediante flechas
que conectan los puntos de inicio y de fin de
proceso.
CARACTERÍSTICASUn diagrama de flujo siempre tiene un único punto de
inicio y un único punto de término.
Las siguientes son acciones previas a la realización del
diagrama de flujo:
Identificar las ideas principales a ser incluidas en el
diagrama de flujo. Deben estar presentes el dueño o
responsable del proceso, los dueños o responsables del
proceso anterior y posterior y de otros procesos
interrelacionados, otras partes interesadas.
Definir qué se espera obtener del diagrama de flujo.
Identificar quién lo empleará y cómo.
Establecer el nivel de detalle requerido.
Determinar los límites del proceso a describir.
Los pasos a seguir para construir el diagrama de flujo son:
Establecer el alcance del proceso a describir. De esta manera
quedará fijado el comienzo y el final del diagrama.
Frecuentemente el comienzo es la salida del proceso previo y
el final la entrada al proceso siguiente.
Identificar y listar las principales actividades/subprocesos
que están incluidos en el proceso a describir y su orden
cronológico.
Si el nivel de detalle definido incluye actividades menores,
listarlas también.
Identificar y listar los puntos de decisión.
Construir el diagrama respetando la secuencia cronológica y
asignando los correspondientes símbolos.
Asignar un título al diagrama y verificar que esté completo y
describa con exactitud el proceso elegido.
VENTAJAS DE LOS DIAGRAMAS DE FLUJO
Favorecen la comprensión del proceso al mostrarlo como un dibujo.
El cerebro humano reconoce muy fácilmente los dibujos. Un buen
diagrama de flujo reemplaza varias páginas de texto.
Permiten identificar los problemas y las oportunidades de mejora del
proceso. Se identifican los pasos, los flujos de los re-procesos, los
conflictos de autoridad, las responsabilidades, los cuellos de botella, y
los puntos de decisión.
Muestran las interfaces cliente-proveedor y las transacciones que en
ellas se realizan, facilitando a los empleados el análisis de las mismas.
Son una excelente herramienta para capacitar a los nuevos
empleados y también a los que desarrollan la tarea, cuando se realizan
mejoras en el proceso.
Al igual que el pseudocódigo, el diagrama de flujo con fines de
análisis de algoritmos de programación puede ser ejecutado en un
ordenador, con un Ide como Free DFD.
TIPOS DE DIAGRAMAS DE FLUJO
Formato vertical: En él, el flujo o la secuencia de las operaciones, va de arriba
hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la
información que se considere necesaria, según su propósito.
Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de
izquierda a derecha.
Formato panorámico: El proceso entero está representado en una sola carta y
puede apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo
que facilita su comprensión, aún para personas no familiarizadas. Registra no
solo en línea vertical, sino también horizontal, distintas acciones simultáneas y
la participación de más de un puesto o departamento que el formato vertical no
registra.
Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona
sobre el plano arquitectónico del área de trabajo. El primero de los flujogramas
es eminentemente descriptivo, mientras que los utilizados son
fundamentalmente representativos
SIMBOLOGÍA Y SIGNIFICADO
Óvalo o Elipse: Inicio y término (Abre y/o cierra el
diagrama).
Rectángulo: Actividad (Representa la ejecución de
una o más actividades o procedimientos).
Rombo: Decisión (Formula una pregunta o cuestión).
Círculo: Conector (Representa el enlace de
actividades con otra dentro de un procedimiento).
Triángulo boca abajo: Archivo definitivo (Guarda un
documento en forma permanente).
Triángulo boca arriba: Archivo temporal (Proporciona
un tiempo para el almacenamiento del documento).
Es una representación gráfica que muestra
todas las actividades de un proceso; permite ver
la relación y la secuencia lógica entre los pasos
y actividades del proceso. El diagrama de flujo
representa la forma más tradicional y duradera
para especificar los detalles algorítmicos de un
proceso.Se utiliza principalmente en
programación , economía y procesosi
ndustriales.
Es un esquema para representar gráficamente un algoritmo.
Sebasan en la utilización de diversos símbolos para
representar operaciones específicas, es decir, es la
representación grafica de las distintas operaciones que se
tienen que realizar para resolver un problema, con indicación
expresa el orden lógico en que deben realizarse.
Los diagramas de flujo nos ayudan a descubrir vacíos que
son causas potenciales de problemas.
Sólo nos permite identificar el problema más no analizar sus
causas.
Los diagramas de flujo son importantes
porque nos facilita la manera derepresentar
visualmente el flujo de datos por medio de un
sistema detratamiento deinformación, en este
realizamos unanálisis de los procesos o
procedimientosque requerimos para realizar un
programa o unobjetivo.
PASO 1: ESTABLECER QUIÉNES DEBEN
PARTICIPAR EN SU CONSTRUCCIÓN
El grupo de trabajo, o la persona responsable
del estudio identificará los organismos
implicados en el proceso, o parte del mismo,
que debe ser analizado .Se invitará a un
representante de dichos organismos a
participar en la construcción del Diagrama de
Flujo .El número de participantes en la sesión
de construcción del Diagrama no se rásuperior
a 10 para que el grupo sea operativo y eficaz.
Paso 2: Preparar la logística de la sesión de
trabajo.
Con objeto de que el ritmo de la sesión de
trabajo sea el adecuado se debePrever:- Dar la
información necesaria a los participantes en la
reunión sobre el objetode la misma y sobre este
procedimiento.- Preparar superficies y material
de escritura que permitan tener a la
vistacontinuamente el trabajo
desarrollado.DESARROLLO DE LA
CONSTRUCCION
Paso 3: Definir claramente la utilización del
Diagrama de Flujo y el resultado que se espera obtener
de la sesión de trabajo.
a) En primer lugar, es necesario clarificar el objetivo
de la construcción del Diagrama de Flujo y escribirlo
de forma que sea visible para los participantes durante
toda la sesión .b) Esta clarificación permitirá definir el
grado de detalle y la estructura que se requieren en el
diagrama para poder alcanzar dicho objetivo.