Vous êtes sur la page 1sur 7

Universidad Autnoma de Nuevo

Len
Facultad de Ingeniera Mecnica y
Elctrica

Materia: Algoritmos Computacionales


Hora: m1-m3
Da: 4
Matricula: 1594293
Nombre: Vanesa Sahori Lpez Garca

San Nicols de Los Garza a 26 de febrero del 2015

Introduccin
En esta investigacin hablar acerca de lo que es un algoritmo recursivo y las
estructuras lineales. Pero antes debemos saber lo que es la recursividad, que es
una caracterstica de los lenguajes de programacin que permite que un
subprograma se invoque a s mismo, es til para resolver problemas definibles en
sus propios trminos. Y las estructuras lineales de datos se caracterizan porque
sus elementos estn en secuencia, relacionados en forma lineal, uno luego del
otro. Esta investigacin se hace con el fin de saber lo que es un algoritmo
recursivo y las estructuras lineales.

Algoritmo recursivo
La recursividad es una caracterstica de los lenguajes de programacin que
permite que un subprograma se invoque a s mismo, es til para resolver
problemas definibles en sus propios trminos. Es, en cierta medida, anloga al
principio de induccin.
No existen problemas intrnsecamente recursivos o iterativos; cualquier proceso
iterativo puede expresarse de forma recursiva y viceversa. La recursividad aunque
da lugar a algoritmos ms simples y compactos resulta ms lenta y consume ms
recursos al ejecutarse sobre el ordenador.
Para desarrollar algoritmos recursivos hay que partir del supuesto de que ya existe
un algoritmo que resuelve una versin ms sencilla del problema.
A partir de esta suposicin debe hacerse lo siguiente:
1. Identificar subproblemas atmicos de resolucin inmediata (casos base).
2. Descomponer el problema en subproblemas resolubles mediante el algoritmo
pre-existente; la solucin de estos subproblemas debe aproximarnos a los casos
base.
3. Probar de manera informal que tanto los casos base como los generales
pueden solucionarse con el algoritmo desarrollado.
Factorial de un nmero, n!
Algoritmo pre-existente: (n-1)!
Caso base: 0! = 1
Subproblemas resolubles mediante el algoritmo pre-existente y que aproximen al
caso base: n! = n (n-1)!
Prueba informal: Conociendo las dos expresiones anteriores es posible calcular 0!,
1!, 4!, etc.
Potencia de un nmero, an
Algoritmo pre-existente: an-1
Caso base: a0 = 1
Subproblemas resolubles mediante el algoritmo pre-existente y que aproximen al
caso base: an = a an-1
Prueba informal: Conociendo las dos expresiones anteriores es posible calcular 2 0,
43, 34, etc.

Estructuras de datos lineales


Las estructuras lineales de datos se caracterizan porque sus elementos estn en
secuencia, relacionados en forma lineal, uno luego del otro. Cada elemento de la
estructura puede estar conformado por uno o varios sub-elementos o campos que
pueden pertenecer a cualquier tipo de dato, pero que normalmente son tipos
bsicos.
Una estructura lineal de datos os lista est conformada por ninguno, uno o varios
elementos que tienen una relacin dnde existe un primer elemento, seguido de
un segundo elemento y as sucesivamente hasta llegar al ltimo.
El valor contenido en los elementos pueden ser el mismo o diferente. En estas
estructuras se realizan operaciones de agregar y/o eliminar elementos a la lista
segn un criterio particular.
Se clasifican en listas de acceso restringido y listas de acceso no restringido.
Las listas de acceso restringido son las pilas, colas y dipolos.
Pilas: En las pilas, las operaciones de acceso se realizan por un nico extremo de
la lista, al cual normalmente se denomina tope de la pila. Las operaciones bsicas
sobre una pila son: crearlo, destruirla, agregar un nuevo elemento, suprimir un
elemento, consultar el elemento del tope verificar si est vaca
Colas: En las colas, estas operaciones de acceso se realizan por ambos extremos
de la lista llamados gralmente, inicio y fin de la cola. Operaciones bsicas son:
creacin, destruccin, insercin al final de un nuevo elemento, consultar que
elemento esta al inicio y cual al final, y verificar si la cola est vaca.
Dipolos: Que son colas dobles, las operaciones se realizan tambin por ambos
extremos de la lista, en este caso todas las operaciones se pueden hacer por
ambos extremos, es decir se pueden insertar o eliminar elementos por el tope o
por el fin, a diferencia de la COLA donde se inserta siempre por el fin y se elimina
por el tope.
La lista de acceso no restringido, denominadas listas, son el tipo ms gral, al cual
se le considera como la superclase de las otras clases de listas. Tipo + gral de
estructura lineal donde las inserciones y eliminaciones se hacen en cualquier
punto de la lista, por ello se debe especificar donde se requiere que se haga la
operacin.
La lista es el tipo ms general de estructura lineal donde las inserciones y
eliminaciones se hacen en cualquier punto de la lista, por ello se debe especificar

donde se requiere que se haga la operacin. Sus operaciones bsicas son:


creacin, destruccin, insercin, eliminacin, consulta y verificacin de lista vaca.
Una lista enlazada es un tipo de dato auto referenciado porque contienen un
puntero o enlace a otro dato del mismo tipo. Las listas enlazadas permiten
inserciones y eliminacin de nodos en cualquier punto de la lista en tiempo
constante (suponiendo que dicho punto est previamente identificado o
localizado), pero no permiten un acceso aleatorio. Existen diferentes tipos de listas
enlazadas: Lista Enlazadas Simples, Listas Doblemente Enlazadas, Listas
Enlazadas Circulares y Listas Enlazadas Doblemente Circulares.
Listas simples enlazadas:
La lista enlazada bsica es la lista enlazada simple la cual tiene un enlace por
nodo. Este enlace apunta al siguiente nodo en la lista, o al valor NULL o a la lista
vaca, si es el ltimo nodo.
Lista Doblemente Enlazada:
Un tipo de lista enlazada ms sofisticado es la lista doblemente enlazada o lista
enlazadas de dos vas. Cada nodo tiene dos enlaces: uno apunta al nodo anterior,
o apunta al valor NULL si es el primer nodo; y otro que apunta al nodo siguiente, o
apunta al valor NULL si es el ltimo nodo. En algn lenguaje de muy bajo nivel,
XOR-Linking ofrece una va para implementar listas doblemente enlazadas,
usando una sola palabra para ambos enlaces, aunque el uso de esta tcnica no se
suele utilizar.
Listas enlazadas circulares:
En una lista enlazada circular, el primer y el ltimo nodo estn unidos juntos. Esto
se puede hacer tanto para listas enlazadas simples como para las doblemente
enlazadas. Para recorrer una lista enlazada circular podemos empezar por
cualquier nodo y seguir la lista en cualquier direccin hasta que se regrese hasta
el nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden
ser vistas como listas sin comienzo ni fin. Este tipo de listas es el ms usado para
dirigir buffers para ingerir datos, y para visitar todos los nodos de una lista a partir
de uno dado.
Una lista enlazada circular que contiene tres valores enteros
Listas enlazadas circulares simples:
Cada nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que
el siguiente nodo del ltimo apunta al primero. Como en una lista enlazada simple,

los nuevos nodos pueden ser solo eficientemente insertados despus de uno que
ya tengamos referenciado. Por esta razn, es usual quedarse con una referencia
solamente al ltimo elemento en una lista enlazada circular simple, esto nos
permite rpidas inserciones al principio, y tambin permite accesos al primer nodo
desde el puntero del ltimo nodo.
Lista Enlazada Doblemente Circular:
En una lista enlazada doblemente circular, cada nodo tiene dos enlaces, similares
a los de la lista doblemente enlazada, excepto que el enlace anterior del primer
nodo apunta al ltimo y el enlace siguiente del ltimo nodo, apunta al primero.
Como en una lista doblemente enlazada, las inserciones y eliminaciones pueden
ser hechas desde cualquier punto con acceso a algn nodo cercano. Aunque
estructuralmente una lista circular doblemente enlazada no tiene ni principio ni fin,
un puntero de acceso externo puede establecer el nodo apuntado que est en la
cabeza o al nodo cola, y as mantener el orden tan bien como en una lista
doblemente enlazada.
Nodos Centinelas:
A veces las listas enlazadas tienen un nodo centinela (tambin llamado falso nodo
o nodo ficticio) al principio o al final de la lista, el cual no es usado para guardar
datos. Su propsito es simplificar o agilizar algunas operaciones, asegurando que
cualquier nodo tiene otro anterior o posterior, y que toda la lista (incluso alguna
que no contenga datos) siempre tenga un primer y ltimo nodo.
Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes
tales como Lisp y Scheme tiene estructuras de datos ya construidas, junto con
operaciones para acceder a las listas enlazadas. Lenguajes imperativos u
orientados a objetos tales como C o C++ y Java, respectivamente, disponen de
referencias para crear listas enlazadas.

Conclusin
El algoritmo recursivo es ms que nada para resolver problemas y las estructuras
de datos se caracterizan porque como su nombre lo dice que sus datos tienen una
estructura, esa estructura es en secuencia.

Referencias
http://di002.edv.uniovi.es/~dani/asignaturas/transparencias-leccion6.PDF
http://es.wikipedia.org/wiki/Algoritmo_recursivo
http://estr-org-datos.wikispaces.com/ESTRUCTURAS+LINEALES
http://es.slideshare.net/YanahuiBc/u2-10019288?related=1

Vous aimerez peut-être aussi