CS ¡10: ¡ Problem ¡solving ¡via ¡Object ¡Oriented ¡ Programming ¡ Winter ¡2017 ¡ ¡ Tim ¡Pierson ¡ 260 ¡(255) ¡Sudikoff ¡ Day ¡15 ¡– ¡RelaHonships ¡
Agenda ¡ 1. Graph ¡interface ¡ 2. Four ¡common ¡representaHons ¡ 3. ImplementaHon ¡ 2 ¡
Graphs ¡are ¡a ¡useful ¡way ¡to ¡represent ¡ different ¡types ¡of ¡relaHonships ¡ My ¡coworkers ¡ The ¡Metropolitan ¡ Dartmouth ¡ Museum ¡of ¡Art ¡ Lila ¡ Dave ¡ Leslie ¡ Ron ¡ Tim ¡ Reza ¡ Nick ¡ Dan ¡ Ellen ¡ Abby ¡ Kirby ¡ Start ¡up ¡ 3 ¡
Graphs ¡are ¡a ¡useful ¡way ¡to ¡represent ¡ different ¡types ¡of ¡relaHonships ¡ My ¡coworkers ¡ The ¡Metropolitan ¡ Dartmouth ¡ Museum ¡of ¡Art ¡ Lila ¡ Dave ¡ Leslie ¡ Ron ¡ Tim ¡ Reza ¡ Nick ¡ • I ¡know ¡everyone ¡ Dan ¡ Ellen ¡ Abby ¡ Kirby ¡ Start ¡up ¡ 4 ¡
Graphs ¡are ¡a ¡useful ¡way ¡to ¡represent ¡ different ¡types ¡of ¡relaHonships ¡ My ¡coworkers ¡ The ¡Metropolitan ¡ Dartmouth ¡ Museum ¡of ¡Art ¡ Lila ¡ Dave ¡ Leslie ¡ Ron ¡ Tim ¡ Reza ¡ Nick ¡ • I ¡know ¡everyone ¡ • Reza ¡and ¡Dan ¡do ¡ Dan ¡ not ¡know ¡each ¡ Ellen ¡ other ¡directly ¡ Abby ¡ Kirby ¡ Start ¡up ¡ 5 ¡
Graphs ¡are ¡a ¡useful ¡way ¡to ¡represent ¡ ¡ different ¡types ¡of ¡relaHonships ¡ My ¡coworkers ¡ The ¡Metropolitan ¡ Dartmouth ¡ Museum ¡of ¡Art ¡ Lila ¡ Dave ¡ Leslie ¡ Ron ¡ Tim ¡ Reza ¡ Nick ¡ • I ¡know ¡everyone ¡ • Reza ¡and ¡Dan ¡do ¡ Dan ¡ not ¡know ¡each ¡ Ellen ¡ other ¡directly ¡ • But ¡I ¡could ¡ Abby ¡ Kirby ¡ introduce ¡them ¡ Start ¡up ¡ (there ¡is ¡a ¡ path ) ¡ 6 ¡
Graphs ¡are ¡a ¡useful ¡way ¡to ¡represent ¡ ¡ different ¡types ¡of ¡relaHonships ¡ My ¡coworkers ¡ The ¡Metropolitan ¡ Dartmouth ¡ Museum ¡of ¡Art ¡ Lila ¡ Dave ¡ Leslie ¡ Ron ¡ Tim ¡ Reza ¡ Nick ¡ • I ¡know ¡everyone ¡ • Nodes ¡are ¡said ¡ • Reza ¡and ¡Dan ¡do ¡ to ¡be ¡ reachable ¡ Dan ¡ not ¡know ¡each ¡ Ellen ¡ if ¡there ¡is ¡a ¡path ¡ other ¡directly ¡ between ¡then ¡ • But ¡I ¡could ¡ Abby ¡ Kirby ¡ • There ¡may ¡be ¡ introduce ¡them ¡ nodes ¡that ¡are ¡ Start ¡up ¡ (there ¡is ¡a ¡ path ) ¡ unreachable ¡
Graphs ¡are ¡a ¡useful ¡way ¡to ¡represent ¡ ¡ different ¡types ¡of ¡relaHonships ¡ My ¡coworkers ¡ The ¡Metropolitan ¡ Dartmouth ¡ Museum ¡of ¡Art ¡ Kevin ¡Bacon ¡ Lila ¡ Dave ¡ Leslie ¡ Ron ¡ Tim ¡ Reza ¡ Nick ¡ • I ¡know ¡everyone ¡ • Nodes ¡are ¡said ¡ • Reza ¡and ¡Dan ¡do ¡ to ¡be ¡ reachable ¡ Dan ¡ not ¡know ¡each ¡ Ellen ¡ if ¡there ¡is ¡a ¡path ¡ other ¡directly ¡ between ¡then ¡ • But ¡I ¡could ¡ Abby ¡ Kirby ¡ • There ¡may ¡be ¡ introduce ¡them ¡ nodes ¡that ¡are ¡ Start ¡up ¡ (there ¡is ¡a ¡ path ) ¡ unreachable ¡ Image: ¡nbc.com ¡
Two ¡types ¡of ¡relaHonships: ¡Undirected ¡and ¡ directed ¡ Undirected ¡(Symmetrical) ¡ Directed ¡(Asymmetrical) ¡ If ¡Alice ¡is ¡friends ¡with ¡Bob, ¡ If ¡Alice ¡follows ¡Bob, ¡then ¡ then ¡Bob ¡is ¡friends ¡with ¡ Bob ¡does ¡not ¡necessarily ¡ Alice ¡ follow ¡Alice ¡ 9 ¡ Images: ¡Facebook, ¡Twi]er, ¡1designshop.com ¡
Graphs ¡represent ¡directed ¡or ¡undirected ¡ relaHonships ¡with ¡nodes ¡and ¡edges ¡ Graphs ¡ Undirected ¡edges ¡ • Connect ¡objects ¡in ¡ both ¡direcHons ¡ Undirected ¡graph ¡ • “Two ¡way ¡street” ¡ Only ¡undirected ¡edges ¡ 0 ¡ 1 ¡ Directed ¡graph ¡ 2 ¡ Only ¡directed ¡edges ¡ ¡ Mixed ¡graph ¡ ¡ 4 ¡ 3 ¡ Has ¡both ¡directed ¡and ¡ Directed ¡edges ¡ undirected ¡edges ¡ • Connect ¡objects ¡in ¡a ¡ Nodes ¡(verDces) ¡ single ¡direcHons ¡ • Represent ¡objects ¡ • “One ¡way ¡street” ¡ • Could ¡be ¡a ¡person ¡or ¡ ¡ city ¡or ¡computer ¡or ¡ 10 ¡ intersecHon ¡of ¡roads… ¡
Both ¡nodes ¡and ¡edges ¡can ¡hold ¡ informaHon ¡about ¡the ¡relaHonship ¡ Graphs ¡ Nodes ¡ • Represent ¡an ¡object ¡ • Can ¡be ¡as ¡simple ¡as ¡a ¡String ¡ ¡ • Could ¡be ¡more ¡complex ¡like ¡a ¡ 0 ¡ 1 ¡ Person ¡object ¡ 2 ¡ Edges ¡ • Can ¡hold ¡informaHon ¡about ¡ relaHonship ¡ 4 ¡ 3 ¡ • Distance ¡between ¡ciHes ¡ • Capacity ¡of ¡a ¡pipe ¡ • Label ¡of ¡relaHonship ¡type ¡ (“follower”, ¡“friend”, ¡“co-‑ worker”) ¡ 11 ¡
Graph ¡ADT ¡defines ¡several ¡useful ¡methods ¡ Graph.java ¡ Graph ¡methods ¡ outDegree/inDegree Count ¡of ¡edges ¡out ¡of ¡or ¡into ¡a ¡node ¡ outNeighbors/inNeighbors Other ¡nodes ¡connected ¡from/to ¡a ¡node ¡ 0 ¡ 1 ¡ hasEdge True ¡if ¡one ¡node ¡connected ¡to ¡another ¡ 2 ¡ getLabel Return ¡label ¡on ¡edge ¡from ¡one ¡node ¡to ¡ another ¡ insertVertex 4 ¡ 3 ¡ Add ¡node ¡to ¡graph ¡ insertDirected/Undirected Add ¡edge ¡to ¡graph ¡between ¡two ¡nodes ¡ removeVertex/Directed/Undirected Remove ¡node ¡or ¡edge ¡ 12 ¡
We ¡can ¡use ¡Graph ¡ADT ¡methods ¡to ¡answer ¡ interesHng ¡quesHons ¡ ¡ The ¡Metropolitan ¡ Dartmouth ¡ QuesDons ¡we ¡can ¡answer ¡ Museum ¡of ¡Art ¡ • Who ¡is ¡the ¡most ¡connected? ¡ Lila ¡ Dave ¡ (most ¡in ¡edges) ¡ Leslie ¡ Ron ¡ • Who ¡are ¡mutual ¡acquaintances ¡ Tim ¡ (“cliques” ¡where ¡all ¡nodes ¡have ¡ Reza ¡ Nick ¡ edges ¡to ¡each ¡other) ¡ • Who ¡is ¡a ¡friend-‑of-‑a-‑friend ¡but ¡ is ¡not ¡yet ¡a ¡friend? ¡(breadth-‑ Dan ¡ Ellen ¡ first ¡search, ¡next ¡class) ¡ Abby ¡ Kirby ¡ Start ¡up ¡ 13 ¡ 13 ¡
We ¡can ¡use ¡Graph ¡ADT ¡methods ¡to ¡answer ¡ interesHng ¡quesHons ¡ ¡ RelaDonshipTest.java ¡ • Undirected ¡edges ¡implemented ¡as ¡a ¡direcHonal ¡edge ¡in ¡both ¡ direcHons ¡ • Run ¡to ¡breakpoint ¡aher ¡building ¡graph ¡ ¡ 14 ¡
Agenda ¡ 1. Graph ¡interface ¡ 2. Four ¡common ¡representaHons ¡ 3. ImplementaHon ¡ 15 ¡
Edge ¡Lists ¡create ¡an ¡unordered ¡list ¡of ¡ vertex ¡pairs ¡where ¡each ¡entry ¡is ¡an ¡edge ¡ ¡ 1. ¡Edge ¡List ¡ { {0,1}, {0,4}, {1,2}, {1,3}, {1,4}, {2,3}, {3,4} } ¡ 0 ¡ 1 ¡ Notes: ¡ Number ¡nodes ¡0..n-‑1 ¡ • Store ¡node ¡ i ¡in ¡array ¡at ¡index ¡ i 2 ¡ • Edge ¡List ¡stores ¡pairs ¡of ¡indexes ¡that ¡ • reference ¡nodes ¡in ¡array ¡ Each ¡Edge ¡List ¡entry ¡represents ¡an ¡edge ¡ • 4 ¡ 3 ¡ between ¡two ¡nodes ¡ Insert ¡fast, ¡just ¡add ¡to ¡list ¡ • Assume: ¡ Everything ¡else ¡slow ¡ • n ¡nodes ¡(here ¡5) ¡ Example: ¡ removeVertex ¡is ¡O(m), ¡have ¡to ¡ • m ¡edges ¡(here ¡7) ¡ remove ¡all ¡edges ¡to/from ¡node, ¡so ¡search ¡ all ¡edges ¡leading ¡to ¡or ¡from ¡node ¡ 16 ¡
Adjacency ¡Lists ¡store ¡adjacent ¡nodes ¡in ¡a ¡ list; ¡gives ¡improved ¡performance ¡ 2. ¡Adjacency ¡List ¡ ¡ ¡ 0 ¡ 1 ¡ ¡ ¡ 2 ¡ ¡ Notes: ¡ Store ¡linked ¡list ¡of ¡nodes ¡in ¡or ¡out ¡of ¡ • 4 ¡ 3 ¡ each ¡vertex ¡(same ¡if ¡undirected) ¡ Might ¡keep ¡two ¡lists, ¡one ¡for ¡in ¡ • neighbors ¡and ¡one ¡for ¡out ¡neighbors ¡ Assume: ¡ Faster ¡to ¡get ¡neighbors ¡than ¡Edge ¡ • n ¡nodes ¡(here ¡5) ¡ List, ¡just ¡iterate ¡in ¡O(degree(v)) ¡vs. ¡ m ¡edges ¡(here ¡7) ¡ O(m) ¡ 17 ¡
Recommend
More recommend