General Computer Science 320201 GenCS I & II Lecture ... - Kwarc
General Computer Science 320201 GenCS I & II Lecture ... - Kwarc
General Computer Science 320201 GenCS I & II Lecture ... - Kwarc
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
2.2. COMPUTER SCIENCE BY EXAMPLE 13<br />
<br />
Our maze<br />
⎧<br />
⎫<br />
〈a, e〉, 〈e, i〉, 〈i, j〉,<br />
⎪⎨<br />
〈f, j〉, 〈f, g〉, 〈g, h〉, ⎪⎬<br />
<br />
〈d, h〉, 〈g, k〉, 〈a, b〉<br />
⎪⎩<br />
〈m, n〉, 〈n, o〉, 〈b, c〉<br />
〈k, o〉, 〈o, p〉, 〈l, p〉<br />
, a, p<br />
⎪⎭<br />
can be visualized as<br />
Note that the diagram is a visualization (a representation intended for humans to process<br />
visually) of the graph, and not the graph itself.<br />
©: Michael Kohlhase 19<br />
Now that we have a mathematical model for mazes, we can look at the subclass of graphs that<br />
correspond to the mazes that we are after: unique solutions and all rooms are reachable! We will<br />
concentrate on the first requirement now and leave the second one for later.<br />
Unique solutions<br />
Q: What property must the graph have for<br />
the maze to have a solution?<br />
A: A path from a to p.<br />
Q: What property must it have for the maze<br />
to have a unique solution?<br />
A: The graph must be a tree.<br />
Trees are special graphs, which we will now define.<br />
Mazes as trees<br />
Definition 7 Informally, a tree is a graph:<br />
with a unique root node, and<br />
each node having a unique parent.<br />
Definition 8 A spanning tree is a tree that includes all<br />
of the nodes.<br />
Q: Why is it good to have a spanning tree?<br />
A: Trees have no cycles! (needed for uniqueness)<br />
A: Every room is reachable from the root!<br />
So, we know what we are looking for, we can think about a program that would find spanning<br />
trees given a set of nodes in a graph. But since we are still in the process of “thinking about the<br />
problems” we do not want to commit to a concrete program, but think about programs in the<br />
abstract (this gives us license to abstract away from many concrete details of the program and<br />
concentrate on the essentials).<br />
The computer science notion for a program in the abstract is that of an algorithm, which we<br />
©: M<br />
©: M