Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“发现最短的”;路径“;在Facebook上的两个人之间_Facebook_Programming Languages - Fatal编程技术网

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

“发现最短的”;路径“;在Facebook上的两个人之间,facebook,programming-languages,Facebook,Programming Languages,我不是一个很有经验的程序员,但我想写一个程序,接收两个Facebook个人资料,并返回他们之间最短的“路径” 我猜运行时间很长,等等,但是如果我开始制作这个程序,我应该选择什么语言呢?我应该使用哪些库?我应该朝哪个方向走?说到语言,你应该使用你最熟悉的语言。例如,他们有PHP的示例代码,所以如果您了解PHP,可以从它开始。Java也可以工作 现在,我不知道FBookAPI是否已经有了执行此任务的函数。但是,正如你已经提到的,你想要找到“最短路径”。事实上,有很多算法可以找到图中两个节点之间的最短

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


我猜运行时间很长,等等,但是如果我开始制作这个程序,我应该选择什么语言呢?我应该使用哪些库?我应该朝哪个方向走?

说到语言,你应该使用你最熟悉的语言。例如,他们有PHP的示例代码,所以如果您了解PHP,可以从它开始。Java也可以工作

现在,我不知道FBookAPI是否已经有了执行此任务的函数。但是,正如你已经提到的,你想要找到“最短路径”。事实上,有很多算法可以找到图中两个节点之间的最短路径

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

一个和它听起来一样的图形——一个节点和边的集合。在这种情况下,每个人都是一个节点。连接节点的边是由友谊形成的

假设你有朋友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是否会为您提供解决此问题所需的所有数据

祝你好运

我应该选择什么语言

任何你喜欢的语言

我应该使用什么图书馆?我应该朝什么方向走


试试:BFS(队列)和DFS(堆栈或递归)。

嘿,谢谢你的深入回答,它清楚地让我思考我应该使用什么算法(我想从一个有问题的人那里运行BFS算法,直到找到第二个),但我的问题更多的是关于技术方面的。我如何解析信息?我如何从主页进入好友列表并链接到他们的个人资料?等等@GBoss哈哈,好吧,很抱歉,我不确定你问的是“算法”还是“fbook api”BFS是可以的,但这不会给出一条最短路径(而且可能有多条最短路径,所以您将得到一条最短路径)我不太擅长FBooAPI,所以我恐怕在那里没有太多的帮助。我很想看看你发现了什么。由于距离是一致的,Dijkstra的算法只是减少到BFS。稍微改进一下就是从两个人中做一个BFS并在中间相遇。脸谱网有一个图形API()。.我不确定Facebook Graph是否意味着DSA中我们所说的Graph。