我想知道如何才能最好地编写这个算法,我多次尝试下面的实现,但它并没有生成我想要的算法。
\begin{algorithm} %[H]
\caption{message}
\label{alg:ALG1}
\begin{flushleft}
\textbf{INPUT:} ce, tp_{av} $X$ \\
\textbf{OUTPUT:} message \textit{msg}
$U_{ce_{i}} \gets num(U)$ \\
$rs_{n} \gets [rs_{1},rs_{2},...,rs_{9} ]$ \\
$\delta \gets [0:10]$ \\
$\rho \gets [0:10000]$ \\
\end{flushleft}
\begin{algorithmic}[1]
\ForAll{$$x in \Omega$$}{
\IF{$rs_{n} > rs_{s}$}
\IF{$tp_{av,ce_{n}} > tp_{av,ce_{s}}$}
\ENDIF
\IF{$U_{ce_{n}} < 10 $} \\
\state $msg \gets \{$x, ce_{n}$ \}$
\ENDIF
\ELSIF{$$|rs_{n} - rs_{s}|$$ in $$\delta$$}{
\IF{$$tp_{av,cell_{n}} \geq tp_{av,ce_{s}}$$}
\ENDIF
\IF{$U_{ce_{n}} < 10 $} \\
$$ msg \gets \{x, ce_{n} \}$$
}
\ENDIF
\ELSIF{$$|rs_{n} - rs_{s}|$$ in $\delta$}{
\IF{$ |tp_{av,ce_{n}} - tp_{av,ce_{s}}|$ in $\rho$}
\ENDIF
\IF{$U_{ce_{n}} < 10 $} \\
\state $msg \gets \{x, ce_{n}\}$
}
\ENDIF
\ENDIF
}
\EndFor
\end{algorithmic}
\end{algorithm}
答案1
欢迎来到 TeX-LaTeX StackExchange!
通常你需要向人们提供尽可能多的信息
- 确切地知道你在什么条件下正在做什么/尝试什么(什么 TeX 引擎 - 例如,可能是 TeX 或 pdfTeX 或 LuaTeX 或 XeTeX,什么格式 - 例如,可能是 LaTeX 或纯 TeX 或 ConTeXt,什么文档类,你正在使用什么包等;版本号有时也很有趣),
- 能够在与问题相同的条件下重现问题,
- 获得有关控制台/.log 文件中可能出现的警告/错误消息文本的外观的精确信息。
事情往往不会顺利。因此,你不需要提交一个最小工作示例,但你需要提交一个最小可重复示例。
使用 LaTeX,您可以通过逐渐消除重现错误消息/错误行为所不需要的一切来做到这一点。
您是一位新贡献者,这是您在这里的第一个问题,所以我会做一些猜测。;-)
如果我的猜测是错误的,请考虑编辑您的问题并更精确地表述问题,不仅提供一段代码,还提供所需的一切(\documentclass{...}
,,,,等),以便读者可以尝试重现您遇到的问题只需将提供的代码复制粘贴到他们自己的机器上的新文件中并运行 TeX/LaTeX/ConTeXt/⟨无论使用什么 TeX 引擎和格式进行编译⟩。\usepackage{...}
\begin{document}
\end{document}
您没有透露您使用什么软件包来排版算法。
我假设您使用 LaTeX 2ε 软件包算法和算法伪代码。
您可以通过 重新定义关键字\algrenewcommand
。
对于 LaTeX 宏的名称,字母大小写很重要。例如
,宏\IF
、\ELSIF
和\ENDIF
未\state
由包 algpseudocode 定义,但宏\If
、\ElsIf
和有定义。\EndIf
\State
我不完全明白您想要输入什么算法,但以下内容可能是查看 LaTeX 代码的起点:
\documentclass{article}
\usepackage{amsmath}
\usepackage{algorithm}
\usepackage{algpseudocode}
% The phrases usually are in lowercase letters.
% Let's redefine them in uppercase letters:
\algrenewcommand\algorithmicend{\textbf{END}}
\algrenewcommand\algorithmicdo{\textbf{DO}}
\algrenewcommand\algorithmicwhile{\textbf{WHILE}}
\algrenewcommand\algorithmicfor{\textbf{FOR}}
\algrenewcommand\algorithmicforall{\textbf{FOR ALL}}
\algrenewcommand\algorithmicloop{\textbf{LOOP}}
\algrenewcommand\algorithmicrepeat{\textbf{REPEAT}}
\algrenewcommand\algorithmicuntil{\textbf{UNTIL}}
\algrenewcommand\algorithmicprocedure{\textbf{PROCEDURE}}
\algrenewcommand\algorithmicfunction{\textbf{FUNCTION}}
\algrenewcommand\algorithmicif{\textbf{IF}}
\algrenewcommand\algorithmicthen{\textbf{THEN}}
\algrenewcommand\algorithmicelse{\textbf{ELSE}}
\algrenewcommand\algorithmicrequire{\textbf{REQUIRE:}}
\algrenewcommand\algorithmicensure{\textbf{ENSURE:}}
\algrenewcommand\algorithmicreturn{\textbf{RETURN}}
\algrenewcommand\textproc{\textsc}
\DeclareMathOperator{\num}{num}
\begin{document}
\begin{algorithm} %[H]
\caption{message}%
\label{alg:ALG1}%
\textbf{\rlap{INPUT:}\hphantom{OUTPUT: }}$ce$, $tp_{av}X$ \\
\textbf{OUTPUT: }\vtop{%
\hbox{message \vtop{%
\hbox{$msg$ $U_{ce_{i}} \gets \num(U)$}%
\hbox{$rs_{n} \gets [rs_{1},rs_{2},...,rs_{9} ]$}%
\hbox{$\delta \gets [0:10]$}%
\hbox{$\rho \gets [0:10000]$}%
}%
}%
}%
\smallskip\hrule\smallskip
\begin{algorithmic}[1]
\ForAll{$x \in \Omega$}
\If{$rs_{n} > rs_{s}$}
\If{$tp_{av,ce_{n}} > tp_{av,ce_{s}}$}
\EndIf
\If{$U_{ce_{n}} < 10 $}
\State $msg \gets \{x, ce_{n} \}$
\EndIf
\ElsIf{$|rs_{n} - rs_{s}| \in \delta$}
\If{$tp_{av,cell_{n}} \geq tp_{av,ce_{s}}$}
\EndIf
\If{$U_{ce_{n}} < 10 $}
\State $msg \gets \{x, ce_{n} \}$
\EndIf
\ElsIf{$|rs_{n} - rs_{s}| \in \delta$}
\If{$ |tp_{av,ce_{n}} - tp_{av,ce_{s}}|$ in $\rho$}
\EndIf
\If{$U_{ce_{n}} < 10 $}
\State $msg \gets \{x, ce_{n}\}$
\EndIf
\EndIf
\EndFor
\end{algorithmic}
\end{algorithm}
\end{document}