En matemáticas, lógica, ciencias de la computación y disciplinas relacionadas, un algoritmo (del latín algorithmus y este del griego arithmos, que significa «número», quizá también con influencia del nombre del matemático persa Al-Juarismi)1 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.2 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.
4. Introducción.
En el trabajo a continuación estaré acalorando la definición de unos
términos o conceptos, cuya función es más que importante en el área de la
programación, pero que no se lograrían comprender sin los que voy a
presentar a continuación.
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. En términos
simples, una tabla de una base de datos puede imaginarse formada de filas
y columnas o campos. Cada fila de una tabla representa un conjunto de
datos relacionados, y todas las filas de la misma tabla tienen la misma
estructura.
Un registro es un conjunto de campos que contienen los datos que
pertenecen a una misma repetición de entidad. Se le asigna
automáticamente un número consecutivo (número de registro) que en
ocasiones es usado como índice aunque lo normal y práctico es asignarle a
cada registro un campo clave para su búsqueda.
5. Pila.
Una pila (stack en inglés) es una lista ordenada o estructura de datos que permite
almacenar y recuperar datos, el modo de acceso a sus elementos es de tipo LIFO (del
inglés Last In, First Out, «último en entrar, primero en salir») . Esta estructura se aplica
en multitud de supuestos en el área de informática debido a su simplicidad y capacidad
de dar respuesta a numerosos procesos.
Para el manejo de los datos cuenta con dos operaciones básicas: apilar (push), que
coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira
el último elemento apilado.En cada momento sólo se tiene acceso a la parte superior de
la pila, es decir, al último objeto apilado (denominado TOS, Top of Stack en inglés). La
operación retirar permite la obtención de este elemento, que es retirado de la pila
permitiendo el acceso al anterior (apilado con anterioridad), que pasa a ser el último, el
nuevo TOS.
Las pilas suelen emplearse en los
siguientes contextos:
Evaluación de expresiones en
notación postfija (notación polaca
inversa).
Reconocedores sintácticos de
lenguajes independientes del
contexto.
Implementación de recursividad.
En un sistema operativo cada proceso tiene un espacio de memoria (pila) para
almacenar valores y llamadas a funciones.
Una pila acotada es una pila limitada a un tamaño máximo impuesto en su
especificación.
Por analogía con objetos cotidianos, una operación apilar equivaldría a colocar un plato
sobre una pila de platos, y una operación retirar equivaldría a retirarlo.
6. Colas.
Cola (informática). Una cola es una estructura de datos, caracterizada por ser una
secuencia de elementos en la que la operación de inserción push se realiza por un
extremo y la operación de extracción pop por el otro. También se le llama estructura
FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será
también el primero en salir.
Las colas se utilizan en sistemas informáticos,
transportes y operaciones de investigación (entre
otros), dónde los objetos, personas o eventos son
tomados como datos que se almacenan y se
guardan mediante colas para su posterior
procesamiento. Este tipo de estructura de datos
abstracta se implementa en lenguajes orientados a
objetos mediante clases, en forma de listas
enlazadas.
La particularidad de una estructura de datos de
cola es el hecho de que sólo podemos acceder al
primer y al último elemento de la estructura. Así
mismo, los elementos sólo se pueden eliminar por
el principio y sólo se pueden añadir por el final de
la cola.
Ejemplos de colas en la vida real serían: personas comprando en un supermercado,
esperando para entrar a ver un partido de béisbol, esperando en el cine para ver una
película, una pequeña peluquería, etc. La idea esencial es que son todos líneas de espera.
En estos casos, el primer elemento de la lista realiza su función (pagar comida, pagar
entrada para el partido o para el cine) y deja la cola. Este movimiento está representado
en la cola por la función pop o desencolar. Cada vez que otro elemento se añade a la
lista de espera se añaden al final de la cola representando la función push o encolar. Hay
otras funciones auxiliares para ver el tamaño de la cola (size), para ver si está vacía en el
caso de que no haya nadie esperando (empty) o para ver el primer elemento de la cola
(front).
7. Árboles.
En ciencias de la computación y en informática, un árbol es un tipo
abstracto de datos (TAD) ampliamente usado que imita la estructura
jerárquica de un árbol, con un valor en la raíz y subárboles con un nodo
padre, representado como un conjunto de nodos enlazados.
Una estructura de datos de árbol se puede definir de forma recursiva
(localmente) como una colección de nodos (a partir de un nodo raíz), donde
cada nodo es una estructura de datos con un valor, junto con una lista de
referencias a los nodos (los hijos) , con la condición de que ninguna
referencia esté duplicada ni que ningún nodo apunte a la raíz.
Alternativamente, un árbol se puede definir de manera abstracta en su
conjunto como un árbol ordenado, con un valor asignado a cada nodo.
Ambas perspectivas son útiles: mientras que un árbol puede ser analizado
matemáticamente, realmente es representado como una estructura de datos
en la que se trabaja concada nodo por separado (en lugar de como una lista
de nodos y una lista de adyacencia entre nodos, como un grafo). Mirando a
un árbol como conjunto, se puede hablar de el nodo padre de un nodo dado,
pero en general se habla de una estructura de datos de un nodo dado que
sólo contiene la lista de sus hijos sin referencia a su padre (si lo hay).
8. Grafos.
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 degrafo TAD desciende
directamente del concepto matemático de grafo.
Formalmente, un grafo se define como {displaystyle G=(V,E)}
{displaystyle G=(V,E)}, siendo V un conjunto cuyos elementos son los
vértices del grafo y, E uno cuyos elementos son las aristas (edges en
inglés), las cuales son pares (ordenados siel grafo es dirigido) de elementos
en V.
9. Conclusión
En el trabajo anterior aprendimos mucho acerca de los grafos, los árboles,
las pilas y las colas. Como funcionan y sobretodo queson. Espero que este
material haya cumplido con sus expectativas.