Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cursada 2021
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplos de definiciones recursivas:
• Factorial de un número
0! = 1
Si n > 0, n! = n * (n-1)!
• Potencia de un número
x0 = 1
Si y > 0, xy = x * xy-1
• Estructuras de datos
Árboles
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
• Recorrer un árbol
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Soluciones recursivas:
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo:
Programar un algoritmo recursivo que permita invertir un número
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión int invertir (int n)
{
if (n < 10) //caso base
Ejecución: System.out.print(n);
else
Entrada: 123 System.out.print(n mod 10); // el resto de la
división entera
invertir (n div 10);
}
Salida:
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión int invertir (int n)
{
if (n < 10) //caso base
Ejecución: System.out.print(n);
else
Entrada: 123 System.out.print(n mod 10); // el resto de la
división entera
invertir (n div 10);
}
invertir (123)
n = 123
print (3)
invertir (12)
Salida: 3
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión int invertir (int n)
{
if (n < 10) //caso base
Ejecución: System.out.print(n);
else
Entrada: 123 System.out.print(n mod 10); // el resto de la
división entera
invertir (n div 10);
}
invertir (12)
n = 12
print (2)
invertir (1)
invertir (123) invertir (123)
n = 123 n = 123
print (3) print (3)
invertir (12) invertir (12)
Salida: 3 2
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión int invertir (int n)
{
if (n < 10) //caso base
Ejecución: System.out.print(n);
invertir (1) else
Entrada: 123 n=1 System.out.print(n mod 10); // el resto de la
división entera
print (1) invertir (n div 10);
}
Salida: 3 2 1
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión int invertir (int n)
{
if (n < 10) //caso base
Ejecución: System.out.print(n);
invertir (1) else
Entrada: 123 n=1 System.out.print(n mod 10); // el resto de la
división entera
print (1) invertir (n div 10);
}
Salida: 3 2 1
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión int invertir (int n)
{
if (n < 10) //caso base
Ejecución: System.out.print(n);
invertir (1) else
Entrada: 123 n=1 System.out.print(n mod 10); // el resto de la
división entera
print (1) invertir (n div 10);
}
Salida: 3 2 1
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión int invertir (int n)
{
if (n < 10) //caso base
Ejecución: System.out.print(n);
invertir (1) else
Entrada: 123 n=1 System.out.print(n mod 10); // el resto de la
división entera
print (1) invertir (n div 10);
}
Salida: 3 2 1
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión int invertir (int n)
{
if (n < 10) //caso base
Ejecución: System.out.print(n);
invertir (1) else
Entrada: 123 n=1 System.out.print(n mod 10); // el resto de la
división entera
print (1) invertir (n div 10);
}
Salida: 3 2 1
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión int invertir (int n)
{
if (n < 10) //caso base
Ejecución: System.out.print(n);
invertir (1) else
Entrada: 123 n=1 System.out.print(n mod 10); // el resto de la
división entera
print (1) invertir (n div 10);
}
Salida: 3 2 1
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Algoritmo de ordenación MergeSort
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Algoritmo de ordenación MergeSort
La estrategia del algoritmo consiste en dividir el vector en 2 partes (sub-
vectores), ordenarlos y luego hacer un Merge de estos sub-vectores ya
ordenados. Cada uno de esos sub-vectores se ordenan aplicando la misma
estrategia, hasta tanto el vector contenga sólo un dato y en ese caso se lo
devuelve (el sub-vector está ordenado).
Gráficamente:
Ordenar vector
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Algoritmo de ordenación MergeSort
La estrategia del algoritmo consiste en dividir el vector en 2 partes (sub-
vectores), ordenarlos y luego hacer un Merge de estos sub-vectores ya
ordenados. Cada uno de esos sub-vectores se ordenan aplicando la misma
estrategia, hasta tanto el vector contenga sólo un dato y en ese caso se lo
devuelve (el sub-vector está ordenado).
Gráficamente:
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Algoritmo de ordenación MergeSort
La estrategia del algoritmo consiste en dividir el vector en 2 partes (sub-
vectores), ordenarlos y luego hacer un Merge de estos sub-vectores ya
ordenados. Cada uno de esos sub-vectores se ordenan aplicando la misma
estrategia, hasta tanto el vector contenga sólo un dato y en ese caso se lo
devuelve (el sub-vector está ordenado).
Gráficamente:
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Algoritmo de ordenación MergeSort
La estrategia del algoritmo consiste en dividir el vector en 2 partes (sub-
vectores), ordenarlos y luego hacer un Merge de estos sub-vectores ya
ordenados. Cada uno de esos sub-vectores se ordenan aplicando la misma
estrategia, hasta tanto el vector contenga sólo un dato y en ese caso se lo
devuelve (el sub-vector está ordenado).
Gráficamente:
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Algoritmo de ordenación MergeSort
La estrategia del algoritmo consiste en dividir el vector en 2 partes (sub-
vectores), ordenarlos y luego hacer un Merge de estos sub-vectores ya
ordenados. Cada uno de esos sub-vectores se ordenan aplicando la misma
estrategia, hasta tanto el vector contenga sólo un dato y en ese caso se lo
devuelve (el sub-vector está ordenado).
Gráficamente:
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Estrategia
Ordenar un arreglo con n elementos
mergesort(a, 0, 6)
Ordenar la 1er mitad del arreglo Ordenar la 2da mitad del arreglo
n/2 elementos n/2 elementos
mergesort (a, 0, 3)
mergesort (a, 4, 6)
En cada paso
intermedio se
Mezclar ambas mitades ya ordenadas aplica la misma
estrategia
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2:
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2 (cont.) :
public static void merge ( int a[], int izq, int m, int der) {
int i, j, k;
int [] b = new int [a.length]; //array auxiliar
for ( i=izq; i<=der; i++ ) { //copia ambas mitades en el array auxiliar
b[i]=a[i]; }
i=izq; j=m+1; k=izq;
while (i<=m && j<=der) { //copia el siguiente elemento más grande
if (b[i]<=b[j])
a[k++]=b[i++];
else
a[k++]=b[j++];
}
while (i<=m) //copia los elementos que quedan de la
a[k++]=b[i++]; //primera mitad (si los hay)
}
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3) mergesort(a, 4, 6)
mergesort(a, 0, 1) mergesort(a, 4, 5)
mergesort(a, 2, 3) mergesort(a, 6, 6)
mergesort(a, 0, 0) ……..
…….. ……..
…….. ……..
……..
merge(a, 0, 0, 1) merge(a, 4, 4, 5)
merge(a, 2, 2, 3) merge(a, 6, 6, 6)
…….. ……..
…….. ……..
…….. ……..
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3)
mergesort(a, 4, 5)
mergesort(a, 6, 6)
……..
……..
……..
merge(a, 4, 4, 5)
merge(a, 6, 6, 6)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3)
mergesort(a, 0, 1) mergesort(a, 4, 5)
mergesort(a, 6, 6)
……..
……..
……..
merge(a, 4, 4, 5)
merge(a, 6, 6, 6)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3)
mergesort(a, 0, 1) mergesort(a, 4, 5)
mergesort(a, 6, 6)
mergesort(a, 0, 0) ……..
……..
……..
merge(a, 4, 4, 5)
merge(a, 6, 6, 6)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3)
mergesort(a, 0, 1) mergesort(a, 4, 5)
mergesort(a, 6, 6)
merge(a, 4, 4, 5)
merge(a, 6, 6, 6)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3)
mergesort(a, 0, 1) mergesort(a, 4, 5)
mergesort(a, 6, 6)
merge(a, 4, 4, 5)
Fin de la llamada recursiva
merge(a, 6, 6, 6)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3)
mergesort(a, 0, 1) mergesort(a, 4, 5)
mergesort(a, 6, 6)
0 8
……..
……..
……..
merge(a, 4, 4, 5)
merge(a, 6, 6, 6)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3)
0 8
……..
……..
……..
merge(a, 4, 4, 5)
merge(a, 6, 6, 6)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3)
0 8
mergesort(a, 2, 2) ……..
……..
……..
merge(a, 4, 4, 5)
merge(a, 6, 6, 6)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3)
0 8
mergesort(a, 2, 2) ……..
……..
mergesort(a, 3,……..
3)
merge(a, 4, 4, 5)
merge(a, 6, 6, 6)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3)
0 8
mergesort(a, 2, 2) ……..
……..
mergesort(a, 3,……..
3)
merge(a,
merge(a, 2, 2, 3) 4, 4, 5)
merge(a, 6, 6, 6)
Fin de la llamada recursiva
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3)
0 8 -1 3
……..
……..
……..
merge(a, 4, 4, 5)
merge(a, 6, 6, 6)
merge(a, 0, 1, 3)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3) mergesort(a, 4, 6)
mergesort(a, 4, 5)
mergesort(a, 5, 5)
mergesort(a, 4, 5)
mergesort(a, 4, 4)
merge(a, 4, 4, 5)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3) mergesort(a, 4, 6)
mergesort(a, 4, 5) mergesort(a, 6, 6)
mergesort(a, 4, 5)
merge(a, 4, 5, 6)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Repaso de Recursión
Ejemplo 2: Ejecución
mergesort(a, 0, 6)
mergesort(a, 0, 3) mergesort(a, 4, 6)
merge(a, 0, 3, 6)
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmos y Estructuras de Datos
Cursada 2021
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Temas del curso
Árboles
Análisis de Algoritmos
Cola de Prioridades
Grafos
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Objetivos de la materia
Analizar algoritmos y evaluar su
eficiencia
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Estructuras de Datos
Una estructura de datos es una forma de almacenar y
organizar los datos con el fin de facilitar el acceso y las
modificaciones.
Ejemplo:
Grafos Ordenación
Estructuras de Datos Algoritmos
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Las estructuras de datos y sus
algoritmos son….
Computación Seguridad
Multimedia
Gráfica
Biología Inteligencia Artificial
Internet Física
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Ejemplo 1: Árbol de carpetas y archivos
Nodos: Carpetas/Archivos
Aristas: representan la relación “contiene”
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Ejemplo 2: Prerrequisitos de un curso
Nodos: Cursos
Aristas: relación de “prerrequisito”
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Ejemplo 3: Representación de una expresión
en un compilador
Nodos: Operandos/Operadores
Aristas: representan las relaciones entre las operaciones
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Ejemplo 4: Esquema de una red informática
Nodos: Equipos
Aristas: representan las conexiones
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Ejemplo 5: Mapa de ciudades
Nodos: Ciudades
Aristas: Rutas
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Estructuras de Datos:
Qué, Cómo y Por qué?
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Estructuras de Datos:
Qué, Cómo y Por qué?
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Objetivos del curso respecto de las
Estructuras de Datos
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmos y su Análisis
¿Qué es un algoritmo?
Es una secuencia de pasos que resuelven un problema
Es independiente del lenguaje de programación
Existen varios algoritmos que resuelven correctamente
un problema
La elección de un algoritmo particular tiene un enorme
impacto en el tiempo y la memoria que utiliza
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Objetivos del curso respecto del
Análisis de los Algoritmos
Entender los fundamentos matemáticos necesarios
para analizar algoritmos
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Problemas y algoritmos
Problemas:
Buscar un elemento en un arreglo
Ordenar una lista de elementos
Encontrar el camino mínimo entre dos puntos
64 13 93 97 33 6 43 14 51 84 25 53 95
0 1 2 3 4 5 6 7 8 9 10 11 12
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Caso: Buscar un elemento en un
arreglo
64 13 93 97 33 6 43 14 51 84 25 53 95
0 1 2 3 4 5 6 7 8 9 10 11 12
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo: Búsqueda secuencial
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Caso: Buscar un elemento en un
arreglo
El arreglo puede estar:
• desordenado
• ordenado
Si el arreglo está ordenado
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Caso: Buscar un elemento en un
arreglo
El arreglo puede estar:
• desordenado
• ordenado
Búsqueda binaria: Comparo la clave con
Si el arreglo está ordenado la entrada del centro
• Si es menor, voy hacia la izquierda
• Si es mayor, voy hacia la derecha
• Si es igual, la encontré
lo mid hi
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo: Búsqueda binaria
https://es.khanacademy.org/computing/computer-
science/algorithms/intro-to-algorithms/a/a-guessing-game
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo: Búsqueda binaria
public static int binarySearch(int[] a, int key)
{
int lo = 0, hi = a.length-1;
while (lo <= hi)
{
int mid = lo + (hi - lo) / 2;
if (key < a[mid]) hi = mid - 1;
else if (key > a[mid]) lo = mid + 1;
else return mid;
}
return -1;
}
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
¿Cuántas operaciones hace
cada algoritmo?
N Cantidad de N Cantidad de
operaciones operaciones
1000 1000 1000 ~10
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Análisis empírico
Correr el programa para varios tamaños de la entrada y medir el
tiempo. Suponemos que cada comparación tarda 1 seg.
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Análisis de Algoritmos
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Cantidad de operaciones de la
búsqueda binaria
Ejercitación
https://es.khanacademy.org/computing/computer-
science/algorithms/binary-search/e/running-time-of-binary-
search
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Caso: Buscar un elemento en una
lista dinámica
Si los elementos están almacenados en una lista dinámica
La lista puede estar:
• desordenada
• ordenada
6 10 2 50
null
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Caso: Buscar un elemento en una
lista dinámica
Si los elementos están almacenados en una lista dinámica
La lista puede estar:
• desordenada
• ordenada
6 10 2 50
null
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Caso: Buscar un elemento en una
lista dinámica
Si los elementos están almacenados en una lista dinámica
La lista puede estar:
• desordenada
• ordenada
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Caso: Buscar un elemento en una
lista dinámica
Si los elementos están almacenados en una lista dinámica
La lista puede estar:
• desordenada
• ordenada
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Análisis de Algoritmos
Desafío:
Escribir programas que puedan resolver en forma
eficiente problemas con una gran entrada de datos
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Análisis de Algoritmos
Factores Factores
independientes dependientes del
del sistema sistema Hardware:
Algoritmo
CPU, memoria
Software:
Entrada de
lenguaje,
datos
compilador, ..
Sistema: SO,
red, otras
aplicaciones
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Análisis de Algoritmos
Factores Factores
independientes dependientes del
del sistema sistema Hardware:
Algoritmo
CPU, memoria
Software:
Entrada de
lenguaje,
datos cantidad y compilador, ..
distribución
Sistema: SO,
Cómo se comporta el red, otras
Algoritmo dependiendo aplicaciones
de la entrada de datos.
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Análisis de Algoritmos
Existe un modelo matemático para medir el tiempo
Tiempo total:
Suma del costo x frecuencia de todas las
operaciones
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Constructores
Objeto
ca()
Vehiculo gerMar
aggr acto
ont
etePgre
arcCio()
marca=null
precio=0.0
...
. .
auto null auto 0x99f311 .
Memoria STACK
Memoria STACK Memoria HEAP
Algoritmos y Estructuras de Datos 2021
¿Qué son los Constructores?
Los constructores son piezas de código -sintácticamente similares a los métodos- que
permiten definir un estado inicial específico de un objeto en el momento de su creación.
Se diferencian de los métodos tradicionales porque:
• Deben tener el mismo nombre que la clase. La regla de que el nombre de los métodos
debe comenzar con minúscula, no se aplica a los constructores.
• No retornan un valor. public class Vehiculo {
• Son invocados automáticamente. private String marca;
private double precio;
public Vehiculo() {
}
} NO retorna nada
- La expresión new retorna una referencia al objeto creado recientemente, pero el constructor no retorna un
valor.
- Java siempre llama automáticamente a un constructor cuando crea un objeto (antes de que el objeto sea
usado). De esta forma la inicialización del objeto está garantizada.
Algoritmos y Estructuras de Datos 2021
Constructor sin argumentos
Un constructor sin argumento o constructor Default, es usado para crear un objeto básico.
La clase Object
super() public class Vertebrado {
public Vertebrado (){
La clase Vertebrado super(); // si no se pone, igual se invoca
super() System.out.println(“Constructor de Vertebrado”);
}
La clase Mamifero
}
super()
La clase Perro
new Perro()
La clase Object
super() public class Vertebrado {
private int cantpatas; super()
La clase Vertebrado
public Vertebrado (int i){
Error!!
super() cantpatas = c;
La clase Mamifero System.out.println(“Constructor de Vertebrado”);
}
super() La clase Perro }
new Perro()
¿Cómo hacemos?
Desde el constructor de Mamifero se debe invocar a alguno de los constructores existentes en la
superclase Vertebrado usando la palabra clave super(…) y la lista de argumentos apropiada.
super
Todos los métodos de instancia disponen de la variable super (además de this), la cual contiene
una referencia al objeto padre. La palabra clave super, permite invocar desde la subclase un
método de la superclase.
Preorden
Se procesa primero la raíz y luego sus hijos, izquierdo y derecho.
40, 25, 10, 32, 78
Inorden
Se procesa el hijo izquierdo, luego la raíz y último el hijo derecho
10, 25, 32, 40, 78
Postorden
Se procesan primero los hijos, izquierdo y derecho, y luego la raíz
10, 32, 25, 78, 40
Por niveles
Se procesan los nodos teniendo en cuenta sus niveles, primero la raíz, luego los
hijos, los hijos de éstos, etc.
40, 25, 78, 10, 32
Qué cambio harias si el método preorden() debe definirse en otra clase diferente al ArbolBinario<T>?
* +
+ c d e
a b
* +
/*+abc+de + c d e
a b
Algoritmos y Estructuras de Datos 2021
Arboles Binarios
Evaluación de un Árbol de Expresión
Este método evalúa y retorna un número de acuerdo a la expresión aritmética representada por
el ArbolBinario que es enviado como parámetro.
Un árbol de frecuencia natural (AFN) es un árbol binario asociado con ocurrencias, donde para todos
los nodos que no son hojas, su valor es la suma del valor de sus dos hijos.
(*) https://medicalxpress.com/news/2021-02-faster-accurate-diagnosis-natural-frequency.html