Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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
Python 3.x PythonNetworkX:在图上创建最大长度在起始点结束的随机路径_Python 3.x_Networkx_Graph Theory - Fatal编程技术网

Python 3.x PythonNetworkX:在图上创建最大长度在起始点结束的随机路径

Python 3.x PythonNetworkX:在图上创建最大长度在起始点结束的随机路径,python-3.x,networkx,graph-theory,Python 3.x,Networkx,Graph Theory,我有一个关于networkx和在这个图上创建随机路径的问题。 然而,假设我想在图上生成一条随机路径,它在开始处结束 这篇文章:()解释了如何获得随机路径。然而,使用path=next(nx.all_simple_path(G,source=0,target=5))需要很长的时间来计算,因为我有一个有5000个节点和边的图,并且没有考虑到路径可以有一个最大长度,并且需要回到其起点 MVC示例,假设我想从random startpoint计算一个随机路由,该路由的长度可以小于等于5,并且需要从下图中

我有一个关于networkx和在这个图上创建随机路径的问题。 然而,假设我想在图上生成一条随机路径,它在开始处结束

这篇文章:()解释了如何获得随机路径。然而,使用
path=next(nx.all_simple_path(G,source=0,target=5))
需要很长的时间来计算,因为我有一个有5000个节点和边的图,并且没有考虑到路径可以有一个最大长度,并且需要回到其起点

MVC示例,假设我想从random startpoint计算一个随机路由,该路由的长度可以小于等于5,并且需要从下图中返回到路径末端的原始StartCount:

import random
import networkx as nx
import matplotlib.pyplot as plt
import numpy as np
import math
import pandas as pd
from matplotlib import animation
#from JSAnimation import IPython_display
%matplotlib inline

# initialise graph object
G = nx.Graph()
color_map =[]
G.add_node(1, pos=(1, 0)); color_map.append('r')
G.add_node(2, pos=(2, 0)); color_map.append('r')
G.add_node(3, pos=(3, -1)); color_map.append('r')
G.add_node(4, pos=(3, 1)); color_map.append('r')
G.add_node(5, pos=(4, -1)) ;color_map.append('r')
G.add_node(6, pos=(4, 1)); color_map.append('r')
G.add_node(7, pos=(5, 0)); color_map.append('r')
G.add_node(8, pos=(6, 0));  color_map.append('r')

e = [(1, 2, 1), 
    (2, 3, 1), 
    (2, 4, 2), 
    (3, 5, 5), 
    (4, 6, 2), 
    (5, 7, 1), 
    (4,5, 2),
    (6,3, 1),
     (7,2, 3),
    (6, 7, 2), 
    (7, 8, 1)]

G.add_weighted_edges_from(e)
labels = nx.get_edge_attributes(G,'weight')

nx.draw(G,nx.get_node_attributes(G, 'pos'))
nx.draw_networkx_edge_labels(G,nx.get_node_attributes(G, 'pos'),edge_labels=labels)
nx.draw_networkx_labels(G,nx.get_node_attributes(G, 'pos')

您将如何为此设置代码?

这是一个非常重要的问题。我会将问题从代码实现中分离出来,然后交叉发布到一个数学stackexchange站点——例如,对于计算机科学或数学。您可以通过,其中N是路径的长度,获得可访问的节点。路径是否总是相当短?如果是这样,那么基于邻接矩阵幂创建一个较小的子图就足够了,这样您就可以创建所有路径并过滤起点和终点相同的路径。否则,我们需要想出更聪明的办法。你能链接到一个非玩具示例边列表(最好是csv格式)并指出中值和最大路径长度吗?不,路径不一定短,因此我认为使用邻接矩阵的方法会花费太多的计算时间@PaulBrodersenI将以csv格式上传一个非玩具示例边缘列表:-)我将搜索一个最能代表我的网络的边缘列表。它可以是任何足够大的道路网络,交叉点是节点,街道是边缘。今天晚些时候我会上传这个:-)@PaulBrodersen