0% encontró este documento útil (0 votos)
74 vistas21 páginas

Fundamental 2

El documento describe los algoritmos recursivos, las pilas, las colas y las listas. Los algoritmos recursivos dividen un problema en subproblemas más pequeños y los resuelven de forma recursiva. Las pilas y colas son estructuras de datos lineales donde los elementos se agregan y eliminan en diferentes extremos, mientras que las listas almacenan elementos en una secuencia ordenada.

Cargado por

Joan Hernández
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)
74 vistas21 páginas

Fundamental 2

El documento describe los algoritmos recursivos, las pilas, las colas y las listas. Los algoritmos recursivos dividen un problema en subproblemas más pequeños y los resuelven de forma recursiva. Las pilas y colas son estructuras de datos lineales donde los elementos se agregan y eliminan en diferentes extremos, mientras que las listas almacenan elementos en una secuencia ordenada.

Cargado por

Joan Hernández
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
Está en la página 1/ 21

Universidad Autónoma de Nuevo León

Facultad de Ingeniería Mecánica y


Eléctrica

Fundamental #2 Nombre Matricul


a
Carrer
a
Semestre

Joan Raymundo 1906816 IAS 3


Hernandez Antonio
Algoritmos Computacionales

Dra. Norma Edith Marin Martinez


Bloque:1 Grupo: 010 Hora de materia: V1

Semestre: Enero-Junio
19/03/23
Introducción

Los algoritmos recursivos son una técnica de programación que se utiliza para resolver
problemas mediante la división del problema en subproblemas más pequeños y
resolviéndolos de manera recursiva. Esta técnica se utiliza comúnmente en
programación y matemáticas.
Las pilas, colas y listas son estructuras de datos utilizadas en programación para
organizar y manipular datos. Una pila es una estructura de datos en la que se pueden
agregar y eliminar elementos en la parte superior de la pila. Una cola es una estructura
de datos en la que se pueden agregar y eliminar elementos en la parte inferior de la
cola. Una lista es una estructura de datos que se utiliza para almacenar y manipular
una colección de elementos en una secuencia ordenada.
A continuación, se describirá y explicara más a detalle lo que son los algoritmos
recursivos, las pilas, colas y las listas.
Qué son los algoritmos
recursivos.

■ Podemos decir que un algoritmo es


recursivo cuando en su ejecución
hace una o varias llamadas a si
mismo, en este tipo de algoritmos
para resolver un problema se
resuelve un subproblema el cual
sea una instancia mas pequeña del
ya mencionado.
Formato de los algoritmos
recursivos

■ Existen diferentes formatos para los algoritmos recursivos entre los que se encuentran:

1.- Los de recursión directa: son 2.- Los de recursión indirecta: en


aquellos en los que se nombra a si estos contiene una llamada a otro
mismo en la definición algoritmo en el cual lo llame a él

5.- Los de recursión múltiple: en estos


como su nombre lo indica existen
múltiples llamadas recursivas

3.- Los de recursión lineal: en este 4.- Los de recursión final: en estos
únicamente existe una llamada la llamada recursiva se realiza hasta
recursiva el final siendo así una recursión
lineal
6.- Los de recursión anidada: suceden cuando el
argumento de alguna de las llamadas es al mismo
tiempo una llamada recursiva
LAS PILAS

• Una pila es una estructura de datos


estructura de entradas ordenadas
tales que solo se introduce y
elimina por un extremo llamado
cima o tope.
• Una estructura de datos tipo pila
permite agregar nodos a la pila y
eliminarlos de esta sólo desde su
parte superior. Por esta razón, a
una pila se le conoce como
estructura de datos UEPS (último
en entrar, primero en salir) o LIFO
(Last-Input, First Output).
CARACTERISTICAS
• Las pilas son estructuras de datos lineales, como
los arreglos, ya que los componentes ocupan
lugares sucesivos en la estructura y cada uno de
ellos tiene un único sucesor y un único
predecesor, con excepción del último y del
primero, respectivamente.
• Una pila se define formalmente como una
colección de datos a los cuales se puede acceder
mediante un extremo, que se conoce
generalmente como tope. Las pilas no son
estructuras fundamentales de datos.
• Para su representación requieren el uso de otras
estructuras de datos, como arreglos o listas
VENTAJAS

• El algoritmo de ordenamiento de pila es muy


eficiente, esto sugiere que el ordenamiento de
pila es particularmente adecuado para ordenar
una lista grande de elementos.
• El algoritmo de ordenamiento de pila es más
simple de entender que otros algoritmos de
ordenamiento igualmente eficientes.
• El algoritmo de ordenamiento de pila es de
rendimiento consistente. Esto significa que tiene
un rendimiento igualmente bueno en los
mejores y peores casos, es particularmente
adecuado su uso en sistemas en los que el
tiempo de respuesta es crítico.
• La creación de demasiados objetos en la
pila puede aumentar el riesgo de desbordamiento de
la pila. El acceso aleatorio no es posible.
DESVENTAJAS El almacenamiento de variables se sobrescribirá, lo que
a veces conduce a un comportamiento indefinido de
la función o el programa.
• Las listas tipo cola , son aquellas donde las inserciones se realizan
al inicio de la lista y las extracciones se realizan al final de la lista.
Las colas se conocen también como listas FIFO (primero en entrar,
primero en salir).
Las Colas • Los elementos se eliminan (se quitan) de la cola en el mismo orden
en que se almacenan y, por consiguiente, una cola es una
estructura de tipo FIFO (first-in-first-out, primero en entrar,
Primero en salir o bien primero en llegar/primero en ser servido).
Características de las colas
• Las colas tienen una serie de operaciones que se pueden realizar con ellas:
• Insertar elementos: para insertar un elemento al final de la cola, podemos usar la función push().
• Eliminar elementos: para quitar el elemento del principio de la cola, podemos usar la función pop().
• Ver cuál es el primer elemento de la cola: para ver cuál es este elemento, podemos usar la función
front(). Esto es muy útil, ya que pop() únicamente quitará el primer elemento de la cola, pero no nos
dirá cuál es.
• Ver cuál es el último elemento de la cola: hay un equivalente de la función front() para el final de la
cola, la función back().
• Ver cuántos elementos tiene la cola: para saber esto, podemos utilizar la función size(). Además,
podremos saber si la cola está vacía con la función empty().
Ventajas y desventajas de utilizar las
colas
• VENTAJAS: La ventaja de este algoritmo es su
fácil implementación, para implementar este algoritmo solo se
necesita mantener una cola con los procesos listos ordenada por
tiempo de llegada

• DESVANTAJAS: El tiempo medio de espera en este algoritmo es a


menudo muy largo. Efecto Convoy: Cuando un proceso tarda
mucho los demás deben esperar en cola hasta que termine, por
lo tanto, no es válido para entornos interactivos.
LISTAS
• ¿Que es una lista?
• Una lista es una enumeración de
cosas, personas, cantidades, entre
otras cosas, que se realiza o
confecciona con un
determinado propósito.
• Con esta explicion queda claro
que es es una estructura de datos
que se utiliza para almacenar y
manipular una colección de
elementos en una secuencia
ordenada.
CARACTERISTICAS DE LAS LISTAS
Las listas son una estructura de datos común en la programación y tienen varias
características distintivas que las hacen útiles en diferentes situaciones. Algunas de las
características de las listas son las siguientes
• Secuencia ordenada: Significa que cada elemento tiene un índice único que lo
identifica y se puede acceder a él utilizando este índice.
• Mutable: Las listas son estructuras de datos mutables, lo que significa que se
pueden agregar, eliminar o modificar elementos de la lista.
• Heterogéneas: Las listas pueden contener elementos de diferentes tipos de datos,
como enteros, cadenas de texto, booleanos y otros objetos.
• Iterables: Significa que se pueden recorrer fácilmente utilizando un bucle for y
realizar operaciones en cada uno de sus elementos.
• Almacenamiento dinámico: Las listas pueden agregar o eliminar elementos en
cualquier momento sin tener que preocuparse por el tamaño de la lista.
• Métodos integrados: Se pueden utilizar para trabajar con listas, como agregar
elementos, eliminar elementos, ordenar listas y mucho más en distintos lenguajes.
Las listas se pueden clasificar en tres grupos y cada
una tiene sus propias características las cuales son:

• Listas simplemente enlazadas: Cada elemento


de la lista contiene una referencia al siguiente
elemento de la lista. Son muy eficientes en
términos de espacio y tiempo de procesamiento,
ya que solo se requiere un puntero para cada
elemento de la lista. Sin embargo, no se pueden
recorrer en orden inverso y no es posible acceder
a elementos de la lista en orden inverso sin
recorrer toda la lista desde el principio.
• Listas doblemente enlazadas: Cada elemento
de la lista contiene una referencia tanto al
siguiente como al elemento anterior de la lista.
Esto permite que la lista se recorra en ambas
direcciones, hacia adelante y hacia atrás.
• Listas circulares: El último elemento de la lista
apunta al primer elemento de la lista, creando así
un ciclo continuo. Esto permite que la lista sea
recorrida de forma continua sin tener un final
definido. Sin embargo, s pueden ser más difíciles
de implementar y de manejar que las listas simple
o doblemente enlazadas.
VENTAJAS
• Flexibilidad: Las listas son estructuras de datos muy
flexibles, ya que se pueden agregar, eliminar o modificar
elementos en cualquier momento, lo que permite que se
adapten a diferentes situaciones.
• Fácil de usar: Las listas son fáciles de crear y utilizar en la
mayoría de los lenguajes de programación, lo que las hace
ideales para principiantes y programadores
experimentados.
• Acceso aleatorio: Los elementos de una lista se pueden
acceder aleatoriamente utilizando su índice, lo que hace
que sea fácil acceder a cualquier elemento de la lista.
• Almacenamiento de múltiples tipos de datos: Las listas
pueden contener cualquier tipo de dato, incluyendo
números, cadenas de texto, objetos, entre otros.
• Capacidad dinámica: Las listas pueden crecer y reducir su
tamaño de manera dinámica según se necesite, lo que las
hace ideales para almacenar datos de tamaño variable.
DESVENTAJAS
• Lentitud en operaciones de búsqueda: Las listas pueden ser
lentas en operaciones de búsqueda si se tienen que recorrer
todos los elementos para encontrar el valor deseado.
• Consumo de memoria: Las listas pueden consumir una gran
cantidad de memoria, especialmente cuando se almacenan
grandes cantidades de datos.
• Dificultad en comparación de elementos: En algunos casos,
puede ser difícil comparar elementos dentro de una lista,
especialmente si contienen objetos complejos.
• Problemas de seguridad: Las listas son estructuras de datos
mutables, lo que significa que se pueden modificar en
cualquier momento, lo que puede ser un problema de
seguridad si se utilizan incorrectamente.
• Sin ordenamiento preestablecido: Las listas no tienen un
ordenamiento preestablecido, lo que puede ser un problema
si se requiere que los datos estén ordenados de cierta
manera.
Ejemplos de Pilas, Colas y Listas

■ Ejemplo de pila:
Supongamos que queremos apilar algunos libros en un escritorio. Cada vez
que agregamos un libro a la pila, se coloca encima del libro anterior. Para
quitar un libro de la pila, siempre quitamos el libro de arriba. Podemos
representar esto usando una pila:
| | Libro 3
| | Libro 2
| _| Libro 1
En este ejemplo, Libro 1 fue el primero en agregarse a la pila, luego Libro 2
y finalmente Libro 3. Si queremos quitar un libro de la pila, siempre
quitamos el libro que está en la parte superior de la pila. Entonces, si
queremos sacar Libro 3, primero debemos quitar Libro 3 de la pila, luego
podemos quitar Libro 2 y finalmente Libro 1.
■ Ejemplo de cola:
Supongamos que queremos crear una cola de impresión para una
impresora. Cada vez que alguien envía una tarea de impresión, la tarea se
agrega al final de la cola y la impresora imprime la tarea que está en la
parte delantera de la cola. Podemos representar esto usando una cola:
| | Tarea 1
| | Tarea 2
| | Tarea 3
|__ | Tarea 4
En este ejemplo, Tarea 1 fue la primera en agregarse a la cola, luego Tarea
2, Tarea 3 y finalmente Tarea 4. La impresora imprimirá las tareas en el
orden en que se agregaron a la cola, por lo que primero imprimirá Tarea 1,
luego Tarea 2, Tarea 3 y finalmente Tarea 4.
■ Ejemplo de lista:
Supongamos que queremos crear una lista de tareas pendientes. Cada vez que
agregamos una tarea, se agrega al final de la lista. Si completamos una tarea,
podemos eliminarla de la lista. Podemos representar esto usando una lista:
1. Hacer la compra
2. Pagar la factura del agua
3. Llamar al médico
4. Sacar al perro a pasear

En este ejemplo, cada tarea se agrega a la lista en un orden específico. Si


completamos la tarea "Hacer la compra", podemos eliminarla de la lista y la lista se
actualizará para que las tareas restantes estén en el mismo orden en que se
agregaron. Por ejemplo, después de eliminar "Hacer la compra", la lista se vería así:
1. Pagar la factura del agua
2. Llamar al médico
3. Sacar al perro a pasear
Conclusión:

En conclusión, los algoritmos recursivos, pilas, colas y listas son herramientas importantes
en la programación y la resolución de problemas.
Los algoritmos recursivos son útiles cuando se necesita repetir una tarea de manera
iterativa, ya que permite la llamada a sí mismo dentro de la función. Sin embargo, deben
ser utilizados con precaución ya que pueden ser ineficientes en términos de memoria y
tiempo de ejecución.
Las pilas y las colas son estructuras de datos esenciales en la programación para organizar
y manipular datos de manera eficiente, mientras que las listas son una estructura de datos
muy versátil que permite almacenar y manipular colecciones de elementos de forma
flexible y eficiente. En conjunto, estas herramientas son esenciales en la programación
moderna y son utilizadas por programadores de todo el mundo para resolver problemas de
manera efectiva y eficiente.
En resumen, los algoritmos recursivos, pilas, colas y listas son herramientas útiles y
poderosas en la programación y la resolución de problemas. Es importante conocer sus
ventajas y desventajas para elegir la estructura de datos y algoritmo adecuados para el
problema que se está tratando de resolver.
Bibliografía
■ ALGORITMIA ALGO+ - Algoritmos y Estructuras de Datos. (s. f.). http://www.algoritmia.net/articles.php?id=13

■ Gómez, F (s. f.). Listas | Programación avanzada: Estructuras de datos y funciones.


http://agrega.juntadeandalucia.es/repositorio/02122016/a5/es-an_2016120212_9131705/33_listas.html

■ Estructuras de datos: listas enlazadas, pilas y colas. (s. f.). https://calcifer.org/documentos/librognome/glib-


lists-queues.html

■ https://www.uv.mx/personal/ermeneses/files/2021/08/Clase6-ColasFinal.pdf

■ Propiedades de los algoritmos recursivos (artículo). (s. f.). Khan Academy.

■ https://aprende.olimpiada-informatica.org/node/373

■ https://es.khanacademy.org/computing/computer-science/algorithms/recursive-algorithms/a/properties-of-

recursive-algorithms

■ Microsoft PowerPoint - tema4b.ppt (uv.es)

También podría gustarte