{"id":299279,"date":"2020-02-26T09:00:24","date_gmt":"2020-02-26T09:00:24","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=299279"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2020-02-26T09:00:24","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=299279","title":{"rendered":"\u0412\u0441\u0435, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0443\u0437\u043d\u0430\u0442\u044c \u043e\u0431 LDPC \u043a\u043e\u0434\u0430\u0445, \u043d\u043e \u0441\u0442\u0435\u0441\u043d\u044f\u043b\u0438\u0441\u044c \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c (\u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435)"},"content":{"rendered":"\n<div class=\"post__text post__text-html\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/453086\/\">\n<p><img decoding=\"async\" src=\"https:\/\/d2v9y0dukr6mq2.cloudfront.net\/video\/thumbnail\/ruoEhTkNeiwq2lefr\/videoblocks-abstract-digital-background-with-blue-color-of-binary-code-and-hacked-word-video-available-in-4k-fullhd-and-hd-render-footage_rnq3quthf_thumbnail-full01.png\"><\/p>\n<p>  <\/p>\n<h1 id=\"predislovie\">\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u0421 \u043a\u043e\u0434\u0430\u043c\u0438 \u043c\u0430\u043b\u043e\u0439 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043d\u0430 \u0447\u0451\u0442\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0440\u043e\u0442\u043a\u043e <strong>LDPC<\/strong> (<strong>L<\/strong>ow-<strong>d<\/strong>ensity <strong>p<\/strong>arity-<strong>c<\/strong>heck codes), \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435 \u0431\u043b\u0438\u0437\u043a\u043e, \u0440\u0430\u0431\u043e\u0442\u0430\u044f \u043d\u0430\u0434 \u0441\u0435\u043c\u0435\u0441\u0442\u0440\u043e\u0432\u044b\u043c \u043d\u0430\u0443\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0432 \u0422\u0423 \u0418\u043b\u044c\u043c\u0435\u043d\u0430\u0443 (\u043c\u0430\u0433\u0438\u0441\u0442\u0435\u0440\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 <a href=\"https:\/\/griat.kai.ru\/communications-and-signal-processing\" rel=\"nofollow\">CSP<\/a>). \u041c\u043e\u0435\u043c\u0443 \u043d\u0430\u0443\u0447\u043d\u043e\u043c\u0443 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0435\u0434\u0430\u0433\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0431\u0430\u0437\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043d\u0435\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 LDPC), \u0430 \u043c\u043d\u0435 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044d\u0442\u0438 \u043a\u043e\u0434\u044b \u0431\u044b\u043b\u0438 \u043f\u043b\u044e\u0441-\u043c\u0438\u043d\u0443\u0441 \u043d\u0430 \u0441\u043b\u0443\u0445\u0443 \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u043a\u0430\u0444\u0435\u0434\u0440\u0435. \u041d\u0435 \u0432\u0441\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0442\u043e\u043c \u0433\u043e\u0434\u0443, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0442\u0435\u043a\u043b\u043e \u0432 \u043c\u043e\u0435 \u0445\u043e\u0431\u0431\u0438\u2026 \u0422\u0430\u043a \u044f \u043d\u0430\u0431\u0440\u0430\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0438 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f!<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0421\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u044f\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u0434\u0430\u043c\u0438 (\u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043e\u0440\u0438\u0438, \u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u043b).<\/li>\n<li>\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434\u044b LDPC \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0441\u0432\u043e\u0438\u0445 \u0441\u0435\u043c\u0438\u043d\u0430\u0440\u043e\u0432.<\/li>\n<li>\u0412\u0441\u0435\u043c, \u043a\u0442\u043e \u043b\u044e\u0431\u0438\u0442 \u043f\u043e\u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u0435\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c (\u0432 \u043a\u043e\u043d\u0446\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u044b: \u043a\u0430\u043a \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0442\u0430\u043a \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 &quot;\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438&quot; open-source \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/github.com\/aff3ct\/aff3ct\" rel=\"nofollow\">aff3ct<\/a>). <\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c!<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p><strong><em>\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/em><\/strong>:<br \/>  <em>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u043e\u0441\u043d\u043e\u0432\u0430\u043c\u0438 \u043f\u043e\u043c\u0435\u0445\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0433\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0442\u0435\u043c\u0430 \u043d\u043e\u0432\u0430, \u043c\u043e\u0433\u0443 \u0430\u0434\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0441\u043a\u0440\u043e\u043c\u043d\u043e\u043c\u0443 \u0432\u043a\u043b\u0430\u0434\u0443 \u0432 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0442\u0435\u043c\u0435<\/em>: <\/p>\n<p>  <\/p>\n<ul>\n<li><em><a href=\"https:\/\/github.com\/veeresht\/CommPy\/tree\/master\/commpy\/channelcoding\" rel=\"nofollow\">Channel codes basics (CommPy)<\/a>.<\/em><\/li>\n<\/ul>\n<p>  <\/p>\n<h1 id=\"kratkaya-istoricheskaya-spravka\">\u041a\u0440\u0430\u0442\u043a\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0430<\/h1>\n<p>  <\/p>\n<p>LDPC \u043a\u043e\u0434\u044b \u2014 \u0438\u0434\u0435\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u0440\u0430\u044f, \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0420\u043e\u0431\u0435\u0440\u0442\u043e\u043c \u0413\u0430\u043b\u043b\u0430\u0433\u0435\u0440\u043e\u043c \u0435\u0449\u0451 \u0432 1963 \u0433. \u0432 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430 \u0441\u0442\u0435\u043f\u0435\u043d\u044c PhD [1]. \u041e\u0434\u043d\u0430\u043a\u043e, \u0438\u0437-\u0437\u0430 \u0441\u0432\u043e\u0435\u0439 \u043d\u0435\u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 (\u043f\u043e \u0442\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c) \u043e\u043d\u0438 \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u0445\u043d\u0438\u043a\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. <\/p>\n<p>  <\/p>\n<p>\u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 1990-\u0445 \u0433\u043e\u0434\u0430\u0445 \u044d\u0442\u0438 \u043a\u043e\u0434\u044b \u0431\u044b\u043b\u0438, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0437\u0430\u043d\u043e\u0432\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u041c. \u0414\u044d\u0432\u0438 \u0438 \u0414. \u041c\u0430\u043a\u043a\u0435\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f LDPC \u043a\u043e\u0434\u043e\u0432 \u0441 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e [2]. <\/p>\n<p>  <\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 LDPC \u043a\u043e\u0434\u044b \u044d\u0442\u043e:<\/p>\n<p>  <\/p>\n<p>1) \u0427\u0430\u0441\u0442\u044c Wi-Fi \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 (<a href=\"https:\/\/www.cisco.com\/c\/dam\/en\/us\/products\/collateral\/wireless\/aironet-3600-series\/white-paper-c11-713103.pdf\" rel=\"nofollow\">802.11n, 802.11ac<\/a>, \u0432 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u0445, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f \u0437\u043d\u0430\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c <a href=\"https:\/\/en.wikipedia.org\/wiki\/Convolutional_code\" rel=\"nofollow\">\u0441\u0432\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0435 \u043a\u043e\u0434\u044b<\/a>);<br \/>  2) \u0427\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432 \u0433\u0440\u0443\u043f\u043f\u044b <a href=\"https:\/\/en.wikipedia.org\/wiki\/Digital_Video_Broadcasting\" rel=\"nofollow\">DVB-x2<\/a>;<br \/>  3) \u0427\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u0440\u0430\u0434\u0438\u043e\u0447\u0430\u0441\u0442\u0438 \u0441\u0435\u0442\u0435\u0439 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 5G (NR \u2014 New Radio)[3];<br \/>  4) \u041f\u043e\u043c\u0435\u0445\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043a\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439\u0441\u044f \u0432\u043e \u0444\u043b\u044d\u0448-\u043f\u0430\u043c\u044f\u0442\u0438 (<a href=\"https:\/\/habr.com\/ru\/post\/199360\/\">\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/a> \u043e\u0442 <a href=\"https:\/\/habr.com\/ru\/users\/alexzeynikov\/\" class=\"user_link\">alexzeynikov<\/a>) <\/p>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 LDPC \u043a\u043e\u0434\u044b \u043f\u0440\u043e\u043d\u0438\u043a\u0430\u044e\u0442 \u0438 \u0432 \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u043e\u0432\u0443\u044e \u0441\u0432\u044f\u0437\u044c. \u0412 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u044f \u0434\u0435\u043b\u0430\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u0437\u043e\u0440 \u043f\u043e \u043c\u0430\u043b\u044b\u043c \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430\u043c CubeSat (\u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e <a href=\"https:\/\/github.com\/kirlf\/cubesats\/blob\/master\/fec.md\" rel=\"nofollow\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>) \u2014 \u0442\u0430\u043c \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044f \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u0430\u044f \u0438 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u0430 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432 DVB-S2\/S2X.<\/p>\n<p>  <\/p>\n<p>\u0418 \u044f \u0434\u0443\u043c\u0430\u044e, \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0430\u044f \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0443\u0437\u043d\u0430\u0442\u044c \u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u0434\u0430\u0445 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p>  <\/p>\n<h1 id=\"azy-blochnogo-kodirovaniya\">\u0410\u0437\u044b \u0431\u043b\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/h1>\n<p>  <\/p>\n<p>LDPC \u043a\u043e\u0434\u044b \u2014 \u044d\u0442\u043e <strong>\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 \u0431\u043b\u043e\u0447\u043d\u044b\u0435 \u043a\u043e\u0434\u044b<\/strong>, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043d\u044b\u0435 \u0431\u0438\u0442\u044b \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0435\u0446 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u2014 \u0431\u043b\u043e\u043a\u043e\u043c. <\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0432\u0435\u043d\u043d\u043e, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (<em>encoding<\/em>) \u2014 \u0435\u0441\u0442\u044c \u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d\u043d\u043e\u0439 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b95\/4f4\/3ce\/b954f43ce67f65a92502a661914b76e4.svg\" alt=\"K\"> \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0449\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/15b\/b48\/f67\/15bb48f6743c78742c3fe56b12966093.svg\" alt=\"\\mathbf{G}\">:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/bf4\/f3e\/b45\/bf4f3eb45c1c741a91dfe455a22fd08f.svg\" alt=\"\\underset{1\\times N} {\\mathbf{a}} = \\underset{1\\times K} {\\mathbf{u}} \\otimes  \\underset{K\\times N} {\\mathbf{G}}\\qquad (1)\"><\/div>\n<p>  <\/p>\n<p>\u0433\u0434\u0435 \u0441\u0438\u043c\u0432\u043e\u043b <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c25\/66c\/836\/c2566c83648fe2c710ee26811aa8fc2b.svg\" alt=\"\\otimes\"> \u2014 \u044d\u0442\u043e \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u043c\u043e\u0434\u0443\u043b\u044e (\u0441\u043c. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Modulo_operation\" rel=\"nofollow\">modulo<\/a>).<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e \u043a\u0430\u043a\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e?<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0414\u043b\u044f \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u044d\u0442\u043e modulo 2, \u0434\u043b\u044f \u043d\u0435\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 modulo <em>q<\/em>, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043f\u043e\u043b\u0435\u0439 \u0413\u0430\u043b\u0443\u0430 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/faf\/c4b\/674\/fafc4b6743483f8e52851dd9fe73737d.svg\" alt=\"GF(q = 2^p)\">.<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438 \u043a\u043e\u0434\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0442\u043e\u0436\u0435 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0449\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jq\/im\/zq\/jqimzqtfegyfgbce2h9wqr6gswg.png\"><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0449\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 (\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445) \u0447\u0430\u0441\u0442\u0435\u0439:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/817\/d09\/b4e\/817d09b4e49d01c17650e648a48c651c.svg\" alt=\"\\underset{K\\times N} {\\mathbf{G}} = \\left[ \\underset{K\\times K} {\\mathbf{I}} \\qquad  \\underset{K\\times (N-K)} {\\mathbf{-P}}\\right] \\qquad (2)\"><\/div>\n<p>  <\/p>\n<p>\u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/21b\/cf6\/4be\/21bcf64be44c43de6044454f2a14881b.svg\" alt=\"\\mathbf{P}\"> \u2014 \u044d\u0442\u043e, \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f, \u0447\u0435\u0442\u043d\u0430\u044f (parity) \u0447\u0430\u0441\u0442\u044c, \u0430 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/10b\/236\/8d9\/10b2368d92de7a310597377c7fc6ffda.svg\" alt=\"\\mathbf{I}\"> \u2014 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%95%D0%B4%D0%B8%D0%BD%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0\" rel=\"nofollow\">\u0435\u0434\u0438\u043d\u0438\u0447\u043d\u0430\u044f (identity)<\/a> \u043c\u0430\u0442\u0440\u0438\u0446\u0430. <\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d \u043c\u0438\u043d\u0443\u0441 \u043f\u0435\u0440\u0435\u0434 \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e?<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438 \u0438 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043f\u043e \u043c\u043e\u0434\u0443\u043b\u044e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cx\/au\/u8\/cxauu8dbrk0f52-4ekkdek-6f8m.png\" width=\"300\">  <\/p>\n<p>\u041d\u0430 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0435 \u044d\u0442\u043e \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u0438\u043d\u0443\u0441 \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442.<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e <u>\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445<\/u> \u0431\u043b\u043e\u0447\u043d\u044b\u0445 \u043a\u043e\u0434\u0430\u0445, \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0449\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0441\u0442\u044c (\u0441\u043c. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linear_code\" rel=\"nofollow\">Linear code<\/a>). \u0422\u043e \u0435\u0441\u0442\u044c, \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0449\u0435\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043b\u0438\u043d\u0435\u0439\u043d\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c\u0438 (\u0434\u0430, \u043d\u0430 \u0441\u043b\u0443\u0445 \u0437\u0432\u0443\u0447\u0438\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u0434\u043e\u043a\u0441\u0430\u043b\u044c\u043d\u043e).<\/p>\n<p>  <\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, identity-\u0447\u0430\u0441\u0442\u044c \u043d\u0443\u0436\u043d\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u0434 <strong>\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c<\/strong>: \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c, \u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043d\u044b\u0435 \u0431\u0438\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0435\u0446 \u0431\u043b\u043e\u043a\u043e\u043c. \u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u0445\u0435\u043c\u0435, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043a\u043e\u0434\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0431\u0440\u0430\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043d\u044b\u0435 \u0431\u0438\u0442\u044b. \u0423\u0434\u043e\u0431\u043d\u043e, \u043d\u0435 \u043f\u0440\u0430\u0432\u0434\u0430 \u043b\u0438?<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0449\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0436\u043d\u0435\u0439\u0448\u0435\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0439\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f: \u0441 <u><strong>\u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u044c<\/strong> (<em>parity-check matrix<\/em>)<\/u>. <\/p>\n<p>  <\/p>\n<p>\u041c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u044c \u0438\u043c\u0435\u0435\u0442 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/453\/e6a\/188\/453e6a188b4290dc4f8b8ef4c4a3f402.svg\" alt=\"(N-K)\"> \u0441\u0442\u0440\u043e\u043a \u0438 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a1e\/39d\/a1c\/a1e39da1c84981d7264baa207047222a.svg\" alt=\"N\"> \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a1e\/39d\/a1c\/a1e39da1c84981d7264baa207047222a.svg\" alt=\"N\"> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0439 \u0434\u043b\u0438\u043d\u0435 \u043a\u043e\u0434\u043e\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430, \u0430 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b95\/4f4\/3ce\/b954f43ce67f65a92502a661914b76e4.svg\" alt=\"K\">, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043c, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u043b\u0438\u043d\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/1c3\/fda\/708\/1c3fda7089c4ce6abbaa1d33c04692a3.svg\" alt=\"\\underset{(N-K)\\times N} {\\mathbf{H}} = \\left[ \\underset{(N-K)\\times K} {\\mathbf{P}^T} \\qquad  \\underset{(N-K)\\times (N-K)} {\\mathbf{I}}\\right] \\qquad(3)\"><\/div>\n<p>  <\/p>\n<p>\u0415\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0438\u0434\u0435\u044e \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tanner_graph#Tanner_graphs_for_linear_block_codes\" rel=\"nofollow\">\u0433\u0440\u0430\u0444\u0430 \u0422\u0430\u043d\u043d\u0435\u0440\u0430<\/a>:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/99b\/41a\/e17\/99b41ae17c252a14924512bebfdf3e79.png\"><\/p>\n<p>  <\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u0432\u0438\u0434\u0430 \u0443\u0437\u043b\u043e\u0432: \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435, <u>\u0443\u0437\u043b\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 (variable nodes)<\/u>, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0447\u0438\u0441\u043b\u0443 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b95\/4f4\/3ce\/b954f43ce67f65a92502a661914b76e4.svg\" alt=\"K\">, \u0438 <u>\u0443\u0437\u043b\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 (check nodes)<\/u>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0447\u0438\u0441\u043b\u0443 \u0441\u0442\u0440\u043e\u043a (<img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2b4\/06a\/fdf\/2b406afdf5462443d1cec5e42ab87260.svg\" alt=\"N - K\">). \u0423\u0437\u043b\u044b \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439, \u0438 \u0441\u0432\u044f\u0437\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0435\u0434\u0438\u043d\u0438\u0446 \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/912\/329\/cf7\/912329cf7971b4cadf8ca3b0cc637fde.svg\" alt=\"\\mathbf{H}\">. <\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0427\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430?<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0441\u043f\u0440\u0430\u0432\u0430 \u2014 \u044d\u0442\u043e \u043c\u043e\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f <em>\u043c\u043d\u0435\u043c\u043e\u043d\u0438\u0447\u043a\u0430<\/em> \u043c\u043e\u0435\u0433\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430. \u041a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u044d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u043b\u043e\u0432\u0438\u0442\u044c \u0441\u0443\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b: \u0435\u0441\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0440\u0430\u0432\u0435\u043d 1, \u0437\u043d\u0430\u0447\u0438\u0442 \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438 \u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u0440\u0430\u0432\u0435\u043d 0 \u2014 \u0441\u0432\u044f\u0437\u0438 \u043d\u0435\u0442.<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439, \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043d\u044b\u0445 \u0443\u0437\u043b\u0430\u0445 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u0443\u043b\u0438 (\u0441\u043c. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Decoding_methods#Syndrome_decoding\" rel=\"nofollow\">\u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0438\u043d\u0434\u0440\u043e\u043c\u043e\u0432<\/a>):<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/cfc\/fbc\/7a3\/cfcfbc7a326cdaa261fc0ef24e375aeb.svg\" alt=\"\\mathbf{s} = \\mathbf{H}\\mathbf{x} = \\mathbf{0} \\qquad(4)\"><\/div>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u044d\u0442\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0435 \u0431\u0443\u043a\u0432\u044b \u0432 \u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u0435 LD<strong>PC<\/strong> (<strong>P<\/strong>arity-<strong>C<\/strong>heck).<\/p>\n<p>  <\/p>\n<h1 id=\"azy-ldpc-kodov\">\u0410\u0437\u044b LDPC \u043a\u043e\u0434\u043e\u0432<\/h1>\n<p>  <\/p>\n<p>\u041d\u043e \u0432\u0441\u0451 \u0432\u044b\u0448\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u2014 \u044d\u0442\u043e \u043e\u0431\u0449\u0438\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0431\u043b\u043e\u0447\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432. \u0427\u0435\u043c \u0436\u0435 \u0442\u043e\u0433\u0434\u0430 LDPC \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u0442\u0435\u0445 \u0436\u0435 \u043a\u043e\u0434\u043e\u0432 \u0425\u044d\u043c\u043c\u0438\u043d\u0433\u0430? <\/p>\n<p>  <\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u0442\u0435\u043c, \u0447\u0442\u043e \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0445 \u043a\u0430\u043a <em>low-density<\/em>: \u0438\u0445 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c <strong>\u0440\u0430\u0437\u0440\u044f\u0436\u0435\u043d\u043d\u044b\u043c\u0438<\/strong> (<em>sparce<\/em>), \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0443\u043b\u0435\u0439 \u0432 \u043d\u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0447\u0435\u0433\u043e-\u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e:<\/p>\n<p>  <\/p>\n<blockquote><p>&quot;Low density parity check codes are codes specified by a parity check matrix containing mostly zeros and only small number of ones.&quot; <a href=\"https:\/\/dspace.mit.edu\/bitstream\/handle\/1721.1\/11804\/32786367-MIT.pdf?sequence=2\" rel=\"nofollow\">[1]<\/a> <\/p><\/blockquote>\n<p>\u0414\u0430, \u0432\u043e\u0442 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u0442\u043e\u0433\u043e \u0436\u0435 \u0413\u0430\u043b\u043b\u0430\u0433\u0435\u0440\u0430 \u0434\u0430\u043d\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0431\u044b\u043b\u0430 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ed\/cz\/nt\/edczntggcntmubzhbuom6iq4tgo.png\" width=\"450\">  <\/p>\n<p>(3,4)-\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u043e\u044e 12. <\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u043a\u043e\u0434\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043b\u0438\u043d\u0443 12 \u0431\u0438\u0442;<\/li>\n<li>\u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435 3 \u0435\u0434\u0438\u043d\u0438\u0446\u044b, \u0430 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 4, \u043e\u0442\u0441\u044e\u0434\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (3,4);<\/li>\n<li>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0435\u0434\u0438\u043d\u0438\u0446 \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445 \u2014 \u044d\u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 3 \u0438 4), \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043a\u043e\u0434 \u2014 <em>\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0439<\/em>.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0423 \u041c\u0430\u043a\u043a\u0435\u044f \u0438 \u041d\u0438\u043b\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gc\/ce\/l4\/gccel4srlihwulfcj57tctazt24.png\" width=\"450\">  <\/p>\n<p>(3,4)-\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u043e\u044e 12. <\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 \u0438 \u043d\u0435\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438.<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 DVB-S2 \u043f\u0440\u0438\u043d\u044f\u0442\u044b \u0443\u0436\u0435 <em>\u043d\u0435\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 (irregular)<\/em> \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u044c. \u0421\u043c.:<\/p>\n<p>  <\/p>\n<ul>\n<li><em>Eroz M., Sun F. W., Lee L. N. <a href=\"http:\/\/www.iet.unipi.it\/m.luise\/DVB-S2_Low-Density.pdf\" rel=\"nofollow\">DVB\u2010S2 low density parity check codes with near Shannon limit performance<\/a> \/\/International Journal of Satellite Communications and Networking. \u2013 2004. \u2013 \u0422. 22. \u2013 \u2116. 3. \u2013 \u0421. 269-279.<\/em> <\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0421\u0432\u044f\u0437\u0430\u043d\u043e \u044d\u0442\u043e \u0441 \u043b\u0443\u0447\u0448\u0435\u0439 \u043f\u043e\u043c\u0435\u0445\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0441\u0445\u0435\u043c.<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u0435\u0442\u0435? \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e: \u044d\u0442\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u043f\u043e\u0434 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u0438\u0437 \u0444\u043e\u0440\u043c\u0443\u043b\u044b (3), \u0432\u0435\u0434\u044c \u0434\u043b\u044f LDPC \u043a\u043e\u0434\u043e\u0432 \u043c\u044b \u0441\u0442\u0440\u0435\u043c\u0438\u043c\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043d\u044b\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u043c\u0438. \u0410 \u0435\u0441\u043b\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u043f\u043e\u0434 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443, \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0430\u043a \u0434\u043b\u044f \u043d\u0438\u0445 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0449\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b.<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u0432\u0435\u0442, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0441\u0442\u044c (\u0438 \u043d\u0435 \u043e\u0434\u0438\u043d). \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0442\u0430\u043a\u043e\u0439: \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/912\/329\/cf7\/912329cf7971b4cadf8ca3b0cc637fde.svg\" alt=\"\\mathbf{H}\"> \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434 \u0413\u0430\u0443\u0441\u0441\u0430 (Gaussian elimination), \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0449\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443, \u0430 \u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0434\u043b\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. <\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li><em>Johnson, S. J. (2006). <a href=\"https:\/\/www.researchgate.net\/publication\/228977165_Introducing_Low-Density_Parity-Check_Codes\" rel=\"nofollow\">Introducing low-density parity-check codes<\/a>. University of Newcastle, Australia, V1.<\/em><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0411\u044b\u043b\u0430 \u0442\u0430\u043a\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/912\/329\/cf7\/912329cf7971b4cadf8ca3b0cc637fde.svg\" alt=\"\\mathbf{H}\">:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">import numpy as np  H = np.array([[1, 1, 0, 1, 1, 0, 0, 1, 0, 0],\\               [0, 1, 1, 0, 1, 1, 1, 0 ,0 ,0],\\               [0, 0, 0, 1, 0, 0, 0, 1, 1, 1],\\               [1, 1, 0, 0, 0, 1, 1, 0, 1, 0],\\               [0, 0, 1, 0, 0, 1, 0, 1, 0, 1]]) <\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0442 \u043d\u0435\u0435, \u043f\u0443\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0439 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u0442\u0440\u043e\u043a \u043f\u043e \u043c\u043e\u0434\u0443\u043b\u044e 2, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043a \u043c\u0430\u0442\u0440\u0438\u0446\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/67e\/609\/c66\/67e609c66aea40bb441068b16fc35d12.svg\" alt=\"\\mathbf{H}_{std}\">:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">Hstd = np.array([[0, 1, 1, 1, 0, 1, 0, 0, 0, 0],\\                  [1, 0, 1, 0, 0, 0, 1, 0 ,0 ,0],\\                  [1, 0, 1, 0, 1, 0, 0, 1, 0, 0],\\                  [0, 0, 1, 1, 1, 0, 0, 0, 1, 0],\\                  [1, 1, 0, 0, 1, 0, 0, 0, 0, 1]])<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u044b \u043d\u0435 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043a\u043e\u0434\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u0430 \u0432\u043e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">idx = [5, 6, 7, 8, 9, 0, 1, 2, 3, 4]<\/code><\/pre>\n<p>  <\/p>\n<p>\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0449\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">M = np.shape(H)[0] # N-K N = np.shape(H)[1]  K = N - M  G = np.concatenate([np.eye(K), ((-1)*Hstd[:, :K].T %2)], axis=1) print(&quot;Generator matrix:\\n&quot;+str(G))  &gt;&gt;&gt; Generator matrix: [[1. 0. 0. 0. 0. 0. 1. 1. 0. 1.]  [0. 1. 0. 0. 0. 1. 0. 0. 0. 1.]  [0. 0. 1. 0. 0. 1. 1. 1. 1. 0.]  [0. 0. 0. 1. 0. 1. 0. 0. 1. 0.]  [0. 0. 0. 0. 1. 0. 0. 1. 1. 1.]]<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u0434\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">c = np.array([1, 0, 1, 0, 1]) @ G %2 print(str(c))  &gt;&gt;&gt; array([1., 0., 1., 0., 1., 1., 0., 1., 0., 0.])<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0438\u043d\u0434\u0440\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">c[idx] @ H.T %2  &gt;&gt;&gt; array([0, 0, 0, 0, 0]) <\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u0430\u0433\u0438\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u044b \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430!<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0432\u0435\u0440\u0448\u0430\u044f \u0440\u0430\u0437\u0434\u0435\u043b, \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043c\u0430\u0442\u0440\u0438\u0446 \u2014 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0449\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0440\u044f\u0436\u0435\u043d\u043d\u043e\u0439. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430 \u0432\u0441\u0435 \u044d\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043e\u0434\u043d\u0430\u043a\u043e, \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f&#8230;<\/p>\n<p>  <\/p>\n<h1 id=\"dekodirovanie-ldpc-kodov\">\u0414\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 LDPC \u043a\u043e\u0434\u043e\u0432<\/h1>\n<p>  <\/p>\n<p>\u041f\u043e LDPC \u043a\u043e\u0434\u0430\u043c \u0435\u0441\u0442\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u043f\u043e\u0434\u0431\u043e\u0440 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043d\u0430 Medium:<\/p>\n<p>  <\/p>\n<ul>\n<li><em><a href=\"https:\/\/medium.com\/5g-nr\/ldpc-low-density-parity-check-code-8a4444153934\" rel=\"nofollow\">LDPC \u2014 low density parity check code<\/a> (by @EventHelix \u2014 5G | LTE | Networking)<\/em><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u043b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u0438 \u0441\u0430\u043c\u044b\u0445, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 <strong>Belief propagation<\/strong> (aka <strong>SPA<\/strong> \u2014 <strong>S<\/strong>um-<strong>p<\/strong>roduct <strong>a<\/strong>lgorithm) \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043c\u044f\u0433\u043a\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c (\u0442\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0430 \u043d\u0430\u0443\u0447\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f). \u0414\u0443\u0448\u0430 \u043f\u0440\u043e\u0441\u0438\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432!<\/p>\n<p>  <\/p>\n<p>\u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u043d\u0430\u043c \u0443\u0447\u0435\u0431\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b:<\/p>\n<p>  <\/p>\n<ul>\n<li><em>Johnson, S. J. (2006). <a href=\"https:\/\/www.researchgate.net\/publishing\/228977165_Introduction_Low-Density_Parity-Check_Codes\" rel=\"nofollow\">Introducing low-density parity-check codes<\/a>. University of Newcastle, Australia, V1.<\/em><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0432\u044f\u0437\u0438: <\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/5z\/kj\/ei\/5zkjei05qz-l53r8it20qhrill0.png\"><\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0432\u044f\u0437\u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437: <\/p>\n<p>  <\/p>\n<ul>\n<li>\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f (source), <\/li>\n<li>\u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430:<\/li>\n<li>\u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u0441\u0432\u044f\u0437\u0438, <\/li>\n<li>\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430:<\/li>\n<li>\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f (destination).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 :<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043f\u043e\u043c\u0435\u0445\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0433\u043e \u043a\u043e\u0434\u0435\u0440\u0430 (channel encoder), <\/li>\n<li>\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f\u0442\u043e\u0440\u0430 (digital modulator) \u0438 <\/li>\n<li>\u0440\u0430\u0434\u0438\u043e\u0447\u0430\u0441\u0442\u0438 (RF \u2014 radio frequency).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0440\u0430\u0434\u0438\u043e\u0447\u0430\u0441\u0442\u0438, <\/li>\n<li>\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u0434\u0435\u043c\u043e\u0434\u0443\u043b\u044f\u0442\u043e\u0440\u0430 (digital demodulator) \u0438<\/li>\n<li>\u043f\u043e\u043c\u0435\u0445\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0433\u043e \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430 (channel decoder).<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0414\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043f\u043e\u0434 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043c\u0430\u043c\u0438 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0438\u0445 \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438: <a href=\"https:\/\/en.wikipedia.org\/wiki\/Phase-shift_keying\" rel=\"nofollow\"><strong>PSK<\/strong><\/a> \u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Quadrature_amplitude_modulation\" rel=\"nofollow\"><strong>QAM<\/strong><\/a>. <\/p>\n<p>  <\/p>\n<p>\u0427\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u0434\u043b\u044f \u043d\u0430\u0441 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u043c\u043e\u0434\u0443\u043b\u044f\u0446\u0438\u0438? \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0442\u0435\u043c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u0432\u0445\u043e\u0434\u044f\u0442 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c (LTE, Wi-Fi, DVB \u0438 \u0442.\u0434. ). <\/p>\n<p>  <\/p>\n<p>\u0410, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u0443\u043c\u0435\u044e\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c <em>\u0437\u0430\u0448\u0443\u043c\u043b\u0435\u043d\u043d\u044b\u0435<\/em> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0438\u0437 \u043a\u0430\u043d\u0430\u043b\u0430 \u0441\u0432\u044f\u0437\u0438, \u0432 \u0444\u043e\u0440\u043c\u0435, \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445, <u>\u043c\u044f\u0433\u043a\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u0435\u043c\u043e\u0434\u0443\u043b\u044f\u0446\u0438\u0438 (<em>soft decisions<\/em>)<\/u>. \u0418\u043b\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0443\u043a\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e, \u0432 \u0444\u043e\u0440\u043c\u0435 \u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u0438\u044f (<strong>LLR<\/strong> \u2014 <strong>l<\/strong>og <strong>l<\/strong>ikelihood <strong>r<\/strong>atios):<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/867\/26d\/d8f\/86726dd8f9c16d5f59f0cb4d2bedd46c.svg\" alt=\"r = \\ln \\left( \\frac{p(x=0)}{p(x=1)}\\right)  = \\ln \\left(\\frac{1 - p}{p} \\right) \\qquad (5)\"><\/div>\n<p>  <\/p>\n<p>\u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d76\/c4d\/c2b\/d76c4dc2b17f00a09c864bf2d24ab365.svg\" alt=\"p\"> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0430 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/5cc\/c8d\/80d\/5ccc8d80d010abd90b5c546d05856d3a.svg\" alt=\"x\"> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435. <\/p>\n<p>  <\/p>\n<p>\u041c\u043d\u0435 \u0447\u0430\u0449\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u0432 \u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0431\u0438\u0442 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u043b \u043d\u0443\u043b\u0435\u043c, \u0430 \u0432 \u0437\u043d\u0430\u043c\u0435\u043d\u0430\u0442\u0435\u043b\u0435 \u2014 \u0447\u0442\u043e \u0431\u044b\u043b \u0435\u0434\u0438\u043d\u0438\u0446\u0435\u0439. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 LLR \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0434\u0435\u043c\u043e\u0434\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0431\u0438\u0442 \u0431\u044b\u043b \u043d\u0443\u043b\u0435\u0432\u044b\u043c (\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0441\u043c. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Non-return-to-zero\" rel=\"nofollow\">NRZ<\/a>). <\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u043b\u0438 \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0432 \u0437\u043d\u0430\u043c\u0435\u043d\u0430\u0442\u0435\u043b\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0443\u043b\u044f?<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u041c\u043e\u0436\u0435\u0442, \u0438 \u0442\u0430\u043a \u2014 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043d\u0435\u0442, \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448\u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a \u0431\u044b\u043b\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u043e\u0441\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u044b \u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0432\u0430\u043c\u0438 \u0441\u0445\u0435\u043c\u0435 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043c\u0430\u043f\u043f\u0438\u043d\u0433\u0430). \u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 NRZ (0 -&gt; +1, 1 -&gt; -1) \u043f\u0440\u043e\u0434\u0438\u043a\u0442\u043e\u0432\u0430\u043d\u0430 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e MatLab \u0432 \u043a\u0440\u0443\u0433\u0430\u0445 \u0442\u0435\u043b\u0435\u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u0449\u0438\u043a\u043e\u0432.<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0441\u0445\u0435\u043c\u0430, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u043c\u043e\u0434\u0435\u043c\u0430, \u0432\u0435\u0441\u044c\u043c\u0430 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430 \u043a \u0441\u0438\u043b\u044c\u043d\u044b\u043c \u0448\u0443\u043c\u0430\u043c, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 \u043a \u043e\u0448\u0438\u0431\u043a\u0430\u043c \u0434\u0435\u043c\u043e\u0434\u0443\u043b\u044f\u0446\u0438\u0438. \u0411\u043b\u0430\u0433\u043e, \u0447\u0442\u043e \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0432 \u043d\u0430\u0448\u0443 \u0441\u0445\u0435\u043c\u0443 \u043f\u043e\u043c\u0435\u0445\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 (\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439) \u043a\u043e\u0434\u0435\u043a. \u0414\u0435\u043a\u043e\u0434\u0435\u0440 \u043d\u0430\u043c \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443 \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442. \u0410 \u0442\u043e\u0447\u043d\u0435\u0435 \u0442\u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u044d\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0434\u0435\u043a\u043e\u0434\u0435\u0440 \u0437\u0430\u0448\u0438\u0442.<\/p>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, <strong>Belief propagation<\/strong>.<\/p>\n<p>  <\/p>\n<ul>\n<li><u>\u041f\u043e\u0447\u0435\u043c\u0443 <u>belief<\/u>?<\/u><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044f\u043c\u0438. \u0410 \u0442\u043e\u0447\u043d\u0435\u0435, \u0441 \u0442\u0435\u043c\u0438 \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c\u0430\u043c\u0438 \u043e\u0442 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0432 \u0444\u043e\u0440\u043c\u0443\u043b\u0435 (4).<\/p>\n<p>  <\/p>\n<ul>\n<li><u>\u041f\u043e\u0447\u0435\u043c\u0443 <em>propagation<\/em>?<\/u><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u0438 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e &quot;\u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f&quot; \u043e\u0442 \u0443\u0437\u043b\u043e\u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043a \u0443\u0437\u043b\u0430\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <strong>V2C<\/strong> \u2014 <strong>V<\/strong>ariable-to-<strong>C<\/strong>heck) \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <strong>C2V<\/strong> \u2014 <strong>C<\/strong>heck-to-<strong>V<\/strong>ariable). <\/p>\n<p>  <\/p>\n<ul>\n<li>\u041f\u043e\u0447\u0435\u043c\u0443 <em>SPA<\/em>?<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0434 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u043e\u0439 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e LLR \u0431\u0443\u0434\u0443\u0442 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0443\u043b\u0430\u043c.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 LLR \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 <em>\u0430\u043f\u0440\u0438\u043e\u0440\u043d\u044b\u043c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044f\u043c<\/em>. SPA \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u043f\u043e\u0441\u0442\u0435\u0440\u0438\u043e\u0440\u043d\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 (MAP \u2014 maximum a posteriori probability), \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u043d \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c <em>\u0430\u043f\u043e\u0441\u0442\u0435\u0440\u0438\u043e\u0440\u043d\u0443\u044e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c<\/em>, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0441\u043b\u0435 \u0438\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e.<\/p>\n<p>  <\/p>\n<h3 id=\"1-inicializaciya\">1. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0430\u043f\u0440\u0438\u043e\u0440\u043d\u044b\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438. <\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 LLR, \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u0430\u0442\u0440\u0438\u0446\u044b <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/912\/329\/cf7\/912329cf7971b4cadf8ca3b0cc637fde.svg\" alt=\"\\mathbf{H}\">. \u041f\u043e\u0434\u0431\u0435\u0440\u0435\u043c \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/446\/7c4\/07f\/4467c407f7384bc0826d27bbbcd56530.svg\" alt=\"\\underset{M\\times N} {\\mathbf{M}} = \\left(\\underset{N\\times 1} {\\mathbf{r}} \\cdot \\underset{1\\times M} {\\mathbf{1}} \\right)^T  \\odot \\underset{M\\times N} {\\mathbf{H}} \\qquad (6)\"><\/div>\n<p>  <\/p>\n<p>\u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/f5f\/6b8\/047\/f5f6b8047702b16aa08fc2dad04d53f3.svg\" alt=\"\\mathbf{1}\"> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0435\u0434\u0438\u043d\u0438\u0446, \u0430 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/3ca\/7d2\/60b\/3ca7d260b81ee8ca13447af329103fe7.svg\" alt=\"\\odot\"> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0410\u0434\u0430\u043c\u0430\u0440\u0430 (\u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435). \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c: \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0441\u043a\u043e\u0431\u043a\u0443 \u043d\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0410\u0434\u0430\u043c\u0430\u0440\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 LLR \u0441\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u0438 (\u043d\u0443\u0436\u0435\u043d \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0446\u0438\u043a\u043b). \u0415\u0441\u043b\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438, \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438. <\/p>\n<p>  <\/p>\n<h3 id=\"2-soobschenie-v2c\">2. \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 V2C<\/h3>\n<p>  <\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f <strong>V2C<\/strong> \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438. \u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043e\u0442 LLR \u043a \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044f\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u043c \u043c\u0435\u0436\u0434\u0443 \u0433\u0438\u043f\u0435\u0440\u0431\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0442\u0430\u043d\u0433\u0435\u043d\u0441\u043e\u043c \u0438 \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u043c \u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c\u043e\u043c <a href=\"https:\/\/www.researchgate.net\/publication\/228977165_Introducing_Low-Density_Parity-Check_Codes\" rel=\"nofollow\">[4, \u0441.32 ]<\/a>:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/74e\/bf0\/937\/74ebf09374a3c09f8b9e3634d822f11f.svg\" alt=\"tanh\\left(\\frac{1}{2}\\ln\\left( \\frac{1 - p}{p} \\right)\\right) = 1 - 2p \\qquad(7)\"><\/div>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 <strong>V2C<\/strong> \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 <em>\u043d\u0435\u043d\u0443\u043b\u0435\u0432\u044b\u0445<\/em> \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/54d\/de8\/e29\/54dde8e298bac36850a69968259e8151.svg\" alt=\"E_{j,i} = log \\left( \\frac{1 + \\prod_{i&#39;\\epsilon B_j, i&#39; \\neq i} tanh(M_{j,i&#39;}\/2)}{1 - \\prod_{i&#39;\\epsilon B_j, i&#39; \\neq i} tanh(M_{j,i&#39;}\/2)} \\right) = log \\left( \\frac{1 + \\prod_{i&#39;\\epsilon B_j, i&#39; \\neq i} M&#39;_{j,i&#39;}}{1 - \\prod_{i&#39;\\epsilon B_j, i&#39; \\neq i} M&#39;_{j,i&#39;}} \\right) \\qquad(8)\"><\/div>\n<p>  <\/p>\n<p>\u0433\u0434\u0435 <em>j<\/em> \u2014 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, <em>i<\/em> \u2014 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430, <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c7f\/737\/c2d\/c7f737c2dc8248c1cc7684ba659d83a9.svg\" alt=\"B_{j}\"> \u2014 \u044d\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e <em>\u043d\u0435\u043d\u0443\u043b\u0435\u0432\u044b\u0445<\/em> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 <em>j<\/em>-\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/6cd\/e23\/9cd\/6cde239cd1cd511875ceb9c291d843fc.svg\" alt=\"i&#39;\\neq i\"> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u043c <em>i<\/em>-\u044b\u0439 \u0443\u0437\u0435\u043b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 (variable node) \u0438\u0437 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ig\/ub\/jn\/igubjn0ixl-zjjok4l3kz2yoo5y.png\" width=\"600\">  <\/p>\n<ul>\n<li><em>\u0418\u0437 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u0431\u044b\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b. \u0421\u0443\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u044d\u0442\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u044f \u0434\u0443\u043c\u0430\u044e, \u0432 \u0442\u0430\u043a\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e. <\/em><\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0443\u043b\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0432\u044b\u0431\u0440\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/1e6\/eed\/f4a\/1e6eedf4aec77614895a6d9009866d9a.svg\" alt=\"\\mathbf{M}\">, \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0439 \u0432 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435 (7);<\/li>\n<li>\u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0432\u0443\u0435\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 <em>\u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e<\/em> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/912\/329\/cf7\/912329cf7971b4cadf8ca3b0cc637fde.svg\" alt=\"\\mathbf{H}\">, \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u0432\u0441\u0435 <em>\u043d\u0435\u043d\u0443\u043b\u0435\u0432\u044b\u0435<\/em> \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430;<\/li>\n<li>\u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437 \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 (\u0434\u043e \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430);<\/li>\n<li>\u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0448\u0430\u0433\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u044b.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u0443\u043d\u043a\u0442 \u0441 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0443\u0437\u043b\u0430 \u0438\u0437 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438: 1) \u0432\u044b\u044f\u0441\u043d\u044f\u0442\u044c \u043d\u0443\u0436\u043d\u043e\u0435 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u043e \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u043e\u0432. \u042f, \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0440\u0430\u0434\u0438, \u0431\u0443\u0434\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0442\u043e\u0440\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c. <\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u042f \u0434\u0443\u043c\u0430\u044e, \u043a\u0442\u043e-\u0442\u043e \u0438\u0437 \u0432\u0430\u0441, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u043b\u044b\u0448\u0430\u043b \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f LDPC \u043a\u043e\u0434\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Min-sum [5], Log-SPA [6] \u0438\u043b\u0438 \u0435\u0449\u0435 \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c [7]. \u0422\u0430\u043a\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0435\u0449\u0435 \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0443\u0431\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438. \u0412 \u0447\u0435\u043c \u0438\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0435? \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0443\u043d\u043a\u0442\u0435: \u0434\u0430\u043d\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u0443\u043b\u044b \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442 \u0440\u0438\u0441\u043a\u043e\u0432: \u043a\u0430\u043a\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u043e\u043c\u0435\u0445\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u044b \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0434\u0438 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<h3 id=\"3-proverka-kriteriya-ostanovki-dekodirovaniya\">3. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/h3>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u043c\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043c \u043a \u043a\u043e\u043d\u0446\u0443 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043f\u043e\u0440\u0430 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0430\u0448\u0438 \u0430\u043f\u0440\u0438\u043e\u0440\u043d\u044b\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0445 \u0430\u043f\u043e\u0441\u0442\u0435\u0440\u0438\u043e\u0440\u043d\u044b\u043c\u0438:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/58c\/662\/420\/58c6624206bb16a006c28565353fa608.svg\" alt=\"l_i = r_i + \\sum_{j\\epsilon A_i}E_{j,i} \\qquad(9)\"><\/div>\n<p>  <\/p>\n<p>\u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/7a1\/017\/935\/7a101793537743ee60ccae8e0b387f25.svg\" alt=\"A_i\"> \u2014 \u044d\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0445 <em>\u043d\u0435\u043d\u0443\u043b\u0435\u0432\u044b\u043c<\/em> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u044c \u0432 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/75c\/b01\/aa8\/75cb01aa8d9f97db4343ac0c5ef11b2d.svg\" alt=\"i\">-\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043b\u043e\u0436\u0438\u043c \u0438\u0445 \u043d\u0430 \u0431\u0438\u0442\u044b \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 NRZ:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a84\/10a\/c75\/a8410ac756547ec277985a5a02e52e4d.svg\" alt=\"z_i =  \\begin{cases} 0 &amp;\\text{if $l_i \\geq 0$}\\\\ 1 &amp;\\text{if $l_i &lt; 0$} \\end{cases} \\qquad(10)\"><\/div>\n<p>  <\/p>\n<p>\u0418 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043c \u0441\u0438\u043d\u0434\u0440\u043e\u043c \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435 (4). \u0415\u0441\u043b\u0438 \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u2014 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u0442\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0448\u0430\u0433\u0443.<\/p>\n<p>  <\/p>\n<h3 id=\"4-soobschenie-c2v\">4. \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 C2V<\/h3>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043c\u0430\u0442\u0440\u0438\u0446\u0443 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/1e6\/eed\/f4a\/1e6eedf4aec77614895a6d9009866d9a.svg\" alt=\"\\mathbf{M}\">:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/4f1\/346\/45c\/4f134645c68f9e99ad11b2c76b689616.svg\" alt=\"M_{j,i} = \\sum_{j&#39;\\epsilon A_i, j&#39;\\neq j} E_{j&#39;,i} + r_i \\qquad (11)\"><\/div>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/nc\/ub\/vr\/ncubvrajbvownowoxa0ulb_kpbq.png\" width=\"600\">  <\/p>\n<p>\u0418 \u0434\u0430\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u044b <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2cc\/7dc\/8bf\/2cc7dc8bff0b574f8136496af80d95b7.svg\" alt=\"\\mathbf{E}\">. \u0418 \u0442\u0430\u043a \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u043f\u0443\u043d\u043a\u0442 3 (\u0438\u043b\u0438 \u043d\u0435 \u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439).<\/p>\n<p>  <\/p>\n<h1 id=\"primer-na-python-numpy\">\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 Python (numpy)<\/h1>\n<p>  <\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0432\u0435\u0449\u0430\u043c \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u2014 \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c!<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u044c\u043c\u0435\u043c \u0432\u0441\u0435 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 <a href=\"https:\/\/www.researchgate.net\/publication\/228977165_Introduction_Low-Density_Parity-Check_Codes\" rel=\"nofollow\">[4, \u0441.33 ]<\/a>:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0431\u044b\u043b\u043e \u043a\u043e\u0434\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0432\u0438\u0434\u0430: a = [0 0 1 0 1 1]<\/li>\n<li>\u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0434\u0435\u043c\u043e\u0434\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438: r = [\u22121.3863,1.3863,\u22121.3863,1.3863,\u22121.3863,\u22121.3863]<\/li>\n<li>\u0432\u0438\u0434\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0431\u0438\u0442\u0435<\/li>\n<\/ul>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/an\/05\/xy\/an05xy4bddecs7113iduc8ah9jo.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f).<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430.<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">import numpy as np  class SPA:     def __init__(self, H, Imax=1000, trace_on=True):         self.H = H         self.Imax = Imax         self.trace_on = trace_on         self.H_0 = np.shape(H)[0]         self.H_1 = np.shape(H)[1]         self.H_mirr = (self.H + np.ones(np.shape(self.H))) %2      def __nrz(self, l):         for idx, l_j in enumerate(l):             if l_j &gt;= 0:                 l[idx] = 0             else:                 l[idx] = 1         return l      def __calc_E(self, E, M):         M = np.tanh(M \/ 2) + self.H_mirr         for j in range(self.H_0):             for i in range(self.H_1):                 if self.H[j,i] != 0:                     E[j,i] = np.log(( 1 + np.prod(M[j,:]) \\                                      \/ M[j,i]) \/ ( 1 - np.prod(M[j,:]) \/ M[j,i]) )         return E      def __calc_M(self, M, E, r):         for j in range(self.H_0):             for i in range(self.H_1):                 if self.H[j,i] != 0:                     M[j,i] = np.sum(E[:, i]) - E[j,i] + r[i]         M = M*H          return M      def decode(self, r):         stop = False         I = 0         M = np.zeros(np.shape(H))         E = np.zeros(np.shape(H))         l = np.zeros(np.shape(r))         print('H:\\n'+str(H))         while stop == False and I != self.Imax:             if I == 0:                 for j in range(np.shape(H)[0]):                     M[j, :] = r*H[j, :]             if self.trace_on == True:                 print('M:\\n'+str(M))              E = self.__calc_E(E, M)             if self.trace_on == True:                     print('E:\\n'+str(E))              l = r + np.sum(E, axis=0)             if self.trace_on == True:                 print('l:\\n'+str(l))              l = self.__nrz(l)             if self.trace_on == True:                 print('decoded:\\n'+str(l))              s = np.dot(H, l) %2             if np.prod(s == np.zeros(np.size(s))) == 1:                 stop = True             else:                 I = I + 1                 M = self.__calc_M(M, E, r)         return l <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<pre><code class=\"python\">l = SPA(H).decode(r) print('Decoded message:\\n'+str(l))  &gt;&gt;&gt; H: [[1 1 0 1 0 0]  [0 1 1 0 1 0]  [1 0 0 0 1 1]  [0 0 1 1 0 1]] M: [[-1.3863  1.3863 -0.      1.3863 -0.     -0.    ]  [-0.      1.3863 -1.3863  0.     -1.3863 -0.    ]  [-1.3863  0.     -0.      0.     -1.3863 -1.3863]  [-0.      0.     -1.3863  1.3863 -0.     -1.3863]] E: [[ 0.75377678 -0.75377678  0.         -0.75377678  0.          0.        ]  [ 0.          0.75377678 -0.75377678  0.         -0.75377678  0.        ]  [ 0.75377678  0.          0.          0.          0.75377678  0.75377678]  [ 0.          0.         -0.75377678  0.75377678  0.         -0.75377678]] l: [ 0.12125356  1.3863     -2.89385356  1.3863     -1.3863     -1.3863    ]  Decoded message: [0. 0. 1. 0. 1. 1.]<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043e\u0448\u043b\u043e\u0441\u044c.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/www.researchgate.net\/publication\/228977165_Introduction_Low-Density_Parity-Check_Codes\" rel=\"nofollow\">[4, \u0441.36 ]<\/a>:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u044c \u0442\u0430 \u0436\u0435;<\/li>\n<li>\u043a\u043e\u0434\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e: a = [0 0 1 0 1 1];<\/li>\n<li>\u043f\u0440\u0438\u043d\u044f\u043b\u0438: y = [\u22120.5, 2.5, \u22124.0, 5.0, \u22123.5, 2.5].<\/li>\n<\/ul>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tv\/a0\/ba\/tva0ba58tsewvemge4ssloqfrmg.png\"><\/p>\n<p>  <\/p>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0431\u0438\u0442\u044b.<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">r = np.array([-.5, 2.5, -4., 5., -3.5, 2.5])  l = SPA(H, trace_on=False).decode(r) print('Decoded message:\\n'+str(l))  &gt;&gt;&gt; H: [[1 1 0 1 0 0]  [0 1 1 0 1 0]  [1 0 0 0 1 1]  [0 0 1 1 0 1]] Decoded message: [0. 0. 1. 0. 1. 1.]<\/code><\/pre>\n<p>  <\/p>\n<p>Well done!<\/p>\n<p>  <\/p>\n<h1 id=\"gotovye-resheniya-dlya-modelirovaniya\">\u0413\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/h1>\n<p>  <\/p>\n<p>\u041d\u0443, \u0447\u0442\u043e \u0436\u0435, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0437\u043d\u0430\u0435\u043c \u0430\u0437\u044b \u0431\u043b\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0432 \u0446\u0435\u043b\u043e\u043c, \u0438 LDPC \u043a\u043e\u0434\u043e\u0432, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0438 \u0434\u0430\u0436\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438. \u041c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0442\u0430\u0434\u0438\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043e\u0442 \u043e\u0431\u0435\u0437\u044c\u044f\u043d\u044b \u043a \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430 \u2014 \u0442\u0435\u043e\u0440\u0438\u044e \u0443\u0441\u0432\u043e\u0438\u043b\u0438 (\u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u0437\u0430\u043f\u0430\u0441\u043b\u0438 \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435). <\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0434\u0435\u0442 \u0432\u0430\u043c \u043d\u0430 \u0443\u043c, \u2014 \u044d\u0442\u043e <a href=\"https:\/\/se.mathworks.com\/help\/comm\/ref\/comm.ldpcdecoder-system-object.html\" rel=\"nofollow\">Communication Toolbox<\/a> \u043e\u0442 MathWorks (MatLab). \u0420\u0435\u0448\u0435\u043d\u0438\u0435, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0435, \u043d\u043e \u043c\u043d\u0435 \u043e\u043d\u043e \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043d\u0443\u0436\u043d\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0446\u0435\u043b\u044b\u0439 MatLab \u043f\u043e\u0434 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u0440\u0443\u0433 \u0437\u0430\u0434\u0430\u0447 (\u0445\u043e\u0442\u044f \u0435\u0441\u043b\u0438 MatLab \u2014 \u044d\u0442\u043e \u0432\u0430\u0448 \u0445\u043b\u0435\u0431 \u043d\u0430\u0441\u0443\u0449\u043d\u044b\u0439, \u0438 \u0432\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c \u0438\u043c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u2014 \u0441\u043e\u0433\u043b\u0430\u0441\u0435\u043d, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435\u0442);<\/li>\n<li>\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0434\u043b\u044f \u043c\u0430\u0442\u0440\u0438\u0446 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043d\u0430 \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434 DVB-S2 (\u043f\u043e\u043f\u0440\u0430\u0432\u044c\u0442\u0435, \u0435\u0441\u043b\u0438 \u044f \u043e\u0442\u0441\u0442\u0430\u043b \u043e\u0442 \u0436\u0438\u0437\u043d\u0438);<\/li>\n<li>MatLab \u2014 \u044d\u0442\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439, \u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 (\u0434\u0430, \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u044b, \u043d\u043e \u044f \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0437\u0430 open-source). <\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0432 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435 \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c \u043d\u0430 GitHub \u0438 \u043d\u0430\u0448\u0435\u043b \u0432\u0435\u0441\u044c\u043c\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439: \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/aff3ct\/aff3ct\" rel=\"nofollow\">aff3ct<\/a>, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 C++.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041c\u044b\u0441\u043b\u0438 \u0432\u0441\u043b\u0443\u0445<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0435\u0449\u0435 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b \u043f\u0440\u043e\u0435\u043a\u0442 LDPC++ ?..<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0447\u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442 \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438:<\/p>\n<p>  <\/p>\n<blockquote><p>\u0421\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u043d\u0430\u0446\u0435\u043b\u0435\u043d \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0435 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a SIMD, \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0435 \u0438 \u043c\u043d\u043e\u0433\u043e\u0443\u0437\u043b\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430:  <\/p>\n<ul>\n<li>\u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0430\u043c\u044b\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f,<\/li>\n<li>\u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u043c\u0435\u0445\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 (\u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043e\u0432),<\/li>\n<li>\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 (\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0438 \u0441 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439, \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0432 \u0446\u0438\u043a\u043b\u0435),<\/li>\n<li>\u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 (\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438),<\/li>\n<li>\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 MATLAB (\u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u0441\u044c \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f).<\/li>\n<\/ul>\n<p>  <\/p><\/blockquote>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u041f\u041e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f LDPC \u043a\u043e\u0434\u043e\u0432, \u043d\u043e \u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u0434\u0435\u043a\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c Turbo-\u043a\u043e\u0434\u044b \u0438 \u043f\u043e\u043b\u044f\u0440\u043d\u044b\u0435 \u043a\u043e\u0434\u044b).<\/p>\n<p>  <\/p>\n<p>\u0423 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0435\u0441\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0430\u044f <a href=\"https:\/\/readthedocs.org\/projects\/aff3ct\/downloads\/pdf\/latest\/\" rel=\"nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 PDF<\/a>, \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <a href=\"https:\/\/aff3ct.readthedocs.io\/en\/latest\/user\/introduction\/introduction.html\" rel=\"nofollow\">WEB-\u0441\u0442\u0440\u0430\u043d\u0438\u0446<\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u043d\u043b\u0430\u0439\u043d-\u0432\u0435\u0440\u0441\u0438\u044f \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0443\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 (<a href=\"http:\/\/aff3ct.github.io\/comparator.html\" rel=\"nofollow\">BER\/FER Comparator<\/a>).<\/p>\n<p>  <\/p>\n<p>\u0412\u044b\u0431\u0435\u0440\u0435\u043c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sn\/tl\/z1\/sntlz1pmgyih0r8tbvyclkkeaja.png\"><br \/>  <em>\u041b\u0443\u0447\u0448\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0442\u044b \u044d\u0444\u0444\u0435\u043a\u0442\u0430.<\/em><\/p>\n<p>  <\/p>\n<p>\u041a\u0440\u0430\u0441\u043e\u0442\u0430!<\/p>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0438 \u043f\u043e\u0434 \u0441\u0432\u043e\u0439 \u0432\u043a\u0443\u0441. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 <a href=\"https:\/\/github.com\/aff3ct\/aff3ct\" rel=\"nofollow\">\u043f\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/a> (\u0441\u043c. <strong>Instalation<\/strong>) \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u041f\u041e \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0423\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u0441\u0431\u043e\u0440\u043a\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043f\u0443\u0442\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f make-\u0444\u0430\u0439\u043b\u043e\u0432.<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u043d\u0430 \u0434\u043e\u0441\u0443\u0433\u0435 \u0442\u0430\u043a\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 Ubuntu 18.04:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">aff3ct -C &quot;LDPC&quot; -K 32400 -N 64800 --enc-type LDPC_DVBS2 --dec-implem SPA --mdm-type QAM --mdm-bps 8 --chn-type RAYLEIGH -m 0.0 -M 15.0 -s 1.0<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c:<\/p>\n<p>  <\/p>\n<ul>\n<li><strong>-C &quot;LDPC&quot; -K 32400 -N 64800<\/strong>: LDPC-\u043a\u043e\u0434 \u0441 \u043a\u043e\u0434\u043e\u0439 \u0441\u043a\u0440\u043e\u0441\u0442\u044c\u044e 1\/2 ( = 32400 \/ 64800 )<\/li>\n<li><strong>&#8212;enc-type LDPC_DVBS2<\/strong>: \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 DVB-S2<\/li>\n<li><strong>&#8212;dec-implem SPA<\/strong>: \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2014 SPA<\/li>\n<li><strong>&#8212;mdm-type QAM &#8212;mdm-bps 8<\/strong>: 256-QAM (256 = 2^8)<\/li>\n<li><strong> &#8212;chn-type RAYLEIGH<\/strong>: \u0420\u044d\u043b\u0435\u0435\u0432\u0441\u043a\u0438\u0439 \u043a\u0430\u043d\u0430\u043b \u0441\u0432\u044f\u0437\u0438 (\u0441\u043c. <a href=\"https:\/\/habr.com\/ru\/post\/447172\/\">&quot;\u041f\u043e\u0447\u0442\u0438 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 MIMO \u043a\u0430\u043d\u0430\u043b \u0441 \u0437\u0430\u043c\u0438\u0440\u0430\u043d\u0438\u044f\u043c\u0438 (\u043c\u043e\u0434\u0435\u043b\u044c \u041a\u0440\u043e\u043d\u0435\u043a\u0435\u0440\u0430 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f)&quot;<\/a>)<\/li>\n<li><strong>-m 0.0 -M 15.0 -s 1.0<\/strong>: Eb\/No \u043e\u0442 0 \u0434\u043e 15 \u0434\u0411 \u0441 \u0448\u0430\u0433\u043e\u043c \u0432 1 \u0434\u0411<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041b\u043e\u0433 (\u0448\u0430\u043f\u043a\u0430) \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\"># ---------------------------------------------------- # ---- A FAST FORWARD ERROR CORRECTION TOOLBOX &gt;&gt; ---- # ---------------------------------------------------- # Parameters: # * Simulation ------------------------------------ #    ** Type                      = BFER #    ** Type of bits              = int32 #    ** Type of reals             = float32 #    ** Date (UTC)                = 2020-02-19 18:43:51 #    ** Git version               = v2.3.5 #    ** Code type (C)             = LDPC #    ** Noise range               = 0 -&gt; 15 dB #    ** Noise type (E)            = EBN0 #    ** Seed                      = 0 #    ** Statistics                = off #    ** Debug mode                = off #    ** Multi-threading (t)       = 2 thread(s) #    ** Coset approach (c)        = no #    ** Coded monitoring          = no #    ** Bad frames tracking       = off #    ** Bad frames replay         = off #    ** Bit rate                  = 0.5 (1\/2) #    ** Inter frame level         = 1 # * Source ---------------------------------------- #    ** Type                      = RAND #    ** Implementation            = STD #    ** Info. bits (K_info)       = 32400 # * Codec ----------------------------------------- #    ** Type                      = LDPC #    ** Info. bits (K)            = 32400 #    ** Codeword size (N_cw)      = 64800 #    ** Frame size (N)            = 64800 #    ** Code rate                 = 0.5 (1\/2) # * Encoder --------------------------------------- #    ** Type                      = LDPC_DVBS2 #    ** Systematic                = yes # * Decoder --------------------------------------- #    ** Type (D)                  = BP_FLOODING #    ** Implementation            = SPA #    ** Systematic                = yes #    ** Num. of iterations (i)    = 10 #    ** Stop criterion (syndrome) = on #    ** Stop criterion depth      = 1 # * Modem ----------------------------------------- #    ** Type                      = QAM #    ** Implementation            = STD #    ** Bits per symbol           = 8 #    ** Sigma square              = on #    ** Max type                  = MAX # * Channel --------------------------------------- #    ** Type                      = RAYLEIGH #    ** Implementation            = STD #    ** Block fading policy       = NO #    ** Complex                   = on #    ** Add users                 = off # * Monitor --------------------------------------- #    ** Lazy reduction            = off #    ** Frame error count (e)     = 100 #    ** Compute mutual info       = no # * Terminal -------------------------------------- #    ** Show Sigma                = off #    ** Enabled                   = yes #    ** Frequency (ms)            = 500 # <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0442\u0430\u043a\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\"> # The simulation is running... # ---------------------||------------------------------------------------------||--------------------- #  Signal Noise Ratio  ||   Bit Error Rate (BER) and Frame Error Rate (FER)    ||  Global throughput   #         (SNR)        ||                                                      ||  and elapsed time    # ---------------------||------------------------------------------------------||--------------------- # ----------|----------||----------|----------|----------|----------|----------||----------|---------- #     Es\/N0 |    Eb\/N0 ||      FRA |       BE |       FE |      BER |      FER ||  SIM_THR |    ET\/RT  #      (dB) |     (dB) ||          |          |          |          |          ||   (Mb\/s) | (hhmmss)  # ----------|----------||----------|----------|----------|----------|----------||----------|----------        6.02 |     0.00 ||      101 |  1095697 |      101 | 3.35e-01 | 1.00e+00 ||    0.005 | 00h11'43           7.02 |     1.00 ||      102 |  1054711 |      102 | 3.19e-01 | 1.00e+00 ||    0.006 | 00h09'02           8.02 |     2.00 ||      102 |  1003146 |      102 | 3.04e-01 | 1.00e+00 ||    0.006 | 00h08'58           9.02 |     3.00 ||      101 |   936980 |      101 | 2.86e-01 | 1.00e+00 ||    0.006 | 00h09'38          10.02 |     4.00 ||      102 |   887637 |      102 | 2.69e-01 | 1.00e+00 ||    0.005 | 00h11'19          11.02 |     5.00 ||      101 |   817568 |      101 | 2.50e-01 | 1.00e+00 ||    0.006 | 00h09'25          12.02 |     6.00 ||      101 |   749147 |      101 | 2.29e-01 | 1.00e+00 ||    0.006 | 00h09'25          13.02 |     7.00 ||      102 |   684123 |      102 | 2.07e-01 | 1.00e+00 ||    0.006 | 00h09'19          14.02 |     8.00 ||      102 |   601807 |      102 | 1.82e-01 | 1.00e+00 ||    0.006 | 00h09'19          15.02 |     9.00 ||      102 |   507251 |      102 | 1.53e-01 | 1.00e+00 ||    0.006 | 00h09'22          16.02 |    10.00 ||      101 |   378508 |      101 | 1.16e-01 | 1.00e+00 ||    0.006 | 00h09'16          17.02 |    11.00 ||      102 |   170607 |      102 | 5.16e-02 | 1.00e+00 ||    0.006 | 00h09'19          18.02 |    12.00 ||      101 |    14895 |      101 | 4.55e-03 | 1.00e+00 ||    0.006 | 00h09'22          19.02 |    13.00 ||      107 |      467 |      102 | 1.35e-04 | 9.53e-01 ||    0.006 | 00h09'49          20.02 |    14.00 ||      812 |      123 |      101 | 4.68e-06 | 1.24e-01 ||    0.006 | 01h14'21          21.02 |    15.00 ||    14283 |      110 |      100 | 2.38e-07 | 7.00e-03 ||    0.006 | 21h13'14    # End of the simulation. <\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0423\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u044f \u043f\u043e\u0442\u0435\u0440\u044f\u043b \u043d\u0435\u0438\u043c\u043e\u0432\u0435\u0440\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0414\u0430\u0431\u044b \u043d\u0435 \u0433\u043d\u0430\u0442\u044c\u0441\u044f \u0437\u0430 \u0438\u0434\u0435\u0430\u043b\u043e\u043c \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e \u0441\u0432\u0435\u0440\u0445\u043c\u0430\u043b\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043e\u0448\u0438\u0431\u043e\u043a (\u0438 \u043d\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043c\u043e\u0438\u0445 \u043f\u0440\u043e\u043c\u0430\u0445\u043e\u0432), \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u044b\u0439 \u0432\u0430\u043c \u0442\u0430\u0439\u043c\u0435\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u043b\u0430\u0433\u0430 <code>--sim-stop-time<\/code> (\u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 <code>--sim-crit-nostop<\/code>, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u043e\u0441\u044c, \u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043b\u043e \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b-\u0448\u0443\u043c).<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0414\u0430\u0436\u0435 \u0442\u0430\u043a\u043e\u0435 \u0430\u0441\u043a\u0435\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u044d\u0442\u043e \u0443\u0436\u0435 \u043a\u043b\u0430\u0441\u0441\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u043e\u0439\u0442\u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u043e\u0431\u0435\u0440\u0442\u043a\u0438 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u043e \u043e\u0431\u0435\u0440\u0442\u043a\u0438 \u043e\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0423 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0435\u0441\u0442\u044c \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/github.com\/aff3ct\/PyBER\" rel=\"nofollow\">PyBER<\/a>. \u0421\u0443\u0442\u044c &quot;\u0442\u0443\u043b\u0437\u044b&quot; \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e GUI \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 aff3ct txt-\u0444\u0430\u0439\u043b\u044b, PyBER \u0432\u0430\u043c \u0438\u0445 \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442 \u0438 \u043e\u0442\u0440\u0438\u0441\u0443\u0435\u0442 (\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0432\u0440\u043e\u0434\u0435). \u041b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435: \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0447\u0435\u0440\u0435\u0437 plot, \u0430 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 \u0431\u043e\u043b\u0435\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 semilogy. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u043e\u043f\u044b\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f PyBER \u043d\u0430 \u0432\u0430\u0448\u0435 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435.<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 txt-\u0444\u0430\u0439\u043b, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 \u0431\u0438\u0442\u043e\u0432\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a (BER \u2014 bit error ratio) \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u0443\u0436\u0435 \u0438\u0437 \u043d\u0435\u0433\u043e c \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441 awk:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">cat results.txt | awk '{if ($1 !=&quot;#&quot;) print $11}'<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432 Python \u0438 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u043e\u0434 \u0441\u0432\u043e\u0439 \u0432\u043a\u0443\u0441.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043a\u043e\u0434\u043e\u0432\u044b\u0445 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0435\u0439 1\/2 \u0438 3\/4 (AWGN \u043a\u0430\u043d\u0430\u043b) \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0442\u0430\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/w_\/8h\/aj\/w_8hajzir_h3opzbynxn9rb4-j8.png\"><\/p>\n<p>  <\/p>\n<p>\u0411\u0435\u0437 \u0438\u0437\u044b\u0441\u043a\u043e\u0432, \u043d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u043d\u0435\u043f\u043b\u043e\u0445\u043e, \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<h1 id=\"posleslovie\">\u041f\u043e\u0441\u043b\u0435\u0441\u043b\u043e\u0432\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u041d\u0435 \u0441\u043f\u043e\u0440\u044e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f \u043d\u0438 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043e\u0431\u044a\u044f\u0442\u044c \u043d\u0435\u043e\u0431\u044a\u044f\u0442\u043d\u043e\u0435, \u043f\u0440\u043e\u0448\u043b\u0438\u0441\u044c \u043c\u044b \u0432\u0441\u0435 \u0436\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0432\u0435\u0440\u0448\u043a\u0430\u043c. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u0432\u0441\u0435 \u0436\u0435 \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0445\u043e\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e-\u0442\u043e \u0441\u043d\u0438\u0437\u0438\u0442 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443, \u0436\u0435\u043b\u0430\u044e\u0449\u0435\u043c\u0443 \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u043c\u0443 LDPC-\u043a\u043e\u0434\u043e\u0432 (\u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435).<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u043a\u0440\u0438\u0442\u0438\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f. \u0418 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u0430\u0448\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435!<\/p>\n<p>  <\/p>\n<h1 id=\"literatura\">\u041b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430<\/h1>\n<p>  <\/p>\n<ol>\n<li>\n<p>R.G. Gallager Low-Density Parity-Check Codes, IRE Transactions on Information Theory, 1962<\/p>\n<p>  <\/li>\n<li>\n<p>D.J.C. MacKay Good Error-Correcting Codes Based on Very Sparse Matrices, IEEE Transactions on Information Theory, VOL.45, NO 2., March 1999 <\/p>\n<p>  <\/li>\n<li>\n<p>&quot;3GPP RAN1 meeting #87 final report&quot;. 3GPP. Retrieved 31 August 2017.<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041f\u043e\u043b\u044f\u0440\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0431\u044b\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0434\u043b\u044f CP (Control Plane) FEC. LDPC \u2014 \u0434\u043b\u044f UP (User Plane) FEC. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0432 \u0441\u0435\u0442\u044f\u0445 2G \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c <a href=\"https:\/\/en.wikipedia.org\/wiki\/Convolutional_code\" rel=\"nofollow\">\u0441\u0432\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0435 \u043a\u043e\u0434\u044b<\/a>, \u0430 \u0432 \u0441\u0435\u0442\u044f\u0445 3G \u0438 4G (LTE\/LTE-A) \u2014 <a href=\"http:\/\/www.scholarpedia.org\/article\/Turbo_code\" rel=\"nofollow\">\u0422\u0443\u0440\u0431\u043e \u0441\u0432\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0435 \u043a\u043e\u0434\u044b<\/a>. <\/li>\n<\/ul>\n<p>  <\/li>\n<li>\n<p>Johnson, S. J. (2006). <a href=\"https:\/\/www.researchgate.net\/publishing\/228977165_Introduction_Low-Density_Parity-Check_Codes\" rel=\"nofollow\">Introducing low-density parity-check codes<\/a>. University of Newcastle, Australia, V1<\/p>\n<p>  <\/li>\n<li>\n<p>Declercq D., Fossorier M. <a href=\"https:\/\/perso-etis.ensea.fr\/declercq\/PDF\/JournalPapers\/Declercq_2006_IEEETransCommun.pdf\" rel=\"nofollow\">Decoding algorithms for nonbinary LDPC codes over GF(q)<\/a> \/\/IEEE transactions on communications. \u2013 2007. \u2013 \u0422. 55. \u2013 \u2116. 4. \u2013 \u0421. 633-643.<\/p>\n<p>  <\/li>\n<li>\n<p>Wymeersch H., Steendam H., Moeneclaey M. <a href=\"https:\/\/telin.ugent.be\/~.\/hs\/full\/c38.pdf\" rel=\"nofollow\">Log-domain decoding of LDPC codes over GF (q)<\/a> \/\/2004 IEEE International Conference on Communications (IEEE Cat. No. 04CH37577). \u2013 IEEE, 2004. \u2013 \u0422. 2. \u2013 \u0421. 772-776.<\/p>\n<p>  <\/li>\n<li>\n<p>Chen J. et al. <a href=\"http:\/\/citeseerx.ist.psu.edu\/viewdoc\/download?doi=10.1.1.470.8968&amp;rep=rep1&amp;type=pdf\" rel=\"nofollow\">Reduced-complexity decoding of LDPC codes<\/a> \/\/IEEE transactions on communications. \u2013 2005. \u2013 \u0422. 53. \u2013 \u2116. 8. \u2013 \u0421. 1288-1299.<\/p>\n<p>  <\/li>\n<\/ol>\n<p>  <\/p>\n<h1 id=\"prilozheniya\">\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h1>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0420\u0418\u041b\u041e\u0416\u0415\u041d\u0418\u0415 1. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 SPA<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0425\u043e\u0442\u0438\u0442\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u044b? <\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0430\u0435\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 <em>\u043d\u0435\u043d\u0443\u043b\u0435\u0432\u044b\u0445<\/em> \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439?<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/912\/329\/cf7\/912329cf7971b4cadf8ca3b0cc637fde.svg\" alt=\"\\mathbf{H}\">.<\/li>\n<li>\u041e\u0434\u043d\u0430\u043a\u043e, \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0445\u0438\u0442\u0440\u0438\u0442\u044c \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0443\u043b\u0438 \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u044b, \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u0438 \u0443\u0431\u0440\u0430\u0442\u044c \u0438\u0437\u043b\u0438\u0448\u043d\u0438\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0441 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/912\/329\/cf7\/912329cf7971b4cadf8ca3b0cc637fde.svg\" alt=\"\\mathbf{H}\">. <\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043d\u0443\u0436\u043d\u0430 \u0431\u0443\u0434\u0435\u0442, \u043f\u0440\u0430\u0432\u0434\u0430, \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u0430\u0442\u0440\u0438\u0446\u044b <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/912\/329\/cf7\/912329cf7971b4cadf8ca3b0cc637fde.svg\" alt=\"\\mathbf{H}\"> \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442: \u0432\u043c\u0435\u0441\u0442\u043e \u0435\u0434\u0438\u043d\u0438\u0446 \u0432 \u043d\u0435\u0439 \u0431\u0443\u0434\u0443\u0442 \u043d\u0443\u043b\u0438, \u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0443\u043b\u0435\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u044b. \u041d\u0430\u0437\u043e\u0432\u0435\u043c \u0435\u0435 &quot;\u0437\u0435\u0440\u043a\u0430\u043b\u043e\u043c&quot; \u043c\u0430\u0442\u0440\u0438\u0446\u044b <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/912\/329\/cf7\/912329cf7971b4cadf8ca3b0cc637fde.svg\" alt=\"\\mathbf{H}\">:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e63\/444\/0eb\/e634440eb80fbb7a67f465c9fa43de2a.svg\" alt=\"\\mathbf{H}&#39; = \\mathbf{H} \\oplus \\mathbf{1}\"><\/div>\n<p>  <\/p>\n<p>\u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/38c\/158\/78b\/38c15878bbbafd451916fa718c076dc4.svg\" alt=\"\\oplus\"> \u2014 \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u043c\u043e\u0434\u0443\u043b\u044e (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 modulo 2).<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0437\u0430\u043c\u0435\u043d\u044b \u043d\u0443\u043b\u0435\u0439 \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/1e6\/eed\/f4a\/1e6eedf4aec77614895a6d9009866d9a.svg\" alt=\"\\mathbf{M}\"> \u2014 \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u043c\u0430\u0442\u0440\u0438\u0446:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/891\/19e\/137\/89119e137c5136294fdd4055d9da8326.svg\" alt=\"\\mathbf{M}&#39;&#39; =  \\mathbf{M}&#39; + \\mathbf{H}&#39;\"><\/div>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0432\u0438\u0434\u0443:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/64f\/4fc\/67b\/64f4fc67b413af9488e4c0b0eeb2d540.svg\" alt=\"\\mathbf{E} = \\mathbf{E}&#39; \\odot \\mathbf{H}\"><\/div>\n<p>  <\/p>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0430\u0431\u0430\u0432\u043d\u043e, \u043d\u0435 \u043f\u0440\u0430\u0432\u0434\u0430 \u043b\u0438? \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u0435\u043d \u043f\u0440\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u044c: \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u0445. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u0434\u0443\u043c\u0430\u044e, \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043c\u0430\u0442\u0440\u0438\u0446 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0438\u0437-\u0437\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0445\u043e\u0434\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439.<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0420\u0418\u041b\u041e\u0416\u0415\u041d\u0418\u0415 2. \u0420\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0435\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 LDPC \u0447\u0435\u0440\u0435\u0437 SPA<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0412\u043e\u043f\u0440\u043e\u0441 \u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0435 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u043d\u0435 \u0442\u0430\u043a \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u0434\u0430\u0445, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u043a\u043e\u0434\u0430\u0445 \u043d\u0435\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u0432\u0441\u0442\u0430\u0435\u0442, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0432\u043e \u0432\u0435\u0441\u044c \u0440\u043e\u0441\u0442. \u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f <em>GF(4)<\/em>.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/3a\/sk\/4k\/3ask4k70qfyzbvlfbepcgakada4.png\"><\/p>\n<p>  <\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 LLR, \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 LLR (\u043d\u0443\u0436\u043d\u043e \u0432\u0435\u0434\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0443\u0436\u0435 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0443\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439):<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/o-\/vb\/jb\/o-vbjbb7qv3nheebf4icx-0fomo.png\"><\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0435\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u0443\u0436\u0435 \u0442\u0435\u043d\u0437\u043e\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u043b\u043e\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432 \u0446\u0438\u043a\u043b\u0435:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yu\/7n\/mh\/yu7nmh79ytupcr7n0ey-hzgmp18.png\"><\/p>\n<p>  <\/p>\n<p>\u0418 \u0443\u0436\u0435 \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/3b\/y8\/jo\/3by8jo8dsov2davdirgvs5xvvvg.png\"><\/p>\n<p>  <\/p>\n<p>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e <em>q<\/em> \u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 <em>GF(q)<\/em>. \u0412\u043e\u043b\u0435\u0439-\u043d\u0435\u0432\u043e\u043b\u0435\u0439 \u0437\u0430\u0434\u0443\u043c\u0430\u0435\u0448\u044c\u0441\u044f \u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u0445\u2026 <\/p>\n<\/div>\n<\/div>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/453086\/\"> https:\/\/habr.com\/ru\/post\/453086\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/453086\/\">\n<p><img decoding=\"async\" src=\"https:\/\/d2v9y0dukr6mq2.cloudfront.net\/video\/thumbnail\/ruoEhTkNeiwq2lefr\/videoblocks-abstract-digital-background-with-blue-color-of-binary-code-and-hacked-word-video-available-in-4k-fullhd-and-hd-render-footage_rnq3quthf_thumbnail-full01.png\"><\/p>\n<p>  <\/p>\n<h1 id=\"predislovie\">\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u0421 \u043a\u043e\u0434\u0430\u043c\u0438 \u043c\u0430\u043b\u043e\u0439 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043d\u0430 \u0447\u0451\u0442\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0440\u043e\u0442\u043a\u043e <strong>LDPC<\/strong> (<strong>L<\/strong>ow-<strong>d<\/strong>ensity <strong>p<\/strong>arity-<strong>c<\/strong>heck codes), \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435 \u0431\u043b\u0438\u0437\u043a\u043e, \u0440\u0430\u0431\u043e\u0442\u0430\u044f \u043d\u0430\u0434 \u0441\u0435\u043c\u0435\u0441\u0442\u0440\u043e\u0432\u044b\u043c \u043d\u0430\u0443\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0432 \u0422\u0423 \u0418\u043b\u044c\u043c\u0435\u043d\u0430\u0443 (\u043c\u0430\u0433\u0438\u0441\u0442\u0435\u0440\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 <a href=\"https:\/\/griat.kai.ru\/communications-and-signal-processing\" rel=\"nofollow\">CSP<\/a>). \u041c\u043e\u0435\u043c\u0443 \u043d\u0430\u0443\u0447\u043d\u043e\u043c\u0443 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0435\u0434\u0430\u0433\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0431\u0430\u0437\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043d\u0435\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 LDPC), \u0430 \u043c\u043d\u0435 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044d\u0442\u0438 \u043a\u043e\u0434\u044b \u0431\u044b\u043b\u0438 \u043f\u043b\u044e\u0441-\u043c\u0438\u043d\u0443\u0441 \u043d\u0430 \u0441\u043b\u0443\u0445\u0443 \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u043a\u0430\u0444\u0435\u0434\u0440\u0435. \u041d\u0435 \u0432\u0441\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0442\u043e\u043c \u0433\u043e\u0434\u0443, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0442\u0435\u043a\u043b\u043e \u0432 \u043c\u043e\u0435 \u0445\u043e\u0431\u0431\u0438\u2026 \u0422\u0430\u043a \u044f \u043d\u0430\u0431\u0440\u0430\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0438 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f!<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0421\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u044f\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u0434\u0430\u043c\u0438 (\u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043e\u0440\u0438\u0438, \u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u043b).<\/li>\n<li>\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434\u044b LDPC \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0441\u0432\u043e\u0438\u0445 \u0441\u0435\u043c\u0438\u043d\u0430\u0440\u043e\u0432.<\/li>\n<li>\u0412\u0441\u0435\u043c, \u043a\u0442\u043e \u043b\u044e\u0431\u0438\u0442 \u043f\u043e\u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u0435\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c (\u0432 \u043a\u043e\u043d\u0446\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u044b: \u043a\u0430\u043a \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0442\u0430\u043a \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 &quot;\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438&quot; open-source \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/github.com\/aff3ct\/aff3ct\" rel=\"nofollow\">aff3ct<\/a>). <\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c!<\/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-299279","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/299279","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=299279"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/299279\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=299279"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=299279"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=299279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}