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]