Graph Theory

From ACSL Category Descriptions
Revision as of 17:17, 17 August 2018 by Carlen (talk | contribs) (Created page with "== Overview == Many problems are naturally formulated in terms of points and connections between them. For example, a computer network has PCs connected by cables, an airlin...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


Many problems are naturally formulated in terms of points and connections between them. For example, a computer network has PCs connected by cables, an airline map has cities connected by routes, and a school has rooms connected by hallways. A graph is a mathematical object which models such situations.

A graph is a collection of vertices and edges. An edge is a connection between two vertices (or nodes). One can draw a graph by marking points for the vertices and drawing lines connecting them for the edges, but it must be borne in mind that the graph is defined independently of the representation. For example, the following two drawings represent the same graph:


The precise way to represent this graph is to identify its set of vertices {A, B, C, D, E, F, G, H, I, J, K, L, M}, and its set of edges between these vertices {AG, AB, AC, LM, JM, JL, JK, ED, FD, HI, FE, AF, GE}.

A path from vertex x to y in a graph is a list of vertices, in which successive vertices are connected by edges in the graph. For example, BAFEG is path from B to G in the graph above. A simple path is a path with no vertex repeated. For example, BAFEGAC is not a simple path.

A graph is connected if there is a path from every vertex to every other vertex in the graph. Intuitively, if the vertices were physical objects and the edges were strings connecting them, a connected graph would stay in one piece if picked up by any vertex. A graph which is not connected is made up of connected components. For example, the graph above has three connected components: {I, H}, {J, K, L, M} and {A, B, C, D, E, F, G}.

A cycle is a path, which is simple except that the first and last vertex are the same (a path from a point back to itself). For example, the path AFEGA is a cycle in our example. Vertices must be listed in the order that they are traveled to make the path; any of the vertices may be listed first. Thus, FEGAF and GAFEG are different ways to identify the same cycle. For clarity, we list the start / end vertex twice: once at the start of the cycle and once at the end.

We’ll denote the number of vertices in a given graph by V, the number of edges by E. Note that E can range anywhere from V to V2 (or 1/2 V(V-1) in an undirected graph). Graphs will all edges present are called complete graphs; graphs with relatively few edges present (say less than V log(V)) are called sparse; graphs with relatively few edges missing are called dense.


A graph with no cycles is called a tree. There is only one path between any two nodes in a tree. A tree on N vertices contains exactly N-1 edges. A spanning tree of a graph is a subgraph that contains all the vertices and forms a tree. A group of disconnected trees is called a forest.

Directed graphs are graphs which have a direction associated with each edge. An edge xy in a directed graph can be used in a path that goes from x to y but not necessarily from y to x. For example, a directed graph similar to our example graph is drawn below:

There is only one directed path from D to F. Note that there are two edges between H and I, one each direction, which essentially makes an undirected edge. An undirected graph can be thought of as a directed graph with all edges occurring in pairs in this way. A dag (directed acyclic graph) is a directed graph with no cycles.

Adjacency Matrices

It is frequently convenient to represent a graph by a matrix, as shown in the second sample problem below. If we consider vertex A as 1, B as 2, etc., then a “one” in M at row i and column j indicates that there is a path from vertex i to j. If we raise M to the pth power, the resulting matrix indicates which paths of length p exist in the graph. In fact, the quantity Mp(i,j) is the number of paths.


There are many applications of graphs and associated algorithms that will not be included in this topic except for the Elementary Division. A Hamiltonian circuit is finding a path by which every vertex can be visited once and only once. An Euler circuit is finding a path by which every edge can be used once and only once. Graphs are traversable if there exists an Euler circuit unlike the famous Seven Bridges of Königsberg:

Rules of traversability show that vertices can be either odd or even based on how many edges are incident on it. A graph is traversable if there are 0 or 2 odd vertices. If there are 2 odd vertices, then the path must begin with one of them and end with the other. With no odd edges, the path can begin with any vertex in the graph. Conflict theory and proof of the Four Color Theorem also use principles of graph theory.

Sample Problems

Sample Problem 1

Find the number of different cycles contained in the directed graph with vertices {A, B, C, D, E} and edges {AB, BA, BC, CD, DC, DB, DE}.

Solution: The graph is as follows:

By inspection, the cycles are: {A,B}, {B,C,D} and {C,D}. Thus, there are 3 cycles in the graph.

Sample Problem 2

Evaluate the following expression:

(RSHIFT-1 (LCIRC-4 (RCIRC-2 01101)))

Solution: The expression evaluates as follows, starting at the innermost parentheses:

(RCIRC-2 01101) => 01011
(LCIRC-4 01011) => 10101
(RSHIFT-1 10101) = 01010

Sample Problem 3

List all possible values of x (5 bits long) that solve the following equation.

(LSHIFT-1 (10110 XOR (RCIRC-3 x) AND 11011)) = 01100

Solution: Since x is a string 5 bits long, represent it by abcde. (RCIRC-3 x) is cdeab which, when ANDed with 11011 gives cd0ab. This is XORed to 10110 to yield Cd1Ab (the capital letter is the NOT of its lower case). Now, (LSHIFT-1 Cd1Ab) = d1Ab0 which has a value of 01100, we must have d=0, A=1 (hence a=0), b=0. Thus, the solution must be in the form 00*0*, where * is an “I-don’t-care”. The four possible values of x are: 00000, 00001, 00100 and 00101.

Sample Problem 4

Evaluate the following expression:

((RCIRC-14 (LCIRC-23 01101)) | (LSHIFT-1 10011) & (RSHIFT-2 10111))

Solution: The problem can be rewritten as

A | B & C

The AND has higher precedence than the OR.

The evaluation of expression A can be done in a straightforward way: LCIRC-23 011101) has a value of 01011, and RCIRC-14 01011) has a value of 10110. However, if the value of 23 and 14 were much larger, a more clever strategy is to offset the left and right circulates. For example, (RCIRC-7 (LCIRC-3 x)) would have the same results as (RCIRC-4 x). So, ((RCIRC-14 (LCIRC-23 01101)) has the same value as (LCIRC-9 01101), which has the same value as (LCIRC-4 01101). This is an easy expression to evaluate.

Expressions B and C are pretty easy to evaluate:

B = (LSHIFT-1 10011) = 00110
C = (RSHIFT-2 10111) = 00101

The expression becomes

A | B & C = 10110 | 00110 & 00101 = 10110 | 00100 = 10110

Video Resources

The following YouTube videos show ACSL students and advisors working out some ACSL problems that have appeared in previous contests. Some of the videos contain ads; ACSL is not responsible for the ads and does not receive compensation in any form for those ads.

Bit String Flicking (Intro) (CalculusNguyenify)

A great two-part tutorial on this ACSL category. Part 1 covers bitwise operations AND, OR, NOT, and XOR.

Bit String Flicking Shifts and Circs (CalculusNguyenify)

Part 2 covers logical shifts and circulate operations.

Bit String Flicking (Tangerine Code)

Shows the solution to the problem: (RSHIFT-3 (LCIRC-2 (NOT 10110)))

Bit String Flicking by Ravi Yeluru (hemsra)

Walks through two problems from the Junior Division.

ACSL BitString Flicking Contest 2 Worksheet 1 (misterminich)

Solves a handful of problems given in previous years at the Intermediate Division level.