Helpers - компьютеры, интернет, программирование

Ввод графа для поиска графа scipy

Основываясь на примерах, которые я могу найти для scipy graph_search, кажется, что он принимает форму NxN для входного графа, где пара индексов графа равна этому значению.

так что матрица

G = [ [0,5,2],
      [3,0,8],
      [12,7,0] ]  

означает, что вес ребра 2->1 является значением индекса G[1,0] = 3

Если это неправильно, пожалуйста, объясните.

Проблема, с которой я сталкиваюсь, заключается в эффективном вводе соединений узлов таким образом, начиная со словаря, где ключ — это узел, а значение — массив связанных узлов.

{'node1' : [node2,weight1],[node3,weight2]} где ребро node1->node2 = weight1

Я могу перебирать цикл ключей и создавать новый массив [ [node1,node2,,weight1],[node1,node3,weight2] ] , но это также не приближает меня к формату scipy. Есть ли простой способ сделать это преобразование либо из словаря, либо из повторяющегося массива, который я могу сделать?


Ответы:


1

Предполагая, что вы уже знаете количество N узлов в вашем графе, и ваш граф направлен, вы можете сделать это следующим образом:

def create_csgraph_matrix(d, N):
    M = np.zeros((N,N))
    for i, node_weights in d.items():
        for j, weight in node_weights:
            M[i, j] = weight
    return M

где d — словарь вашей формы. Пример:

In [38]: d = {0: [[1, 10], [2, 20]], 2: [[1, 15]]}

In [39]: create_csgraph_matrix(d,3)
Out[39]: 
array([[ 0., 10., 20.],
       [ 0.,  0.,  0.],
       [ 0., 15.,  0.]])

Обратите внимание, что узлы на этом графике 0,1,2.

30.10.2018
Новые материалы

Интуитивное понимание тензоров в машинном обучении
Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

Почему объяснимость так важна прямо сейчас?
По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

Анимированный математический анализ
Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

Создание простого слайдера изображений с помощью JavaScript
Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

Создание базы данных с помощью супергероя «Python»
В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

ИИ для чайников: руководство для начинающих по пониманию будущего технологий
Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..