LaTeX 中的算法

LaTeX 中的算法

我编写了以下算法,但它无法编译并抛出一些错误。我不确定我做错了什么。任何帮助都将不胜感激。

\begin{algorithm}
    \caption{Bridging Score(BRS) Computation}
    \begin{algorithmic}
     Given: User-Noun Matrix $X$
     \FOR {$i = 1 \to n$}
    Let $S_i$ = {$s{i,j}$ | $0\le j \le l_i$} be set of nodes which have links to $i$;
    \IF $\left({l_i=0$ OR $l_i=1 \right)}$ \THEN
      $b_i=0$;
    \ELSE
      Compute the similarity score vectors $r_{s,1},r_{s,2},...,r_{s,l_i}$ for each $S_i=s_1,s_2,...s_{l_i}$; \\
      Construct $l_i \times l_i$ matrix $R_i= \left[r_{s,1},r_{s,2},...,r_{s,l_i}\right]$;
      Take the average of all non-diagonal elements in $R_i$ to obtain $\hat{r_s}$;
      $b_i= 1/\hat{r_s}$;
      \ENDIF
 \ENDFOR
 \RETURN vector $b$ of bridging scores;
    \end{algorithmic}
\end{algorithm}

答案1

我不太清楚您使用的是哪种算法排版包,因为您没有包含文档前言,而且您的代码是几种不同语法的奇怪混合,大部分看起来像旧的algorithms包语法,但不完全一样。您的标签似乎表明您正在使用algorithmicx捆绑包,所以我假设您使用了algpseudocode包。您需要更正一些语法,例如,algpseudocode不大写命令,只大写首字母,所以您应该有\If ... \Else ... \EndIf等。

另外,命令\For\If接受论点,所以你需要

\If{something something}

\If使用\Then,您应该将其省略。

每一行都必须有一个命令,因此您应该为“Given:”之类的内容定义自己的命令,或者直接使用\State

以下内容有望实现您期望的功能:

\documentclass{article}
\usepackage{algpseudocode}
\usepackage{algorithm}
\begin{document}
\begin{algorithm}
   \caption{Blah blah}
   \begin{algorithmic}[1]
      \State Given: User-Noun Matrix $X$
      \For{$i = 1 \to n$}
         \State Let $S_i$ = {$s{i,j}$ | $0\le j \le l_i$} be set of nodes which have links to $i$;
         \If{$\left(l_i=0 \hbox{OR} l_i=1 \right)$}
            \State $b_i=0$;
         \Else
            \State Compute the similarity score vectors $r_{s,1},r_{s,2},...,r_{s,l_i}$ for each $S_i=s_1,s_2,...s_{l_i}$; \\
            \State Construct $l_i \times l_i$ matrix $R_i= \left[r_{s,1},r_{s,2},...,r_{s,l_i}\right]$;
            \State Take the average of all non-diagonal elements in $R_i$ to obtain $\hat{r_s}$;
            \State $b_i= 1/\hat{r_s}$;
         \EndIf
      \EndFor
    \State \Return vector $b$ of bridging scores;
\end{algorithmic}
\end{algorithm}
\end{document}

捆绑包algorithmicx非常好文档举几个例子,建议大家看一下。

相关内容