Table Of ContentEscuela de Ingenier´ıas
Industrial e Informa´tica
Departamento de Ingenier´ıa El´ectrica
y de Sistemas y Autom´atica
TESIS DOCTORAL
Meta-algoritmos de ordenacio´n
Tesis dirigida por el
´
Dr. D. Honorino A. Mielgo Alvarez
Rodrigo Raposo Garc´ıa
Le´on, Noviembre de 2015
palabra
UNIVERSIDAD DE LEO´N
Resumen
Escuela de Ingenier´ıas Industrial e Inform´atica
Departamento de Ingenier´ıa El´ectrica y de Sistemas y Autom´atica
Meta-algoritmos de ordenaci´on
Rodrigo Raposo
Unadelastareasfundamentalesdelossistemasdeinformaci´oneslaordenaci´on,
clasificaci´onybu´squedadedatos,alaquededicanentreel25yel50porciento
de su tiempo. Habitualmente la ordenacio´n no es un fin en s´ı mismo, sino m´as
bien una tarea fundamental que se encuentra entre dos procesos: un productor
que genera elementos para un consumidor que los demanda segu´n un orden
preestablecido. Esta Tesis analiza minuciosamente la forma de trabajo de los
algoritmos cl´asicos de ordenaci´on, y define una nueva taxonom´ıa basada en la
abstracci´on de sus respectivas implementaciones de las estructuras de control
y de datos. Se aborda el concepto ordenaci´on en su forma m´as amplia y pura,
describiendo la soluci´on de forma independiente a la arquitectura hardware
del sistema y al lenguaje de programacio´n elegido.
palabra
UNIVERSIDAD DE LEO´N
Abstract
Escuela de Ingenier´ıas Industrial e Inform´atica
Departamento de Ingenier´ıa El´ectrica y de Sistemas y Autom´atica
Sorting meta-algorithms
Rodrigo Raposo
The fundamental core task in Information Systems is to sort, classify and
search data, which spend between 25 and 50 percent of his time. Usually the
sort task is not and end in itself, but rather a fundamental task that lies bet-
ween two processes: a producer that generates elements for a consumer which
demand it according to an predeterminated order. This Thesis thoroughly
analyses how sort classic algorithms work, and defines a new taxonomy based
on abstract their respective implementation of control and data structures.
Sorting is addressed in its broadest and pure form and a solution is offe-
red independently of the hardware architecture and the chosen programming
language.
Agradecimientos
En primer lugar quiero mostrar el mayor agradecimiento a m´ı director de
Tesis D.HonorinoA.MielgoA´lvarezportodaslashorasinvertidasordenando,
desordenandoyreordenandonuevamenteelementos.Sinsuayuda,orientacio´n
y apoyo esta Tesis no hubiera sido posible.
A todos los profesores que he tenido a lo largo de mi vida acad´emica
por la transmisi´on de conocimientos y valores fundamentales para la vida. De
entre todos, me gustar´ıa recordar con un carin˜o especial a Mario Hern´andez
por su fe y aliento para con todos sus alumnos. Descansa en paz, Maestro.
Atodosloscompan˜erosyamigosporlosbuenosratosyexperienciasvivi-
das. Juntos hemos disfrutado momentos inolvidables, aunque sin duda alguna
los mejores son los que est´an por llegar.
A toda mi familia, sin la cual jam´as habr´ıa sido posible llegar hasta aqu´ı.
A los que tengo la suerte de tener cada d´ıa a m´ı lado y a los que ya no est´an
conmigo: todos vosotros forma´is mi vida y mis recuerdos. Con vuestra ayuda
y comprensi´on los momentos dif´ıciles se hacen mucho ma´s llevaderos.
A todos y cada uno de vosotros so´lo puedo deciros sinceramente
GRACIAS
´
Indice general
Resumen III
Abstract V
Agradecimientos VII
´Indice general VIII
´Indice de figuras XVII
´Indice de algoritmos XXI
Dedicatoria XXIII
1. Introducci´on 1
1.1. Fundamentos de ordenaci´on: Breve resen˜a histo´rica . . . . . . . 1
2. Ordenaci´on cl´asica: fundamentos b´asicos 5
2.1. Algoritmo: definici´on . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.0.1. Algoritmos de ordenacio´n cla´sicos . . . . . . . 6
2.2. Un poco de historia . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.1. Una visi´on cl´asica . . . . . . . . . . . . . . . . . . . . . 7
2.2.2. Ordenacio´n interna . . . . . . . . . . . . . . . . . . . . . 8
2.2.3. Ordenacio´n externa . . . . . . . . . . . . . . . . . . . . 9
2.3. Ordenacio´n serie y paralelo . . . . . . . . . . . . . . . . . . . . 10
2.3.1. Introduccio´n . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4. Algoritmos de ordenaci´on serie en paralelo . . . . . . . . . . . . 14
2.4.1. Procesamiento paralelo del algoritmo serie Burbuja . . . 15
ix
I´ndice general. x
2.4.2. Procesamiento paralelo del algoritmo serie Fusi´on . . . 17
2.5. Algoritmos de ordenaci´on en bloque . . . . . . . . . . . . . . . 19
2.5.1. Una visi´on inicial . . . . . . . . . . . . . . . . . . . . . . 19
2.5.2. Alternativa . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5.3. Reflexiones sobre la parte hardware introducida en el
algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5.4. Reflexionessobrelasmejorasintroducidasenelsoftware
del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . 24
3. Meta-algoritmos de ordenaci´on: pilares fundamentales 25
3.1. Introduccio´n. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2. Abstraccio´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.1. El papel de la abstraccio´n . . . . . . . . . . . . . . . . . 27
3.2.1.1. La abstracci´on como un proceso mental natural 28
3.2.1.2. La abstracci´on en la ingenier´ıa del software . . 29
3.2.1.3. Tipos de datos . . . . . . . . . . . . . . . . . . 30
3.2.1.4. Ventajas de los tipos abstractos de datos . . . 30
3.3. Construcci´on de meta-algoritmos . . . . . . . . . . . . . . . . . 31
3.3.1. La abstracci´on como principio fundamental . . . . . . . 31
3.3.1.1. Fundamentos de la investigacio´n . . . . . . . . 32
3.4. Ana´lisis del problema . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.1. A´ngulos . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.1.1. Primeros intentos del proceso de mejora . . . . 35
3.4.1.2. Meta-algoritmos de ordenacio´n: fundamentos . 37
3.4.1.3. Para-algoritmos . . . . . . . . . . . . . . . . . 38
3.5. Convenciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.1. Elementos repetidos: una restriccio´n que no es tal . . . 41
3.6. Optimalidad frente a simplicidad y seguridad . . . . . . . . . . 43
3.6.1. Situacio´n de Strassen . . . . . . . . . . . . . . . . . . . 44
3.7. Obtencio´n de resultados en orden inverso . . . . . . . . . . . . 45
3.8. La pregunta ma´s inteligente . . . . . . . . . . . . . . . . . . . . 46
3.8.1. Estrategias . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.8.2. Consideraciones . . . . . . . . . . . . . . . . . . . . . . . 47
3.9. Visio´n relacional del problema: representaciones . . . . . . . . . 49
3.9.1. Grafo dirigido ac´ıclico . . . . . . . . . . . . . . . . . . . 51
3.9.1.1. Ejemplodeconstruccio´ndegrafodirigidoac´ıclico 51
3.9.2. Matriz de incidencia . . . . . . . . . . . . . . . . . . . . 54
3.9.2.1. Ejemplo de representacio´n mediante la matriz
de incidencia . . . . . . . . . . . . . . . . . . . 60
Description:Una de las tareas fundamentales de los sistemas de información es la ordenación, clasificación y búsqueda de datos, a la que dedican entre el 25 y el 50 por ciento de su tiempo. Habitualmente la ordenación no es un fin en sı mismo, sino más bien una tarea fundamental que se encuentra entre d