OK, following the discussion earlier I'm going to try and explain a little about graph theory, which I've been studying at college lately. It's pretty relevant to a lot of areas of computing as it is closely related to network theory, and it also forms a large part of the work I'm doing for my PhD. Best of all, the basic ideas behind it are very simple, so it's something everyone can understand...
So, what is a graph?
It is an abstract theoretical structure, which can be defined very simply by taking a set of points (called <i><b>nodes</b></i> or <i><b>vertices</b></i>). You can then join together some of the nodes with lines, which are called <i><b>edges</i></b>. This is a graph. Strictly speaking, no node should be connected to itself, and no two nodes should have more than one edge going between them.
You can draw a graph, and this is how I got onto the subject in the first place on this site: there are infinitely many ways of drawing the same graph, because the abstract idea of a graph tells you nothing about what goes where, merely which nodes are connected (and of course how many nodes there are). This can make it a little difficult to judge what the neatest way of drawing a graph might be, for instance drawing it so that none of the edges cross each other.
A few basic types of graph:
An empty graph En (n should be a subscript but I have no idea how to do such things!): this is just a set of n nodes, without any edges at all
A complete graph Kn: a graph with n nodes where every node is connected to every other node. The graph K5 (and greater) is non-planar; i.e. it cannot be drawn on a flat piece of paper without some edges crossing.
A complete bipartite graph Kn,m: a graph with nodes in two groups - one group of n nodes, and another group of m nodes. The nodes <i>within</i> a group are <b>not</b> connected to each other, but they <i>are</i> connected to all the nodes in the other group.
Question: What's the smallest complete bipartite graph that is non-planar?
You can make things more complicated, by making edges one-way (a directed graph or digraph) or by adding numbers to edges (a network). You can also allow edges to connect more than one node (a hypergraph).
This is only a very brief overview, depending on what people make of this we can always put up more info and discuss further. Thought it might be of some interest as there was some confusion about what a theoretical graph was (as opposed to the graphs you draw at school or in science, usually with an x and y axis, which aren't quite the same thing...). As i said at the beginning, it's also quite a straightforward area to get into, quite useful for computing, but doesn't seem to get taught to many people (the course i'm doing is a 3rd year undergrad maths course!). I'm sure a great lot of people have used some graph/network algorithms without knowing that's what they were (e.g. (minimum) spanning tree, shortest path through a network, travelling salesman problem).
One final question for you (which is pretty difficult to figure out, and even harder to prove - it's way beyond me to prove it!): what's the smallest number of colours you need, if you have a planar graph and want to colour every node so that no node has the same colour as any of its neighbours?
