Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个依赖项列表,例如 BLT 依赖于培根、生菜和番茄,而今天的午餐依赖于 BLT 和番茄汤。我想扭转这种关系,即对于所有成分,列出依赖于它们的所有内容。因此,BLT 和今天的午餐都需要培根。我知道包管理器可以做到这一点,但我需要底层算法。谢谢。
您正在寻找的是广度优先搜索。如果 B 依赖于 A,则创建一个 A 连接到 B 的图。然后,从要查找依赖于它的任何节点(称为 A)启动 BFS,直到终止(遍历所有可达节点)并且遇到每个节点在 BFS 期间取决于 A。
http://en.wikipedia.org/wiki/Breadth-first_search