Skip to main content
Logo image

Problem Solving with Algorithms and Data Structures using Java: The Interactive Edition

Section 7.2 Vocabulary and Definitions

Now that we have looked at an graph, we will more formally define a graph and its components. We already know some of these terms from our discussion of trees.
A vertex (also called a node) is a fundamental part of a graph. It can have a name, which we will call the key. A vertex may also have additional information. We will call this additional information the value or the payload.
An edge (also called an arc) is another fundamental part of a graph. An edge connects two vertices to show that there is a relationship between them. Edges may be one-way or two-way. If the edges in a graph are all one-way, we say that the graph is a directed graph, or a digraph. The class prerequisites graph shown in Figure 7.1.1 is a digraph since you must take some classes before others.
Edges may be weighted to show that there is a cost to go from one vertex to another, which we call edge cost. For example, in a graph of roads that connect one city to another, the weight on the edge might represent the distance between the two cities.
With those definitions in hand, we can formally define a graph. A graph can be represented by \(G\) where \(G =(V,E)\text{.}\) For the graph \(G\text{,}\) \(V\) is a set of vertices and \(E\) is a set of edges. Each edge is a tuple \((v, w)\) where \(v, w \in V\text{.}\) We can add a third component to the edge tuple to represent a weight. A subgraph \(s\) is a set of edges \(e\) and vertices \(v\) such that \(e \subset E\) and \(v \subset V\text{.}\)
Figure 7.2.1 shows another example of a simple weighted digraph. Formally we can represent this graph as the set of six vertices:
\begin{equation*} V = \left\{ v_0, v_1, v_2, v_3, v_4, v_5 \right\} \end{equation*}
and the set of nine edges:
\begin{equation*} E = \left\{ \begin{array}{l}(v_0, v_1, 5), (v_1, v_2, 4), (v_2, v_3, 9), \\ (v_3, v_4, 7), (v_4, v_0, 1), (v_0, v_5, 2), \\ (v_5, v_4, 8), (v_3, v_5, 3), (v_5, v_2, 1) \end{array} \right\} \end{equation*}
Figure 7.2.1. A Simple Example of a Directed Graph
The example graph in Figure 7.2.1 helps illustrate two other key graph terms:
A path in a graph is a sequence of vertices that are connected by edges. Formally we would define a path as \(w_1, w_2, ..., w_n\) such that \((w_i, w_{i+1}) \in E\) for all \(1 \le i \le n-1\text{.}\) The unweighted path length is the number of edges in the path, specifically \(n-1\text{.}\) The weighted path length is the sum of the weights of all the edges in the path. For example in Figure 7.2.1 the path from \(v_3\) to \(v_1\) is the sequence of vertices \((v_3, v_4, v_0, v_1)\text{.}\) The edges are \(\left\{(v_3, v_4, 7), (v_4, v_0, 1), (v_0, v_1, 5) \right\}\text{.}\)
A cycle in a directed graph is a path that starts and ends at the same vertex. For example, in Figure 7.2.1 the path \((v_5, v_2, v_3, v_5)\) is a cycle. A graph with no cycles is called an acyclic graph. A directed graph with no cycles is called a directed acyclic graph or a DAG. We will see that we can solve several important problems if the problem can be represented as a DAG.
You have attempted of activities on this page.