Algoritmo iterativo para un problema de flujo de datos hacia atrás

Introducción:
la razón de este artículo es informarle aproximadamente un conjunto iterativo de reglas para problemas de flotación de estadísticas hacia atrás. Antes de comenzar, debe reconocer algunas terminologías asociadas con el análisis flotante de estadísticas.

Análisis de flujo de datos :
es una técnica para recopilar información sobre el posible conjunto de valores calculados en varios puntos en un programa de computadora.
Es la evaluación de ir con la deriva de estadísticas sobre gráfico de flujo de cosas, es decir, la evaluación que determina los registros relativos a la definición y uso de estadísticas en el programa. Con la ayuda de esta evaluación, se puede realizar la optimización. En general, su manera en que los valores han calculado el uso de la evaluación de flujo de estadísticas. Las estadísticas que van con la propiedad de deriva representan registros que pueden usarse para la optimización.

Gráfico de flujo de control (CFG) :
se utiliza para decidir los elementos del software a los que posiblemente se propagaría una tarifa específica asignada a una variable. 
Un gráfico de flujo de control (CFG) es la ilustración gráfica de la gestión del flujo de cálculo a lo largo de la ejecución de paquetes o aplicaciones. Los gráficos de flujo de control se utilizan con mayor frecuencia en la evaluación estática además de las aplicaciones de compilación, ya que pueden representar adecuadamente el flujo interno de una unidad de aplicación. El control va con el gráfico de deriva que se desarrolló inicialmente a través de Frances E. Allen.

Ejemplo –

if  A = 10 then
  if B > C
     A = B
  else A = C
  endif
  endif
print A, B, C 

Diagrama de flujo del ejemplo anterior –

Gráfico de flujo de control del ejemplo anterior:

Enfoque ingenuo (método de Kildall): 
la forma más sencilla de llevar a cabo una evaluación de flujo de datos de paquetes es instalar ecuaciones de flujo de datos para cada Node del gráfico de flujo de control y aclararlas, una y otra vez, calculando la salida de luego ingresan internamente en cada Node hasta que el dispositivo completo se estabiliza, es decir, alcanza un punto fijo.

Un algoritmo iterativo: 
un conjunto iterativo de reglas es la forma más común de resolver los hechos relacionados con las ecuaciones de evaluación de deriva. En este conjunto de reglas, especialmente tenemos estados, uno es dentro de la nación y el opuesto es fuera de la nación. El conjunto de reglas comienza con una aproximación de la nación de cada bloque y luego se calcula mediante el uso de las capacidades de cambio en los estados. Los estados están actualizados a través de los medios de hacer uso de las operaciones. Los últimos pasos se repiten hasta que alcanzamos el punto fijo: el escenario en el que los estados ya no cambian.

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 o no para reenviar o retroceder datos. evaluación de flujo sobre el CFG (administrar gráfico de flujo).

A continuación se mencionan algunas órdenes de generación para fijar ecuaciones de flotación de datos:

  • Orden aleatorio: 
    en esta nueva versión, el orden no siempre es consciente de si las ecuaciones de flujo de datos resuelven o no un problema de flujo de datos hacia adelante o hacia atrás. Y, por lo tanto, el rendimiento general es bastante negativo en comparación con las nuevas órdenes de lanzamiento especializadas.
  • Pospedido :
    este nuevo orden de publicación para datos hacia atrás va con los problemas de deriva. Se visita un Node en cualquier caso, se visitaron sus Nodes sucesores y se llevó a cabo con la estrategia de profundidad primero.
  • Orden posterior inverso :
    este orden de generación es para reenviar datos, vaya con los problemas de deriva. El Node se visita antes de que cualquiera de sus Nodes sucesores haya sido visitado, además de cuando se llega al sucesor a través de un borde devuelto.

Análisis hacia atrás: 
es un método para investigar algoritmos aleatorios con la ayuda del uso de la imaginación como si retrocediera en el tiempo, desde la salida hasta la entrada.

Ejemplo –
En estado de un bloque – 
El conjunto de variables que contiene al inicio del mismo, e Inicialmente contiene todas las variables contenidas en el bloque antes de que se lleve a cabo la función de transferencia y se calculen los valores reales contenidos.

Estado de salida de un bloque: 
el conjunto de variables que contiene al final del bloque y se calcula mediante la unión de los estados de entrada de los sucesores del bloque.

Initial code -
b1: a = 3;
b = 5;
   d = 4;
   x = 100;
   if a > b then
b2:    c = a + b;
      d = 2;
b3: endif
   c = 4;
   return b * d + c;

Backward data analysis -

// in: {}
b1: a = 3;
    b = 5;
    d = 4;
    x = 100; //x is never being used later thus not in the out set {a,b,d}
   if a > b then
// out:     //union of all (in) successors of b1 => b2: , and b3: 

//  in: {a,b}
b2: c = a + b;
    d = 2;
//  out: {b,d}

//  in: {b,d}
b3: endif
    c = 4;
    return b * d + c;
//  out:{}

Del ejemplo anterior, podemos observar tres puntos que son:

  • En primer lugar, el estado de b3 solo contiene b y d, pero en su lugar se ha escrito c.
  • En segundo lugar, la nación externa de b1 es la unión de los estados internos de b2 y b3.
  • El último punto es que la definición de c en b2 puede eliminarse ya que c no está contenida inmediatamente después de la declaración.

La tabla de progreso – 

Procesando fuera del estado Viejo en el estado Nuevo en el estado lista de trabajo
b3 {} {} {b, d} (b1, b2)
b1 {b, d} {} {} (b2)
b2 {b, d} {} {una, b} (b1)
b1 {a, b, d} {} {}  ()

Lista de trabajo: 
es una lista de bloques que aún deben procesarse.

Note -
The b1 changed into entered withinside the listing earlier than b2, which compelled processing b1 
twice (b1 changed into re-entered as
 the predecessor of b2).Inserting b2 earlier than b1 could 
have allowed in advance completion.

Punto para recordar –

  • Inicializar con el conjunto vacío es una inicialización optimista porque todas las variables comienzan como muertas.
  • Los estados externos no pueden disminuir de una nueva versión a la siguiente, aunque la nación externa puede ser más pequeña que la nación interna.
  • El reino comienza a comenzar debido al conjunto vacío, solo puede desarrollarse en una iteración similar.

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 *