Está en la página 1de 9

TEMA I: CONCEPTOS ELEMENTALES DE ALGORITMOS.

Algoritmos.

En informática o programación, el algoritmo es la secuencia de instrucciones mediante la cual


podemos resolver un problema o cuestión. De hecho, todas las tareas ejecutadas por la
computadora se basan en 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

Es un algoritmo donde el resultado o la manera en que se obtiene el resultado depende de la


probabilidad. A veces también son llamados algoritmos 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

La palabra dinámico se refiere al método en el cual el algoritmo computa el resultado. A veces


la solución de un elemento del problema depende de la solución de una serie de problemas
más pequeños.

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.

Algoritmos de vuelta atrás

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.

La palabra algoritmo proviene de la traducción al latín de Al-Khwārizmī que es el nombre de un


matemático y astrónomo quien escribió un tratado sobre manipulación de números y
ecuaciones en el siglo IX llamado Quitab Al Jabr Al Mugabala. En sus escritos se recolectan el
sistema de numeración hindú, el concepto del cero y desarrolló con un número limitados de
procesos para resolver ecuaciones de primer y segundo grado. Alcanzó gran reputación por el
enunciado de las reglas paso a paso para sumar, restar, multiplicar y dividir números
decimales. Al-Khwārizmī preservó y difundió el conocimiento griego e hindú.
Lamentablemente su texto sobre tratados de números se perdió, su versión latina del libro de
cálculo con los números hindúes sí se conoce. Sin embargo, del libro de algebra si se preserva
manuscritos árabes, pero son datados cinco siglos posterior a la fecha de redacción de Al-
Khwārizmī . Debemos tener en cuenta que Al-Khwārizmī no fue el creador del primer algoritmo
–anteriormente mencionamos que ya se empleaban algoritmos-, pero si fue el primero en
pensar en modo algorítmico.

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.

Un diagrama de flujo es la representación gráfica, mediante símbolos de los pasos que se


realizan para resolver un problema o realizar una actividad.

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.

En programación de computadores un diagrama Nassi-Shneiderman (o NSD por sus siglas en


inglés), también conocido como diagrama de Chapin, es una representación gráfica que
muestra el diseño de un programa estructurado. 

Fue desarrollado en 1972 por Isaac Nassi y Ben Shneiderman. Este diagrama también es


conocido como estructograma, ya que sirve para representar la estructura de los programas.
Combina la descripción textual del pseudocódigo con la representación gráfica del diagrama de
flujo.
TEMA II: ESTRUCTURA DE DATOS.
Concepto de variable.

En programación, una variable está formada por un espacio en el sistema de almacenaje


(memoria principal de un ordenador) y un nombre simbólico (un identificador) que está
asociado a dicho espacio. Ese espacio contiene una cantidad de información conocida o
desconocida, es decir un valor. El nombre de la variable es la forma usual de referirse al valor
almacenado: esta separación entre nombre y contenido permite que el nombre sea usado
independientemente de la información exacta que representa. El identificador, en el código
fuente de la computadora puede estar ligado a un valor durante el tiempo de ejecución y el
valor de la variable puede por lo tanto cambiar durante el curso de la ejecución del
programa.

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.

Un archivo o fichero informático es un conjunto de bytes que son almacenados en un


dispositivo. Un archivo es identificado por un nombre y la descripción de la carpeta o
directorio que lo contienes.

Registros.

En informática, o concretamente en el contexto de una base de datos relacional, un registro


(también llamado fila o tupla) representa un objeto único de datos implícitamente
estructurados en una tabla. ... Un registro es un conjunto de campos que contienen los datos

Campo

En informática, un campo es un espacio de almacenamiento para un dato en particular. En


las bases de datos, un campo es la mínima unidad de información a la que se puede acceder;
un campo o un conjunto de ellos forman un registro, donde pueden existir campos en
blanco, siendo este un error del sistema operativo. Aquel campo que posee un dato único
para una repetición de entidad, puede servir para la búsqueda de una entidad específica. En
las hojas de cálculo los campos son llamados "celdas".
Base de datos.

Una base de datos es un conjunto de datos pertenecientes a un mismo contexto y


almacenados sistemáticamente para su posterior uso. En este sentido; una biblioteca puede
considerarse una base de datos compuesta en su mayoría por documentos y textos impresos
en papel e indexados para su consulta. Actualmente, y debido al desarrollo tecnológico de
campos como la informática y la electrónica, la mayoría de las bases de datos están en formato
digital, siendo este un componente electrónico, por tanto se ha desarrollado y se ofrece un
amplio rango de soluciones al problema del almacenamiento de datos.

Hay programas denominados sistemas gestores de bases de datos, abreviado SGBD (del


inglés Database Management System o DBMS), que permiten almacenar y posteriormente
acceder a los datos de forma rápida y estructurada. Las propiedades de estos DBMS, así como
su utilización y administración, se estudian dentro del ámbito de la informática.

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.

Son estructuras homogéneas en la que varios elementos comparten un solo nombre y se


referencian mediante un subíndice.

Arreglos unidimensionales.

Son aquellos que solo tienen una fila y varias columnas. Estos arreglos reciben el nombre de
VECTORES.
Arreglo bidimensional.

Un arreglo bidimensional sigue siendo un arreglo, pero ahora en dos dimensiones,


denominadas filas y columnas, esto significa que sigue siendo una variable que permite
almacenar un conjunto de datos es una estructura, es decir es un conjunto de variables que se
citan y manejan con un mismo nombre, y que permite  además la utilización individual de sus
elementos. Al igual que para los arreglos unidimensionales.

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.

Listas doblemente enlazadas.

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.

Un grafo en el ámbito de las ciencias de la computación es un tipo abstracto de datos (TAD),


que consiste en un conjunto de nodos (también llamados vértices) y un conjunto de arcos
(aristas) que establecen relaciones entre los nodos. El concepto de grafo TAD desciende
directamente del concepto matemático de grafo.

También podría gustarte