\newsection \section{Graph theory} \begin{definition}[]{Graphs: Directed and Undirected} A \textbf{graph} $G = (V, E)$ consists of: \begin{itemize} \item A set of \textbf{vertices} (or nodes) $V$, and \item A set of \textbf{edges} $E$, representing connections between pairs of vertices. \end{itemize} Graphs can be classified into: \begin{itemize} \item \textbf{Undirected Graphs:} Edges have no direction, represented as unordered pairs $\{u, v\}$. \item \textbf{Directed Graphs (Digraphs):} Edges have a direction, represented as ordered pairs $(u, v)$. \end{itemize} \end{definition} \begin{terms}[]{Graph Theory} \begin{itemize} \item \textbf{Adjacent (Neighbors):} Two vertices $u$ and $v$ are adjacent if there is an edge between them. \item \textbf{Degree:} \begin{itemize} \item \textbf{Undirected Graph:} The degree of a vertex $v$ is the number of edges incident to it. \item \textbf{Directed Graph:} \begin{itemize} \item \textbf{In-Degree:} Number of incoming edges to $v$. \item \textbf{Out-Degree:} Number of outgoing edges from $v$. \end{itemize} \end{itemize} \item \textbf{Path:} A sequence of vertices where each adjacent pair is connected by an edge. \begin{itemize} \item \textbf{Simple Path:} A path with no repeated vertices. \item \textbf{Cycle:} A path that starts and ends at the same vertex. \end{itemize} \item \textbf{Connected Graph:} A graph where there is a path between any two vertices. \begin{itemize} \item \textbf{Strongly Connected:} In a directed graph, every vertex is reachable from every other vertex. \item \textbf{Weakly Connected:} A directed graph becomes connected if the direction of edges is ignored. \end{itemize} \item \textbf{Subgraph:} A graph formed from a subset of vertices and edges of the original graph. \item \textbf{Complete Graph:} A graph in which every pair of vertices is connected by an edge. \item \textbf{Weighted Graph:} A graph where each edge has an associated weight or cost. \item \textbf{Multigraph:} A graph that may have multiple edges (parallel edges) between the same pair of vertices. \item \textbf{Self-Loop:} An edge that connects a vertex to itself. \item \textbf{Bipartite Graph:} A graph whose vertices can be divided into two disjoint sets such that every edge connects a vertex in one set to a vertex in the other set. \item \textbf{Tree:} A graph is a tree if it is connected and has no cycles (sufficient condition), a tree has $n - 1$ edges for $n$ vertices (necessary condition). \item \textbf{Reachability:} A vertex $u$ is called \textit{reachable} from $v$, if there exists a walk or path with endpoints $u$ and $v$. \end{itemize} \end{terms} \begin{example}[]{Directed and Undirected Graphs} \begin{center} \begin{tikzpicture}[node distance=1.5cm, main/.style={circle, draw, fill=blue!20, minimum size=10mm, inner sep=0pt}] % Undirected graph \node[main] (1) {1}; \node[main] (2) [right of=1] {2}; \node[main] (3) [below of=1] {3}; \node[main] (4) [below of=2] {4}; \draw (1) -- (2); \draw (1) -- (3); \draw (3) -- (4); \draw (2) -- (4); % Directed graph \node[main] (5) [right of=2, xshift=2cm] {A}; \node[main] (6) [right of=5] {B}; \node[main] (7) [below of=5] {C}; \node[main] (8) [below of=6] {D}; \draw[->] (5) -- (6); \draw[->] (5) -- (7); \draw[->] (7) -- (8); \draw[->] (6) -- (8); \end{tikzpicture} \end{center} \end{example}