Strona główna Algorytmy i Struktury Danych Kody polarne — przepustowość kanału

📡 Kody polarne — przepustowość kanału

Kody polarne (Arıkan, 2009) osiągają przepustowość Shannona dla symetrycznych kanałów o wejściu binarnym. Polaryzacja kanału: rekurencyjne G_N = F^⊗n łączy słabe i silne kanały syntetyczne. Dekoder z sukcesywnym anulowaniem.

Algorytmy i Struktury Danych2DZaawansowany60 FPS
polar-codes ↗ Otwórz osobno
Interfejs samej symulacji jest w języku angielskim.

Jak to działa

Kody polarne stosują jądro Arıkana rekurencyjnie: G_N = F^⊗n, gdzie F=[[1,0],[1,1]]. Tworzy to N syntetycznych kanałów bitowych z N kopii fizycznego kanału W. Gdy N→∞, pojemność każdego syntetycznego kanału I(W_N^(i)) polaryzuje się do 0 albo 1. Ułamek o pojemności →1 równa się I(W), pojemności kanału fizycznego.

Jądro: F = [[1,0],[1,1]] G_N = B_N · F^⊗n (B_N = permutacja odwrócenia bitów) Zakodowane: x_1^N = u_1^N · G_N Aktualizacja SC: LLR_n(i) = f(LLR_{n-1}(2i-1), LLR_{n-1}(2i)) f(a,b) = 2·atanh(tanh(a/2)·tanh(b/2)) g(a,b,u) = (-1)^u · a + b

Bity zamrożone zajmują K najgorszych syntetycznych kanałów (najniższa pojemność/najwyższy szum). Bity informacyjne zajmują K najlepszych. Dekoder sukcesywnej eliminacji (successive cancellation) przetwarza bity od lewej do prawej, wykorzystując strukturę motylkową LLR.

Najczęściej zadawane pytania

Czym są kody polarne?

Kody polarne, wynalezione przez Erdala Arıkana w 2009 roku, są pierwszymi dowiedlnie osiągającymi pojemność kodami dla symetrycznych kanałów binarnych. Wykorzystują polaryzację kanału, by stworzyć mieszankę niemal doskonałych i niemal bezużytecznych syntetycznych kanałów.

Czym jest polaryzacja kanału?

Polaryzacja kanału to zjawisko, w którym rekurencyjne łączenie N kopii kanału wytwarza N syntetycznych kanałów, które się polaryzują: niektóre mają pojemność bliską 1 (niezawodne), inne bliską 0 (zaszumione). Wraz ze wzrostem N ułamek o pojemności bliskiej 1 zbliża się do pojemności oryginalnego kanału.

Czym jest macierz konstrukcji kodu polarnego?

Macierz generująca to G_N = F^⊗n, gdzie F = [[1,0],[1,1]] to jądro, a ⊗n oznacza n-tą potęgę Kroneckera (N=2^n). Zakodowane słowo kodowe to x = u·G_N, gdzie u to słowo wejściowe z bitami zamrożonymi ustawionymi na 0.

Czym są bity zamrożone?

Bity zamrożone to pozycje wejściowe przypisane do najgorszych (najbardziej zaszumionych) syntetycznych kanałów. Są ustawione na znane wartości (zwykle 0) na koderze i używane jako informacja pomocnicza przez dekoder. Bity informacyjne zajmują najlepsze syntetyczne kanały.

Jak działa dekodowanie sukcesywnej eliminacji?

Dekodowanie sukcesywnej eliminacji (SC) estymuje bity jeden po drugim od u_1 do u_N. Na każdym kroku dekoder używa wcześniej zdekodowanych bitów i LLR kanału, by obliczyć stosunek wiarygodności dla bieżącego bitu, a następnie podejmuje twardą decyzję (lub wymusza bit zamrożony na 0).

Jaki jest BER kodów polarnych w porównaniu z LDPC?

Przy krótkich długościach bloku kody polarne z dekodowaniem SC mają nieco gorszy BER niż LDPC czy kody turbo. Dekodowanie SCL z CRC znacząco poprawia wydajność, dorównując lub przewyższając LDPC dla umiarkowanych długości bloku.

Gdzie w praktyce wykorzystywane są kody polarne?

Kody polarne są używane w 5G NR (New Radio) dla kanału kontrolnego (PBCH, PDCCH, PUCCH). Zostały ustandaryzowane przez 3GPP w wersji Release 15 (2017), czyniąc je pierwszymi kodami osiągającymi pojemność w komercyjnym standardzie bezprzewodowym.

Jaki jest wzór na pojemność kanału AWGN?

Pojemność kanału AWGN wynosi C = (1/2)log₂(1 + SNR) bitów na użycie kanału. Dla BPSK z wariancją szumu σ², SNR = E_s/N_0 = 1/(2σ²).

Czym jest tempo polaryzacji?

Tempo polaryzacji opisuje, jak szybko pojemności syntetycznych kanałów zbiegają do 0 lub 1. Dla standardowego jądra F wykładnik wynosi E = 0,5. Lepsze jądra mogą osiągnąć wyższe wykładniki, poprawiając wydajność przy skończonej długości.

Czym jest dekodowanie SCL?

Dekodowanie listy sukcesywnej eliminacji (SCL) utrzymuje jednocześnie listę L kandydujących ścieżek słów kodowych. Zewnętrzny kod CRC wybiera poprawnego kandydata z listy, dramatycznie poprawiając BER kosztem złożoności O(L·N log N).

O tej symulacji

Ta symulacja rekurencyjnie stosuje krok polaryzacji Arıkana do N=2ⁿ syntetycznych kanałów, obserwując, jak pojedynczy zaszumiony kanał rozdziela się na mieszankę niemal doskonałych i niemal bezużytecznych kopii, a następnie przypisuje K najlepszych z nich do przenoszenia bitów informacyjnych, zamrażając resztę do zera. Przełączaj się między wykresem słupkowym polaryzacji, na żywo wykonywanym przemiataniem BER-vs-SNR oraz diagramem motylkowym, który dokładnie pokazuje, jak rekurencyjna struktura łącząca podłącza bity wejściowe do przesyłanego słowa kodowego.

🔬 Co pokazuje

Wykres słupkowy pojemności syntetycznych kanałów z jasnymi słupkami oznaczającymi pozycje bitów informacyjnych i przygaszonymi słupkami oznaczającymi bity zamrożone, przerywaną linią odniesienia granicy Shannona, animowaną krzywą BER-vs-Eb/N0 oraz diagramem motylkowym rekurencyjnej sieci łączącej.

🎮 Jak korzystać

Ustaw wykładnik długości bloku n (dający N=2ⁿ), współczynnik kodowania R oraz Eb/N0 suwakami, przełącz listę rozwijaną Widok między Polaryzacją kanału, Krzywą BER i Diagramem motylkowym, kliknij Symuluj, by przeliczyć, i Uruchom BER, by animować pełne przemiatanie BER po wartościach SNR.

💡 Czy wiesz, że?

Kody polarne były pierwszymi kodami, jakie kiedykolwiek matematycznie udowodniono jako osiągające pojemność Shannona wraz ze wzrostem N — a zaledwie osiem lat po artykule Arıkana z 2009 roku zostały przyjęte przez 3GPP do kodowania kanału kontrolnego 5G NR, czyniąc je jedną z najszybszych historii przejścia od teorii do wdrożenia w historii teorii kodowania.

Najczęściej zadawane pytania

Dlaczego tylko niektóre słupki na wykresie polaryzacji zbliżają się do pojemności 1?

Każdy krok polaryzacji rozdziela kanał na „gorszą” kopię (W⁻, bardziej podatną na wymazania) i „lepszą” kopię (W⁺, mniej podatną na wymazania) poprzez rekurencyjną regułę łącz-i-dziel — po n krokach to powtarzane dzielenie popycha większość syntetycznych kanałów w stronę pojemności ≈1 lub ≈0, co jest dokładnie efektem polaryzacji wizualizowanym przez wysokości słupków.

Jak symulacja decyduje, które pozycje bitów są zamrożone?

Sortuje wszystkie N syntetycznych kanałów według pojemności i przypisuje górne K (odpowiadające wybranemu współczynnikowi kodowania R×N) jako kanały informacyjne, zamrażając resztę do 0 — to dokładnie reguła konstrukcji kodu polarnego, a podniesienie suwaka współczynnika kodowania widocznie przesuwa więcej słupków z przygaszonych (zamrożonych) na jasne (informacyjne) na wykresie.

Dlaczego podniesienie Eb/N0 dramatycznie zmniejsza krzywą BER?

Wyższe Eb/N0 obniża równoważne prawdopodobieństwo wymazania podawane do obliczeń polaryzacji kanału, co popycha więcej syntetycznych kanałów w stronę pojemności 1, a mniej w stronę 0 — ponieważ BER jest szacowany jako średnie prawdopodobieństwo błędu jedynie po kanałach informacyjnych, lepszy leżący u podstaw SNR bezpośrednio oznacza, że mniej słabych kanałów jest wykorzystywanych do rzeczywistych danych.

Co dokładnie reprezentuje diagram motylkowy?

Każdy etap połączeń czerwono-niebieskich reprezentuje jedno rekurencyjne zastosowanie jądra Arıkana 2×2 F=[[1,0],[1,1]], a wzór krzyżowania (każdy węzeł sparowany z partnerem oddalonym o N/2^(etap+1) pozycji) to dokładnie sposób, w jaki bity wejściowe u łączą się addytywnie (mod 2), by wytworzyć ostateczne słowo kodowe x — to ta sama struktura, którą rzeczywisty koder polarny implementuje w sprzęcie.

Dlaczego zwiększenie długości bloku n zmienia ostrość wzorca polaryzacji?

Każdy dodatkowy krok polaryzacji podwaja liczbę syntetycznych kanałów i ponownie stosuje regułę podziału do każdego istniejącego kanału, więc więcej rekurencji popycha pojemności dalej w stronę skrajności 0 i 1 — większe n daje więc bardziej ostro bimodalny wykres słupkowy, co jest teoretycznym mechanizmem stojącym za gwarancją osiągania pojemności przez kody polarne, gdy N→∞.

Podobne symulacje