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