0
인접 목록 또는 행렬을 사용하여 그래프를 만들고 꼭지점과 가장자리를 추가하는 함수를 포함해야합니다. 그러나 같은 줄에 다른 오류가 계속 발생합니다. 는 나는 그렇게 표시와 내가 얻으려면 무엇을 그유형 오류 : 목록 색인은 튜플이 아닌 정수 여야합니다.
def getConnection(self):
return self.Edge[()]
이 오류가 발생합니다. 나는
return self.Edge[]
return self.Edge()
및
을 시도했다하지만 난 대신 다른 종류의 오류를 받고 있어요. 여기서 무엇을 바꾸어야합니까? 당신이 목록으로 에지를 정의하기 때문에#Graph for Reference and use in BFS and DFS
graph = {'0': ['2'],
'1': ['3', '0'],
'2': ['3', '4'],
'3': ['2', '4', '5'],
'4': ['5', '6'],
'5': ['6', '7'],
'6': ['7', '8'],
'7': ['8', '9'],
'8': ['9', '0'],
'9': ['0', '5'] }
class Vertex:
def __init__(self, Label, Edge):
self.Label = 0
self.Edge = []
def AddNeighbour(self, neighbour, weight=0):
self.Connection[neighbour] = weight
def __str__(self):
return str(self.Label) + ' connected to: ' + str([i.Label for i in self.Edge])
def getConnection(self):
return self.Edge[()]
def getLabel(self):
return self.Label
class Graph:
def __init__(self):
self.VertexList = {}
self.NumVertices = 0
def AddVertex(self, Label):
self.NumVertices = self.NumVertices + 1
NewVertex = Vertex(Label, None)
self.VertexList[Label] = NewVertex
return NewVertex
def GetVertex(self,n):
if n in self.VertexList:
return self.VertexList[n]
else:
return None
def __contains__(self,n):
return n in self.VertexList
def AddNeighbour(self, neighbour, weight=0):
self.Connection[neighbour] = weight
def AddEdge(self,f,t,cost=0):
if f not in self.VertexList:
NewVertex = self.AddVertex(f)
if t not in self.VertexList:
NewVertex = self.AddVertex(t)
def GetVertices(self):
return self.VertexList.Label()
def __iter__(self):
return iter(self.VertexList.values())
g = Graph()
for i in range(10):
g.AddVertex(i)
g.VertexList
g.AddEdge(0,2,0)
g.AddEdge(0,3,0)
g.AddEdge(1,3,0)
g.AddEdge(1,0,0)
g.AddEdge(2,3,0)
g.AddEdge(2,4,0)
g.AddEdge(3,2,0)
g.AddEdge(3,4,0)
g.AddEdge(3,5,0)
g.AddEdge(4,5,0)
g.AddEdge(4,6,0)
g.AddEdge(5,6,0)
g.AddEdge(5,7,0)
g.AddEdge(6,7,0)
g.AddEdge(6,8,0)
g.AddEdge(7,8,0)
g.AddEdge(7,9,0)
g.AddEdge(8,9,0)
g.AddEdge(8,0,0)
g.AddEdge(9,0,0)
g.AddEdge(9,5,0)
for v in g:
for w in v.getConnection():
print("(%s , %s)" % (v.getLabel(), w.getLabel()))
"return self.dge"를 원한다고 생각합니다. – jasonharper
[()] (으)로 전화하여 목록에서 되돌아 가려고 했습니까? 새 중복 목록을 만들려면 list (self.Edge)를 반환하거나 self.Edge [:]를 반환합니다. 수정하지 않으므로 jasonharper가 더 좋습니다. 관련없는 노트 - Graph.AddEdge는 실제로 가장자리를 추가하지 않습니다. –
감사합니다. 그리고 이것이 그것이이 그래프의 유일한 문제는 아니라는 것을 압니다. 그것은 제가 지금 당장 붙어있는 것입니다. 나는 전에 이것을 한 번도 해 본 적이 없기 때문에 조금 어려움을 겪고있다. 실제로 노드를 추가하려면 Graph.AddEdge를 얻으려면 어떻게해야하는지 알고 있습니까? 나는 내가 사고로 필요로하는 선을 지웠고 이제는 내 삶을 기억할 수 없다. –