Latex 算法Algorithm

时间:2022-05-21 11:44:48

在计算机科学当中,论文当中经常需要排版算法。相信大家在读论文中也看见了很多排版精美的算法。本文就通过示例来简要介绍一下 algorithms 束的用法。该束主要提供了两个宏包,包含两种进行算法排版的环境,algorithm 和 algorithmic 。

这两个宏包是被设计成同时一起使用的,但也可以根据用户的特殊需要分开使用。其中 algorithm 宏包主要是为算法提供一个浮动体环境,也就是说,在 LaTeX 中算法和图像,表一样,都是浮动体。algorithmic 宏包主要是用来完成算法的描述功能,该宏包提供了我们描述算法常用的几种结构命令,如条件结构、循环结构等。下面我们就通过示例来对 algorithm 的使用进行讲解。

Algorithmic  环境

Algorithmic 宏包,为描述算法提供了程序设计中的所有常用结构的表示,如:判断 (IF) ,循环  (WHILE, FOR, LOOP), 输入(REQUIRE) ,输出(ENSURE)等。在这里需要注意的是,所有 algorithmic 提供的命令都是全大写。下面,我们通过一个简单程序的算法,来将所有的算法描述都用上。通过求从1到n的整数和的算法实例来说明 algorithmic 语法。

TeX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
\begin{algorithmic}
\REQUIRE $n \geq 1$                  %输入条件
\ENSURE $Sum = 1 + \cdots + n$       %输出
\STATE $Sum \leftarrow 0$            %\STATE 命名演示
\IF {$n < 1$}                        %条件语句
\PRINT {Input Errow}                 %打印语句
\ELSE
    \FOR {$i = 0$ to n}          %FOR循环结构
    \STATE $Sum = Sum + i$\\
    \STATE $i = i + 1$
    \ENDFOR
\ENDIF
\RETURN Sum
\end{algorithmic}

以上就是一个算法的示例了其生成文档效果如图所示

Latex 算法Algorithm

这里用的 REQUIRE 命令和 ENSURE 命令和我们日常用的有不同,我们还可以使用重定义命令,将输出变味我们常见的 Input 和 Output 形式,下面是命令:

TeX

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

Algorithm 环境

Algorithm 环境主要作用是将代码段变成浮动体,浮动体一方面能防止代码超出页面范围,另外一方面也方面最后生成和图表目录相似的算法列表目录。也能通过标记,方便在文章其它地方引用。还是以上面的例子为例

TeX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
\begin{algorithm}
\caption{计算从1到n的和}              %标题
\label{alg1}                        %标记算法,方便在其它地方引用
\begin{algorithmic}
\REQUIRE$n
\geq 1$                  %输入条件
\ENSURE$Sum
= 1 + \cdots + n$      %输出
\STATE$Sum
\leftarrow 0$            %\STATE
命名演示
\IF{$n
< 1$}                        %条件语句
\PRINT{InputErrow}                %打印语句
\ELSE
    \FOR{$i
= 0$ton}          %FOR循环结构
    \STATE$Sum
= Sum + i$\\
    \STATE$i
= i + 1$
    \ENDFOR
\ENDIF
\RETURNSum
\end{algorithmic}
\end{algorithm}

该断代码生成文档如下图

Latex 算法Algorithm