{"id":289945,"date":"2018-09-26T19:20:01","date_gmt":"2018-09-26T15:20:01","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=289945"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2018-09-26T15:20:01","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=289945","title":{"rendered":"\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \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&#8217;\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"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e \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 (<a href=\"https:\/\/habr.com\/post\/328506\">https:\/\/habr.com\/post\/328506<\/a>). \u0412 \u043d\u0435\u0439 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439 \u0441 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 (\u0445\u043e\u0442\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043d\u0435\u0439 \u043f\u0440\u044f\u043c\u043e \u043d\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c). \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0435\u0434\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u043b\u043e. \u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0438\u043b\u0438 \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u0434\u0430\u043d\u044b \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u0447\u0430\u0441\u0442\u0438 Q \u0438\u0437 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 P=<math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d71\/9e0\/fb0\/d719e0fb0b8428be4f0144d45f7b6ccf.svg\" alt=\"$2^N$\" data-tex=\"inline\"><\/math> \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 (\u0442\u0435\u0440\u043c\u043e\u0432) \u0438\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445) \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c <i>N<\/i>, \u0442. \u0435. Q &lt; P. \u0422\u0430\u043a\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043e\u043f\u0442\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. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0447\u0438\u0441\u043b\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 <i>N<\/i>=30, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0443\u0440\u044f\u0434\u043d\u044b\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u0440\u044b\u043d\u043a\u0430\u0445, \u0442\u043e \u043e\u0431\u044a\u0451\u043c \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/42d\/b5e\/0d1\/42db5e0d1d343213c6bb1cd91ccb8289.svg\" alt=\"$2^{30}$\" data-tex=\"inline\"><\/math>&gt;<math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/027\/d2f\/484\/027d2f48439c514c7b9e44214daac670.svg\" alt=\"$10^9$\" data-tex=\"inline\"><\/math> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0445 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0434\u0430\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436\u0435 \u043e \u0447\u0430\u0441\u0442\u043d\u044b\u0445 \u043b\u0438\u0446\u0430\u0445, \u0442. \u0435. \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u0444\u0435\u0440\u0430 BigData, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0426\u041e\u0414-\u043e\u0432 \u0438 \u0442. \u0434.<\/p>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0441\u0442\u043e \u0432 \u0441\u0438\u043b\u0443 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u0432 \u0441\u0438\u043b\u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u0447\u0438\u043d (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u0438\u0445 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f). \u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u00ab\u043e\u0431\u0445\u043e\u0434\u0430\u00bb \u044d\u0442\u043e\u0439 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0441 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0442\u0435\u0440\u043c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043c\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<br \/>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 (\u0442\u0435\u0440\u043c\u043e\u0432) \u0434\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0434\u0430\u0432\u0430\u043b\u043e \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f \u0438\u043c\u0435\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u043d\u0430\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u043e, \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0435 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0434\u043e\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 V=<math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8af\/ee5\/ff2\/8afee5ff2d62cb4a4d34aba4cb6f6be6.svg\" alt=\"$2^{P-Q}$\" data-tex=\"inline\"><\/math>, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043e\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u043c. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 Q \u0438 P \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0434\u043e\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0430\u0441\u0442\u0440\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0435\u043b\u0438\u043a\u043e \u0438 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0432 \u0441\u0438\u043b\u0443 \u0433\u0440\u0430\u043d\u0434\u0438\u043e\u0437\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0442\u0440\u0430\u0442.<\/p>\n<p>  \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u043d\u0443\u0436\u0435\u043d \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u043b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0434\u043e\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0430\u043a \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043c\u043e\u0433 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0438 \u0441 \u0443\u0441\u0435\u0447\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c. \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0434\u0432\u0430 \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u0430 \u0442\u0435\u0440\u043c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u0430 \u043a\u0430\u043a 0 (FALSE) \u0438 1 (TRUE).<\/p>\n<p>  \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u041a\u0432\u0430\u0439\u043d\u0430-\u041c\u0430\u043a\u2019\u041a\u043b\u0430\u0441\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0442\u0435\u043e\u0440\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u043e\u0432:  <\/p>\n<ol>\n<li>\u042d\u0442\u0430\u043f. \u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0442\u0435\u0440\u043c \u041b\u0424, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u0430 (\u0437\u0430\u043a\u043e\u043d\u044b) \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u044f:<br \/>  a) (A &amp; B)? (A &amp; !B)? A;<br \/>  b) (A? B) &amp; (A? !B)? A;<br \/>  \u0433\u0434\u0435 &amp; \u2014 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u00ab\u0418\u00bb;? \u2014 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u00ab\u0418\u041b\u0418\u00bb;! \u2013 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u044f \u00ab\u041d\u0415\u00bb. \u0418\u0437 \u044d\u0442\u0438\u0445 \u0444\u043e\u0440\u043c\u0443\u043b \u0441\u043b\u0435\u0434\u0443\u0435\u0442, \u0447\u0442\u043e \u0434\u0432\u0435 \u0442\u0435\u0440\u043c\u044b \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u0412 \u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u0433\u0434\u0435 \u0434\u0432\u0435 \u0442\u0435\u0440\u043c\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u043a \u00ab*\u00bb. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0430\u043b\u0444\u0430\u0432\u0438\u0442 \u0432 \u0441\u043a\u043b\u0435\u0435\u043d\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u0430\u0445 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0441\u044f \u0434\u043e \u0442\u0440\u0451\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439:<br \/>  \u2022 0 =&gt; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 false;<br \/>  \u2022 1 =&gt; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true;<br \/>  \u2022 2 =&gt; \u0441\u043a\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f (*).<\/li>\n<li>\u042d\u0442\u0430\u043f. \u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u043a\u043b\u0435\u0435\u043d\u043d\u044b\u0445 \u0442\u0435\u0440\u043c, \u043a\u0430\u043a \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0438\u043c\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0442\u0435\u0440\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c Q. \u0422. \u0435., \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u0440\u043c \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043e\u0436\u0434\u0435\u0441\u0442\u0432\u043b\u0451\u043d\u043d\u044b\u0435 \u0441 \u043d\u0438\u043c\u0438 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u0432 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u043b\u0438 \u0432\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u044b. \u041f\u043e\u0434 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u0438\u0437\u044a\u044e\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u043d\u0430\u0434 \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u0434\u0430\u0432\u0430\u043b\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u043a\u043b\u0435\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0440\u043c \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434: 10*0110*.<br \/>  \u0422\u043e\u0433\u0434\u0430 \u043e\u043d \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0442\u0435\u0440\u043c 10101100:<br \/>  10*0110* &amp; 10101100 = TRUE<br \/>  \u043d\u043e \u043d\u0435 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0442\u0435\u0440\u043c 00101100:<br \/>  10*0110* &amp; 00101100 = FALSE<br \/>  \u0422. \u0435. \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u0440\u043c \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0432\u0435\u0437\u0434\u0435 \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u0439, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b \u00ab*\u00bb \u2013 \u0432 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0442.\u043a. \u0432 \u044d\u0442\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044f.<\/li>\n<\/ol>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 (\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>using System; using System.Collections.Generic; using System.Linq;  \/\/\/ &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 \u0441\u043a\u043b\u0435\u0435\u043d\u043e\u0439 \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 virtual bool Calculate(char[] X) {   return Calculate(X.Select(p =&gt; p != '0').ToArray()); } \/\/\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 virtual bool Calculate(byte[] X) {   return Calculate(X.Select(p =&gt; p != 0).ToArray()); } }  \/\/\/ &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++)   { \tif ((term[i] == cStarSymb) || (term[i] == X[i])) continue; \tbResult = false; \tbreak;   }   return bResult; }  public override bool Calculate(bool[] X) {   bool bResult = false;   foreach (byte[] term in Terms)   { \tbool TermVal = true; \tfor (int i = 0; i &lt; term.Length; i++) \t{ \t  if (term[i] == cStarSymb) continue; \t  TermVal &amp;= (term[i] != 0 ? X[i] : !X[i]); \t} \tbResult |= TermVal;   }   return bResult; } }  \/\/\/ &lt;summary&gt; \/\/\/ \u041a\u043e\u043d\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 Knf : LogicFunction { public override bool Calculate(bool[] X) {   bool bResult = true;   foreach (byte[] term in Terms)   { \tbool TermVal = false; \tfor (int i = 0; i &lt; term.Length; i++) \t{ \t  if (term[i] == cStarSymb) continue; \t  TermVal |= (term[i] != 0 ? X[i] : !X[i]); \t} \tbResult &amp;= TermVal;   }   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\u0440\u0435\u043d\u044c private readonly TreeNodeMiddle rootNode = new TreeNodeMiddle(); \/\/\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 TreeNodeMiddle[] 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 \u0443\u0437\u043b\u0443 private byte[] enumerationTerm; public byte[] EnumerationTerm {   get { return enumerationTerm; } } \/\/\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() {   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;   rootNode.Clear(); }  \/\/\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;   enumerationBuf = new TreeNodeMiddle[_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 = (enumerationPos &gt; 0 ? 1 : 0);   TreeNodeEnd pRetTreeNode = null;   while ((pRetTreeNode == null) &amp;&amp; (enumerationPos &gt;= 0))   { \tTreeNodeBase[] pCurrNodes = enumerationBuf[enumerationPos].Childs; \tTreeNodeBase pNextNode = null; \tint i = enumerationTerm[enumerationPos] + iIsNext; \tfor (; i &lt; 3; i++) if ((pNextNode = pCurrNodes[i]) != null) break; \tif (pNextNode == null) \t{ \t  \/\/\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 \t  enumerationPos--; \t  iIsNext = 1; \t} \telse \t{ \t  enumerationTerm[enumerationPos] = (byte)i; \t  if (pNextNode is TreeNodeMiddle) \t  { \t\t\/\/\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 \t\tenumerationPos++; \t\tenumerationBuf[enumerationPos] = (TreeNodeMiddle)pNextNode; \t\tenumerationTerm[enumerationPos] = 0; \t\tiIsNext = 0; \t  } \t  else \/\/if (pNextNode is TreeNodeEnd) \t  { \t\t\/\/\u041d\u0430\u0439\u0434\u0435\u043d \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \t\tpRetTreeNode = (TreeNodeEnd)pNextNode; \t  } \t}   }   return pRetTreeNode; }  \/\/\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 public TreeNodeEnd AddTerm(byte[] term) {   _rang = Math.Max(_rang, term.Length);   TreeNodeBase pCurrNode = rootNode;   for (int j = 0; j &lt; term.Length; j++)   { \tTreeNodeBase item = ((TreeNodeMiddle)pCurrNode).Childs[term[j]]; \tif (item == null) \t{ \t  if (j + 1 &lt; term.Length) \t  { \t\titem = new TreeNodeMiddle(); \t  } \t  else \t  { \t\titem = new TreeNodeEnd(); \t\t_count++; \t  } \t  ((TreeNodeMiddle)pCurrNode).Childs[term[j]] = item; \t} \tpCurrNode = item;   }   return (TreeNodeEnd)pCurrNode; }  \/\/\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) {   TreeNodeEnd pRemovedNode = null;   TreeNodeMiddle pCurrNode = rootNode;   foreach (byte cSymb in term)   { \tTreeNodeBase pNextNode = pCurrNode.Childs[cSymb]; \tif (pNextNode == null) break; \tif (pNextNode is TreeNodeMiddle) \t{ \t  pCurrNode = (TreeNodeMiddle)pNextNode; \t} \telse \t{ \t  \/\/\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 \t  pRemovedNode = (TreeNodeEnd)pNextNode; \t  \/\/\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 \t  pCurrNode.Childs[cSymb] = null; \t  \/\/\u0423\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b-\u0432\u043e \u0443\u0437\u043b\u043e\u0432 \t  _count--; \t  \/\/\u0423\u0437\u0435\u043b \u0443\u0434\u0430\u043b\u0451\u043d - \u0432\u044b\u0445\u043e\u0434 \t  break; \t}   }   return pRemovedNode; }  \/\/\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 TreeNodeEnd IsContains(byte[] term) {   TreeNodeBase pCurrNode = rootNode;   foreach (byte cSymb in term)   { \tpCurrNode = ((TreeNodeMiddle)pCurrNode).Childs[cSymb]; \tif (pCurrNode == null) break;   }   return ((pCurrNode != null) &amp;&amp; (pCurrNode is TreeNodeEnd) ? (TreeNodeEnd)pCurrNode : null); }  \/\/\u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0441 \u043e\u0434\u043d\u0438\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u0435\u043c \u043e\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u043d\u0435 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c public int SearchDiff1(byte[] term, TreeNodeBase[] pOneDiffNodesList) {   int iOneDiffNodesListCount = 0;   TreeNodeBase pCurrNode = rootNode;   for (int iPos = 0; iPos &lt; term.Length; iPos++)   { \tpOneDiffNodesList[iPos] = null; \tbyte cSymbol = term[iPos]; \tif (pCurrNode != null) \t{ \t  if (cSymbol != LogicFunction.cStarSymb) \t  { \t\tTreeNodeBase item = ((TreeNodeMiddle)pCurrNode).Childs[1 - cSymbol]; \t\tif (item != null) \t\t{ \t\t  \/\/\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 \u043e\u0442\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0442\u0435\u0440\u043c \t\t  pOneDiffNodesList[iPos] = item; \t\t  iOneDiffNodesListCount++; \t\t} \t  } \t  pCurrNode = ((TreeNodeMiddle)pCurrNode).Childs[cSymbol]; \t} \telse if (iOneDiffNodesListCount == 0) \t{ \t  \/\/\u041c\u0430\u0441\u0441\u0438\u0432 \u043e\u0442\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0442\u0435\u0440\u043c \u043f\u0443\u0441\u0442 \u0438 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0435\u0433\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \t  for (int i = iPos + 1; i &lt; term.Length; i++) pOneDiffNodesList[i] = null; \t  break; \t} \t\/\/\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043e\u0442\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445, \t\/\/\u043d\u0430 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u043e\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \tfor (int iKey = 0; iKey &lt; iPos; iKey++) \t{ \t  TreeNodeBase item = pOneDiffNodesList[iKey]; \t  if (item == null) continue; \t  item = ((TreeNodeMiddle)item).Childs[cSymbol]; \t  if (item == null) \t  { \t\t\/\/\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0442\u0435\u0440\u043c \t\tpOneDiffNodesList[iKey] = null; \t\tiOneDiffNodesListCount--; \t  } \t  else \t  { \t\tpOneDiffNodesList[iKey] = item; \t  } \t}   }   return iOneDiffNodesListCount; } }  \/\/\/ &lt;summary&gt; \/\/\/ \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0443\u0437\u043b\u0430 \u0434\u0435\u0440\u0435\u0432\u0430 \u0442\u0435\u0440\u043c\u043e\u0432 \/\/\/ &lt;\/summary&gt; public interface TreeNodeBase { \/\/\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 void Clear(); }  \/\/\/ &lt;summary&gt; \/\/\/ \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0434\u0435\u0440\u0435\u0432\u0430 \u0442\u0435\u0440\u043c\u043e\u0432 \/\/\/ &lt;\/summary&gt; public class TreeNodeEnd : TreeNodeBase { \/\/\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 public void Clear() { } }  \/\/\/ &lt;summary&gt; \/\/\/ \u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0434\u0435\u0440\u0435\u0432\u0430 \u0442\u0435\u0440\u043c\u043e\u0432 \/\/\/ &lt;\/summary&gt; public class TreeNodeMiddle : TreeNodeBase { \/\/\u0414\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0443\u0437\u043b\u044b public readonly TreeNodeBase[] Childs = new TreeNodeBase[3];  \/\/\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 public void Clear() {   for (int i = 0; i &lt; 3; i++)   { \tif ((Childs[i] != null) &amp;&amp; (Childs[i] is TreeNodeMiddle)) ((TreeNodeMiddle)Childs[i]).Clear(); \tChilds[i] = null;   } } }  \/\/\/ &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 { private readonly Dnf _result = new Dnf(); public Dnf Result {   get { return _result; } }  \/\/\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, LinkedList&lt;byte[]&gt; NegTerms,   Dictionary&lt;int, LinkedList&lt;byte[]&gt;&gt; OutResult, TreeFuncTerm NegativTree, int iLevel) {   LinkedList&lt;byte[]&gt; OutR = new LinkedList&lt;byte[]&gt;();   if (OutResult != null) OutResult.Add(iLevel, OutR);   bool IsVirtSkleivOn = ((NegativTree != null) &amp;&amp; (NegativTree.Count != 0));   TreeNodeEnd x1 = X1Tree.EnumerationInit();   TreeNodeBase[] FindTerms = new TreeNodeBase[x1 != null ? X1Tree.Rang : 1];   TreeNodeBase[] FindNegTerms = new TreeNodeBase[x1 != null ? X1Tree.Rang : 1];   TreeNodeBase[] FindVirtTerms = new TreeNodeBase[x1 != null ? X1Tree.Rang : 1];   while (x1 != null)   { \tbool bIsSkleiv = false; \tbyte[] pCurrTerm = X1Tree.EnumerationTerm; \tX1Tree.SearchDiff1(pCurrTerm, FindTerms); \tif (IsVirtSkleivOn) NegativTree.SearchDiff1(pCurrTerm, FindNegTerms); \tfor (int iPos = 0; iPos &lt; pCurrTerm.Length; iPos++) \t{ \t  byte cSymbSav = pCurrTerm[iPos]; \t  if (cSymbSav == LogicFunction.cStarSymb) continue; \t  \/\/\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 \u0438\u043b\u0438 \t  \/\/\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 \t  if (FindTerms[iPos] != null) \t  { \t\tbIsSkleiv = true; \t\tif (cSymbSav == 0) \t\t{ \t\t  pCurrTerm[iPos] = LogicFunction.cStarSymb; \/\/\u041c\u0435\u0442\u043a\u0430 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u044f \t\t  X2Tree.AddTerm(pCurrTerm); \t\t  pCurrTerm[iPos] = cSymbSav; \t\t} \t  } \t  else if (IsVirtSkleivOn &amp;&amp; (FindNegTerms[iPos] == null)) \t  { \t\tpCurrTerm[iPos] = LogicFunction.cStarSymb; \/\/\u041c\u0435\u0442\u043a\u0430 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u044f \t\tbool bIsNotCanAdd = false; \t\tforeach (byte[] NegTerm in NegTerms) \t\t{ \t\t  if (bIsNotCanAdd = Dnf.Calculate(NegTerm, pCurrTerm)) break; \t\t} \t\tif (!bIsNotCanAdd) \t\t{ \t\t  bIsSkleiv = true; \t\t  X2Tree.AddTerm(pCurrTerm); \t\t} \t\tpCurrTerm[iPos] = cSymbSav; \t  } \t} \t\/\/\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 \tif (!bIsSkleiv) OutR.AddLast(pCurrTerm.ToArray()); \t\/\/\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0442\u0435\u0440\u043c\u0443 \tx1 = X1Tree.EnumerationNextNode();   } }  \/\/\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0442\u0435\u0440\u043c\u0430 private static UInt64 GetTermCode(byte[] pTerm) {   UInt64 iMultip = 1, iCode = 0;   for (int i = 0; i &lt; pTerm.Length; i++)   { \tiCode += (iMultip * pTerm[i]); \tiMultip *= 3;   }   return iCode; }  \/\/\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u0440\u043c \u0434\u043b\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 private static byte[] GetTermByCode(UInt64 iCode, int iTermLength) {   byte[] pTerm = new byte[iTermLength];   int iCounter = 0;   while (iCode != 0)   { \tpTerm[iCounter++] = (byte)(iCode % 3); \tiCode \/= 3;   }   return pTerm; }  \/\/\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(SortedSet&lt;UInt64&gt; X1Tree, SortedSet&lt;UInt64&gt; X2Tree, LinkedList&lt;byte[]&gt; NegTerms,   Dictionary&lt;int, LinkedList&lt;byte[]&gt;&gt; OutResult, SortedSet&lt;UInt64&gt; NegativTree, int iLevel,   int iTermLength) {   LinkedList&lt;byte[]&gt; OutR = new LinkedList&lt;byte[]&gt;();   if (OutResult != null) OutResult.Add(iLevel, OutR);   bool IsVirtSkleivOn = ((NegativTree != null) &amp;&amp; (NegativTree.Count != 0));   foreach (UInt64 x1 in X1Tree)   { \tbyte[] pCurrTerm = (IsVirtSkleivOn ? GetTermByCode(x1, iTermLength) : null); \tbool bIsSkleiv = false; \tUInt64 iMultip = 1; \tfor (int iPos = 0; iPos &lt; iTermLength; iPos++) \t{ \t  byte cSymbSav = (pCurrTerm != null ? pCurrTerm[iPos] : (byte)((x1 \/ iMultip) % 3)); \t  if (cSymbSav != LogicFunction.cStarSymb) \t  { \t\tUInt64 iCode = (cSymbSav == 0 ? x1 + iMultip : x1 - iMultip); \t\t\/\/\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 \u0438\u043b\u0438 \t\t\/\/\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 \t\tif (X1Tree.Contains(iCode)) \t\t{ \t\t  bIsSkleiv = true; \t\t  if (cSymbSav == 0) \t\t  { \t\t\tX2Tree.Add(x1 + (byte)(LogicFunction.cStarSymb - cSymbSav) * iMultip); \t\t  } \t\t} \t\telse if (IsVirtSkleivOn &amp;&amp; !NegativTree.Contains(iCode)) \t\t{ \t\t  bool bIsNotCanAdd = false; \t\t  pCurrTerm[iPos] = LogicFunction.cStarSymb; \/\/\u041c\u0435\u0442\u043a\u0430 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u044f \t\t  foreach (byte[] NegTerm in NegTerms) \t\t  { \t\t\tif (bIsNotCanAdd = Dnf.Calculate(NegTerm, pCurrTerm)) break; \t\t  } \t\t  pCurrTerm[iPos] = cSymbSav; \t\t  if (!bIsNotCanAdd) \t\t  { \t\t\tbIsSkleiv = true; \t\t\tX2Tree.Add(x1 + (byte)(LogicFunction.cStarSymb - cSymbSav) * iMultip); \t\t  } \t\t} \t  } \t  iMultip *= 3; \t} \t\/\/\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 \tif (!bIsSkleiv) OutR.AddLast(pCurrTerm != null ? pCurrTerm : GetTermByCode(x1, iTermLength));   } }  \/\/\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\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \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, SortedSet&lt;UInt64&gt; OutX2Tree) {   OutX2Tree.Clear();   foreach (byte[] x1 in InX1)   { \tUInt64 iCode = GetTermCode(x1); \tif (OutX2Tree.Contains(iCode)) continue; \tOutX2Tree.Add(iCode);   } }  \/\/\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.AddTerm(x1); }  \/\/\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u043e\u0436\u0434\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u0432\u0443\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 private static bool IsEqualTerms(byte[] pTermC, byte[] pTermB) {   if ((pTermC == null) || (pTermB == null) || (pTermC.Length != pTermB.Length)) return false;   bool bIsEqual = false;   int iLength = Math.Min(pTermC.Length, pTermB.Length);   for ( int i = 0; i &lt; iLength; i++)   { \tif (!(bIsEqual = (pTermB[i] == pTermC[i]))) break;   }   return bIsEqual; }  \/\/ \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. private static void ReduceRedundancyTerms(LinkedList&lt;byte[]&gt; InpTerms, LinkedList&lt;byte[]&gt; NegTerms, Dictionary&lt;int, LinkedList&lt;byte[]&gt;&gt; OutputTerms, 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 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432, \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u044b   HashSet&lt;byte[]&gt; pNumbersForAdd = new HashSet&lt;byte[]&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\u043e\u043c\u0443 \u0441\u043f\u0438\u0441\u043a\u0443 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0445 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0442   Dictionary&lt;byte[], HashSet&lt;byte[]&gt;&gt; Numbers2Terms = new Dictionary&lt;byte[], HashSet&lt;byte[]&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 \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;byte[]&gt;&gt; Terms2Numbers = new Dictionary&lt;byte[], HashSet&lt;byte[]&gt;&gt;();   \/\/\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u0440\u043e\u0432\u043d\u044e   foreach (int iLevel in OutputTerms.Keys.OrderByDescending(p =&gt; p).AsEnumerable())   { \t\/\/\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 \tforeach (byte[] term in OutputTerms[iLevel]) \t{ \t  \/\/\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 \t  HashSet&lt;byte[]&gt; InTermsCont = new HashSet&lt;byte[]&gt;(); \t  \/\/\u0426\u0438\u043a\u043b \u043f\u043e \u0432\u0441\u0435\u043c \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u0442\u0435\u0440\u043c\u0430\u043c \t  foreach (byte[] InpTerm in InpTerms) \t  { \t\tif (Dnf.Calculate(InpTerm, term)) InTermsCont.Add(InpTerm); \t  } \t  \/\/\u0426\u0438\u043a\u043b \u043f\u043e \u0432\u0441\u0435\u043c \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0442\u0435\u0440\u043c\u0430\u043c (\u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c) \t  if (NegTerms != null) \t  { \t\tforeach (byte[] NegTerm in NegTerms) \t\t{ \t\t  if (!Dnf.Calculate(NegTerm, term)) InTermsCont.Add(NegTerm); \t\t} \t  } \t  Terms2Numbers.Add(term, InTermsCont); \t} \t\/\/\u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0442\u0435\u0440\u043c \u0438\u043c\u0435\u0435\u0442 \u0442\u0435 \u0436\u0435 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u044b \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \tint iTerms2NumbersCountPrev = 0; \tforeach (byte[] term in OutputTerms[iLevel].OrderByDescending(p =&gt; Terms2Numbers[p].Count)) \t{ \t  \/\/\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 \t  HashSet&lt;byte[]&gt; InTermsCont = Terms2Numbers[term]; \t  int iIntersectNumbers = pNumbersForAdd.Intersect(InTermsCont).Count(); \t  if ((iIntersectNumbers &lt; InTermsCont.Count) || (iTerms2NumbersCountPrev == InTermsCont.Count)) \t  { \t\tpNumbersForAdd.UnionWith(InTermsCont); \t\tiTerms2NumbersCountPrev = InTermsCont.Count; \t\tforeach (byte[] pSrcNode in InTermsCont) \t\t{ \t\t  if (!Numbers2Terms.ContainsKey(pSrcNode)) Numbers2Terms.Add(pSrcNode, new HashSet&lt;byte[]&gt;()); \t\t  Numbers2Terms[pSrcNode].Add(term); \t\t} \t  } \t}   }   \/\/\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 (pNumbersForAdd.Count &gt; 0)   { \tbyte[] term = Numbers2Terms[pNumbersForAdd.OrderBy(p =&gt; Numbers2Terms[p].Count).First()].OrderByDescending(q =&gt; pNumbersForAdd.Intersect(Terms2Numbers[q]).Count()).First(); \tResultTerms.Add(term); \tpNumbersForAdd.ExceptWith(Terms2Numbers[term]);   } }  \/\/\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, IEnumerable&lt;byte[]&gt; NegativTerms, ICollection&lt;byte[]&gt; OutR) {   int iTotalLevels = (PositivTerms.Count() &gt; 0 ? PositivTerms.First().Length : (NegativTerms != null &amp;&amp; NegativTerms.Count() &gt; 0 ? NegativTerms.First().Length : 0));   Dictionary&lt;int, LinkedList&lt;byte[]&gt;&gt; SkleivTerms = new Dictionary&lt;int, LinkedList&lt;byte[]&gt;&gt;(iTotalLevels);   LinkedList&lt;byte[]&gt; InpTerms = new LinkedList&lt;byte[]&gt;();   LinkedList&lt;byte[]&gt; NegTerms = new LinkedList&lt;byte[]&gt;();    if (iTotalLevels &lt; 40)   { \tSortedSet&lt;UInt64&gt; X1PositivTree = new SortedSet&lt;UInt64&gt;();  \tDeleteDublicatingTerms(PositivTerms, X1PositivTree);  \tSortedSet&lt;UInt64&gt; X1NegativTree = null; \tif (NegativTerms != null) \t{ \t  X1NegativTree = new SortedSet&lt;UInt64&gt;(); \t  DeleteDublicatingTerms(NegativTerms, X1NegativTree); \t  \/\/\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 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u0445 \t  UInt64[] pNumbList = X1PositivTree.Intersect(X1NegativTree).ToArray(); \t  foreach(UInt64 iNumb in pNumbList) \t  { \t\t\/\/\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 \t\tint iPos_Count = PositivTerms.Count(p =&gt; GetTermCode(p) == iNumb); \t\tint iNeg_Count = NegativTerms.Count(p =&gt; GetTermCode(p) == iNumb); \t\tif (iPos_Count &gt; iNeg_Count) \t\t{ \t\t  X1NegativTree.Remove(iNumb); \t\t} \t\telse if (iPos_Count &lt; iNeg_Count) \t\t{ \t\t  X1PositivTree.Remove(iNumb); \t\t} \t\telse \/\/if (iPos_Count == iNeg_Count) \t\t{ \t\t  X1PositivTree.Remove(iNumb); \t\t  X1NegativTree.Remove(iNumb); \t\t} \t  } \t  \/\/\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0434\u043b\u044f \u044d\u0442\u0430\u043f\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \t  foreach (UInt64 code in X1NegativTree) \t  { \t\tNegTerms.AddLast(GetTermByCode(code, iTotalLevels)); \t  } \t}  \t\/\/\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0434\u043b\u044f \u044d\u0442\u0430\u043f\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \tforeach (UInt64 code in X1PositivTree) \t{ \t  InpTerms.AddLast(GetTermByCode(code, iTotalLevels)); \t}  \tint iLevelCounter = 0; \t\/\/\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 \twhile ((X1PositivTree.Count != 0) &amp;&amp; (iLevelCounter &lt; iTotalLevels)) \t{ \t  SortedSet&lt;UInt64&gt; X2Tree = new SortedSet&lt;UInt64&gt;(); \t  Skleivanie(X1PositivTree, X2Tree, NegTerms, SkleivTerms, X1NegativTree, iLevelCounter, iTotalLevels);  \t  if ((X1NegativTree != null) &amp;&amp; (X1NegativTree.Count != 0)) \t  { \t\tSortedSet&lt;UInt64&gt; X2NegativTree = new SortedSet&lt;UInt64&gt;(); \t\tSkleivanie(X1NegativTree, X2NegativTree, InpTerms, null, X1PositivTree, iLevelCounter, iTotalLevels);  \t\t\/\/\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044f \t\tX1NegativTree.Clear();  \t\tX1NegativTree = X2NegativTree; \t  }  \t  \/\/\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044f \t  X1PositivTree.Clear();  \t  X1PositivTree = X2Tree;  \t  iLevelCounter++;  \t  GC.Collect(); \t}   }   else   { \tTreeFuncTerm X1PositivTree = new TreeFuncTerm();  \tDeleteDublicatingTerms(PositivTerms, X1PositivTree);  \tTreeFuncTerm X1NegativTree = null; \tif (NegativTerms != null) \t{ \t  X1NegativTree = new TreeFuncTerm(); \t  DeleteDublicatingTerms(NegativTerms, X1NegativTree); \t  \/\/\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 \t  TreeNodeEnd x1 = X1PositivTree.EnumerationInit(); \t  while (x1 != null) \t  { \t\tif (X1NegativTree.IsContains(X1PositivTree.EnumerationTerm) != null) \t\t{ \t\t  \/\/\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 PositivTerms \u0438 \u0432 NegativTerms \t\t  int iPos_Count = PositivTerms.Count(p =&gt; IsEqualTerms(p, X1PositivTree.EnumerationTerm)); \t\t  int iNeg_Count = NegativTerms.Count(p =&gt; IsEqualTerms(p, X1PositivTree.EnumerationTerm)); \t\t  if (iPos_Count &gt; iNeg_Count) \t\t  { \t\t\tX1NegativTree.Remove(X1PositivTree.EnumerationTerm); \t\t  } \t\t  else if (iPos_Count &lt; iNeg_Count) \t\t  { \t\t\tX1PositivTree.Remove(X1PositivTree.EnumerationTerm); \t\t  } \t\t  else \/\/if (iPos_Count == iNeg_Count) \t\t  { \t\t\tX1PositivTree.Remove(X1PositivTree.EnumerationTerm); \t\t\tX1NegativTree.Remove(X1PositivTree.EnumerationTerm); \t\t  } \t\t} \t\tx1 = X1PositivTree.EnumerationNextNode(); \t  } \t  \/\/\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0434\u043b\u044f \u044d\u0442\u0430\u043f\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \t  x1 = X1NegativTree.EnumerationInit(); \t  while (x1 != null) \t  { \t\tNegTerms.AddLast(X1NegativTree.EnumerationTerm.ToArray()); \t\tx1 = X1NegativTree.EnumerationNextNode(); \t  } \t}  \t\/\/\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0434\u043b\u044f \u044d\u0442\u0430\u043f\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \tTreeNodeEnd X1Term = X1PositivTree.EnumerationInit(); \twhile (X1Term != null) \t{ \t  InpTerms.AddLast(X1PositivTree.EnumerationTerm.ToArray()); \t  X1Term = X1PositivTree.EnumerationNextNode(); \t}  \tint iLevelCounter = 0; \t\/\/\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 \twhile ((X1PositivTree.Count != 0) &amp;&amp; (iLevelCounter &lt; iTotalLevels)) \t{ \t  TreeFuncTerm X2Tree = new TreeFuncTerm(); \t  Skleivanie(X1PositivTree, X2Tree, NegTerms, SkleivTerms, X1NegativTree, iLevelCounter);  \t  if ((X1NegativTree != null) &amp;&amp; (X1NegativTree.Count != 0)) \t  { \t\tTreeFuncTerm X2NegativTree = new TreeFuncTerm(); \t\tSkleivanie(X1NegativTree, X2NegativTree, InpTerms, null, X1PositivTree, iLevelCounter);  \t\t\/\/\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 \t\tX1NegativTree.Clear();  \t\tX1NegativTree = X2NegativTree; \t  }  \t  \/\/\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 \t  X1PositivTree.Clear();  \t  X1PositivTree = X2Tree;  \t  iLevelCounter++;  \t  GC.Collect(); \t}   }   \/\/\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(InpTerms, NegTerms, SkleivTerms, OutR); }  \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u043c\u0435\u0442\u043e\u0434\u0430 public void Start(IEnumerable&lt;byte[]&gt; TermsInput) {   LogicFuncMinimize(TermsInput, null, _result.Terms); }  \/\/\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, NegativTerms, _result.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()), \tNegativTerms.Select(t =&gt; t.Select(p =&gt; (byte)(p == '0' ? 0 : 1)).ToArray())); }  public void PrintResult() {   Console.WriteLine(\"--------Otvet-------\");   char[] pTermSymbs = new char[] { '0', '1', '*' };   foreach (byte[] Term in _result.Terms)   { \tfor (int j = 0; j &lt; Term.Length; j++) \t{ \t  Console.Write(pTermSymbs[Term[j]].ToString() + \" \"); \t} \tConsole.WriteLine();   } } } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041a\u043b\u0430\u0441\u0441 Quine_McCluskey \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u044d\u0442\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b: Dnf, TreeNodeBase, TreeNodeMiddle, TreeNodeEnd, TreeFuncTerm. \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 Start, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e LogicFuncMinimize, \u0433\u0434\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438. \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0432 \u0434\u0432\u0443\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u0445:<br \/>   \u2022 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 .NET SortedSet \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0442\u0435\u0440\u043c\u043e\u0432.<br \/>   \u2022 \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 .NET \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0440\u043e\u0438\u0447\u043d\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 TreeFuncTerm.<\/p>\n<p>  \u041f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u044d\u0442\u0438 \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0432\u043d\u044b (\u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 .NET, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0447\u0443\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043d\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430), \u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 TreeFuncTerm \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c\u0438:<br \/>   \u2022 \u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 64 \u0431\u0438\u0442\u043d\u044b\u0445 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0445\u044d\u0448-\u043a\u043e\u0434\u0430\u0445 \u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0432 .NET \u0441\u043b\u043e\u0432\u0430\u0440\u0435 SortedSet, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u0442\u0435\u0440\u043c\u0430\u0445 \u0434\u043e 40, \u0430 \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u043c \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 64 \u0431\u0438\u0442 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u0443\u044e \u0441\u0435\u0442\u043a\u0443 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0445\u044d\u0448-\u043a\u043e\u0434\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0442. \u043a. \u0432 \u0441\u043a\u043b\u0435\u0435\u043d\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u0430\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u043e\u0438\u0447\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430, \u0442\u043e \u043f\u0440\u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0432\u043d\u043e\u043c 41 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0445\u044d\u0448-\u043a\u043e\u0434\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/bd6\/da6\/984\/bd6da6984fc746d3a36494ed571a2758.svg\" alt=\"$3^{41}$\" data-tex=\"inline\"><\/math> \u0443\u0436\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b1f\/72f\/615\/b1f72f6158fece6a94b9d867259ffc69.svg\" alt=\"$2^{64}$\" data-tex=\"inline\"><\/math>-1, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 64 \u0431\u0438\u0442\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e. \u041f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u043c \u0442\u0440\u043e\u0438\u0447\u043d\u043e\u043c \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u043c \u0434\u0435\u0440\u0435\u0432\u0435 TreeFuncTerm.<br \/>   \u2022 \u041d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 .NET \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0439 \u043e\u0442 \u043d\u0435\u0451 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0439 \u043e\u0442 \u043d\u0438\u0445.<br \/>   \u2022 \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u0435\u043d \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 .NET, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043b\u0435\u0433\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445, \u0433\u0434\u0435 \u043d\u0435\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b .NET (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445, \u041f\u041b\u0418\u0421 \u0438 \u0442. \u043f.).<br \/>  \u0420\u0430\u0431\u043e\u0442\u0430 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 TreeFuncTerm \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0441\u044b\u043b\u043e\u043a \u043a\u043b\u0430\u0441\u0441\u043e\u0432 TreeNodeMiddle \u0438 TreeNodeEnd, \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 TreeNodeBase. \u041a\u043b\u0430\u0441\u0441 TreeNodeMiddle \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u043c \u0443\u0437\u043b\u043e\u043c \u0434\u0435\u0440\u0435\u0432\u0430, \u0430 \u043a\u043b\u0430\u0441\u0441 TreeNodeEnd \u2013 \u043e\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u043b\u0438\u0441\u0442\u043e\u043c \u0434\u0435\u0440\u0435\u0432\u0430. \u0412 \u0434\u0435\u0440\u0435\u0432\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 EnumerationInit() \u0438 EnumerationNextNode() \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043d\u0435\u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u0432\u0441\u0435\u0445 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u043b\u0438\u0441\u0442\u044c\u0435\u0432 TreeNodeEnd. \u0424\u0443\u043d\u043a\u0446\u0438\u044f EnumerationInit() \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043b\u0438\u0441\u0442 \u0434\u0435\u0440\u0435\u0432\u0430. \u0424\u0443\u043d\u043a\u0446\u0438\u044f EnumerationNextNode() \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043b\u0438\u0441\u0442 \u0434\u0435\u0440\u0435\u0432\u0430 \u0438\u043b\u0438 NULL, \u0435\u0441\u043b\u0438 \u043b\u0438\u0441\u0442\u044c\u0435\u0432 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 EnumerationTerm, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u00ab\u043a\u0443\u0440\u0441\u043e\u0440\u0430\u00bb \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0435\u0440\u0435\u0432\u0430, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u0434\u043e\u043c \u0442\u0435\u0440\u043c\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043b\u0438\u0441\u0442\u0430 \u0432 \u0442\u0440\u043e\u0438\u0447\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435 {0,1,2}. \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043b\u0438\u0441\u0442\u044c\u0435\u0432 \u0438\u0437 \u0434\u0435\u0440\u0435\u0432\u0430 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0445 \u0432 \u043d\u0435\u0433\u043e.<\/p>\n<p>  \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430 \u0442\u0440\u0438 \u044d\u0442\u0430\u043f\u0430.  <\/p>\n<ol>\n<li><b>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430.<\/b> \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0434\u043e\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e LogicFuncMinimize \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0434\u0432\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 PositivTerms \u0438 NegativTerms, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0435 (TRUE, 1) \u0438 \u043b\u043e\u0436\u043d\u043e\u0435 (FALSE, 0) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u044d\u0442\u0438 \u0441\u043f\u0438\u0441\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u0430\u043a\u043e\u043c \u043b\u0438\u0431\u043e \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u043e\u0432. \u0414\u043b\u044f \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u0440\u043c \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0435\u0433\u043e \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0439 \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u0442\u0435\u0440\u043c \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u043e\u0438\u0445 \u0441\u043f\u0438\u0441\u043a\u0430\u0445, \u0442\u043e \u043e\u043d \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435, \u0430 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0442\u0435\u0440\u043c \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0447\u0430\u0441\u0442\u043e, \u0442\u043e \u043e\u043d \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437 \u043e\u0431\u043e\u0438\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u0447\u0435\u043c \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/li>\n<li><b>\u0421\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u0435.<\/b> \u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0441\u043a\u043b\u0435\u0439\u043a\u0438 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c. \u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0442\u0435\u0440\u043c\u0430\u0445 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u043a\u0443 * \u0441\u043a\u043b\u0435\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 N. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e Skleivanie \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0442\u0435\u0440\u043c\u0430\u043c\u0438 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430, \u043d\u043e \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0432 \u043d\u0451\u043c \u0442\u0435\u0440\u043c \u0441 \u043e\u0434\u043d\u0438\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u0441 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u043c\u0438 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438\u00bb \u0442\u0435\u0440\u043c\u0430\u043c\u0438. \u041f\u043e\u0434 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438\u00bb \u0442\u0435\u0440\u043c\u0430\u043c\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043e\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0442\u0435\u0440\u043c \u043d\u0430\u0431\u043e\u0440\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u041d\u043e \u0441\u043a\u043b\u0435\u0439\u043a\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439\u00bb \u0442\u0435\u0440\u043c \u043d\u0435 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430.<br \/>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f Skleivanie \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0441\u043c\u044b\u0441\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432 PositivTerms \u0438 NegativTerms \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0438\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c, \u0430 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 PositivTerms \u0438 NegativTerms \u043f\u043e \u0441\u043c\u044b\u0441\u043b\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u0430\u043c\u0438, \u0442. \u0435. \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a PositivTerms \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u044b, \u0430 \u0441\u043f\u0438\u0441\u043e\u043a NegativTerms \u2013 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435:<br \/>  Skleivanie(X1PositivTree, &#8230;, X1NegativTree, &#8230;, SkleivTerms, \u2026);<br \/>  Skleivanie(X1NegativTree, &#8230;, X1PositivTree, &#8230;, null, \u2026);<br \/>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f \u0441\u043a\u043b\u0435\u0439\u043a\u0430 \u0442\u0435\u0440\u043c \u0434\u0432\u0443\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432.<br \/>  \u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u0442\u0435\u0440\u043c\u0430 \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u043e\u0442 \u043d\u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0442\u0435\u0440\u043c\u0430 \u043d\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e, \u0442. \u0435. \u0442\u0435\u0440\u043c \u043d\u0438 \u0441 \u043a\u0435\u043c \u043d\u0435 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u043e\u043d \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u043f. 1 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u043d\u0451\u043c \u0438 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u044d\u0442\u0430\u043f\u0430 2 \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0435 ReduceRedundancyTerms. \u041d\u0435 \u0441\u043a\u043b\u0435\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u044b \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Skleivanie, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043c\u044b\u0441\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432 PositivTerms \u0438 NegativTerms \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0438\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c, \u0442. \u0435. \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435.<\/li>\n<li><b>\u0421\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435.<\/b> \u041e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u043a\u043b\u0435\u0435\u043d\u043d\u044b\u0445 \u0442\u0435\u0440\u043c \u0432 ReduceRedundancyTerms \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \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 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b. \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 \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 (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0434\u0435\u0441\u044c <a href=\"http:\/\/www.studfiles.ru\/preview\/5175815\/page:4\">http:\/\/www.studfiles.ru\/preview\/5175815\/page:4<\/a>).<br \/>  \u041f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c:<br \/>   0. \u0418\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c\u043e\u0439 \u0422\u041f, \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0439 \u2013 \u043f\u0443\u0441\u0442\u043e;<br \/>   1. \u0412 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0435\u0434\u0438\u043d\u0438\u0446. \u0421\u0440\u0435\u0434\u0438 \u0441\u0442\u0440\u043e\u043a, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0432 \u044d\u0442\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435, \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0435\u0434\u0438\u043d\u0438\u0446. \u042d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435, \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u0441\u0435\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0438\u043c\u0435\u0435\u0442 \u0435\u0434\u0438\u043d\u0438\u0446\u0443.<br \/>   2. \u0415\u0441\u043b\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0435\u0441\u0442\u044c \u043d\u0435 \u0432\u044b\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f. 1, \u0438\u043d\u0430\u0447\u0435 \u2013 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043e. \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u041f\u0440\u0438 \u043f\u043e\u0434\u0441\u0447\u0451\u0442\u0435 \u0447\u0438\u0441\u043b\u0430 \u0435\u0434\u0438\u043d\u0438\u0446 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0432 \u043d\u0435\u0432\u044b\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445.<br \/>  \u042d\u0442\u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0434\u0430\u0451\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u043b\u0438\u0437\u043a\u0438\u0439 \u043a \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u043c\u0443.<br \/>   \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 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e TestQuineMcCluskeyRandomPart, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0437 \u0432\u0441\u0435\u0439 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c 2N \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c 0&lt;dPart&lt;=1 (\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438), \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f. \u041f\u0440\u0438 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 dPart &lt; 1 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0443\u0441\u0435\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432. \u041f\u0440\u0438 dPart = 1 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/li>\n<\/ol>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">TestQuineMcCluskeyRandomPart (\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>public static void TestQuineMcCluskeyRandomPart(int iVariableAmount, double dPart = 1) {   if (dPart &lt; 0) throw new     ArgumentException(\"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 dPart \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 0 \u0438 \u043c\u0435\u043d\u044c\u0448\u0435 1\");   if (dPart &gt; 1) dPart = 1;   \/\/\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432   ulong iTotalCombines = (ulong)1 &lt;&lt; iVariableAmount;   LinkedList&lt;byte[]&gt; pTrueCol = new LinkedList&lt;byte[]&gt;();   LinkedList&lt;byte[]&gt; pFalseCol = new LinkedList&lt;byte[]&gt;();   HashSet&lt;ulong&gt; pUsedTerms = new HashSet&lt;ulong&gt;();   Random rnd = new Random();   byte[] buf = new byte[8];   while (pUsedTerms.LongCount() &lt; (iTotalCombines * dPart))   { \trnd.NextBytes(buf); \tulong iCurValue = (ulong)BitConverter.ToInt64(buf, 0)%iTotalCombines; \tif (pUsedTerms.Contains(iCurValue)) continue; \tpUsedTerms.Add(iCurValue); \tbyte[] sLine = new byte[iVariableAmount]; \tfor (int i = 0; i &lt; iVariableAmount; i++) \t{ \t  sLine[i] += (byte)(iCurValue % 2); \t  iCurValue &gt;&gt;= 1; \t} \tif (rnd.Next(2) != 0) \t{ \t  pTrueCol.AddLast(sLine); \t} \telse \t{ \t  pFalseCol.AddLast(sLine); \t}   }   \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u0432 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435   DateTime DtStart = DateTime.Now;   Console.WriteLine(\"\u0421\u0442\u0430\u0440\u0442 - \" + DtStart.ToLongTimeString());   Quine_McCluskey Logic = new Quine_McCluskey();   Logic.Start(pTrueCol, pFalseCol);   DateTime DtEnd = DateTime.Now;   Logic.PrintResult();   Console.WriteLine(\"\u0421\u0442\u0430\u0440\u0442 - \" + DtStart.ToLongTimeString());   Console.WriteLine(\"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 - \" + DtEnd.ToLongTimeString());   TimeSpan Elapsed = DtEnd - DtStart;   Console.WriteLine(\"\u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c - \" + String.Format(\"{0:00}:{1:00}:{2:00}\", \tElapsed.Hours, Elapsed.Minutes, Elapsed.Seconds));   \/\/\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432   int iErrorsCounter = 0;   foreach (byte[] kvp in pTrueCol)   { \tif (Logic.Result.Calculate(kvp) != true) iErrorsCounter++;   }   foreach (byte[] kvp in pFalseCol)   { \tif (Logic.Result.Calculate(kvp) != false) iErrorsCounter++;   }   Console.WriteLine(\"\u041a\u043e\u043b-\u0432\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 = \" + pUsedTerms.Count);   Console.WriteLine(\"\u041a\u043e\u043b-\u0432\u043e \u0434\u0438\u0437\u044a\u044e\u043d\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 = \"+Logic.Result.Terms.Count);   Console.WriteLine(\"\u041a\u043e\u043b-\u0432\u043e \u043e\u0448\u0438\u0431\u043e\u043a = \" + iErrorsCounter);   Console.ReadLine(); } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0435\u0440\u043c\u043e\u0432 \u0432 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u0438\u0437\u044a\u044e\u043d\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0435\u044e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0442\u0435\u0440\u043c.<\/p>\n<p>  \u0412 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0441\u0435\u0431\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\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, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u043c \u0438\u043b\u0438 \u0443\u0441\u0435\u0447\u0451\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Skleivanie \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u0432\u0441\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0437\u0430\u0442\u0440\u0430\u0442\u0430\u043c \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432.<\/p><\/div>\n<p>        <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \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\/post\/424517\/\"> https:\/\/habr.com\/post\/424517\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e \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 (<a href=\"https:\/\/habr.com\/post\/328506\">https:\/\/habr.com\/post\/328506<\/a>). \u0412 \u043d\u0435\u0439 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439 \u0441 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 (\u0445\u043e\u0442\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043d\u0435\u0439 \u043f\u0440\u044f\u043c\u043e \u043d\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c). \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0435\u0434\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u043b\u043e. \u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0438\u043b\u0438 \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u0434\u0430\u043d\u044b \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u0447\u0430\u0441\u0442\u0438 Q \u0438\u0437 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 P=<math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d71\/9e0\/fb0\/d719e0fb0b8428be4f0144d45f7b6ccf.svg\" alt=\"$2^N$\" data-tex=\"inline\"><\/math> \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 (\u0442\u0435\u0440\u043c\u043e\u0432) \u0438\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445) \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c <i>N<\/i>, \u0442. \u0435. Q &lt; P. \u0422\u0430\u043a\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043e\u043f\u0442\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. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0447\u0438\u0441\u043b\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 <i>N<\/i>=30, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0443\u0440\u044f\u0434\u043d\u044b\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u0440\u044b\u043d\u043a\u0430\u0445, \u0442\u043e \u043e\u0431\u044a\u0451\u043c \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/42d\/b5e\/0d1\/42db5e0d1d343213c6bb1cd91ccb8289.svg\" alt=\"$2^{30}$\" data-tex=\"inline\"><\/math>&gt;<math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/027\/d2f\/484\/027d2f48439c514c7b9e44214daac670.svg\" alt=\"$10^9$\" data-tex=\"inline\"><\/math> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0445 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0434\u0430\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436\u0435 \u043e \u0447\u0430\u0441\u0442\u043d\u044b\u0445 \u043b\u0438\u0446\u0430\u0445, \u0442. \u0435. \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u0444\u0435\u0440\u0430 BigData, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0426\u041e\u0414-\u043e\u0432 \u0438 \u0442. \u0434.<\/p>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0441\u0442\u043e \u0432 \u0441\u0438\u043b\u0443 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u0432 \u0441\u0438\u043b\u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u0447\u0438\u043d (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u0438\u0445 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f). \u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u00ab\u043e\u0431\u0445\u043e\u0434\u0430\u00bb \u044d\u0442\u043e\u0439 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0441 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0442\u0435\u0440\u043c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043c\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\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-289945","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/289945","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=289945"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/289945\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=289945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=289945"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=289945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}