Как мы можем уменьшить размер графа, созданного Максимальной кликой, и удалить узлы определенных клик?
Я использую библиотеку networkx—find_cliques для поиска максимальных клик в графе. Я хочу уменьшить размер этого графа на основе максимальных клик. Вот код:
from torch_geometric.utils.convert
import to_networkx from torch_geometric.data import Data
import networkx as nx
edge_list = torch.tensor([
[0, 1, 1, 2, 2, 2, 3, 4, 5, 6, 6, 6, 7, 7, 8 ], # Source Nodes
[1, 2, 3, 4, 5, 3, 9, 5, 6, 7, 8, 9, 8, 9, 9 ] # Target Nodes
], dtype=torch.long)
node_features = torch.tensor([
[-8, 1, 5, 8, 2, -3], # Features of Node 0
[-1, 0, 2, -3, 0, 1], # Features of Node 1
[1, -1, 0, -1, 2, 1], # Features of Node 2
[0, 1, 4, -2, 3, 4], # Features of Node 3
],dtype=torch.long)
data = Data(x=node_features, edge_index=edge_list, edge_attr=edge_weight)
G_directed = to_networkx(data)
G_undirected = G_directed.to_undirected()
no_cliques= nx.find_cliques(G, nodes=None)
print(No_cliques)
List of Maximal Cliques = {1,[1,2], 2,[2, 3, 4], 3,[4, 5, 6], 4,[6, 7], 5, [7, 8, 9, 10], 6, [10,3]}
На следующем шаге мы уменьшаем размер исходного графа в огрубленном графе, поскольку мы рассматриваем одну клику как один узел и соединяем ребро на основе этого правила, соединяя две клики, если они не пересекаются. Я хочу удалить такую клику, узел которой уже появился в других кликах. В приведенном выше примере узлы клики 6 уже назначены в кликах № 2 и 5. Поэтому в новом графе эту клику следует удалить из списка клик. Для лучшего понимания выкладываю фото.
иерархия графа в виде огрубленного графа на каждом уровне
Я хочу сделать этот тип иерархии графов на основе максимальной клики. Кто-нибудь знает об этом? Как мне это сделать?