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

您所在的位置:网站首页 伪代码书写规范 5. LaTeX 算法伪代码基本格式排版

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

2023-12-01 01:48| 来源: 网络整理| 查看: 265

LaTeX 算法伪代码基本格式排版 1、算法排版初体验

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

\usepackage{algorithmic} \usepackage{algorithm}

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

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

\begin{algorithm}[!h] \caption{algorithm of SUM} \label{alg:AOA} \renewcommand{\algorithmicrequire}{\textbf{Input:}} \renewcommand{\algorithmicensure}{\textbf{Output:}} \begin{algorithmic}[1] \REQUIRE $A$, $B$, $C$ %%input \ENSURE EEEEE %%output \STATE AAAAA \WHILE{$A=B$} \STATE BBBBB \ENDWHILE \FOR{each $i \in [1,10]$} \IF {$C = 0$} \STATE CCCCC \ELSE \STATE DDDDD \ENDIF \ENDFOR \RETURN EEEEE \end{algorithmic} \end{algorithm}

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

在这里插入图片描述

2、算法排版基本用法 1. 参数与语法说明

1、算法排版框架

\begin{algorithm}[!t] ... \end{algorithm}

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

2、标题与标签

\caption{Algor of ABC} \label{alg:AOA}

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

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

3、设置输入和输出

\renewcommand{\algorithmicrequire}{\textbf{Input:}} \renewcommand{\algorithmicensure}{\textbf{Output:}}

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

\algorithmicrequire \algorithmicensure

在这里插入图片描述

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

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

在这里插入图片描述

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

4、算法内容框架

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

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

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

在这里插入图片描述

5、输入输出

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

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

6、算法内容

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

在这里插入图片描述

\STATE AAAAA \WHILE{$A=B$} \STATE BBBBB \ENDWHILE \FOR{each $i \in [1,10]$} \IF {$C = 0$} \STATE CCCCC \ELSE \STATE DDDDD \ENDIF \ENDFOR \RETURN EEEEE

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

2. 算法的引用

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

As show in algorithm \ref{alg:AOA}

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

在这里插入图片描述

3. 算法改名

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

在这里插入图片描述

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

\floatname{algorithm}{Contract} \begin{algorithm}[!h] \caption{Cont of ABC} \label{alg:AOA} \begin{algorithmic}[1] \STATE AAAAA \end{algorithmic} \end{algorithm} 3、算法常用语句

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

1. IF 条件判断语句

IF 条件判断的结构如下:

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

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

在这里插入图片描述

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

\IF {条件} \STATE 语句1 \ENDIF

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

\IF {条件1} \STATE 语句1 \ELSE \IF{条件2} \STATE 语句2 \ELSE \STATE 语句3 \ENDIF \ENDIF 2. FOR 循环语句

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

\FOR{循环条件} \STATE 循环语句 \ENDFOR

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

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

执行结果如下:

在这里插入图片描述

3. while 循环语句

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

\WHILE{条件} \STATE 循环语句 \ENDWHILE

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

\begin{algorithm}[!h] \caption{Sum} \label{alg:Sum} \begin{algorithmic}[1] \STATE $s = 0$, $i = 1$ \WHILE{$s


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3