Wykres zależności

W matematyce , informatyce i elektronice cyfrowej wykres zależności jest skierowanym wykresem przedstawiającym wzajemne zależności kilku obiektów. Możliwe jest wyprowadzenie kolejności oceny lub braku kolejności oceny, która respektuje dane zależności z grafu zależności.

Definicja

Dependencygraph.png

uwagę zbiór obiektów i relację przechodnią z modelując zależność „ a zależy od b ” („ a wymaga najpierw oceny b ”), wykres zależności jest wykresem z displaystyle przechodnia redukcja R .

Załóżmy na przykład prosty kalkulator. Ten kalkulator obsługuje przypisywanie stałych wartości do zmiennych i przypisywanie sumy dokładnie dwóch zmiennych do trzeciej zmiennej. Biorąc pod uwagę kilka równań, takich jak „ ZA = b + do ; b = 5+ re ; do = 4; re = 2;”, to i . Możesz wyprowadzić tę relację bezpośrednio: A zależy od B i C , ponieważ możesz dodać dwie zmienne wtedy i tylko wtedy, gdy znasz wartości obu zmiennych. Zatem B musi zostać obliczone przed obliczeniem A. Jednak wartości C i D są znane od razu, ponieważ są literałami liczbowymi.

Rozpoznawanie ocen niemożliwych

W grafie zależności cykle zależności (zwane również zależnościami cyklicznymi ) prowadzą do sytuacji, w której nie istnieje żadna ważna kolejność oceny, ponieważ żaden z obiektów w cyklu nie może być oceniony jako pierwszy. Jeśli graf zależności nie ma żadnych zależności kołowych, tworzy skierowany graf acykliczny , a kolejność oceny można znaleźć za pomocą sortowania topologicznego . Większość algorytmów sortowania topologicznego jest również w stanie wykrywać cykle na swoich danych wejściowych; jednakże może być pożądane przeprowadzenie wykrywania cykli oddzielnie od sortowania topologicznego w celu zapewnienia odpowiedniej obsługi wykrytych cykli.

Załóżmy prosty kalkulator z wcześniej. Układ równań „ A = B ; B = D + C ; C = D + A ; D =12;” zawiera cykliczną zależność utworzoną przez A , B i C , ponieważ B musi być obliczone przed A , C musi zostać obliczone przed B i A musi zostać obliczone przed C .

Wyprowadzenie zlecenia oceny

Prawidłowa oceny to numeracja obiektów, które tworzą węzły wykresu zależności, tak aby zachodziło następujące równanie: z za . Oznacza to, że jeśli numeracja porządkuje dwa elementy b tak, że ocenione przed , to nie może za zależy od .

Poprawnej kolejności oceny może być więcej niż jedna. W rzeczywistości poprawna numeracja jest porządkiem topologicznym , a każdy porządek topologiczny jest poprawną numeracją. Zatem każdy algorytm, który wyprowadza poprawną kolejność topologiczną, wyprowadza poprawną kolejność oceny.

Załóżmy jeszcze raz prosty kalkulator z góry. Biorąc pod uwagę układ równań „ A = B + C ; B = 5+ D ; C = 4; D = 2;”, poprawna kolejność oceny byłaby następująca ( D , C , B , A ). Jednak ( C , D , B , A ) jest również poprawną kolejnością oceny.

Struktura monoidu

Wykres zależności acyklicznej odpowiada śladowi monoidu śladowego w następujący sposób:

  • Funkcja oznacza każdy wierzchołek symbolem z alfabetu
  • Za lub wtedy i tylko wtedy, gdy jest w relacji zależności .
  • Dwa grafy uważa się za równe, jeśli ich etykiety i krawędzie są zgodne.

Wtedy ciąg składający się z etykiet wierzchołków uporządkowanych według poprawnej kolejności oceny odpowiada ciągowi śladu.

Operacja monooidalna ) {\ Displaystyle (S_ {12}, R_ {12} przyjmuje rozłączny związek dwóch wykresów ' ustawia wierzchołki, zachowuje istniejące krawędzie w każdym grafie i rysuje nowe krawędzie od pierwszej do drugiej, o ile pozwala na to relacja zależności,

Tożsamość jest pustym grafem.

Przykłady

Wykresy zależności są używane w:

  • Zautomatyzowane instalatory oprogramowania : przeglądają wykres w poszukiwaniu pakietów oprogramowania , które są wymagane, ale jeszcze nie zostały zainstalowane. Zależność wynika ze sprzężenia pakietów.
  • Skrypty do tworzenia oprogramowania, takie jak Unix Make , Node npm install, php Composer, Twitter bower install lub Apache Ant . Muszą wiedzieć, jakie pliki zostały zmienione, więc tylko poprawne pliki muszą być ponownie skompilowane.
  • W technologii kompilatora i implementacji języka formalnego :
    • Szeregowanie instrukcji : Wykresy zależności są obliczane dla operandów instrukcji asemblera lub instrukcji pośrednich i wykorzystywane do określenia optymalnej kolejności instrukcji.
    • Eliminacja martwego kodu : Jeśli żadna operacja z efektem ubocznym nie zależy od zmiennej, ta zmienna jest uważana za martwą i można ją usunąć.
  • Dynamiczna analiza wykresów: GraphBolt i KickStarter wychwytują zależności wartości dla obliczeń przyrostowych , gdy zmienia się struktura wykresu.
  • arkuszy kalkulacyjnych. Muszą wyprowadzić poprawną kolejność obliczeń, podobną do tej w przykładzie użytym w tym artykule.
  • Standardy Web Forms, takie jak XForms, aby wiedzieć, które elementy wizualne należy zaktualizować, jeśli dane w modelu ulegną zmianie.
  • Gry wideo, zwłaszcza gry logiczne i przygodowe , które często są projektowane jako wykresy zależnych relacji między działaniami w grze.

Wykresy zależności są jednym z aspektów:

Zobacz też