2016-02-19 5 views
1

Итак, если у меня есть базовый график, созданный в NetworkX, есть ли способ его «черепицы», чтобы он несколько раз умножал граф? Было бы хорошо, если бы они все еще были связаны. Я пробовал некоторые fcns, такие как nx.Union(), но он, кажется, накладывает графики, а не умножает их много раз. Я не могу найти какие-либо fcns, которые, похоже, достигнут этого, любые идеи?'Tiling' график в NetworkX

EDIT: Input будет графиком, возможно, до 50 узлов. Выходом будет тот же самый график, но повторяется n раз (так что в выходном графе есть n50 узлов). Тем не менее, я хотел бы, чтобы итерации исходного графа были связаны между собой, поэтому либо накладывать некоторые узлы (узлы вывода вывода < 'n50), либо создавать новые ребра для соединения итераций (по краям вывода>> n (входные ребра)).

Это имеет смысл?

+0

Можете ли вы предоставить образец ввода и объяснить, какой будет выход? Я не уверен, что вы спрашиваете. – Joel

+0

Привет, Джоэл, я отредактировал с чуть большим описанием! – jdg

+0

Я, например, не понимаю, что вы имеете в виду. Вы хотите добавить новые узлы к существующему графику? Вы хотите добавить новые грани? – Gijs

ответ

0

Функция, которую вы ищете, это nx.disjoint_union, которая позволит вам добавить два графика и дать им различные значения узлов.

def n_disjoint_unions(G, n): 
    H = nx.Graph() 
    for _ in range(n): 
     H = nx.disjoint_union(H, nx.copy(G)) 
    return H 

Необходимо указать, как вы хотите подключить эти новые графики.

+0

Я ближе ... У меня есть [это] (http://imgur.com/WSv6yYr) для n = 3. Теперь мне бы хотелось, чтобы все они были связаны, возможно, с ребрами между ними (или разделяли набор узлов). Есть ли разумный способ сделать это? Я рассматриваю вопрос о степени центральности узлов внутри цикла и их соединения, если они достаточно низки. – jdg

+0

@jdg Вы можете выбрать один узел в оригинале, который будет подключен ко всем копиям? Но на самом деле, какова ваша цель здесь? Это поможет выяснить лучший вариант. – CookieOfFortune

+0

Моя цель состоит в том, чтобы сделать сеть сколь угодно большой, поэтому мы можем протестировать некоторые алгоритмы подключения. Причина, по которой файл должен быть подключен и большой, заключается в том, что мы можем запускать некоторые тесты скорости и видеть, какой из них лучше всего подходит для очень большой сети ... Я создал небольшой алгоритм, который находит узлы с наименьшей степенью связности и соединяет их с другими, создавая подключенную сеть. Кажется, он работает нормально, но его нужно обобщать ... Любые другие подходы? – jdg

Смежные вопросы