计算从设置节点到所有其他节点的最短路径,其中一些节点被禁止进入路径

Calculating shortest path from set node to all other nodes, with some nodes forbidden from path

我想在 Python 中实现以下内容,但不确定从哪里开始。是否有针对此类最短路径问题的好的模块?

我正在尝试为 3D 化学结构(图)。原子(节点)之间的键是允许从一个节点到另一个节点的边。

我正在尝试根据从所选中心节点向外的连通性从分子(图形)中过滤掉某些原子(节点)。

**对于所考虑的路径,我想禁止某些原子(节点)被交叉。如果从 A 到 B 的最短路径是通过禁止节点,则此答案是不允许的。从A到B的最短路径不得包含禁止节点**

如果从所选中心原子 (A) 到另一个其他节点 (B) 的最短路径包括禁止节点,并且没有其他路径可以通过可用边(键)从 A 到 B,则节点应从要保存的最终 xyz 坐标(节点)集中删除 B。

对于结构(图形)中的所有其他原子(节点),应针对 A 到 C、A 到 D、A 到 E 等重复此操作。

在此先感谢您提供的任何帮助。

确保所有通向禁止节点的边都有无限的成本,无论你使用哪种图遍历算法都会自动处理它。

或者,只需删除图遍历算法考虑的禁止节点。

为了回答你问题的第一部分,我推荐 networkx. 这是一个通用图形库,很容易上手(我在博士期间使用过它)。