{"id":482096,"date":"2026-06-02T12:43:57","date_gmt":"2026-06-02T12:43:57","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=482096"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=482096","title":{"rendered":"\u0423\u0441\u043a\u043e\u0440\u044f\u0435\u043c \u0432 10+ \u0440\u0430\u0437 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u043d\u0430 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u0430\u0445"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u041a\u0430\u043a-\u0442\u043e, \u043f\u0440\u0438 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 C++ \u043d\u043e\u0432\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432, \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0443\u0440\u0430\u043c\u0438. \u041a\u043e\u043d\u0442\u0443\u0440\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0441\u043e\u0431\u043e\u0439 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0438\u0437 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430. \u00a0<\/em><\/p>\n<p><em>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0439 \u043c\u043d\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u0438 \u0435\u0433\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/em><\/p>\n<h2>\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 (brute force).<\/h2>\n<p>\u0418\u043c\u0435\u0435\u0442\u0441\u044f 2 \u043a\u043e\u043d\u0442\u0443\u0440\u0430: <img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7f\/7fc\/7fc56270e7a70fa81a5935b72eacbe29.svg\" width=\"12\" height=\"12\" data-width=\"1.697\" data-height=\"1.62\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7f\/7fc\/7fc56270e7a70fa81a5935b72eacbe29.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7f\/7fc\/7fc56270e7a70fa81a5935b72eacbe29.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg\" width=\"12\" height=\"12\" data-width=\"1.717\" data-height=\"1.545\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"A[i]\" alt=\"A[i]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg\" width=\"24\" height=\"16\" data-width=\"3.735\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0438\u0437 \u043a\u043e\u043d\u0442\u0443\u0440\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg\" width=\"12\" height=\"12\" data-width=\"1.717\" data-height=\"1.545\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043f\u0443\u0441\u0442\u044c \u044d\u0442\u043e \u0442\u043e\u0447\u043a\u0430<img decoding=\"async\" class=\"formula inline\" source=\"B[j]\" alt=\"B[j]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d4\/d4f\/d4f2dcfc8b7ed9feda82a157b4949554.svg\" width=\"24\" height=\"16\" data-width=\"3.907\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d4\/d4f\/d4f2dcfc8b7ed9feda82a157b4949554.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d4\/d4f\/d4f2dcfc8b7ed9feda82a157b4949554.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u0422\u043e\u0433\u0434\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"D[i] = distance(A[i], B[j])\" alt=\"D[i] = distance(A[i], B[j])\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/69\/696\/696d85f5ccd7e955efad7a784afaacd7.svg\" width=\"200\" height=\"16\" data-width=\"25.761\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/69\/696\/696d85f5ccd7e955efad7a784afaacd7.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/69\/696\/696d85f5ccd7e955efad7a784afaacd7.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043c\u044b \u043d\u0430\u0448\u043b\u0438 \u0432\u0441\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0431\u0435\u0440\u0435\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0437 \u043d\u0438\u0445: <\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"h(A, B) = max(D[0]...D[n-1]). \" alt=\"h(A, B) = max(D[0]...D[n-1]). \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c8\/c8d\/c8dd78e3402b4d8de59cc3ea09b32435.svg\" width=\"264\" height=\"16\" data-width=\"33.033\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c8\/c8d\/c8dd78e3402b4d8de59cc3ea09b32435.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c8\/c8d\/c8dd78e3402b4d8de59cc3ea09b32435.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"h(A, B)\" alt=\"h(A, B)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/11\/114\/114a3d61e1753c0a7f89a1a678a0ca93.svg\" width=\"56\" height=\"16\" data-width=\"7.483\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/11\/114\/114a3d61e1753c0a7f89a1a678a0ca93.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/11\/114\/114a3d61e1753c0a7f89a1a678a0ca93.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"h(B, A)\" alt=\"h(B, A)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/77\/77c\/77cc8870323810b78b4f18d92b3f048d.svg\" width=\"56\" height=\"16\" data-width=\"7.483\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/77\/77c\/77cc8870323810b78b4f18d92b3f048d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/77\/77c\/77cc8870323810b78b4f18d92b3f048d.svg 781w\" loading=\"lazy\" decode=\"async\"\/><em>(\u0440\u0438\u0441 1).<\/em> \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u0442\u0430\u043a:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"H(A, B) = max(h(A, B), h(B, A)) \" alt=\"H(A, B) = max(h(A, B), h(B, A)) \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/a3\/a3d\/a3d33886faf9a6a61c46b7e4db885d7d.svg\" width=\"264\" height=\"16\" data-width=\"33.417\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/a3\/a3d\/a3d33886faf9a6a61c46b7e4db885d7d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/a3\/a3d\/a3d33886faf9a6a61c46b7e4db885d7d.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"h(A, B)\" alt=\"h(A, B)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/11\/114\/114a3d61e1753c0a7f89a1a678a0ca93.svg\" width=\"56\" height=\"16\" data-width=\"7.483\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/11\/114\/114a3d61e1753c0a7f89a1a678a0ca93.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/11\/114\/114a3d61e1753c0a7f89a1a678a0ca93.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"h(B, A)\" alt=\"h(B, A)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/77\/77c\/77cc8870323810b78b4f18d92b3f048d.svg\" width=\"56\" height=\"16\" data-width=\"7.483\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/77\/77c\/77cc8870323810b78b4f18d92b3f048d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/77\/77c\/77cc8870323810b78b4f18d92b3f048d.svg 781w\" loading=\"lazy\" decode=\"async\"\/>(\u0440\u0438\u0441 1). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u0442\u0430\u043a:<\/p>\n<figure class=\"bordered full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d8f\/fd3\/d3b\/d8ffd3d3b5f09765f5a9cee1a3cb4a18.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1. \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 h(A, B) \u0438 h(B, A)\" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1. \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 h(A, B) \u0438 h(B, A)\" width=\"568\" height=\"312\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d8f\/fd3\/d3b\/d8ffd3d3b5f09765f5a9cee1a3cb4a18.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d8f\/fd3\/d3b\/d8ffd3d3b5f09765f5a9cee1a3cb4a18.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1. \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 h(A, B) \u0438 h(B, A)<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f: \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0443\u0440\u0430 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e. \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432 \u0440\u0430\u0432\u043d\u044b <img decoding=\"async\" class=\"formula inline\" source=\"n\" alt=\"n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7b\/7b8\/7b8b965ad4bca0e41ab51de7b31363a1.svg\" width=\"12\" height=\"12\" data-width=\"1.357\" data-height=\"1.025\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7b\/7b8\/7b8b965ad4bca0e41ab51de7b31363a1.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7b\/7b8\/7b8b965ad4bca0e41ab51de7b31363a1.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"m\" alt=\"m\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/6f\/6f8\/6f8f57715090da2632453988d9a1501b.svg\" width=\"12\" height=\"12\" data-width=\"1.986\" data-height=\"1.025\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/6f\/6f8\/6f8f57715090da2632453988d9a1501b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/6f\/6f8\/6f8f57715090da2632453988d9a1501b.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0442\u043e \u043e\u0434\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0437\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"O (n * m)\" alt=\"O (n * m)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/81\/816\/816cfa647d93c28caeb3033e962acc53.svg\" width=\"64\" height=\"16\" data-width=\"8.967\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/81\/816\/816cfa647d93c28caeb3033e962acc53.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/81\/816\/816cfa647d93c28caeb3033e962acc53.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, <em>(\u0441\u043c. \u0440\u0438\u0441 2) <\/em>\u0430 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u0432\u0443\u0445 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u0432.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/054\/d6d\/eac\/054d6deac4c79ee6518456f1c38801ee.gif\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 2. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 brute-force \u043e\u0431\u0445\u043e\u0434: \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 A \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 B\" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 2. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 brute-force \u043e\u0431\u0445\u043e\u0434: \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 A \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 B\" width=\"780\" height=\"608\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/054\/d6d\/eac\/054d6deac4c79ee6518456f1c38801ee.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/054\/d6d\/eac\/054d6deac4c79ee6518456f1c38801ee.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 2. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 brute-force \u043e\u0431\u0445\u043e\u0434: \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 A \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 B<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 brute-force-\u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u044b \u0442\u043e\u0447\u0435\u043a \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u043a\u043e\u043d\u0442\u0443\u0440\u0430. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0442\u043e\u0447\u043d\u043e, \u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e\u0440\u043e\u0433\u0438\u043c \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u043e\u0447\u0435\u043a \u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432. <strong><em>\u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u0434\u043e\u0440\u043e\u0433\u043e.<\/em><\/strong><\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0441\u0435\u0434\u0432\u043e\u043a\u043e\u0434 brute force<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>directedHausdorff(A, B):    maxMin = 0    for a in A:        minDist = infinity        for b in B:            minDist = min(minDist, distance(a, b))        maxMin = max(maxMin, minDist)    return maxMin<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<h2>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u0441 \u0440\u0430\u043d\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c (brute force with early break).<\/h2>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u0447\u043d\u043e\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0443\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0440\u0430\u043d\u043d\u0435\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 \u043d\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"i-\u0439\" alt=\"i-\u0439\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7a\/7a4\/7a4fede3929ddc1a1aa808360a0c166f.svg\" width=\"32\" height=\"16\" data-width=\"4.904\" data-height=\"2.149\" data-vertical-align=\"-0.452\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7a\/7a4\/7a4fede3929ddc1a1aa808360a0c166f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7a\/7a4\/7a4fede3929ddc1a1aa808360a0c166f.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u043b\u044f <img decoding=\"async\" class=\"formula inline\" source=\"A[i]\" alt=\"A[i]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg\" width=\"24\" height=\"16\" data-width=\"3.735\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0443\u0436\u0435 \u0441\u0442\u0430\u043b \u043c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u0435\u043d \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 <img decoding=\"async\" class=\"formula inline\" source=\"maxMin\" alt=\"maxMin\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg\" width=\"64\" height=\"12\" data-width=\"8.993\" data-height=\"1.57\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0437\u043d\u0430\u0447\u0438\u0442, \u044d\u0442\u0430 \u0442\u043e\u0447\u043a\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"A[i]\" alt=\"A[i]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg\" width=\"24\" height=\"16\" data-width=\"3.735\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0443\u0436\u0435 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c <img decoding=\"async\" class=\"formula inline\" source=\"h(A,B)\" alt=\"h(A,B)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/45\/451\/451a4c4570bb56ca3dd6c97afba68a5e.svg\" width=\"56\" height=\"16\" data-width=\"7.483\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/45\/451\/451a4c4570bb56ca3dd6c97afba68a5e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/45\/451\/451a4c4570bb56ca3dd6c97afba68a5e.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430. \u042d\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u044b\u043c. \u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0434\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c. <em>(\u0441\u043c. \u0440\u0438\u0441 3)<\/em><\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3ed\/1c6\/978\/3ed1c697826f9abc970d2536485cfabc.gif\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3. Brute force + early break: \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0446\u0438\u043a\u043b \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0443\u0436\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c maxMin\" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3. Brute force + early break: \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0446\u0438\u043a\u043b \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0443\u0436\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c maxMin\" width=\"780\" height=\"608\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3ed\/1c6\/978\/3ed1c697826f9abc970d2536485cfabc.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3ed\/1c6\/978\/3ed1c697826f9abc970d2536485cfabc.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3. Brute force + early break: \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0446\u0438\u043a\u043b \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0443\u0436\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c maxMin<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0440\u0430\u043d\u043d\u0438\u0439 \u0432\u044b\u0445\u043e\u0434 \u0434\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435.<strong> <em>\u041d\u043e \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. <\/em><\/strong><\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434 brute force + early break<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>directedHausdorffEarlyBreak(A, B):    maxMin = 0    for a in A:        minDist = infinity        for b in B:            d = distance(a, b)            minDist = min(minDist, d)            if minDist &lt;= maxMin:                break        maxMin = max(maxMin, minDist)    return maxMin<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<h3>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u0440\u0430\u043d\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c (shuffling with early break)<\/h3>\n<p>\u0418\u0434\u0435\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0445\u043e\u0434\u0430 \u0442\u043e\u0447\u0435\u043a \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432 <img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7f\/7fc\/7fc56270e7a70fa81a5935b72eacbe29.svg\" width=\"12\" height=\"12\" data-width=\"1.697\" data-height=\"1.62\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7f\/7fc\/7fc56270e7a70fa81a5935b72eacbe29.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7f\/7fc\/7fc56270e7a70fa81a5935b72eacbe29.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg\" width=\"12\" height=\"12\" data-width=\"1.717\" data-height=\"1.545\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u0442\u044c, \u0442\u043e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u043d\u043d\u0435\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0438. \u041c\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0442\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u043e\u0447\u043a\u0443, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 <img decoding=\"async\" class=\"formula inline\" source=\"minDist\" alt=\"minDist\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5f\/5ff\/5ffc6b06867d8f094825496b57b34efc.svg\" width=\"64\" height=\"12\" data-width=\"8.656\" data-height=\"1.57\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5f\/5ff\/5ffc6b06867d8f094825496b57b34efc.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5f\/5ff\/5ffc6b06867d8f094825496b57b34efc.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0443\u0436\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u0435\u043d <img decoding=\"async\" class=\"formula inline\" source=\"maxMin\" alt=\"maxMin\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg\" width=\"64\" height=\"12\" data-width=\"8.993\" data-height=\"1.57\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0438 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0435\u0441\u044c \u0446\u0438\u043a\u043b. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043b\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0444\u0438\u0433\u0443\u0440. \u041d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 (\u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432) \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0442\u0440\u0430\u0442 \u043d\u0430 \u0441\u0430\u043c\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 (shuffling). \u0410 \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u043e\u0431\u0445\u043e\u0434\u0430. \u041f\u043e\u0445\u043e\u0436\u0430\u044f \u0438\u0434\u0435\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 directed_hausdorff \u0438\u0437 SciPy, \u0433\u0434\u0435 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u043e\u0447\u0435\u043a \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u043d\u043d\u0435\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430. <em>(\u0441\u043c. \u0440\u0438\u0441\u0443\u043d\u043e\u043a 4)<\/em><\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2aa\/002\/80f\/2aa00280f6e68a95261730d881f30092.gif\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4. Shuffling + early break: \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0445\u043e\u0434\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0430\u0442\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u0442\u043e\u0447\u043a\u0443\" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4. Shuffling + early break: \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0445\u043e\u0434\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0430\u0442\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u0442\u043e\u0447\u043a\u0443\" width=\"780\" height=\"608\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2aa\/002\/80f\/2aa00280f6e68a95261730d881f30092.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2aa\/002\/80f\/2aa00280f6e68a95261730d881f30092.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4. Shuffling + early break: \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0445\u043e\u0434\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0430\u0442\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u0442\u043e\u0447\u043a\u0443<\/em><\/figcaption><\/div>\n<\/figure>\n<p><strong>\u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u00a0\u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u043c\u0438 \u0440\u0430\u0441\u0445\u043e\u0434\u0430\u043c\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f, \u0431\u044b\u043b\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0439 \u0434\u043b\u044f \u0432\u044b\u043f\u0443\u0441\u043a\u0430. <\/strong><\/p>\n<h2>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b KD-tree.<\/h2>\n<p>\u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 KD-tree. \u0418\u0434\u0435\u044f \u0442\u0430\u043a\u0430\u044f: \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"A[i]\" alt=\"A[i]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg\" width=\"24\" height=\"16\" data-width=\"3.735\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 \u043a\u043e\u043d\u0442\u0443\u0440\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg\" width=\"12\" height=\"12\" data-width=\"1.717\" data-height=\"1.545\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c spatial index \u043f\u043e \u0442\u043e\u0447\u043a\u0430\u043c <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg\" width=\"12\" height=\"12\" data-width=\"1.717\" data-height=\"1.545\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. Spatial index \u2014 \u044d\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 KD-tree \u0442\u043e\u0447\u043a\u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u0442\u043e \u043f\u043e <img decoding=\"async\" class=\"formula inline\" source=\"x\" alt=\"x\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg\" width=\"12\" height=\"12\" data-width=\"1.294\" data-height=\"1.025\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0442\u043e \u043f\u043e <img decoding=\"async\" class=\"formula inline\" source=\"y\" alt=\"y\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/41\/415\/415290769594460e2e485922904f345d.svg\" width=\"12\" height=\"12\" data-width=\"1.109\" data-height=\"1.464\" data-vertical-align=\"-0.464\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/41\/415\/415290769594460e2e485922904f345d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/41\/415\/415290769594460e2e485922904f345d.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043e\u0431\u0440\u0430\u0437\u0443\u044f \u0434\u0435\u0440\u0435\u0432\u043e. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430 \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"A[i]\" alt=\"A[i]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg\" width=\"24\" height=\"16\" data-width=\"3.735\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0435 \u043f\u043e\u043b\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c, \u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u043c \u043f\u043e \u0434\u0435\u0440\u0435\u0432\u0443 \u0441 \u043e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439, \u0433\u0434\u0435 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0443\u0436\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c <img decoding=\"async\" class=\"formula inline\" source=\"O(m  log m)\" alt=\"O(m  log m)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/4d\/4d7\/4d7e69b3fce57ed1994a93508e323978.svg\" width=\"80\" height=\"16\" data-width=\"10.31\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/4d\/4d7\/4d7e69b3fce57ed1994a93508e323978.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/4d\/4d7\/4d7e69b3fce57ed1994a93508e323978.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043f\u043b\u044e\u0441 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"O(m)\" alt=\"O(m)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/0e\/0e2\/0e2ae329177722b1818828e92b441032.svg\" width=\"40\" height=\"16\" data-width=\"5.473\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/0e\/0e2\/0e2ae329177722b1818828e92b441032.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/0e\/0e2\/0e2ae329177722b1818828e92b441032.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u0422\u043e\u0433\u0434\u0430 \u0432 \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u0438 \u0447\u0430\u0441\u0442\u043e \u0431\u043b\u0438\u0437\u043e\u043a \u043a <img decoding=\"async\" class=\"formula inline\" source=\"O(log m)\" alt=\"O(log m)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/1c\/1c5\/1c50f6a44658a613f7ddf6b3ab123b7c.svg\" width=\"64\" height=\"16\" data-width=\"8.324\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/1c\/1c5\/1c50f6a44658a613f7ddf6b3ab123b7c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/1c\/1c5\/1c50f6a44658a613f7ddf6b3ab123b7c.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u0410 \u043e\u0431\u0449\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 (\u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 + \u043f\u043e\u0438\u0441\u043a) &#8212; <img decoding=\"async\" class=\"formula inline\" source=\"O(m log m + n log m)\" alt=\"O(m log m + n log m)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d1\/d18\/d185c0360ea304ce6951c538c54c98eb.svg\" width=\"152\" height=\"16\" data-width=\"19.27\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d1\/d18\/d185c0360ea304ce6951c538c54c98eb.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d1\/d18\/d185c0360ea304ce6951c538c54c98eb.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0430\u0441\u0438\u043c\u043f\u0442\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0438 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c worst case <img decoding=\"async\" class=\"formula inline\" source=\"O(m  n)\" alt=\"O(m  n)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c8\/c84\/c84e00a28d413ed1bdfbaa84fc1fbd35.svg\" width=\"48\" height=\"16\" data-width=\"6.83\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c8\/c84\/c84e00a28d413ed1bdfbaa84fc1fbd35.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c8\/c84\/c84e00a28d413ed1bdfbaa84fc1fbd35.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u0445. <em>(\u0441\u043c. \u0440\u0438\u0441\u0443\u043d\u043e\u043a 5)<\/em><\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/861\/472\/99c\/86147299ccf96d5f2c65605c5b37815f.gif\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 5. KD-tree baseline: \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u0438 \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430\" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 5. KD-tree baseline: \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u0438 \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430\" width=\"736\" height=\"599\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/861\/472\/99c\/86147299ccf96d5f2c65605c5b37815f.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/861\/472\/99c\/86147299ccf96d5f2c65605c5b37815f.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 5. KD-tree baseline: \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u0438 \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430<\/em><\/figcaption><\/div>\n<\/figure>\n<p><u>\u041d\u043e \u0437\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0432\u0430\u0436\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430:<\/u><\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0432\u00a0KD\u2011tree \u043d\u0435\u00a0\u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a\u043e\u0439\u00a0\u0436\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"O(log m)\" alt=\"O(log m)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/1c\/1c5\/1c50f6a44658a613f7ddf6b3ab123b7c.svg\" width=\"64\" height=\"16\" data-width=\"8.324\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/1c\/1c5\/1c50f6a44658a613f7ddf6b3ab123b7c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/1c\/1c5\/1c50f6a44658a613f7ddf6b3ab123b7c.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043a\u0430\u043a\u00a0\u043f\u043e\u0438\u0441\u043a \u043f\u043e\u00a0\u043a\u043b\u044e\u0447\u0443 \u0432\u00a0\u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0434\u0435\u0440\u0435\u0432\u0435. \u0414\u043b\u044f\u00a0\u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f KD\u2011tree \u043c\u044b \u0434\u0435\u043b\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e <img decoding=\"async\" class=\"formula inline\" source=\"x\" alt=\"x\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg\" width=\"12\" height=\"12\" data-width=\"1.294\" data-height=\"1.025\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043f\u043e\u0442\u043e\u043c \u043f\u043e <img decoding=\"async\" class=\"formula inline\" source=\"y\" alt=\"y\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/41\/415\/415290769594460e2e485922904f345d.svg\" width=\"12\" height=\"12\" data-width=\"1.109\" data-height=\"1.464\" data-vertical-align=\"-0.464\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/41\/415\/415290769594460e2e485922904f345d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/41\/415\/415290769594460e2e485922904f345d.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043f\u043e\u0442\u043e\u043c \u0441\u043d\u043e\u0432\u0430 \u043f\u043e <img decoding=\"async\" class=\"formula inline\" source=\"x\" alt=\"x\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg\" width=\"12\" height=\"12\" data-width=\"1.294\" data-height=\"1.025\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0414\u043b\u044f\u00a0\u043f\u043e\u0438\u0441\u043a\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u043c\u044b \u0438\u0434\u0451\u043c \u0432\u00a0\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u0432\u0435\u0442\u043a\u0443, \u043d\u043e\u00a0\u043f\u043e\u0442\u043e\u043c \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0432\u0435\u0442\u043a\u0438: \u0432\u0434\u0440\u0443\u0433 \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0442\u043e\u0447\u043a\u0430 \u0431\u043b\u0438\u0436\u0435. \u0412\u00a0\u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0435\u0440\u0435\u0432\u043e \u043e\u0442\u0441\u0435\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439, \u0438 \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0437\u043e\u043a \u043a <img decoding=\"async\" class=\"formula inline\" source=\"O(log m)\" alt=\"O(log m)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/1c\/1c5\/1c50f6a44658a613f7ddf6b3ab123b7c.svg\" width=\"64\" height=\"16\" data-width=\"8.324\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/1c\/1c5\/1c50f6a44658a613f7ddf6b3ab123b7c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/1c\/1c5\/1c50f6a44658a613f7ddf6b3ab123b7c.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u041d\u043e\u00a0\u0432\u00a0\u043f\u043b\u043e\u0445\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043e\u0442\u0441\u0435\u0447\u044c \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u043e\u0447\u043a\u0438 \u043b\u0435\u0436\u0430\u0442 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e, \u0434\u0435\u0440\u0435\u0432\u043e \u043d\u0435\u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0437\u0430\u043f\u0440\u043e\u0441 \u0431\u043b\u0438\u0437\u043e\u043a \u043a\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0439, \u0438\u043b\u0438\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u0441\u043e\u0441\u0435\u0434 \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u00ab\u043f\u043e \u0434\u0440\u0443\u0433\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443\u00bb \u043c\u043d\u043e\u0433\u0438\u0445 split\u2011\u043b\u0438\u043d\u0438\u0439. \u0422\u043e\u0433\u0434\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u043e\u0432, \u0432\u00a0\u0445\u0443\u0434\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u00a0\u2014 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438. \u041a\u043e\u043d\u0442\u0443\u0440\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u043c\u043e\u0433\u0443\u0442\u00a0\u0431\u044b\u0442\u044c \u043d\u0435\u00a0\u0441\u0430\u043c\u044b\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u043b\u044f\u00a0KD\u2011tree: \u043e\u043d\u0438 \u043b\u0435\u0436\u0430\u0442 \u043d\u0430\u00a0\u0442\u043e\u043d\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439 \u0432 2D\u2011\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435, \u0430\u00a0\u043d\u0435\u00a0\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c. \u0418\u0437\u2011\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u043f\u043e\u00a0\u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0442\u043e\u0447\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u00a0\u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b split\u2011\u043b\u0438\u043d\u0438\u0439, \u0438 \u0434\u043b\u044f\u00a0\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0442\u043e\u043a.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u00a0KD-tree \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 approximate nearest neighbor search. \u00a0\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0441\u0435 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0442\u043a\u0438 \u0440\u0430\u0434\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438. \u00a0\u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u0441\u043e\u0441\u0435\u0434 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0439\u0434\u0435\u043d \u043d\u0435 \u0442\u043e\u0447\u043d\u043e, \u0430 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u043d\u043e. \u0414\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u044d\u0442\u043e \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e, \u043d\u043e \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432 \u043c\u043d\u0435 \u0431\u044b\u043b \u043d\u0443\u0436\u0435\u043d exact Hausdorff distance.<\/p>\n<p><em>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u0430 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u043d\u0438\u044f \u00a0\u2013 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u043d\u0435\u0441\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432,\u0430 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <\/em>approximate nearest neighbor search)<em> \u00a0\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u0435\u0444\u0435\u043a\u0442\u0430 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e.<\/em><\/p>\n<p><em>\u00a0<\/em><strong><em>\u041a\u0430\u043a \u0438\u0442\u043e\u0433 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u0443\u0436\u0435 shuffling + early break.<\/em><\/strong><\/p>\n<\/li>\n<\/ul>\n<h2>\u0418\u0434\u0435\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430<\/h2>\n<p><em>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f.<\/em><\/p>\n<p><em>Brute force \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u0440\u043e\u0433\u043e\u0439. Early break \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442, \u043d\u043e \u0432\u0441\u0435 \u0435\u0449\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u043e\u0447\u043a\u0438 \u0432 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. Shuffling \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0440\u0430\u043d\u043d\u0435\u043c\u0443 \u0432\u044b\u0445\u043e\u0434\u0443, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432. KD-tree \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430 \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u043e\u0447\u0435\u043a.<\/em><\/p>\n<p><em> \u0410 \u0432\u0435\u0434\u044c \u0432 \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0442\u043e\u0447\u043a\u0438 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u044b. \u0415\u0441\u043b\u0438 <\/em><img decoding=\"async\" class=\"formula inline\" source=\"A[i]\" alt=\"A[i]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg\" width=\"24\" height=\"16\" data-width=\"3.735\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 781w\" loading=\"lazy\" decode=\"async\"\/><em> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 <\/em><img decoding=\"async\" class=\"formula inline\" source=\"B[j]\" alt=\"B[j]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d4\/d4f\/d4f2dcfc8b7ed9feda82a157b4949554.svg\" width=\"24\" height=\"16\" data-width=\"3.907\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d4\/d4f\/d4f2dcfc8b7ed9feda82a157b4949554.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d4\/d4f\/d4f2dcfc8b7ed9feda82a157b4949554.svg 781w\" loading=\"lazy\" decode=\"async\"\/><em>, \u0442\u043e \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 <\/em><img decoding=\"async\" class=\"formula inline\" source=\"A[i + 1]\" alt=\"A[i + 1]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/71\/710\/710adf677e5403ffd60908c70afd8b19.svg\" width=\"56\" height=\"16\" data-width=\"7.632\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/71\/710\/710adf677e5403ffd60908c70afd8b19.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/71\/710\/710adf677e5403ffd60908c70afd8b19.svg 781w\" loading=\"lazy\" decode=\"async\"\/><em> \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0433\u0434\u0435-\u0442\u043e \u0440\u044f\u0434\u043e\u043c \u0441 <\/em><img decoding=\"async\" class=\"formula inline\" source=\"B[j]\" alt=\"B[j]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d4\/d4f\/d4f2dcfc8b7ed9feda82a157b4949554.svg\" width=\"24\" height=\"16\" data-width=\"3.907\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d4\/d4f\/d4f2dcfc8b7ed9feda82a157b4949554.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d4\/d4f\/d4f2dcfc8b7ed9feda82a157b4949554.svg 781w\" loading=\"lazy\" decode=\"async\"\/><em>, \u0430 \u043d\u0435 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043a\u043e\u043d\u0442\u0443\u0440\u0430. \u0418\u043c\u0435\u043d\u043d\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0438 \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f.<\/em><\/p>\n<h2>\u041d\u043e\u0432\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0442\u043e\u0447\u0435\u043a \u0438 \u0440\u0430\u043d\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c (contour-coherent)<\/h2>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u2013 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"A[i]\" alt=\"A[i]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg\" width=\"24\" height=\"16\" data-width=\"3.735\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u043a\u043e\u043d\u0442\u0443\u0440\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg\" width=\"12\" height=\"12\" data-width=\"1.717\" data-height=\"1.545\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043d\u0435 \u0441 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430, \u0430 \u0441 <img decoding=\"async\" class=\"formula inline\" source=\"startPoint = closestPrevious + 1\" alt=\"startPoint = closestPrevious + 1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/be\/be9\/be9425c2678a18bf22fc96859e21fb52.svg\" width=\"264\" height=\"12\" data-width=\"33.425\" data-height=\"1.756\" data-vertical-align=\"-0.186\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/be\/be9\/be9425c2678a18bf22fc96859e21fb52.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/be\/be9\/be9425c2678a18bf22fc96859e21fb52.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u00a0\u0413\u0434\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"closestPrevious\" alt=\"closestPrevious\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e\/e0\/e06\/e0671b98cfa593d11ddbc09e09f26b1b.svg\" width=\"120\" height=\"12\" data-width=\"15.848\" data-height=\"1.595\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e\/e0\/e06\/e0671b98cfa593d11ddbc09e09f26b1b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e\/e0\/e06\/e0671b98cfa593d11ddbc09e09f26b1b.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u2013 \u0442\u043e\u0447\u043a\u0430 \u043d\u0430 \u043a\u043e\u043d\u0442\u0443\u0440\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg\" width=\"12\" height=\"12\" data-width=\"1.717\" data-height=\"1.545\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f <img decoding=\"async\" class=\"formula inline\" source=\"i-1\" alt=\"i-1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/80\/800\/800ba394e806c049c98cf4b570d04c72.svg\" width=\"32\" height=\"12\" data-width=\"4.677\" data-height=\"1.692\" data-vertical-align=\"-0.186\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/80\/800\/800ba394e806c049c98cf4b570d04c72.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/80\/800\/800ba394e806c049c98cf4b570d04c72.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"A[i-1]\" alt=\"A[i-1]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/3d\/3d7\/3d7aca9957f4bff18dfc121c6e797196.svg\" width=\"56\" height=\"16\" data-width=\"7.632\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/3d\/3d7\/3d7aca9957f4bff18dfc121c6e797196.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/3d\/3d7\/3d7aca9957f4bff18dfc121c6e797196.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0434\u043e <img decoding=\"async\" class=\"formula inline\" source=\"B[closestPrevious]\" alt=\"B[closestPrevious]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/cc\/cc2\/cc28d5511eee7cbd219b5da6a08176b3.svg\" width=\"144\" height=\"16\" data-width=\"18.824\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/cc\/cc2\/cc28d5511eee7cbd219b5da6a08176b3.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/cc\/cc2\/cc28d5511eee7cbd219b5da6a08176b3.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u0442\u043e \u043b\u0438\u0431\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 <img decoding=\"async\" class=\"formula inline\" source=\"maxMin\" alt=\"maxMin\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg\" width=\"64\" height=\"12\" data-width=\"8.993\" data-height=\"1.57\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043b\u0438\u0431\u043e \u043c\u0435\u043d\u044c\u0448\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0446\u0438\u043a\u043b\u0435 \u043c\u044b \u0432\u044b\u0448\u043b\u0438 \u043f\u043e earlyBreak. \u041e\u0431\u0445\u043e\u0434\u0438\u043c \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u043a\u043e\u043d\u0442\u0443\u0440\u0435<img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg\" width=\"12\" height=\"12\" data-width=\"1.717\" data-height=\"1.545\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u00a0\u0432\u043b\u0435\u0432\u043e \u0438 \u0432\u043f\u0440\u0430\u0432\u043e \u043e\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"startPoint\" alt=\"startPoint\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/2a\/2a1\/2a1a67b5cd6e7bde33e4239208541e7f.svg\" width=\"80\" height=\"12\" data-width=\"10.663\" data-height=\"1.57\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/2a\/2a1\/2a1a67b5cd6e7bde33e4239208541e7f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/2a\/2a1\/2a1a67b5cd6e7bde33e4239208541e7f.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435: <\/p>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"startPoint, startPoint -1, startPoint+1, startPoint -2, startPoint + 2\" alt=\"startPoint, startPoint -1, startPoint+1, startPoint -2, startPoint + 2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/fb\/fb2\/fb26173153968bd4c88d6011bcc4ae68.svg\" width=\"576\" height=\"12\" data-width=\"72.926\" data-height=\"1.984\" data-vertical-align=\"-0.439\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/fb\/fb2\/fb26173153968bd4c88d6011bcc4ae68.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/fb\/fb2\/fb26173153968bd4c88d6011bcc4ae68.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2026 <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b, \u0438\u0434\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u043c. \u0421\u0443\u0442\u044c \u2013 \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0446\u0438\u043a\u043b\u0430 \u043f\u043e earlyBreak. \u0422\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u043d\u0435 \u0441\u0442\u0440\u043e\u0438\u043c \u0434\u0435\u0440\u0435\u0432\u043e, \u043d\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u043c \u0442\u043e\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u043c B \u0432 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u0430\u0447\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. <em>(\u0441\u043c. \u0440\u0438\u0441\u0443\u043d\u043e\u043a 6)<\/em><\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ee7\/730\/7f6\/ee77307f631f7cc05f6b7062e97a8c79.gif\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 6. Contour-coherent \u043e\u0431\u0445\u043e\u0434: \u043f\u043e\u0438\u0441\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441 bestIndex \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438    \" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 6. Contour-coherent \u043e\u0431\u0445\u043e\u0434: \u043f\u043e\u0438\u0441\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441 bestIndex \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438    \" width=\"760\" height=\"660\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ee7\/730\/7f6\/ee77307f631f7cc05f6b7062e97a8c79.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ee7\/730\/7f6\/ee77307f631f7cc05f6b7062e97a8c79.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 6. Contour-coherent \u043e\u0431\u0445\u043e\u0434: \u043f\u043e\u0438\u0441\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441 bestIndex \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438<\/em>    <\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043d\u0430 \u00ab\u0441\u043f\u0443\u0441\u043a\u0430\u0445\u00bb \u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e <img decoding=\"async\" class=\"formula inline\" source=\"maxMin\" alt=\"maxMin\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg\" width=\"64\" height=\"12\" data-width=\"8.993\" data-height=\"1.57\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e. <\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434 Contour-Coherent<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>directedHausdorffContourCoherent(A, B):    maxMin = 0    startIndex = 0    for i in 0 .. A.size - 1:        minDist = infinity        bestIndex = startIndex        for j in indicesAround(startIndex, B.size):            d = distance(A[i], B[j])            if d &lt; minDist:                minDist = d                bestIndex = j            if minDist &lt;= maxMin:                break        maxMin = max(maxMin, minDist)        startIndex = bestIndex + 1    return maxMin<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0413\u0434\u0435<img decoding=\"async\" class=\"formula inline\" source=\" indicesAround(startIndex, size)\" alt=\" indicesAround(startIndex, size)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/56\/56f\/56f275d3a76dafcef0e6c09199dec97f.svg\" width=\"256\" height=\"16\" data-width=\"32.481\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/56\/56f\/56f275d3a76dafcef0e6c09199dec97f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/56\/56f\/56f275d3a76dafcef0e6c09199dec97f.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435: <img decoding=\"async\" class=\"formula inline\" source=\"startIndex, startIndex - 1, startIndex + 1, startIndex - 2, startIndex + 2 ...\" alt=\"startIndex, startIndex - 1, startIndex + 1, startIndex - 2, startIndex + 2 ...\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e\/e1\/e1d\/e1dc9ca164b27681901610e2effcde3a.svg\" width=\"608\" height=\"16\" data-width=\"76.925\" data-height=\"2.009\" data-vertical-align=\"-0.439\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e\/e1\/e1d\/e1dc9ca164b27681901610e2effcde3a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e\/e1\/e1d\/e1dc9ca164b27681901610e2effcde3a.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<\/div>\n<\/details>\n<p><em>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e? \u041e\u0447\u0435\u043d\u044c! \u041d\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u043a\u043e\u0434, \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u0430\u0445, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439. \u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0434\u0435\u043d\u044c \u0442\u0435\u0441\u0442\u0435\u0440\u044b \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0432\u043e\u0434\u044f\u0442 \u0440\u0443\u043a\u0430\u043c\u0438 \u2013 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u043f\u0430\u0440\u0438\u043b\u0430\u0441\u044c, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 10 \u0440\u0430\u0437!<\/em><\/p>\n<p><em>\u041f\u0435\u0440\u0435\u0440\u044b\u043b\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u2013 \u0442\u0430\u043a\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435\u0442. \u041d\u0443, \u0434\u0443\u043c\u0430\u044e, \u043c\u043e\u0436\u0435\u0442 \u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e? \u041d\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438, \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u0430\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. <\/em><\/p>\n<h3>\u041a\u0430\u043a \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0442\u0435\u0441\u0442\u044b<\/h3>\n<h4>\u041f\u0430\u043a\u0435\u0442\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439    <\/h4>\n<p>\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f: \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0430 \u0444\u043e\u043d\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u043d\u043e\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043d\u0430\u0431\u043e\u0440\u044b \u0432 Computer Vision, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, MPEG7, Kimia99, Kimia216. \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u0430\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432.    <\/p>\n<h4>\u041f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430. \u0418\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0443\u0440\u0430.     <\/h4>\n<p>\u0418\u0437 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u043b\u0441\u044f \u043a\u043e\u043d\u0442\u0443\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e OpenCV \u00a0findContours \u0441 \u0440\u0435\u0436\u0438\u043c\u043e\u043c CHAIN_APPROX_NONE, \u0442\u043e \u0435\u0441\u0442\u044c \u0431\u0435\u0437 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0443\u0440\u0430. \u0415\u0441\u043b\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432, \u0434\u043b\u044f \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u0441\u0430\u043c\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u043d\u0442\u0443\u0440.<\/p>\n<h4>\u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430    <\/h4>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0443\u0440\u044b \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u201c\u043a\u0430\u0436\u0434\u044b\u0439 \u0441 \u043a\u0430\u0436\u0434\u044b\u043c\u201d. \u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u0442\u043e\u0447\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0443\u0440\u044b \u0438 \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f (\u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0437\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f \u0435\u0432\u043a\u043b\u0438\u0434\u043e\u0432\u043e\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u0438).    <\/p>\n<p>\u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b:<\/p>\n<ul>\n<li>\n<p><strong>Contour-Coherent<\/strong> (\u043d\u043e\u0432\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f)    <\/p>\n<\/li>\n<li>\n<p><strong>Shuffling + early break<\/strong>    <\/p>\n<\/li>\n<li>\n<p><strong>brute-force\u00a0 + early break<\/strong>    <\/p>\n<\/li>\n<li>\n<p><strong>Boost.geometry<\/strong> (\u0441\u043a\u043e\u0440\u0435\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438)    <\/p>\n<\/li>\n<li>\n<p><strong>kd-tree<\/strong> (\u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c OpenCV flann). <\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b Contour-Coherent, Shuffling + early break \u00a0\u0438 brute-force\u00a0+ early break \u0431\u044b\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 checks \u2013 \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0442\u043e\u0447\u043a\u0430\u043c\u0438. \u042d\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b, \u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043e\u0431\u044a\u0435\u043c\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. \u0412\u0440\u0435\u043c\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0439, \u043a\u044d\u0448\u0430, shuffle overhead, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<h4>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438<\/h4>\n<p>\u0417\u0430\u043c\u0435\u0440\u044f\u043b\u043e\u0441\u044c: \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440 \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 (\u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430), \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u0430, \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430, \u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e checks \u043d\u0430 \u043f\u0430\u043a\u0435\u0442\u0435, \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e checks \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u0440\u044b, \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 (\u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438)<\/p>\n<h3>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043b\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f<\/h3>\n<h4>\u041b\u0443\u0447\u0448\u0438\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439<\/h4>\n<p>\u041e\u0447\u0435\u043d\u044c \u0431\u043b\u0438\u0437\u043a\u0438\u0435 \u043f\u043e \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u043a\u043e\u043d\u0442\u0443\u0440\u044b (\u043f\u043e\u0438\u0441\u043a \u0434\u0435\u0444\u0435\u043a\u0442\u0430, \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0439). \u042d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0431\u043b\u0438\u0437\u043a\u0438\u0439 \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0441\u043b\u0443\u0447\u0430\u0439: \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u044f, \u043e\u0431\u0449\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u043e\u0447\u0435\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f. <strong>\u0417\u0434\u0435\u0441\u044c \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043e\u0442 2,5 \u0434\u043e 14 \u0440\u0430\u0437 \u0438 \u0432\u044b\u0448\u0435 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 shuffling + early break <\/strong>\u0438 <strong>\u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0432 17\u201377 \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e brute force + early break<\/strong>. \u0414\u043b\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u0437\u044f\u0442\u044b \u043d\u0430\u0431\u043e\u0440\u044b WalkingSilhouette, SmallDeformations, SyntheticDefects, SmallContoursDefects (\u0432\u0441\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430<a href=\"https:\/\/github.com\/Kate-droid-cpu\/contour-coherent-hausdorff\/tree\/main\/TestImages\" rel=\"noopener noreferrer nofollow\"> GitHub<\/a>).<\/p>\n<h4>\u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439<\/h4>\n<p>\u041f\u043e\u0445\u043e\u0436\u0438\u0435 \u043a\u043e\u043d\u0442\u0443\u0440\u044b, \u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043d\u0430\u0431\u043e\u0440\u044b MPEG7\/children, MPEG7\/chopper, MPEG7\/car &#8212; <strong>\u0442\u0443\u0442 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u043e\u0442 1.3 \u0434\u043e 5 \u0440\u0430\u0437 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 shuffle + early break<\/strong>, \u0438 <strong>\u0432 10-12 \u0440\u0430\u0437 \u0434\u043b\u044f brute force + early break<\/strong>.<\/p>\n<h4>C\u043b\u043e\u0436\u043d\u044b\u0439, \u043d\u043e \u0432\u0441\u0435 \u0435\u0449\u0451 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439<\/h4>\n<p>\u041a\u043e\u043d\u0442\u0443\u0440\u044b \u043f\u043e\u0445\u043e\u0436\u0435\u0439, \u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043d\u0435\u0436\u0438\u043d\u043a\u0438 (\u043d\u0430\u0431\u043e\u0440 snowflakes) \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u043e\u0440\u043c\u044b \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u0435\u0442\u0430\u043b\u0435\u0439. \u0415\u0441\u043b\u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u043e\u0447\u0435\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, contour-coherent \u043f\u043e\u0434\u0445\u043e\u0434 \u0432\u0441\u0451 \u0435\u0449\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u2014 <strong>\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0432 2,5 \u0440\u0430\u0437\u0430 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 shuffle + early break <\/strong>\u0438 \u0432 <strong>170 \u0440\u0430\u0437 \u0434\u043b\u044f \u00a0brute force + early break<\/strong> (\u0434\u0430, \u0432 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0445\u043e\u0434\u0430, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0430).    <\/p>\n<h4>\u0413\u0434\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0431\u044b\u043b \u043c\u0435\u043d\u0435\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u043c:<\/h4>\n<ul>\n<li>\n<p>\u041d\u0430 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u0430\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 MPEG7\/phone, Kimia99\/Kimia216, shuffling + early break \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435 contour-coherent: \u043e\u0442 \u043f\u043e\u0447\u0442\u0438 \u043f\u0430\u0440\u0438\u0442\u0435\u0442\u0430 \u0434\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 1.5x \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. <strong>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c contour-coherent \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435 brute force + early break \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 3\u20137 \u0440\u0430\u0437.<\/strong><\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 MPEG7\/Mix, shuffling + early break \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435 contour-coherent \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 4.3 \u0440\u0430\u0437\u0430. \u042d\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430: \u0435\u0441\u043b\u0438 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0434\u043b\u044f<img decoding=\"async\" class=\"formula inline\" source=\" A[i + 1]\" alt=\" A[i + 1]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5d\/5da\/5da82a6177b66958f13bd614179ebeca.svg\" width=\"56\" height=\"16\" data-width=\"7.632\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5d\/5da\/5da82a6177b66958f13bd614179ebeca.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5d\/5da\/5da82a6177b66958f13bd614179ebeca.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0447\u0430\u0441\u0442\u043e \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441<img decoding=\"async\" class=\"formula inline\" source=\" bestIndex\" alt=\" bestIndex\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/12\/12c\/12c172d104aef468ba5218cd52da509b.svg\" width=\"72\" height=\"12\" data-width=\"9.925\" data-height=\"1.595\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/12\/12c\/12c172d104aef468ba5218cd52da509b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/12\/12c\/12c172d104aef468ba5218cd52da509b.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438, \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e contour-coherent \u043e\u0431\u0445\u043e\u0434\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 1. \u041c\u0435\u0434\u0438\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432 \u0432 \u043f\u0430\u043a\u0435\u0442\u0435, ms    <\/h4>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/eb6\/7fc\/402\/eb67fc4021e55a58168003c655cfd031.png\" alt=\"\u0422\u0430\u0431\u043b\u0438\u0446\u0430 1. \u041c\u0435\u0434\u0438\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432 \u0432 \u043f\u0430\u043a\u0435\u0442\u0435, ms. \u0417\u0435\u043b\u0435\u043d\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 contour-coherent, \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0435 \u2014 \u0441\u043b\u0443\u0447\u0430\u0438, \u0433\u0434\u0435 shuffling + early break \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0421\u0421-Contour-Coherent, BF + EB - brute force + early break\" title=\"\u0422\u0430\u0431\u043b\u0438\u0446\u0430 1. \u041c\u0435\u0434\u0438\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432 \u0432 \u043f\u0430\u043a\u0435\u0442\u0435, ms. \u0417\u0435\u043b\u0435\u043d\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 contour-coherent, \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0435 \u2014 \u0441\u043b\u0443\u0447\u0430\u0438, \u0433\u0434\u0435 shuffling + early break \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0421\u0421-Contour-Coherent, BF + EB - brute force + early break\" width=\"698\" height=\"594\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/eb6\/7fc\/402\/eb67fc4021e55a58168003c655cfd031.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/eb6\/7fc\/402\/eb67fc4021e55a58168003c655cfd031.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 1. \u041c\u0435\u0434\u0438\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432 \u0432 \u043f\u0430\u043a\u0435\u0442\u0435, ms<\/em>. <em>\u0417\u0435\u043b\u0435\u043d\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 contour-coherent, \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0435 \u2014 \u0441\u043b\u0443\u0447\u0430\u0438, \u0433\u0434\u0435 shuffling + early break \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435. <\/em><strong><em>\u0421\u0421<\/em><\/strong><em>-Contour-Coherent, <\/em><strong><em>BF + EB<\/em><\/strong><em> &#8212; brute force + early break<\/em><\/figcaption><\/div>\n<\/figure>\n<h4>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 2. \u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e distance checks \u043d\u0430 \u043e\u0434\u043d\u043e \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430<\/h4>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/263\/475\/a26\/263475a2608448906a634f92cda6367a.png\" alt=\"\u0422\u0430\u0431\u043b\u0438\u0446\u0430 2. \u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e distance checks \u043d\u0430 \u043e\u0434\u043d\u043e \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430. \u0417\u0435\u043b\u0435\u043d\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 contour-coherent, \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0435 \u2014 \u0441\u043b\u0443\u0447\u0430\u0438, \u0433\u0434\u0435 shuffling + early break \u0434\u0435\u043b\u0430\u044e\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u044b\u0437\u043e\u0432\u043e\u0432  check. \u0421\u0421-Contour-Coherent, BF + EB - brute force + early break\" title=\"\u0422\u0430\u0431\u043b\u0438\u0446\u0430 2. \u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e distance checks \u043d\u0430 \u043e\u0434\u043d\u043e \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430. \u0417\u0435\u043b\u0435\u043d\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 contour-coherent, \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0435 \u2014 \u0441\u043b\u0443\u0447\u0430\u0438, \u0433\u0434\u0435 shuffling + early break \u0434\u0435\u043b\u0430\u044e\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u044b\u0437\u043e\u0432\u043e\u0432  check. \u0421\u0421-Contour-Coherent, BF + EB - brute force + early break\" width=\"698\" height=\"338\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/263\/475\/a26\/263475a2608448906a634f92cda6367a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/263\/475\/a26\/263475a2608448906a634f92cda6367a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 2. \u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e distance checks \u043d\u0430 \u043e\u0434\u043d\u043e \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430. \u0417\u0435\u043b\u0435\u043d\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 contour-coherent, \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0435 \u2014 \u0441\u043b\u0443\u0447\u0430\u0438, \u0433\u0434\u0435 shuffling + early break \u0434\u0435\u043b\u0430\u044e\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u044b\u0437\u043e\u0432\u043e\u0432  check. <\/em><strong><em>\u0421\u0421<\/em><\/strong><em>-Contour-Coherent, <\/em><strong><em>BF + EB<\/em><\/strong><em> &#8212; brute force + early break<\/em><\/figcaption><\/div>\n<\/figure>\n<h4>\u041f\u043e\u0447\u0435\u043c\u0443 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u043d\u0435\u0442 Boost.Geometry \u0438 KD-tree<\/h4>\n<ul>\n<li>\n<p><strong>Boost.Geometry. <\/strong>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430 Boost \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043a\u0430\u043a reference implementation \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u041e\u043d \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u043e\u0442 \u0436\u0435 exact discrete Hausdorff distance, \u043d\u043e \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a distance checks, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 checks\/HD. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u043d \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 exact-baseline \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u044f \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435: contour-coherent, shuffling + early break \u0438 brute force + early break.<\/p>\n<\/li>\n<li>\n<p><strong>KD-tree.<\/strong> KD-tree \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u043a practical nearest-neighbor baseline. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 OpenCV flann. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <strong>Avg HD<\/strong> \u00a0\u043e\u0442\u043b\u0438\u0447\u0430\u043b\u0441\u044f \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435 \u0431\u044b\u043b \u0441\u0442\u0440\u043e\u0433\u043e \u0440\u0430\u0432\u043d\u044b\u043c exact baseline. \u0414\u043b\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432 \u044d\u0442\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u0440\u0438 all-pairs \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0434\u0435\u0440\u0435\u0432\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437. \u042d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0438 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u044d\u0442\u043e\u0442 baseline \u0442\u0430\u043a\u0436\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432, \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0431\u0430 baseline \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b <a href=\"https:\/\/github.com\/Kate-droid-cpu\/contour-coherent-hausdorff\" rel=\"noopener noreferrer nofollow\">\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0430 GitHub <\/a>\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u043d\u0430\u0440\u044f\u0434\u0443 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u043c\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c\u0438.<\/p>\n<h4>\u0418\u0442\u043e\u0433\u043e<\/h4>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c Contour-Coherent \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0448\u0435\u043b \u00ab\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0431\u043e\u0435\u043c\u00bb \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043d\u043e \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u0435\u0431\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043d\u0430\u0431\u043e\u0440\u0430\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430.<\/p>\n<ul>\n<li>\n<p>\u041d\u0430 \u0431\u043b\u0438\u0437\u043a\u0438\u0445 \u0438 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u0430\u0445 \u043e\u043d \u0434\u0430\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 shuffle: \u043e\u0442 1.3x \u0434\u043e 14x \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 BF + early break \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0435\u0449\u0435 \u0437\u0430\u043c\u0435\u0442\u043d\u0435\u0435: \u043e\u0442 6.8x \u0434\u043e 171x \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u043e\u0442 8.8x \u0434\u043e 182x \u043f\u043e \u0447\u0438\u0441\u043b\u0443 checks. <\/p>\n<\/li>\n<li>\n<p>\u041d\u0430 \u043d\u0435\u043f\u0440\u043e\u0444\u0438\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e \u0445\u0443\u0436\u0435: \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0443\u0440\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0438\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c\u0438 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442\u0441\u044f, shuffling + early break \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041d\u043e \u0434\u0430\u0436\u0435 \u0432 \u044d\u0442\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 contour-coherent \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435 BF + early break.<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u0415\u0449\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e TimeComplexity<\/summary>\n<div class=\"spoiler__content\">\n<p> \u0412\u0445\u0443\u0434\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 contour\u2011coherent \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0435\u00a0\u043c\u0435\u043d\u044f\u0435\u0442 \u0430\u0441\u0438\u043c\u043f\u0442\u043e\u0442\u0438\u043a\u0443: directed Hausdorff distance \u043f\u043e\u2011\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c <img decoding=\"async\" class=\"formula inline\" source=\"O(n  m)\" alt=\"O(n  m)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d6\/d63\/d63e6095bb6a2c90b60f1a55c7a412df.svg\" width=\"48\" height=\"16\" data-width=\"6.83\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d6\/d63\/d63e6095bb6a2c90b60f1a55c7a412df.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d6\/d63\/d63e6095bb6a2c90b60f1a55c7a412df.svg 781w\" loading=\"lazy\" decode=\"async\"\/><em> <\/em>\u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, \u0430\u00a0\u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u00a0\u2014 \u0434\u0432\u0430 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0445\u043e\u0434\u0430. \u042d\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e: \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0435\u00a0\u0441\u0442\u0440\u043e\u0438\u0442 spatial index, \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 lower bound \u0434\u043b\u044f\u00a0\u043e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0446\u0435\u043b\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0438 \u043d\u0435\u00a0\u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u041e\u043d \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f exact\u2011\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c \u0438 \u043c\u0435\u043d\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0445\u043e\u0434\u0430 \u0442\u043e\u0447\u0435\u043a <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg\" width=\"12\" height=\"12\" data-width=\"1.717\" data-height=\"1.545\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b <em>early break<\/em> \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u0440\u0430\u043d\u044c\u0448\u0435. <\/p>\n<p>\u041d\u043e\u00a0\u043d\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u0430\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439. \u0415\u0441\u043b\u0438 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0442\u043e\u0447\u043a\u0438<em> <\/em><img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7f\/7fc\/7fc56270e7a70fa81a5935b72eacbe29.svg\" width=\"12\" height=\"12\" data-width=\"1.697\" data-height=\"1.62\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7f\/7fc\/7fc56270e7a70fa81a5935b72eacbe29.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/7f\/7fc\/7fc56270e7a70fa81a5935b72eacbe29.svg 781w\" loading=\"lazy\" decode=\"async\"\/><em> <\/em>\u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c \u0438\u043b\u0438\u00a0\u0431\u043b\u0438\u0437\u043a\u0438\u043c \u0442\u043e\u0447\u043a\u0430\u043c <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg\" width=\"12\" height=\"12\" data-width=\"1.717\" data-height=\"1.545\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0442\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0434\u043b\u044f<em> <\/em><img decoding=\"async\" class=\"formula inline\" source=\"A[i + 1] \" alt=\"A[i + 1] \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/41\/419\/419809f901acd302373dfa414eb7f757.svg\" width=\"56\" height=\"16\" data-width=\"7.632\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/41\/419\/419809f901acd302373dfa414eb7f757.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/41\/419\/419809f901acd302373dfa414eb7f757.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441<em> <\/em><img decoding=\"async\" class=\"formula inline\" source=\"bestIndex\" alt=\"bestIndex\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/55\/55a\/55abe0d8a03562bc078cb1b0fa0b3a53.svg\" width=\"72\" height=\"12\" data-width=\"9.925\" data-height=\"1.595\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/55\/55a\/55abe0d8a03562bc078cb1b0fa0b3a53.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/55\/55a\/55abe0d8a03562bc078cb1b0fa0b3a53.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u043c \u0434\u043b\u044f <img decoding=\"async\" class=\"formula inline\" source=\"A[i]\" alt=\"A[i]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg\" width=\"24\" height=\"16\" data-width=\"3.735\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8a\/8a6\/8a6b5ab46e06fa60418f7c34e624b076.svg 781w\" loading=\"lazy\" decode=\"async\"\/><em>. <\/em>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0438\u0441\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u00ab\u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430\u00bb. \u0412\u00a0\u0442\u0430\u043a\u0438\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u043a\u043e\u043d\u0442\u0443\u0440<em> <\/em><img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg\" width=\"12\" height=\"12\" data-width=\"1.717\" data-height=\"1.545\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 781w\" loading=\"lazy\" decode=\"async\"\/><em>: <\/em>\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439<em> <\/em><img decoding=\"async\" class=\"formula inline\" source=\"minDist\" alt=\"minDist\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5f\/5ff\/5ffc6b06867d8f094825496b57b34efc.svg\" width=\"64\" height=\"12\" data-width=\"8.656\" data-height=\"1.57\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5f\/5ff\/5ffc6b06867d8f094825496b57b34efc.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5f\/5ff\/5ffc6b06867d8f094825496b57b34efc.svg 781w\" loading=\"lazy\" decode=\"async\"\/><em> <\/em>\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438\u00a0\u0440\u0430\u0432\u0435\u043d \u0443\u0436\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u043c\u0443<em> <\/em><img decoding=\"async\" class=\"formula inline\" source=\"maxMin\" alt=\"maxMin\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg\" width=\"64\" height=\"12\" data-width=\"8.993\" data-height=\"1.57\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442<em> early break. <\/em>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u044d\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u00ab\u0441\u043f\u0443\u0441\u043a\u0430\u0445\u00bb \u043f\u043e\u0441\u043b\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0430 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u041a\u043e\u0433\u0434\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"maxMin\" alt=\"maxMin\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg\" width=\"64\" height=\"12\" data-width=\"8.993\" data-height=\"1.57\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8c\/8c0\/8c0b515cb5545b3557548e8b42295ebe.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0434\u043b\u044f\u00a0\u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0442\u043e\u0447\u0435\u043a \u043d\u0435\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 <img decoding=\"async\" class=\"formula inline\" source=\"minDist\" alt=\"minDist\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5f\/5ff\/5ffc6b06867d8f094825496b57b34efc.svg\" width=\"64\" height=\"12\" data-width=\"8.656\" data-height=\"1.57\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5f\/5ff\/5ffc6b06867d8f094825496b57b34efc.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5f\/5ff\/5ffc6b06867d8f094825496b57b34efc.svg 781w\" loading=\"lazy\" decode=\"async\"\/><em> <\/em>\u0434\u043e\u00a0\u043a\u043e\u043d\u0446\u0430<em>.<\/em> \u0418\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0439\u0442\u0438 \u043b\u044e\u0431\u0443\u044e \u0442\u043e\u0447\u043a\u0443<em> <\/em><img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg\" width=\"12\" height=\"12\" data-width=\"1.717\" data-height=\"1.545\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443\u0436\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e<em> <\/em><img decoding=\"async\" class=\"formula inline\" source=\"maxMin.\" alt=\"maxMin.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/a1\/a12\/a124cd41af5edd0af7b0ed7fd0201deb.svg\" width=\"72\" height=\"12\" data-width=\"9.622\" data-height=\"1.57\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/a1\/a12\/a124cd41af5edd0af7b0ed7fd0201deb.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/a1\/a12\/a124cd41af5edd0af7b0ed7fd0201deb.svg 781w\" loading=\"lazy\" decode=\"async\"\/><em> <\/em>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0442\u043e\u0447\u043a\u0430<em> <\/em><img decoding=\"async\" class=\"formula inline\" source=\"A[i] \" alt=\"A[i] \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/09\/09e\/09e0299346216a074415d125f6fc6ecd.svg\" width=\"24\" height=\"16\" data-width=\"3.735\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/09\/09e\/09e0299346216a074415d125f6fc6ecd.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/09\/09e\/09e0299346216a074415d125f6fc6ecd.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043d\u0435\u00a0\u0441\u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c Hausdorff distance, \u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0446\u0438\u043a\u043b \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a\u00a0\u043d\u0430\u0439\u0434\u0435\u043d \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c Hausdorff distance \u0434\u043b\u044f\u00a0\u043f\u0430\u0440\u044b \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432, \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u00a0\u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u0430\u0445 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u0437\u0430\u00a0\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a: \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e checks \u0432\u043e\u043a\u0440\u0443\u0433<em> <\/em><img decoding=\"async\" class=\"formula inline\" source=\"startIndex \" alt=\"startIndex \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9a\/9ab\/9ab6030631ab0f0a1ec5446045904b8a.svg\" width=\"80\" height=\"12\" data-width=\"10.934\" data-height=\"1.595\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9a\/9ab\/9ab6030631ab0f0a1ec5446045904b8a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9a\/9ab\/9ab6030631ab0f0a1ec5446045904b8a.svg 781w\" loading=\"lazy\" decode=\"async\"\/><em>\u00a0\u2014 <\/em>\u0438 \u0440\u0430\u043d\u043d\u0438\u0439 \u0432\u044b\u0445\u043e\u0434. <\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e <em>\u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e checks\/HD. \u0424\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f worst\u2011case \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f O(n <\/em> m), \u043d\u043e\u00a0\u043d\u0430\u00a0\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u00a0\u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u0430\u0436\u043d\u0435\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e <em>distance checks<\/em>. \u041d\u0430\u00a0\u0431\u043b\u0438\u0437\u043a\u0438\u0445 \u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u0430\u0445 \u043e\u043d\u043e \u0440\u0435\u0437\u043a\u043e \u043f\u0430\u0434\u0430\u0435\u0442. \u0415\u0441\u043b\u0438\u00a0\u0436\u0435 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u043e\u0447\u0435\u043a \u0432\u00a0\u043a\u043e\u043d\u0442\u0443\u0440\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u043d \u0438\u043b\u0438\u00a0\u043a\u043e\u043d\u0442\u0443\u0440\u044b \u043f\u043b\u043e\u0445\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u044b, \u044d\u0442\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f. \u0412\u00a0\u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u044b\u043c, \u043d\u043e\u00a0\u043f\u043e\u00a0\u0447\u0438\u0441\u043b\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u044c\u0441\u044f \u043a\u00a0brute force + early break.<\/p>\n<\/div>\n<\/details>\n<h2>\u0412\u044b\u0432\u043e\u0434\u044b<\/h2>\n<ol>\n<li>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435: \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0443\u0440\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u0442\u043e\u0447\u0435\u043a.<strong> \u0412\u00a0\u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0442\u043e\u0447\u0435\u043a <\/strong>\u0443\u0436\u0435 \u0437\u0430\u0448\u0438\u0442\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u0438 \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p><strong>Contour\u2011coherent<\/strong> \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u0435\u0448\u0435\u0432\u043e: \u043d\u0435\u00a0\u0441\u0442\u0440\u043e\u0438\u0442 KD\u2011tree, \u043d\u0435\u00a0\u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043f\u043e\u0434\u00a0\u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435, \u043d\u0435\u00a0\u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u043d\u0435\u00a0\u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 exact Hausdorff distance \u0432\u00a0approximation. \u041e\u043d \u043f\u0440\u043e\u0441\u0442\u043e <strong>\u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0440\u044f\u0434\u043e\u043c \u0441\u00a0\u0442\u0435\u043c \u043c\u0435\u0441\u0442\u043e\u043c, \u0433\u0434\u0435 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0430\u044f \u0442\u043e\u0447\u043a\u0430\u00a0\u0431\u044b\u043b\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u043d\u0430\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438.<\/strong><\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u0430\u00a0\u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u0430\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u043e\u00a0\u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f\u00a0\u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e brute force + early break<\/strong>. \u0412\u00a0\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445\u00a0\u2014 \u0431\u043b\u0438\u0437\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0443\u0440\u044b, small deformations, synthetic defects, walking silhouettes\u00a0\u2014 <strong>\u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043e\u0442 14x \u0434\u043e 77x \u043f\u043e\u00a0\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e brute force + early break.<\/strong> \u041d\u0430\u00a0Snowflake \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0434\u043e\u0448\u0435\u043b \u0434\u043e 171x, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0445\u043e\u0434\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u043e\u00a0\u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441\u00a0shuffling + early break \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442\u00a0\u0434\u0430\u043d\u043d\u044b\u0445.<\/strong> \u041d\u0430\u00a0\u0431\u043b\u0438\u0437\u043a\u0438\u0445 \u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u0430\u0445 contour\u2011coherent <strong>\u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u043b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043e\u0442 2.2x \u0434\u043e 14.5x \u043f\u043e\u00a0\u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/strong>. \u041f\u043e\u00a0\u0447\u0438\u0441\u043b\u0443 distance checks \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u043d\u0430\u00a0\u0442\u0430\u043a\u0438\u0445 \u043d\u0430\u0431\u043e\u0440\u0430\u0445 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043e\u0442<strong> 2x \u0434\u043e 16x, \u0430\u00a0\u043d\u0430\u00a0SmallContoursDefects\u00a0\u2014 \u043f\u043e\u0447\u0442\u0438 11x.<\/strong> \u042d\u0442\u043e \u043a\u0430\u043a\u00a0\u0440\u0430\u0437 \u0442\u0435 \u0441\u043b\u0443\u0447\u0430\u0438, \u0433\u0434\u0435 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u043e\u0447\u0435\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0433\u0434\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u00a0\u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438\u00a0\u043f\u043b\u043e\u0445\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u0430\u0445<strong> shuffling + early break \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f\u00a0\u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/strong> \u042d\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e: \u0435\u0441\u043b\u0438 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0434\u043b\u044f<img decoding=\"async\" class=\"formula inline\" source=\" A[i + 1]\" alt=\" A[i + 1]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5d\/5da\/5da82a6177b66958f13bd614179ebeca.svg\" width=\"56\" height=\"16\" data-width=\"7.632\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5d\/5da\/5da82a6177b66958f13bd614179ebeca.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5d\/5da\/5da82a6177b66958f13bd614179ebeca.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0447\u0430\u0441\u0442\u043e \u043d\u0435\u00a0\u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441 <img decoding=\"async\" class=\"formula inline\" source=\"bestIndex\" alt=\"bestIndex\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/55\/55a\/55abe0d8a03562bc078cb1b0fa0b3a53.svg\" width=\"72\" height=\"12\" data-width=\"9.925\" data-height=\"1.595\" data-vertical-align=\"-0.025\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/55\/55a\/55abe0d8a03562bc078cb1b0fa0b3a53.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/55\/55a\/55abe0d8a03562bc078cb1b0fa0b3a53.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438, contour\u2011coherent \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u0440\u044f\u0435\u0442 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e. \u041d\u043e\u00a0\u0434\u0430\u0436\u0435 \u0432\u00a0\u044d\u0442\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 contour\u2011coherent \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f\u00a0\u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e brute force + early break \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 3\u20137\u00a0\u0440\u0430\u0437.<\/p>\n<\/li>\n<li>\n<p><strong>Contour\u2011coherent<\/strong>\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435\u00a0\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0434\u043b\u044f\u00a0\u043b\u044e\u0431\u044b\u0445 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0442\u043e\u0447\u0435\u043a. \u041d\u043e\u00a0\u0434\u043b\u044f\u00a0\u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0437\u0430\u0434\u0430\u0447\u00a0\u2014 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0443\u0440\u044b, \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0444\u0435\u043a\u0442\u044b, \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0434\u0435\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u043c\u0430\u0441\u043a\u0438\u00a0\u2014 c<strong>ontour\u2011coherent \u043e\u0431\u0445\u043e\u0434 \u0434\u0430\u0435\u0442 \u0440\u0435\u0434\u043a\u043e\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435: \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0442\u043e\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u044b\u0438\u0433\u0440\u044b\u0448.<\/strong><\/p>\n<\/li>\n<\/ol>\n<p><a href=\"https:\/\/github.com\/Kate-droid-cpu\/contour-coherent-hausdorff\" rel=\"noopener noreferrer nofollow\">\u041a\u043e\u0434, \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 GitHub-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. <\/a><\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1042704\/\">https:\/\/habr.com\/ru\/articles\/1042704\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041a\u0430\u043a-\u0442\u043e, \u043f\u0440\u0438 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 C++ \u043d\u043e\u0432\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432, \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0443\u0440\u0430\u043c\u0438. \u041a\u043e\u043d\u0442\u0443\u0440\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0441\u043e\u0431\u043e\u0439 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0438\u0437 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430. \u00a0\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0439 \u043c\u043d\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u0438 \u0435\u0433\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 (brute force).\u0418\u043c\u0435\u0435\u0442\u0441\u044f 2 \u043a\u043e\u043d\u0442\u0443\u0440\u0430: \u0438 . \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438  \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0438\u0437 \u043a\u043e\u043d\u0442\u0443\u0440\u0430 , \u043f\u0443\u0441\u0442\u044c \u044d\u0442\u043e \u0442\u043e\u0447\u043a\u0430. \u0422\u043e\u0433\u0434\u0430 . \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043c\u044b \u043d\u0430\u0448\u043b\u0438 \u0432\u0441\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0431\u0435\u0440\u0435\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0437 \u043d\u0438\u0445: \u0422\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442  \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 (\u0440\u0438\u0441 1). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u0442\u0430\u043a:\u0422\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442  \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 (\u0440\u0438\u0441 1). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u0442\u0430\u043a:\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1. \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 h(A, B) \u0438 h(B, A)\u041d\u0430\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f: \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0443\u0440\u0430 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e. \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432 \u0440\u0430\u0432\u043d\u044b  \u0438 , \u0442\u043e \u043e\u0434\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0437\u0430 , (\u0441\u043c. \u0440\u0438\u0441 2) \u0430 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u0432\u0443\u0445 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u0432.\u0420\u0438\u0441\u0443\u043d\u043e\u043a 2. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 brute-force \u043e\u0431\u0445\u043e\u0434: \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 A \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 B\u041d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 brute-force-\u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u044b \u0442\u043e\u0447\u0435\u043a \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u043a\u043e\u043d\u0442\u0443\u0440\u0430. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0442\u043e\u0447\u043d\u043e, \u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e\u0440\u043e\u0433\u0438\u043c \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u043e\u0447\u0435\u043a \u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432. \u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u0434\u043e\u0440\u043e\u0433\u043e.\u041f\u0441\u0435\u0434\u0432\u043e\u043a\u043e\u0434 brute forcedirectedHausdorff(A, B):    maxMin = 0    for a in A:        minDist = infinity        for b in B:            minDist = min(minDist, distance(a, b))        maxMin = max(maxMin, minDist)    return maxMin\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u0441 \u0440\u0430\u043d\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c (brute force with early break).\u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u0447\u043d\u043e\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0443\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0440\u0430\u043d\u043d\u0435\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 \u043d\u0430  \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u043b\u044f  \u0443\u0436\u0435 \u0441\u0442\u0430\u043b \u043c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u0435\u043d \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 , \u0437\u043d\u0430\u0447\u0438\u0442, \u044d\u0442\u0430 \u0442\u043e\u0447\u043a\u0430  \u0443\u0436\u0435 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c , \u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430. \u042d\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u044b\u043c. \u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0434\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c. (\u0441\u043c. \u0440\u0438\u0441 3)\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3. Brute force + early break: \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0446\u0438\u043a\u043b \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0443\u0436\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c maxMin\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0440\u0430\u043d\u043d\u0438\u0439 \u0432\u044b\u0445\u043e\u0434 \u0434\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435. \u041d\u043e \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434 brute force + early breakdirectedHausdorffEarlyBreak(A, B):    maxMin = 0    for a in A:        minDist = infinity        for b in B:            d = distance(a, b)            minDist = min(minDist, d)            if minDist &lt;= maxMin:                break        maxMin = max(maxMin, minDist)    return maxMin\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u0440\u0430\u043d\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c (shuffling with early break)\u0418\u0434\u0435\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0445\u043e\u0434\u0430 \u0442\u043e\u0447\u0435\u043a \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432  \u0438 , \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u0442\u044c, \u0442\u043e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u043d\u043d\u0435\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0438. \u041c\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0442\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u043e\u0447\u043a\u0443, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u0435\u043a\u0443\u0449\u0438\u0439  \u0443\u0436\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u0435\u043d , \u0438 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0435\u0441\u044c \u0446\u0438\u043a\u043b. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043b\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0444\u0438\u0433\u0443\u0440. \u041d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 (\u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432) \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0442\u0440\u0430\u0442 \u043d\u0430 \u0441\u0430\u043c\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 (shuffling). \u0410 \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u043e\u0431\u0445\u043e\u0434\u0430. \u041f\u043e\u0445\u043e\u0436\u0430\u044f \u0438\u0434\u0435\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 directed_hausdorff \u0438\u0437 SciPy, \u0433\u0434\u0435 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u043e\u0447\u0435\u043a \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u043d\u043d\u0435\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430. (\u0441\u043c. \u0440\u0438\u0441\u0443\u043d\u043e\u043a 4)\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4. Shuffling + early break: \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0445\u043e\u0434\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0430\u0442\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u0442\u043e\u0447\u043a\u0443\u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u00a0\u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u043c\u0438 \u0440\u0430\u0441\u0445\u043e\u0434\u0430\u043c\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f, \u0431\u044b\u043b\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0439 \u0434\u043b\u044f \u0432\u044b\u043f\u0443\u0441\u043a\u0430. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b KD-tree.\u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 KD-tree. \u0418\u0434\u0435\u044f \u0442\u0430\u043a\u0430\u044f: \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438  \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 \u043a\u043e\u043d\u0442\u0443\u0440\u0430 , \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c spatial index \u043f\u043e \u0442\u043e\u0447\u043a\u0430\u043c . Spatial index \u2014 \u044d\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 KD-tree \u0442\u043e\u0447\u043a\u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u0442\u043e \u043f\u043e , \u0442\u043e \u043f\u043e , \u043e\u0431\u0440\u0430\u0437\u0443\u044f \u0434\u0435\u0440\u0435\u0432\u043e. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430 \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438  \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0435 \u043f\u043e\u043b\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c, \u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u043c \u043f\u043e \u0434\u0435\u0440\u0435\u0432\u0443 \u0441 \u043e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439, \u0433\u0434\u0435 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0443\u0436\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c  \u043f\u043b\u044e\u0441 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 . \u0422\u043e\u0433\u0434\u0430 \u0432 \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u0438 \u0447\u0430\u0441\u0442\u043e \u0431\u043b\u0438\u0437\u043e\u043a \u043a . \u0410 \u043e\u0431\u0449\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 (\u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 + \u043f\u043e\u0438\u0441\u043a) &#8212; . \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0430\u0441\u0438\u043c\u043f\u0442\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0438 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c worst case  \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u0445. (\u0441\u043c. \u0440\u0438\u0441\u0443\u043d\u043e\u043a 5)\u0420\u0438\u0441\u0443\u043d\u043e\u043a 5. KD-tree baseline: \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u0438 \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430\u041d\u043e \u0437\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0432\u0430\u0436\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430:\u041f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0432\u00a0KD\u2011tree \u043d\u0435\u00a0\u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a\u043e\u0439\u00a0\u0436\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 , \u043a\u0430\u043a\u00a0\u043f\u043e\u0438\u0441\u043a \u043f\u043e\u00a0\u043a\u043b\u044e\u0447\u0443 \u0432\u00a0\u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0434\u0435\u0440\u0435\u0432\u0435. \u0414\u043b\u044f\u00a0\u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f KD\u2011tree \u043c\u044b \u0434\u0435\u043b\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e , \u043f\u043e\u0442\u043e\u043c \u043f\u043e , \u043f\u043e\u0442\u043e\u043c \u0441\u043d\u043e\u0432\u0430 \u043f\u043e  \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0414\u043b\u044f\u00a0\u043f\u043e\u0438\u0441\u043a\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u043c\u044b \u0438\u0434\u0451\u043c \u0432\u00a0\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u0432\u0435\u0442\u043a\u0443, \u043d\u043e\u00a0\u043f\u043e\u0442\u043e\u043c \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0432\u0435\u0442\u043a\u0438: \u0432\u0434\u0440\u0443\u0433 \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0442\u043e\u0447\u043a\u0430 \u0431\u043b\u0438\u0436\u0435. \u0412\u00a0\u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0435\u0440\u0435\u0432\u043e \u043e\u0442\u0441\u0435\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439, \u0438 \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0437\u043e\u043a \u043a . \u041d\u043e\u00a0\u0432\u00a0\u043f\u043b\u043e\u0445\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043e\u0442\u0441\u0435\u0447\u044c \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u043e\u0447\u043a\u0438 \u043b\u0435\u0436\u0430\u0442 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e, \u0434\u0435\u0440\u0435\u0432\u043e \u043d\u0435\u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0437\u0430\u043f\u0440\u043e\u0441 \u0431\u043b\u0438\u0437\u043e\u043a \u043a\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0439, \u0438\u043b\u0438\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u0441\u043e\u0441\u0435\u0434 \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u00ab\u043f\u043e \u0434\u0440\u0443\u0433\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443\u00bb \u043c\u043d\u043e\u0433\u0438\u0445 split\u2011\u043b\u0438\u043d\u0438\u0439. \u0422\u043e\u0433\u0434\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u043e\u0432, \u0432\u00a0\u0445\u0443\u0434\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u00a0\u2014 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438. \u041a\u043e\u043d\u0442\u0443\u0440\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u043c\u043e\u0433\u0443\u0442\u00a0\u0431\u044b\u0442\u044c \u043d\u0435\u00a0\u0441\u0430\u043c\u044b\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u043b\u044f\u00a0KD\u2011tree: \u043e\u043d\u0438 \u043b\u0435\u0436\u0430\u0442 \u043d\u0430\u00a0\u0442\u043e\u043d\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439 \u0432 2D\u2011\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435, \u0430\u00a0\u043d\u0435\u00a0\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c. \u0418\u0437\u2011\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u043f\u043e\u00a0\u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0442\u043e\u0447\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u00a0\u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b split\u2011\u043b\u0438\u043d\u0438\u0439, \u0438 \u0434\u043b\u044f\u00a0\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0442\u043e\u043a.\u0414\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u00a0KD-tree \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 approximate nearest neighbor search. \u00a0\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0441\u0435 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0442\u043a\u0438 \u0440\u0430\u0434\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438. \u00a0\u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u0441\u043e\u0441\u0435\u0434 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0439\u0434\u0435\u043d \u043d\u0435 \u0442\u043e\u0447\u043d\u043e, \u0430 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u043d\u043e. \u0414\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u044d\u0442\u043e \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e, \u043d\u043e \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432 \u043c\u043d\u0435 \u0431\u044b\u043b \u043d\u0443\u0436\u0435\u043d exact Hausdorff distance.\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u0430 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u043d\u0438\u044f \u00a0\u2013 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u043d\u0435\u0441\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432,\u0430 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 approximate nearest neighbor search) \u00a0\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u0435\u0444\u0435\u043a\u0442\u0430 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e.\u00a0\u041a\u0430\u043a \u0438\u0442\u043e\u0433 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u0443\u0436\u0435 shuffling + early break.\u0418\u0434\u0435\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f.Brute force \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u0440\u043e\u0433\u043e\u0439. Early break \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442, \u043d\u043e \u0432\u0441\u0435 \u0435\u0449\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u043e\u0447\u043a\u0438 \u0432 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. Shuffling \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0440\u0430\u043d\u043d\u0435\u043c\u0443 \u0432\u044b\u0445\u043e\u0434\u0443, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432. KD-tree \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430 \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u043e\u0447\u0435\u043a. \u0410 \u0432\u0435\u0434\u044c \u0432 \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0442\u043e\u0447\u043a\u0438 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u044b. \u0415\u0441\u043b\u0438  \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 , \u0442\u043e \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438  \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0433\u0434\u0435-\u0442\u043e \u0440\u044f\u0434\u043e\u043c \u0441 , \u0430 \u043d\u0435 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043a\u043e\u043d\u0442\u0443\u0440\u0430. \u0418\u043c\u0435\u043d\u043d\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0438 \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f.\u041d\u043e\u0432\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0425\u0430\u0443\u0441\u0434\u043e\u0440\u0444\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0442\u043e\u0447\u0435\u043a \u0438 \u0440\u0430\u043d\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c (contour-coherent)\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u2013 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438  \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u043a\u043e\u043d\u0442\u0443\u0440\u0435  \u043d\u0435 \u0441 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430, \u0430 \u0441 . \u00a0\u0413\u0434\u0435  \u2013 \u0442\u043e\u0447\u043a\u0430 \u043d\u0430 \u043a\u043e\u043d\u0442\u0443\u0440\u0435 , \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f . \u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442  \u0434\u043e  \u044d\u0442\u043e \u043b\u0438\u0431\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 , \u043b\u0438\u0431\u043e \u043c\u0435\u043d\u044c\u0448\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0446\u0438\u043a\u043b\u0435 \u043c\u044b \u0432\u044b\u0448\u043b\u0438 \u043f\u043e earlyBreak. \u041e\u0431\u0445\u043e\u0434\u0438\u043c \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u043a\u043e\u043d\u0442\u0443\u0440\u0435 \u00a0\u0432\u043b\u0435\u0432\u043e \u0438 \u0432\u043f\u0440\u0430\u0432\u043e \u043e\u0442 , \u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435: \u2026 \u0415\u0441\u043b\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b, \u0438\u0434\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u043c. \u0421\u0443\u0442\u044c \u2013 \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0446\u0438\u043a\u043b\u0430 \u043f\u043e earlyBreak. \u0422\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u043d\u0435 \u0441\u0442\u0440\u043e\u0438\u043c \u0434\u0435\u0440\u0435\u0432\u043e, \u043d\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u043c \u0442\u043e\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u043c B \u0432 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u0430\u0447\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. (\u0441\u043c. \u0440\u0438\u0441\u0443\u043d\u043e\u043a 6)\u0420\u0438\u0441\u0443\u043d\u043e\u043a 6. Contour-coherent \u043e\u0431\u0445\u043e\u0434: \u043f\u043e\u0438\u0441\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441 bestIndex \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438    \u0412 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043d\u0430 \u00ab\u0441\u043f\u0443\u0441\u043a\u0430\u0445\u00bb \u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e  \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e. \u041f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434 Contour-CoherentdirectedHausdorffContourCoherent(A, B):    maxMin = 0    startIndex = 0    for i in 0 .. A.size &#8212; 1:        minDist = infinity        bestIndex = startIndex        for j in indicesAround(startIndex, B.size):            d = distance(A[i], B[j])            if d &lt; minDist:                minDist = d                bestIndex = j            if minDist &lt;= maxMin:                break        maxMin = max(maxMin, minDist)        startIndex = bestIndex + 1    return maxMin\u0413\u0434\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435: \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e? \u041e\u0447\u0435\u043d\u044c! \u041d\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u043a\u043e\u0434, \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u0430\u0445, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439. \u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0434\u0435\u043d\u044c \u0442\u0435\u0441\u0442\u0435\u0440\u044b \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0432\u043e\u0434\u044f\u0442 \u0440\u0443\u043a\u0430\u043c\u0438 \u2013 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u043f\u0430\u0440\u0438\u043b\u0430\u0441\u044c, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 10 \u0440\u0430\u0437!\u041f\u0435\u0440\u0435\u0440\u044b\u043b\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u2013 \u0442\u0430\u043a\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435\u0442. \u041d\u0443, \u0434\u0443\u043c\u0430\u044e, \u043c\u043e\u0436\u0435\u0442 \u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e? \u041d\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438, \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u0430\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u041a\u0430\u043a \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0442\u0435\u0441\u0442\u044b\u041f\u0430\u043a\u0435\u0442\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439    \u0414\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f: \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0430 \u0444\u043e\u043d\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u043d\u043e\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043d\u0430\u0431\u043e\u0440\u044b \u0432 Computer Vision, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, MPEG7, Kimia99, Kimia216. \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u0430\u0445&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-482096","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/482096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=482096"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/482096\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=482096"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=482096"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=482096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}