Ayuda
Ir al contenido

Dialnet


Sata structures libraries

  • Autores: Leonor Frias Moya
  • Directores de la Tesis: Jordi Petit Silvestre (dir. tes.), Salvador Roura Ferret (dir. tes.)
  • Lectura: En la Universitat Politècnica de Catalunya (UPC) ( España ) en 2010
  • Idioma: inglés
  • Tribunal Calificador de la Tesis: Conrado Martínez Parra (presid.), Joaquim Gabarró Vallés (secret.), Ricardo Baeza Yates (voc.), Giuseppe F, Italiano (voc.), Urich Meyer (voc.)
  • Materias:
  • Texto completo no disponible (Saber más ...)
  • Resumen
    • This thesis studies several problems that arise from combining theory and practice in algorithmics, in particular, when considering requirements in software libraries, The well-known Standard Template Library (STL) of the C++ programming language is the common thread of this research. We have tackled fundamental problems in algorithmics, such as sorting and selection, sequences and dictionaries. This aim has been achieved using varied, intertwined and evolving approaches, in particular, partially influenced by fast and radical changes in technology.

      Most of the contributions concern generic algorithms and data structures that take advantage of the processing capabilities of modern computers. First of all, we present cache-conscious implementations of STL lists. Taking advantage of the properties of memory hierarchies, very good performance is obtained for traversal-based operations. But like typical STL doubly linked list implementations, they keep up with the required cost for operations as well as with the validity of iterators at all times.

      Besides, we present several practical algorithms for multi-core computers. Specifically, we describe parallel algorithms for the construction and insertion of many elements at a time into red-black trees. These algorithms use (a) constant-cost index computations to access the elements, as it is the case for some existing algorithms in the PRAM model, (b) split and union operations on trees, and (c) parallel load-balancing techniques. The implementation extends a red-black tree codification of STL dictionaries in the GCC compiler. The experiments show the practicability of this approach. In addition, motivated by efficiently preprocessing the input of the aforementioned bulk operations in dictionaries, we describe a general online algorithm for partitioning sequences whose size is unknown. Our algorithm is interesting from both a theoretical and practical perspective.

      Furthermore, we have devised new variants of algorithms by exploiting the reusing of computations. In particular, we consider the parallel partitioning of an array with respect to a pivot element. We present practical algorithms that can be used to implement STL partition. These are the first such algorithms that perform an optimal number of comparisons, i.e., one per element. Later, we show that this property is particularly useful when the elements are strings and partitioning is repetitively used and in a hierarchical way, as in quicksort and quickselect. Specifically, we show big performance improvements combining parallel quicksort and quickselect with existing techniques to avoid redundant character comparisons. Furthermore, the resulting algorithms can be used to specialize STL sort and nth_element, respectively. Moreover, we highlight that some of the comparisons made in this kind of algorithms and data structures do not need to access the actual strings. Under the common assumption of a pointer string implementation, this is very relevant from a cache-conscious perspective. In this sense, we analytically quantify the number of string lookups in so modified binary search trees, quicksort and quickselect. Also, we analyze the benefits of adding some redundancy on the top of these algorithms and data structures.

      Finally, we present and analyze multikey quickselect, the analog of multikey quicksort for the selection problem for strings. This algorithm is efficient with respect to the number of character comparisons, it is in-place and it is easy to implement. In particular, it can be used to specialize nth_element for strings. We present an analysis of its cost, measuring both the number of comparisons and the number of swaps, under a random uniform distribution. Last but not least, we propose several enhanced variants, that can be also applied to multikey quicksort.


Fundación Dialnet

Dialnet Plus

  • Más información sobre Dialnet Plus

Opciones de compartir

Opciones de entorno