stringtranslate.com

График зависимости

В математике , информатике и цифровой электронике граф зависимостей — это направленный граф, представляющий зависимости нескольких объектов друг от друга. Из графа зависимостей можно вывести порядок оценки или отсутствие порядка оценки, который учитывает заданные зависимости.

Определение

A зависит от B и C ; B зависит от D

При наличии набора объектов и транзитивного отношения с моделированием зависимости « a зависит от b »a требует , чтобы b был оценен в первую очередь») граф зависимости представляет собой граф с транзитивным сокращением R.

Например, предположим, что есть простой калькулятор. Этот калькулятор поддерживает назначение постоянных значений переменным и назначение суммы ровно двух переменных третьей переменной. Дано несколько уравнений типа " A = B + C ; B = 5+ D ; C =4; D =2;", тогда и . Вы можете вывести это соотношение напрямую: A зависит от B и C , потому что вы можете добавить две переменные тогда и только тогда, когда вы знаете значения обеих переменных. Таким образом, B должно быть вычислено до того, как можно будет вычислить A. Поскольку B зависит от D для вычисления, A также должно зависеть от D для вычисления до него (отсюда и транзитивное свойство, указанное выше). С другой стороны, значения C и D известны немедленно, потому что они являются числовыми литералами.

Признание невозможных оценок

В графе зависимостей циклы зависимостей (также называемые циклическими зависимостями ) приводят к ситуации, в которой не существует допустимого порядка оценки, поскольку ни один из объектов в цикле не может быть оценен первым. Если граф зависимостей не имеет циклических зависимостей, он образует направленный ациклический граф , и порядок оценки может быть найден с помощью топологической сортировки . Большинство алгоритмов топологической сортировки также способны обнаруживать циклы во входных данных; однако может быть желательно выполнять обнаружение циклов отдельно от топологической сортировки, чтобы обеспечить соответствующую обработку обнаруженных циклов.

Предположим, что у нас есть простой калькулятор из предыдущего примера. Система уравнений " 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 ) также является правильным порядком оценки.

Моноидная структура

Ациклический граф зависимостей соответствует трассе моноида трассы следующим образом: [1] : 12 

Тогда строка, состоящая из меток вершин, упорядоченных в правильном порядке оценки, соответствует строке трассы.

Моноидальная операция берет несвязное объединение множеств вершин двух графов, сохраняет существующие ребра в каждом графе и рисует новые ребра от первого ко второму, где это позволяет отношение зависимости, [1] : 14 

Идентичность — пустой граф.

Примеры

Графики зависимостей используются в:

Графики зависимостей являются одним из аспектов:

Смотрите также

Ссылки

  1. ^ ab Mazurkiewicz, Antoni (1995). "Введение в теорию следов" (PDF) . В Rozenberg, G.; Diekert, V. (ред.). Книга следов . Singapore: World Scientific. ISBN 981-02-2058-8. Получено 18 апреля 2021 г. .
  2. ^ Мугилан Мариаппан; Кевал Вора (2019). «GraphBolt: синхронная обработка потоковых графов на основе зависимостей». На Европейской конференции по компьютерным системам (EuroSys'19) . стр. 25:1–25:16. doi :10.1145/3302424.3303974.
  3. ^ Кевал Вора; Раджив Гупта; Гоцин Сюй (2017). «KickStarter: быстрые и точные вычисления на потоковых графах с помощью урезанных аппроксимаций». В Международной конференции по архитектурной поддержке языков программирования и операционных систем (ASPLOS'17) . стр. 237–251. doi : 10.1145/3093337.3037748 .
  4. ^ Гилберт, Рон. «Схемы зависимости головоломок». Grumpy Gamer . Получено 11 января 2020 г.