2016 Алгоритм Дейкстры-Шолтена_ инвариант (подробное решение) (1185700)
Текст из файла
Домашняя работа по курсу"Распределенные алгоритмы"Павел Кочетков, Илья Вашуров521 группа10 июня 2016 г.Алгоритм Дейкстры-Шолтенаvar statep : ( a c t i v e , p a s s i v e ) i n i t i f p = p0 then a c t i v e e l s e p a s s i v e ;scp : i n t e g e r i n i t 0 ;f atherp : P i n i t i f p = p0 then p e l s e u d e f ;Sp : { statep = a c t i v e }beginsend <mes , p> ;scp := scp + 1 ;endRp : { Message <mes , q> r e a c h e d p r o c e s s p }beginr e c e i v e <mes , q> ;statep := a c t i v e ;i f f atherp = u d e f thenf atherp := qelsesend <s i g , q> t o qendIp : { statep = a c t i v e }beginstatep := p a s s i v e ;i f scp = 0 then ( ∗ remove p from T∗ )begini f f atherp = p thenAnnounceelsesend <s i g , f atherp> t o f atherp ;f atherp := u d e fend1endAp : { S i g n a l <s i g , p> r e a c h e d p}beginr e c e i v e <s i g , p>;scp := scp − 1 ;i f scp = 0 and statep = p a s s i v e thenbegini f f atherp = p thenAnnounceelsesend <s i g , f atherp> t o f atherp ;f atherp := u d e fendendДля всякой конфигурации алгоритма определим два множестваVT = {p : f atherp , ude f }∪{< mes, p > на этапе пересылки}∪{< sig, p > на этапе пересылки}иET = (p, f atherp ) : { f atherp , ude f } ∧ f atherp , p∪{(< mes, p >, p) :< mes, pi > на этапе пересылки}∪{(< sig, p >, p) :< sig, p > на этапе пересылки}Доказать, что предикат P является инвариантом алгоритма ДейкстрыШолтенаP ≡ statep = active =⇒ p ∈ VT(1)∧ (u, v) ∈ ET =⇒ u ∈ VT ∧ v ∈ T ∩ P(2)∧ scp = #{v : (v, p) ∈ ET }(3)∧ VT , ∅ =⇒ T − дерево с корнем p0(4)∧ (statep = passive ∩ scp = 0) =⇒ p < VT(5)2Доказательство:Начальное состояние:(1): ∀p\{p0 } : statep = passive.
statep0 = active, при этом f atherp0 = p0 , ude f →соотношение (1) выполняется(2): ET = ∅, поэтому (2) выполняется(3): ∀p : scp = 0, поэтому (3) выполняется(4): VT = {p0 } и ET = ∅, поэтому (4) выполняется(5): statep0 = active, значит условие (5) выполняется (ложная предпосылка).Sp :(1): Выполнение Sp не влияет на (1) (ни один процесс не становится активным, из VT не происходит удаление процессов), поэтому (1) выполняется(2): В дереве появляется новая вершина <mes, p> и новая дуга (<mes, p>,p), ведущая к процессу, а значит верно (2)(3): В VT добавляется новая вершина <mes, p>.
Так как количество вершинпоследователей у вершины p увеличивается на 1, то и значение переменной scp должно увеличиться на 1, что и происходит в Sp . Такимобразом, соотношение (3) выполняется(4): Sp не удаляет вершин из VT , а поэтому (4) остаётся верным(5): Ни один процесс не меняет своего состояния и не добавляется в VT ,поэтому остаётся верным (5)Rp :(1): Состояние процесса statep = active. Если f atherp , ude f , то процесс уженаходился в VT . В противном случае, процесс добавляется в VT , поэтому (1) выполняется(2): Если f atherp = ude f , то <mes, q> замещает процесс p, а процесс q становится его родительской вершиной, в противном же случае его замещает сообщение <sig, q>, для которого родительской вершиной такжеявляется q, а так как q ∈ VT , то (2) верно(3): Число вершин-потомков у процесса q не изменяется.
В результате Rpвершина-последователь <mes, q> замещается либо процессом p, либосообщением <sig, q>, поэтому (3) выполняется(4): При замещении вершин, структура графа не изменяется, и поэтому T- по-прежнему дерево с корнем p0 и (4) остаётся верным(5): После выполнения Rp cостояние statep = active, а процесс либо уже былвключен в VT , либо включается в VT . Таким образом, (5) выполняется.Ip :3(1): Состояние процесса p становится statep = passive, поэтому (1) выполняется(2): Если scp , 0, выполнение Rp не влияет на (2).
Если же scp = 0, то листовая вершина p, не являющаяся корнем, замещается сигналом <sig,f atherp > от которого идёт дуга к процессу f atherp , который по-прежнемусодержится в VT . Следовательно, (2) выполняется(3): Если scp , 0, выполнение Rp не влияет на (3). Если же scp = 0 и вершинаp не корневая, то она удаляется из T, но ее место занимает сигнал<sig, f atherp >.
Следовательно scp для родительской вершины сохраняеткорректное значение. Если же вершина p корневая, то при её удалениисохраняется корректное значение scp = 0, а значит (3) верно(4): Если scp , 0, выполнение Rp не влияет на (4). Если же scp = 0 и вершинане является корневой, то при её замещении на вершину <sig, f atherp >,структура графа не изменяется. Если же вершина является корневой,то после выполнения действия Ip , вершина-корень будет удалена, и тогда VT = ∅, а значит (4) верно(5): Если scp , 0, то предпосылка (5) ложная. Если же scp = 0, то вершинаудаляется из VT , соответственно, (5) выполняетсяAp :(1): Ap не изменяет состояния процесса p, и, если statep = active, не производит удаления процесса из VT .
Следовательно, (1) выполняется(2): Ap удаляет полученный сигнал из VT с соответствующей дугой в ET , аесли scp = 0 и statep = passive, то листовая вершина p, не являющаясякорнем, замещается сигналом <sig, f atherp > от которого идёт дуга квершине-родителю, которая по-прежнему содержится в VT , а значит(2) верно(3): При получении сигнала <sig, p>, количество вершин-потомков уменьшается на единицу, что соответсвует пересчету scp в Ap . Если же scp = 0и statep = passive и вершина p не корневая, то вершина p удаляется изT, но ее место занимает вершина <sig, f atherp >. Следовательно scp дляродительской вершины сохраняет корректное значение и выпоняется(3)(4): Ap удаляет вершину-последователь, соответстующую сигналу <sig, p>.Так как она является листом, то T остаётся деревом с корнем в p0 . Еслиscp = 0 и statep = passive, то, если вершина p не корневая, происходитзамещение вершины p на <sig, f atherp > и структура графа при этомне изменяется, а если вершина является корнем, то после выполнениядействия Ap , она будет удалена, и тогда VT = ∅, поэтому (4) остаётсяверным(5): Если scp = 0 и statep = passive, то вершина p удаляется из VT , а значит(5) выполняется4.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.