Lekcja – Zapis grafu za pomocą macierzy
V = ['Princess', 'Dwarf1', 'Dwarf2', 'King', 'Queen', 'Hunter'] E = [ ['Princess', 'Dwarf1'], ['Princess', 'Dwarf2'], ['Dwarf1', 'Dwarf2'], ['Princess', 'King'], ['Princess', 'Queen'], ['Princess', 'Hunter'], ['King', 'Queen'], ['King', 'Hunter'], ['Queen','Hunter'] ] matrix = [ [0, 1, 1, 1, 1, 1], [1, 0, 1, 0, 0, 0], [1, 1, 0, 0, 0, 0], [1, 0, 0, 0, 1, 1], [1, 0, 0, 1, 0, 1], [1, 0, 0, 1, 1, 0] ] def who_knows_person(person, V, matix): friends = [] idx = V.index(person) for i in range(len(V)): if matrix[idx][i] == 1: friends.append(V[i]) return friends print(who_knows_person('Princess', V, matrix)) print('-'*30) V = [1, 2, 3, 4] E = [(1,2), (1,3),(2,4),(3,4)] matrix = [ [0, 1, 1, 0], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 0] ] # show nodes reachable from node start start = 1 for i in range(len(V)): if matrix[V.index(start)][i] == 1: print(V[i]) print([V[i] for i in range(len(V)) if matrix[V.index(start)][i] == 1])
Lab
V = ["mouse", "keyboard", "computer", "monitor","printer", "scanner"] E = [ (0,2), (1,2), (2,3), (2,4), (5,2)] def translate_to_matrix(V, E): # create empty matrix matrix = [] for row in range(len(V)): matrix.append([0 for _ in range(len(V))]) for i1, i2 in E: matrix[i1][i2] = 1 return matrix my_matrix = translate_to_matrix(V, E) for row in my_matrix: print(row) # second option: V = ["mouse", "keyboard", "computer", "monitor", "printer"] E = [ {0,2}, {1,2}, {2,3}, {2,4}] def translate_to_matrix(V, E): matrix = [] for v1 in range(len(V)): matrix.append( [ 1 if {v1, v2} in E else 0 for v2 in range(len(V)) ] ) return matrix my_matrix = translate_to_matrix(V, E) for row in my_matrix: print(row)