Saltar al contenido

Grafos enormes en producción

Las bibliotecas de grafos de alto rendimiento y los formatos de matrices dispersas del cálculo científico usan CSR. Los sistemas de rutas lo usan para los mapas de carreteras: el grafo de un continente cabe en unos pocos arrays, se carga de una vez y se recorre a la velocidad de la memoria contigua. Los algoritmos de caminos más cortos, que verás en Algoritmos, pasan casi todo su tiempo recorriendo vecinos.

La misma estructura, con matrices

En el cálculo científico, una matriz dispersa es una tabla enorme casi llena de ceros: de 1 000 filas por 1 000 columnas, por ejemplo, solo 4 000 casillas valen algo distinto de cero. Se guarda como un grafo: cada fila hace de vértice, y cada valor distinto de cero es una arista que apunta a su columna y lleva su valor como peso.

Una matriz de 1 000 filas por 1 000 columnas, con 4 000 valores distintos de cero, se guarda en formato CSR. ¿Cuántas posiciones tiene el array inicio? ¿Cuántas tiene el array de valores?