En ciencias de la computación, un grafo de control de flujo (CFG) es una representación, en forma de grafo dirigido, de todos los caminos que pueden ser atravesados a través de un programa durante su ejecución.
[1] Cada nodo del grafo representa una región contigua de código sin ramas, conocidos como bloque básico, y las aristas entre los nodos indican saltos en el flujo del programa.
Existen dos bloques especiales, el de entrada, que ninguna arista llega a él y es la única forma de empezar a recorrer el grafo, y el de salida, del que ninguna arista sale y es la única forma de terminar de recorrer el grafo.
[2][3][4] Las estructuras de control se pueden ver representadas en el grafo de la siguiente manera: El grafo de control de flujo tiene gran utilidad a la hora de realizar optimizaciones en el compilador y análisis estático de software.
[6][7]