У меня есть структура данных взвешенного графика, используемая в алгоритме машинного обучения, который требует частых изменений (вставки, удаления вершин и ребер).В настоящее время я использую матрицу смежности, реализованную с помощью массива двумерных массивов с записями
G[i, j] = W{i, j} if ij (is an edge) else 0
. Это хорошо работает для ребер | V |<1500, но очень медленно работает с операциями поиска, вставки и удаления.</p>
Так как я использую векторизованную оптимизацию встраивания графа на основе весов, мне нужно использовать массивы numpy, поэтому в этом случае использование списков невозможно.
Есть ли эффективные реализации графов, которые я могу использовать для хранения, и операции над графами, написанными на Python, которые можно использовать?