Bağımlılık grafiği - Dependency graph

İçinde matematik, bilgisayar Bilimi ve dijital elektronik, bir bağımlılık grafiği bir Yönlendirilmiş grafik birkaç nesnenin birbirine olan bağımlılıklarını temsil eder. Bağımlılık grafiğinden verilen bağımlılıklara saygı duyan bir değerlendirme sırası veya bir değerlendirme sırasının yokluğunu türetmek mümkündür.

Tanım

Dependencygraph.png

Bir dizi nesne verildiğinde ve bir geçişli ilişki ile bir bağımlılığı modelleme "a bağlıdır b" ("a ihtiyaçlar b önce değerlendirilir "), bağımlılık grafiği bir grafiktir ile ve T olmak geçişli azaltma nın-nin R.

Örneğin, basit bir hesap makinesi varsayalım. Bu hesap makinesi sabit değerlerin değişkenlere atanmasını ve tam olarak iki değişkenin toplamının üçüncü bir değişkene atanmasını destekler. "Gibi birkaç denklem verildiğindeBir = B+C; B = 5+D; C=4; D= 2; ", ardından ve . Bu ilişkiyi doğrudan türetebilirsiniz: Bir bağlıdır B ve C, çünkü iki değişken ekleyebilirsiniz ancak ve ancak her iki değişkenin de değerlerini biliyorsunuz. Böylece, B önce hesaplanmalı Bir hesaplanabilir. Ancak, değerleri C ve D hemen bilinir, çünkü bunlar sayı değişmezleridir.

İmkansız değerlendirmeleri tanımak

Bir bağımlılık grafiğinde, bağımlılık döngüleri (aynı zamanda döngüsel bağımlılıklar) geçerli bir değerlendirme sırasının olmadığı bir duruma yol açar, çünkü döngüdeki nesnelerin hiçbiri ilk olarak değerlendirilemez. Bir bağımlılık grafiğinin döngüsel bağımlılıkları yoksa, bir Yönlendirilmiş döngüsüz grafiği ve bir değerlendirme emri şu kişi tarafından bulunabilir: topolojik sıralama. Topolojik sıralama algoritmalarının çoğu aynı zamanda girdilerindeki döngüleri de saptayabilir; ancak gerçekleştirmek istenebilir döngü tespiti tespit edilen döngüler için uygun işlemeyi sağlamak için topolojik sıralamadan ayrı.

Daha önceki basit hesap makinesini varsayalım. Denklem sistemi "Bir=B; B=D+C; C=D+Bir; D= 12; "bir döngüsel bağımlılık tarafından oluşturuldu Bir, B ve C, gibi B önce değerlendirilmelidir Bir, C önce değerlendirilmelidir B ve Bir önce değerlendirilmelidir C.

Bir değerlendirme siparişinin türetilmesi

Bir doğru değerlendirme sırası bir numaralandırmadır Aşağıdaki denklemin geçerli olması için bağımlılık grafiğinin düğümlerini oluşturan nesnelerin ile . Bu, numaralandırmanın iki öğe sipariş etmesi durumunda ve Böylece daha önce değerlendirilecek , sonra bağlı olmamalı .

Birden fazla doğru değerlendirme sırası olabilir. Aslında, doğru numaralandırma bir topolojik sıralama ve herhangi bir topolojik sıralama doğru bir numaralandırmadır. Bu nedenle, doğru bir topolojik sıra türeten herhangi bir algoritma, doğru bir değerlendirme sırası türetir.

Yukarıdaki basit hesap makinesini bir kez daha varsayalım. Denklem sistemi göz önüne alındığında "Bir = B+C; B = 5+D; C=4; D= 2; ", doğru bir değerlendirme sırası (D, C, B, Bir). Ancak, (C, D, B, Bir) doğru bir değerlendirme sırasıdır.

Örnekler

Bağımlılık grafikleri şunlarda kullanılır:

  • Otomatik yazılım montajcılar: Arayan grafiği gezerler. yazılım paketleri gerekli ancak henüz yüklenmemiş. Bağımlılık, bağlantı paketlerin.
  • Yazılım oluşturma komut dosyaları, örneğin Unix Yapmak, Düğüm npm kurulumu, php oluşturucu, Twitter bower kurulumu veya Apache Ant. Hangi dosyaların değiştiğini bilmeleri gerekir, bu nedenle yalnızca doğru dosyaların yeniden derlenmesi gerekir.
  • İçinde derleyici teknoloji ve resmi dil uygulama:
    • Talimat planlaması: Bağımlılık grafikleri, işlenenler için hesaplanır. montaj veya ara talimatlar ve talimatlar için en uygun sırayı belirlemek için kullanılır.
    • Ölü kod eleme: Etkilenen hiçbir işlem bir değişkene bağlı değilse, bu değişken ölü kabul edilir ve kaldırılabilir.
  • Dinamik grafik analizi: GraphBolt[1] ve KickStarter[2] değer bağımlılıklarını yakalamak artımlı hesaplama grafik yapısı değiştiğinde.
  • Elektronik tablo hesap makineleri. Bu makalede kullanılan örnektekine benzer doğru bir hesaplama sırası türetmeleri gerekir.
  • Gibi Web Formları standartları XForms Modeldeki veriler değişirse hangi görsel öğelerin güncelleneceğini bilmek.
  • Özellikle video oyunları bulmaca ve macera video oyunları, genellikle oyun içi eylemler arasındaki bağımlı ilişkilerin bir grafiği olarak tasarlanan.[3]

Bağımlılık grafikleri şunlardan biridir:

Ayrıca bakınız

Referanslar

  1. ^ Mugilan Mariappan; Keval Vora (2019). "GraphBolt: Akış Grafiklerinin Bağımlılığa Dayalı Eş Zamanlı İşlenmesi". Avrupa Bilgisayar Sistemleri Konferansı'nda (EuroSys'19). s. 25: 1–25: 16. doi:10.1145/3302424.3303974.
  2. ^ Keval Vora; Rajiv Gupta; Guoqing Xu (2017). "KickStarter: Kesilmiş Yaklaşımlarla Akış Grafiklerinde Hızlı ve Doğru Hesaplamalar". Uluslararası Programlama Dilleri ve İşletim Sistemleri için Mimari Destek Konferansı'nda (ASPLOS'17). sayfa 237–251. doi:10.1145/3093337.3037748.
  3. ^ Gilbert, Ron. "Bulmaca Bağımlılık Tabloları". Huysuz Oyuncu. Alındı 11 Ocak 2020.