Kesishish algoritmi - Intersection algorithm

The kesishish algoritmi - bu aniq vaqtni taxmin qilish uchun manbalarni tanlash uchun ishlatiladigan bitim algoritmi shovqinli vaqt manbalari. Bu zamonaviyning bir qismini tashkil etadi Tarmoq uchun vaqt protokoli. Bu o'zgartirilgan shakl Marzullo algoritmi.[1][2]

Marzullo algoritmi eng ko'p sonli manbalarga mos keladigan eng kichik intervalni qaytaradigan bo'lsa, qaytarilgan interval chorrahadagi barcha manbalarning markaziy nuqtasini (hisoblangan ofset) o'z ichiga olmaydi. Kesish algoritmi Marzullo algoritmi bilan qaytarilgan intervalni qaytaradi, lekin markaziy nuqtalarni o'z ichiga olganligi sababli kattaroq bo'lishi mumkin. Ushbu kattaroq interval oralig'idagi nuqtani tanlash uchun qo'shimcha statistik ma'lumotlardan foydalanishga imkon beradi chayqalish takroriy ijroda.

Usul

Berilgan M shaklning intervallari v ± r (bu degani [vr,v+r]), algoritm bilan intervalni topishga intiladi Mf manbalar. Qiymat f falsetickerlar soni, xato manbalari deb ataladi (haqiqiy qiymati tashqarida ishonch guruhi ). Eng yaxshi taxmin - bu soxtalashtiruvchilarning eng kam sonini taxmin qiladigan, f. Natijalar haqiqiy deb hisoblanadi f < M/ 2, aks holda algoritm interval o'rniga muvaffaqiyatsizlikni qaytaradi.

Kesish algoritmi katakchalari jadvalini yaratishdan boshlanadi. Har bir interval uchun uchta yozuv mavjud: pastki uchi, o'rta va yuqori so'nggi nuqta, navbati bilan -1, 0 va +1 turlari bilan etiketlangan. Shunday qilib interval v ± r natijalar <vr,−1>, <v, 0> va <v+r, + 1>. Keyin ushbu yozuvlar ofset bo'yicha tartiblanadi.

O'zgaruvchilar: Ushbu algoritm foydalanadi f soxta belgilar soni sifatida, endcount va o'rta hisob butun sonlar. Pastroq va yuqori ofset qiymatlari.

  1. [initialize best f] bilan boshlang f= 0, barcha kirish intervallari to'g'ri bo'lsa. Har safar biron bir interval topilmaguncha f yoki interval topilmaguncha ko'paytiriladi f ≥ M/2.
  2. [boshlash] endcount= 0 va o'rta hisob=0.
  3. [pastki so'nggi nuqtani toping] Ro'yxatning boshidan boshlang (eng past ofset) har bir katakchani tartibda ko'rib chiqing. endcount = endcountturi. Agar endcount ≥ Mf keyin pastki = ofset va 3-qadamni oldik, chunki (mumkin) pastki so'nggi nuqta topildi. Agar turi = 0 keyin o'rta hisob = o'rta hisob+1. Keyingi katak bilan takrorlang. Agar ro'yxat oxiriga yetgan bo'lsa, unda 6-bosqichga o'ting.
  4. [taxminiy pastki so'nggi nuqta topildi, yuqori so'nggi nuqtani topish uchun boshlang] to'plami endcount=0.
  5. [oraliq nuqtalar sonini aniqlang] Ro'yxat oxiridan boshlang va pastki ofsetlarga qarab harakat qiling. endcount = endcount+turi. Agar endcount ≥ Mf keyin yuqori = ofset, 5-qadam. Agar turi = 0 keyin o'rta hisob = o'rta hisob+1. Keyingi katakka takrorlang. Agar ro'yxat oxiriga yetsa, 6-bosqichga o'ting.
  6. agar pastki ≤ yuqori va o'rta hisob ≤ f keyin qaytish oralig'i [pastroq nuqta,yuqori nuqta] natijada ishonch oralig'i.
  7. [soxtalashtiruvchilar sonining ortishi] f = f+1. Agar f ≥ M/ 2 ni bekor qiling va FAILED-ni qaytaring, aks holda 1-bosqichga o'ting.

Adabiyotlar

  1. ^ "RFC 1305 - Tarmoq vaqt protokoli (3-versiya) spetsifikatsiyasi, tatbiq etilishi va tahlili". tools.ietf.org. 2013. Olingan 6 oktyabr, 2013. Raqamli vaqt xizmati funktsional spetsifikatsiyasi T.1.0.5 versiyasi. Raqamli uskunalar korporatsiyasi, 1989 y.
  2. ^ Raqamli vaqt xizmati funktsional spetsifikatsiyasi T.1.0.5 versiyasi. DigitalEquipment korporatsiyasi, 1989 yil.