• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python networkx.shortest_path_length函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中networkx.shortest_path_length函数的典型用法代码示例。如果您正苦于以下问题:Python shortest_path_length函数的具体用法?Python shortest_path_length怎么用?Python shortest_path_length使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了shortest_path_length函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: get_followers_dist

def get_followers_dist(g, dg, follow):

    if follow == -1: return -1

    if len(dg) == 0:
        dg = nx.read_edgelist(sys.argv[2], create_using=dg)

    no_of_paths = 0
    for u in dg.nodes():

        if not g.has_node(u):
            print "no_source"
            continue

        for v in dg.successors(u):
            if u == v: continue

            if g.has_node(v):
                try:
                    print nx.shortest_path_length(g, source=u, target=v)
                    no_of_paths += 1
                except nx.exception.NetworkXError as err:
                    print "no_path"
            else:
                print "no_target"

    print >> sys.stderr, "no of paths", no_of_paths
    return no_of_paths
开发者ID:pstjuste,项目名称:pt_analysis,代码行数:28,代码来源:sigcomm2012.py


示例2: calc_2_lines_point_shortest_path

    def calc_2_lines_point_shortest_path(self, start_line, end_line):
        p11, p12 = self.line_dict[start_line]
        p21, p22 = self.line_dict[end_line]

        d1 = nx.shortest_path_length(self.G, source=p11, target=p21)
        d2 = nx.shortest_path_length(self.G, source=p11, target=p22)
        d3 = nx.shortest_path_length(self.G, source=p12, target=p21)
        d4 = nx.shortest_path_length(self.G, source=p12, target=p22)

        min_d = min([d1, d2, d3, d4])
        if d1 == min_d:
            return p11, p21
            pass

        if d2 == min_d:
            return p11, p22
            pass

        if d3 == min_d:
            return p12, p21
            pass

        if d4 == min_d:
            return p12, p22
            pass
        pass
开发者ID:hxgqh,项目名称:jailmonitor,代码行数:26,代码来源:calc_patrol_line.py


示例3: verify_path_len

    def verify_path_len(self):
        """
        Make sure that the finger links are optimal in length.
        (That they are the shortest paths possible)
        """

        # Iterate over all nodes:
        for nd in self.nodes:
            for f in self.dht_succ_fingers:
                best_succ_f = nd.get_best_succ_finger(f)
                # Calculate shortest path on graph:
                spath_len = nx.shortest_path_length(self.graph,\
                        self.vec_to_graph[nd.ind],\
                        self.vec_to_graph[best_succ_f.lindex])

                # Check if the path we have to best_succ_f equals exactly
                # spath_len:
                if best_succ_f.path_len != spath_len:
                    return False

            for f in self.dht_pred_fingers:
                best_pred_f = nd.get_best_pred_finger(f)
                # Calculate shortest path on graph:
                spath_len = nx.shortest_path_length(self.graph,\
                        self.vec_to_graph[nd.ind],\
                        self.vec_to_graph[best_pred_f.lindex])

                # Check if the path we have to best_pred_f equals exactly
                # spath_len:
                if best_pred_f.path_len != spath_len:
                    return False

        return True
开发者ID:realcr,项目名称:freedomlayer_code,代码行数:33,代码来源:notify_fingers_iters.py


示例4: route_signal

def route_signal(sat_and_ids, route_from, route_to):
    G = networkx.Graph()

    for x, y in itertools.permutations(sat_and_ids, r=2):
        sat_x, sid_x = x
        sat_y, sid_y = y

        in_sight = is_in_sight(sat_x, sat_y)

        if in_sight is not None:
            G.add_edge(sid_x, sid_y, weight=in_sight)

    for sat, sid in sat_and_ids:
        in_sight = can_transmit(route_from, sat)

        if in_sight is not None:
            G.add_edge('SRC', sid, weight=in_sight)

    for sat, sid, in sat_and_ids:
        in_sight = can_transmit(route_to, sat)

        if in_sight is not None:
            G.add_edge('DST', sid, weight=in_sight)

    print networkx.shortest_path_length(G, 'SRC', 'DST', weight='weight')
    return networkx.shortest_path(G, 'SRC', 'DST', weight='weight')
开发者ID:lidialiker,项目名称:reaktor-orbital-challenge,代码行数:26,代码来源:reaktor-orbital-challenge.py


示例5: edge_update

def edge_update(graph, edge, cc, dd):
	u = edge[0]
	v = edge[1]
	change = 0
	if u not in dict:
		dict[u] = {}
		dict[u][v] = 1
		dict[u][u] = 0
	if v not in dict:
		dict[v] = {}
		dict[v][u] = 1
		dict[v][v] = 0
	for s in graph.nodes():
		if u not in dict[s]:
			try:
				dict[s][u] = nx.shortest_path_length(graph, s ,u)
				dict[u][s] = dict[s][u]
		if v not in dict[s]:
			try:
				dict[s][v] = nx.shortest_path_length(graph, s ,v)
				dict[v][s] = dict[s][v]
		if u in dict[s] and v in dict[s]:
			if math.fabs(dict[s][u] - dict[s][v]) > 1:
				dict[s] = {}
				dict[s] = nx.shortest_path_length(graph, s)
				change = change - cc[s]
				cc[s] = 0
				for n in dict[s]:
					cc[s] = cc[s] + 1.0 / dict[s][n]
				change = change + cc[s]
	return cc, dict
开发者ID:nkfly,项目名称:sna-hw3,代码行数:31,代码来源:closeness.py


示例6: get_followers_dist

def get_followers_dist(g, dg, follow):

    if follow == -1: return -1

    no_of_paths = 0
    for u in dg.nodes():

        if not g.has_node(u):
            print "no_source"
            continue

        for v in dg.neighbors(u):
            if u == v: continue

            if g.has_node(v):
                try:
                    print nx.shortest_path_length(g, source=u, target=v)
                    no_of_paths += 1
                except nx.exception.NetworkXNoPath as err:
                    print "no_path"
            else:
                print "no_target"

    print >> sys.stderr, "no of paths", no_of_paths
    return no_of_paths
开发者ID:pstjuste,项目名称:pt_analysis,代码行数:25,代码来源:csr13.py


示例7: heuristic

 def heuristic(n):
     t = (graph.degree(n), min([nx.shortest_path_length(graph, n, s) for s in self.stations]))
     # geometric mean of these two
     # closest to orders
     return (
         -sum([nx.shortest_path_length(graph, n, order_node) for order_node in order_nodes]),
         (t[0] * t[1]) ** (1 / 2),
     )
开发者ID:charlesyuan314,项目名称:awap-2015,代码行数:8,代码来源:playerx.py


示例8: get_chokes

def get_chokes(instance, choke_candidates):
    #prevent writing over base space.
    used_set = set()
    start, finish = instance.level.botSpawnAreas[instance.game.enemyTeam.name]
    for i, j in itertools.product(range(int(start.x), int(finish.x)), range(int(start.y), int(finish.y))):
        node_index = regressions2.get_node_index(instance, Vector2(i,j))
        used_set.add(node_index)
            
    choke_dict = {}
    master_chokes = set()
    flag_node = regressions2.get_node_index(instance, instance.game.team.flag.position)
    spawn_node = regressions2.get_node_index(instance, get_enemy_base(instance))

    shortest_length = nx.shortest_path_length(instance.graph, source=spawn_node, target=flag_node, weight="choke_covered")
    choke_count = 0
    while shortest_length == 0.0:
        if len(choke_candidates) == 0.0:
            print "RAN OUT OF CANDIDATES!"
            break
        
        choke_count += 1
        
        one_choke = set()
        choke_center = choke_candidates.pop()
        choke_vector = regressions2.get_node_vector(instance, choke_center)
        
        #Ignore potential chokes too far from their spawn.
        while (choke_vector.distance((get_enemy_base(instance))) > 5.0 or choke_center in used_set) and len(choke_candidates) > 0:
            choke_vector = regressions2.get_node_vector(instance, choke_center)
            choke_center = choke_candidates.pop()
        if len(choke_candidates) == 0:
            print "RAN OUT OF CANDIDATES!"
            return choke_dict, master_chokes
        if choke_vector.distance((get_enemy_base(instance))) > 5.0:
            print "RAN OUT OF CANDIDATES, LAST CANDIDATE DIDN'T WORK!"
            return choke_dict, master_chokes
    
        one_choke.add(choke_center)
        for x in range(4):
            neighbors = set()
            for node in one_choke:
                neighbors2 = instance.graph.neighbors(node)
                if neighbors2 is not None:
                    for neighbor2 in neighbors2:
                        if neighbor2 not in used_set:
                            neighbors.add(neighbor2)
            one_choke = one_choke.union(neighbors)
            used_set = used_set.union(one_choke)
        for node in one_choke:
            instance.graph.node[node]["choke_covered"] = 1.0
            neighbors = instance.graph.neighbors(node)
            for neighbor in neighbors:
                instance.graph.edge[node][neighbor]["choke_covered"] = 1.0
        choke_dict[choke_center] = { "nodes": one_choke, "redundancy": 0}
        master_chokes = master_chokes.union(one_choke)
        shortest_length = nx.shortest_path_length(instance.graph, source=spawn_node, target=flag_node, weight="choke_covered")
        
    return choke_dict, master_chokes
开发者ID:wildertm,项目名称:jytwai,代码行数:58,代码来源:spawn_camp.py


示例9: _min_cycle

def _min_cycle(G, orth, weight=None):
    """
    Computes the minimum weight cycle in G, orthogonal to the vector orth
    as per [p. 338, 1]
    """
    T = nx.Graph()

    nodes_idx = {node: idx for idx, node in enumerate(G.nodes())}
    idx_nodes = {idx: node for node, idx in nodes_idx.items()}

    nnodes = len(nodes_idx)

    # Add 2 copies of each edge in G to T. If edge is in orth, add cross edge;
    # otherwise in-plane edge
    if weight is not None:
        for u, v in G.edges():
            uidx, vidx = nodes_idx[u], nodes_idx[v]
            edge_w = G[u][v][weight]
            if frozenset((u, v)) in orth:
                T.add_edges_from(
                    [(uidx, nnodes + vidx), (nnodes + uidx, vidx)], weight=edge_w)

            else:
                T.add_edges_from(
                    [(uidx, vidx), (nnodes + uidx, nnodes + vidx)], weight=edge_w)

        all_shortest_pathlens = nx.shortest_path_length(T, weight='weight')

    else:
        for u, v in G.edges():
            uidx, vidx = nodes_idx[u], nodes_idx[v]
            if frozenset((u, v)) in orth:
                T.add_edges_from(
                    [(uidx, nnodes + vidx), (nnodes + uidx, vidx)])

            else:
                T.add_edges_from(
                    [(uidx, vidx), (nnodes + uidx, nnodes + vidx)])

        all_shortest_pathlens = nx.shortest_path_length(T)

    cross_paths_w_lens = {
        n: all_shortest_pathlens[n][nnodes + n] for n in range(nnodes)}

    # Now compute shortest paths in T, which translates to cyles in G
    min_path_startpoint = min(cross_paths_w_lens, key=cross_paths_w_lens.get)
    min_path = nx.shortest_path(
        T, source=min_path_startpoint, target=nnodes + min_path_startpoint, weight='weight')

    # Now we obtain the actual path, re-map nodes in T to those in G
    min_path_nodes = [
        node if node < nnodes else node - nnodes for node in min_path]
    # Now remove the edges that occur two times
    mcycle_pruned = _path_to_cycle(min_path_nodes)

    return {frozenset((idx_nodes[u], idx_nodes[v])) for u, v in mcycle_pruned}
开发者ID:debsankha,项目名称:generalized-cycle,代码行数:56,代码来源:minimum_cycles.py


示例10: closeness_vitality

def closeness_vitality(grafo,vertice, aresta=False):
    """Calcula closeness vitality do vértice no grafo

    Retorna a closeness vitality para o vértice ou aresta especificado
    no grafo especificado.

    Parâmetros
    ----------
    grafo: grafo networkx
        Grafo no qual se quer calcular closeness vitality.
    vertice: identificador
        Identificador do vértice para o qual se quer a medida.
    aresta: tupla
        Identificador dos vértices que formam a aresta para o qual se quer a medida de centralidade.
    """

    g_foo=nx.copy.deepcopy(grafo)
    dists=nx.shortest_path_length(g_foo, weighted=True)
    vertices=g_foo.nodes()
    pares=[]
    soma_dists1=0
    for v1 in vertices:
        for v2 in vertices:
            if set((v1,v2)) not in pares:
                soma_dists1+=dists[v1][v2]
                pares.append(set((v1,v2)))
    Iwg=soma_dists1

    if aresta:
        g_foo.remove_edge(aresta[0],aresta[1])
        dists=nx.shortest_path_length(g_foo, weighted=True)
        vertices=g_foo.nodes()
        pares=[]
        soma_dists2=0
        for v1 in vertices:
            for v2 in vertices:
                if set((v1,v2)) not in pares:
                    soma_dists2+=dists[v1][v2]
                    pares.append(set((v1,v2)))
        Iwg2=soma_dists2
        return Iwg-Iwg2

    g_foo.remove_node(vertice)

    dists=nx.shortest_path_length(g_foo, weighted=True)
    vertices=g_foo.nodes()
    pares=[]
    soma_dists2=0
    for v1 in vertices:
        for v2 in vertices:
            if set((v1,v2)) not in pares:
                soma_dists2+=dists[v1][v2]
                pares.append(set((v1,v2)))
    Iwg2=soma_dists2

    return Iwg-Iwg2
开发者ID:ttm,项目名称:aprendizadoSemisupervisionado,代码行数:56,代码来源:closeness_vitality.py


示例11: AssociatedExternal

def AssociatedExternal(node, Dual, External):
    associate = External.iterkeys().next()
    min_dist = nx.shortest_path_length(Dual, node, External[associate]['measure']) + 1

    for candidate in External:
        distance = nx.shortest_path_length(Dual, node, External[candidate]['measure']) + 1
        if distance < min_dist:
            min_dist = distance
            associate = candidate
    return associate
开发者ID:jacobmarks,项目名称:QTop,代码行数:10,代码来源:mwpm.py


示例12: extract_shortestpath_subgraph

def extract_shortestpath_subgraph(g, nodes):
    newg = nx.DiGraph()
    for beg in nodes:
        for end in nodes:
            if beg != end:
                newg.add_edge(beg,
                              end,
                              duration=nx.shortest_path_length(g,source=beg,target=end,weight='duration'),
                              min_duration=nx.shortest_path_length(g,source=beg,target=end,weight='min_duration'),
                              max_duration=nx.shortest_path_length(g,source=beg,target=end,weight='max_duration'))
    return newg
开发者ID:vaishakbelle,项目名称:APPROXWMI,代码行数:11,代码来源:run.py


示例13: get_sigma

def get_sigma(G, s, v, predecessors):
  if s == v:
    return 1

  l = nx.shortest_path_length(G,s,v)
  sigma_v = 0
  for u in G.neighbors(v):
    if nx.shortest_path_length(G,s,u) < l:
      predecessors.add(u)
      sigma_v += get_sigma(G, s, u, predecessors)
  return sigma_v
开发者ID:ryanefoley,项目名称:repo1,代码行数:11,代码来源:p2e2.py


示例14: main

def main():
    for i in range(size):
        for j in range(size):
            G.add_edge((i,j), (i+1,j), weight=mat[i,j])
            G.add_edge((i,j), (i,j+1), weight=mat[i,j])


    for i in range(size):
        G.remove_node((i,size))
        G.remove_node((size,i))
    
    print nx.shortest_path_length(G, (0,0), (size-1,size-1), weight='weight')
开发者ID:KPLauritzen,项目名称:Project-Euler,代码行数:12,代码来源:main.py


示例15: normalize_step_weight

def normalize_step_weight(graph):
    "Changes the edge weights in the graph proportional to the longest path."
    longest_path_len = max(nx.shortest_path_length(graph, "ROOT").values())
    # add normalized path length as weight to edges.
    for category in "ABCEDFGHJKLMNPQRSTUVWXZ":
        # for each category, find out how long the longest path is.
        cat_longest_path_len = max(nx.shortest_path_length(graph, category).values()) + 1
        # normalize the stepsize
        stepsize = float(longest_path_len) / cat_longest_path_len
        # traverse tree for this category and assign stepsize to edges as weight attribute
        for a, b in nx.dfs_edges(graph, category):
            graph[a][b]["weight"] = stepsize
开发者ID:udemirezen,项目名称:MotifRetrieval,代码行数:12,代码来源:TMI.py


示例16: test_single_source_shortest_path_length

 def test_single_source_shortest_path_length(self):
     l=nx.shortest_path_length(self.cycle,0)
     assert_equal(l,{0:0,1:1,2:2,3:3,4:3,5:2,6:1})
     assert_equal(l,nx.single_source_shortest_path_length(self.cycle,0))
     l=nx.shortest_path_length(self.grid,1)
     assert_equal(l[16],6)
     # now with weights
     l=nx.shortest_path_length(self.cycle,0,weighted=True)
     assert_equal(l,{0:0,1:1,2:2,3:3,4:3,5:2,6:1})
     assert_equal(l,nx.single_source_dijkstra_path_length(self.cycle,0))
     l=nx.shortest_path_length(self.grid,1,weighted=True)
     assert_equal(l[16],6)
开发者ID:c0ns0le,项目名称:zenoss-4,代码行数:12,代码来源:test_generic.py


示例17: test_all_pairs_shortest_path_length

 def test_all_pairs_shortest_path_length(self):
     l=nx.shortest_path_length(self.cycle)
     assert_equal(l[0],{0:0,1:1,2:2,3:3,4:3,5:2,6:1})
     assert_equal(l,nx.all_pairs_shortest_path_length(self.cycle))
     l=nx.shortest_path_length(self.grid)
     assert_equal(l[1][16],6)
     # now with weights
     l=nx.shortest_path_length(self.cycle,weighted=True)
     assert_equal(l[0],{0:0,1:1,2:2,3:3,4:3,5:2,6:1})
     assert_equal(l,nx.all_pairs_dijkstra_path_length(self.cycle))
     l=nx.shortest_path_length(self.grid,weighted=True)
     assert_equal(l[1][16],6)
开发者ID:c0ns0le,项目名称:zenoss-4,代码行数:12,代码来源:test_generic.py


示例18: nxShortestPath

def nxShortestPath(nxGraph, nxPos, startPt, endPt, Dijk=0):
    if Dijk == 0:
        nxList = nx.shortest_path(nxGraph, source=startPt, target=endPt)
        score = nx.shortest_path_length(nxGraph, source=startPt, target=endPt)
        dist = nx.shortest_path_length(nxGraph, source=startPt, target=endPt, weight="distance")
    elif Dijk == 1:
        nxList = nx.dijkstra_path(nxGraph, source=startPt, target=endPt, weight="weight")
        score = nx.dijkstra_path_length(nxGraph, source=startPt, target=endPt, weight="weight")
        dist = nx.dijkstra_path_length(nxGraph, source=startPt, target=endPt, weight="distance")

    nxH = nx.subgraph(nxGraph, nxList)
    return nxList, nxH, score, dist
开发者ID:gaurav-kaushik,项目名称:BostonBikr,代码行数:12,代码来源:BostonBikr.py


示例19: random_pairs_dist

def random_pairs_dist(data1, data, el):
    """
    Chooses random pairs of branches in the skeleton and computes the distances
    between them.
    
    Parameters
    ------------
    data1 : list of pathes for the break-ups dictionaries. Used here for the 
            estimation of the necessary number of pairs.
    data : list of pathes for the graphs
    el : list of length scales
    
    Return
    -------
    d_ran : list of distances along the skeleton between random branches.
    """
    d_ran = list()
    u=0
    for b, g in zip(data1, data):
        br = np.load(b).item().keys()
        gr = nx.read_gpickle(g)
        edg = list(nx.edges(gr))
        number = nx.get_edge_attributes(gr, 'number')
        num_dict = {}
        for k in number:
            for v in number[k]:
                num_dict.setdefault(v, []).append(k)
        a = len(list(br))
        if a > 1500: #We cannot use here infinitly many pairs because of the computing time.
            a = 1500
        for j in range(a):
            e1 = random.choice(edg)
            e2 = random.choice(edg)
            if (e1==e2):
                continue
            n1 = e1[0]
            n2 = e1[1]
            m1 = e2[0]
            m2 = e2[1]
            try: 
                p_min = p_max = nx.shortest_path_length(gr, n1, m1, 'length')
            except nx.NetworkXNoPath:
                continue    
            for i in itertools.product((n1,n2), (m1,m2)):
                p = nx.shortest_path_length(gr, i[0], i[1], 'length')
                if p < p_min:
                    p_min = p
                if p > p_max:
                    p_max = p
            d = (p_min+p_max)/(2. * el[u])
            d_ran.append(d)
        u+=1
    return d_ran
开发者ID:YuliyaKar,项目名称:Skeleton_to_graph-labeling-,代码行数:53,代码来源:graph_analisys.py


示例20: distance

 def distance(self, type, node1, node2):
     if node1 in self.Dual[type].nodes() and node2 in self.Dual[type].nodes():
         return nx.shortest_path_length(self.Dual[type], node1, node2)
     elif node1 in self.Dual[type].nodes() and node2 not in self.Dual[type].nodes():
         node2 = self.External[type][node2]['measure']
         return nx.shortest_path_length(self.Dual[type], node1, node2) + 1
     elif node1 not in self.Dual[type].nodes() and node2 in self.Dual[type].nodes():
         node1 = self.External[type][node1]['measure']
         return nx.shortest_path_length(self.Dual[type], node1, node2) + 1
     else:
         node1 = self.External[type][node1]['measure']
         node2 = self.External[type][node2]['measure']
         return nx.shortest_path_length(self.Dual[type], node1, node2) + 2
开发者ID:jacobmarks,项目名称:QTop,代码行数:13,代码来源:common.py



注:本文中的networkx.shortest_path_length函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python networkx.shortest_simple_paths函数代码示例发布时间:2022-05-27
下一篇:
Python networkx.shortest_path函数代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap