El documento presenta la resolución de 7 ejercicios de análisis de algoritmos. En el primer ejercicio se resuelve una suma y se obtiene que la suma de los primeros n enteros es igual a n(n+1)/2. En el segundo ejercicio se analiza una recurrencia y se determina que es O(log2 log2 n). En el tercer ejercicio se expande otra recurrencia y se concluye que es O(n2).
Esta presentación es parte del contenido del curso de Programación Avanzada impartido en la Universidad Rafael Landívar durante el año 2015.
Incluye los temas:
• Búsqueda por método secuencial
• Búsqueda por método binario
• Búsqueda por método hashing
Creado por Ing. Alvaro Enrique Ruano
Esta presentación es parte del contenido del curso de Programación Avanzada impartido en la Universidad Rafael Landívar durante el año 2015.
Incluye los temas:
• Búsqueda por método secuencial
• Búsqueda por método binario
• Búsqueda por método hashing
Creado por Ing. Alvaro Enrique Ruano
Cuando se aplica la técnica de "divide y vencerás" a la solución de problemas computacionales, generalmente se refiere a soluciones recursivas. Un ejemplo de este tipo de soluciones es el algoritmo de ordenación por mezcla (Merge Sort).
Cuando se aplica la técnica de "divide y vencerás" a la solución de problemas computacionales, generalmente se refiere a soluciones recursivas. Un ejemplo de este tipo de soluciones es el algoritmo de ordenación por mezcla (Merge Sort).
En la ciencia de la computación los algoritmos son más importantes que los LP o que las computadoras; la solución de un problema haciendo uso de las computadoras requiere por una parte un algoritmo o método de resolución y por otra un programa o codificación del algoritmo en un LP. Ambos componentes tienen importancia; pero la del algoritmo es absolutamente indispensable; sabemos que un algoritmo es una secuencia de pasos para resolver un problema.
La resolución práctica de un problema exige por una parte un algoritmo o método de resolución y por otra un programa o codificación de aquel en un ordenador real. Ambos componentes tienen su importancia; pero la del algoritmo es absolutamente esencial, mientras que la codificación puede muchas veces pasar a nivel de anécdota.
A efectos prácticos o ingenieriles, nos deben preocupar los recursos físicos necesarios para que un programa se ejecute. Aunque puede haber muchos parámetros, los más usuales son el tiempo de ejecución y la cantidad de memoria (espacio). Ocurre con frecuencia que ambos parámetros están fijados por otras razones y se plantea la pregunta inversa: ¿cuál es el tamaño del mayor problema que puedo resolver en T segundos y/o con M bytes de memoria? En lo que sigue nos centraremos casi siempre en el parámetro tiempo de ejecución, si bien las ideas desarrolladas son fácilmente aplicables a otro tipo de recursos.
Para cada problema determinaremos una medida N de su tamaño (por número de datos) e intentaremos hallar respuestas en función de dicho N. El concepto exacto que mide N depende de la naturaleza del problema. Así, para un vector se suele utilizar como N su longitud; para una matriz, el número de elementos que la componen; para un grafo, puede ser el número de nodos (a veces es mas importante considerar el número de arcos, dependiendo del tipo de problema a resolver); en un fichero se suele usar el número de registros, etc. Es imposible dar una regla general, pues cada problema tiene su propia lógica de coste.
Esta presentacion muestra que es un algoritmo asi como la elaboracion del mismo
Encuentra mas libros y cosas utiles en http://ballbreackerhouse.blogspot.mx/ SI TE GUSTO O FUE DE UTILIDAD DALE LIKE
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
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.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Es un diagrama para La asistencia técnica o apoyo técnico es brindada por las compañías para que sus clientes puedan hacer uso de sus productos o servicios de la manera en que fueron puestos a la venta.
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
ejercicios resueltos análisis de algoritmos
1. Universidad Andr´es Bello
Facultad de Ingenier´ıa
Ingenier´ıa en Computaci´on e Inform´atica
Dise˜no de Algoritmos
Ejercicios Resueltos - An´alisis
Prof. C´atedra: Carlos Contreras Bolton Fecha: 25 de Marzo de 2014
Profs. Laboratorio: Daniela Ubilla – Felipe Reyes
Ejercicio 1: Sumatoria
n
i=1
i = 1 + 2 + 3 + ... + (n − 1) + n (1)
Si invertimos la suma tenemos:
n
i=1
i = n + (n − 1) + ... + 3 + 2 + (2)
Si sumamos componente a componente (1) y (2) tenemos:
2
n
i=1
i = (1 + n) + (2 + (n − 1)) + (3 + (n − 2)) + ... + ((n − 1) + 2) + (n + 1) (3)
Que es lo mismo que:
2
n
i=1
i = (n + 1) + (n + 1) + (n + 1) + ... + (n + 1) + (n + 1) (4)
La parte derecha est´a compuesta por n sumas de n + 1:
2
n
i=1
i = n(n + 1) (5)
Finalmente:
n
i=1
i =
n(n + 1)
2
2. Dise˜no de Algoritmos Ejercicios Resueltos - An´alisis
Ejercicio 2: Resolver
Resolver:
T(n) = T(
√
n) + c; T(1) = d; T(2) = d;
Expandimos:
T(n) = T(
√
n) + c
= T(n
1
2 ) + c
= T n
1
22
+ c + c
= T n
1
22
+ 2c
= T n
1
23
+ c + 2c
= T n
1
23
+ 3c
...
= T n
1
2k
+ kc
Expandimos hasta T(2), entonces:
n
1
2k
= 2
2k√
n = 2
n = 22k
2k
= log2 n
k = log2 log2 n
Continuamos:
= T n
1
2k
+ kc
= T(2) + kc
= d + c log2 log2 n
= O(log2 log2 n)
Carlos Contreras Bolton
2
3. Dise˜no de Algoritmos Ejercicios Resueltos - An´alisis
Ejercicio 3: Resolver
T(n) = 3
n
2
+ n2
− n; T(1) = 1 (1)
Expandimos:
T(n) = 3T(
n
2
) + n2
− n
= 3 3T
n
4
+
n
2
2
−
n
2
+ n2
− n = 9T
n
4
+ 3
n2
4
−
n
2
+ n2
− n
= 27T
n
8
+ 9
n2
16
−
n
4
+ 3
n2
4
−
n
2
+ n2
− n
...
= 3i
T
n
2i
+ n2
i−1
j=0
(
3
4
)j
+ n
i−1
j=0
(
3
2
)j
= 3i
T
n
2i
− 4n2 3
4
i
+ 4n2
− 2n
2
3
i
+ 2n por
n
i=0
ai
=
an+1
− 1
a − 1
...
= 3log n
T
n
2log n
− 4n2 3
4
log n
+ 4n2
− 2n
2
3
log n
+ 2n
= nlog 3
T(1) − 4nlog 3
+ 4n2
− 2nlog 3
+ 2n
= 4n2
− 5nlog 3
+ 2n
= O(n2
)
Carlos Contreras Bolton
3
4. Dise˜no de Algoritmos Ejercicios Resueltos - An´alisis
Ejercicio 4: Resolver
Usando el m´etodo de la sustituci´on:
T(n) = 2T n
2 + bn log n
Adivinamos que O(n log n).
Probar T(n) ≤ cn log n por inducci´on.
T(n) = 2T(
n
2
) + bn log n
= 2 c
n
2
log
n
2
+ bn log n
= cn(log n − log 2) + bn log n
= cn log n − cn + bn log n
= cn log n − (cn − bn log n)
No se cumple, puesto que no podemos hacer que esta ´ultima l´ınea sea menor que cn log n
Entonces, adivinamos que O(n log2
n).
Probar T(n) ≤ cn log2
n por inducci´on.
T(n) = 2T(
n
2
) + bn log n
= 2 c
n
2
log2 n
2
+ bn log n
= cn(log n − log 2)2
+ bn log n
= cn log2
n − 2cn log n + cn + bn log n
= cn log2
n − (2cn log n − cn − bn log n)
Si c > b. Por lo tanto, T(n) = n log2
n.
Carlos Contreras Bolton
4
5. Dise˜no de Algoritmos Ejercicios Resueltos - An´alisis
Ejercicio 5: Resolver
T(n) = 1
n
n−1
i=0 T(i) + cn, con T(0)=0.
T(n) =
1
n
n−1
i=0
T(i) + cn (1)
Multiplicar por n en (1):
nT(n) =
n−1
i=0
T(i) + cn2
(2)
Desplazando (2) en n − 1:
(n − 1)T(n − 1) =
n−2
i=0
T(i) + c(n − 1)2
(3)
Restando (2)-(3):
nT(n) − (n − 1)T(n − 1) = (
n−1
i=0
T(i) −
n−2
i=0
T(i)) + (cn2
− c(n − 1)2
) (4)
nT(n)−(n−1)T(n−1) = ((T(0)+...+T(n−2)+T(n−1))−(T(0)+...+T(n−2)))+(cn2
−c(n2
−2n+1)) (5)
nT(n) − (n − 1)T(n − 1) = T(n − 1) + 2cn − c (6)
nT(n) = nT(n − 1) + 2cn − c (7)
Dividiendo (7) por n:
T(n) = T(n − 1) +
2cn − c
n
(8)
Expandiendo:
T(n) =
2cn − c
n
+ T(n − 1)
=
2cn − c
n
+
2c(n − 1) − c
n − 1
+ T(n − 2)
=
2cn − c
n
+
2c(n − 1) − c
n − 1
+
2c(n − 2) − c
n − 2
+ T(n − 3)
=
2cn − c
n
+
2c(n − 1) − c
n − 1
+
2c(n − 2) − c
n − 2
+ ... +
2c(1) − c
1
+ T(0)
=
2cn
n
+
2c(n − 1)
n − 1
+
2c(n − 2)
n − 2
+ ... +
2c(1)
1
−
c
n
+
c
n − 1
+
c
n − 2
+ ... +
c
1
= (2c + 2c + 2c + ... + 2c) − c
n
i=1
1
i
= 2cn − c
n
i=1
1
i
= 2cn − cHn
< 2cn
Por lo tanto, T(n) = O(n).
Carlos Contreras Bolton
5
6. Dise˜no de Algoritmos Ejercicios Resueltos - An´alisis
Ejercicio 6: Resolver
T(n) = n − 1 +
2
n
n−1
i=1
T(i), n ≥ 2. T(1) = 0 (1)
Re-escribir la recurrencia para n + 1:
T(n + 1) = (n + 1) − 1 +
2
n + 1
n
i=1
T(i) (2)
Multiplicar (1) por n y (2) por n + 1:
nT(n) = n(n − 1) + 2
n−1
i=1
T(i) (3)
(n + 1)T(n + 1) = (n + 1)n + 2
n
i=1
T(i) (4)
Restar (4)-(3):
(n + 1)T(n + 1) − nT(n) = (n + 1)n − n(n − 1) + 2(
n
i=1
T(i) −
n−1
i=1
T(i)) (5)
(n+1)T(n+1)−nT(n) = 2n+2((T(0)+T(1)+...+T(n−1)+T(n))−(T(0)+T(1)+...+T(n−1))) (6)
(n + 1)T(n + 1) − nT(n) = 2n + 2T(n) (7)
T(n + 1) =
n + 2
n + 1
T(n) +
2n
n + 1
(n ≥ 2) (8)
Podemos simplificar 2n/(n + 1) como cota inferior 2.
T(n + 1) ≤
n + 2
n + 1
T(n) + 2 (9)
T(n) ≤
n + 1
n
T(n − 1) + 2 (10)
Expandiendo (10):
T(n) ≤ 2 +
n + 1
n
T(n − 1)
= 2 +
n + 1
n
2 +
n
n − 1
T(n − 2)
= 2 +
n + 1
n
2 +
n
n − 1
2 +
n − 1
n − 2
T(n − 3)
= 2 +
n + 1
n
2 +
n
n − 1
2 +
n − 1
n − 2
2 +
n − 2
n − 3
T(n − 4)
¿Hasta d´onde llega la expansi´on? hasta llegar a T(3) ≤ 4
3 T(2)+2 = 2+ 4
3 (3
2 T(1)+2), como T(1) = 0,
entonces T(3) ≤ 2 + 4
3 (2) (este es el motivo del 4/3 visto en el ejercicio en clases).
Continuando con la expansi´on:
Carlos Contreras Bolton
6
7. Dise˜no de Algoritmos Ejercicios Resueltos - An´alisis
T(n) ≤ 2 +
n + 1
n
2 +
n
n − 1
2 +
n − 1
n − 2
2 +
n − 2
n − 3
..,2 +
4
3
(2)
= 2 1 +
n + 1
n
+
n + 1
n
n
n − 1
+
n + 1
n
n
n − 1
n − 1
n − 2
+ ... +
n + 1
n
n
n − 1
n − 1
n − 2
...
4
3
= 2 1 +
n + 1
n
+
n + 1
n − 1
+
n + 1
n − 2
+ ... +
n + 1
3
= 2(n + 1)
1
n + 1
+
1
n
+
1
n − 1
+ ... +
1
3
= 2(n + 1)
1
n + 1
+
1
n
+
1
n − 1
+ ... +
1
3
+
1
2
+ 1 −
1
2
+ 1
= 2(n + 1)(H(n + 1) − 1, 5)
Recuerden que H(n) = 1+1/2+1/3+...+1/n es la serie harm´onica, la cual tiene una aproximaci´on
a H(n) = ln n + γ + O(1/n), donde γ = 0, 577.. es la constante de Euler. Entonces la soluci´on a T(n) es:
T(n) ≤ 2(n + 1)(ln n + γ − 1, 5) + O(1) = O(n log n)
Carlos Contreras Bolton
7
8. Dise˜no de Algoritmos Ejercicios Resueltos - An´alisis
Ejercicio 7: Resolver
T(n) =
a if n = 1;
2T(n/4) + log n if n > 1.
T(n) = 2T
n
4
+ log n
= 2 2T
n
42
+ log
n
4
+ log n = 22
T
n
42
+ 2 log
n
4
+ log n
= 2 2 2T
n
43
+ log
n
42
+ log
n
4
+ log n = 23
T
n
43
+ 22
log
n
42
+ 2 log
n
4
+ log n
= ...
= 2i
T
n
4i
+
i−1
k=0
log
n
4k
= 2i
T
n
4i
+ log n
i−1
k=0
2k
−
i−1
k=0
2k
log 4k
Considerando n como potencia de 4 y todos los logaritmos en base 4 (la base no importa tanto, lo
importante es que es logaritmo) tenemos:
T(n) = 2i
T
n
4i
+ log4 n
i−1
k=0
2k
−
i−1
k=0
2k
log4 4k
= ...
= 2i
T (1) + log4 n
i−1
k=0
2k
−
i−1
k=0
2k
k
= a2i
+ log4 n(2i
− 1) − (i − 2)2i
− 2
Considerando que n es potencia de 4, entonces n = 4i
e i = log4 n. Tambi´en podemos obtener que√
n = 2i
.
T(n) = a2i
+ log4 n(2i
− 1) − (i − 2)2i
− 2
= a
√
n + log4 n(
√
n − 1) − (log4 n − 2)
√
n − 2
= (a + 2)
√
n − log4 n − 2
Por lo tanto T(n) = Θ(
√
n).
Carlos Contreras Bolton
8