Введение
Направленный график, представляющий зависимости В математике, информатике и цифровой электронике, график зависимости - это направленный график, представляющий зависимости нескольких объектов друг от друга. Можно вывести порядок оценки или отсутствие порядка оценки, который уважает данные зависимости от графика зависимости.
In mathematics, computer science and digital electronics, a dependency graph is a directed graph representing dependencies of several objects towards each other. It is possible to derive an evaluation order or the absence of an evaluation order that respects the given dependencies from the dependency graph.
Определение
При наличии множества объектов и транзитивной связи с моделированием зависимости "a зависит от b" ("a нуждается в b, оцениваемой первой"), график зависимости является графиком с транзитивным сокращением R. Например, предположим, что простой калькулятор. Этот калькулятор поддерживает присвоение постоянных значений переменным и присвоение суммы ровно двух переменных третьей переменной. Если дать несколько уравнений вроде "A = B+C; B = 5+D; C=4; D=2;", то и Вы можете вывести эту связь напрямую: A зависит от B и C, потому что вы можете добавить две переменные, если и только если вы знаете значения обеих переменных. Таким образом, B должен быть вычислен до того, как можно рассчитать A. Однако значения C и D известны сразу, потому что они являются числовыми буквалами.
For example, assume a simple calculator. This calculator supports assignment of constant values to variables and assigning the sum of exactly two variables to a third variable. Given several equations like "A = B+C; B = 5+D; C=4; D=2;", then and You can derive this relation directly: A depends on B and C, because you can add two variables if and only if you know the values of both variables. Thus, B must be calculated before A can be calculated. However, the values of C and D are known immediately, because they are number literals.
Признание невозможных оценок
В графике зависимостей циклы зависимостей (также называемые круговыми зависимостями) приводят к ситуации, в которой не существует действительного порядка оценки, потому что ни один из объектов в цикле не может быть оценен первым. Если график зависимостей не имеет никаких круговых зависимостей, он образует направленный ациклический график, и порядок оценки может быть найден топологическим сортировкой. Большинство топологических алгоритмов сортировки также способны обнаруживать циклы в своих входах; однако, может быть желательно выполнять обнаружение циклов отдельно от топологической сортировки, чтобы обеспечить надлежащую обработку обнаруженных циклов. Возьмём простую калькуляторную машину. Система уравнений "A=B; B=D+C; C=D+A; D=12" содержит круговую зависимость, сформированную A, B и C, поскольку B должен быть оценен до A, C должен быть оценен до B, а A должен быть оценен до C.
Вывод ордера оценки
Правильный порядок оценки - это нумерация объектов, которые образуют узлы графа зависимости, так что следующее уравнение имеет значение: с Это означает, что если нумерация упорядочивает два элемента и так, что они будут оценены до , то не должно зависеть от Там может быть более одного правильного порядка оценки. Фактически, правильная нумерация - это топологический порядок, и любой топологический порядок - это правильная нумерация. Таким образом, любой алгоритм, который получает правильный топологический порядок, получает правильный порядок оценки. Возьмём простую калькуляцию сверху ещё раз. При данной системе уравнений "A = B + C; B = 5 + D; C = 4; D = 2;", правильный порядок оценки будет (D, C, B, A). Однако (C, D, B, A) также является правильным порядком оценки.
There can be more than one correct evaluation order. In fact, a correct numbering is a topological order, and any topological order is a correct numbering. Thus, any algorithm that derives a correct topological order derives a correct evaluation order. Assume the simple calculator from above once more. Given the equation system "A = B+C; B = 5+D; C=4; D=2;", a correct evaluation order would be (D, C, B, A). However, (C, D, B, A) is a correct evaluation order as well.