Python中使用字典来表示图(Graph)的邻接表

2023-04-11 00:00:00 python 字典 邻接

比如以下代码:

graph = {
    "A": ["B", "C"],
    "B": ["A", "C", "D"],
    "C": ["A", "B", "D"],
    "D": ["B", "C"]
}

表示有四个节点:A、B、C、D,它们之间的边分别是:

  • A与B、C相连
  • B与A、C、D相连
  • C与A、B、D相连
  • D与B、C相连

可以看出,这就是一个无向图。其中,A、B、C、D对应的值都是一个列表,这个列表中存放着与当前节点相连的其他节点。

如果要添加一个新的节点E,并且它与节点B和D相连,代码如下:

graph["E"] = ["B", "D"]
graph["B"].append("E")
graph["D"].append("E")

其中,首先在字典中添加键为"E"的项,并且它的值是一个列表;然后将节点B和D的列表中都添加节点E。这样,图中就增加了一个节点E,并且它与节点B和D相连。

在删除节点时,需要同时删除与之相连的边,例如要删除节点B,代码如下:

for node in graph["B"]:
    graph[node].remove("B")
del graph["B"]

其中,首先需要遍历节点B的列表,删除其中与B相连的节点;然后再从字典中删除键为B的项。这样,图中就删除了节点B,并且与之相连的边也一并删除了。

相关文章