Ordenamiento de un arreglo. Algoritmos y Estructuras de Datos I. Demostración. Cota inferior de complejidad tiempo para sorting
|
|
- Adolfo Prado Saavedra
- hace 6 años
- Vistas:
Transcripción
1 Ordenamiento de un arreglo Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Algoritmos - clase 12 Algoritmos de ordenamiento, segunda parte Tenemos un arreglo de un tipo T con una relacïı 1 2n de orden ( ) y queremos modificar el arreglo para que sus elementos queden en orden creciente. problema sort<t> (a : [T], n : Int) { requiere n == a > 1; asegura mismos(a, pre(a)) ordenado(a); Adoptamos como estrategia que modificamos el arreglo permutando elementos, para garantizar que nuestro algoritmo no pierde ningún elemento del arreglo. Conocemos el algoritmo upsort, con complejidad O(n 2 ). 1 2 Cota inferior de complejidad tiempo para sorting Demostración Supongamos que ordenamos esta secuencia: 3, 2, 4, 5, 1. El método comparará los números, y según sean los resultados de las comparaciones permutará los elementos. El efecto neto será: Consideremos algoritmos de ordemiento basados, exclusivamente, en operaciones de comparar elementos y permutarlos. Teorema: Sea cualquier método de ordenamiento (inventado o por inventarse). Ordenar n elementos toma al menos log 2 (n!) pasos. El método no puede ejecutar exactamente de la misma manera si la secuencia es otra, por ejemplo: 2, 3, 4, 5, 1 Por qué? Si lo hiciera, el resultado neto sería 3 Concluímos que la ejecución debe ser una sucesión de pasos distinta para cada permutación posible de la secuencia de entrada. 4
2 Visualicemos todas las ejecuciones como un árbol de ejecuciones. Cada nodo es, o bien una asignación, o bien una comparación. El árbol se ramifica en cada comparación. Cada camino desde la raíz hasta una hoja es una ejecución del programa. La altura del árbol da el peor caso de cantidad de instrucciones ejecutadas por el programa. Si éste es el árbol de ejecuciones de un programa de ordenamiento, que ordena n elementos, para cada una de las n! permutaciones de la secuencia de entrada, la ejecución debe alcanzar una hoja diferente. El árbol debe tener al menos n! hojas. 5 Debe tener al menos n! hojas. Sabemos que un árbol binario con L hojas tiene altura al menos log 2 L. Por lo tanto nuestro árbol tiene altura al menos log 2 n!. Concluímos que el ordenamiento, en el peor caso, requiere al menos log 2 n! pasos. 6 ï 1 2 Ordenamiento mï 1 2 s rï 1 2 pido? En la materia Algoritmos y Estructuras de Datos II verï 1 2 n algoritmos que tienen complejidad O(n log n). Y estudiarï 1 2n a fondo las ventajas y desventajas de cada uno. Para poder hacer un ordenamiento más rápido necesitamos... sort count es un algoritmo eficiente para ordenar un arreglo de enteros de dimensión n, cuyos valores están entre 0 y n 1. saber más acerca de la secuencia de entrada, de forma tal de poder ahorrarnos comparaciones entre elementos. 7 8
3 problema sort count(a : [Int], n : Int) { requiere n == a 1; requiere ( i [0.. a )) 0 a i < a ; asegura mismos(a, pre(a)) ordenado(a); aux ordenado(c) = ( i [0.. c 1))c[i] c[i + 1] aux mismos(b, c) = b == c todos([cuenta(x, b) == cuenta(x, c) x b]) Sea a el arreglo de entrada. El algoritmo sort count usa una estructura auxiliar b, de la misma dimensïı 1 2n que a, donde contaremos la cantidad de ocurrencias de cada elemento. En b[i] indicaremos la cantidad de ocurrencias de i en a. Esto es posible porque los elementos de a son enteros mayores o iguales que 0 y menores que la dimensïı 1 2n de a. Luego, ordenaremos a escribiendo de izquierda a derecha cada uno de sus elementos con su correspondiente cantidad de ocurrencias registrada en b problema cuenta ocurrencias(a : [Int], n : Int, b : [Int]){ requiere a == n; requiere b == n; requiere todos([0 a[i] < n i [0..n)]); modifica b; asegura b == [cuenta(i, a) i [0..n)]; aux cuenta(x, c) = [β(x == c[j]) j [0.. c )]; problema reconstruye(a : [Int], n : Int, b : [Int]){ requiere a == n; requiere b == n; asegura ordenado(a); asegura ( i [0..n))cuenta(i, a) == b[i]; aux cuenta(x, c) = [β(x == c[j]) j [0.. c )]; problema init(a : [Int], val : Int, n : Int){ requiere n == a n > 0; asegura todos([a[j] == val, j [0..n)]); problema asigna(a : [Int], desde : Int, cant : Int, val : Int){ requiere desde 0 desde + cant a ; asegura todos([a[j] == val, j [desde..desde + cant)]); 11 12
4 Cuenta ocurrencias void cuenta ocurrencias(int a[], int b[], int n){ init(b,0,n); int i=0; // Pc:i == 0 ( j [0.. b ))b[j] == 0; while (i< n) { // invariante I: 0 i a // ( j [0..i))b[a[j]] == cuenta(a[j], a[0..i)); // variante v: n i, cota 0 b[a[i]]=b[a[i]]+1; i++; // Qc: ( i [0.. a ))cuenta(i, a) == b[i]; 13 Reconstruye el arreglo ordenado a partir de las ocurrencias void reconstruye(int a[], int b[], int n){ int i=0; int j=0; // Pc: i == 0 j == 0; while (i<n) { // invariante I: (0 i n) (0 j n) ordenado(a[0.. b[0..i)) // ( k [0..i))cuenta(k, a[0.. b[0..i))) == b[k]; // variante v:n i asigna(a,j,b[i], i); j=j+b[i]; i++; // Qc: ordenado(a) ( k [0.. a ))cuenta(k, a) == b[k]; void asigna(int a[], int desde, int cant, int val){ int k = desde; // Pc: k == desde; while (k < desde+cant){ // invariante I: (desde k desde + cant) todos([a[m] == val m [desde..k)]) // variante v: desde + cant k, cota 0; a[k] = val; k++; // Qc:todos([a[m] == val m [desde..desde + cant)]); 14 sort count tiene complejidad lineal void sort count(int a[], int n) { int b[n]; // estado e 0; // vale P: a == pre(a) n == a 1 ( i [0.. a )) 0 a i < a ; cuenta ocurrencias(a,b,n); // estado e 1; // vale a== a@e0; // vale ( k [0.. a )) cuenta(k, a) == b[k]; reconstruye(a,b,n); // estado e 2; // vale ordenado(a) ( k [0.. a )) cuenta(k, a) == b[k]; // implica ordenado(a) ( k [0.. a )) cuenta(k, a) == cuenta(k, a@e0); porque b[k] == cuenta(k, a@e0) // implica Q: ordenado(a) mismos(a, pre(a)); ( i [0.. a )) 0 (a@e0) i < a ]); Los elementos de a son mayores o iguales que 0 y menores que la longitud de a. El algoritmo usa un arreglo auxiliar b de la misma longitud que a. Para contar ocurrencias de los elementos de a leemos a una sola vez, de izquierda a derecha, mientras acumulamos en b. Para reconstruir a necesitamos leer b una sola vez, de izquierda a derecha, mientras escribimos a tambïı 1 2n de izquierda a derecha. El algoritmo tiene complejidad O( a )
5 Problema de la bandera holandesa Algoritmo de la bandera holandesa Supongamos que tenemos la siguiente hipótesis adicional: problema dfp(a : [Int], n : Int) { requiere n == a 1; requiere ( i [0.. a )) 0 a i 2; asegura mismos(a, pre(a)) ordenado(a); Queremos un algoritmo de complejidad lineal, O(n) para n = a, pero que no use una estructura de datos adicional para contar ocurrencias. Queremos modificar el arreglo haciendo swaps. La postcondición se puede escribir de la siguiente forma equivalente: asegura mismos(a, pre(a)) ( i, j [0.. a ), i j) a[0..i) == 0 a[i..j) == 1 a[j.. a ) == 2 Abusando notación, definimos: a[d, h) == x ( l [d, h)) a l == x En forma gráfica: i j Algoritmo de la bandera holandesa Programa de la bandera holandesa El invariante se obtiene haciendo variar las variables i, j, k: I: mismos(a, pre(a)) 0 i j k a a[0..i) = 0 a[i..j) == 1 a[k.. a ) == 2 En forma gráfica: 0 1? 2 El invariante es equivalente a la postcondición cuando j==k. Con ésto deducimos la guarda del ciclo. Para inicializar trivialmente un estado que cumple el invariante hacemos: i = 0; j = 0; k = n; asumiendo a == n. void dfp(int a[], int n) { int i = 0; int j = 0; int k = n; while( j!= k ) { if( a[j] == 1 ) else if( a[j] == 2 ) { swap(a,j,k-1); k--; else if( a[j] == 0 ) { swap(a,i,j); i++; 19 20
6 Programa de la bandera holandesa Caso 1: a j == 1 void dfp(int a[], int n) { int i = 0; int j = 0; int k = n; while( j!= k ) { I B :... a[0..i) == 0 a[i..j) == 1 a[k..n) == 2; if( a[j] == 1 ) I... j k a j == 1; else if( a[j] == 2 ) I... j k a j == 2; else if( a[j] == 0 ) I... j k a j == 0; E 1 : mismos(a, pre(a)) 0 i j < k a a j == 1 E 2 : a = a@e 1 j = j@e i = i@e 1 k = k@e 1 implica mismos(a, pre(a)) implica 0 i j k a implica a j 1 == 1 a[i..j 1) == 1 implica a[i..j 1] == 1 implica I I: mismos(a, pre(a)) 0 i j k a Caso 2: a j == 2 Caso 3: a j == E 1 : mismos(a, pre(a)) 0 i j < k a a j == 2 swap(a,j,k-1); E 1 : mismos(a, pre(a)) 0 i j < k a a j == 0 swap(a,i,j); E 2 : a j == (a@e 1 ) i a i == (a@e 1 ) j ( t [0.. a ), t i, t j)a t == a 1 i == i@e 1 j == j@e 1 k == k@e 1 implica mismos(a, pre(a)) 0 i j < k a implica a i == 0 (i < j a j == 1) implica a[0..i] == 0 a(i..j) == 1 a[k.. a ) == 2 i++; E 3 : a == a@e 2 i == i@e j == j@e 2 k = k@e 2 implica mismos(a, pre(a)) implica 0 i 1 j < k a implica (i 1 < j a j == 1) implica E 2 : a j == (a@e 1 ) k 1 a k 1 == (a@e 1 ) j ( t [0.. a ), t j, t k 1) a t == (a@e 1 ) t i == i@e 1 j == j@e 1 k == k@e 1 implica mismos(a, pre(a)) 0 i j < k a implica a k 1 == 2 implica a[0..i) == 0 a[i..j) == 1 a[k 1.. a ) == 2 k--; E 3 : a == a@e 2 i == i@e 2 j == j@e 2 k = k@e 2 1 implica mismos(a, pre(a)) implica 0 i j k a implica implica I 23 24
7 Caso 3: a j == 0 Correctitud del programa la bandera holandesa E 3 : mismos(a, pre(a)) 0 i 1 j < k a (i 1 < j a j == 1) E 4 : a == a@e 2 i == i@e 2 j == j@e k == k@e 2 implica mismos(a, pre(a)) implica 0 i j k a implica (i < j a j 1 == 1) implica implica I Tenemos el cuerpo del ciclo, que (1) preserva el invariante. i = 0; j = 0; k = n; while( j!= k ) { I B :... if( a[j] == 1 ) else if( a[j] == 2 ) { swap(a,j,k-1); k--; else if( a[j] == 0 ) { swap(a,i,j); i++; Correctitud del programa la bandera holandesa Correctitud del programa la bandera holandesa En cada una de las tres ramas, (4) el variante decrece: k j; cota 0 Por construcción, (2) la inicialización establece el invariante: P c : i == 0 j == 0 k == a a == pre(a) implica I : mismos(a, pre(a)) 0 i j k a Además, (3) al salir del ciclo vale Qc: I B: mismos(a, pre(a)) 0 i j == k a implica Qc: mismos(a, pre(a)) ( i, j [0.. a ), i j) a[0..i) == 0 a[i..j) == 1 a[j.. a ) == 2; E 1 : mismos(a, pre(a)) 0 i j < k a a j == 1... E 2 : k == k@e 1 j == j@e implica k j < (k j)@e 1 E 1 : mismos(a, pre(a)) 0 i j < k a a j == 2... swap(a,j,k-1); k--; E 2 : k == k@e 1 1 j == j@e 1 implica k j < (k j)@e 1 E 1 : mismos(a, pre(a)) 0 i j < k a a j == 0... swap(a,i,j); i++; E 2 : k == k@e 1 j == j@e implica k j < (k j)@e
8 Correctitud del programa la bandera holandesa Complejidad del algoritmo de la bandera holandesa Finalmente, (5) cuando el variante pasa la cota, el ciclo termina, ya que k j 0 B. Por lo tanto, el ciclo es correcto respecto de su especificación. Luego, como Qc implica las poscondición del problema (son iguales en este caso), el algoritmo es correcto respecto de su especificación. Cuál es la complejidad del algoritmo? 1. Antes de comenzar las iteraciones, v = a. 2. En cada iteración, el variante decrece estrictamente. 3. Cuando v 0, el ciclo termina. Entonces, el algoritmo realiza a lo sumo a iteraciones (realiza exactamente a iteraciones, dado que en cada paso el variante decrece en exactamente una unidad). El algoritmo tiene complejidad O(n)
Notación Asintótica 2
Notación Asintótica 2 mat-151 1 Éxamen Rápido (6 minutos) Cada operación fundamental usa c milisegundos, cuánto tiempo toma contar hasta 1,000,000? Cuál es el valor de N? Cuál es el órden de complejidad
Más detallesAlgoritmos para determinar Caminos Mínimos en Grafos
Problemas de camino mínimo Algoritmos para determinar Caminos Mínimos en Grafos Algoritmos y Estructuras de Datos III DC, FCEN, UBA, C 202 Problemas de camino mínimo Dado un grafo orientado G = (V, E)
Más detallesAlgoritmos de Ordenación
Algoritmos de Ordenación Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Algoritmos comunes - Ordenación Ordenación o clasificación es
Más detallesUniversidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero
Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 4: Ordenación Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Elección de un método Métodos directos
Más detallesClases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.
Algoritmos Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEN - UBA Programación imperativa - clase 10 Memoria dinámica listas enlazadas Clases e instancias El paquete
Más detallesNOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo.
NOTACIÓN O GRANDE El análisis de algoritmos estima el consumo de recursos de un algoritmo. Esto nos permite comparar los costos relativos de dos o más algoritmos para resolver el mismo problema. El análisis
Más detallesMáquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 42
Máquinas de Turing IIC3242 IIC3242 Máquinas de Turing 1 / 42 Complejidad Computacional Objetivo: Medir la complejidad computacional de un problema. Vale decir: Medir la cantidad de recursos computacionales
Más detallesEstructuras de Control
Algorítmica y Lenguajes de Programación Estructuras de Control Estructuras de Control. Introducción Hasta ahora algoritmos han consistido en simples secuencias de instrucciones Existen tareas más complejas
Más detallesORDENAMIENTO Y BÚSQUEDA EN ARREGLOS
1 ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS Corina Flores Villarroel ORDENAMIENTO EN ARREGLOS Y COLECCIONES Una de las tareas más comunes a la hora de procesar datos es la clasificación u ordenación de los datos.
Más detallesESTRUCTURAS REPETITIVAS EN PHP
ESTRUCTURAS REPETITIVAS EN PHP Los bucles nos permiten iterar conjuntos de instrucciones, es decir repetir la ejecución de un conjunto de instrucciones mientras se cumpla una condición. Sentencia while
Más detallesTipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S
Tipos de datos en S Lógica y Computabilidad Verano 2011 Departamento de Computación - FCEyN - UBA Computabilidad - clase 5 Codificación de programas, Halting problem, diagonalización, tesis de Church,
Más detallesMáquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 45
Máquinas de Turing IIC3242 IIC3242 Máquinas de Turing 1 / 45 Complejidad Computacional Objetivo: Medir la complejidad computacional de un problema. Vale decir: Medir la cantidad de recursos computacionales
Más detallesAlgoritmos y programas. Algoritmos y Estructuras de Datos I
Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de
Más detallesNIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS
1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para
Más detallesAlgoritmos Recursivos de Búsqueda y Ordenación y sus tiempos
Estructura de Datos y Algoritmos Algoritmos Recursivos de Búsqueda y Ordenación y sus tiempos 1. Algoritmos de ordenación recursivos 1.1. Mergesort, Ordenamiento por fusión Mergesort se ejecuta en un tiempo
Más detallesSorting++ Herman Schinca. Clase 21. 10 de Junio de 2011
Sorting++ Herman Schinca Clase 21 10 de Junio de 2011 Recordando Ya vimos 3 algoritmos de ordenamiento basados en la comparación entre elementos: Selection, Insertion y Bubble. Los 3 en peor caso (cuando
Más detallesLímite superior y límite inferior de una sucesión
Límite superior y límite inferior de una sucesión Objetivos. Definir las nociones de los límites superior e inferior de una sucesión y estudiar sus propiedades básicas. Requisitos. Supremo e ínfimo de
Más detallesAnálisis de Algoritmos
Análisis de Algoritmos Amalia Duch Barcelona, marzo de 2007 Índice 1. Costes en tiempo y en espacio 1 2. Coste en los casos mejor, promedio y peor 3 3. Notación asintótica 4 4. Coste de los algoritmos
Más detallesAlgoritmos glotones. mat-151
Algoritmos glotones (greedy) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos 04.06.2009 Algoritmos glotones Algoritmos utilizados en problemas de optimización. Estos algoritmos siguen típicamente
Más detallesLa eficiencia de los programas
La eficiencia de los programas Jordi Linares Pellicer EPSA-DSIC Índice General 1 Introducción... 2 2 El coste temporal y espacial de los programas... 2 2.1 El coste temporal medido en función de tiempos
Más detalles<tipo> Tipo de dato de los elementos del vector
Vectores y matrices Declaración Vector (array unidimiensional): []; Tipo de dato de los elementos del vector Identificador de la variable.
Más detallesSistemas Operativos Practica 1: procesos y concurrencia.
Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo
Más detallesTema 2: Teorema de estructura de los grupos abelianos finitamente generados.
ESTRUCTURAS ALGEBRAICAS GRADO EN MATEMÁTICAS. CURSO 215/216 Tema 2: Teorema de estructura de los grupos abelianos finitamente generados. 1.1. Grupo abeliano libre. Bases. Definición 1.1. El grupo Z n con
Más detallesAlgoritmos de Búsqueda y Ordenamiento
Departamento de Informática Universidad Técnica Federico Santa María Algoritmos de Búsqueda y Ordenamiento Programación de Computadores IWI--p Prof.: Teddy Alfaro Olave Algoritmos de Búsqueda Los procesos
Más detallesEstructuras de Repetición (Hacer-Mientras)
Estructuras de Repetición (Hacer-Mientras) Material Original: Prof. Flor Narciso Modificaciones: Prof. Andrés Arcia Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería
Más detallesClase 32: Árbol balanceado AVL
Clase 32: Árbol balanceado AVL http://computacion.cs.cinvestav.mx/~efranco @efranco_escom efranco.docencia@gmail.com (Prof. Edgardo A. Franco) 1 Contenido Problema de los árboles binarios de búsqueda Variantes
Más detallesTema: Métodos de Ordenamiento. Parte 1.
Programación IV. Guía 2. 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Métodos de Ordenamiento. Parte 1. Objetivos Específicos Identificar la estructura de algunos algoritmos
Más detallesApuntadores (Punteros)
Apuntadores (Punteros) x9ff10 X int 209 SESION 7 *ptr Definición Llamados también punteros. Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable
Más detallesEstructuras de control
Estructuras de control Introducción Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando
Más detallesEjemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013
Técnicas de diseño de algoritmos Algoritmos y Estructuras de Datos III Segundo cuatrimestre 2013 Técnicas de diseño de algoritmos Algoritmos golosos Backtracking (búsqueda con retroceso) Divide and conquer
Más detallesCiclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL
Ciclos Fundamentos de Programación Recordando Estructuras de Control Básicas: Una secuencia es una serie de estatutos que se ejecutan uno después de otro. Selección (condición) ejecuta diferentes estatutos
Más detallesAlgoritmos de Strings. Héctor Navarro
lgoritmos de Strings Héctor Navarro Substrings Dado un string T (posiblemente muy grande) y un patrón P (de tamaño menor), encontrar la primera (o todas) las apariciones de P en T Solución trivial de (NM)
Más detallesTema 2 Resolución de EcuacionesNo Lineales
Tema 2 Resolución de Ecuaciones No Lineales E.T.S.I. Informática Indice Introducción 1 Introducción 2 Algoritmo del método de Bisección Análisis del 3 4 5 6 Algoritmo de los métodos iterativos Interpretación
Más detallesÁrboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores
Árboles Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Introducción Árbol genérico Definición y representación Árboles binarios Definición, implementación,
Más detallesRuta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE
Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) 1 DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Problema de Encontrar la Ruta más Corta 2 Se requiere llegar de
Más detallesTema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda
Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 9. Árboles 9.1 Árboles generales 9.2 Árboles binarios 9.3 Árboles de búsqueda 9.1 Árboles generales Un árbol es
Más detallesAnalisis de algoritmos
Analisis de algoritmos Eficiencia Es la capacidad de disponer de un recurso. En el caso de los algoritmos, la eficiencia se logra haciendo el mejor uso posible de los recursos del sistema. Recursos Qué
Más detallesVI Colas de prioridad
VI Colas de prioridad Una cola de prioridad (cat: cua de prioritat; ing: priority queue) es una colección de elementos donde cada elemento tiene asociado un valor susceptible de ordenación denominado prioridad.
Más detallesDEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006
ARBOLES ESTRUCTURAS DE DATOS 2006 DEFINICION Un árbol (tree) es un conjunto finito de nodos. Es una estructura jerárquica aplicable sobre una colección de elementos u objetos llamados nodos; uno de los
Más detallesPROGRAMACIÓN UNIDADES
PROGRAMACIÓN Semestre: Segundo Horas: 90 horas Hrs/sem: 4.5 Créditos: 9 Clave: AI-02 DESCRIPCIÓN DE LA ASIGNATURA Al finalizar el curso el alumno tendrá el conocimiento y la capacidad de implementar programas
Más detallesIntegrantes. Leonardo Herrera Cristian Fernandez Jorge A Mondragón. Análisis y Diseño de Algoritmos. Docente Diana Mabel Díaz Herrera.
Integrantes Leonardo Herrera Cristian Fernandez Jorge A Mondragón Análisis y Diseño de Algoritmos Docente Diana Mabel Díaz Herrera HeapSort Universidad Piloto de Colombia Facultad de Ingeniería de Sistemas
Más detallesIntroducción a las Subastas de Múltiples Unidades
Introducción Introducción a las Subastas de Múltiples Unidades Alvaro J. Riascos Villegas Abril 16 de 2013 Contenido Introducción 1 Introducción 2 3 4 5 6 7 Introducción Introducción Los principales formatos
Más detallesAlgoritmos y Programación Clase 8
Algoritmos y Programación Ordenamiento y Búsqueda Anexo: Uso de Procedimientos Sub y Procedimientos Function 1 EXAMEN 1. Lunes 16 de abril 4 pm. 2. Tema: Lo visto hasta la clase de hoy. 2 Contenido Ordenamiento
Más detallesSumatorias y productorias (desde 0) Lógica y Computabilidad. Sumatorias y productorias (desde 1)
Lógica y Computabilidad Verano 2011 Departamento de Computación - FCEyN - UBA Computabilidad - clase 3 Sumatorias y productorias, cuantificadores acotados, minimización acotada, codificación de pares y
Más detallesProgramación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática
Programación de Computadores 4 Iteraciones y Decisiones Prof. Javier Cañas Universidad Técnica Federico Santa María Departamento de Informática Contenido 1 Introducción 2 Operadores Relacionales y Lógicos
Más detallesCurso de Programación en C. Licenciatura, FCQeI. APUNTADORES.
APUNTADORES. La memoria de una máquina esta ordenada en forma de celdas numeradas consecutivamente y que se pueden manipular individualmente o en grupos contiguos. La siguiente figura muestra una representación
Más detallesComplejidad de Algoritmos
Complejidad de Algoritmos Tema 5 Introducción Un algoritmo es una secuencia de instrucciones que resuelve un problema Puede tener diferentes implementaciones Para comparar las diferentes formas (algoritmos)
Más detallesfundamentos de programación (unidad 4) programación estructurada en Java
fundamentos de programación (unidad 4) programación estructurada en Java Para ver una copia completa de la licencia, acudir a la dirección http://creativecommons.org/licenses/by-nc-sa/2.5/es/legalcode.es
Más detallesTeoremas de Convergencia
Capítulo 24 Teoremas de Convergencia El teorema de la convergencia monótona (Lema 21.3) establece ciertas condiciones sobre una sucesión de funciones medibles para que se puedan permutar los símbolos y
Más detallesESTRUCTURAS REPETITIVAS
DOCENTE: Ing. Ronald Rentería Ayquipa MARCO TEÓRICO: ESTRUCTURAS REPETITIVAS La programación estructurada es un paradigma que consiste en la organización de un código en bloques conformados por estructuras
Más detallesCurso de Programación 1
Curso de Programación 1 Plan 97 Búsqueda y Ordenación Métodos de búsqueda Existen aplicaciones en las cuales es necesario consultar si un elemento se encuentra dentro de un array. A continuación veremos
Más detallesTECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL
1 TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL TECNOLOGÍA DE LA COMPUTADORA FACILITADOR: PARTICIPANTE: DAVID, CHIRIQUÍ 2015 2 Qué es un programa? Un programa informático es un conjunto
Más detallesOperadores de comparación
Operadores de comparación Los operadores de comparación en C son: Igual (==) Distinto (!=) Mayor (>) y Mayor o igual (>=) Menor (
Más detallesAgradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1
Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos
Más detallesESTRUCTURAS DE CONTROL Y DE SELECCIÓN
ESTRUCTURAS DE CONTROL Y DE SELECCIÓN Son aquellas que permiten ejecutar una acción mediante la aplicación de un interrogante o pregunta, el cual si la accion es verdadera o falsa se ejecuta una serie
Más detallesCapítulo 1: Fundamentos: Lógica y Demostraciones Clase 3: Relaciones, Funciones, y Notación Asintótica
Capítulo 1: Fundamentos: Lógica y Demostraciones Clase 3: Relaciones, Funciones, y Notación Asintótica Matemática Discreta - CC3101 Profesor: Pablo Barceló P. Barceló Matemática Discreta - Cap. 1: Fundamentos:
Más detallesEstructuras de Repetición (Repita para)
Estructuras de Repetición (Repita para) Andrés Arcia Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes Programación Digital I 1 REPITA PARA Fijar
Más detallesINTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008
INTRODUCCIÓN Estructura de Datos Tipos Abstractos de Datos (TAD S) Para poder obtener un programa que resuelva un problema dado, son necesarios varios pasos : La formulación y especificación del problema
Más detallesÁrboles Filogenéticos. BT7412, CC5702 Bioinformática Diego Arroyuelo. 2 de noviembre de 2010
Unidad 6: Árboles Filogenéticos BT7412, CC5702 Bioinformática Diego Arroyuelo 2 de noviembre de 2010 Temario (Introduction to Computational Molecular Biology Setubal y Meidanis Capítulo 6) 1. Introducción
Más detallesExtremos en Sucesiones
Divulgaciones Matemáticas 2(1) (1994), 5 9 Extremos en Sucesiones Extrema in Sequences José Heber Nieto Departamento de Matemática y Computación Facultad Experimental de Ciencias Universidad del Zulia.
Más detallesUniversidad de Santiago de Chile Facultad de Ciencia Departamento de Matemática y Ciencias de la Computación
Universidad de Santiago de Chile Facultad de Ciencia Departamento de Matemática y Ciencias de la Computación EJERCICIOS RESUELTOS DE ECUACIONES NO LINEALES Profesor: Jaime Álvarez Maldonado Ayudante: Rodrigo
Más detallesAnálisis probabilístico y Algoritmos Aleatorizados
Análisis probabilístico y Algoritmos Aleatorizados Andrés Becerra Sandoval Ponticia Universidad Javeriana 14 de julio de 2007 Lenguajes III Introducción La probabilidad puede ayudarnos a medir la complejidad
Más detallesCurso: Métodos de Monte Carlo. Unidad 2, Sesión 3: Estimación de volúmenes
Curso: Métodos de Monte Carlo. Unidad 2, Sesión 3: Estimación de volúmenes Departamento de Investigación Operativa Instituto de Computación, Facultad de Ingeniería Universidad de la República, Montevideo,
Más detallesPRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA
INSTITUTO POLITÉCNICO NACIONAL SECRETARIA ACADÉMICA DIRECCIÓN DE EDUCACIÓN SUPERIOR ESIME CULHUACAN NOMBRE ALUMNO: FECHA DIA MES AÑO INGENIERÍA EN COMPUTACIÓN ASIGNATURA 1. Objetivo Apellido paterno ESTRUCTURAS
Más detallesEl Juego como Problema de Búsqueda
El Juego como Problema de Búsqueda En este algoritmo identificamos dos jugadores: max y min. El objetivo es encontrar la mejor movida para max. Supondremos que max mueve inicialmente y que luego se turnan
Más detallesELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal
ELO320 Estructuras de Datos y Algoritmos Arboles Binarios Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, 2001 Thomas Cormen et
Más detallesExamen escrito de Programación 1. Jueves 5 de febrero de Problema 1 o (3.5 puntos)
Examen escrito de Programación 1. Jueves 5 de febrero de 2015 Se debe disponer de un documento de identificación con fotografía sobre la mesa. Se debe comenzar a resolver cada uno de los dos problemas
Más detallesEn cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.
Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa
Más detallesINTRODUCCIÓN AL ESTUDIO DE ALGORITMOS Y SU COMPLEJIDAD
Alg. y Estr. Datos-I / Fund. Progr.-II (R. Ferrís, J. Albert) 9 INTRODUCCIÓN AL ESTUDIO DE ALGORITMOS Y SU COMPLEJIDAD 9.1. Definición de complejidad y su medida 9.1.1. Introducción El objetivo de este
Más detallesNotas del curso de Algebra Lineal I. Luis Valero Elizondo
Notas del curso de Algebra Lineal I Luis Valero Elizondo 11 de septiembre de 2008 Índice general 1. Sistemas de ecuaciones lineales. 4 1.1. Campos............................... 4 1.2. Sumatorias.............................
Más detallesCONTENIDO 1 Diagrama de flujo 2 Pseudocodigo 3 Diagrama estructurado (nassi-schneiderman)
CONTENIDO 1 Diagrama de flujo 2 Pseudocodigo 3 Diagrama estructurado (nassi-schneiderman) Las dos herramientas utilizadas comúnmente para diseñar algoritmos son: Diagrama de Flujo Pseuducodigo 1 Diagrama
Más detallesLA ALEGRIA DE MULTIPLICAR
LA ALEGRIA DE MULTIPLICAR Octavio Montoya$ Profesor Universidad del Tolima t January 22, 2010 Abstract En este documento se presentan dos formas didácticas y divertidas de multiplicar números enteros.
Más detallesSucesiones Introducción
Temas Límites de sucesiones. convergentes. Sucesiones divergentes. Sucesiones Capacidades Conocer y manejar conceptos de sucesiones convergentes y divergentes. Conocer las principales propiedades de las
Más detallesAmpliación de Estructuras de Datos
Ampliación de Estructuras de Datos Amalia Duch Barcelona, marzo de 2007 Índice 1. Diccionarios implementados con árboles binarios de búsqueda 1 2. TAD Cola de Prioridad 4 3. Heapsort 8 1. Diccionarios
Más detallesProgramcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.
Programación Básica Arturo Vega González a.vega@ugto.mx Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 5 Universidad de Guanajuato, DCI, Campus León 1 / 31 Universidad
Más detallesOperadores y Expresiones
Operadores y Expresiones Los programas Java constan de datos, sentencias de programas y expresiones. Una expresión es normalmente, una ecuación matemática, tal como 3 * x + 5 * z. En esta expresión, los
Más detallesAlgoritmos sobre secuencias y conjuntos de datos
Suma de la Subsecuencia Máxima Dept. de Computación, Universidade da Coruña alberto.valderruten@udc.es Índice Suma de la Subsecuencia Máxima 1 Suma de la Subsecuencia Máxima 2 Suma de la Subsecuencia Máxima
Más detallesComplejidad amortizada
Análisis de algoritmos Complejidad amortizada Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Complejidad amortizada p. 1 Complejidad amortizada La idea en el análisis de complejidad
Más detallesCompresión de Datos. Método de Huffman. Dpto. Informática
Compresión de Datos Método de Huffman Manipulación y Preservación de Datos Dpto. Informática Ing. Mariano D'Agostino Introducción La compresión de datos es el proceso de convertir una cadena de datos de
Más detallesUnidad 3 Combinaciones
Unidad 3 Combinaciones Combinaciones Contar una selección no ordenada de objetos. Ejemplo Cuántos comités diferentes de tres estudiantes se pueden formar desde un grupo de cuatro estudiantes? R= 4 {1,2,3},
Más detallesFundamentos de programación
Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador
Más detallesAlgoritmos de Ordenamiento
Algoritmos de Ordenamiento Fernando A. Lagos B. Copyleft 2007 INDICE 1 Introducción Pág. 3 2 Tipos de Algoritmos Pág. 4 2.1 Algoritmos iterativos Pág. 5 2.2 Algoritmos recursivos Pág. 6 3 Método de la
Más detallesEquivalencia Entre PDA y CFL
Equivalencia Entre PDA y CFL El Lenguaje aceptado por un Autómata con Pila Universidad de Cantabria Esquema 1 Introducción 2 3 Lenguaje Aceptado por un Autómata Como en los autómatas finitos, se puede
Más detallesEcuaciones Diofánticas
2 Ecuaciones Diofánticas (c) 2011 leandromarin.com 1. Introducción Una ecuación diofántica es una ecuación con coeficientes enteros y de la que tenemos que calcular las soluciones enteras. En este tema
Más detallesProfesorado de Nivel Medio y Superior en Biología Matemática - 1º Cuatrimestre Año 2013 FUNCIÓN CUADRÁTICA
Matemática - º Cuatrimestre Año 0 FUNCIÓN CUADRÁTICA Hemos definido anteriormente la función lineal como una función f: R R de la forma f()a+b con a R y b R, que se representa en el plano mediante una
Más detallesTeorema del valor medio
Práctica 6 - Parte 1 Teorema del valor medio El teorema del valor medio para derivadas (o teorema de Lagrange) es un resultado central en la teoría de funciones reales. Este teorema relaciona valores de
Más detallesAPLICACIÓN DE ÁRBOLES BINARIOS
PRÁCTICA Nº 6: 2 sesiones (del 22 al 31 de Mayo de 2002) APLICACIÓN DE ÁRBOLES BINARIOS A LA COMPRESIÓN DE FICHEROS DE TEXTO MEDIANTE LA UTILIZACIÓN DE LOS CÓDIGOS DE HUFFMAN 0.- OBJETIVOS El objetivo
Más detallesUNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO
UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO LICENCIATURA EN PRODUCCIÓN INDUSTRIAL. UNIDAD DE APRENDIZAJE: PROGRAMACIÓN Créditos institucionales de la UA: 6 Material visual: Diapositivas Unidad de competencia
Más detallesProgramación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.
Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Variables Conceptos de Memoria Una variable es un espacio en la memoria del PC Cada variable tiene un nombre, un tipo, un tamaño y un valor
Más detallesALGORITMOS HEURÍSTICOS Y APROXIMADOS. Análisis y diseño de algoritmos II- 2009
ALGORITMOS HEURÍSTICOS Y APROXIMADOS Análisis y diseño de algoritmos II- 2009 Problemas difíciles : Definiciones, ejemplos y propiedades Análisis y diseño de algoritmos II- 2009 Un viaje a Ciencias de
Más detallesTEMA 4. ESTRUCTURAS DE CONTROL
M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.
Más detallesARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES
ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Características ARBOLES - CONCEPTOS Cada elemento del árbol se relaciona con cero o más elementos a quienes llama hijos. Si el árbol no
Más detalles1 Método de la bisección. 1.1 Teorema de Bolzano Teorema 1.1 (Bolzano) Contenido
E.T.S. Minas: Métodos Matemáticos Resumen y ejemplos Tema 3: Solución aproximada de ecuaciones Francisco Palacios Escuela Politécnica Superior de Ingeniería de Manresa Universidad Politécnica de Cataluña
Más detallesGuía - Taller # 2 (JAVA)
CEET - Distrito Capital Programa de Formación: ADSI 150752 TRIMESTRE VI Conocimiento de Conocimiento: Aplicar diversos estilos de Programación usando herramientas para Desarrollo Web Instructor: Ing. Espec.
Más detallesHerramientas computacionales para la matemática MATLAB: Estructuras de control
Herramientas computacionales para la matemática MATLAB: Estructuras de control Verónica Borja Macías Mayo 2012 1 Estructuras de control ESTRUCTURAS DE REPETICIÓN: BUCLES Los bucles permiten repetir las
Más detallesLa división euclídea. Algoritmo de Euclides. En esta práctica estudiamos algunos aspectos del algoritmo de Euclides para hallar el Mcd de dos enteros.
IMD-IS 2011 2012. Sesión de laboratorio 4. El algoritmo de Euclides La hoja de SAGE que corresponde a la práctica puede obtenerse de: http: // personal. us. es/ ebriand/ practica4. sws En esta práctica
Más detallesTEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero
TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando
Más detallesLABORATORIO 3 ESTRUCTURAS REPETITIVAS WHILE / DO WHILE
LABORATORIO 3 ESTRUCTURAS REPETITIVAS WHILE / DO WHILE 1 OBJETIVOS Al finalizar esta actividad, serás capaz de: Entender el funcionamiento de las estructuras iterativas en general; la(s) condición(es)
Más detallesEjemplo, generación de #s aleatorios
Ejemplo, generación de #s aleatorios Supón que tienes un generador de números aleatorios enteros [0,2] con distribución uniforme, y tu necesitas generar números con distribución uniforme [0,4]. Alguien
Más detallesEl programa que permite el manejo de la base de datos tiene la siguiente funcionalidad:
El TAD Diccionario Cuando se usa un conjunto en el diseño de un algoritmo podría no ser necesario contar con operaciones de unión o intersección. A menudo lo que se necesita es simplemente manipular un
Más detalles