1 # Dictionary vagy magyarul szótár formában tárolt gráf! 2 # A szótár struktúra lényege, hogy egy azonosító ("szó") és annak jelentése adott. 3 # Pl. az alábbiban: graph[0] azonos a [(1,7), (3, 5)] listával 4 # Gyakorlatilag a "szó" (pl. 0) indexeli a graph szótárt 5 graph = {0: [(1, 7), (3, 5)], 6 1: [(0, 7), (2, 8), (3, 9), (4, 7)], 7 2: [(1, 8), (4, 5)], 8 3: [(0, 5), (1, 9), (4, 15), (5, 6)], 9 4: [(1, 7), (2, 5), (3, 15), (5, 8), (6, 9)], 10 5: [(3, 6), (4, 8), (6, 11)], 11 6: [(4, 9), (5, 11)]} 12 13 # Csúcsmátrix formába írjuk át a szótárt 14 # Célszerű a csúcsokat 0-tól kezdődően megnevezni, a Python indexelése miatt 15 # (Tudjuk, ugye, hogy mindig nullától indulnak az indexek!) 16 # A mátrix most 7x7-es lesz! 17 matrix = [] 18 19 for i in range(len(graph)): 20 # len(graph) most 7, mivel 7 bejegyzés van a szótárban 21 sor = [0] * len(graph) # sor feltöltése 7 nullával 22 for j in range(len(graph[i])): 23 # A szótár aktuális bejegyzésének feldolgozása 24 (p, e) = graph[i][j] 25 # A szótár i. bejegyzésének j. eleme egy számpár 26 sor[p] = e 27 # p a gráf egy pontja, e az él "súlya" - ezért célszerű 28 # a pontokat indexesen megadni (0,1,2...stb) 29 matrix.append(sor) # mátrix egy sora megvan 30 31 print('Csúcsmátrix:') 32 for elem in matrix: 33 print(elem) 34 35 # Élmátrix generálása (súlyokkal) 36 élmátrix = [] # ebben lesz a „végeredmény 37 sor = [] # feldolgozáshoz szükséges segédadat 38 csúcs = set() # halmaz, mert megoldja az ismétlődő elemek problémáját 39 for i in range(len(graph)): 40 csúcs.add(i) # i csúcs elhelyezése a halmazba 41 for elemek in graph[i]: 42 sor.append(i) # i index és egyben a gráf csúcspontja 43 # sor első eleme a kiinduló csúcs 44 if elemek[0] not in csúcs: # még fel nem dolgozott csúcs 45 sor.append(elemek[0]) # sor 2. eleme a végpont 46 sor.append(elemek[1]) # sor 3. harmadik eleme a súly 47 élmátrix.append(sor) 48 49 sor = [] 50 51 52 # élmátrix rendezése súly szerint, csak a balhé kedvéért J 53 def harmadikszerint(elem): 54 return elem[2] 55 56 57 print('Élmátrix:') 58 élmátrix = sorted(élmátrix, key=harmadikszerint) 59 print(élmátrix)