这是中国大学MOOC中大数据算法课程的笔记
图计算模型
社交网络建模成图模型,问:我是我朋友的最好的朋友么?
相当于建立有权图,权值代表两人的亲密关系。
能否用MapReduce实现?
点和关系用邻接表表示
node作为map的key,邻接表作为value。
一个实际用例:谁是我多个朋友的朋友(显然是我潜在的朋友)
然后,假设我们希望超越直接的朋友关系
例如:有多少我朋友的朋友把我当做他们最好朋友的最好朋友?
距离k>2的情况
这里我们需要运行多轮MapReduce,即迭代MapReduce,上一轮MapReduce的结果是下一轮MapReduce的输入。
因为一轮MapReduce只能做一跳。
许多图的算法需要多个map/reduce阶段:迭代mapreduce和mapreduce链
另一类算法的实现:基于路径的算法
重点讲单源最短路径的并行化
Dijkstra算法
http://blog.csdn.net/v_JULY_v/article/details/6096981
每一轮为定长边的情况
下面是一个实例
初步情况:mapper里存的是邻接原点的点ID和它们到S的距离
在reducer中算出当前S到A和S到C的最短路径。
下一个阶段:mapper中是经过上一轮的点到下一个点的总距离。
reducer中是新一轮计算后的各点距离。
下一阶段同理。直到输出不变。