Кіріспе

Нүктелер жиынтығында дөңгелек қабықшаны есептеу алгоритмі. Есептеу геометриясында, "сыйлық орау" алгоритмі – берілген нүктелер жиынтығының дөңгелек қабықшасын есептеуге арналған алгоритм.

Жазық корпус

Екі өлшемді жағдайда алгоритм Р. А. Джарвистің 1973 жылы жариялаған еңбегінен кейін «Джарвис маршы» деп те аталады; оның уақыт күрделілігі O(nh) тең, мұнда n – нүктелер саны, ал h – дөңгелек қабықшадағы нүктелер саны. Нақты қолданыстағы өнімділігі басқа дөңгелек қабықша алгоритмдерімен салыстырғанда n кішкентай болғанда немесе h-ның n-ге қатысты өте кішкентай болуы күтілгенде жақсы. Жалпы жағдайларда бұл алгоритм көптеген басқа алгоритмдерден кем нәтиже береді (Дөңгелек қабықша алгоритмдеріне қараңыз).

Алгоритм

Қарапайымдылық үшін, төмендегі сипаттама нүктелердің жалпы жағдайда орналасқанын, яғни үш нүкте бір түзуде жатпайтынын қарастырады. Алгоритмді түзу бойында жату жағдайларын ескеру үшін оңай өзгертуге болады, соның ішінде тек шекті нүктелерді (дөңгес қабықтың төбелері) немесе дөңгес қабықта жатқан барлық нүктелерді көрсету керектігін таңдау мүмкіндігі де бар. Сондай-ақ, толыққанды іске асыру дөңгес қабықтың тек 1 немесе 2 төбесі бар ерекше жағдайларды, сондай-ақ компьютерлік есептеулер мен кіріс деректерінің шектеулі арифметикалық дәлдігі мәселелерін де шешуі керек. Сыйлық орау алгоритмі i=0 және дөңгес қабықтағы белгілі бір нүкте p0-ден басталады (мысалы, ең сол жақтағы нүкте), содан кейін барлық нүктелер pi және pi+1 түзуінің оң жағында болатындай pi+1 нүктесі таңдалады. Бұл нүкте полярлық координаттардың центрі ретінде алынған pi нүктесіне қатысты барлық нүктелердің полярлық бұрыштарын салыстыру арқылы O(n) уақытта табылуы мүмкін. i=i+1 деп қойып, ph=p0 нүктесіне қайта оралуға дейін қайталау арқылы h қадамда дөңгес қабық құрылады. Екі өлшемде сыйлық орау алгоритмі нүктелер жиынының айналасына жіпті (немесе қағазды) орау процесіне ұқсас. Бұл тәсілді жоғары өлшемдерге де қолдануға болады.

Күрделілігі

Ішкі цикл S жиынтығындағы әрбір нүктені тексереді, ал сыртқы цикл қабыршақтағы әрбір нүкте үшін қайталанады. Сондықтан, жалпы орындалу уақыты шығыстың мөлшеріне байланысты, демек Джарвис маршы – шығысқа сезімтал алгоритм. Бірақ, орындалу уақыты қабыршақ төбелерінің санына тура пропорционалды болғандықтан, ол Грэм сканы сияқты алгоритмдерден тек қана қабыршақ төбелерінің саны h, log n-ден кіші болған жағдайда ғана жылдам. Чан алгоритмі, тағы бір дөңес қабыршақ алгоритмі, Грэм сканының логарифмдік тәуелділігін және сыйлық орауыш алгоритмінің шығысқа сезімталдығын біріктіріп, Грэм сканы мен сыйлық орауыштан жақсырақ асимптотикалық орындалу уақытына жетеді.