我正在创建一个库来支持一些标准的图形遍历。一些图是明确定义的:即通过提供数据结构或通过重复调用相关方法来添加所有边。有些图只是隐式定义的:即,我只能提供一个函数,给定一个节点,将返回其子节点(特别是,我遍历的所有无限图当然必须隐式定义)。
遍历生成器需要高度可定制。比如我应该可以指定是否要DFS post-order/pre-order/in-order、BFS等;应该按照什么顺序访问孩子(如果我提供了key
对他们进行分类的顺序);是否应该维护访问节点集;是否应该与节点一起产生后向指针(指向父级的指针);等等
我正在为这个库的 API 设计而苦苦挣扎(一旦 API 清晰,实现一点也不复杂)。我希望它优雅、合乎逻辑且简洁。是否有任何符合这些标准的图形库可以用作模板(不必在 Python 中)?
当然,如果有一个 Python 库已经完成了所有这些,我想知道,所以我可以避免自己编写代码。
(我正在使用 Python 3。)