Lecture 02

Transpose graph

Let $E^*$ be defined as the reversal of every directed edge contained within the set of edges $E$ in the graph $G$.

$$ E^* = (v, u) \ \forall \ (u, v) \in\ E $$

The tranpose of $G$, denoted $G^T$ is defined as

$$ G^T = (V, E^*) $$

In other words, the transpose of $G$ is the same graph, but with the direction of every edge reversed.

Bipartite matching

A graph is bipartite if and only if it does not contain a cycle of odd length.

Strongly connected components

Kosaraju's algorithm can be used to identify the strongly connected components of a directed graph in $\Theta(V + E)$ time.

Computational complexity

The computational complexity of an algorithm is defined in terms of its time complexity and space complexity.

Big-O notation

There are three symbols used in the Big-O notation,

Each are defined as follows:

Given two witnesses $C$ and $k$, we say that $f(n)$ is $O(g(n))$ if

$$ \exists C,k \in \Z \mid \forall (n > k) \in \Z \ [f(n) < C*g(n)] $$

Similarly, we say that $f(n)$ is $\Omega(g(n))$ if

$$ \exists C,k \in \Z \mid \forall (n > k) \in \Z \ [C*g(n) < f(n)] $$

Finally, we say that $f(n)$ is $\Theta(g(n))$ if

$$ f(n) = \Theta(f(n)) \iff [f(n) = \Omega(g(n)) \land f(n) = O(g(n))] $$