## Graphs: A Partially Uncharted Territory

One problem with trying to gain an understanding of graphs is the
mathematical foundation apparently required. While a really deep knowledge of
graph theory does require long study, you *can* dip into this area. To do
this, the amount of background needed is not so large.

Armed with some simple concepts, any programmer can start to use graph-processing algorithms.

In this article, I provide an introduction to the area of graphs with some simple Java code. However, it’s important not to think that graphs are very simple! Although a full understanding of the algorithmic complexities of graphs could take years to acquire, for most of us a detailed understanding isn’t necessary.

The nice thing about graphs is the way they can be used to model what are essentially infinitely data elements. A network can grow without bounds, so it’s difficult to model this on machines with finite resources.

Graph data structures provide a means of modelling such vast entities as national maps, large telecommunications networks, and so on. Once such entities have been modelled, it’s then possible to analyze them by using algorithms such as least cost routing.

It might come as a surprise to learn that some problems in graph theory remain unsolved to this day. (For more on this, reference [1] is an excellent source.)

So graph theory can be seen as a very fertile area of investigation, and much academic research is aimed at solving key problems.

Let’s now get some basics out of the way—and then we’ll look at some applications of graph processing algorithms.

Graph theory is a vast area of computing with an impressive array of specialist domains and algorithms. Applications of graph theory include scheduling, maps, networks, program structure, and so on.