Jump to content

Алгоритм Марзулло

Алгоритм Марзулло , изобретенный Китом Марзулло для защиты докторской диссертации. диссертация в 1984 году представляет собой алгоритм согласования, используемый для выбора источников для оценки точного времени из ряда зашумленных источников времени. Его усовершенствованная версия, переименованная в « алгоритм пересечения », является частью современного протокола сетевого времени . Алгоритм Марзулло также используется для вычисления расслабленного пересечения n блоков (или, в более общем смысле, n подмножеств R н ), как того требуют несколько робастных методов оценки набора .

Алгоритм Марзулло эффективен с точки зрения времени для получения оптимального значения из набора оценок с доверительными интервалами , где фактическое значение может находиться за пределами доверительного интервала для некоторых источников. В этом случае наилучшей оценкой считается наименьший интервал, соответствующий наибольшему числу источников.

Если у нас есть оценки 10 ± 2, 12 ± 1 и 11 ± 1, то эти интервалы — это [8,12], [11,13] и [10,12], которые пересекаются, образуя [11,12] или 11,5 ± 0,5. как согласующийся со всеми тремя ценностями.

Алгоритм Марзулло, пример №1
Marzullo's algorithm, example#1

Если вместо этого диапазоны — [8,12], [11,13] и [14,15], то не существует интервала, соответствующего всем этим значениям, но [11,12] соответствует наибольшему количеству источников, а именно двум из них.

Алгоритм Марзулло, пример №2
Marzullo's algorithm, example#2

Наконец, если диапазоны [8,9], [8,12] и [10,12], то оба интервала [8,9] и [10,12] соответствуют наибольшему количеству источников.

Алгоритм Марзулло, пример №3
Marzullo's algorithm, example#3

Эта процедура определяет интервал. Если желаемый результат — лучшее значение из этого интервала, то наивным подходом было бы принять в качестве значения центр интервала, как это было указано в исходном алгоритме Марзулло. Более сложный подход позволил бы признать, что это может привести к выбрасыванию полезной информации из доверительных интервалов источников и что вероятностная модель источников может возвращать значение, отличное от центра.

Обратите внимание, что вычисленное значение, вероятно, лучше описать как «оптимистическое», а не «оптимальное». Например, рассмотрим три интервала [10,12], [11, 13] и [11,99,13]. Алгоритм, описанный ниже, вычисляет [11,99, 12] или 11,995 ± 0,005, что является очень точным значением. Если мы подозреваем, что одна из оценок может быть неверной, то по крайней мере две оценки должны быть правильными. При этом условии наилучшая оценка — это [11,13], поскольку это самый большой интервал, который всегда пересекает хотя бы две оценки. Описанный ниже алгоритм легко параметризуется с максимальным количеством неверных оценок.

Алгоритм Марзулло начинается с подготовки таблицы источников, ее сортировки и последующего поиска (эффективного) пересечения интервалов. Для каждого источника существует диапазон [c−r,c+r], определяемый c ± r. Для каждого диапазона таблица будет иметь два кортежа вида ⟨offset,type⟩ . Один кортеж будет представлять начало диапазона, отмеченного типом -1 как ⟨c-r,-1⟩, а другой будет представлять конец диапазона с типом +1 как ⟨c+r,+1⟩ .

В описании алгоритма используются следующие переменные: best (наибольшее количество найденных перекрывающихся интервалов), cnt (текущее количество перекрывающихся интервалов), beststart и bestend (начало и конец найденного лучшего интервала), i (индекс). и таблица кортежей.

  1. Постройте таблицу кортежей.
  2. Отсортируйте таблицу по смещению. (Если существуют два кортежа с одинаковым смещением, но противоположными типами, что указывает на то, что один интервал заканчивается одновременно с началом другого, то необходим метод определения того, какой из них наступит первым. Такое явление можно рассматривать как перекрытие без продолжительности, которую можно найти по алгоритму, поставив тип -1 перед типом +1. Если такие патологические совпадения считаются нежелательными, их можно избежать, поставив в этом случае тип +1 перед -1.)
  3. [инициализировать] best=0 cnt=0
  4. [цикл] пройти по каждому кортежу в таблице в порядке возрастания
  1. [текущее количество перекрывающихся интервалов] cnt=cnt-type[i]
  2. если cnt>best, то best=cnt beststart=offset[i] bestend=offset[i+1]
комментарий: следующий кортеж в [i+1] будет либо концом интервала (type=+1), и в этом случае он заканчивает этот лучший интервал, либо началом интервала (type=-1 ) и на следующем этапе заменим best.
двусмысленность: не указано, что делать, если best=cnt. Это условие ничьей для наибольшего перекрытия. Можно принять решение либо взять меньшее из значений bestend-beststart и offset[i+1]-offset[i], либо просто взять произвольную одну из двух одинаково хороших записей. Это решение актуально только тогда, когда type[i+1]=+1.
  1. [конечный цикл] возвращает [beststart,bestend] как оптимальный интервал. Количество ложных источников (тех, которые не перекрывают возвращаемый оптимальный интервал) равно количеству источников минус значение лучшего.

Эффективность

[ редактировать ]

Алгоритм Марзулло эффективен как в пространстве, так и во времени. Использование асимптотического пространства равно O(n) , где n — количество источников. Принимая во внимание асимптотическое требование времени, можно считать, что алгоритм состоит из построения таблицы, ее сортировки и поиска. Сортировка может выполняться за время O(n log n), и это доминирует над этапами построения и поиска, которые могут выполняться за линейное время. Следовательно, временная эффективность алгоритма Марзулло равна O(n log n) .

После того как таблица построена и отсортирована, можно обновлять интервал для одного источника (при поступлении новой информации) в линейном времени. Следовательно, обновление данных для одного источника и поиск наилучшего интервала можно выполнить за время O(n).

  • Марзулло, штат Калифорния (февраль 1984 г.). Поддержание времени в распределенной системе: пример слабосвязанного распределенного сервиса . доктор философии диссертация (Thesis). Кафедра электротехники. Стэнфордский университет. АСИН   B000710CSC . ОСЛК   38621764 . ДДК 3781.1984 М.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1c89fa61ef2a131cd813be13edf1606b__1719529680
URL1:https://arc.ask3.ru/arc/aa/1c/6b/1c89fa61ef2a131cd813be13edf1606b.html
Заголовок, (Title) документа по адресу, URL1:
Marzullo's algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)