Да, ориентированный ациклический c граф (DAG) может быть сведен в упорядоченный список операций, , если , фактически DAG представляет данные, проходящие через операции. Таким образом, упорядоченный список операторов присваивания и вызовов функций может быть выражен в виде DAG, и наоборот.
DAG для приведенного выше примера может выглядеть как
+-----+ +-------------+
| | A | filter I1 | A'
| A |-----|1 to country|---+
| | | ='US' | |
+-----+ +-------------+ | +--------------+ +-----------+ +----------+
+--|1 join I1 to | C | filter | C'| Result |
| I2 on I1.id|---|1 I1 to...|---|1 = I1 |
+--|2 = I2.id| | | | |
+-------+ | +--------------+ +------- ---+ +----------+
| | B |
| B |---+
| |
+-------+
В качестве альтернативы «Список операций» можно рассматривать как вызов вложенных функций, оцениваемых от наиболее глубоко вложенных до наименее глубоко вложенных. Например,
Result = Fn3( Fn2( Fn1(A), B ) ).
Группа обеспечения доступности баз данных такая же, как и перерисованная здесь без отображения промежуточных переменных и с упрощенными именами функций.
+-----+ +-------------+
| | | |
| A |-----|1 Fn1 |---+
| | | | |
+-----+ +-------------+ | +--------------+ +-----------+ +----------+
+--|1 | | | | |
| Fn2 |---|1 Fn3 |---|1 Result |
+--|2 | | | | |
+-------+ | +--------------+ +------- ---+ +----------+
| | |
| B |---+
| |
+-------+
Я не знаю ни одной ситуации, в которой информация будет потеряна при декомпозиции из DAG в «список операций». Эти две формы эквивалентны друг другу.
Практический пример того, как построить группы обеспечения доступности баз данных для представления списков операций, можно найти в IEC 61131-3: 2013 , который "определяет синтаксис и семантику языков программирования для программируемых контроллеров ..." Этот стандарт называет DAG сетью, определяемой как "максимальный набор взаимосвязанных графических c элементов" (в контексте частично упорядоченного набора ) и представляет правила оценки, в том числе правило: «Ни один элемент сети не должен оцениваться до тех пор, пока не будут оценены состояния всех его входов». Это правило обеспечивает основу для порядка операций.