Удаление узлов (но с сохранением сильной связи графа) - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь смоделировать прямоугольную комнату с некоторыми прямыми препятствиями внутри нее, и поэтому я сформулировал проблему в виде графа в сетиx.Чтобы добавить препятствия, я выберу узлы, а затем удалю все их ребра.Чтобы предотвратить разбиение графа, я использовал этот код

        self.G = nx.grid_2d_graph(*room_size)

        # create obstacles but keep graph strongly connected
        for i in range(obstacles):
            copy = self.G.copy
            while nx.number_connected_components(copy) != 1:
                copy = self.G.copy
                copy.remove_node(sample(self.G.nodes(),1))
            self.G = copy

Но, похоже, 'nx.number_connected_components (copy)' вызывает ошибку: у объекта 'function' нет атрибута 'is_directed'

Что не имеет смысла для меня, потому что график - это grid_2d_graph, который явно ненаправлен.В чем проблема и как ее исправить?

1 Ответ

0 голосов
/ 22 апреля 2019

Понял.

while obstacles > 0:
    copy = self.G.copy()
    copy.remove_node(choice(list(self.G.nodes)))

    if nx.number_connected_components(copy) == 1:
        self.G = copy
        obstacles -= 1
    else:
        continue
...