Граф залежностей — орієнтований граф, що відображає співвідношення множини елементів деякої сукупності відповідно до вибраних транзитивних відношень над нею.
Такі графи часто застосовують в інформатиці та цифровій електроніці, зокрема, за графом залежностей визначають порядок обчислень або невідповідність порядку залежностям, заданим графом.
Визначення
Нехай дано множину об'єктів і відношення транзитивності де , що моделює залежність «для обчислення потрібно спочатку обчислити », тоді граф залежностей — це граф де і є транзитивним замиканням .
Наприклад, деякий калькулятор підтримує запис константи в деяку змінну і додавання двох змінних із записом результату в деяку третю змінну. Нехай дано кілька виразів, наприклад, . Тоді і . Можна явно вивести всі відношення: залежить від і , тому що дві змінні можна додати тоді й лише тоді, коли відомі значення обох змінних. Таким чином, і слід обчислити перед . Однак, значення відоме зразу, тому що це числова константа.
Виявлення неможливих обчислень
в графі залежностей призводять до ситуації, в якій немає доступного порядку обчислень, тому що жоден з об'єктів циклу не можна вважати першим. Якщо циклічних залежностей немає, то ми маємо спрямований ациклічний граф, і порядок обчислень можна визначити за допомогою топологічного сортування. Більшість алгоритмів топологічного сортування здатні виявляти цикли на вході, однак, бажано виявляти цикли окремо від топологічного сортування, щоб забезпечити належне їх опрацювання.
У прикладі на основі калькулятора, система виразів містить циклічну залежність. слід обчислити перед , слід обчислити перед , слід обчислити перед .
Визначення порядку обчислень
Коректний порядок обчислень — це нумерація об'єктів, яка впорядковує вузли графа залежностей так, що виконується рівність: , де . Це означає, що якщо нумерацією визначено, що обчислюється перед , то не може залежати від . Більш того, може існувати більше ніж один коректний порядок обчислень. По суті, коректна нумерація є топологічним сортуванням, і будь-яке топологічне сортування є коректною нумерацією. Насправді, будь-який алгоритм, що виконує коректне топологічне сортування, одночасно визначає коректний порядок обчислень.
Для системи (в прикладі з калькулятором) коректний порядок: , однак, також є коректним порядком обчислень.
Моноїдна структура
Ациклічний граф залежностей відповідає сліду (слідового моноїда) так:12:
- Функція позначає кожну вершину символом з алфавіту
- Ребро або існує тоді й лише тоді, коли перебуває у відношенні залежності .
- Два графи вважаються рівними, за умови відповідності їхніх міток та ребер.
Тоді рядок, що складається з міток вершин, упорядкованих правильним порядком оцінки, відповідає рядку сліду.
Моноїдна операція приймає диз'юнктне об'єднання множин вершин двох графів, зберігає наявні в кожному графі ребра та малює нові ребра від першого до другого, де це дозволяє відношення залежності:14
Тотожністю є порожній граф.
Приклади
Граф залежностей використовують у:
- Автоматизованому встановленні програмного забезпечення. Рухом по графу знаходять пакунки програм, які потрібні, але ще не встановлені. Залежності визначаються зв'язками між пакунками.
- В компілятор і формальних мовах:
- Планування інструкцій. Граф залежностей обчислюється для операндів асемблера або проміжних інструкцій і використовується для визначення оптимального порядку інструкцій.
- Видалення мертвого коду: якщо жодна побічна операція не залежить від змінної, ця змінна вважається мертвою і її можна видалити.
Графи залежностей це одне з питань:
- Теорії обмежень: початкові дані перероблюються в кінцеві в ході декількох залежних етапів.
- Теорії розкладів — набір взаємопов'язаних теоретичних проблем у галузі комп'ютерних наук.
Див. також
Примітки
- Наприклад, в утилітах make
Джерела
- Mazurkiewicz, Antoni (1995). Introduction to Trace Theory. У Rozenberg, G.; Diekert, V. (ред.). The Book of Traces (англ.). Singapore: World Scientific. ISBN .
{{}}
:|access-date=
вимагає|url=
()
Література
- Balmas, Francoise (2001) , [1] wcre, p. 261, Eighth Working Conference on Reverse Engineering (WCRE'01)
Посилання
- Compiler research project. Граф залежностей [ 4 березня 2016 у Wayback Machine.] (рос.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Graf zalezhnostej oriyentovanij graf sho vidobrazhaye spivvidnoshennya mnozhini elementiv deyakoyi sukupnosti vidpovidno do vibranih tranzitivnih vidnoshen nad neyu Taki grafi chasto zastosovuyut v informatici ta cifrovij elektronici zokrema za grafom zalezhnostej viznachayut poryadok obchislen abo nevidpovidnist poryadku zalezhnostyam zadanim grafom ViznachennyaNehaj dano mnozhinu ob yektiv S displaystyle S i vidnoshennya tranzitivnosti R S S displaystyle R S times S de a b R displaystyle a b in R sho modelyuye zalezhnist dlya obchislennya a displaystyle a potribno spochatku obchisliti b displaystyle b todi graf zalezhnostej ce graf G S T displaystyle G S T de T R displaystyle T subseteq R i R displaystyle R ye tranzitivnim zamikannyam T displaystyle T Napriklad deyakij kalkulyator pidtrimuye zapis konstanti v deyaku zminnu i dodavannya dvoh zminnih iz zapisom rezultatu v deyaku tretyu zminnu Nehaj dano kilka viraziv napriklad A B C B 5 D C 4 D 2 displaystyle A B C B 5 D C 4 D 2 Todi S A B C D displaystyle S A B C D i R A B A C B D displaystyle R A B A C B D Mozhna yavno vivesti vsi vidnoshennya A displaystyle A zalezhit vid B displaystyle B i C displaystyle C tomu sho dvi zminni mozhna dodati todi j lishe todi koli vidomi znachennya oboh zminnih Takim chinom B displaystyle B i C displaystyle C slid obchisliti pered A displaystyle A Odnak znachennya D displaystyle D vidome zrazu tomu sho ce chislova konstanta Viyavlennya nemozhlivih obchislenv grafi zalezhnostej prizvodyat do situaciyi v yakij nemaye dostupnogo poryadku obchislen tomu sho zhoden z ob yektiv ciklu ne mozhna vvazhati pershim Yaksho ciklichnih zalezhnostej nemaye to mi mayemo spryamovanij aciklichnij graf i poryadok obchislen mozhna viznachiti za dopomogoyu topologichnogo sortuvannya Bilshist algoritmiv topologichnogo sortuvannya zdatni viyavlyati cikli na vhodi odnak bazhano viyavlyati cikli okremo vid topologichnogo sortuvannya shob zabezpechiti nalezhne yih opracyuvannya U prikladi na osnovi kalkulyatora sistema viraziv A B B D C C D A D 12 displaystyle A B B D C C D A D 12 mistit ciklichnu zalezhnist B displaystyle B slid obchisliti pered A displaystyle A C displaystyle C slid obchisliti pered B displaystyle B A displaystyle A slid obchisliti pered C displaystyle C Viznachennya poryadku obchislenKorektnij poryadok obchislen ce numeraciya n S N displaystyle n S rightarrow N ob yektiv yaka vporyadkovuye vuzli grafa zalezhnostej tak sho vikonuyetsya rivnist n a lt n b a b R displaystyle n a lt n b Rightarrow a b notin R de a b S displaystyle a b in S Ce oznachaye sho yaksho numeraciyeyu viznacheno sho a displaystyle a obchislyuyetsya pered b displaystyle b to a displaystyle a ne mozhe zalezhati vid b displaystyle b Bilsh togo mozhe isnuvati bilshe nizh odin korektnij poryadok obchislen Po suti korektna numeraciya ye topologichnim sortuvannyam i bud yake topologichne sortuvannya ye korektnoyu numeraciyeyu Naspravdi bud yakij algoritm sho vikonuye korektne topologichne sortuvannya odnochasno viznachaye korektnij poryadok obchislen Dlya sistemi v prikladi z kalkulyatorom A B C B 5 D C 4 D 2 displaystyle A B C B 5 D C 4 D 2 korektnij poryadok D C B A displaystyle D C B A odnak C D B A displaystyle C D B A takozh ye korektnim poryadkom obchislen Monoyidna strukturaAciklichnij graf zalezhnostej vidpovidaye slidu slidovogo monoyida tak 12 Funkciya ϕ S S displaystyle phi S to Sigma poznachaye kozhnu vershinu simvolom z alfavitu S displaystyle Sigma Rebro a b displaystyle a to b abo b a displaystyle b to a isnuye todi j lishe todi koli ϕ a ϕ b displaystyle phi a phi b perebuvaye u vidnoshenni zalezhnosti D displaystyle D Dva grafi vvazhayutsya rivnimi za umovi vidpovidnosti yihnih mitok ta reber Todi ryadok sho skladayetsya z mitok vershin uporyadkovanih pravilnim poryadkom ocinki vidpovidaye ryadku slidu Monoyidna operaciya S 12 R 12 S 1 R 1 S 2 R 2 displaystyle S 12 R 12 S 1 R 1 bullet S 2 R 2 prijmaye diz yunktne ob yednannya S 12 S 1 S 2 displaystyle S 12 S 1 sqcup S 2 mnozhin vershin dvoh grafiv zberigaye nayavni v kozhnomu grafi rebra ta malyuye novi rebra vid pershogo do drugogo de ce dozvolyaye vidnoshennya zalezhnosti 14 R 12 R 1 R 2 a b a S 1 b S 2 ϕ a ϕ b D displaystyle R 12 R 1 sqcup R 2 sqcup a b mid a in S 1 land b in S 2 land phi a phi b in D Totozhnistyu ye porozhnij graf PrikladiGraf zalezhnostej vikoristovuyut u Avtomatizovanomu vstanovlenni programnogo zabezpechennya Ruhom po grafu znahodyat pakunki program yaki potribni ale she ne vstanovleni Zalezhnosti viznachayutsya zv yazkami mizh pakunkami V kompilyator i formalnih movah Planuvannya instrukcij Graf zalezhnostej obchislyuyetsya dlya operandiv asemblera abo promizhnih instrukcij i vikoristovuyetsya dlya viznachennya optimalnogo poryadku instrukcij Vidalennya mertvogo kodu yaksho zhodna pobichna operaciya ne zalezhit vid zminnoyi cya zminna vvazhayetsya mertvoyu i yiyi mozhna vidaliti Grafi zalezhnostej ce odne z pitan Teoriyi obmezhen pochatkovi dani pereroblyuyutsya v kincevi v hodi dekilkoh zalezhnih etapiv Teoriyi rozkladiv nabir vzayemopov yazanih teoretichnih problem u galuzi komp yuternih nauk Div takozhTopologichne sortuvannya Zalezhnist danihPrimitkiNapriklad v utilitah makeDzherelaMazurkiewicz Antoni 1995 Introduction to Trace Theory U Rozenberg G Diekert V red The Book of Traces angl Singapore World Scientific ISBN 981 02 2058 8 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite book title Shablon Cite book cite book a access date vimagaye url dovidka LiteraturaBalmas Francoise 2001 1 wcre p 261 Eighth Working Conference on Reverse Engineering WCRE 01 PosilannyaCompiler research project Graf zalezhnostej 4 bereznya 2016 u Wayback Machine ros