输入和输出无法识别且算法中缺少 \endcsname

输入和输出无法识别且算法中缺少 \endcsname

我想编写一个算法,我有下面显示的代码段,但它提供了多个错误,例如无法识别输入和输出命令以及我收到丢失\endcsname错误。此外,行号未插入,有什么想法可以修复所有错误并插入行号吗?

\documentclass[a4paper]{paper}
\usepackage{amsmath}
\usepackage{amssymb}

\usepackage{algorithm}
\usepackage{algpseudocode}

\begin{document}

\begin{algorithm}[H]
\Input{A vector \textbf{a}}
\Output{Bit reversed vector}
    \Function{NTT}{$\textbf{a}$}
        \State $m \gets 1$
        \State $k \gets n / 2$
        \While{$m < n$}
            \For {$i = 0$ \To $m - 1$}
                \State $jFirst \gets 2 \cdot i \cdot k$
                \State $jLast \gets jFirst + k - 1$
                \State $S \gets \psi_{rev}[m + i]$
                \For {$j = jFirst$ \To $jLast$}
                    \State $l \gets j + k$
                    \State $t \gets \textbf{a}[j]$
                    \State $u \gets \textbf{a}[l] \cdot S$
                    \State $\textbf{a}[j] \gets t + u \mod q$
                    \State $\textbf{a}[l] \gets t - u \mod q$
                \EndFor
            \EndFor
            \State $m \gets m \cdot 2$
            \State $k \gets n / 2$
        \EndWhile
        \State \Return $\textbf{a}$
    \EndFunction
    \caption{Cooley-Tukey (CT) Forward NTT}
    \label{CTAlgo}
\end{algorithm}

\end{document}

答案1

algorithmicx'salgpseudocode不提供\Input\Output命令。您必须以相同的方式创建它们(例如)\Ensure\Require生成。

此外,为了对行进行编号,您还需要使用algorithmic环境:

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}

\usepackage{algorithm,algpseudocode}
\algnewcommand{\To}{\textbf{To }}
\algnewcommand\Input{\item[\textbf{Input:}]}%
\algnewcommand\Output{\item[\textbf{Output:}]}%

\begin{document}

\begin{algorithm}[H]
  \begin{algorithmic}[1]
    \Input{A vector \textbf{a}}
    \Output{Bit reversed vector}
    \Function{NTT}{$\textbf{a}$}
      \State $m \gets 1$
      \State $k \gets n / 2$
      \While{$m < n$}
        \For {$i = 0$ \To $m - 1$}
          \State $jFirst \gets 2 \cdot i \cdot k$
          \State $jLast \gets jFirst + k - 1$
          \State $S \gets \psi_{rev}[m + i]$
          \For {$j = jFirst$ \To $jLast$}
            \State $l \gets j + k$
            \State $t \gets \textbf{a}[j]$
            \State $u \gets \textbf{a}[l] \cdot S$
            \State $\textbf{a}[j] \gets t + u \mod q$
            \State $\textbf{a}[l] \gets t - u \mod q$
          \EndFor
        \EndFor
        \State $m \gets m \cdot 2$
        \State $k \gets n / 2$
      \EndWhile
      \State \Return $\textbf{a}$
    \EndFunction
  \end{algorithmic}
  \caption{Cooley-Tukey (CT) Forward NTT}
  \label{CTAlgo}
\end{algorithm}

\end{document}

相关内容