Title: Introduction to Graph
1Introduction to Graph theory
- Why do we care about graph theory in testing and
quality analysis? - The flow (both control and data) of a design,
within a program or among programs may be
depicted with a graphical representation. - Graph gives us the tool to formally study these
graphical representations of flow and design test
cases from the flow.
2What is a graph ?
- A branch of topologyfocus on connections
- (undirected) Graphs
- nodes, edges, matrices
- degree of a node
- Paths
- Components
- Directed graphs
- nodes, edges
- indegree, outdegree
- paths and semi-paths
- n-connectedness
- cyclomatic number
- strong and weak components
- Program Graphs
3What is a graph ?
n1
e1
e2
n7
n3
e4
n2
n5
e3
e5
n4
n6
A graph, G V, E , is composed of
i) a set of nodes, N, and ii) a set of
edges, E, which connects the nodes.
For the above example, V n1, n2, n3, n4, n5,
n6, n7 and
E e1, e2, e3, e4, e5
4Degree of a node
- Note that in the previous graph, not every node
is immediately connected to another node and
some node is immediately connected to more than
one other node. - For example
- N7 is not connected to any other node
- N3 is connected to three other nodes n1, n4 and
n5. - Formally, the degree of a node x, nx, is
defined as the number of edges, es, that have
node nx as the immediate end point. - This is the same as the number of other nodes
that nx is immediately connected to - Degree (n7) 0
- Degree (n3) 3
For clarity, the definition uses edges, rather
than immediately connect nodes.
5Degree of a Node
deg(n1) 2deg(n2) 2deg(n3) 1deg(n4)
3deg(n5) 1deg(n6) 1deg(n7) 0
6Draw this on the borad!
n1
e1
e2
n7
n3
e4
n2
n5
e3
e5
n4
n6
A graph, G V, E , is composed of
i) a set of nodes, N, and ii) a set of
edges, E, which connects the nodes.
For the above example, V n1, n2, n3, n4, n5,
n6, n7 and
E e1, e2, e3, e4, e5
7Using Incidence matrix to represent graph
An incidence matrix of a graph composed of J
nodes and K edges is a J x K cross-product
relation, where the rows are the nodes and the
columns are the edges. The relation, in this
case, is immediately connected.
e1
e2
e3
e4
e5
n1
1
1
n2
1
n3
1
1
1
For this example, the incidence matrix
represents a 7 x 5 cross-product relation. The 1
in a cell, (x,y) represents that node, nx, is the
end point of edge, ey. The empty cells may be
filled with 0s. 1)The sum of 1s for any row,
which represents a node, is the degree of that
node. - e.g. sum of 1s for node , n5, is
2 therefore degree(n5) 2
2)Each column shows the edge, ex, and the 1s
in that column shows the nodes that edge, ex,
connects (note each column always adds up to
2.)
n4
1
n5
1
1
n6
1
n7
8Sample Incidence Matrix(What must be true about
columns in an incidence matrix?)
e1 e2 e3 e4 e5
n1 1 1 0 0 0
n2 1 0 0 1 0
n3 0 0 1 0 0
n4 0 1 1 0 1
n5 0 0 0 1 0
n6 0 0 0 0 1
n7 0 0 0 0 0
9Using Adjacency matrix to represent graph
An adjacency matrix of a graph composed of Z
number of nodes is a Z x Z relation where the
rows are nodes and the columns are also
nodes. Again the relation is immediately
connected.
n1
n2
n3
n4
n5
n6
n7
n1
1
1
n2
1
n3
1
1
1
For this example, the adjacency matrix represents
a 7 x 7 cross-product relation. The 1 in a cell,
(x,y) represents that node, nx, is immediately
connected to another node, ny. The empty cells
may be filled with 0s. 1)The sum of 1s for
any row or any column is the degree of that
node. - e.g. sum of 1s for node , n3, is
3 thus degree(n3) 3 2)Note
that the matrix is symmetric across the diagonal.
n4
1
n5
1
1
n6
1
n7
10Sample Adjacency Matrix
n1 n2 n3 n4 n5 n6 n7
n1 0 1 0 1 0 0 0
n2 1 0 0 0 1 0 0
n3 0 0 0 1 0 0 0
n4 1 0 1 0 0 1 0
n5 0 1 0 0 0 0 0
n6 0 0 0 1 0 0 0
n7 0 0 0 0 0 0 0
11Path
- Note that we used the term, immediately
connected for degree of a node. - A path in a graph is a sequence of immediately
connected nodes e.g. nj, -- - , njz in the
graph where nj is immediately connected to nj1,
and node nj1 is immediately connected to nj2,
and so on to node njz. - A path in a graph may also be defined as a
sequence of edges, such that for any pair of
edges, ei and ej, in the sequence, the edges
share a common node.
12Paths
n1
e1
e2
n7
n3
e4
n2
n5
e3
e5
n4
n6
There are several paths in the example graph.
node sequence to depict a path
edge sequence to depict a path Path1
n2, n1, n3, n5
e1, e2, e4 Path2 n1, n3, n4
e2, e3
You may use either approach I may mix and use
both
13Some Paths
- path between
- n1 and n5 n1, n2, n5 e1, e4
- n6 and n5 n6, n4, n1, n2, n5 e5, e2, e1, e4
- n3 and n2 n3, n4, n1, n2 e3, e2, e1
14Connected nodes (Connectedness)
- Earlier two nodes are said to be immediately
connected if there is an edge that connect the
two nodes. The degree of a node was determined by
the number of its immediately connected nodes. - Now a more general notion of connectedness of two
nodes may be given. - Node nx is connected to node ny if there is a
path from nx to ny
15Properties of Connectedness
- Connected nodes on a path have some interesting
relational properties - It is reflexive because every node is connected
to itself and thus is on the same path. - It is symmetric because nodes ni and nj on a path
implies that nodes nj and ni are also on the same
path. - It is transitive for nodes ni and nj on a path
and nodes nj and nk on the same path implies that
ni and nk are on the same path also.
Note This relation of connected satisfies the
definition of equivalence relation.
16Component and condensation graph
- A component of a graph is defined as the maximal
set of connected nodes. - From our graph example
- n1, n2, n3, n4, n5, n6 form a component
- n7 also forms a component
- A condensation graph is formed by replacing each
component in the original graph by a condensed
single node. There are no edges. - Condensation graph of a graph gives us a view of
the complexity through the number of components.
17Condensed Graph
n1
e1
e2
n7
n3
e4
n2
n5
e3
e5
n4
n6
N1
N2
From design/coding/testing perspective, this says
we have two major chunks or components that we
need to worry about.
18Cyclomatic Number of a Graph
- The cyclomatic number of a graph G is given by
V(G) e n p, where - e is the number of edges in G
- n is the number of nodes in G
- p is the number of components in G
- Cyclomatic complexity pertains to both
ordinary and directed graphs (next topic). - The graph must be strongly connected.
- not very useful on our running example because
it is not strongly connected. We will see this
part in the future chapters.
19Cyclomatic Complexity Example
V(G) e n p 5 7 2 0
20Directed Graph
n1
e1
e2
n7
n3
e4
n2
n5
e3
e5
n4
n6
A directed graph, DG V, E , is composed of
i) a set of nodes, V, and ii)
a set of edges, E, which connects the nodes in
order (the set of edges have
directions)
For example e1 does not only connect nodes n2
and n1, but shows that the order is n1 to
n2. Thus e1 may viewed as an ordered tuple,
ltn1, n2gt, which is different from ltn2, n1gt.
However, (n1, n2) is an unordered pair.
21Directed Graph (another example)
V n1, n2, n3, n4, n5, n6, n7E e1, e2, e3,
e4, e5 ltn1, n2gt, ltn1, n4gt, ltn3, n4gt, ltn2,
n5gt, ltn4, n6gt
22Degrees of Directed Graph
- With directed graph, one can utilize the
directional concept. - e.g. the flow of a program, the control flow in
imperative programming language, can be
represented by directed graph. - Each edge not only connects nodes but shows a
direction (like a vector). - For each node, n, in the graph, there may be
defined - Indegree (n) the number of distinct edges
immediately directed in and towards n. - Outdegree (n) number of distinct edges
immediately directed out and away from n.
Note that for any node, n degree (n)
indegree (n) outdegree (n)
23Indegrees and Outdegrees
indeg(n1) 0 outdeg(n1) 2indeg(n2) 1
outdeg(n2) 1indeg(n3) 0 outdeg(n3)
1indeg(n4) 2 outdeg(n4) 1indeg(n5) 1
outdeg(n5) 0indeg(n6) 1 outdeg(n6)
0indeg(n7) 0 outdeg(n7) 0
24Some types of node for directed graph
- Source node is a node with indegree 0.
- Sink node is a node with outdegree 0.
- Transfer node is node with indegree ? 0 and
outdegree ? 0.
n1
n4 is a source node. n1 and n2 are transfer
nodes. n3 is a sink node.
n2
n4
n3
25Adjacency Matrix for Directed Graph
to nodes
n1
n2
n3
n4
n1
1
n2
1
from nodes
n1
n3
n4
1
n2
n4
1) There is a directed edge from n4 to n1. Thus
there is a 1 in cell (4,1). 2) There is a 1 in
cell (1,2) to indicate that there is a directed
edge from n1 to n2. 3) And finally, the 1 in
cell (2,3) represents the directed edge from n2
to n3
n3
26Path and semi-path
- With directed graph, the notion of a path is not
just connection, but there is a directional
connection. - 1. A directed path is a sequence of edges such
that for any adjacent pair of edges, e1 and e2,
the terminal node for e1 is the starting node for
e2. - 2. A cycle is a directed path that begins and
ends at the same node - 3. A chain is a sequence of nodes in which every
interior node has indegree outdegree 1 - 4. A directed semi-path is a sequence of edges
such that, for at least one adjacent pair of
edges, ei and ej, in the sequence, the initial
node of the first edge is the same initial node
of the second edge or the terminating node of the
first edge is the same as the terminating node of
the second edge.
27Path, cycle, and semi-path
- There is a directed path from n1 to n3.
- There is cycle among n1, n2, and n4.
- There is a directed semi-path between n3 and n4
n1
n2
n4
n3
Note that we linked n2 to n4 to create a cycle
28Directed Graph (new example)
V n1, n2, n3, n4, n5, n6, n7E e1, e2, e3,
e4, e5 (n1, n2), (n1, n4), (n3, n4),
(n2, n5), (n4, n6) There is a path from n1
to n6, and there are semipaths between nodes n1
and n3, n2 and n4, and between nodes n5 and n6.
29Reachability with Adjacent Matrix Operations
- Adjacent matrix for a directed graph indicates
the directional connection of the nodes, not a
two way connection. Note that an edge that
connects nodes, nx and ny does not mean it
connects ny and nx in the reverse way. So for
directed graph the connect operation is
non-symmetric. - We can use matrix operation on Adjacent matrix of
the directed graph to view the paths in the
directed graph.
30An example of operating on Adjacent matrixfor
directed graph
n1
n2
n3
n4
n1
1
A1
1
n2
n1
n3
n4
1
n2
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0
0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0
n4
0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0
n3
A2
X
Note that A1 gives connections length 1, and A2
gives the connections of length 2 in the
directed graph.
31More on Adjacent Matrix operation of
0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
A3
X
X
A3 shows only one path, from n4 to n3, that is
length 3 in the directed graph
0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
X
X
A4
X
A4 shows that there is no length 4 path in the
directed graph
32Reachability of directed graph using Adjacent
matrices
- - Assuming that every node can reach itself, we
will - not indicate the reachability of a node to
itself. - Reachability, R, of a directed graph may be
derived from the - adjacency matrix, A, of that directed graph as
follows - R A1 A2 - - - - Ak, where Ak is
non-zero, but Ak1 is zero
n1
A1 A2 A3
R
1
2
3
4
n2
0 1 1 0 0 0 1 0 0 0 0 0 1 1 1 0
1
0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
n4
2
R
n3
3
4
If you were interested in a variable or a
constant that is defined in one node and where it
could possibly be used ---- this may help
33Reachability Matrix
n1 n2 n3 n4 n5 n6 n7
n1 1 1 0 1 1 1 0
n2 0 1 0 0 1 0 0
n3 0 0 1 1 0 1 0
n4 0 0 0 1 0 1 0
n5 0 0 0 0 1 0 0
n6 0 0 0 0 0 1 0
n7 0 0 0 0 0 0 1
34Compute A2
n1 n2 n3 n4 n5 n6 n7
n1 0 1 0 1 0 0 0
n2 0 0 0 0 1 0 0
n3 0 0 0 1 0 0 0
n4 0 0 0 0 0 1 0
n5 0 0 0 0 0 0 0
n6 0 0 0 0 0 0 0
n7 0 0 0 0 0 0 0
n1 n2 n3 n4 n5 n6 n7
n1 0 1 0 1 0 0 0
n2 0 0 0 0 1 0 0
n3 0 0 0 1 0 0 0
n4 0 0 0 0 0 1 0
n5 0 0 0 0 0 0 0
n6 0 0 0 0 0 0 0
n7 0 0 0 0 0 0 0
n1 n2 n3 n4 n5 n6 n7
n1
n2
n3
n4
n5
n6
n7
35n-Connectedness
- Nodes nj and nk in a directed graph are
- 0-connected iff no path (or semipath) exists
between nj and nk - 1-connected iff a semi-path but no path exists
between nj and nk - 2-connected iff a path exists from nj and nk
- 3-connected iff a path goes from nj to nk and a
path goes from nk to nj - No other degrees of n-connectedness exist
- A new edge, e6, is added to our continuing
example. - n-connectedness has very useful expressive
power.
36Directed Graph (third version)
37Directed Graph (third version)
Find examples of a chain, a cycle, a set of
3-connected nodes
38Strong Components of a Directed Graph
- A strong component of a directed graph is a
maximal set of 3-connected nodes. - Strong components...
- identify loops and isolated nodes.
- lead to another form of condensation graph
- support an excellent view of testing programs
with loops
39Directed Graph (third version)
Strong components S1 n3, n4, n6, S2 n7
40Condensation Graph of a Directed Graph
- Given a directed graph D (V, E), its
condensation graph is formed by replacing
strongly connected nodes by their corresponding
strong components. - A condensation graph of a directed graph...
- contains no loops, and is therefore
- a Directed Acyclic Graph (DAG)
- support an excellent view of testing programs
with loops
41Condensation Graph of Directed Graph (third
version)
Strong components S1 n3, n4, n6, S2 n7
42Program Graphs
- The program graph of a program written in an
imperative programming language is a directed
graph in which nodes are either entire statements
or statement fragments. There is an edge from
node i to node j if and only if node j can be
executed immediately after node i). -
- (The early (1970s) definitions referred to
nodes as entire statements, but this doesnt fit
well with modern programming languages.) - We shall use statement fragment to refer
either to full statements or to statement
fragments.
43Program Graphs
44Program Graphs
- When drawing a program graph, it is usually
simpler to number the statement fragments. - This Figure
45Four Graph-Based Models
- Finite State Machines
- Petri Nets
- Event-Driven Petri Nets
- StateCharts
- These are all executable models, i.e., it is
possible to build a program (an engine) to
execute the model.
46Finite State Machines (FSMs)
- Finite State Machines are directed graphs in
which nodes are states, and edges are transitions
from one state to a successor state. - Transitions are caused by
- events
- date conditions
- passage of time (an event)
- Constraints
- states are mutually exclusive
- only one transition can occur at a time
- FSMs are ideally suited for menu-driven
applications
47Garage Door Controller FSM
48Graph Representations
- Will need these later
- Program Control Flows sequential, if-then-else,
loop, etc. - State Transition Diagram (Finite State Machines)
states and stimuli - Will not use
- Petri Net a complex set of events and
transitions - State Charts A complicated (embedding of states)
form of State Transition Diagram