Python 恐怖主义网络分析的广度优先搜索

Python 恐怖主义网络分析的广度优先搜索,python,networking,breadth-first-search,Python,Networking,Breadth First Search,我目前正在与BFS合作,帮助分析员和调查人员为一篇大学论文(使用Python)探索恐怖主义或犯罪网络。我课程的主要主题不是面向编码,因此对我来说是全新的。 我正在积极寻找人来帮助/指导我针对此类问题开发代码。 非常感谢您事先提供的帮助。我建议您阅读Steven S.Skienna的《算法设计手册》一书中的第五章“图形遍历”,其中详细解释了图形遍历,并附有示例和练习 此外,如果你想凭直觉来描述BFS,这里有一个简单的解释: BFS是一种遍历图的顺序,在这种顺序中,我们优先以呼吸而不是深入的方式探索

我目前正在与BFS合作,帮助分析员和调查人员为一篇大学论文(使用Python)探索恐怖主义或犯罪网络。我课程的主要主题不是面向编码,因此对我来说是全新的。
我正在积极寻找人来帮助/指导我针对此类问题开发代码。
非常感谢您事先提供的帮助。

我建议您阅读Steven S.Skienna的《算法设计手册》一书中的第五章“图形遍历”,其中详细解释了图形遍历,并附有示例和练习

此外,如果你想凭直觉来描述BFS,这里有一个简单的解释:

BFS是一种遍历图的顺序,在这种顺序中,我们优先以呼吸而不是深入的方式探索图。假设我们有一棵这样的树:

(N)
 |   \
(A)   (B)
 | \   |  \
(C)(D)(E) (F)
如果我们将N设置为BFS搜索开始的节点,则遍历顺序为:

(1)
 |   \
(2)   (3)
 | \   |  \
(4)(5)(6) (7)
这是因为该算法维护了一个FIFO(先进先出)队列,其中包含必须探测的节点,并不断添加实际探测节点的邻居,直到没有剩余节点可探测为止


为了说明一些事情,让我们通过这个简单的例子来描述BFS。在算法的每个步骤中,我们将有一个队列
Q
和一个已探索节点的列表
explored
。首先,队列
Q
中填充了起始节点
Q=[N]
,并且
explored=[]
列表中没有任何内容。我们将N的邻居添加到队列中,并将N标记为explored,因此在算法的第二步中,我们将使用
Q=[A,B]
explored=[N]
。现在轮到Q的第一个元素,它是A,因此我们将未探索的邻居添加到Q,并将其标记为explored,即
Q=[B,C,D]
explored=[N,A]
。在第三个例子中,我们将把B的未探测邻居附加到
Q
中,并将
B
标记为已探测,即
Q=[C,D,E,F]
已探测=[N,A,B]
。直到
Q
为空

建议先创建一些示例应用程序,然后再帮助其他应用程序。