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,
- $O(n)$
- $\Omega(n)$
- $\Theta(n)$
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))]
$$