graph algorithms gam 376 robin burke winter 2006
TRANSCRIPT
![Page 1: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/1.jpg)
Graph Algorithms
GAM 376
Robin Burke
Winter 2006
![Page 2: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/2.jpg)
Outline
Graphs Theory Data structures Graph search
Algorithms DFS BFS
Project #1 Soccer
Break Lab
![Page 3: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/3.jpg)
Admin
Homework #3due Monday not today
Careers in TechnologyTomorrow5 – 7 pmMidway Games will be there
![Page 4: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/4.jpg)
Admin
Late policynot spelled out in syllabus10% per day for three days
Meaningtomorrow is the last day to turn in
Homework #230% off though
![Page 5: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/5.jpg)
Grading
Yes, I am way behind in grading
![Page 6: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/6.jpg)
Admin
Final projectfirst build
Same as the exercise from Lab #1but you have to decide what map
you're going to usewhat NPC you're going to create
Deliverablecompiled map
![Page 7: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/7.jpg)
Graph Algorithms
Very important for real world problems: The airport system is a graph. What is the
best flight from one city to another? Class prerequisites can be represented as a
graph. What is a valid course order? Traffic flow can be modeled with a graph.
What are the shortest routes? Traveling Salesman Problem: What is the
best order to visit a list of cities in a graph?
![Page 8: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/8.jpg)
Graph Algorithms in Games
Many problems reduce to graphspath findingtech trees in strategy gamesstate space search
• problem solving• "game trees"
![Page 9: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/9.jpg)
What is a Graph? A graph G = (V,E) consists of a set of vertices V
and a set of edges E. Each edge is a pair (v,w) where v and w are vertices.
If the edges are ordered (indicated with arrows in a picture of a graph), the graph is “directed” and (v,w) != (w,v).
Edges can also have weights associated with them.
Vertex w is “adjacent” to v if and only if (v,w) is an edge in E.
![Page 10: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/10.jpg)
An Example Graph
v1 v2
v3 v4 v5
v6 v7
v1, v2, v3, v4, v5, v6, and v7 are vertices. (v1,v2) is an edge in thegraph and thus v2 is adjacent to v1. The graph is directed.
![Page 11: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/11.jpg)
Definitions
A “path” is a sequence of vertices w1, w2, w3, …, wn such that (wi, wi+1) are edges in the graph.
The “length” of the path is the number of edges (n-1).
A “simple” path is one where all vertices are distinct, except perhaps the first and last.
![Page 12: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/12.jpg)
An Example Graph
v1 v2
v3 v4 v5
v6 v7
The sequence v1, v2, v5, v4, v3, v6 is a path. The length is 5.It is a simple path.
![Page 13: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/13.jpg)
More Definitions
A “cycle” in a directed graph is a path such that the first and last vertices are the same.
A directed graph is “acyclic” if it has no cycles. This is sometimes referred to as a DAG (directed acyclic graph).
The previous graph is a DAG (convince yourself of this!).
![Page 14: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/14.jpg)
A Modified Graph
v1 v2
v3 v4 v5
v6 v7
The sequence v1, v2, v5, v4, v3, v1 is a cycle. We had tomake one change to this graph to achieve this cycle. So, thisgraph is not acyclic.
![Page 15: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/15.jpg)
More Definitions…
An undirected graph is “connected” if there is a path from every vertex to every other vertex. A directed graph with this property is called
“strongly connected”. If the directed graph is not strongly connected, but the underlying undirected graph is connected, then the graph is “weakly connected”.
A “complete” graph is a graph in which there is an edge between every pair of vertices.
The prior graphs have been weakly connected and have not been complete.
![Page 16: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/16.jpg)
Graph Representation
v1 v2
v3 v4 v5
v6 v7 v1v2v3
v4v5v6v7
v1 v2 v3 v4 v5 v6 v7
0 1 1 1 0 0 00 0 0 1 1 0 0
We can use an “adjacencymatrix” representation.
For each edge (u,v) we set A[u][v] to true;else it is false. If there are weights associatedwith the edges, insert those instead.
![Page 17: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/17.jpg)
Representation
The adjacency matrix representation requires O(V2) space. This is fine if the graph is complete, or nearly complete.
But what if it is sparse (has few edges)?
Then we can use an “adjacency list” representation instead. This will require O(V+E) space.
![Page 18: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/18.jpg)
Adjacency List
v1 v2
v3 v4 v5
v6 v7 v1 v2 v4 v3v2 v4 v5v3 v6
v4 v6 v7 v3v5 v4 v7v6v7 v6
We can use an “adjacencylist” representation.
For each vertex we keep a list of adjacent vertices.If there are weights associated with the edges, that information must be stored as well.
![Page 19: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/19.jpg)
Graph search
Problemis there a path from v to w?what is the shortest / best path?
• optimality
what is a plausible path that I can compute quickly?
• bounded rationality
![Page 20: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/20.jpg)
General search algorithm
Start with "frontier" = { (v,v) }
Until frontier is empty remove an edge (n,m) from the frontier set mark n as parent of m mark m as visited if m = w,
• return otherwise
• for each edge <i,j> from m• add (i, j) to the frontier
• if j not previously visited
![Page 21: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/21.jpg)
Note
We don't say how to pick a node to "expand"
We don't find the best path, some path
![Page 22: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/22.jpg)
Depth First Search
Last-in first-out We continue expanding the most
recent edge until we run out of edgesno edges out orall edges point to visited nodes
Then we "backtrack" to the next edge and keep going
![Page 23: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/23.jpg)
DFS
v1 v2
v3 v4 v5
v6 v7
start
target
![Page 24: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/24.jpg)
Characteristics
Can easily get side-tracked into non-optimal paths
Very sensitive to the order in which edges are added
Guaranteed to find a path if one exists Low memory costs
only have to keep track of current path nodes fully explored can be discarded
Complexity Time: O(E) Space: O(1)
![Page 25: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/25.jpg)
Optimal DFS
Really expensive Start with
bestPath = { } bestCost = "frontier" = { <{ }, (v,v)>}
Repeat until frontier is empty remove a pair <P, > from the frontier set if n = w Add w to P If cost of P is less than bestCost
• bestPath = P record n as "visited" add n to the path P for each edge <n,m> from n
• add <P, m> to the frontier• if m not previously visited• or if previous path to m was longer
![Page 26: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/26.jpg)
Iterative Deepening DFS
Add a parameter k Only search for path of lengths <= k Start with k = 1
while solution not found• do DFS to depth k
Sounds wasteful searches repeated over and over but actually not too bad
• more nodes on the frontier finds optimal path less memory than BFS
![Page 27: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/27.jpg)
Buckland's implementation
![Page 28: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/28.jpg)
Breadth-first search
First-in first-out Expand nodes in the order in which
they are addeddon't expand "two steps" awayuntil you've expanded all of the "one
step" nodes
![Page 29: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/29.jpg)
BFS
v1 v2
v3 v4 v5
v6 v7
start
target
![Page 30: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/30.jpg)
Characteristics
Will find shortest path Won't get lost in deep trees Can be memory-intensive
frontier can become very largeespecially if branching factor is high
ComplexityTime: O(E)Space: O(E)
![Page 31: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/31.jpg)
Buckland implementation
![Page 32: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/32.jpg)
What if edges have weight?
If edges have weight then we might want the lowest weight path a path with more nodes might have lower
weight Example
a path around the lava pit has more steps but you have more health at the end compared to the path that goes through the
lava pit We will cover this next week
![Page 33: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/33.jpg)
Next week
More graph funDijkstra's algorithmA*
Scripting / Lua
![Page 34: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/34.jpg)
Simple Soccer
Implementation of a 5-player soccer team
Two state machines"Team state""Player state"
![Page 35: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/35.jpg)
Team state
kickoff everybody go to default position
offense look for opportunities to get a pass upfield
from the player with the ball defense
go to defensive position transition
offense / defense based on possession of ball
![Page 36: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/36.jpg)
Player state
defensechase ball if you're the closest
offensemove toward goal with ball
• pass if possible
without ball, • move to support spot• ask for pass
![Page 37: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/37.jpg)
Steering behaviors
chasing the ball steering to support position goalie has special behavior to get in
blocking position
![Page 38: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/38.jpg)
Demo
![Page 39: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/39.jpg)
SteeringSoccerLab
Not the same as Buckland's Allows multiple team implementations Records the CPU time used by each
AI implementation Don't use Buckland's code
![Page 40: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/40.jpg)
How to allow different opponents? Need students to make their own soccer
teams need to run tournament in which teams
compete don't want to recompile when adding a team
How to make extensible code that doesn't need recompilation?
In particular how can I create an instance if I don't know
the name of the class
![Page 41: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/41.jpg)
AbstractFactory
![Page 42: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/42.jpg)
Registration
How to know which factory object to use? Static instance that registers a name on
instantiation Table associating factories with names Result
dynamic object creation A bit easier in Java using reflection
![Page 43: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/43.jpg)
Tournament rules
Round-robin 3 game matches 5 minutes / match
Scoring Lower scoring team
• get a bonus if they used less CPU time• 20% less CPU = 1 point
Ties go to the most efficient team Degenerate strategies disqualified
![Page 44: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/44.jpg)
Teams
Team 1 Choryan Gilliam Wiemeyer
Team 2 Abero Gantchev McNulty
Team 3 Flaks Hall
Team 4 Chrostowski Hogan Kenley
![Page 45: Graph Algorithms GAM 376 Robin Burke Winter 2006](https://reader036.vdocuments.site/reader036/viewer/2022062423/5697c01c1a28abf838ccfc7c/html5/thumbnails/45.jpg)
Break