รหัสโพลาร์ ถูกคิดค้นในปี พ.ศ.2552 โดยเออร์ดัล อริกาน (Erdal Arikan) ซึ่งเป็นรหัสช่องสัญญาณชนิดแรกที่สามารถพิสูจน์ได้โดยตรงว่าเข้าใกล้ทฤษฎีความจุช่องสัญญาณของแชนนอน (Shannon’s limit) ต่างจากรหัสช่องสัญญาณชนิดอื่นที่ต้องใช้การพิสูจน์ทางอ้อม
แนวคิดหลักของรหัสโพลาร์คือการแปลงช่องสัญญาณให้กลายเป็นช่องสัญญาณย่อยที่มีคุณสมบัติแตกต่างกัน โดยช่องสัญญาณย่อยส่วนหนึ่งจะมีปริมาณของสัญญาณรบกวนมากกว่าช่องสัญญาณเดิม และช่องสัญญาณย่อยอีกส่วนหนึ่งจะมีปริมาณของสัญญาณรบกวนน้อยกว่าช่องสัญญาณเดิม หลักการดังกล่าวเรียกว่า การโพลาไรซ์ของช่องสัญญาณ (Channel polarization) ช่องสัญญาณที่ผ่านโพลาไรซ์จะถูกนำมาใช้สำหรับส่งบิตข้อมูล โดยเลือกช่องสัญญาณที่มีคุณภาพดีที่สุดหรือมีปริมาณของสัญญาณรบกวนน้อยที่สุด และช่องสัญญาณที่เหลือจะถูกใช้สำหรับส่งบิตที่ถูกกำหนดไว้ เรียกว่า บิตแช่แข็ง (Frozen bit)
รายละเอียดเพิ่มเติม . . .
การนิยามรหัสโพลาร์สามารถทำได้โดยใช้พารามิเตอร์ 4 ค่า คือ \((N,K,\mathcal{I},\mathcal{F})\) โดยที่
\(N\) คือ ความยาวของคำรหัส
\(K\) คือ ความยาวของบิตข้อมูล
\(\mathcal{I}\) คือ เซตของตำแหน่งบิตข้อมูล
\(\mathcal{F}\) คือ เซตของตำแหน่งบิตแช่แข็ง
การเข้ารหัสโพลาร์สามารถทำได้โดย
\(\displaystyle \mathbf{x}_{1}^{N}=\mathbf{u}_{1}^{N}{{\mathbf{G}}_{N}}\)
โดยที่ \(\mathbf{u}_{1}^{N}=[{{u}_{1}},\ldots ,{{u}_{N}}]\) คือ เวกเตอร์ของข่าวสารที่ประกอบด้วยบิตข้อมูลและบิตแช่แข็ง
\(\mathbf{x}_{1}^{N}=[{{x}_{1}},\ldots ,{{x}_{N}}]\) คือ เวกเตอร์ของคำรหัส
\({{\mathbf{G}}_{N}}\) คือ เมทริกโพลาไรซ์
การสร้างเมทริกซ์โพลาไรซ์ \({{\mathbf{G}}_{N}}\) ทำได้โดยการหาผลคูณแบบครอนเนกเกอร์ (Kronecker product) ของเมทริกซ์ \(\mathbf{F}=\left[ {\begin{array}{*{20}{c}} 1 & 0 \\ 1 & 1 \end{array}} \right]\) เมทริกซ์โพลาร์จำนวน \(n\) ครั้ง โดยที่ \(n={{\log }_{2}}(N)\) ดังแสดงในสมการ
\({{\mathbf{G}}_{N}}={{\mathbf{F}}^{{\otimes n}}}\)
นอกจากนี้ การเข้ารหัสโพลาร์สามารถสามารถพิจารณาในรูปแผนภาพวงจรได้ดังรูปที่ 3 โดยที่ \(\oplus \) เป็นการบวกแบบมอดูโล 2 (mod-2)
จากรูปที่ 1.1 แสดงแผนภาพการเข้ารหัสโพลาร์ซึ่งสอดคล้องกับเมทริกซ์โพลาไรซ์ ซึ่งจะเห็นว่า
เมทริกซ์โพลาไรซ์ \({{\mathbf{G}}_{N}}\) สามารถขยายให้เป็นเมทริกซ์โพลาไรซ์ \({{\mathbf{G}}_{{2N}}}\) ได้โดย
\({{\mathbf{G}}_{{2N}}}=\left[ {\begin{array}{*{20}{c}} {{{\mathbf{G}}_{N}}} & 0 \\ {{{\mathbf{G}}_{N}}} & {{{\mathbf{G}}_{N}}} \end{array}} \right]\)
หมายเหตุ นิยามของผลคูณแบบครอนเนกเกอร์
กำหนดให้ \(\mathbf{A}=\left[ {\begin{array}{*{20}{c}} {{{\mathbf{a}}_{{11}}}} & {{{\mathbf{a}}_{{12}}}} \\ {{{\mathbf{a}}_{{21}}}} & {{{\mathbf{a}}_{{22}}}} \end{array}} \right]\) และ \(\mathbf{B}=\left[ {\begin{array}{*{20}{c}} {{{\mathbf{b}}_{{11}}}} & {{{\mathbf{b}}_{{12}}}} \\ {{{\mathbf{b}}_{{21}}}} & {{{\mathbf{b}}_{{22}}}} \end{array}} \right]\) ผลคูณแบบครอนเนกเกอร์ของเมทริกซ์ \(\mathbf{A}\) และ \(\mathbf{B}\) หาได้จาก
\(\displaystyle \mathbf{A}\otimes \mathbf{B}=\left[ {\begin{array}{*{20}{c}} {{{\mathbf{a}}_{{11}}}\mathbf{B}} & {{{\mathbf{a}}_{{12}}}\mathbf{B}} \\ {{{\mathbf{a}}_{{21}}}\mathbf{B}} & {{{\mathbf{a}}_{{22}}}\mathbf{B}} \end{array}} \right]=\left[ {\begin{array}{*{20}{c}} {{{\mathbf{a}}_{{11}}}{{\mathbf{b}}_{{11}}}} & {{{\mathbf{a}}_{{11}}}{{\mathbf{b}}_{{12}}}} & {{{\mathbf{a}}_{{12}}}{{\mathbf{b}}_{{11}}}} & {{{\mathbf{a}}_{{12}}}{{\mathbf{b}}_{{12}}}} \\ {{{\mathbf{a}}_{{11}}}{{\mathbf{b}}_{{21}}}} & {{{\mathbf{a}}_{{11}}}{{\mathbf{b}}_{{22}}}} & {{{\mathbf{a}}_{{12}}}{{\mathbf{b}}_{{21}}}} & {{{\mathbf{a}}_{{12}}}{{\mathbf{b}}_{{22}}}} \\ {{{\mathbf{a}}_{{21}}}{{\mathbf{b}}_{{11}}}} & {{{\mathbf{a}}_{{21}}}{{\mathbf{b}}_{{12}}}} & {{{\mathbf{a}}_{{22}}}{{\mathbf{b}}_{{11}}}} & {{{\mathbf{a}}_{{22}}}{{\mathbf{b}}_{{12}}}} \\ {{{\mathbf{a}}_{{21}}}{{\mathbf{b}}_{{21}}}} & {{{\mathbf{a}}_{{21}}}{{\mathbf{b}}_{{22}}}} & {{{\mathbf{a}}_{{22}}}{{\mathbf{b}}_{{21}}}} & {{{\mathbf{a}}_{{22}}}{{\mathbf{b}}_{{22}}}} \end{array}} \right]\)
การวิเคราะห์คุณภาพของช่องสัญญาณย่อยที่ได้จากการโพลาไรซ์จะถูกนำมาใช้ในการกำหนดตำแหน่งของบิตแช่แข็ง โดยเลือกช่องสัญญาณที่มีความน่าเชื่อถือสูงที่สุดจำนวน \(K\) ช่อง ให้เป็นตำแหน่งของบิตข้อมูล และเลือกช่องสัญญาณที่เหลือจำนวน \(N-K\)
เป็นตำแหน่งของบิตแช่แข็ง วิธีการที่ใช้ในการวิเคราะห์ความน่าเชื่อถือของช่องสัญญาณย่อยจะขึ้นอยู่กับชนิดของช่องสัญญาณ เช่น การใช้พารามิเตอร์ Bhattacharyya ในการวิเคราะห์คุณภาพช่องสัญญาณแบบไบนารีที่มีการสูญหาย (Binary Erasure channel: BEC) และการใช้วิวัฒนาการความหนาแน่นสำหรับวิเคราะห์คุณภาพของช่องสัญญาณแบบเกาส์เซียน (Additive white Gaussian noise: AWGN)
ต้องการส่งข้อมูล \([1,0,1,1]\) โดยมีอัตรารหัส \(R=0.5\) และมีตำแหน่งของบิตแช่แข็งคือ \(\mathcal{F}=\{1,2,3,5\}\) จะได้
เวกเตอร์ของข่าวสาร \(\mathbf{u}_{1}^{8}=[0,0,0,1,0,0,1,1]\)
เมทริกซ์ตัวกำเนิด \({{\mathbf{G}}_{8}}={{\mathbf{F}}^{{\otimes 3}}}=\left[ {\begin{array}{*{20}{l}} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\ 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\ 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\ 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \end{array}} \right]\)
เวกเตอร์คำรหัส \(\displaystyle \mathbf{x}_{1}^{8}=\mathbf{u}_{1}^{8}{{\mathbf{G}}_{N}}=[1,0,1,0,0,1,0,1]\)
การถอดรหัสโพลาร์ด้วยตัวถอดรหัสแบบหักล้างอย่างต่อเนื่อง (Successive cancellation: SC) ข่าวสารที่ได้รับจากช่องสัญญาณแต่ละบิต \({{y}_{i}}\) จะถูกนำมาคำนวนอัตราส่วนความควรจะเป็นแบบล็อก (Log-likelihood ratio: LLR) ดังสมการ
\(\displaystyle \begin{array}{l}{{L}_{i}}=\log \left( {\frac{{P({{x}_{i}}=0|{{y}_{i}})}}{{P({{x}_{i}}=1|{{y}_{i}})}}} \right)\\\ \ \ =\log \left( {\frac{{P({{y}_{i}}|{{x}_{i}}=0)P({{x}_{i}}=0)}}{{P({{y}_{i}}|{{x}_{i}}=1)P({{x}_{i}}=1)}}} \right)\end{array}\)
โดย \({{y}_{i}}\) คือค่าของสัญญาณที่ได้รับบิตที่ \(i\) และ \(\displaystyle {{x}_{i}}\) คือค่าของบิตที่ส่งออกจากทางภาคส่งบิตที่ \(i\)
โครงสร้างการถอดรหัสโพลาร์ประกอบด้วย 2 โหนดคือ โหนดตรวจสอบ (Check node) และโหนดตัวแปร (Variable node) ดังรูปที่ 4 โดยการคำนวนค่า LLR ที่ออกจากโหนดตรวจสอบและโหนดตัวแปรแสดงดังสมการด้านล่าง
\({{L}_{{cn}}}=2{{\tanh }^{{-1}}}\left( {\tanh \frac{{{{L}_{{{{a}_{1}}}}}}}{2}\tanh \frac{{{{L}_{{{{a}_{2}}}}}}}{2}} \right)\)
\({{L}_{{vn}}}={{L}_{{{{b}_{1}}}}}+{{L}_{{{{b}_{2}}}}}\)
โดยที่ \({{L}_{{{{a}_{1}}}}}\) และ \({{L}_{{{{a}_{2}}}}}\) คือ ค่า LLR ที่เข้าสู่โหนดตรวจสอบค่าที่ 1 และค่าที่ 2
โดยที่ \({{L}_{{{{b}_{1}}}}}\) และ \({{L}_{{{{b}_{2}}}}}\) คือ ค่า LLR ที่เข้าสู่โหนดตัวแปรค่าที่ 1 และค่าที่ 2
จากรูปที่ 4 แสดงแผนภาพการถอดรหัสโพลาร์ซึ่งประกอบด้วยโหนดตรวจสอบและโหนดตัวแปร โดยค่า LLR จะถูกคำนวณผ่านแต่ละโหนดและเมื่อทำการถอดรหัสจนถึงขั้นสุดท้าย ในกรณีตำแหน่งนั้นเป็นตำแหน่งของบิตแช่แข็ง ค่าของบิตนั้นจะถูกตัดสินใจเป็นค่าของบิตแช่แข็งที่กำหนดไว้ก่อนการเข้ารหัสโดยไม่คำนึงถึงค่า LLR ที่ได้ แต่หากตำแหน่งนั้นเป็นตำแหน่งของบิตข้อมูล ค่า LLR ที่ได้จะถูกตัดสินใจดังสมการ
\(\displaystyle {{\hat{u}}_{i}}=\left\{ {\begin{array}{*{20}{l}} 0 & {;{{L}_{i}}>0} \\ 1 & {;{{L}_{i}}\le 1} \end{array}} \right.\)
ข้อจำกัดของการถอดรหัสโพลาร์ด้วยตัวถอดรหัสแบบ SC คือ สามารถถอดรหัสได้ทีละ 1 บิต ตามลำดับเท่านั้น และบิตที่ถอดรหัสเสร็จสิ้นก่อนหน้าจะถูกป้อนกลับเพื่อให้ในการถอดรหัสบิตถัดไปจนกว่าจะสามารถถอดรหัสได้ครบทุกบิต