Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmos.
Tipos de algoritmos.
Entre los distintos tipos de algoritmos que existen destacan los que se clasifican según su
sistema de signos y según su función. Un algoritmo es una serie de pasos que se realizan para
resolver un problema, ejecutar una tarea o realizar un cálculo.
Estos son:
Algoritmos cualitativos
Estos algoritmos son aquellos en los que se colocan elementos verbales. Un ejemplo de este
tipo de algoritmos son las instrucciones o los “paso a paso” que se dan de formal oral.
Tal es el caso de las recetas de cocina o las instrucciones para hacer un trabajo de bricolaje.
Algoritmos cuantitativos
Son lo contrario de los algoritmos cualitativos, porque se colocan elementos numéricos. Este
tipo de algoritmos se utilizan en las matemáticas para realizar cálculos. Por ejemplo, para
encontrar una raíz cuadrada o resolver una ecuación.
Algoritmo computacional
Son los algoritmos que se hacen con una computadora; muchos de estos algoritmos son más
complejos y por eso necesitan ser realizados a través de una máquina. También pueden ser
algoritmos cuantitativos que se optimizan.
Algoritmo no computacional
Estos algoritmos son aquellos que no pueden realizarse con una computadora; por ejemplo, la
programación de un televisor.
Algoritmo de marcaje
Este algoritmo utiliza la automatización para fijar los precios de forma dinámica, basándose en
factores como el comportamiento del cliente.
Es la práctica de fijar automáticamente un precio para los elementos en rebaja, para maximizar
la ganancia del vendedor. Ha sido una práctica común en la industria aérea desde principios de
la década de 1990.
Algoritmos probabilísticos o aleatorios
En algunas aplicaciones el uso de este tipo de algoritmos es natural, como por ejemplo cuando
se simula el comportamiento de algún sistema existente o planeado a lo largo de un tiempo.
En este caso el resultado es fortuito.
Programación dinámica
Por lo tanto, para resolver el problema se deben volver a computar los mismos valores una y
otra vez para solucionar subproblemas más pequeños. Pero esto crea un desperdicio de ciclos.
Algoritmos heurísticos
Estos algoritmos son aquellos que encuentran soluciones entre todas las posibles, pero no
garantizan que la mejor de estas será encontrada. Por ese motivo son considerados como
algoritmos aproximados o no precisos.
Son algoritmos que han sido revocados al observar su comportamiento. Típicamente son
aproximaciones del algoritmo original que son construidos para propósitos como competición
o estudios.
Los algoritmos pueden ser revocados para estudiar su impacto en los mercados, en la
economía, en el marcaje de precios, en las operaciones y en la sociedad.
Algoritmo voraz
En muchos de los problemas, realizar decisiones voraces lleva a soluciones óptimas. Este tipo
de algoritmos es aplicable a problemas de optimización.
En cada paso de un algoritmo voraz se toma una decisión lógica y óptima, de manera que al
final se llegue a la mejor solución global. Pero hay que tener en cuenta que una vez que se
toma una decisión no se puede corregir o cambiar en el futuro.
Probar la veracidad de un algoritmo voraz es muy importante, ya que no todos los algoritmos
de esta clase llevan a solución global óptima.
Historia de los algoritmos.
Un algoritmo sencillamente son pasos para resolver un problema, como leer una receta de
cocina, es decir, es una receta para solución de problemas. Los algoritmos están en todas
partes, desde que te levantas en la mañana estas en contacto con algoritmos, ya sea cuando
suena tu despertador en tu teléfono, uses cualquier equipo electrónico, cuando estas frente a
un semáforo, pagues con la tarjeta de crédito o débito, en fin, no puedes volver a dormir sin
estar en contacto con ellos. ¿Pero cuál es su historia? ¿Cómo llegaron a ser parte fundamental
de nuestro diario vivir?
A pesar de que aparentase que el empleo de algoritmos es algo reciente, la realidad es que en
la antigüedad ya se empleaban algoritmos como en el caso de los babilonios para resolver
multiplicaciones y raíces cuadradas. Los egipcios usaban un algoritmo de multiplicación similar
al de expansión binaria. Sin embargo, aún no existía el concepto de algoritmo como tal ni las
bases teóricas para ello.
Por un tiempo los algoritmos solo se conceptualizaban para reglas de aritmética para números
arábicos. No fue hasta el siglo VXIII que se comienza a emplear algoritmos con el concepto tal y
como hoy se conoce.
El primer caso de algoritmos computacionales proviene del año 1842 de los escritos de la
matemática británica Ada Lovelace para la maquina analítica de Charles Babbage. De allí que
sea considerada como el primer programador de la historia, que además en su honor a un
lenguaje de programación se le ha colocado su nombre, este es el lenguaje de programación
Ada. Sin embargo, dado que Babbage nunca terminó su máquina analítica, el algoritmo que
realizó no llegó a implementarse. No obstante, su trabajo inspiró a otros investigadores que se
dedicaron a este campo.
Años más tarde en el 1900 el matemático David Hilbert había propuesto varias preguntas
fundamentales sobre problemas teóricos de las matemáticas, como es el caso del problema de
la decisión planteada por el matemático Gottfrie Leibniz que decía: "¿Es posible encontrar una
manera sencilla de decidir si un problema matemático cualquiera tiene solución?". En el año
1931 el matemático Kurt Gödel publica el Teorema de incompletud donde postula que existen
proposiciones que son indecidibles. En base a este problema entre los años 1930 y 1940 derivó
el desarrollo teórico y formalización de los algoritmos con los trabajos de Alan Turing, Emil
Post, Stephen Kleene y Alonzo Church con el objetivo de resolver este problema o demostrar
el Teorema.
Entre los años 1950 y 1960 los lenguajes de programación, compiladores y sistemas operativos
estaban en desarrollo, por lo tanto, se convirtieron tanto en el sujeto como la base para la
mayoría del trabajo teórico sobre los algoritmos. Sin embargo, no fue hasta la década de 1980
de la mente de Paul Benioff y Richard Feynman que una nueva revolución en la teoría de los
algoritmos resurge, esta fue la computación cuántica, que a diferencia de las clásicas funciona
sobre los principios de la mecánica cuántica, en donde los bits podían estar superposicionados
en diferentes estados a la vez a diferencia de las computadoras clásicas que solo pueden estar
en 1 o 0. A este nuevo estado superposicionado de bit se le llama qbits y es la base de este tipo
de computadoras. Esto trajo consigo el desafío de desarrollar algoritmos para computadoras
cuánticas. Entre los años 1992 y 1998 David Deutsch, Richard Cleve, Artur Ekert, Chiara
Macchiavello, Michele Mosca, Peter Shor y Lov Grover realizaron trabajos sobre algoritmos
cuánticos.
Desde la creación del primer algoritmo estos han sido indispensables para el desarrollo
humano, especialmente hoy en día estamos dominado por la era de los algoritmos. Podríamos
decir que desarrollar algoritmos es una de las herramientas más importantes para el desarrollo
de cualquier civilización, por lo tanto, conocer su historia es conocer el desarrollo de la
civilización humana.
Lenguajes algorítmicos.
Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso.
Teniendo en cuenta la forma en que describen el proceso, existen dos tipos de lenguajes
algorítmicos: Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo
(diagrama de flujo.
Diagrama de flujo.
Pseudo código.
El pseudocódigo es una manera de escribir algoritmos de forma poco estricta (con una sintaxis
relajada) o estructuras de datos poco detalladas, pero intentando acercar las ideas del
algoritmos a estructuras y sintaxis parecidas a las de los lenguajes de alto nivel en los que
vamos a programar el algoritmo. Es para ser leído por personas, por tanto no se preocupa en
detalles sintácticos. Es un lenguaje de especificación de algoritmos, pero muy parecido a
cualquier lenguaje de programación, por lo que luego su traducción al lenguaje de
programación es muy sencillo, pero con la ventaja de que no se rige por las normas de un
lenguaje en particular. Nos centramos más en la lógica del problema. El pseudocódigo también
va a utilizar una serie de palabras claves o palabras especiales que va indicando lo que significa
el algoritmo.
Diagrama N-S.
Constante.
En programación, una constante es un valor que no puede ser alterado/modificado durante la ejecución
de un programa, únicamente puede ser leído.
Una constante corresponde a una longitud fija de un área reservada en la memoria principal del
ordenador, donde el programa almacena valores fijos.
Por ejemplo:
El valor de PI = 3,1416
Por conveniencia, el nombre de las constantes suele escribirse en mayúsculas en la mayoría de
lenguajes.
Archivos.
Registros.
Campo
Las aplicaciones más usuales son para la gestión de empresas e instituciones públicas; También
son ampliamente utilizadas en entornos científicos con el objeto de almacenar la información
experimental.
Tablas.
Las tablas son objetos de base de datos que contienen todos sus datos. ... En las tablas, los
datos se organizan con arreglo a un formato de filas y columnas, similar al de una hoja de
cálculo. Cada fila representa un registro único y cada columna un campo dentro del registro.
Los arreglos.
Arreglos unidimensionales.
Son aquellos que solo tienen una fila y varias columnas. Estos arreglos reciben el nombre de
VECTORES.
Arreglo bidimensional.
Listas.
Las listas son las estructuras de datos más simples y forman parte de las demás estructuras de
datos. Su principal carácterística es que se compone de un conjunto de elementos
secuenciales.
TIPOS DE LISTAS
Enlazadas
Circulares
Doblemente enlazadas
Densas
Listas enlazadas.
La lista enlazada es un TDA que nos permite almacenar datos de una forma organizada, al igual
que los vectores pero, a diferencia de estos, esta estructura es dinámica, por lo que no
tenemos que saber "a priori" los elementos que puede contener.
En una lista enlazada, cada elemento apunta al siguiente excepto el último que no tiene
sucesor y el valor del enlace es null. Por ello los elementos son registros que contienen el dato
a almacenar y un enlace al siguiente elemento. Los elementos de una lista, suelen recibir
también el nombre de nodos de la lista.
El TDA lista doblemente enlazada, al igual que la lista enlazada, es un TDA dinámico lineal pero,
a diferencia de este, cada nodo de la lista doblemente enlazada contiene dos punteros, de
forma que uno apunta al siguiente nodo y el otro al predecesor. Esta característica, permite
que se pueda recorrer la lista en ambos sentidos, cosa que no es posible en las listas simples.
Las pilas.
Son estructuras de datos tipos UEPS (último en entrar primero en salir) o LIFO (las inp first out)
por sus ciglas en inglés. En las pilas se realizan operaciones de entrada o apilación y salida o
desapilación. Las entradas o adicion y las salidas o supresión se efectuan por el extremo
superior al que se denomina CIMA. Es por eso es que el último que entra es el primero que
sale. Un ejemplo de pila en informática es un catálogo de cuentas en un sistema de
contabilidad computarizado donde las primeras cuentas que se crean son las generales y
debajo de estas las de detalle que les corresponden. Para borrar las primeras cuentas hay que
borrar las últimas osea desde abajo hacia arriba. Aunque este ejemplo no sería igual
físicamente: a una pila de cajas de zapatos donde se empieza a poner la primera caja y encima
de esta las demás y si se quiere quitar zapatos hay que empezar por la última, o la del extremo
superior, este es un ejemplo físico, en un programa de contabilidad la cima estaría en la parte
inferior, único extremo por donde se quitan y se ponen elementos o cuentas en este caso.
Las colas.
Son estructuras de datos tipo PEPS (primero en llegar primero en salir) o FIFO (First Inp Firs
Out) por sus ciglas en ingles. Las colas permiten dos operaciones que son la de ADICIÓN o
ENCOLAR y SUPRESIÓN o DESENCOLAR. Un ejemplo de cola físicamente hablando es la fila que
se hace en las cajas de los supermercados los días de pago cuando las persosonas acuden
masivamente a comprar sus artículos de necesidad.
En informática un ejemplo clásico es la cola de impresión en un sistema operativo donde no se
priorice.
Los árboles.
Son estructuras de datos en las que varios nodos se enlazan teniendo como RAÍZ el
nodo principal. Se ilustra graficamente como un árbol con la RAÍZ hacia arriba.
Un nodo que tiene hijos se llama RAMA los nodos que no tienen hijos se llaman
HOJAS.
Grafo.