Bài toán decode trên linear code
===================================

.. prf:definition:: Decode với ma trận sinh
    :label: def-dec-lincode-1

    **Bài toán decode trên linear code** :math:`[n, k]_q` 
    **với ma trận sinh** :math:`\bm{G}` **trong điều kiện kênh 
    truyền có** :math:`t` **lỗi** là bài toán cho trước vector 
    :math:`\bm{y} \in V_n(q)`, ta tìm vector :math:`\bm{m} \in V_k(q)` 
    sao cho vector :math:`\bm{e} = \bm{y} - \bm{m} \bm{G}` có 
    trọng số Hamming bằng :math:`t`.

    **Input:** 
    
    * vector :math:`\bm{y} \in V_n(q)`;
    * ma trận sinh :math:`\bm{G}` cỡ :math:`k \times n`;
    * số tự nhiên :math:`t \in \mathbb{N}`.

    **Output:** 
    
    * vector :math:`\bm{m} \in V_k(q)` sao cho vector 
      :math:`\bm{e} = \bm{y} - \bm{m} \bm{G}` có 
      trọng số Hamming bằng :math:`t`.

.. prf:definition:: Decode với ma trận kiểm tra chẵn lẻ
    :label: def-dec-lincode-2

    **Bài toán decode trên linear code** :math:`[n, k]_q` 
    **với ma trận parity-check** :math:`\bm{H}` **trong điều kiện 
    kênh truyền có** :math:`t` **lỗi** là bài toán cho trước 
    vector :math:`\bm{y} \in V_n(q)`, ta tìm vector :math:`\bm{e} \in V_n(q)` 
    sao cho :math:`\bm{e} \bm{H}^\top = \bm{y} \bm{H}^\top` 
    và vector :math:`\bm{e}` có trọng số Hamming bằng :math:`t`, 
    hay :math:`\mathrm{wt}(\bm{e}) = t`.

    **Input:** 
    
    * vector :math:`\bm{y} \in V_n(q)`, ma trận parity-check 
      :math:`\bm{H}` cỡ :math:`(n - k) \times n` và số tự nhiên 
      :math:`t \in \mathbb{N}`.

    **Output:** 
    
    * vector :math:`\bm{e} \in V_n(q)` có trọng số Hamming 
      bằng :math:`t`, hay :math:`\mathrm{wt}(\bm{e}) = t`, 
      sao cho :math:`\bm{e} \bm{H}^\top = \bm{y} \bm{H}^\top`.

Từ các bài toán decode linear code liên hệ với 
bài toán decode syndrome code.

.. prf:definition:: Bài toán tối ưu syndrome decoding
    :label: def-syndrom-decode

    **Bài toán tối ưu** (hay **bài toán tổng quát**) của 
    syndrome decode :math:`[n, k]_q` với ma trận parity-check 
    :math:`\bm{H}` là bài toán cho trước vector :math:`\bm{s} \in V_{n-k}(q)`,
    ta tìm vector :math:`\bm{e} \in V_n(q)` sao cho 
    :math:`\bm{H} \bm{e}^\top = \bm{s}^\top` và vector :math:`\bm{e}` có 
    trọng số Hamming nhỏ nhất có thể, hay :math:`\mathrm{wt}(\bm{e}) \to \min`.

    **Input:** 

    * :math:`\bm{s} \in V_{n-k}(q)` là syndrome;
    * :math:`\bm{H}` là ma trận parity-check 
      cỡ :math:`(n - k) \times n` của :math:`[n, k]_q` code :math:`\mathcal{C}`

    **Output:**

    * vector :math:`\bm{e} \in V_n(q)` thỏa mãn 
      :math:`\bm{H} \bm{e}^\top = \bm{s}^\top` và 
      vector :math:`\bm{e}` có trọng số Hamming nhỏ nhất có thể, 
      hay :math:`\mathrm{wt}(\bm{e}) \to \min`.

.. prf:definition:: Bài toán tìm kiếm syndrome decoding
    :label: def-syndrom-search

    **Bài toán tìm kiếm syndrome decode** :math:`sSD(\bm{H}, \bm{s}, t)` 
    là bài toán tìm kiếm theo vector :math:`\bm{s} \in V_r(q)` 
    vector :math:`\bm{e} \in V_n(q)` có trọng số Hamming bằng 
    :math:`t`, hay :math:`\mathrm{wt}(\bm{e}) = t` 
    và :math:`\bm{H} \bm{e}^\top = \bm{s}^\top`.

    **Input:**

    - :math:`\bm{H}` là ma trận cỡ :math:`r \times n` 
      trên :math:`\mathbb{F}_q`;
    - :math:`\bm{s} \in V_r(q)` là syndrome;.
    - :math:`t \in \mathbb{N}` là trọng số Hamming

    **Output:** 
    
    * vector :math:`\bm{e} \in V_n(q)` có trọng số Hamming 
      bằng :math:`t`, hay :math:`\mathrm{wt}(\bm{e}) = t`, 
      và :math:`\bm{H} \bm{e}^\top = \bm{s}^\top`.

.. prf:definition:: Bài toán quyết định syndrome decoding
    :label: def-syndrom-recognize

    **Bài toán quyết định syndrome decoding**, gọi ngắn gọn là
    **bài toán syndrome decoding**,
    :math:`SD(\bm{H}, \bm{s}, t)` là bài toán xác định theo syndrome 
    :math:`\bm{s} \in V_r(q)` xem có tồn tại hay không vector 
    :math:`\bm{e} \in V_n(q)` có trọng số Hamming bằng :math:`t` 
    và thỏa mãn :math:`\bm{H} \bm{e}^\top = \bm{s}^\top`.

    **Input:**

    * :math:`\bm{H}` là ma trận cỡ :math:`r \times n` 
      trên :math:`\mathbb{F}_q`
    * :math:`\bm{s} \in V_r(q)` là syndrome;
    * :math:`t \in \mathbb{N}` là trọng số Hamming.

    **Output:** tồn tại hay không vector :math:`\bm{e} \in V_n(q)` 
    có trọng số Hamming :math:`\mathrm{wt}(\bm{e}) = t` 
    và thỏa :math:`\bm{H} \bm{e}^\top = \bm{s}^\top`.

.. prf:theorem:: Định lí từ :cite:`1055873`
    :label: thm-syndrome-dec

    Bài toán nhận dạng syndrome code 
    :math:`SD(\bm{H}, \bm{s}, t)` là NP-complete.
