如何编写一个可以在两个用户之间返回社交"距离"的高效算法.
例如,当您访问LinkedIn上的个人资料时,您可以看到您与用户之间的距离.
- >用户A是用户B的朋友 - B是C的朋友,当A访问C时(距离为1)
图表很大,所以我想知道如何快速执行.
我知道这个问题可能会被关闭,但我认为这是一个编程/算法问题 - 我不会指定任何语言,因为我对这个概念感兴趣.
我有下表:
+--------+----------+---------+---------+---------
| From | To |Departure| Arrival | ID |
+--------+----------+---------+---------+---------
| A | B | 0900 | 0930 | 1 |
+--------+----------+---------+---------+---------
| C | D | 1000 | 1030 | 2 |
+--------+----------+---------+---------+---------
| B | C | 1100 | 1130 | 3 |
+--------+----------+---------+---------+---------
| D | E | 1200 | 1230 | 4 |
+--------+----------+---------+---------+---------
| C | D | 1300 | 1330 | 5 |
+--------+----------+---------+---------+---------
Run Code Online (Sandbox Code Playgroud)
我有以下场景:
我想找到两个城市之间的航班:A和B.没有从A到B的直飞航班; 所以,我需要找到成本最低的转机航班.
此外,机票不固定.这取决于我购买它的时间; 例如,如果我早买它,价格会更便宜.
而且,时间也影响了飞行; 例如,5月31日上午7点只有一班从C到D的航班.如果飞机在5月31日上午8点从A飞到C,我会错过航班.因此,我将城市表示为图的顶点.如果从A到B的航班有效,则路径AB存在.权重将是机票费.
对我的问题有什么想法或建议吗?
谢谢
我目前正在尝试实施我自己的公共交通路径查找器,以便通过电车/公共汽车等找到具有给定时间表的连接.所有数据都是由我生成的(只需在谷歌地图中添加停止坐标).多亏了它,我可以自由选择存储数据和处理数据的方式.整个运输网络由加权图表示.所以问题就出现了:如何将公共交通数据存储在标准SQL数据库中,以便通过某些选择的算法轻松处理?如何轻松地将其转换为时间扩展图形,以便简单的Dijkstra算法就足够了?