Next: 2.3.2 Variantes de la
Up: 2.3 Asociación indirecta
Previous: 2.3 Asociación indirecta
Para que esta estrategia sea aplicable debe diseñarse de modo que su consumo de memoria sea reducido.
El tiempo de procesamiento consumido en el mantenimiento de la representación de
las operaciones realizadas sobre el texto debe mantenerse dentro de límites aceptables. Debido al elevado
número de componentes léxicos que potencialmente contendrá cada texto que será sometido a análisis,
del orden de decenas de miles, se debe de buscar una representación para la TTLT que cumpla los
siguientes requisitos:
- Sea capaz de almacenar en memoria un elevado número de elementos, cada uno
de los cuales se encargará del almacenamiento de la información
relativa a un componente léxico.
- Tenga un carácter dinámico, es decir, no debe establecerse una limitación sobre
el número máximo y mínimo de elementos que limiten la flexibilidad de la
herramienta.
- Debido a las características del análisis incremental, debe también
optimizar la reutilización de la memoria liberada por los elementos que se correspondan con
componentes léxicos eliminados.
- Proporcione un mecanismo de acceso eficiente a cada elemento mediante algún tipo de clave.
En LE-LISP disponemos de varias alternativas para implementar la TTLT:
- Las listas, que por su propia naturaleza son extensibles dinámicamente. Utilizando
las funciones de manejo que modifican físicamente sus argumentos se mejora el uso que
hacen de la memoria, evitando problemas con el garbage collector
.
Su principal inconveniente
radica en el tiempo de acceso a los elementos: para acceder a un elemento dado de una lista hay que
recorrer la lista desde el principio hasta encontrarlo. Esta forma de acceso secuencial implica
además que no todos los componentes léxicos tiene un tiempo medio de acceso igual, sino que aquellos
que estén situados al principio de la lista dispondrán de un acceso extremadamente
rápido mientras que aquellos situados cerca de la cola sufrirán un elevado retardo.
- Los vectores, que presentan como ventaja respecto a las listas la posibilidad de un acceso
directo a cada elemento. Sin embargo, su limitación radica en que su tamaño no puede
variar dinámicamente, por lo que no son aplicables en este caso. Una limitació
añadida reside en el hecho de que las implementaciones actuales de los vectores en
LE-LISP tiene fijado un límite máximo de 32767.
- Las tablas hash tienen tamaño dinámico, manejan eficientemente el espacio de memoria
y el tiempo de acceso a cada elemento es constante independientemente de su posición.
Como ventaje añadida está que el formato de la clave de acceso
puede ser fijado libremente por el programador, lo cual aporta un grado de
flexibilidad del que no se dispone en el caso de las listas y los vectores.
La mejor alternativa consiste en utilizar tablas de hash
como estructura de almacenamiento global. Una vez que ha sido resuelto el problema
de la TTLT surge otro relativo a la forma que van a tener sus elementos. En
efecto, mediante las tablas hash se consigue una TTLT flexible y eficiente
en el manejo de la memoria y del tiempo de acceso a sus elementos, pero su
eficiencia se verá seriamente limitada si los elementos que en ella se van a almacenar
se construyen de tal modo que consuman
elevadas cantidades de memoria y retarden el acceso a la información que contienen.
Next: 2.3.2 Variantes de la
Up: 2.3 Asociación indirecta
Previous: 2.3 Asociación indirecta
Miguel A. Alonso Pardo
Thu Nov 20 16:47:01 CET 1997