рдбрдЧрд▓рд╕-рдкреАрдХрд░ рдПрд▓реНрдЧреЛрд░рд┐рдердо

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ рдореБрдЭреЗ рдкреЙрд▓реАрдЧреЙрдирд▓ рдЪреЗрди (рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬреЛ рдкреЙрд▓реАрд▓рд╛рдЗрди рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ) рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдерд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡реЗрдХреНрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рдФрд░ рдирдХреНрд╢реЗ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХрд╛рд░реНрдп рдмрд╣реБрдд рдЖрдо рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдХрдИ рдмрд┐рдВрджреБ рдПрдХ рд╣реА рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ - рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрди рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдПрдХ рдореЗрдВ рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореБрдЭреЗ "рдкреВрд░реА рддрд░рд╣ рд╕реЗ" рд╢рдмреНрдж рд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрддрд╛ рдерд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдЬреНрдЮрд╛рди рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рднрд░рдирд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдкреВрд░реНрдг рдореИрдиреБрдЕрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛ рддреЛ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ ... рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЕрдВрд╢ рддрд▓рд╛рд╢рдиреЗ рдкрдбрд╝реЗ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рдж, рд╕рдм рдХреБрдЫ рдПрдХ рдмрдбрд╝реА рддрд╕реНрд╡реАрд░ рдореЗрдВ рдмрдирд╛рдпрд╛ред рдИрдорд╛рдирджрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕рд╛рдп рд╕рдмрд╕реЗ рд╕реБрдЦрдж рдореЗрдВ рд╕реЗ рдПрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдмрд╣реБрднреБрдЬ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕рд░рд▓реАрдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореИрдВрдиреЗ рдЕрднреА рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдбрдЧрд▓рд╕-рдкреАрдХрд░ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред



рд╡рд┐рд╡рд░рдг


рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреЙрд▓реАрд▓рд╛рдЗрди рдФрд░ рдЕрдзрд┐рдХрддрдо рджреВрд░реА (,) рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдореВрд▓ рдФрд░ рд╕рд░рд▓реАрдХреГрдд рдкреЙрд▓реАрд▓рд╛рдЗрди рдХреЗ рдмреАрдЪ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдореВрд▓ рдХреЗ рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдЕрдзрд┐рдХрддрдо рджреВрд░реА рдкрд░рд┐рдгрд╛рдо рдкреЙрд▓реАрд▓рд╛рдЗрди рдХреЗ рдирд┐рдХрдЯрддрдо рднрд╛рдЧ рддрдХ)ред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкреБрди: рдкреЙрд▓реАрд▓рд╛рдЗрди рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдЗрдирдкреБрдЯ рдкрд╣рд▓реЗ рдФрд░ рдЖрдЦрд┐рд░реА рдХреЗ рдмреАрдЪ рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде-рд╕рд╛рде ╬╡ рдХрд╛ рдореВрд▓реНрдп рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдкрд╣рд▓реЗ рдФрд░ рдЖрдЦрд┐рд░реА рдЕрдВрдХ рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрддрд┐рдо рд╕реЗрдЧрдореЗрдВрдЯ рд╕реЗ рдмрд┐рдВрджреБ рдХреЛ рд╕рдмрд╕реЗ рджреВрд░ рдкрд╛рддрд╛ рд╣реИ ( рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдмрд┐рдВрджреБ рд╕реЗ рдЦрдВрдб рдХреА рджреВрд░реА рд╣реИ )ред рдпрджрд┐ рдмрд┐рдВрджреБ point рд╕реЗ рдХрдо рджреВрд░реА рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рддреЛ рд╕рднреА рдмрд┐рдВрджреБ рдЬреЛ рдЕрднреА рддрдХ рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╕реЗрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реАрдзреА рд░реЗрдЦрд╛ рдХрдо рд╕реЗ рдХрдо accuracy рдХреА рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рд╡рдХреНрд░ рдХреЛ рдЪрд┐рдХрдирд╛ рдХрд░рддреА рд╣реИред рдпрджрд┐ рдпрд╣ рджреВрд░реА ╬╡ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдкрд░ рдЦреБрдж рдХреЛ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рд╕реЗ рджрд┐рдП рдЧрдП рдФрд░ рджрд┐рдП рдЧрдП рд╕реЗ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБрдУрдВ рддрдХ рдХрд╣рддрд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдбрдЧрд▓рд╕-рдкреАрдХрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рд╕реНрд╡рдпрдВ-рдЪреМрд░рд╛рд╣реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдВрдХ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдкреЙрд▓реАрд▓рд╛рдЗрди рд▓реЗрдВ: [{1; 5}, {2; 3}, {5; 1}, {6; 4}, {9; 6}, {11; 4}, {13; 3}, {14; 2}, {18; 5}] рдФрд░] рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд░рд▓реАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦреЗрдВ:

рдореВрд▓ рдкреЙрд▓реАрд▓рд╛рдЗрди рдЕрдВрдХ рдХреЗ рдкреНрд░рд╕реНрддреБрдд рд╕реЗрдЯ рд╕реЗ:



0.5 рдХреЗ рдмрд░рд╛рдмрд░ ╬╡ рдХреЗ рд╕рд╛рде рдкрд╛рд▓реАрд▓рд╛рдЗрди:



1 рдХреЗ рдмрд░рд╛рдмрд░ ╬╡ рдХреЗ рд╕рд╛рде рдПрдХ рдкреЙрд▓реАрд▓рд╛рдЗрди:



рдкреЙрд▓рд┐рдиреЗрд╢рди line 1.5 рдХреЗ рдмрд░рд╛рдмрд░:



рдЖрдк рдЕрдзрд┐рдХрддрдо рджреВрд░реА рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмрд╛рдж рдореБрдЦреНрдп рдмрд┐рдВрджреБ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


C ++ рдХреЛ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб рдЬрд┐рд╕реЗ рдЖрдк рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЕрдм рд╕реАрдзреЗ рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП:

#define X_COORDINATE 0 #define Y_COORDINATE 1 template<typename T> using point_t = std::pair<T, T>; template<typename T> using line_segment_t = std::pair<point_t<T>, point_t<T>>; template<typename T> using points_t = std::vector<point_t<T>>; template<typename CoordinateType> double get_distance_between_point_and_line_segment(const line_segment_t<CoordinateType>& line_segment, const point_t<CoordinateType>& point) noexcept { const CoordinateType x = std::get<X_COORDINATE>(point); const CoordinateType y = std::get<Y_COORDINATE>(point); const CoordinateType x1 = std::get<X_COORDINATE>(line_segment.first); const CoordinateType y1 = std::get<Y_COORDINATE>(line_segment.first); const CoordinateType x2 = std::get<X_COORDINATE>(line_segment.second); const CoordinateType y2 = std::get<Y_COORDINATE>(line_segment.second); const double double_area = abs((y2-y1)*x - (x2-x1)*y + x2*y1 - y2*x1); const double line_segment_length = sqrt(pow((x2-x1), 2) + pow((y2-y1), 2)); if (line_segment_length != 0.0) return double_area / line_segment_length; else return 0.0; } template<typename CoordinateType> void simplify_points(const points_t<CoordinateType>& src_points, points_t<CoordinateType>& dest_points, double tolerance, std::size_t begin, std::size_t end) { if (begin + 1 == end) return; double max_distance = -1.0; std::size_t max_index = 0; for (std::size_t i = begin + 1; i < end; i++) { const point_t<CoordinateType>& cur_point = src_points.at(i); const point_t<CoordinateType>& start_point = src_points.at(begin); const point_t<CoordinateType>& end_point = src_points.at(end); const double distance = get_distance_between_point_and_line_segment({ start_point, end_point }, cur_point); if (distance > max_distance) { max_distance = distance; max_index = i; } } if (max_distance > tolerance) { simplify_points(src_points, dest_points, tolerance, begin, max_index); dest_points.push_back(src_points.at(max_index)); simplify_points(src_points, dest_points, tolerance, max_index, end); } } template< typename CoordinateType, typename = std::enable_if<std::is_integral<CoordinateType>::value || std::is_floating_point<CoordinateType>::value>::type> points_t<CoordinateType> duglas_peucker(const points_t<CoordinateType>& src_points, double tolerance) noexcept { if (tolerance <= 0) return src_points; points_t<CoordinateType> dest_points{}; dest_points.push_back(src_points.front()); simplify_points(src_points, dest_points, tolerance, 0, src_points.size() - 1); dest_points.push_back(src_points.back()); return dest_points; } 

рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡рдпрдВ:

 int main() { points_t<int> source_points{ { 1, 5 }, { 2, 3 }, { 5, 1 }, { 6, 4 }, { 9, 6 }, { 11, 4 }, { 13, 3 }, { 14, 2 }, { 18, 5 } }; points_t<int> simplify_points = duglas_peucker(source_points, 1); return EXIT_SUCCESS; } 

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рд╖реНрдкрд╛рджрди рдЙрджрд╛рд╣рд░рдг


рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рдЬреНрдЮрд╛рдд рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ [{1; 5}, {2; 3}, {5; 1}, {6; 4}, {9; 6}, {11; 4}, {13; 3}, {14; 2}, {18; 5}] рдФрд░} 1 рдХреЗ рдмрд░рд╛рдмрд░:

  • рдЦрдВрдб рд╕реЗ рд╕рдмрд╕реЗ рджреВрд░ рдмрд┐рдВрджреБ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ {1; 5} - {18; 5}, рдпрд╣ рдмрд┐рдВрджреБ {5 рд╣реЛрдЧрд╛; 1}ред

  • рдЦрдВрдб {1 рдкрд░ рдЗрд╕рдХреА рджреВрд░реА рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ; 5} - {18; 5}ред рдпрд╣ 1 рд╕реЗ рдЕрдзрд┐рдХ рдирд┐рдХрд▓рд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреЙрд▓реАрд▓рд╛рдЗрди рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
  • рдЦрдВрдб {1 рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡рд░реНрддреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЪрд▓рд╛рдПрдВ; 5} - {5; 1} рдФрд░ рдЗрд╕ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рджреВрд░ рдмрд┐рдВрджреБ рдЦреЛрдЬреЗрдВред рдпрд╣ рдмрд┐рдВрджреБ {реи; 3}ред

  • рдЦрдВрдб {1 рдкрд░ рдЗрд╕рдХреА рджреВрд░реА рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ; 5} - {5; 1}ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ 1 рд╕реЗ рдХрдо рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рддреНрдпрд╛рдЧ рд╕рдХрддреЗ рд╣реИрдВред
  • рдЦрдВрдб 5 рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡рд░реНрддреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЪрд▓рд╛рдПрдВ; 1} - {18; 5} рдФрд░ рдЗрд╕ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рджреВрд░ рдХреА рдмрд╛рдд ...

  • рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЙрд╕реА рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ ...

рдирддреАрдЬрддрди, рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдЯреНрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдХрд╛рдо рдХрд╛ рд╕рдордп


рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЕрдкреЗрдХреНрд╖рд┐рдд рдЬрдЯрд┐рд▓рддрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЗ (nlogn) рд╣реИ, рдпрд╣ рддрдм рд╣реИ рдЬрдм рд╕рдмрд╕реЗ рджреВрд░ рдмрд┐рдВрджреБ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣рдореЗрд╢рд╛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдХреЗрдВрджреНрд░реАрдп рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдУ (рдПрди ^ 2) рд╣реИред рдпрд╣ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╕рдмрд╕реЗ рджреВрд░ рдмрд┐рдВрджреБ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣рдореЗрд╢рд╛ рд╕реАрдорд╛ рдмрд┐рдВрджреБ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рдореАрдк рд╣реЛрддреА рд╣реИред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рднреА рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрджрд┐ рд▓реЗрдЦ рдкрд╛рдардХреЛрдВ рдХреЗ рдмреАрдЪ рдкрд░реНрдпрд╛рдкреНрдд рд░реБрдЪрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЬрд▓реНрдж рд╣реА рд░рд┐рдпреБрдореНрди-рд╡рд┐рдЯрдХрдо, рдУрдкреАрд╣реЗрдо рдФрд░ рд▓реИрдВрдЧ рдХреА рдмрд╣реБрднреБрдЬ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣реВрдВрдЧрд╛ред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/hi448618/


All Articles