Grupo 9:
Thayris Navarro C. I.: 26.938.872; Ruben Farías C. I.: 27.719.360; Analis Caldera C. I.: 27.917.093
Definición:
Thayris Navarro C. I.: 26.938.872; Ruben Farías C. I.: 27.719.360; Analis Caldera C. I.: 27.917.093
Definición:
En informática, es un algoritmo para
encontrar el k-ésimo número más pequeño en una lista o un vector, este número
se llama estadística de orden k. Esto incluye los casos de búsqueda de mínimo,
máximo y mediana. El caso más simple de un algoritmo de selección consiste en
encontrar el elemento mínimo (o máximo) por iteración en la lista, manteniendo
un registro del mínimo (o máximo) en cada etapa de la iteración.
Estos algoritmos sirven para ordenar elementos de manera creciente o
decreciente en una lista de n elementos. Si hay n elementos que requieren
ordenarse, se repetirá el proceso n-1 veces para conseguir el resultado deseado. La mayoria de ellos, consisten en comparar
los dos primeros elementos de una matriz e intercambiarlos si es necesario;
luego se realiza la comparación con el primer y tercer término, se
intercambian si se es requerido, y asi sucesivamente hasta comparar el primer y
último término. Después se repite el mismo procedimiento con el segundo elemento, se compara este con cada uno de la
matriz, y así con el resto de los elementos de la matriz dada.
Algoritmos de selección más usados:
- Selection sort: Este algoritmo de selección es el más fácil
de implementar y recordar, pues es muy sencillo. Consiste en ordenar una matriz
al encontrar repetidamente el elemento mínimo o maximo de la parte sin
clasificar y colocarlo en su posición correcta en una matriz ordenada. Este
algoritmo se basa en realizar comparaciones, y para que pueda hacer su trabajo,
mantiene dos subarreglos en una matriz dada.
1) El sub-array que ya está ordenado.
2) Sub-array restante sin clasificar.

-Insertion sort: El orden de inserción funciona de una manera
ligeramente diferente. Siempre mantiene una lista secundaria ordenada en las
posiciones más bajas de la lista. Cada nuevo elemento se "inserta" de
nuevo en la lista secundaria anterior, de modo que la lista secundaria ordenada
es un elemento más grande.
-Bubble sort: Es un algoritmo basado en la relación, en
el que cada par de elementos adyacentes se compara y los elementos se intercambian
si no están en orden.
-Shell sort:
Este algoritmo utiliza la ordenación por inserción en elementos muy extendidos,
primero para ordenarlos y luego clasifica los elementos menos espaciados. Este
espaciado se denomina intervalo.
-Heapsort: implica
construir una estructura de datos del montón a partir de la matriz dada y luego utilizar el montón
para ordenar la matriz. Heapsort es una estructura de datos basada en árbol
especial, que satisface las siguientes propiedades especiales del montón:
1. Propiedad de la forma: la estructura de los datos
del montón es siempre un árbol binario completo, lo que significa que todos los
niveles del árbol están completamente llenos.
2. Propiedad del montón: todos los nodos son mayores, iguales o menores que cada uno de sus hijos. Si los nodos principales
son mayores que sus nodos secundarios, el montón se llama Max-Heap, y si los
nodos principales son más pequeños que sus nodos secundarios, el montón se
llama Min-Heap.
-Quicksort: es un algoritmo de dividir y conquistar. Selecciona un elemento como pivote y divide la matriz dada
alrededor del pivote seleccionado. Hay muchas versiones diferentes de Quicksort
que seleccionan pivote de diferentes maneras.
Ventajas y desventajas de los algoritmos de selección más usados:
Ventajas
|
Desventajas
|
|
Selection sort
|
|
|
Insertion sort
|
|
|
Bubble sort
|
|
|
Shell sort
|
|
|
Quick sort
|
|
|
Heap sort
|
|
|





Grupo: Argenis Chacon (28139550), Selena Velásquez (27.243.082) y José Suarez (24.591.130)
ResponderBorrar¡Excelente trabajo!, nos ha parecido instructivo, muy preciso y con claros ejemplos. En cuanto a los algoritmos de selección solo nos resta decir que:
A diferencia de los algoritmos secuenciales (En los que una instrucción se ejecutaba una a continuación de la otra), los algoritmos de selección operan de acuerdo a una toma de decisiones por selección, como su nombre lo indica. Muchos algoritmos de selección son derivados por generalización de algún algoritmo de ordenación, y recíprocamente algunos algoritmos de ordenación pueden derivarse de repetidas aplicaciones de selección. El caso más sencillo de un algoritmo de selección es encontrar el mínimo (o máximo) elemento por iteración a través de la lista, manteniendo un registro del mínimo (o máximo) en cada paso de la iteración, y puede verse conexo al selection sort. Por el contrario, el caso que presenta más dificultad de un algoritmo de selección es hallar la mediana, y este necesariamente necesita n/2 memoria.
Ordenando la lista o vector y luego seleccionando el elemento elegido, la selección puede ser reducido a la ordenación. Este método es ineficaz para seleccionar un único elemento, pero es eficiente cuando se realizan múltiples selecciones del vector, en este caso solo es necesario una ordenación costosa inicial, seguida por muchas operaciones poco costosas de selección – O(1) para un vector, aunque la selección es O(n) en una lista, incluso si está ordenada, debido a la falta de acceso aleatorio. En general, ordenar requiere O(n log n) tiempo, donde n es la longitud de la lista, aunque se conoce que un lower bound es posible con algoritmos de ordenación no comparativos como radix sort y counting sort. En vez de ordenar la lista completa o el vector, se puede utilizar ordenación parcial para seleccionar los k menores o k mayores elementos. Esto es mucho más efectivo que realizar un ordenando completo.
Desde los inicios de la computación, el problema del ordenamiento ha atraído gran cantidad de investigación, tal vez debido a la complejidad de resolverlo eficientemente a pesar de su planteamiento simple y familiar. Por ejemplo, Bubble Sort fue analizado desde 1956. Aunque muchos puedan tomarlo como un problema resuelto, nuevos y útiles algoritmos de ordenamiento se siguen inventado hasta el día de hoy (por ejemplo, el ordenamiento de biblioteca se publicó por primera vez en el 2004). Los algoritmos de ordenamiento son comunes en las clases introductorias a la computación, donde la abundancia de algoritmos para el problema proporciona una gentil introducción a la variedad de conceptos núcleo de los algoritmos, como notación de O mayúscula, algoritmos divide y vencerás, estructuras de datos, análisis de los casos peor, mejor, y promedio, y límites inferiores.
Gilmar Aray, Jesus Diaz y Maria Centeno
ResponderBorrarExcelente publicación, bastante completa.
como grupo nos gustaría aportar al tema un poco sobre las estructuras algorítmicas selectivas; sabemos que las estructuras lógicas selectivas se encuentran en el resultado algorítmico de casi todo tipo de problema. Las usamos cuando en la elaboración de la solución de un problema debemos tomar una decisión, para estipular un método o indicar una ruta alterna a proseguir.
Esta toma de decisión comúnmente reflejada con un paralelogramo se basa en la evaluación de una o más exigencias que nos indicaran como opción o resultado, la rama a seguir.
Hay momentos en que la toma de decisiones se ejecuta en cascada. Esto quiere decir que se toma una decisión, se define la rama respectiva a seguir se vuelve a tomar otra decisión y así sucesivamente. Por lo que para llegar a la solución de este problema debemos asignar prácticamente un árbol de decisión.
Las organizaciones algorítmicas selectivas que se usan para la toma de decisiones lógicas las podemos catalogar de la siguiente manera : SI ENTONCES, cuando se habla de una estructura simple; SI ENTONCES/ SINO, cuando es una estructura selectiva doble; y por ultimo SI MULTIPLE cuando hablamos de una estructura selectiva como su nombre lo dice multiple.
Cabe destacar que cuando a las estructuras selectivas las desarrollamos en cascada, podemos emplear una mezcla de las estructuras indicadas anteriormente en la clasificación.