Actualmente estoy trabajando en mi tesis de maestría, y se trata de la agrupación en gráficos. Estoy trabajando con una idea usando hormigas para resolver el problema. Actualmente estoy trabajando en la implementación y me pregunto exactamente qué tan bien representar los bordes del gráfico.
Cada borde se aumenta con cierta información, como su valor de feromona y la cantidad de veces que una hormiga ha visitado ese borde. Trabajaré con gráficos no dirigidos, que pueden llegar a ser bastante grandes (más de un millón de vértices) y me preguntaba cuál es la forma más eficiente para almacenar los bordes y buscarlos. Estaba pensando en apegarme a una convención y almacenar puntos finales de acuerdo con el que tiene una identificación de vértice inferior para y el más alto para ( y son los puntos finales del borde en la estructura de datos). Pero me pregunto cómo realizaría una búsqueda en este caso.
Se me ocurrió una asignación de la matriz de adyacencia a la matriz de bordes, pero eso solo funciona si el gráfico subyacente es un gráfico completo. Así que vine aquí para obtener algunas sugerencias sobre cómo debería proceder, porque necesito que mi búsqueda sea eficiente y, al mismo tiempo, no quiero volar el espacio de almacenamiento para los bordes, ya que los gráficos serán enormes.
Respuestas:
Si su gráfico es escaso, entonces debe almacenarlo usando "listas" de adyacencia, aunque probablemente desee algo más eficiente que una lista (o tal vez no, dependiendo del uso). Es más simple si almacena cada borde en ambos puntos finales. Esto se puede implementar de muchas maneras, por ejemplo, puede almacenar todos los datos en una gran matriz y almacenar solo punteros en las "listas" de adyacencia.
fuente