此python代码用于图形以查找所有可能的路径,但不会运行';我不返回任何结果
因此,我在网上找到了这段代码,当我使用编辑器时,它工作得很好,但是当我将边更改为我正在处理的图形时,它只运行,但没有返回结果,我怀疑我编辑的原始代码中的边数是有限制的此python代码用于图形以查找所有可能的路径,但不会运行';我不返回任何结果,python,graph,path,edges,vertices,Python,Graph,Path,Edges,Vertices,因此,我在网上找到了这段代码,当我使用编辑器时,它工作得很好,但是当我将边更改为我正在处理的图形时,它只运行,但没有返回结果,我怀疑我编辑的原始代码中的边数是有限制的 # This class represents a directed graph # using adjacency list representation class Graph: def __init__(self, vertices): # No. of vertices
# This class represents a directed graph
# using adjacency list representation
class Graph:
def __init__(self, vertices):
# No. of vertices
self.V = vertices
# default dictionary to store graph
self.graph = defaultdict(list)
# function to add an edge to graph
def addEdge(self, u, v):
self.graph[u].append(v)
g = Graph(111)
g.addEdge(4, 5)
g.addEdge(4, 6)
g.addEdge(4, 7)
g.addEdge(5, 8)
g.addEdge(5, 8)
g.addEdge(6, 10)
g.addEdge(6, 12)
g.addEdge(7, 13)
g.addEdge(8, 9)
g.addEdge(9, 6)
g.addEdge(10, 11)
g.addEdge(11, 14)
g.addEdge(11, 15)
g.addEdge(12, 17)
g.addEdge(12, 19)
g.addEdge(13, 18)
g.addEdge(13, 20)
g.addEdge(14, 21)
g.addEdge(14, 22)
g.addEdge(15, 24)
g.addEdge(15, 25)
g.addEdge(17, 23)
g.addEdge(18, 38)
g.addEdge(18, 43)
g.addEdge(19, 26)
g.addEdge(19, 37)
g.addEdge(20, 54)
g.addEdge(21, 56)
g.addEdge(21, 57)
g.addEdge(22, 58)
g.addEdge(22, 59)
g.addEdge(23, 61)
g.addEdge(23, 62)
g.addEdge(24, 60)
g.addEdge(25, 64)
g.addEdge(25, 102)
g.addEdge(26, 27)
g.addEdge(26, 115)
g.addEdge(27, 28)
g.addEdge(27, 29)
g.addEdge(28, 35)
g.addEdge(28, 36)
g.addEdge(29, 30)
g.addEdge(29, 31)
g.addEdge(30, 32)
g.addEdge(31, 33)
g.addEdge(31, 34)
g.addEdge(32, 117)
g.addEdge(33, 112)
g.addEdge(34, 113)
g.addEdge(35, 117)
g.addEdge(36, 110)
g.addEdge(37, 108)
g.addEdge(37, 66)
g.addEdge(38, 39)
g.addEdge(39, 40)
g.addEdge(39, 41)
g.addEdge(40, 42)
g.addEdge(40, 103)
g.addEdge(41, 73)
g.addEdge(42, 104)
g.addEdge(42, 105)
g.addEdge(43, 44)
g.addEdge(43, 47)
g.addEdge(44, 45)
g.addEdge(45, 46)
g.addEdge(46, 51)
g.addEdge(46, 53)
g.addEdge(46, 11)
g.addEdge(47, 48)
g.addEdge(47, 49)
g.addEdge(47, 50)
g.addEdge(48, 111)
g.addEdge(49, 117)
g.addEdge(50, 39)
g.addEdge(51, 52)
g.addEdge(52, 117)
g.addEdge(53, 70)
g.addEdge(54, 55)
g.addEdge(55, 77)
g.addEdge(55, 82)
g.addEdge(56, 107)
g.addEdge(57, 110)
g.addEdge(58, 117)
g.addEdge(60, 99)
g.addEdge(60, 100)
g.addEdge(61, 107)
g.addEdge(62, 63)
g.addEdge(63, 115)
g.addEdge(64, 106)
g.addEdge(66, 67)
g.addEdge(67, 68)
g.addEdge(67, 51)
g.addEdge(68, 69)
g.addEdge(68, 71)
g.addEdge(69, 70)
g.addEdge(70, 73)
g.addEdge(70, 74)
g.addEdge(71, 72)
g.addEdge(72, 92)
g.addEdge(73, 11)
g.addEdge(74, 75)
g.addEdge(75, 76)
g.addEdge(75, 82)
g.addEdge(76, 77)
g.addEdge(77, 78)
g.addEdge(77, 80)
g.addEdge(78, 79)
g.addEdge(79, 117)
g.addEdge(80, 81)
g.addEdge(81, 83)
g.addEdge(81, 91)
g.addEdge(82, 115)
g.addEdge(83, 84)
g.addEdge(83, 86)
g.addEdge(84, 85)
g.addEdge(85, 117)
g.addEdge(86, 87)
g.addEdge(87, 88)
g.addEdge(87, 89)
g.addEdge(87, 117)
g.addEdge(88, 117)
g.addEdge(89, 90)
g.addEdge(90, 117)
g.addEdge(91, 117)
g.addEdge(92, 93)
g.addEdge(92, 95)
g.addEdge(93, 94)
g.addEdge(94, 117)
g.addEdge(95, 96)
g.addEdge(95, 98)
g.addEdge(96, 97)
g.addEdge(97, 117)
g.addEdge(98, 117)
g.addEdge(99, 106)
g.addEdge(100, 109)
g.addEdge(102, 117)
g.addEdge(103, 117)
g.addEdge(104, 117)
g.addEdge(105, 117)
g.addEdge(106, 117)
g.addEdge(107, 117)
g.addEdge(108, 117)
g.addEdge(109, 117)
g.addEdge(110, 117)
g.addEdge(111, 117)
g.addEdge(112, 117)
g.addEdge(113, 117)
g.addEdge(114, 117)
g.addEdge(115, 117)
g.addEdge(116, 117)
'''A recursive function to print all paths from 'u' to 'd'.
visited[] keeps track of vertices in current path.
path[] stores actual vertices and path_index is current
index in path[]'''
def printAllPathsUtil(self, u, d, visited, path):
# Mark the current node as visited and store in path
visited[u]= True
path.append(u)
# If current vertex is same as destination, then print
# current path[]
if u == d:
print (path)
else:
# If current vertex is not destination
# Recur for all the vertices adjacent to this vertex
for i in self.graph[u]:
if visited[i]== False:
self.printAllPathsUtil(i, d, visited, path)
# Remove current vertex from path[] and mark it as unvisited
path.pop()
visited[u]= False
# Prints all paths from 's' to 'd'
def printAllPaths(self, s, d):
# Mark all the vertices as not visited
visited =[False]*(self.V)
# Create an array to store paths
path = []
# Call the recursive helper function to print all paths
self.printAllPathsUtil(s, d, visited, path)
s = 4 ; d = 117
print ("Following are all different paths from % d to % d :" %(s, d))
g.printAllPaths(s, d)
您的graph类应该更像这样:
class Graph:
def __init__(self, vertices):
self.V = vertices
self.graph = defaultdict(list)
def addEdge(self, u, v):
self.graph[u].append(v) # end of method!
def printAllPathsUtil(self, u, d, visited, path):
visited[u]= True
# ...
def printAllPaths(self, s, d):
visited = [False] * (self.V)
# ...
self.printAllPathsUtil(s, d, visited, path) # end of method!
现在,您可以创建其实例并对其调用方法:
g = Graph(111)
g.addEdge(4, 5)
g.addEdge(4, 6)
# ...
s = 4
d = 117
# ...
g.printAllPaths(s, d)
但是这个代码不应该出现在任何
Graph
class'方法中 请显示缩进,因为它是在您的代码。您是否真的在addEdge
方法中创建了另一个图形?缩进与代码中的缩进相同,图形不应该在addEdge方法中吗?求你了,我是pythonOk新手谢谢,我会试试这个