在Facebook上发现两个人之间最短的“路径”

我不是一个非常有经验的程序员,但是我想编写一个接收两个Facebook个人资料的程序,并返回他们之间最短的“路径”.

我想运行时间很长等等,但是如果我开始制作那个程序,我应该选择哪种语言?我应该使用哪些库?我应该进入哪个方向?

最佳答案 说到语言,你应该使用你最熟悉的东西.例如,他们有
PHP的示例代码,所以如果你知道
PHP,你可以从那开始. Java也会起作用.

现在,我不知道fbook API是否已经有一些执行此任务的功能.但是,正如您已经提到的那样,您希望找到“最短路径”.事实上,有许多算法可以找到图形的两个节点之间的最短路径.

您正在寻找图形的两个节点之间的最短路径.什么是图表?

图表听起来像是什么 – 节点和边缘的集合.在这种情况下,每个人都是一个节点.连接节点的边缘是由友谊形成的.

所以假设你有朋友X,他有朋友{A,B,C,D}和朋友Y,他们有朋友(B,D,E,F).你首先要创建一个所有朋友的图表(那个是,取两组的联合.{A,B,C,D,E,F,X,Y}我们包括X和Y,因为我们最终想要找到这两者之间的最短距离.

一旦你得到每个朋友的社交图(他们是他们的朋友,他们是彼此的朋友,等等),你就可以将它们放入图形结构中.我不会谈论如何做到这一点 – 只是在这里大局.

表示这种情况的一种方法是使用邻接矩阵:

  A B C D E F X Y
A 1 0 0 0 0 0 1 0
B      ...
C
D
E
F
X
Y

也就是说,查看每个网格项.如果这两个人是朋友,则在他们的横截面中加上“1”,否则为“0”.

现在对该数据应用最短路径算法.您可以使用Dijkstra的算法来实现这一目标.

所以:你需要对图形,邻接矩阵和最短路径算法有一点背景知识.甚至可能有一个Java库可以为您完成所有这些工作.甚至是PHP或R库.但从高层次来看,这正是你想要实现的目标.我甚至不确定fbook API是否会为您提供解决此问题所需的所有数据.

祝你好运!

点赞