当前位置:   article > 正文

LaTeX 算法伪代码基本格式排版

latex 算法

目录

一、算法排版基本用法

1、参数与语法说明

(1)算法排版框架

(2)标题与标签

(3)设置输入和输出

(4)算法内容框架

(5)输入输出

(6)算法内容

2、算法的引用

3、算法改名

二、算法常用语句

1、IF 条件判断语句

2、FOR 循环语句

3、while 循环语句

三、算法排版初体验


一、算法排版基本用法

1、参数与语法说明

(1)算法排版框架

  1. \begin{algorithm}[!t]
  2. ...
  3. \end{algorithm}

整体大框架明确了伪代码或算法结构的开始(\begin)和结束(\end)的位置,而 algorithm 说明插入的内容是算法。[!h] 是算法的摆放格式:在当前位置(hear),所有的格式和图片、表格相同。

(2)标题与标签

  1. \caption{Algor of ABC}
  2. \label{alg:AOA}

caption 是算法的标题。{ }中就是标题展示的具体内容,标题也会有编号,一般都是自动编号。label 是标签,标签主要是在引用的时候会用到。

说明:有时候,我们喜欢强调标签是属于算法标签,所以这里使用 alg:AOA,而不是直接使用 AOA 作为标签。

(3)设置输入和输出

  1. \renewcommand{\algorithmicrequire}{\textbf{Input:}}
  2. \renewcommand{\algorithmicensure}{\textbf{Output:}}

算法一般是需要输入和输出的,我们重新替换掉上面定义的两个命令:

  1. \algorithmicrequire
  2. \algorithmicensure

所以修改之后,应该明白上面两行命令的含义了。我们使用的命令:\renewcommand{}{},第一个大括号是修改前的命令,第二个大括号是修改后的命令。\textbf是命令文本的格式(加粗)。

如果这条语句适用于所有的算法,那么我们就可以把这条语句和引用包的命令放在一起:

这就是全局设定的命令,所有用到该命令的算法都要遵守这个设定。在每个具体的算法中,我们就不需要使用这个命令了。但如果在算法中使用了这个命令,就会优先按照这个命令来。而其他没有使用这个命令,就是用前面全局设定的命令。

(4)算法内容框架

  1. \begin{algorithmic}[1]
  2. \end{algorithmic}

这一对是算法内容的框架,表示算法的具体实现以伪代码的形式写在这里。

后面有个参数,参数中一般都写1,这个1表示具体算法内容前面的序号是每几行语句标一次序号,一般我们都是每一行算法语句都要,所以是1。

(5)输入输出

  1. \REQUIRE $A$, $B$, $C$ %%input
  2. \ENSURE EEEEE %%output

这一整块就是输入参数和输出参数。其中,\REQUIRE 命令表示输入,\ENSURE 命令表示输出。

(6)算法内容

如果算法中不需要输入和输出这两条语句,那我们这两条语句就不用写在算法中,显示的效果就只有算法的内容了。

  1. \STATE AAAAA
  2. \WHILE{$A=B$}
  3. \STATE BBBBB
  4. \ENDWHILE
  5. \FOR{each $i \in [1,10]$}
  6. \IF {$C = 0$}
  7. \STATE CCCCC
  8. \ELSE
  9. \STATE DDDDD
  10. \ENDIF
  11. \ENDFOR
  12. \RETURN EEEEE

这一整块就是算法的内容了。每一条独立的语句,前面都要添加命令\STATE。除此之外,我们最常用的还有判断语句循环语句返回语句

2、算法的引用

算法的引用要用到的命令 /ref,如果要调用上面的算法,就可以这样调用:

As show in algorithm \ref{alg:AOA}

命令大括号中的就是算法的标签,执行结果如下:

3、算法改名

有些时候,我们想用的不是 algorithm ,例如我们想写智能合约,就希望是下面这种样式:

只需要在使用前添加一行:\floatname{algorithm}{Contract}

  1. \floatname{algorithm}{Contract}
  2. \begin{algorithm}[!h]
  3. \caption{Cont of ABC}
  4. \label{alg:AOA}
  5. \begin{algorithmic}[1]
  6. \STATE AAAAA
  7. \end{algorithmic}
  8. \end{algorithm}

二、算法常用语句

在算法的伪代码书写模式中有一些常用的语句,比如:条件分支、循环结构等。这些语法的使用要用到 algorithmic 宏包,即:\usepackage{algorithmic}

1、IF 条件判断语句

IF 条件判断的结构如下:

  1. \IF {条件}
  2. \STATE 语句1
  3. \ELSE
  4. \STATE 语句2
  5. \ENDIF

这个语句块的含义就是:如果条件成立,则执行语句1,否则执行语句2。

如果我们不用考虑条件不成立,那么我们就可以省略 ELSE,直接写如下的语句块:

  1. \IF {条件}
  2. \STATE 语句1
  3. \ENDIF

有两个以上的情况分支,就需要用到嵌套功能,即在一个判断语句中再写一个判断语句,例如:

  1. \IF {条件1}
  2. \STATE 语句1
  3. \ELSE
  4. \IF{条件2} \STATE 语句2
  5. \ELSE \STATE 语句3
  6. \ENDIF
  7. \ENDIF

2、FOR 循环语句

for循环语句主要用于那些具有明确循环次数和范围的循环语句,例如有如下的几种情况:

  1. \FOR{循环条件}
  2. \STATE 循环语句
  3. \ENDFOR

这里以 1 到 100 以内所有整数之和为例:

  1. \STATE $Sum = 0$
  2. \FOR{each $i \in [1,100]$}
  3. \STATE $Sum = Sum + i$
  4. \ENDFOR

执行结果如下:

3、while 循环语句

while循环主要用于那些循环次数不确定的,直到满足某个条件退出的,while循环格式如下:

  1. \WHILE{条件}
  2. \STATE 循环语句
  3. \ENDWHILE

举个例子:计算 1 到 2021 的整数和。

  1. \begin{algorithm}[!h]
  2. \caption{Sum}
  3. \label{alg:Sum}
  4. \begin{algorithmic}[1]
  5. \STATE $s = 0$, $i = 1$
  6. \WHILE{$s<2021$}
  7. \STATE $s = s+i$
  8. \STATE $i++$
  9. \ENDWHILE
  10. \end{algorithmic}
  11. \end{algorithm}

上面实例的执行效果如下所示:

三、算法排版初体验

LaTeX 的所有宏包文件都要写在 \documentclass 命令之后和\begin{document} 之前。在本文中,我们主要会用到如下的两个宏包:

  1. \usepackage{algorithmic}
  2. \usepackage{algorithm}

在论文写作的过程中,对于计算机专业的学生,在论文中插入伪代码描述所用的算法还是比较常见的。这里我们先体验一下伪代码算法插入模板的效果,然后在后面详细讲解模板的中的每个细节。

我们比较通用的模板如下:

  1. \begin{algorithm}[!h]
  2. \caption{algorithm of SUM}
  3. \label{alg:AOA}
  4. \renewcommand{\algorithmicrequire}{\textbf{Input:}}
  5. \renewcommand{\algorithmicensure}{\textbf{Output:}}
  6. \begin{algorithmic}[1]
  7. \REQUIRE $A$, $B$, $C$ %%input
  8. \ENSURE EEEEE %%output
  9. \STATE AAAAA
  10. \WHILE{$A=B$}
  11. \STATE BBBBB
  12. \ENDWHILE
  13. \FOR{each $i \in [1,10]$}
  14. \IF {$C = 0$}
  15. \STATE CCCCC
  16. \ELSE
  17. \STATE DDDDD
  18. \ENDIF
  19. \ENDFOR
  20. \RETURN EEEEE
  21. \end{algorithmic}
  22. \end{algorithm}

上述模板的展示效果如下:

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号