{"id":303059,"date":"2020-05-05T15:00:35","date_gmt":"2020-05-05T15:00:35","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=303059"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=303059","title":{"rendered":"\u041f\u0440\u0438\u0448\u0435\u0441\u0442\u0432\u0438\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/500436\/\">\n<p>\u041d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0440\u0435\u0434\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 (\u041d\u0421). \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u041d\u0421 \u043f\u0435\u0440\u0435\u0434 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0435, \u0447\u0430\u0441\u0442\u043e \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u043e\u0439 \u0441\u0440\u0435\u0434\u0438 \u041d\u0421 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0441 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0423 \u043f\u043e\u043b\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0445 \u041d\u0421 \u0441 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432, \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u00ab\u0441\u0438\u043b\u044c\u043d\u043e\u043c\u00bb \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0435, \u043b\u0435\u0436\u0430\u0449\u0435\u043c \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u043e, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0435\u0441\u0442\u044c \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438, \u0441\u0430\u043c\u044b\u043c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043a\u043b\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u043a \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u041d\u0421 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438 \u0443\u0442\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u043e\u0431\u0449\u0430\u044e\u0449\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c. \u042d\u0442\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438 \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0441\u0442\u044c \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043d\u0435 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043a \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0445 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u041d\u0421 (\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0438 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435) \u0441 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438. \u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0435\u0441\u043e\u0432\u044b\u0445 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0445 \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u0447\u0451\u0442\u043e\u0432, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0430, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435. \u0414\u0440\u0443\u0433\u0438\u043c \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u0435\u0442\u0438.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>\u041d\u0430 \u0440\u0438\u0441. \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/lo\/4z\/o7\/lo4zo7-llf0bqivhmyg7nlzlqha.png\"><\/div>\n<p>  <\/p>\n<p>\u0411\u0438\u043d\u0430\u0440\u043d\u0430\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0430\u044f \u041d\u0421 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0451\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u043e\u0451\u0432, \u043f\u0440\u043e\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0442 \u0432\u0445\u043e\u0434\u0430 \u043a \u0432\u044b\u0445\u043e\u0434\u0443:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0412\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u043b\u043e\u0439: \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435;<\/li>\n<li>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0441\u043b\u043e\u0439: \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b;<\/li>\n<li>\u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u043b\u043e\u0439: \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0414\u041d\u0424 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f.<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u043b\u043e\u0451\u0432.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u043e\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0438\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435, \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0449\u0435\u0435 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043a \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u043c\u0443 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 0 \u0434\u043e 1. \u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u0435\u043e\u0440\u0435\u043c\u0435 \u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b, \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0432 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435.<\/p>\n<p>  <\/p>\n<p><strong>\u0422\u0435\u043e\u0440\u0435\u043c\u0430:<\/strong> \u0435\u0441\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0430\u044f \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430 <strong>\u0425<\/strong> \u0438\u043c\u0435\u0435\u0442 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 <strong>f(\u0445)<\/strong>, \u0442\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b <strong>s=F(x)<\/strong> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u043c \u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435 <strong>(0,1)<\/strong>, \u0433\u0434\u0435 \u043f\u043e\u0434 <strong>F(x)<\/strong> \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b <strong>\u0425<\/strong>, \u0442. \u0435. <strong>f(\u0445)=<\/strong><i><strong>d<\/strong><\/i><strong>F(x)\/<\/strong><i><strong>d<\/strong><\/i><strong>x<\/strong>.<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6y\/1z\/wm\/6y1zwmjxemx9i0bi7t-fiqufxwg.png\"><\/div>\n<p>  <\/p>\n<p>\u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 <strong>X<\/strong> \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d \u0432 \u0432\u0435\u043a\u0442\u043e\u0440 <strong>S<\/strong>, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d <strong>(0,1)<\/strong> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0439 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043d\u0451\u043c. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 <strong>X<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c <i>N<\/i>-\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435, \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u044b \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 <i>N<\/i>-\u043c\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u0433\u0434\u0435 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0441\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0435\u043d\u044b \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043e\u0431\u044a\u0451\u043c\u0443 <i>N<\/i>-\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u0443\u0431\u0430, \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. \u041d\u0438\u0436\u0435 \u0434\u0430\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0441 \u0434\u0432\u0443\u043c\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u0442\u043e\u0447\u0435\u043a, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0447\u0451\u0442\u043a\u043e\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0434\u0432\u0443\u043c \u0440\u0430\u0437\u043d\u044b\u043c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c.<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/vm\/fi\/yvvmfiei947k9zklv6rwbizq478.png\" width=\"300\" height=\"300\"><\/div>\n<p>  <\/p>\n<p>\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u043e\u0434\u043d\u0430 \u043e\u0431\u0449\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <strong>F(x)<\/strong> \u0438\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e X<i><sub>i<\/sub><\/i> (<i>i<\/i>=1,2,\u2026,<i>N<\/i>) \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u0422\u043e\u0433\u0434\u0430 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u041d\u0421 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 <strong>F<\/strong><i><strong><sub>i<\/sub><\/strong><\/i><strong>(x)<\/strong>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e <i>i<\/i>-\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u043d\u0438\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u0447\u0451\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0432 \u0440\u044f\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0431\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0441\u0438\u0433\u043c\u043e\u0438\u0434\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043b\u043e\u0433\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/4p\/f7\/am\/4pf7amgmjc2dhk9_krzur3nbihq.png\" width=\"163\" height=\"42\"><\/div>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u041d\u0421 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 <i>N<\/i> \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 <strong>X.<\/strong> \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0438\u0448\u044c \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430: <i>a<\/i> \u2013\u043a\u0440\u0443\u0442\u0438\u0437\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438; <i>x<\/i>0 \u2013 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0443\u043b\u044f, \u0447\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0432\u044b\u0440\u043e\u0432\u043d\u0435\u043d\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 <strong>S<\/strong> \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0441\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432. \u041f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0441\u043c\u044b\u0441\u043b\u0443 \u044d\u0442\u0438 \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f <i>N<\/i>-\u043c\u0435\u0440\u043d\u044b\u043c\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u043c\u0438 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044f\u043c\u0438, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0441\u0432\u043e\u0438\u0445 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 <strong>W<\/strong>={w<sub>0<\/sub>, w<sub>1<\/sub>, w<sub>2<\/sub>, w<sub>3<\/sub>, \u2026, w<sub>N<\/sub>} \u0442\u0430\u043a, \u0447\u0442\u043e \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 <strong>S<\/strong>={s<sub>1<\/sub>, s<sub>2<\/sub>, s<sub>3<\/sub>, \u2026, s<sub>N<\/sub>}, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0443\u0441\u043b\u043e\u0432\u0438\u0435:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/-e\/yc\/bt\/-eycbt39ktvfev9ezwg2xch8g3g.png\" width=\"146\" height=\"64\"><\/div>\n<p>  <\/p>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u043b\u044f \u0442\u043e\u0447\u0435\u043a, \u043d\u0435 \u043b\u0435\u0436\u0430\u0449\u0438\u0445 \u043d\u0430 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438, \u044d\u0442\u043e \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438 \u0437\u043d\u0430\u043a \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0441 \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u043e\u0447\u043a\u0430. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442 \u043d\u0435\u0439\u0440\u043e\u043d\u044b.<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0434\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438-\u043d\u0435\u0439\u0440\u043e\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u043d\u043e \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b <strong>W<\/strong> \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u043b\u0438 \u043e\u0434\u043d\u043e\u043c\u0443 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e:<\/p>\n<p>  <\/p>\n<p><strong>\u0432 N-\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u043a\u0443\u0431, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442<\/strong><\/p>\n<p>  <\/p>\n<p>\u0418\u043d\u0430\u0447\u0435 \u043e\u043d\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u0438\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0435\u0442\u0438. \u041d\u0438\u0436\u0435 \u0434\u0430\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f (\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u044b\u043c\u0438), \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0430\u0441\u0447\u0435\u0440\u0447\u0438\u0432\u0430\u044e\u0442 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u0438\u0445 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u0442\u043e \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043d\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u0432\u0443\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0442\u043e\u0447\u0435\u043a.<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cy\/5a\/vh\/cy5avhzuvd_v2kmvmpno6px8iju.png\" width=\"300\" height=\"300\"><\/div>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u043e\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 <strong>W<\/strong> \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438, \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0443 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u043a \u043d\u0435\u0439. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 <i>N<\/i>-\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u0443\u0431\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430, \u0437\u0430\u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0432\u043e\u0438\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438: a<sub>1<\/sub>, a<sub>2<\/sub>, a<sub>3<\/sub>, \u2026, a<sub>N<\/sub>, \u0433\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 0&lt;a<sub>i<\/sub>&lt;1. \u041a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b, \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u043d\u0435\u0439\u0440\u043e\u043d\u0430, \u0442\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rn\/ds\/en\/rndsen_ctpdfc2gcequujer4_eo.png\" width=\"184\" height=\"61\"><\/div>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c n<sub>1<\/sub>, n<sub>2<\/sub>, n<sub>3<\/sub>, \u2026, n<sub>N<\/sub> \u2013 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u043a \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438, \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u0432\u0435\u0441\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 <strong>S<\/strong> (\u044d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0441 \u043b\u044e\u0431\u044b\u043c \u0437\u043d\u0430\u043a\u043e\u043c, \u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0445 \u043f\u043e \u043c\u043e\u0434\u0443\u043b\u044e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0441\u043c\u044b\u0441\u043b\u0430 \u043d\u0435\u0442); w<sub>0<\/sub> \u2013 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u0440\u0430\u0432\u043d\u043e\u0433\u043e 1. \u0422\u0430\u043a\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043b\u0435\u0433\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0430\u0436\u0435 \u043d\u0430 \u0441\u0430\u043c\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u041d\u0421 \u0432 \u0448\u0438\u0440\u043e\u043a\u043e\u043c \u0441\u043f\u0435\u043a\u0442\u0440\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p>  <\/p>\n<p>\u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0432 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u041d\u0421 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0442. \u043a. \u043e\u043d\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0430\u043a\u0438\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439-\u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e \u0441\u0435\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>\u0411\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zu\/n-\/uj\/zun-ujbmiuzil8h7dge0ymyafxu.png\" width=\"313\" height=\"26\"><\/div>\n<p>  <\/p>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0445\u043e\u0434\u043e\u0432 \u043e\u0442 <i>M<\/i> \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0414\u041d\u0424 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0442 <i>M<\/i> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u0441\u0435\u0442\u0438, \u0443\u0432\u044f\u0437\u044b\u0432\u0430\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0435 \u043f\u043e\u0441\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Sign, \u0441 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u043c (\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c) \u0446\u0435\u043b\u0435\u0432\u044b\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u041d\u0421. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443 \u044d\u0442\u043e\u0439 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c \u0441\u043b\u043e\u0435.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043d\u0435\u043c\u0430\u043b\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0441\u0435\u0442\u0438 \u043a \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e \u0431\u0430\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 \u044d\u0442\u043e\u0439 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b, \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044f \u0438\u0445, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0432 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c. \u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u0435 \u0441\u043a\u0430\u0442\u044b\u0432\u0430\u044f\u0441\u044c \u043a \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u0441\u0435\u0442\u044c \u0443\u0442\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u043e\u0431\u0449\u0430\u044e\u0449\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c, \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0441\u044c \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043a\u0430\u0441\u043a\u0430\u0434\u0430 \u041d\u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u041a\u0432\u0430\u0439\u043d\u0430-\u041c\u0430\u043a\u2019\u041a\u043b\u0430\u0441\u043a\u0438 \u043f\u0440\u0438 \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u043c \u0432\u0445\u043e\u0434\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 (<a href=\"https:\/\/habr.com\/ru\/post\/424517\"><\/a><a href=\"https:\/\/habr.com\/ru\/post\/424517\">https:\/\/habr.com\/ru\/post\/424517<\/a>). \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u0430\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u043d\u0435\u0439\u0440\u043e\u043d\u044b, \u043d\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u0441\u0435\u0442\u0438. \u0422\u0430\u043a\u0438\u043c\u0438 \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u0442\u0435, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u043e \u0432\u0441\u0435\u0445 \u0434\u0438\u0437\u044a\u044e\u043d\u043a\u0446\u0438\u044f\u0445 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0414\u041d\u0424 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u00ab\u0441\u043a\u043b\u0435\u0435\u043d\u043d\u043e\u0441\u0442\u0438\u00bb \u00ab*\u00bb. \u041d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0438\u0437 \u0441\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0445 \u043d\u043e\u0432\u044b\u043c\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C# \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439 \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0438\u0436\u0435 (\u043d\u0430\u0436\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430)<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">using System; using System.Collections.Generic; using System.Linq;  namespace RndNeuroNet {   #region \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0439 \u0441\u0435\u0442\u0438   \/\/\/ &lt;summary&gt;   \/\/\/ \u041a\u043b\u0430\u0441\u0441 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u043c\u0438 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044f\u043c\u0438   \/\/\/ &lt;\/summary&gt;   public class RandomNeuralNetwork   {     private DistributionFunc[] pDistributionDataFuncs;     private RandomDiscrimBase pNeuroLogicDiscrim;      \/\/\/ &lt;summary&gt;     \/\/\/ \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440     \/\/\/ &lt;\/summary&gt;     public RandomNeuralNetwork()     {     }      \/\/\/ &lt;summary&gt;     \/\/\/ \u0414\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445     \/\/\/ &lt;\/summary&gt;     \/\/\/ &lt;param name=&quot;pSourceTermsData&quot;&gt;&lt;\/param&gt;     \/\/\/ &lt;param name=&quot;pTargetFeature&quot;&gt;&lt;\/param&gt;     public void CreateNetwork(double[][] pSourceData, bool[] pTargetFeature,       int iFromPos, int iTargetPos, int iWindowSize,       int iAmountLogicDiscrims, int iLogicDiscrimsMaxTrainRestarts = 1,       int iMaxAmountDistributionPoints = 1000, bool bIsNorming = true)     {       \/\/\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432       double[][] pSrcArray = new double[iTargetPos - iFromPos][];       bool[] pDstArray = new bool[iTargetPos - iFromPos];       for (int i = 0, t = iFromPos; t &lt; iTargetPos; t++, i++)       {         \/\/\u041d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430         pSrcArray[i] = (bIsNorming ? NormingE(pSourceData[t], iWindowSize, iWindowSize) : pSourceData[t]);         pDstArray[i] = pTargetFeature[t];       }       \/\/\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b       pDistributionDataFuncs = new DistributionFunc[iWindowSize];       for (int i = 0; i &lt; iWindowSize; i++)       {         \/\/\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f         double[] pTrend2Recalc = pSrcArray.Select(p =&gt; p != null ? p[i] : 0).ToArray();         \/\/\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f         pDistributionDataFuncs[i] = new DistributionFunc(pTrend2Recalc, iMaxAmountDistributionPoints);         \/\/\u041f\u0435\u0440\u0435\u0440\u0430\u0441\u0447\u0451\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f         pTrend2Recalc = pDistributionDataFuncs[i].RecalcTrend(pTrend2Recalc);         \/\/\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f         for (int t = 0; t &lt; pSrcArray.Length; t++) pSrcArray[t][i] = pTrend2Recalc[t];       }       \/\/\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u041d\u0421       pNeuroLogicDiscrim = (RandomDiscrimBase)new RandomLogicDiscrim();       pNeuroLogicDiscrim.CreateDiscrim(pSrcArray, pDstArray, 0, pSrcArray.Length,         iWindowSize, iAmountLogicDiscrims, iLogicDiscrimsMaxTrainRestarts);     }      public double CalcResponce(double[] pSourceData, int iWindowSize = 0, bool bIsNorming = true)     {       \/\/\u0420\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445       if (iWindowSize &lt;= 0) iWindowSize = pSourceData.Length;       \/\/\u041d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u043a\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445       pSourceData = (bIsNorming ? NormingE(pSourceData, iWindowSize, iWindowSize) : pSourceData);       \/\/\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f       for (int i = 0; i &lt; iWindowSize; i++)       {         pSourceData[i] = pDistributionDataFuncs[i].RecalcTrend(pSourceData[i]);       }       \/\/\u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043b\u0435\u0441\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0439       return pNeuroLogicDiscrim.GetPrognos(pSourceData, iWindowSize);     }      \/\/\/ &lt;summary&gt;     \/\/\/ \u041d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0435\u0433\u043e \u0441\u0440\u0435\u0434\u043d\u044e\u044e     \/\/\/ &lt;\/summary&gt;     \/\/\/ &lt;param name=&quot;pTrend&quot;&gt;&lt;\/param&gt;     \/\/\/ &lt;param name=&quot;iTargetPosition&quot;&gt;&lt;\/param&gt;     \/\/\/ &lt;param name=&quot;iVectorSize&quot;&gt;&lt;\/param&gt;     \/\/\/ &lt;returns&gt;&lt;\/returns&gt;     public static double[] NormingE(double[] pTrend, int iTargetPosition,       int iVectorSize, double[] pResultVector = null, bool bIsMinusOffset = false)     {       if (pResultVector == null) pResultVector = new double[iVectorSize];       double dNorming = 0;       for (int i = 0, t = iTargetPosition - iVectorSize; i &lt; iVectorSize; i++, t++)       {         dNorming += pTrend[t];       }       dNorming \/= iVectorSize;       double dOffset = (bIsMinusOffset ? 1 : 0);       for (int i = 0, t = iTargetPosition - iVectorSize; i &lt; iVectorSize; i++, t++)       {         pResultVector[i] = (pTrend[t] \/ dNorming) - dOffset;       }       return pResultVector;     }   }    \/\/\/ &lt;summary&gt;   \/\/\/ \u041a\u043b\u0430\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b   \/\/\/ &lt;\/summary&gt;   public class DistributionFunc   {     private class DataCont     {       public int Counter;       public double SumSrc;       public double ValueP;     }      private readonly SortedDictionary&lt;int, DataCont&gt; pDistribution =       new SortedDictionary&lt;int, DataCont&gt;();     private int m_iMaxAmountDistributionPoints;     private double dAreaMin, dAreaMax;      \/\/\/ &lt;summary&gt;     \/\/\/ \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440     \/\/\/ &lt;\/summary&gt;     public DistributionFunc()     {     }      \/\/\/ &lt;summary&gt;     \/\/\/ \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440     \/\/\/ &lt;\/summary&gt;     public DistributionFunc(double[] pTrend, int iMaxAmountDistributionPoints = 1000)     {       CreateDistribution(pTrend, iMaxAmountDistributionPoints);     }      \/\/\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f     public void CreateDistribution(double[] pTrend, int iMaxAmountDistributionPoints = 1000)     {       m_iMaxAmountDistributionPoints = iMaxAmountDistributionPoints;       dAreaMin = double.MaxValue; dAreaMax = 0;       \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u043d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f       for (int t = 0; t &lt; pTrend.Length; t++)       {         double dTrendVal = pTrend[t];         if (dTrendVal == 0) continue;         dAreaMin = Math.Min(dAreaMin, dTrendVal);         dAreaMax = Math.Max(dAreaMax, dTrendVal);       }       \/\/\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f       for (int t = 0; t &lt; pTrend.Length; t++)       {         double dTrendVal = pTrend[t];         if (dTrendVal == 0) continue;         int iIndex = (int)(((dTrendVal - dAreaMin) \/ (dAreaMax - dAreaMin)) * m_iMaxAmountDistributionPoints);         DataCont pKeyVal = null;         pDistribution.TryGetValue(iIndex, out pKeyVal);         if (pKeyVal == null) pDistribution.Add(iIndex, pKeyVal = new DataCont());         pKeyVal.Counter++;         pKeyVal.SumSrc += dTrendVal;       }       \/\/\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f       double dSumP = 0;       foreach (KeyValuePair&lt;int, DataCont&gt; dataValue in pDistribution)       {         dataValue.Value.SumSrc \/= dataValue.Value.Counter;         dSumP += (double)dataValue.Value.Counter \/ (double)pTrend.Length;         dataValue.Value.ValueP = dSumP;       }     }      \/\/\u041f\u0435\u0440\u0435\u0440\u0430\u0441\u0447\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f     public double[] RecalcTrend(double[] pTrend, double[] pNewTrend = null)     {       if (pNewTrend == null) pNewTrend = new double[pTrend.Length];       for (int t = 0; t &lt; pTrend.Length; t++)       {         pNewTrend[t] = RecalcTrend(pTrend[t]);       }       return pNewTrend;     }      \/\/\u041f\u0435\u0440\u0435\u0440\u0430\u0441\u0447\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f     public double RecalcTrend(double dTrendVal)     {       int iIndex = (int)(((dTrendVal - dAreaMin) \/ (dAreaMax - dAreaMin)) * m_iMaxAmountDistributionPoints);       if (iIndex &lt; 0) iIndex = pDistribution.Keys.Min();       if (iIndex &gt; pDistribution.Keys.Max()) iIndex = pDistribution.Keys.Max();       if (pDistribution.Keys.Contains(iIndex))       {         dTrendVal = pDistribution[iIndex].ValueP;       }       else       {         int iDnIndex = pDistribution.Keys.Max&lt;int&gt;(p =&gt; p &lt; iIndex ? p : 0);         double dDnVal = pDistribution[iDnIndex].ValueP;         int iUpIndex = pDistribution.Keys.Min&lt;int&gt;(p =&gt; p &gt; iIndex ? p : int.MaxValue);         double dUpVal = pDistribution[iUpIndex].ValueP;         dTrendVal = (dUpVal - dDnVal) * ((double)(iIndex - iDnIndex) \/ (double)(iUpIndex - iDnIndex)) + dDnVal;       }       return dTrendVal;     }   }    \/\/\/ &lt;summary&gt;   \/\/\/ \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0435\u0442\u0438   \/\/\/ &lt;\/summary&gt;   public class RandomDiscrimBase   {     public static int GetTermPoint(double[] pNeuronWeights,       double[] pData, int iDataCortegeLength = 0)     {       double dVal = pNeuronWeights[iDataCortegeLength]; \/\/\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u0447\u043b\u0435\u043d \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438       for (int i = 0; i &lt; iDataCortegeLength; i++) dVal += (pNeuronWeights[i] * pData[i]);       return Math.Sign(dVal);     }      public static int[] GetTermPoint(IList&lt;double[]&gt; pNeuroSurfaces,       double[] pData, int iDataCortegeLength = 0)     {       if (iDataCortegeLength &lt;= 0) iDataCortegeLength = pData.Length;       int[] pLogicData = new int[pNeuroSurfaces.Count];       for (int n = 0; n &lt; pNeuroSurfaces.Count; n++)       {         pLogicData[n] = GetTermPoint(pNeuroSurfaces[n], pData, iDataCortegeLength);       }       return pLogicData;     }      \/\/\/ &lt;summary&gt;     \/\/\/ \u041f\u043e\u0434\u0431\u043e\u0440 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439     \/\/\/ &lt;\/summary&gt;     public virtual void CreateDiscrim(double[][] pSrcData, bool[] pDstData,       int iFromPos, int iToPos, int iDataCortegeLength, int iAmountLogicDiscrims,       int iLogicDiscrimsMaxTrainRestarts)     {       throw new MissingMethodException(&quot;\u041c\u0435\u0442\u043e\u0434 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d&quot;);     }      \/\/\/ &lt;summary&gt;     \/\/\/ \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430     \/\/\/ \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435 \u043e\u0442 -1 \u0434\u043e +1     \/\/\/ &lt;\/summary&gt;     public virtual double GetPrognos(double[] pTermPointData, int iDataCortegeLength = -1)     {       throw new MissingMethodException(&quot;\u041c\u0435\u0442\u043e\u0434 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d&quot;);     }   }    \/\/\/ &lt;summary&gt;   \/\/\/ \u041a\u043b\u0430\u0441\u0441 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439   \/\/\/ &lt;\/summary&gt;   public class RandomLogicDiscrim : RandomDiscrimBase   {     private IList&lt;double[]&gt; pLogicDiscrims = null;     public LogicFunc.Quine_McCluskey neuronLogic = null;      \/\/\/ &lt;summary&gt;     \/\/\/ \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440     \/\/\/ &lt;\/summary&gt;     public RandomLogicDiscrim()     {     }      \/\/\/ &lt;summary&gt;     \/\/\/ \u041f\u043e\u0434\u0431\u043e\u0440 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439     \/\/\/ &lt;\/summary&gt;     public override void CreateDiscrim(double[][] pSrcArray, bool[] pTargetData,       int iFromPos, int iToPos, int iDataCortegeLength, int iAmountLogicDiscrims,       int iLogicDiscrimsMaxTrainRestarts)     {       Random RndFabric = new Random(Environment.TickCount);       \/\/\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439       int iMaxCounter = 0;       \/\/\u041f\u043e\u0434\u0431\u043e\u0440 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439       neuronLogic = null;       pLogicDiscrims = new List&lt;double[]&gt;();       do       {         \/\/\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439         \/\/\u0415\u0441\u043b\u0438 \u043a\u043e\u043b-\u0432\u043e \u0440\u0435\u0448\u0430\u044e\u0449\u0438\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439 \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c iAmountLogicDiscrims, \u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435         while (pLogicDiscrims.Count &lt; iAmountLogicDiscrims)         {           double[] pNewSurface = new double[iDataCortegeLength + 1];           for (int i = 0; i &lt; iDataCortegeLength; i++)           {             \/\/\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u0438             double dNormal = RndFabric.NextDouble() - 0.5;             \/\/\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438, \u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0431\u044a\u0451\u043c\u0430 (0...1)             double dPoint = RndFabric.NextDouble();             \/\/\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438             pNewSurface[i] = dNormal;             \/\/\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u0447\u043b\u0435\u043d             pNewSurface[iDataCortegeLength] -= dNormal * dPoint;           }           pLogicDiscrims.Add(pNewSurface);         }         \/\/\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438         ICollection&lt;byte[]&gt; TermInputUp = new LinkedList&lt;byte[]&gt;();         ICollection&lt;byte[]&gt; TermInputDn = new LinkedList&lt;byte[]&gt;();         for (int t = iFromPos; t &lt; iToPos; t++)         {           byte[] pSrcData = GetTermPoint(pLogicDiscrims, pSrcArray[t], iDataCortegeLength)             .Select(p =&gt; (byte)(p &gt; 0 ? 1 : 0)).ToArray();           if (pTargetData[t])             TermInputUp.Add(pSrcData);           else             TermInputDn.Add(pSrcData);         }         \/\/\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432         neuronLogic = new LogicFunc.Quine_McCluskey();         neuronLogic.Start(TermInputUp, TermInputDn);         \/\/\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0440\u0435\u0448\u0430\u044e\u0449\u0438\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439, \u0442. \u0435.         \/\/\u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f         if ((iMaxCounter + 1) &lt; iLogicDiscrimsMaxTrainRestarts)         {           Dictionary&lt;int, int&gt; TermStars = new Dictionary&lt;int, int&gt;(iAmountLogicDiscrims);           for (int i = 0; i &lt; iAmountLogicDiscrims; i++) TermStars.Add(i, 0);           foreach (byte[] pTerm in neuronLogic.Result.Terms)           {             for (int i = 0; i &lt; iAmountLogicDiscrims; i++)             {               if (pTerm[i] != LogicFunc.LogicFunction.cStarSymb) TermStars[i]++;             }           }           foreach (byte[] pTerm in neuronLogic.ResultNeg.Terms)           {             for (int i = 0; i &lt; iAmountLogicDiscrims; i++)             {               if (pTerm[i] != LogicFunc.LogicFunction.cStarSymb) TermStars[i]++;             }           }           foreach (KeyValuePair&lt;int, int&gt; p in TermStars)           {             \/\/\u0415\u0441\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f - \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438             if (p.Value &lt;= 0) pLogicDiscrims[p.Key] = null;           }           pLogicDiscrims = pLogicDiscrims.Where(p =&gt; p != null).ToList();         }       } while ((pLogicDiscrims.Count &lt; iAmountLogicDiscrims) &amp;&amp; (iMaxCounter++ &lt; iLogicDiscrimsMaxTrainRestarts));     }      \/\/\/ &lt;summary&gt;     \/\/\/ \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430     \/\/\/ &lt;\/summary&gt;     \/\/\/ &lt;param name=&quot;pTermPointData&quot;&gt;&lt;\/param&gt;     \/\/\/ &lt;returns&gt;&lt;\/returns&gt;     public override double GetPrognos(double[] pTermPointData, int iDataCortegeLength = -1)     {       if (iDataCortegeLength &lt;= 0) iDataCortegeLength = pTermPointData.Length;       byte[] pSrcData = GetTermPoint(pLogicDiscrims, pTermPointData, iDataCortegeLength).Select(p =&gt; (byte)(p &gt; 0 ? 1 : 0)).ToArray();       int iPrognos = 0;       iPrognos += (neuronLogic.Result.Calculate(pSrcData)    ? +1 : -1);       iPrognos += (neuronLogic.ResultNeg.Calculate(pSrcData) ? -1 : +1);       return (iPrognos \/ 2);     }   }   #endregion }  namespace LogicFunc {   #region \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438   \/\/\/ &lt;summary&gt;   \/\/\/ \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439   \/\/\/ &lt;\/summary&gt;   public abstract class LogicFunction   {     \/\/\u0421\u0438\u043c\u0432\u043e\u043b &quot;\u0441\u043a\u043b\u0435\u0435\u043d\u043e\u0439&quot; \u043f\u043e\u0437\u0438\u0446\u0438\u0438     public const byte cStarSymb = 2;      \/\/\u0414\u0438\u0437\u044a\u044e\u043d\u043a\u0446\u0438\u0438 \u0438\u043b\u0438 \u043a\u043e\u043d\u044a\u044e\u043d\u043a\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438     public readonly ICollection&lt;byte[]&gt; Terms = new LinkedList&lt;byte[]&gt;();     \/\/\u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438     public abstract bool Calculate(bool[] X);     \/\/\u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438     public abstract bool Calculate(char[] X);     \/\/\u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438     public abstract bool Calculate(byte[] X);   }    \/\/\/ &lt;summary&gt;   \/\/\/ \u0414\u0438\u0437\u044a\u044e\u043d\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430   \/\/\/ &lt;\/summary&gt;   public class Dnf : LogicFunction   {     public static bool Calculate(byte[] X, byte[] term)     {       bool bResult = true;       for (int i = 0; i &lt; term.Length; i++)       {         if ((term[i] == cStarSymb) || (term[i] == X[i])) continue;         bResult = false;         break;       }       return bResult;     }      public override bool Calculate(byte[] X)     {       bool bResult = false;       foreach (byte[] term in Terms)       {         bool bTermVal = true;         for (int i = 0; i &lt; term.Length; i++)         {           if ((term[i] &gt;= cStarSymb) || (term[i] == X[i])) continue;           bTermVal = false;           break;         }         \/\/bResult |= bTermVal;         if (bTermVal)         {           bResult = true;           break;         }       }       return bResult;     }      public override bool Calculate(char[] X)     {       bool bResult = false;       foreach (byte[] term in Terms)       {         bool bTermVal = true;         for (int i = 0; i &lt; term.Length; i++)         {           if ((term[i] &gt;= cStarSymb) || (term[i] == (byte)(X[i] == '0' ? 0 : 1))) continue;           bTermVal = false;           break;         }         \/\/bResult |= bTermVal;         if (bTermVal)         {           bResult = true;           break;         }       }       return bResult;     }      public override bool Calculate(bool[] X)     {       bool bResult = false;       foreach (byte[] term in Terms)       {         bool bTermVal = true;         for (int i = 0; i &lt; term.Length; i++)         {           if ((term[i] &gt;= cStarSymb) || ((term[i] != 0) == X[i])) continue;           bTermVal = false;           break;         }         \/\/bResult |= bTermVal;         if (bTermVal)         {           bResult = true;           break;         }       }       return bResult;     }   }    \/\/\/ &lt;summary&gt;   \/\/\/ \u0414\u0435\u0440\u0435\u0432\u043e \u0442\u0435\u0440\u043c\u043e\u0432   \/\/\/ &lt;\/summary&gt;   public class TreeFuncTerm   {     \/\/ \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0434\u0435\u0440\u0435\u0432\u0430 \u0442\u0435\u0440\u043c\u043e\u0432     public class TreeNodeEnd { }     \/\/\u041e\u0431\u0449\u0438\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0434\u0435\u0440\u0435\u0432\u0430     private readonly TreeNodeEnd pCommonTreeNodeEnd = new TreeNodeEnd();      \/\/\u041a\u043e\u0440\u0435\u043d\u044c     private readonly object[] rootNode = new object[3];     \/\/\u0420\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0435\u0440\u0435\u0432\u0430 \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0443\u0437\u043b\u043e\u0432     private readonly bool IsNewTreeNodeEndMode = false;     \/\/\u0420\u0430\u043d\u0433 (\u0433\u043b\u0443\u0431\u0438\u043d\u0430) \u0434\u0435\u0440\u0435\u0432\u0430     private int _rang = 0;     public int Rang     {       get { return _rang; }     }     \/\/\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0443\u0437\u043b\u043e\u0432     private int enumerationPos = 0;     private object[][] enumerationBuf;     \/\/\u0422\u0435\u0440\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c\u0443 \u0443\u0437\u043b\u0443     private byte[] enumerationTerm;     public byte[] EnumerationTerm     {       get { return enumerationTerm; }     }     \/\/\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0443\u0437\u0435\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0442\u0435\u0440\u043c\u0443     private TreeNodeEnd enumerationNode;     public TreeNodeEnd EnumerationNode     {       get { return enumerationNode; }     }     \/\/\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0435\u0440\u043c\u043e\u0432 \u0432 \u0434\u0435\u0440\u0435\u0432\u0435     private UInt32 _count = 0;     public UInt32 Count     {       get { return _count; }     }      \/\/\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440     public TreeFuncTerm(bool bNewTreeNodeEndMode = false)     {       IsNewTreeNodeEndMode = bNewTreeNodeEndMode;       Clear();     }      \/\/\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0434\u0435\u0440\u0435\u0432\u043e     public void Clear()     {       _count = 0;       _rang = 0;       enumerationPos = 0;       enumerationBuf = null;       enumerationTerm = null;       enumerationNode = null;       rootNode[0] = rootNode[1] = rootNode[2] = null;     }      \/\/\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0443\u0437\u043b\u043e\u0432 \u0434\u0435\u0440\u0435\u0432\u0430     public TreeNodeEnd EnumerationInit()     {       enumerationPos = 0;       enumerationTerm = new byte[_rang];       enumerationTerm[0] = 0;       enumerationNode = null;       enumerationBuf = new object[_rang][];       enumerationBuf[0] = rootNode;       \/\/\u0412\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0443\u0437\u0435\u043b       return EnumerationNextNode();     }      \/\/\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0434\u0435\u0440\u0435\u0432\u0430     public TreeNodeEnd EnumerationNextNode()     {       int iIsNext = (enumerationNode != null ? 1 : 0);       enumerationNode = null;       while ((enumerationNode == null) &amp;&amp; (enumerationPos &gt;= 0))       {         object pNextNode = null;         int iSymb = enumerationTerm[enumerationPos] + iIsNext;         for (object[] pNodes = enumerationBuf[enumerationPos]; iSymb &lt; 3; iSymb++)         {           if ((pNextNode = pNodes[iSymb]) != null) break;         }         if (pNextNode == null)         {           \/\/\u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c           enumerationPos--;           iIsNext = 1;         }         else         {           enumerationTerm[enumerationPos] = (byte)iSymb;           if (pNextNode is TreeNodeEnd)           {             \/\/\u041d\u0430\u0439\u0434\u0435\u043d \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0443\u0437\u0435\u043b             enumerationNode = (TreeNodeEnd)pNextNode;           }           else           {             \/\/\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c             enumerationPos++;             enumerationBuf[enumerationPos] = (object[])pNextNode;             enumerationTerm[enumerationPos] = 0;             iIsNext = 0;           }         }       }       return enumerationNode;     }      \/\/\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u0434\u0435\u0440\u0435\u0432\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u0431\u0435\u0437 \u0437\u0430\u043c\u0435\u043d\u044b \u0438\u043c\u0435\u044e\u0449\u0435\u0433\u043e\u0441\u044f     public TreeNodeEnd Add(byte[] term)     {       _rang = Math.Max(_rang, term.Length);       object[] pCurrNode = rootNode;       int iTermLength1 = term.Length - 1;       for (int i = 0; i &lt; iTermLength1; i++)       {         byte cSymb = term[i];         object pNextNode = pCurrNode[cSymb];         if (pNextNode == null)         {           pNextNode = new object[3];           pCurrNode[cSymb] = pNextNode;         }         pCurrNode = (object[])pNextNode;       }       object pNewNode = pCurrNode[term[iTermLength1]];       if (pNewNode == null)       {         pNewNode = (IsNewTreeNodeEndMode ? new TreeNodeEnd() : pCommonTreeNodeEnd);         pCurrNode[term[iTermLength1]] = pNewNode;         _count++;       }       return (TreeNodeEnd)pNewNode;     }      \/\/\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438     public TreeNodeEnd Remove(byte[] term)     {       object[] pCurrNode = rootNode;       int iTermLength1 = term.Length - 1;       for (int i = 0; i &lt; iTermLength1; i++)       {         pCurrNode = (object[])pCurrNode[term[i]];         if (pCurrNode == null) break;       }       TreeNodeEnd pRemovedNode = null;       if (pCurrNode != null)       {         \/\/\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0443\u0434\u0430\u043b\u044f\u0435\u043c\u044b\u0439 \u0443\u0437\u0435\u043b         pRemovedNode = (TreeNodeEnd)pCurrNode[term[iTermLength1]];         if (pRemovedNode != null)         {           \/\/\u0421\u0442\u0438\u0440\u0430\u0435\u0442\u0441\u044f\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0443\u0437\u0435\u043b           pCurrNode[term[iTermLength1]] = null;           \/\/\u0423\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b-\u0432\u043e \u0443\u0437\u043b\u043e\u0432           _count--;         }       }       return pRemovedNode;     }      \/\/\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0443\u0437\u043b\u043e\u0432     public void Remove(IEnumerable&lt;byte[]&gt; RemovedTerms)     {       if ((RemovedTerms == null) || (RemovedTerms.Count() == 0)) return;       foreach (byte[] x1 in RemovedTerms)       {         \/\/\u0418\u0437-\u0437\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c Remove         \/\/\u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 IsContains         Remove(x1);       }     }      \/\/\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435     public bool Contains(byte[] term)     {       object pCurrNode = rootNode;       for (int i = 0; i &lt; term.Length; i++)       {         pCurrNode = ((object[])pCurrNode)[term[i]];         if (pCurrNode == null) break;       }       return ((pCurrNode != null) &amp;&amp; (pCurrNode is TreeNodeEnd));     }      \/\/\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435,     \/\/\u0434\u0430\u044e\u0449\u0438\u0445 \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430     public bool IsCalculateTrue(byte[] term)     {       return IsCalculateTrue(rootNode, term, 0);     }      \/\/\u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438     private static bool IsCalculateTrue(object[] pCurrNode,       byte[] term, int iStartPos)     {       int iTermLength1 = term.Length - 1;       while ((pCurrNode != null) &amp;&amp; (iStartPos &lt; iTermLength1))       {         byte cSymb = term[iStartPos++];         if (cSymb != LogicFunction.cStarSymb)         {           pCurrNode = (object[])pCurrNode[cSymb];         }         else         {           if ((pCurrNode[0] != null) &amp;&amp; (pCurrNode[1] != null))           {             if (IsCalculateTrue((object[])pCurrNode[1], term, iStartPos)) return true;             pCurrNode = (object[])pCurrNode[0];           }           else           {             pCurrNode = (object[])(pCurrNode[0] != null ? pCurrNode[0] : pCurrNode[1]);           }         }       }       TreeNodeEnd pEndNode = null;       if (pCurrNode != null)       {         byte cSymb = term[iTermLength1];         if (cSymb != LogicFunction.cStarSymb)         {           pEndNode = (TreeNodeEnd)pCurrNode[cSymb];         }         else         {           pEndNode = (TreeNodeEnd)(pCurrNode[0] != null ? pCurrNode[0] : pCurrNode[1]);         }       }       return (pEndNode != null);     }      \/\/\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435,     \/\/\u0434\u0430\u044e\u0449\u0438\u0445 \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430     public void GetAllCalculateTrueTerms(byte[] term,       ICollection&lt;TreeNodeEnd&gt; pAllCalculateTrueTermsList)     {       pAllCalculateTrueTermsList.Clear();       GetAllCalculateTrueTerms(rootNode, term, 0, pAllCalculateTrueTermsList);     }      \/\/\u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438     private static void GetAllCalculateTrueTerms(object[] pCurrNode,       byte[] term, int iStartPos, ICollection&lt;TreeNodeEnd&gt; pAllCalculateTrueTermsList)     {       int iTermLength1 = term.Length - 1;       while ((pCurrNode != null) &amp;&amp; (iStartPos &lt; iTermLength1))       {         byte cSymb = term[iStartPos++];         if (cSymb != LogicFunction.cStarSymb)         {           pCurrNode = (object[])pCurrNode[cSymb];         }         else         {           if ((pCurrNode[0] != null) &amp;&amp; (pCurrNode[1] != null))           {             GetAllCalculateTrueTerms((object[])pCurrNode[1], term, iStartPos,               pAllCalculateTrueTermsList);             pCurrNode = (object[])pCurrNode[0];           }           else           {             pCurrNode = (object[])(pCurrNode[0] != null ? pCurrNode[0] : pCurrNode[1]);           }         }       }       if (pCurrNode != null)       {         byte cSymb = term[iTermLength1];         if (cSymb != LogicFunction.cStarSymb)         {           TreeNodeEnd pEndNode = (TreeNodeEnd)pCurrNode[cSymb];           if (pEndNode != null) pAllCalculateTrueTermsList.Add(pEndNode);         }         else         {           if (pCurrNode[0] != null) pAllCalculateTrueTermsList.Add((TreeNodeEnd)pCurrNode[0]);           if (pCurrNode[1] != null) pAllCalculateTrueTermsList.Add((TreeNodeEnd)pCurrNode[1]);         }       }     }   }    \/\/\/ &lt;summary&gt;   \/\/\/ \u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u041a\u0432\u0430\u0439\u043d\u0430---\u041c\u0430\u043a-\u041a\u043b\u0430\u0441\u043a\u0438   \/\/\/ &lt;\/summary&gt;   public class Quine_McCluskey   {     \/\/\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0442\u0435\u0440\u043c\u0430\u043c     private readonly Dnf _result = new Dnf();     public Dnf Result     {       get { return _result; }     }     \/\/\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0442\u0435\u0440\u043c\u0430\u043c     private readonly Dnf _resultNeg = new Dnf();     public Dnf ResultNeg     {       get { return _resultNeg; }     }      \/\/\u0421\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u0441 \u043e\u0434\u043d\u0438\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435\u043c     private static void Skleivanie(TreeFuncTerm X1Tree,       TreeFuncTerm X2Tree, TreeFuncTerm NegativTree,       TreeFuncTerm InpNegTerms, TreeFuncTerm AllOutTerms)     {       bool IsVirtSkleivOn = ((NegativTree != null) &amp;&amp;         (InpNegTerms != null) &amp;&amp; (InpNegTerms.Count != 0));       for (TreeFuncTerm.TreeNodeEnd x1 = X1Tree.EnumerationInit();         x1 != null; x1 = X1Tree.EnumerationNextNode())       {         bool bIsSkleiv = false;         byte[] pCurrTerm = X1Tree.EnumerationTerm;         for (int iPos = 0; iPos &lt; pCurrTerm.Length; iPos++)         {           byte cSymbSav = pCurrTerm[iPos];           if (cSymbSav == LogicFunction.cStarSymb) continue;           \/\/\u0421\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0441 \u043e\u0434\u043d\u0438\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435\u043c           pCurrTerm[iPos] = (byte)(1 - cSymbSav);           if (X1Tree.Contains(pCurrTerm))           {             bIsSkleiv = true;             if (cSymbSav == 0)             {               pCurrTerm[iPos] = LogicFunction.cStarSymb; \/\/\u041c\u0435\u0442\u043a\u0430 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u044f               X2Tree.Add(pCurrTerm);             }           }           \/\/\u0438\u043b\u0438 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u0435 \u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0435\u0440\u043c\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u0442 \u0432 NegativTree           else if (IsVirtSkleivOn &amp;&amp; !NegativTree.Contains(pCurrTerm))           {             pCurrTerm[iPos] = LogicFunction.cStarSymb; \/\/\u041c\u0435\u0442\u043a\u0430 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u044f             if (!InpNegTerms.IsCalculateTrue(pCurrTerm))             {               bIsSkleiv = true;               X2Tree.Add(pCurrTerm);             }           }           pCurrTerm[iPos] = cSymbSav;         }         \/\/\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0442\u0435\u0445 \u0442\u0435\u0440\u043c\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0438 \u0441 \u043a\u0435\u043c \u043d\u0435 \u0441\u043a\u043b\u0435\u0438\u043b\u0438\u0441\u044c         if (!bIsSkleiv &amp;&amp; (AllOutTerms != null)) AllOutTerms.Add(pCurrTerm);       }     }      \/\/\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u043e\u0432 \u0442\u0435\u0440\u043c\u043e\u0432 \u0438\u0437 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430     \/\/\u0412 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u044b     private static void DeleteDublicatingTerms(       IEnumerable&lt;byte[]&gt; InX1, TreeFuncTerm OutX2Tree)     {       OutX2Tree.Clear();       foreach (byte[] x1 in InX1) OutX2Tree.Add(x1);     }      \/\/ \u041e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0442\u0435\u0440\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043e \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0438.     \/\/ \u041f\u043e\u043a\u0440\u044b\u0442\u0438\u0435, \u0431\u043b\u0438\u0437\u043a\u043e\u0435 \u043a \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0435\u043c\u0443, \u0434\u0430\u0451\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0439 (\u0422\u041f),     \/\/ \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043c\u0435\u0442\u043e\u0434\u0435 \u201c\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446\u2013\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430\u201d     \/\/ (http:\/\/www.studfiles.ru\/preview\/5175815\/page:4\/)     private static void ReduceRedundancyTerms(TreeFuncTerm AllOutputTerms,       TreeFuncTerm AllInputTerms, ICollection&lt;byte[]&gt; ResultTerms)     {       \/\/\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430       ResultTerms.Clear();       \/\/\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043b\u0438       Dictionary&lt;byte[], HashSet&lt;TreeFuncTerm.TreeNodeEnd&gt;&gt; Outputs2Inputs =         new Dictionary&lt;byte[], HashSet&lt;TreeFuncTerm.TreeNodeEnd&gt;&gt;();       \/\/\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c \u043a \u0442\u0435\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0445 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0442       Dictionary&lt;TreeFuncTerm.TreeNodeEnd, HashSet&lt;byte[]&gt;&gt; Inputs2Outputs =         new Dictionary&lt;TreeFuncTerm.TreeNodeEnd, HashSet&lt;byte[]&gt;&gt;();       \/\/\u0421\u0431\u043e\u0440 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043e\u0431 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0442\u0435\u0440\u043c\u0430\u043c\u0438 \u0432\u0445\u043e\u0434\u043d\u044b\u0445       for (TreeFuncTerm.TreeNodeEnd pNode = AllOutputTerms.EnumerationInit();         pNode != null; pNode = AllOutputTerms.EnumerationNextNode())       {         byte[] outTerm = (byte[])AllOutputTerms.EnumerationTerm.Clone();         \/\/\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u0440\u043c term         HashSet&lt;TreeFuncTerm.TreeNodeEnd&gt; InpTermsLst = new HashSet&lt;TreeFuncTerm.TreeNodeEnd&gt;();         AllInputTerms.GetAllCalculateTrueTerms(outTerm, InpTermsLst);         Outputs2Inputs.Add(outTerm, InpTermsLst);         foreach (TreeFuncTerm.TreeNodeEnd inputTerm in InpTermsLst)         {           if (!Inputs2Outputs.ContainsKey(inputTerm)) Inputs2Outputs.Add(inputTerm, new HashSet&lt;byte[]&gt;());           Inputs2Outputs[inputTerm].Add(outTerm);         }       }       \/\/\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e \u043a\u043e\u043b-\u0432\u0430 \u0438\u0445 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0439 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c\u0438       Inputs2Outputs = Inputs2Outputs.OrderBy(p =&gt; p.Value.Count).ToDictionary(p =&gt; p.Key, v =&gt; v.Value);       \/\/\u041f\u0435\u0440\u0435\u0431\u043e\u0440 \u0432\u0441\u0435\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432, \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043a\u043e\u043b-\u0432\u0443 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0432\u0448\u0438\u0445 \u0438\u0445 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445       while (Inputs2Outputs.Count &gt; 0)       {         byte[] outTerm = Inputs2Outputs.First().Value.OrderByDescending(q =&gt; Outputs2Inputs[q].Count()).First();         ResultTerms.Add(outTerm);         foreach (TreeFuncTerm.TreeNodeEnd inTerm in Outputs2Inputs[outTerm].ToArray())         {           foreach (byte[] outTerm2Del in Inputs2Outputs[inTerm]) Outputs2Inputs[outTerm2Del].Remove(inTerm);           Inputs2Outputs.Remove(inTerm);         }       }     }      \/\/\u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438     public static void LogicFuncMinimize(       IEnumerable&lt;byte[]&gt; PositivTerms, ICollection&lt;byte[]&gt; OutPos,       IEnumerable&lt;byte[]&gt; NegativTerms, ICollection&lt;byte[]&gt; OutNeg)     {       TreeFuncTerm InpPosTerms = new TreeFuncTerm(true);       DeleteDublicatingTerms(PositivTerms, InpPosTerms);        int iTotalLevels = InpPosTerms.Rang;       if (iTotalLevels &lt;= 0) return;        TreeFuncTerm OutPosTerms = new TreeFuncTerm();       TreeFuncTerm OutNegTerms = null;        TreeFuncTerm InpNegTerms = null;       if ((NegativTerms != null) &amp;&amp; (NegativTerms.Count() != 0))       {         InpNegTerms = new TreeFuncTerm(true);         DeleteDublicatingTerms(NegativTerms, InpNegTerms);         OutNegTerms = new TreeFuncTerm();          \/\/\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0431\u0435\u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u0445         for (TreeFuncTerm.TreeNodeEnd pNode = InpPosTerms.EnumerationInit();           pNode != null; pNode = InpPosTerms.EnumerationNextNode())         {           if (!InpNegTerms.Contains(InpPosTerms.EnumerationTerm)) continue;           \/\/\u041f\u043e\u0434\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b-\u0432\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0432 X1 \u0438 \u0432 NegativTerms           int iPos_Count = PositivTerms.Count(p =&gt; Enumerable.SequenceEqual(p, InpPosTerms.EnumerationTerm));           int iNeg_Count = NegativTerms.Count(p =&gt; Enumerable.SequenceEqual(p, InpPosTerms.EnumerationTerm));           if (iPos_Count &gt; iNeg_Count)           {             InpNegTerms.Remove(InpPosTerms.EnumerationTerm);           }           else if (iPos_Count &lt; iNeg_Count)           {             InpPosTerms.Remove(InpPosTerms.EnumerationTerm);           }           else \/\/if (iX1_Count == iNeg_Count)           {             InpPosTerms.Remove(InpPosTerms.EnumerationTerm);             InpNegTerms.Remove(InpPosTerms.EnumerationTerm);           }         }       }        \/\/\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u044f       TreeFuncTerm X1PositivTree = InpPosTerms;       TreeFuncTerm X1NegativTree = InpNegTerms;        int iLevelCounter = 0;       \/\/\u041f\u043e\u0432\u0442\u043e\u0440 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440 \u043f\u043e\u043a\u0430 \u0431\u0443\u0434\u0443\u0442 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u0440\u043c\u044b       while ((X1PositivTree.Count != 0) &amp;&amp; (iLevelCounter &lt; iTotalLevels))       {         TreeFuncTerm X2PositivTree = new TreeFuncTerm();         Skleivanie(X1PositivTree, X2PositivTree, X1NegativTree, InpNegTerms, OutPosTerms);          if ((X1NegativTree != null) &amp;&amp; (X1NegativTree.Count != 0))         {           TreeFuncTerm X2NegativTree = new TreeFuncTerm();           Skleivanie(X1NegativTree, X2NegativTree, X1PositivTree, InpPosTerms, OutNegTerms);            \/\/\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430           if (iLevelCounter &gt; 0) X1NegativTree.Clear();            X1NegativTree = X2NegativTree;         }          \/\/\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430         if (iLevelCounter &gt; 0) X1PositivTree.Clear();          X1PositivTree = X2PositivTree;          iLevelCounter++;          GC.Collect();       }        if (OutPosTerms.Count &gt; 0)       {         \/\/\u0423\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u0440\u043c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445 cStarSymb         OutPosTerms.Remove(Enumerable.Repeat(LogicFunction.cStarSymb, iTotalLevels).ToArray());       }       \/\/\u0412\u044b\u0431\u043e\u0440 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0442\u0435\u0440\u043c       ReduceRedundancyTerms(OutPosTerms, InpPosTerms, OutPos);        if ((OutNeg != null) &amp;&amp; (OutNegTerms != null))       {         if (OutNegTerms.Count &gt; 0)         {           \/\/\u0423\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u0440\u043c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445 cStarSymb           OutNegTerms.Remove(Enumerable.Repeat(LogicFunction.cStarSymb, iTotalLevels).ToArray());         }         \/\/\u0412\u044b\u0431\u043e\u0440 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0442\u0435\u0440\u043c         ReduceRedundancyTerms(OutNegTerms, InpNegTerms, OutNeg);       }     }      \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u043c\u0435\u0442\u043e\u0434\u0430     public void Start(IEnumerable&lt;byte[]&gt; TermsInput)     {       LogicFuncMinimize(TermsInput, _result.Terms, null, null);     }      \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u043c\u0435\u0442\u043e\u0434\u0430     public void Start(IEnumerable&lt;byte[]&gt; TermsInput, IEnumerable&lt;byte[]&gt; NegativTerms)     {       LogicFuncMinimize(TermsInput, _result.Terms, NegativTerms, _resultNeg.Terms);     }      \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u043c\u0435\u0442\u043e\u0434\u0430     public void Start(IEnumerable&lt;char[]&gt; TermsInput)     {       Start(TermsInput.Select(t =&gt; t.Select(p =&gt; (byte)(p == '0' ? 0 : 1)).ToArray()));     }      \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u043c\u0435\u0442\u043e\u0434\u0430     public void Start(IEnumerable&lt;char[]&gt; TermsInput, IEnumerable&lt;char[]&gt; NegativTerms)     {       Start(TermsInput.Select(t =&gt; t.Select(p =&gt; (byte)(p == '0' ? 0 : 1)).ToArray()),           NegativTerms.Select(t =&gt; t.Select(p =&gt; (byte)(p == '0' ? 0 : 1)).ToArray()));     }      \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u043c\u0435\u0442\u043e\u0434\u0430     public void Start(IEnumerable&lt;bool[]&gt; TermsInput)     {       Start(TermsInput.Select(t =&gt; t.Select(p =&gt; (byte)(p ? 1 : 0)).ToArray()));     }      \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u043c\u0435\u0442\u043e\u0434\u0430     public void Start(IEnumerable&lt;bool[]&gt; TermsInput, IEnumerable&lt;bool[]&gt; NegativTerms)     {       Start(TermsInput.Select(t =&gt; t.Select(p =&gt; (byte)(p ? 1 : 0)).ToArray()),           NegativTerms.Select(t =&gt; t.Select(p =&gt; (byte)(p ? 1 : 0)).ToArray()));     }   }   #endregion }<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u0432 \u0432\u0438\u0434\u0435 \u0441\u0443\u043c\u043c\u044b \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u043a \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u0430\u043c\u0438, \u0444\u0430\u0437\u0430\u043c\u0438 \u0438 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0430\u043c\u0438. \u042d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0435 \u0440\u0430\u0432\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438, \u043f\u0435\u0440\u0432\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0430\u044f, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 <i>t<\/i> \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f <i>N<\/i> \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0435\u0451 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 X(t-j) (j=1,2,\u2026,<i>N<\/i>), \u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Sign(X(t)-X(t-1)). \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0438 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u0447\u0451\u0442 \u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0435\u0451 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u044d\u0442\u043e\u0439 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435. \u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435, \u0442. \u0435. \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043e\u0442\u0447\u0451\u0442 \u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0435\u0451 \u0440\u0430\u0431\u043e\u0442\u044b. \u041d\u0435\u0439\u0440\u043e\u043d\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e, \u0435\u0441\u043b\u0438 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u0441\u0432\u043e\u0438\u043c \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 Sign(X(t)-X(t-1)) \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442. \u0415\u0441\u043b\u0438 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0441\u0435\u0442\u044c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043b\u043e\u0445\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0442\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043c\u0435\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0438 \u041d\u0421 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0430\u043c\u0438, \u0442. \u0435. \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0435\u0442.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C# \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0438\u0436\u0435 (\u043d\u0430\u0436\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430)<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">    public static void TestRandomNeuralNetwork()     {       \/\/\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440: \u0434\u043b\u0438\u043d\u0430 \u0432\u0441\u0435\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438       const int iTrendSize = 2000;       \/\/\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440: \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438       const int iTestTrendSize = 1000;       \/\/\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440: \u0434\u043b\u0438\u043d\u0430 \u043e\u043a\u043d\u0430 \u043f\u0440\u0435\u0434\u0438\u0441\u0442\u043e\u0440\u0438\u0438       const int iWindowSize = 10;       \/\/\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u043a\u0438 \u043e\u0434\u043d\u043e\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0442\u0440\u0435\u043d\u0434\u0430       const int iOmega = 100;       \/\/\u041a\u043e\u043b-\u0432\u043e \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u043a \u043c\u043d\u043e\u0433\u043e\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0442\u0440\u0435\u043d\u0434\u0430       const int iHarmonics = 5;       \/\/\u0412\u0435\u043b\u0438\u0447\u0438\u043d\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u043a\u0438       const int iMinAmpl = 50;       \/\/\u0412\u0435\u043b\u0438\u0447\u0438\u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u043a\u0438       const int iMaxAmpl = 100;       \/\/\u0412\u0435\u043b\u0438\u0447\u0438\u043d\u0430 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u0448\u0443\u043c\/\u0441\u0438\u0433\u043d\u0430\u043b       const double dNoise2SignalRatio = 0;       \/\/\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440: \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0448\u0430\u044e\u0449\u0438\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439       const int iAmountLogicDiscrims = 20;       \/\/\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e \u0442\u043e\u0447\u0435\u043a \u0430\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f       const int iMaxAmountDistributionPoints = 1000;       \/\/\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u043e\u0432 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439       const int iLogicDiscrimsMaxTrainRestarts = 1;        \/\/\u0414\u043b\u0438\u043d\u0430 \u0442\u0440\u0435\u043d\u0434\u0430 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f       int iPrepTrendLength = iTrendSize - iTestTrendSize;       double[] pTrend = new double[iTrendSize];       \/\/\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0440\u0435\u043d\u0434\u0430-\u0433\u0430\u0440\u043c\u043e\u043d\u0438\u043a\u0438       \/\/for (int t = 0; t &lt; iTrendSize; t++) pTrend[t] = Math.Sin((t * Math.PI) \/ iOmega) + 200;       \/\/\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043d\u043e\u0433\u043e\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0442\u0440\u0435\u043d\u0434\u0430       int[] pFreq = new int[iHarmonics];       int[] pPhase = new int[iHarmonics];       double[] pAmpl = new double[iHarmonics];       \/\/\u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0447. \u0447\u0438\u0441\u0435\u043b       Random RndFabric = new Random(Environment.TickCount);       for (int h = 0; h &lt; iHarmonics; h++)       {         pFreq[h] = RndFabric.Next(iOmega\/*iPrepTrendLength*\/) + 1;         pPhase[h] = RndFabric.Next(iPrepTrendLength);         pAmpl[h] = RndFabric.NextDouble();       }       double iMinValue = double.MaxValue, iMaxValue = 0;       for (int t = 0; t &lt; iTrendSize; t++)       {         double dValue = 0; \/\/iMinAmpl + ((iMaxAmpl - iMinAmpl) * RndFabric.NextDouble());         for (int h = 0; h &lt; iHarmonics; h++)         {           dValue += ((pAmpl[h] * (iMaxAmpl - iMinAmpl)) + iMinAmpl) * Math.Sin(((t + pPhase[h]) * Math.PI) \/ pFreq[h]);         }         pTrend[t] = dValue;         iMinValue = Math.Min(iMinValue, dValue);         iMaxValue = Math.Max(iMaxValue, dValue);       }       \/\/\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0448\u0443\u043c\u0430       if (dNoise2SignalRatio &gt; 0)       {         double dNoiseAmp = (iMaxValue - iMinValue) * dNoise2SignalRatio;         for (int t = 0; t &lt; iTrendSize; t++)         {           pTrend[t] += dNoiseAmp * 2.0 * (RndFabric.NextDouble() - 0.5);           iMinValue = Math.Min(iMinValue, pTrend[t]);         }       }       \/\/\u0421\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u043d\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438       if (iMinValue &lt; 0)       {         for (int t = 0; t &lt; iTrendSize; t++) pTrend[t] -= iMinValue;       }       \/\/\u041c\u0430\u0441\u0441\u0438\u0432\u044b \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f       double[][] pSourceTrendData = new double[iTrendSize][];       bool[] pTargetFeature = new bool[iTrendSize];       \/\/\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445       for (int t = iWindowSize; t &lt; iTrendSize; t++)       {         \/\/\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435         double[] pNormData = new double[iWindowSize];         for (int i = 0; i &lt; iWindowSize; i++) pNormData[i] = pTrend[t - iWindowSize + i];         pSourceTrendData[t] = pNormData;         \/\/\u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438         pTargetFeature[t] = (pTrend[t] &gt;= pTrend[t - 1]);       }       DateTime dtStartDt = DateTime.Now;       RndNeuroNet.RandomNeuralNetwork randomNeuralNetwork = new RndNeuroNet.RandomNeuralNetwork();       randomNeuralNetwork.CreateNetwork(pSourceTrendData, pTargetFeature, iWindowSize, iPrepTrendLength, iWindowSize, iAmountLogicDiscrims,         \/\/iClustersAmount, iClustersRestart,         iLogicDiscrimsMaxTrainRestarts, iMaxAmountDistributionPoints);       \/\/\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u044b       TimeSpan tsTime = (DateTime.Now - dtStartDt);       \/\/\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0435       int iUpGapCounterTrain = 0, iDnGapCounterTrain = 0, iSuccessCounterTrain = 0, iErrorCounterTrain = 0, iIgnoreCounterTrain = 0;       for (int t = iWindowSize; t &lt; iPrepTrendLength; t++)       {         double dPrognos = randomNeuralNetwork.CalcResponce(pSourceTrendData[t]);         if (dPrognos == 0)         {           iIgnoreCounterTrain++;         }         else         {           if (((pTargetFeature[t] ? +1 : -1) * dPrognos) &gt; 0)           {             iSuccessCounterTrain++;           }           else           {             iErrorCounterTrain++;           }         }         \/\/\u0421\u0447\u0451\u0442\u0447\u0438\u043a\u0438 GAP-\u043e\u0432 \u0438 \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0446\u0435\u043d\u043a\u0438         if (pTargetFeature[t])         {           iUpGapCounterTrain++;         }         else         {           iDnGapCounterTrain++;         }       }       \/\/\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0435       int iUpGapCounterTest = 0, iDnGapCounterTest = 0, iSuccessCounterTest = 0, iErrorCounterTest = 0, iIgnoreCounterTest = 0;       for (int t = iPrepTrendLength; t &lt; iTrendSize; t++)       {         double dPrognos = randomNeuralNetwork.CalcResponce(pSourceTrendData[t]);         if (dPrognos == 0)         {           iIgnoreCounterTest++;         }         else         {           if (((pTargetFeature[t] ? +1 : -1) * dPrognos) &gt; 0)           {             iSuccessCounterTest++;           }           else           {             iErrorCounterTest++;           }         }         \/\/\u0421\u0447\u0451\u0442\u0447\u0438\u043a\u0438 GAP-\u043e\u0432 \u0438 \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0446\u0435\u043d\u043a\u0438         if (pTargetFeature[t])         {           iUpGapCounterTest++;         }         else         {           iDnGapCounterTest++;         }       }       \/\/\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435       Console.WriteLine(&quot;\u041a\u043e\u043b-\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 = &quot; + iUpGapCounterTrain + Environment.NewLine +                       &quot;\u041a\u043e\u043b-\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430 \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 = &quot; + iDnGapCounterTrain + Environment.NewLine +                       &quot;\u041a\u043e\u043b-\u0432\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 = &quot; + iSuccessCounterTrain + Environment.NewLine +                       &quot;\u041a\u043e\u043b-\u0432\u043e \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 = &quot; + iErrorCounterTrain + Environment.NewLine +                       &quot;\u041a\u043e\u043b-\u0432\u043e \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 = &quot; + iIgnoreCounterTrain + Environment.NewLine +                       &quot;\u041a\u043e\u043b-\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0442\u0435\u0441\u0442\u0435 = &quot; + iUpGapCounterTest + Environment.NewLine +                       &quot;\u041a\u043e\u043b-\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430 \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0442\u0435\u0441\u0442\u0435 = &quot; + iDnGapCounterTest + Environment.NewLine +                       &quot;\u041a\u043e\u043b-\u0432\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u043d\u0430 \u0442\u0435\u0441\u0442\u0435 = &quot; + iSuccessCounterTest + Environment.NewLine +                       &quot;\u041a\u043e\u043b-\u0432\u043e \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u043d\u0430 \u0442\u0435\u0441\u0442\u0435 = &quot; + iErrorCounterTest + Environment.NewLine +                       &quot;\u041a\u043e\u043b-\u0432\u043e \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u043d\u0430 \u0442\u0435\u0441\u0442\u0435 = &quot; + iIgnoreCounterTest + Environment.NewLine +                       &quot;\u0412\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b = &quot; + (int)tsTime.TotalMinutes + &quot; \u043c\u0438\u043d. &quot; + tsTime.Seconds + &quot; \u0441\u0435\u043a.&quot;       );       Console.WriteLine(&quot;Press Enter to exit ...&quot;);       Console.ReadLine();     }<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0438\u0442\u043e\u0433 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u041d\u0421, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432\u0438\u0434 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u041d\u0421 \u043d\u0435 \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043e\u0448\u0438\u0431\u043e\u043a. \u041d\u043e \u043e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c\u0438, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0442\u0440\u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u044b\u0445 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041e\u043d\u0438 \u043d\u0435 \u0441\u043a\u043b\u043e\u043d\u043d\u044b \u043a \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e;<\/li>\n<li>\u0420\u0430\u0441\u0447\u0451\u0442 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u043f\u0440\u043e\u0441\u0442 \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0451\u043c\u043a\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440;<\/li>\n<li>\u041e\u043d\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u044b \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u0442. \u043a. \u0432 \u0438\u0445 \u043e\u0441\u043d\u043e\u0432\u0435 \u043b\u0435\u0436\u0438\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0441\u043d\u043e\u0432\u0430, \u0433\u0434\u0435 \u00ab\u0442\u0440\u0443\u0434\u043d\u043e \u0432 \u0447\u0451\u043c-\u0442\u043e \u043e\u0448\u0438\u0431\u0438\u0442\u044c\u0441\u044f\u00bb.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0430 \u041d\u0421 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0435\u0451 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0437\u0430\u0442\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u043e\u043c\u0443 \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438. \u0418\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u041a\u0432\u0430\u0439\u043d\u0430-\u041c\u0430\u043a\u2019\u041a\u043b\u0430\u0441\u043a\u0438, \u0442. \u0435. 3-\u0439 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u043b\u043e\u0439. \u041d\u043e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0433\u043b\u0430\u0434\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043f\u0443\u0442\u0451\u043c \u043a\u0430\u0441\u043a\u0430\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u0436\u0435 \u0434\u0430\u043d\u043d\u0430\u044f \u041d\u0421 \u0437\u0430\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b\u0430 \u0441\u0435\u0431\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/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\/post\/500436\/\"> https:\/\/habr.com\/ru\/post\/500436\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/500436\/\">\n<p>\u041d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0440\u0435\u0434\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 (\u041d\u0421). \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u041d\u0421 \u043f\u0435\u0440\u0435\u0434 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0435, \u0447\u0430\u0441\u0442\u043e \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u043e\u0439 \u0441\u0440\u0435\u0434\u0438 \u041d\u0421 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0441 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0423 \u043f\u043e\u043b\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0445 \u041d\u0421 \u0441 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432, \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u00ab\u0441\u0438\u043b\u044c\u043d\u043e\u043c\u00bb \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0435, \u043b\u0435\u0436\u0430\u0449\u0435\u043c \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u043e, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0435\u0441\u0442\u044c \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438, \u0441\u0430\u043c\u044b\u043c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043a\u043b\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u043a \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u041d\u0421 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438 \u0443\u0442\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u043e\u0431\u0449\u0430\u044e\u0449\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c. \u042d\u0442\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438 \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0441\u0442\u044c \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043d\u0435 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043a \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0445 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u041d\u0421 (\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0438 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435) \u0441 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438. \u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0435\u0441\u043e\u0432\u044b\u0445 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0445 \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u0447\u0451\u0442\u043e\u0432, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0430, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435. \u0414\u0440\u0443\u0433\u0438\u043c \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u0435\u0442\u0438.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-303059","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/303059","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=303059"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/303059\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=303059"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=303059"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=303059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}