Algoritmo iterativo para un problema de flujo de datos directo

Descripción general:
el propósito de este artículo es informarle sobre un algoritmo iterativo para el problema de flujo de datos hacia adelante. Antes de comenzar, debe conocer alguna terminología relacionada con el análisis de flujo de datos.

Terminologías para el algoritmo iterativo:
aquí, discutiremos las terminologías para el algoritmo iterativo de la siguiente manera.

  1. Análisis de flujo de datos: 
    se define como una técnica en la que se calcula un conjunto de valores en varios puntos en un programa de computadora para recopilar información.
     
  2. Gráfico de flujo de control (CFG): 
    se utiliza para determinar aquellas partes de un programa a las que se podría propagar un valor particular asignado a una variable.
     
  3. Enfoque ingenuo (método de Kildall): 
    la forma más fácil de realizar un análisis de flujo de datos de los programas es establecer ecuaciones de flujo de datos para cada Node del gráfico de flujo de control y en este enfoque hasta que todo el sistema se estabilice de tal manera que alcance una solución. punto entonces, resuélvalos calculando repetidamente la salida de la entrada localmente en cada Node.
     
  4. Un algoritmo iterativo: 
    un algoritmo iterativo es la forma más común de resolver las ecuaciones de análisis de flujo de datos. En este algoritmo, tenemos particularmente dos estados: uno está dentro del estado y el otro está fuera del estado. El algoritmo comienza con una aproximación del estado de entrada de cada bloque y luego se calcula aplicando las funciones de transferencia en los estados de entrada. Los estados de entrada se actualizan aplicando las operaciones de unión. Los dos últimos pasos se repiten hasta llegar al punto fijo: la situación en la que los estados de entrada no cambian.
     
  5. La eficiencia del algoritmo anterior: 
    la eficiencia de este algoritmo para resolver las ecuaciones de flujo de datos está influenciada por el orden en que se visitan los Nodes locales, y también depende de si las ecuaciones de flujo de datos se usan para reenviar o retroceder datos. análisis de flujo sobre el gráfico de flujo de control.

Órdenes de iteración para resolver ecuaciones de flujo de datos:
A continuación se analizan algunas órdenes de iteración para resolver ecuaciones de flujo de datos.

  1. Orden aleatorio: 
    en esta iteración, el orden no sabe si las ecuaciones de flujo de datos resuelven un problema de flujo de datos hacia adelante o hacia atrás. Y por lo tanto, el rendimiento es relativamente pobre en comparación con las órdenes de iteración especializadas.
     
  2. Orden posterior: 
    este orden de iteración para problemas de flujo de datos hacia atrás. Se visita un Node después de que todos sus Nodes sucesores hayan sido visitados e implementados con la estrategia de prioridad en profundidad.
     
  3. Orden de publicación inversa: 
    este orden de iteración para reenviar problemas de flujo de datos. Se visita el Node antes de que se haya visitado cualquiera de sus Nodes sucesores, excepto cuando se llega al sucesor por un borde posterior.
     
  4. Análisis directo de datos: 
    Considere un punto arbitrario ‘p’ En un análisis directo, estamos razonando sobre hechos hasta ‘p’, considerando solo los predecesores del Node en ‘p’. En un análisis hacia atrás, estamos razonando sobre hechos desde ‘p’ en adelante, considerando solo a los sucesores.

Ejemplo –

 line 1: if b==4 then
 line 2:     a = 5;
 line 3: else 
 line 4:    a = 3;
 line 5: endif
 line 6:
 line 7: if  a < 4 then
         ...// rest of the code

Descripciones de ejemplo:
del ejemplo anterior, podemos observar que la definición de alcance de la variable en la línea 7 es el conjunto de asignaciones a = 5 en la línea 2 y a = 3 en la línea 4.

Publicación traducida automáticamente

Artículo escrito por krishna_97 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *