一、相关基础知识
1)本文编写伪代码调用的是'algorithmic'+'algorithm'宏包,而Latex也存在其他的宏包,像是'algorithm2e'等宏包(更加灵活的排版方式,更多的控制选项和更加优美的输出效果,以后有机会会去介绍)。
2)一个标准的LaTex文档由如下部分组成:
1、导言区(Preamble):在'\begin{document}'命令之前的部分。导言区可以设置文档的格式和样式,以及引入其他必要的宏包和设置(document class、packages、commands等)。
2、正文(Body):在'\begin{document}'和'\end{document}'命令之间的部分。正文部分包括文档的实际内容,如段落、章节、公式、表格、图片等
3、参考文献(Bibliography):一个单独的部分,包含在文档中引用的所有来源完整引用信息。
4、附录(Appendix):额外信息的补充,像是代码、公式推导等
5、注释(Comments):对文档的说明和解释,一般不会被编译。
二、Example
1)如下给出一个简单的例子,以引出本文的重点——基于Latex的伪代码书写(仅解释伪代码相关内容,其余部分请自行查找相关资料)
\documentclass{article}
\usepackage{algorithm}
\usepackage{algorithmic}
\title{Pseudocode}
\author{Huang}
\date{\today}
\begin{document}
\maketitle
\begin{algorithm}
\caption{Example Pseudocode}
\end{algorithm}
\end{document}
algorithm 和 algorithmic
在正文部分引入本文所需要编写的伪代码部分,如下所示:
2)上文我们构造了一个algorithm块,接下来会去其中嵌入algorithmic块,实现一些变量之前的基本运算。如下所示:
\begin{algorithm}
\caption{Example Pseudocode}
\begin{algorithmic}
\STATE $x\gets0$
\end{algorithmic}
\end{algorithm}
编译之后的结果如下所示:
3)代码常见的判断结构(if-else)和循环结构(for, while)是最常见的算法逻辑,下文通过Latex实现一个简单的判断结构:
\IF{$x\leq 0$}
\STATE $x\gets x+1$
\ELSIF{$ x\geq 1$}
\STATE $x\gets x-1$
\ELSE
\STATE $x\gets 2x$
\ENDIF
生成伪代码如下所示:
这里可以发现我们只需要'\IF'和'\ENDIF'限制判断结构的范围即可。
3)类似于if判断结构,我们可以编写相关的循环结构(for、forall等循环结构体):
\begin{algorithmic}
% while循环
\WHILE{$ x\leq 0$}
\STATE $x\gets x+1$
\ENDWHILE
\end{algorithmic}
\begin{algorithmic}
% for循环
\FOR{$ x\leq 0$}
\STATE $x\gets x+2$
\ENDFOR
\end{algorithmic}
\begin{algorithmic}
% forall循环
\FORALL{$ x\leq 0$}
\STATE $x\gets x+3$
\ENDFOR
\end{algorithmic}
生成的伪代码如下所示:
algorithmic
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
之后在算法段书写如下代码:
\begin{algorithmic}
\ENSURE{$y$}
\REQUIRE{$x$}
% while循环
\WHILE{$ x\leq 0$}
\STATE $y\gets x+1$
\ENDWHILE
\end{algorithmic}
生成我们想要的伪代码:
至此,我们可以在Overleaf上基于Latex实现简单的伪代码编写,仍需多多练习!!!!