当前位置:  开发笔记 > 编程语言 > 正文

MapReduce,Python和NetworkX

如何解决《MapReduce,Python和NetworkX》经验,为你挑选了1个好方法。

我为使用NetworkX在Python中构建的图实现了非加权随机游动函数。下面是我的程序中处理随机游走的片段。在程序的其他地方,我有一个创建图的方法,并且有一个方法模拟我编写的各种自定义图测试方法。这些图测试方法之一是从图中随机选择两个节点,然后在两个节点之间进行随机游走。根据此随机游走计算出的两件事是:命中时间(从起点到终点经过的链接数)和通勤时间(从起点到终点再回到起点的经过的链接数) )。

def unweighted_random_walk(starting_point,ending_point, graph):
    '''
    starting_point: String that represents the starting point in the graph
    ending_point: String that represents the ending point in the graph
    graph: A NetworkX Graph object
    '''
    ##Begin the random walk
    current_point=starting_point
    #current_node=graph[current_point]
    current_point_neighors=graph.neighbors(current_point)
    hitting_time=0

    #Determine the hitting time to get to an arbitrary neighbor of the
    #starting point
    while current_point!=ending_point:
        #pick one of the edges out of the starting_node with equal probs
        possible_destination=current_point_neighbors[random.randint(0,current_point_neighors)]
        current_point=possible_destination
        current_point_neighbors=graph.neighbors(current_point)
        hitting_time+=1
    return hitting_time

我的随机游走代码非常简单明了,因为我只是选择随机节点直到到达终点。但是,当我尝试运行几次随机游走时,此当前实现非常慢(我认为我有时需要跑一百万步)。

我的问题是:有什么方法可以使用Hadoop MapReduce并行化此随机游走在此处进行的某些操作?我有更好的方式随机行走吗?



1> Ned Batcheld..:

我看不到map-reduce可以如何帮助您。它用于包含两部分的操作:第一部分是可以对许多不同的数据元素独立执行的计算,第二部分是将所有这些结果组合在一起的方法。也许有一种聪明的方法可以使用map-reduce来帮助这种随机游走,但是我看不到。

您的随机游走是完全随机的:它可能会导致许多循环,甚至在继续前进之前在相同的两个节点之间来回跳动。也许您想以某种方式限制它,以便没有太大的搜索空间?

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有