Ресинхронизация схемы: инкрементный подход: различия между версиями

Перейти к навигации Перейти к поиску
м
Строка 254: Строка 254:


== Применение ==
== Применение ==
В базовом алгоритме оптимальность P3 проверяется условием r[v] > j Vj. Однако в большинстве случаев условие оптимальности можно обнаружить намного раньше. Поскольку при каждом возрастании r[v] должна существовать «вершина-хранитель» u, такая, что после выполнения действия будет верно неравенство r[u] — r0[u] > r[v] — r0 [v].  
В базовом алгоритме оптимальность P3 проверяется условием <math>r[v] \ge |V| \;</math>. Однако в большинстве случаев условие оптимальности можно обнаружить намного раньше. Поскольку при каждом возрастании r[v] должна существовать «вершина-хранитель» u, такая, что после выполнения действия будет верно неравенство <math>r[u] - r'[u] \ge r[v] - r'[v] \;</math>.  




Следовательно, если ввести указатель из v к u при увеличении r[v], указатели не смогут образовать цикл согласно :P3. Фактически указатели образуют лес, в котором корни имеют значение r = 0, а потомок может иметь значение r, не более чем на 1 превышающее значение его предка. Использование цикла указателей как свидетельство верности P3 вместо r[v] > |V|, можно значительно повысить практическую эффективность алгоритма.
Следовательно, если ввести указатель из v к u при увеличении r[v], указатели не смогут образовать цикл согласно <math>\neg P3</math>. Фактически указатели образуют лес, в котором корни имеют значение r = 0, а потомок может иметь значение r, не более чем на 1 превышающее значение его предка. Использование цикла указателей как свидетельство верности P3 вместо <math>r[v] \ge |V| \;</math>, можно значительно повысить практическую эффективность алгоритма.


== Открытые вопросы ==
== Открытые вопросы ==
4551

правка

Навигация