我正在尝试使用 latex 和 algorithm2e 包向我的文章中添加伪代码。
不幸的是,我的一个算法的格式很糟糕。
这是我的乳胶文件:
\documentclass[12pt,a4paper,oneside]
\usepackage{url}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{amssymb,amsmath,amsthm}
%\\usepackage{graphics}
\usepackage{graphicx}
\usepackage[linesnumbered,french]{algorithm2e}
\usepackage{hyperref}
\usepackage{cite}
\usepackage{float}
\begin{document}
\begingroup
\fontsize{10pt}{12pt}\selectfont
\begin{algorithm}[H]
\Entree{Un Graphe G, Ensemble de Sommets X}
\Sortie{Liste de sommets: ensemble dominant minimum}
\caption{Algorithme pour tout type de graphe}
\Si{$taille(X) = 0$}{\State \Retour\{\}}
\State Choisir v tel que $d(v) =1$ ou $2$\\
\Si {v est vide}{
\State X0 = sommets dans X avec degré 0\\
\Si {taille$(X0)$ = taille$(X)$}{
\State \Retour X0
}
\State X1 = X - X0\\
\State X2 = ensemble des sous-ensembles de X1 de taille $1$ à $3 *$ taille$(X1)/8$\\
\State \Retour {l'ensemble de X2 qui est MDS de X1}
}
\Si{$d(v) = 1$}{
\Si {v \in V - X}
{\State \Retour mdsForArbitraryGraph $(G-\{v\}, X-\{v\})$}
\SinonSi {$v \in X$}
{\State choisir w tel que w et le voisin unique de v\\
\State \Retour mdsForArbitraryGraph$(G-\{v, w\}, X-N[w])$}
}
\SinonSi {$d(v) = 2$}{
\State {u1, u2 = voisins de v}\\
\Si {v \in V-X}{
\State C1 = mdsForArbitraryGraph $(G-\{u1, v\}, X-N[u1])$\\
\State C2 = mdsForArbitraryGraph $(G-\{u1, v, u2\}, X-\{u1, u2\})$\\
\State C3 = mdsForArbitraryGraph $(G-\{v\}, X)$\\
\State \Retour min (C1, C2, C3)
}
\SinonSi {v \in X}{
\State D1 = mdsForArbitraryGraph $(G-\{u1, v\}, X-N [u1])$\\
\State D2 = mdsForArbitraryGraph $(G-\{u1, v, u2\}, X-\{u1, v, u2\})$\\
\State D3 = mdsForArbitraryGraph $(G-\{u2, v\}, X-N[u2])$\\
\State \Retour min (D1, D2, D3)\\
}
}
\end{algorithm}
\endgroup
\end{document}
以下是错误的输出:
有人能检查一下为什么我得到这种错误的格式吗?
我们可以看到伪代码的结尾并没有以结束语句(法语中为 fin)来完成。
谢谢
答案1
中没有\State
命令algorithm2e
。您还遇到了几个缺少的错误$
;我修复了一些,但您应该检查整个内容以对变量进行统一处理。
我也习惯\small
将大件物品放在一页纸上。移除后[H]
,它就可以真正地浮动了。
\documentclass[12pt,a4paper,oneside]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}
\usepackage{amssymb,amsmath,amsthm}
\usepackage[linesnumbered,french]{algorithm2e}
\begin{document}
\begin{algorithm}
\small
\Entree{Un Graphe G, Ensemble de Sommets X}
\Sortie{Liste de sommets: ensemble dominant minimum}
\caption{Algorithme pour tout type de graphe}
\Si{$taille(X) = 0$}{\Retour\{\}}
Choisir $v$ tel que $d(v) =1$ ou $2$\\
\Si {$v$ est vide}{
X0 = sommets dans X avec degré 0\\
\Si {taille$(X0)$ = taille$(X)$}{
\Retour X0
}
X1 = X - X0\\
X2 = ensemble des sous-ensembles de X1 de taille $1$ à $3 *$ taille$(X1)/8$\\
\Retour {l'ensemble de X2 qui est MDS de X1}
}
\Si{$d(v) = 1$}{
\Si {$v \in V - X$}
{\Retour mdsForArbitraryGraph $(G-\{v\}, X-\{v\})$}
\SinonSi {$v \in X$}
{choisir w tel que w et le voisin unique de v\\
\Retour mdsForArbitraryGraph$(G-\{v, w\}, X-N[w])$}
}
\SinonSi {$d(v) = 2$}{
{u1, u2 = voisins de v}\\
\Si {$v \in V-X$}{
C1 = mdsForArbitraryGraph $(G-\{u1, v\}, X-N[u1])$\\
C2 = mdsForArbitraryGraph $(G-\{u1, v, u2\}, X-\{u1, u2\})$\\
C3 = mdsForArbitraryGraph $(G-\{v\}, X)$\\
\Retour min (C1, C2, C3)
}
\SinonSi {$v \in X$}{
D1 = mdsForArbitraryGraph $(G-\{u1, v\}, X-N [u1])$\\
D2 = mdsForArbitraryGraph $(G-\{u1, v, u2\}, X-\{u1, v, u2\})$\\
D3 = mdsForArbitraryGraph $(G-\{u2, v\}, X-N[u2])$\\
\Retour min (D1, D2, D3)\\
}
}
\end{algorithm}
\end{document}