LaTeX算法排版例子
转自http://blog.csdn.net/lqhbupt/article/details/8723478
1)首先在导言区加入语句:
- \usepackage{algorithm}
- \usepackage{algorithmic}
2)例1
- \begin{algorithm}
- \caption{A}
- \label{alg:A}
- \begin{algorithmic}
- \STATE {set $r(t)=x(t)$}
- \REPEAT
- \STATE set $h(t)=r(t)$
- \REPEAT
- \STATE set $h(t)=r(t)$
- \UNTIL{B}
- \UNTIL{B}
- \end{algorithmic}
- \end{algorithm}
排版结果如下:
3)例2
- \begin{algorithm}
- \caption{Calculate $y = x^n$}
- \label{alg1}
- \begin{algorithmic}
- \REQUIRE $n \geq 0 \vee x \neq 0$
- \ENSURE $y = x^n$
- \STATE $y \Leftarrow 1$
- \IF{$n < 0$}
- \STATE $X \Leftarrow 1 / x$
- \STATE $N \Leftarrow -n$
- \ELSE
- \STATE $X \Leftarrow x$
- \STATE $N \Leftarrow n$
- \ENDIF
- \WHILE{$N \neq 0$}
- \IF{$N$ is even}
- \STATE $X \Leftarrow X \times X$
- \STATE $N \Leftarrow N / 2$
- \ELSE[$N$ is odd]
- \STATE $y \Leftarrow y \times X$
- \STATE $N \Leftarrow N - 1$
- \ENDIF
- \ENDWHILE
- \end{algorithmic}
- \end{algorithm}
排版结果如下:
4)\renewcommand 改变现有命令的定义。在导言区加入如下语句:
- \renewcommand{\algorithmicrequire}{ \textbf{Input:}} %Use Input in the format of Algorithm
- \renewcommand{\algorithmicensure}{ \textbf{Output:}} %UseOutput in the format of Algorithm
使得原来软件包中定义的命令\REQUIRE和\ENSURE显示为Input:和Output:
一个例子如下:
- \begin{algorithm}[htb]
- \caption{ Framework of ensemble learning for our system.}
- \label{alg:Framwork}
- \begin{algorithmic}[1] %这个1 表示每一行都显示数字
- \REQUIRE ~~\\ %算法的输入参数:Input
- The set of positive samples for current batch, $P_n$;\\
- The set of unlabelled samples for current batch, $U_n$;\\
- Ensemble of classifiers on former batches, $E_{n-1}$;
- \ENSURE ~~\\ %算法的输出:Output
- Ensemble of classifiers on the current batch, $E_n$;
- \STATE Extracting the set of reliable negative and/or positive samples $T_n$ from $U_n$ with help of $P_n$;
- \label{ code:fram:extract }%对此行的标记,方便在文中引用算法的某个步骤
- \STATE Training ensemble of classifiers $E$ on $T_n \cup P_n$, with help of data in former batches;
- \label{code:fram:trainbase}
- \STATE $E_n=E_{n-1}\cup E$;
- \label{code:fram:add}
- \STATE Classifying samples in $U_n-T_n$ by $E_n$;
- \label{code:fram:classify}
- \STATE Deleting some weak classifiers in $E_n$ so as to keep the capacity of $E_n$;
- \label{code:fram:select}
- \RETURN $E_n$; %算法的返回值
- \end{algorithmic}
- \end{algorithm}
排版结果如下:
5)最后一个例子
- \begin{algorithm}[h]
- \caption{An example for format For \& While Loop in Algorithm}
- \begin{algorithmic}[1]
- \FOR{each $i \in [1,9]$}
- \STATE initialize a tree $T_{i}$ with only a leaf (the root);\
- \STATE $T=T \cup T_{i};$\
- \ENDFOR
- \FORALL {$c$ such that $c \in RecentMBatch(E_{n-1})$}
- \label{code:TrainBase:getc}
- \STATE $T=T \cup PosSample(c)$;
- \label{code:TrainBase:pos}
- \ENDFOR
- \FOR{$i=1$; $i<n$; $i++$ }
- \STATE $//$ Your source here;
- \ENDFOR
- \FOR{$i=1$ to $n$}
- \STATE $//$ Your source here;
- \ENDFOR
- \STATE $//$ Reusing recent base classifiers.
- \label{code:recentStart}
- \WHILE {$(|E_n| \leq L_1 )and( D \neq \phi)$}
- \STATE Selecting the most recent classifier $c_i$ from $D$;
- \STATE $D=D-c_i$;
- \STATE $E_n=E_n+c_i$;
- \ENDWHILE
- \label{code:recentEnd}
- \end{algorithmic}
- \end{algorithm}
排版结果如下: