Basic-scientific-research-series-1-Pseudo-code-specifications
本文最后更新于:2023年6月19日 晚上
记录一下科研论文中的伪代码。
转自:https://shuzang.github.io/2021/pseudocode-specification/
伪代码规范
伪代码是一种接近自然语言的算法描述形式,其目的是在不涉及具体实现(各种编程语言)的情况下将算法的流程和含义清楚的表达出来,因此它没有一个统一的规范,有的仅仅是在长期的实践过程中形成的一些约定俗成的表达样式。下图是一个简单的例子1,但已经包含了大多数主要元素
首先需要一个标题来描述整个算法,一般还会有一个与之一起的编号。在上图中,算法的标题为「Acesscontrol algorithm flow」,编号为「Algorithm 1」。标题与编号一般位于算法顶部,但也有人放在底部,编号多按全文的算法总数进行索引,但也可以按章节分别进行索引。
其次,在正式的算法流之前需要声明输入和输出。通常使用关键字 Input 和 Output 来声明,但也有人使用关键字 Data 和 Result。
顺序、选择与循环结构是算法的主体。通常,不同的程序块使用缩进来保持结构清晰,但也有不少人使用垂直连接线进行进一步划分,如上图。另外,和编程语言类似,伪代码中的选择和循环使用 if-then-else、while-do 和 for-do 等关键字和结构来描述2,举例如下,其中,每个程序块结束的 end 关键字有人选择写,也有人选择不写。
算法流程结构
赋值操作一般使用左箭头「<—」表示。A[i] 用来表示数组 A 的第 i 个元素,A[1…j] 则表示下标从 1 到 j 的子数组;函数调用使用函数名+传入参数的形式;返回值使用 return 关键字,这些都和常规编程语言相同。需要注意的是,未声明而使用的变量都可以视为算法内的局部变量,如果是全局变量则需要进行解释,可以在上下文中,也可以使用注释;注释的形式也和传统语言相同,使用 // 或 /……/。
算法整体通常使用三线框包围,但也有少部分人使用一个完整的框。
伪代码的语句一般不需要在末尾使用分号,但行首通常会添加行号。
2. LaTeX 包
latex 书写伪代码主要有三种排版格式:algorithm+algorithmic、algorithm+algorithmicx 以及 algorithm2e3。我们使用algorithm2e,它提供了垂直连接线,可以去掉 end 关键字,而且写起来更像编程语言,用着非常舒服。
引入 algorithm2e 包使用如下语句
1 |
|
几个重要的 options 如下
- ruled:让标题显示在上面,默认会显示到最下面;
- vlined:默认启用垂直连接线;
- linesnumbered:让算法显示行号,不包括 input 和 output 部分;
- noend:程序块结束不打印 end。
常用命令如下4
一个官方的例子如下
1 |
|
渲染后的样式如下
注:当前算法选然后条件语句会带有下划线,主要是因为同时使用了 \ulem 包,产生了冲突,去掉该包即可
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!