Lektion 5 Algoritmer Dagens övningar 1. Taframochimplementeraenalgoritmsomräknarut medelgradenförengraf. 2. Taframochimplementeraalgoritmförhittaallahörnsom sitterihop. Övningsfiler ⁃ Gåtillföreläsningssidanpåkurswebben: http://www.ida.liu.se/~729G04/lectures/index.sv.shtml ⁃ Högerklickapåfilernatilllektion5ochsparadem ⁃ Öppnaitexteditorochförberedenipythonattkörademi. Alternativ datastruktur för graf graf={"namn1":["namn_2","namn_3",...,"namn_n"], "namn2":["namn_1","namn_3",...,"namn_m"], ..., "marked":[], "edge_count":ec} ⁃ Engrafärettdictionary. ⁃ Nycklarärsträngarsomärnamnpåhörn. ⁃ Värdettillenhörn-namnsnyckelärenlistamednamnpåhörnsomden ärgrannemed. ⁃ Iettgraf-dictionaryfinnsocksånyckeln"marked"varsvärdeärenlista mednamnpåhörnsomärmarkerade. ⁃ Iettgraf-dictionaryfinnsocksånyckeln"edge_count"varsvärdeärett heltalsominnehållerantalkanterigrafen. Skillnad i representation ⁃ Ingenexplicitstrukturföretthörn,baranamnpåhörn ⁃ Ingaexplicitakanter,barainformationomatthörnsitterihop ochhurmångaimplicitakantersomfinns. Hjälpfunktioner i altgraf.py ⁃ Skapagraf create_graph() ⁃ Läggtillhörntillgraf add_node_to_graph(node,graph) ⁃ Kopplaihoptvåhörn connect_nodes_in_graph(g,node1,node2) ⁃ Hämtaetthörnsgrannar get_node_neighbors(g,node) ⁃ Hämtamarkeradehörniengraf get_marked_nodes_from_graph(graph) ⁃ Markeraetthörn mark_node_in_graph(node,graph) ⁃ Kollaometthörnärmarkeratiengraf is_marked_in_graph(node) ⁃ Avmarkeraallahörn unmark_all_in_graph(graph) Skapa exempelgrafer ⁃ create_example_graph1() ⁃ create_example_graph2() Exempel på pseudokodstil för idag (jmf Strand 2014) Algoritm9.3 In:EngrafGsomanvänderdenkantcentreradeabstrakta datatypen 1.AnvändoperationenVERTEX_COUNT(G)föratttaredapå antalhörnigrafenG.Lagraantaletivariabelnmednamnetvc 2.AnvändoperationenEDGE_COUNT(G)föratttaredapåantal kanterigrafenG.Lagraantaletivariabelnmednamnetec 3.Multipliceraecmed2förattfåsummanavgraderna Övning 1 1. Skrivenalgoritmförenfunktionsomgivetengrafoch definieradehjälpfunktioner,räknarutmedelgradenför grafen. 2. Implementeraalgoritmensomfunktionen get_average_degree_of_graph(graph) Övning 2 1. Skrivenalgoritmförenrekursivfunktionsomgivetetthörn, markerarallahörnsompånågotsättsitterihopmeddetta hörn. 2. Implementeraalgoritmensomfunktionen get_connected_nodes(start_node,graph) Hjälpfunktioner och exempelgrafer ⁃ Skapagraf n2 n10 n1 n9 create_graph() ⁃ Läggtillhörntillgraf add_node_to_graph(node,graph) ⁃ Kopplaihoptvåhörn connect_nodes_in_graph(g,node1,node2) n6 n4 n5 n11 n3 n14 ⁃ Hämtaetthörnsgrannar get_node_neighbors(g,node) ⁃ Hämtamarkeradehörniengraf get_marked_nodes_from_graph(graph) n13 n12 n4 n5 Ex1 n2 n6 n1 ⁃ Markeraetthörn n5 mark_node_in_graph(node,graph) ⁃ Kollaometthörnärmarkeratiengraf is_marked_in_graph(node) ⁃ Avmarkeraallahörn unmark_all_in_graph(graph) n3 n7 Ex2 n8