【发布时间】:2023-03-15 14:41:01
【问题描述】:
据说所有人之间平均有六个或更少的社交联系。 创建一个应用程序,帮助您找到任何两个人之间的分离程度。 可以将其想象为在 Facebook 上选择两个用户并尝试了解这两个人的情况 已连接。
如果您选择任意两个人,您应该能够看到 它们之间的分离程度。 例如,如果您在系统中添加了以下关系...
- Sameer 是 Aayushi 的朋友
- Aayushi 是 Bhaskar 的朋友
- Sameer 是 Kamalnath Sharma 的朋友
- Kamalnath Sharma 是 Shanti Kumar Saha 的朋友
- Shanti Kumar Saha 是 Bhaskar 的朋友
如果您选择两个人,比如 Sameer 和 Bhaskar,应用程序应显示学位 分离如下。
- Sameer > Aayushi > Bhaskar
- Sameet > Kamalnath Sharma > Shanti Kumar Saha > Bhaskar
我必须在 Node.js 应用程序中实现这个逻辑! 我尝试了使用图形链接列表的不同方法,但找不到实现此方法的解决方案。
【问题讨论】:
-
你知道广度优先搜索吗?如果您想首先打印最短的连接,那将起作用。或者如果连接顺序无关紧要,则深度优先
-
不,我不知道广度优先搜索。我想要所有可能的连接方式,以便它们连接起来。
-
好吧,如果你只学过 2 种 Graph/Tree 算法,它们可能应该是广度优先搜索和深度优先搜索,因为这两种算法现在都可以解决你的问题,现在是选择一个和学习它。它们上有很多资源可以帮助您入门。当您执行 BFS/DFS 时,只需跟踪您到目前为止所采用的路径,每当您找到目标时,将您采用的路径添加到最后返回的结果数组中。当你找到你正在寻找的目标时,你经常会停止 BFS 或 DFS,但你可以继续前进,直到你处理整个图以找到所有路径。
-
术语注释:BFS/DFS 通过查找从起始顶点到结束/目标顶点的路径来工作。因此,如果您正在寻找 Sameer 和 Bhaskar 之间的联系,Sameer 将是起点,而 Bhaskar 是目标。 “路径”只是指您连接两者的朋友链。
标签: javascript node.js graph tree