Publicidad

S3-SCBC.pptx

Ingeniero en Sistemas y Computación, Master en Redes de Comunicaciones
1 de Apr de 2023
Publicidad

Más contenido relacionado

Publicidad

S3-SCBC.pptx

  1. Sistematización De Contenidos Básicos De La Carrera Tema: 2. Matemática Computacional Mg. Luis Fernando Aguas Bucheli +593 984015184 @Aguaszoft Laguas@uisrael.edu.ec
  2. “El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento” — Stephen Hawking
  3. Objetivo 1. Aplicar conceptos y técnicas de matemática, ciencia e ingeniería obteniendo resultados que solucionan problemas de complejidad mayor, relacionados al desarrollo, mejora de procesos, y otros aspectos del ámbito de la ingeniería ● 2.1 Implementación de algoritmos y búsqueda Contenido
  4. ODS ● 4.3 De aquí a 2030, asegurar el acceso igualitario de todos los hombres y las mujeres a una formación técnica, profesional y superior de calidad, incluida la enseñanza universitaria META
  5. 2.1 Implementación de algoritmos y búsqueda
  6. Métodos de Ordenamiento La ordenación de los datos consiste en disponer o clasificar un conjunto de datos (o una estructura) en algún determinado orden con respecto a alguno de sus campos. Orden: Relación de una cosa con respecto a otra
  7. Aplicaciones Ordenamiento interno – datos en RAM Ordenamiento externo – área de datos en el disco Aumentar las velocidades de acceso en: Diccionarios deben estar ordenadas Un directorio de archivo ordenado por nombre o por fecha. Calendarios Listas telefónicas Números de cheques ordenados por cuenta Transacciones de tarjetas de crédito ordenadas por fecha y monto
  8. Usando los ordenamientos de Java Los API de Java proveen una clase Arrays con varios métodos para diferentes tipos de arreglos. Las clases Collections proveen similares métodos de ordenamiento. Los métodos de ordenamiento para arreglos de datos primitivos se basan en quicksort Los métodos de ordenamiento para arreglos de objetos y listas se basan en mergesort
  9. Método Selección – 1/3 Método Selección es un algoritmo relativamente fácil de entender Ordenar un arreglo puede hacer varios pasos a través del arreglo, selecciona el ítem mas pequeño en el arreglo cada vez y lo ubica al inicio del arreglo. Método Selección es llamado ordenamiento cuadrático Numero de comparaciones es O(n2) Numero de intercambios es O(n) SelectionSort.java
  10. Método Selección – 2/3 Algoritmo Selección 1. Para pointer=0 a n-2 haga 2. Ubique la posición del ítem más pequeño en el arreglo 3. Intercambie el ítem a la posición pointer Refinando el algoritmo Selección (paso 2) 1. Inicialice posMin a pointer 2. Para next = pointer +1 a n- 1 3. Si el ítem en next es menor que el ítem en posMin 4. Cambie posMin a next.
  11. Método Selección – 3/3 1. Busque el valor máximo de los n elementos: 2. Intercámbielo con el “ultimo” elemento (i.e., arr[n-1]) : 3. Decremento n en 1 y repita el Paso 1 (while n > 1) 1 13 8 5 2 1 3 n 1 13 8 5 2 1 3 n 1 13 8 5 2 1 3 n
  12. Método Selección Iteractivo: public void selectionSort (double arr [ ], int n) { while (n > 1) { int k, maxPos = 0; for ( k = 1; k < n; k++) if (arr [ k ] > arr [ maxPos ] ) maxPos = k; double temp = arr [ maxPos ]; arr [ maxPos ] = arr[ n-1 ]; arr [ n-1 ] = temp; n--; } }
  13. Método de Burbuja 1/2 Compara los elementos del arreglo adyacente e intercambia los valores si estos están fuera de orden. Los valores pequeños van hacia arriba (burbujean) y los valores grandes van al final.
  14. Método de Burbuja 2/2 Algoritmo Varias recorridos por el arreglo Se comparan pares sucesivos de elementos Si el orden es incremental (o idéntico), no hay cambio Si el orden es decremental, los elementos se intercambian Repetir Fácil de programar, pero ejecuta con lentitud
  15. Análisis de método de burbuja 3/3 Provee un excelente rendimiento en algunos casos y muy pobre en otros. Trabaja mejor cuando el arreglo es ordenado inicialmente. En el peor de los casos el numero de comparaciones O(n2) En el peor de los casos los intercambios son O(n2) El mejor caso ocurre cuando el arreglo esta ordenado O(n) comparaciones O(1) intercambios
  16. Método de Inserción 1/4 Basado en la técnica usada por los jugadores de cartas para arreglar una mano de cartas Jugadores guardan las cartas que tienen en cierto orden Cuando el jugador toma una nueva carta, el guarda la carta nueva insertándola en el lugar apropiado.
  17. Inserción Algoritmo 2/4 1. k = 1; guarde los k elementos en orden. 2. Tome el (k+1)-th elemento e insértelo en los primeros k en el lugar correcto. 3. Incremente k y repita desde el Paso 2 (while k < n) 1 13 8 5 2 1 3 k 1 13 8 5 2 1 3 k
  18. Inserción Algoritmo 3/4 Iterativo: public void insertionSort (double arr [ ], int n) { int k, i; for (k = 1 ; k < n; k++) { double saved = arr [ k ]; for (i = k; i > 0 && arr [ i-1 ] > saved; i--) arr [ i ] = a[ i - 1 ]; arr [ i ] = saved; } }
  19. Comparación de métodos cuadráticos Ninguno de los algoritmos son buenos para arreglos grandes.
  20. Shellsort: Una mejor Inserción Shellsort es un tipo de inserción pero con O(n3/2) o mejor rendimiento Descubierto por Donald Shell en 1959 Aprovecha divide y conquista para insertar Antes de ordenar todo el arreglo, ordena muchos pequeños sub-arreglos usando inserción antes de ordenarlo completamente.
  21. Shellsort Características Compara los elementos que están muy aparte, entonces acerca los elementos, etc. así elimina mucho movimiento de datos. Incrementa la secuencia h1 = 1, h2, … hl Después de una fase j para todos los k A[k] ≤ A[k + hj] – la entrada esta hj ordenada hj arreglo ordenado permanece hj arreglado después hj - 1 ordenamiento.
  22. Shellsort
  23. MergeSort Un merge es un proceso común de datos que es realizado con dos secuencias de datos con las siguientes características Ambas secuencias contienen ítems con un método común de comparación Los objetos e ambas secuencias son ordenadas de acuerdo al método de comparación
  24. MergeSort Algoritmo 1. Accese al primer ítem de ambas secuencias 2. Mientras no finalice cualquier secuencia Compare el ítem actual de las dos secuencias, copie el ítem actual pequeño a la secuencia de salida, y accese al próximo ítem de la secuencia de entrada donde los ítems fueron copiados. 3. Copie cualquier ítem remanente de la primera secuencia a la secuencia de salida. 4. Copie cualquier ítem remanente de la segunda secuencia a la secuencia de salida
  25. MergeSort 1. Divida el arreglo en dos equivalentes 2. Ordene (recursivamente) cada mitad usando Mergesort. 3. Mezcle (merge) las dos partes generadas 5 4 6 3 2 7 1 1 7 6 5 2 4 3 7 6 5 4 1 3 2 Los pequeños están al inicio 3 1 2
  26. MergeSort
  27. Algoritmo HeapSort Este algoritmo de ordenación está basado en la estructura de montículo. Se define montículo de tamaño n como un árbol binario completo de n nodos, tal que el contenido de cada nodo es mayor o igual al contenido de su parte.
  28. HeapSort
  29. Quicksort Desarrollado en 1962 por C. A. R. Hoare Recursivo Divide y conquista Quicksort rearregla un arreglo en dos partes así todos los elementos en el arreglo izquierdo son menores o iguales que un valor específico llamado pivote Quicksort asegura que los elementos en el arreglo derecho sean mayores que el pivote El caso promedio para Quicksort es O(n log n)
  30. Método Quicksort
  31. Quicksort Algoritmo Sea S el número de elementos a clasificar 1. Si el numero de elementos en S es 0 o 1 pare y vuelva al caso base 2. Tome un elemento v desde S llamado pivote 3. Divida los elementos restantes (S - {v}) en dos conjuntos disjuntos: L = {x IN (S - {v}) Y x ≤ v} R = {x IN (S - {v}) Y x ≥ v} 4. Regrese el resultado de aplicar quicksort a L seguido por v y continúe por el resultado aplicando quicksort a R
  32. Método Quicksort
  33. Gracias Responsabilidad con pensamiento positivo
Publicidad