Ir al contenido



Foto

Reubicar el índice por defecto de una lista ante una eliminación

algoritmo listas indices

  • Por favor identifícate para responder
24 respuestas en este tema

#21 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 05 septiembre 2016 - 11:44

De ultima arranca con un arbol binario de busqueda de los de primer año de la facultad. No te pongas con balanceos y "cosas raras". Seguramente que va a ser mejor que un recorrido lineal


  • 0

#22 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.286 mensajes
  • LocationArgentina

Escrito 05 septiembre 2016 - 01:34

De ultima arranca con un arbol binario de busqueda de los de primer año de la facultad. No te pongas con balanceos y "cosas raras". Seguramente que va a ser mejor que un recorrido lineal

 

Pos... ya me caí con un numerito... con que alguno tenga su linda colección de 100 carpetitas (y conozco que los hay), y cada una tenga 10 pases, ya tenemos un total de 100x10 movimientos en total. Y eso fue una pasadita... hacerlo un par de veces más... *-)

Ya me ha quedado claro que el recorrido lineal no va :D

¿Porqué será que los problemas de resolución manual con órdenes cuadráticas u cúbicas me persiguen? Cada vez que abro el cuadernito para tomar apuntes de casos aparece una O(n2) o O(n3) salvaje. Maldito juego de Requisitos Go :D

¿A desempolvar árboles? A ver el librito que fotocopié... porque la teoría de árboles hermosa ya poco la recuerdo. 8o|  :p :D

Por lo que estuve viendo, Lazarus cuenta con una unidad para trabajar con árboles. La unit se llama  avglvltree e implementa un buen par de clases. Para los curiosos, ahí va el repositorio en GitHub. Será cosa de estudiar la unit.

 

EDITO:

Pues, va a ser mejor directamente ir a por AVL.

 

Saludos,


  • 0

#23 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.286 mensajes
  • LocationArgentina

Escrito 05 septiembre 2016 - 03:34

Esa unit parece una maravilla, leyendo la documentación y explorando su código, parece tener lo mejor del mundo.. Hay una clase "Indexed"  que extiende la clase base y añade la posibilidad de consultar los items como lista si uno lo desea. Y ¡Hasta tiene los enumerators que a vos te gustan!

 

Hay otras clases más que pueden ser útil para ciertos trabajos con string, y también con mapeos. Vale la pena hecharle buena vista.

 

Seguro que hay algo así también en Delphi, sino seguro que alguien más lo ha inventado.

 

Saludos,


  • 1

#24 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 05 septiembre 2016 - 05:21

Esa unit parece una maravilla, leyendo la documentación y explorando su código, parece tener lo mejor del mundo.. Hay una clase "Indexed"  que extiende la clase base y añade la posibilidad de consultar los items como lista si uno lo desea. Y ¡Hasta tiene los enumerators que a vos te gustan!

 

Es mas que nada para facilitarte la vida y que no tengas que cambiar la clase cliente :) no se me ocurrio otra forma mas directa que exponer la estructura como si fuera una lista

 

Yo creo que algo mas rapido que un AVL no vas a encontrar; y el que mete mucha data, que se joda. Que se acostumbre a correr los procesos de manera mas periodica


  • 0

#25 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.286 mensajes
  • LocationArgentina

Escrito 05 septiembre 2016 - 06:10

Es mas que nada para facilitarte la vida y que no tengas que cambiar la clase cliente :) no se me ocurrio otra forma mas directa que exponer la estructura como si fuera una lista

 

Yo creo que algo mas rapido que un AVL no vas a encontrar; y el que mete mucha data, que se joda. Que se acostumbre a correr los procesos de manera mas periodica

 

Yo de una u otra, la clase encargada de mantener la "lista" ya sea que haga uso de un TAD Lista u otro la tenía planeada para ser un Adapter.

Es la unica forma para evitar propagar los cambios lo más posible.

 

Al menos hasta donde llegas mis conocimientos de estructuras de datos, AVL es lo más directo, rápido y efectivo. Porque el siguiente paso ya es meterse en B-Tree y este ya no es un cañón... es la bomba atómica.

No se porqué si mi cabeza indirectamente me venía diciendo "Piensa en árboles" no le hice caso cuando debía.

 

Y si, el que se pone generar carpetitas y pases se va a joder. A estas alturas, que se aguante. Suficiente estrujada de cerebro me están dando.

No quisiera escupir hacia arriba, pero hasta la fecha, es el sistema con fines comerciales más complejo al que me he enfrentado. El diagrama en como se podría ver las relaciones de las clases, sus interrelaciones, etc. hacen que sea una cosa en la que todo tiene que ver con todo. Y no fue fácil proponer un "punto de entrada" por el cual empezar a hacer la clase más "interna" y de ahí hacer "from inner to out".

 

Posiblemente aproveche esa ventaja del TIndexedAVLTree. Ofrece una manera bastante atractiva de irse al primer o último elemento mediante un índice en la medida en que se ingresan items al árbol, como así también es posible irse al último o primero por otras formas desde la clase base.

 

En los siguientes días estaré haciendo una prueba, y si va todo bien se vuelca al sistema.

 

Gracias por ayudarme a recomponer neuronas Agustín. (y)

 

Saludos,


  • 0





Etiquetado también con una o más de estas palabras: algoritmo, listas, indices