Tôi đang viết một hàm get_connected_components
cho một lớp Graph
:Python thành phần kết nối
def get_connected_components(self):
path=[]
for i in self.graph.keys():
q=self.graph[i]
while q:
print(q)
v=q.pop(0)
if not v in path:
path=path+[v]
return path
đồ thị của tôi là:
{0: [(0, 1), (0, 2), (0, 3)], 1: [], 2: [(2, 1)], 3: [(3, 4), (3, 5)], \
4: [(4, 3), (4, 5)], 5: [(5, 3), (5, 4), (5, 7)], 6: [(6, 8)], 7: [], \
8: [(8, 9)], 9: []}
nơi các phím là các nút và các giá trị là các cạnh. chức năng của tôi mang lại cho tôi phần kết nối này:
[(0, 1), (0, 2), (0, 3), (2, 1), (3, 4), (3, 5), (4, 3), (4, 5), (5, 3), \
(5, 4), (5, 7), (6, 8), (8, 9)]
Nhưng tôi sẽ có hai thành phần kết nối khác nhau, như:
[[(0, 1), (0, 2), (0, 3), (2, 1), (3, 4), (3, 5), (4, 3), (4, 5), \
(5, 3), (5, 4), (5, 7)],[(6, 8), (8, 9)]]
Tôi không hiểu nơi tôi đã sai lầm. Có ai giúp tôi không?
Lưu ý rằng đại diện của bạn bao gồm thông tin không cần thiết, ví dụ. trong '3: [(3, 4), (3, 5)]'. Chúng tôi đã biết rằng các cạnh được bắt đầu từ 3! –
Bạn có đề xuất tôi thay đổi các giá trị trong dict và chỉ đặt nút được kết nối và không có cạnh nào không? – fege
BTW thay vì 'cho tôi trong self.graph.keys(): q = self.graph [i]' bạn có thể 'cho (i, q) trong self.graph.iteritems()' – Kos