有哪位专家能帮我纠正这个伪代码和方程式吗?

有哪位专家能帮我纠正这个伪代码和方程式吗?

我想用 Latex 编写这个伪代码。 在此处输入图片描述

这是我拥有的代码。

\documentclass[runningheads]{elsarticle}
%

\setlength{\belowdisplayskip}{3pt}

\usepackage{algorithm}
\usepackage{algpseudocode}

\renewcommand{\algorithmicrequire}{\textbf{Input:}}  % Use Input in the format of Algorithm  
\renewcommand{\algorithmicensure}{\textbf{Output:}} % Use Output in the format of Algorithm  

\newcommand{\tabincell}[2]{\begin{tabular}{@{}#1@{}}#2\end{tabular}}  
%\usepackage[table]{xcolor}

\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
{\centering
\begin{minipage}{.8\linewidth}
\begin{algorithm}[H]
\caption{GraphSAGE embedding generation (i.e., forward propagation) algorithm}

\label{alg:algorithm1}
  \begin{algorithmic}[1]
  \Require Graph $\mathcal{G}$ ($\mathcal{V}$, $\mathcal{E}$); input features $\{x_v, \forall{v} \in \mathcal{V}\}$; depth $\mathcal{K}$; weight matrices $W^k, \forall{$\textit{\mathcal{k}}$} \in \{1, ...,\mathcal{K}\}$; non-linearity $\sigma$; differentiable aggregator functions $AGGREGATE_k$, $x_v, \forall{k} \in \{1, ...,\mathcal{K}\}$; neighborhood function $\mathcal{N}: v \leftarrow 2^\mathcal{V}$
  \Ensure
      Vector representations $z_v$ for all ${v} \in \mathcal{V}$;
      \State $h^0_v \leftarrow x_v, \forall v \in \mathcal{V}$; 
      \For{$k = 1...\mathcal{K}$}
        \For{$v \in \mathcal{V}$}
        \State $h^k_\mathcal{N}_(v)$
        \leftarrow AGGREGATE_k $(\{h^{k}_u, \forall{u} \in \mathcal{N}_(v)\})$;
        \State $h^{k}_v \leftarrow \sigma (W^k \cdot CONCAT(h^{k-1}_v, $h^k_\mathcal{N}__(v)$}; 
        \EndFor
       \State $h^k_v \leftarrow h^k_v / \mid\mid h^k_v \mid\mid_2,\forall{v} \in \mathcal{V}$;
      \EndFor
      \State $z_v \leftarrow h_v^K, \forall{v} \in \mathcal{V}$;
  \end{algorithmic}
\end{algorithm}
\end{minipage}
\par
}
\end{document}

但是,使用此代码,我在第 4 行和第 5 行得到了一些不同的东西,如红线所示,有专家可以帮忙纠正吗? 在此处输入图片描述

答案1

这是一个可能的解决方案:

\documentclass[runningheads]{elsarticle}
\setlength{\belowdisplayskip}{3pt}

\usepackage{bm}
\usepackage{mathtools}
\usepackage{algorithm}
\usepackage{algpseudocode}

\renewcommand{\algorithmicrequire}{\textbf{Input:}}  % Use Input in the format of Algorithm  
\renewcommand{\algorithmicensure}{\textbf{Output:}} % Use Output in the format of Algorithm  

\begin{document}
    
\begin{center}
    \begin{minipage}{.8\textwidth}
        \begin{algorithm}[H]
            \caption{GraphSAGE embedding generation (i.e., forward propagation) algorithm}
            \label{alg:algorithm1}
            \begin{algorithmic}[1]
                \Require Graph $\mathcal{G}$ ($\mathcal{V}$, $\mathcal{E}$); input features $\{x_v, \forall{v} \in \mathcal{V}\}$; depth $K$; weight matrices $W^k, \forall{\mathcal{\textit{k}}} \in \{1, ...,K\}$; non-linearity $\sigma$; differentiable aggregator functions AGGREGATE$_k$, $x_v, \forall{k} \in \{1, ...,K\}$; neighborhood function $\mathcal{N}: v \leftarrow 2^\mathcal{V}$
                \Ensure Vector representations $z_v$ for all ${v} \in \mathcal{V}$
                \State $h^0_v \leftarrow x_v, \forall v \in \mathcal{V}$; 
                \For{$k = 1...\mathcal{K}$}
                \For{$v \in \mathcal{V}$}
                \State $h^k_{\mathcal{N}(v)} \leftarrow\text{AGGREGATE}_k \left(\{h^{k-1}_u, \forall{u} \in \mathcal{N}(v)\}\right)$
                \State $h^k_v \leftarrow \sigma \left(W^k \cdot \text{CONCAT}(h^{k-1}_v, h^k_{\mathcal{N}(v)})\right)$
                \EndFor
                \State $h^k_v \leftarrow h^k_v / \mid\mid h^k_v \mid\mid_2,\forall{v} \in \mathcal{V}$
                \EndFor
                \State $z_v \leftarrow h_v^K, \forall{v} \in \mathcal{V}$;
            \end{algorithmic}
        \end{algorithm}
    \end{minipage}
    \par
\end{center}

\end{document}

以下是观察结果:

  1. \mathcal您在不需要的地方使用了它(根据给出的示例)。例如在\mathcal{K}
  2. 突出显示的术语是错误的。只有_当您有下标时才应使用。也就是说,\mathcal{N}_(v)正确的应该是 ,而不是\mathcal{N}(v)
  3. 如果一个下标里面有一个下标,则必须使用_{_{}}。例如,h^k_{\mathcal{N}_{(v)}};
  4. “CONCAT” 和 “AGGREGATE” 这两个词不是数学术语。因此您必须将它们放在文本格式中。您可以通过关闭数学环境($例如)或使用 来实现这一点\text{}。不过,最后一个选项需要mathtools包。我用展台做了一个例子,所以您可以根据情况选择其中任何一个;
  5. 在您给出的示例中,有些变量对我来说似乎是粗体。我建议您看一下这个,如果是这种情况,您可以使用bm包正确地将变量加粗。例如,\bm{z}

相关内容