Сделайте уже существующий график полностью подключенным

onmousemove = function(e){console.log("mouse location:", e.clientX, e.clientY)}

Откройте консоль (Ctrl + Shift + J), скопируйте код выше и переместите мышь в окне браузера.

-2
задан vic 16 January 2019 в 03:04
поделиться

2 ответа

Самый простой способ сделать простой связанный граф - это соединить узел со всеми другими узлами графа:

for v in G.keys():
    if v != '1' and '1' not in G[v]:
        G['1'].append(v)
        G[v].append('1')

Здесь мы не использовали DFS или BFS , Код очень прост, но количество добавляемых ребер не минимально. Этот код может использоваться только в простых графах (потому что определение связности отличается для ориентированных графов).

Временная сложность этого алгоритма составляет O (| V | + | E |) или O (n + m). Если вы используете DFS или BFS, сложность времени будет такой же.

0
ответ дан Erfan Alimohammadi 16 January 2019 в 03:04
поделиться

Я смог в конце концов взломать его. Он работает как для простых графов, так и для структур больших графов. Я ценю тех, кто внес свой вклад в этот вопрос, и особенно в @Julien, который заставил меня поверить! Вот мой код ниже:

from collections import defaultdict as dd

def add_disconnected_nodes(Graph, begin):
if begin not in Graph:
    return False

temp_dict = dd()
init_node_list = []
temp_node_list = []
for vertices in Graph.keys():
    init_node_list.append(vertices)

if init_node_list:
    for node_items in init_node_list:
        if node_items != begin and not node_items in Graph[begin]:
            temp_node_list.append(node_items)

    temp_dict[begin] = Graph[begin] + temp_node_list
    init_node_list.remove(node_items)
    Graph.update(temp_dict)

return Graph
0
ответ дан vic 16 January 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: