¿Listas, colecciones...?
Mi pregunta es meramente teórica. Necesito un consejo.
Estoy realizando un proyecto relacionado con la música. En el integro aspectos visuales a través de las librería GLScene.
Me encuentro con una duda teórica.:
El usuario debe poder crear en tiempo de ejecución una estructura gráfica (un grafo pesado dirigido en notación algebraica) compuesto de: nodos en los que se especifican las notas y aristas en las que se indica el retardo entre la ejecución de dos nodos.
Para esto he definido un par de clases que heredan de la librería GLScene, o sea que son fundamentalmente visuales. Pero la parte visual ya está solucionada.
Mi problema es que el usuario debe poder crear tantas instancias como desee y que debe poder modificarlas en tiempo de ejecución y no sé en que tipo de estructura hacerlo para no perder demasiado tiempo cuando se modifiquen los enlaces o se eliminen elementos. El usuario no debe notar eso.
¿Listas, colecciones...? ¿Qué es más eficiente, más óptimo?. ¿Qué clases concretas debo usar?.
Datos relevantes:
- Las clases que he creado (TNodo y TArista) descienden de las clases GLScene: TGLSphere y TGLLines, que a su vez descienden de la conocida TComponent.
- Una arista tiene únicamente un nodo origen y un nodo destino que no se pueden modificar.
- Las aristas se crean (y se destruyen) sin ningún tipo de limitación.
- Una arista puede partir y llegar al mismo nodo. Puede haber ciclos (o sea, no es un árbol).
- De un nodo pueden partir (o llegar) de 0 a n aristas.
- Existe un nodo inicial (una simple propiedad true-false) que puede ser cambiado. Pero siempre habrá uno (único).
- Habrá un proceso (este no tiene que ser en tiempo real) que recorra la estructura al completo partiendo del inicio y desde ahí según indiquen las aristas para alamacenar únicamente la parte acústica de esta estructura.
- También debe poder almacenarse el grafo generado en su estado actual.
Estoy realizando un proyecto relacionado con la música. En el integro aspectos visuales a través de las librería GLScene.
Me encuentro con una duda teórica.:
El usuario debe poder crear en tiempo de ejecución una estructura gráfica (un grafo pesado dirigido en notación algebraica) compuesto de: nodos en los que se especifican las notas y aristas en las que se indica el retardo entre la ejecución de dos nodos.
Para esto he definido un par de clases que heredan de la librería GLScene, o sea que son fundamentalmente visuales. Pero la parte visual ya está solucionada.
Mi problema es que el usuario debe poder crear tantas instancias como desee y que debe poder modificarlas en tiempo de ejecución y no sé en que tipo de estructura hacerlo para no perder demasiado tiempo cuando se modifiquen los enlaces o se eliminen elementos. El usuario no debe notar eso.
¿Listas, colecciones...? ¿Qué es más eficiente, más óptimo?. ¿Qué clases concretas debo usar?.
Datos relevantes:
- Las clases que he creado (TNodo y TArista) descienden de las clases GLScene: TGLSphere y TGLLines, que a su vez descienden de la conocida TComponent.
- Una arista tiene únicamente un nodo origen y un nodo destino que no se pueden modificar.
- Las aristas se crean (y se destruyen) sin ningún tipo de limitación.
- Una arista puede partir y llegar al mismo nodo. Puede haber ciclos (o sea, no es un árbol).
- De un nodo pueden partir (o llegar) de 0 a n aristas.
- Existe un nodo inicial (una simple propiedad true-false) que puede ser cambiado. Pero siempre habrá uno (único).
- Habrá un proceso (este no tiene que ser en tiempo real) que recorra la estructura al completo partiendo del inicio y desde ahí según indiquen las aristas para alamacenar únicamente la parte acústica de esta estructura.
- También debe poder almacenarse el grafo generado en su estado actual.
3 respuestas
Respuesta
1
Respuesta de friki
1
Respuesta de apocalipsis0
1