알고리즘: 수학 모드에서는 \end{list} 명령이 유효하지 않습니다.

알고리즘: 수학 모드에서는 \end{list} 명령이 유효하지 않습니다.

방금 Latex를 시작했는데 알고리즘에 약간 어려움을 겪고 있습니다. 여기에 내가 보여주려고 하는 알고리즘이 있습니다. 하지만 첫 번째 ENDFOR 줄에서 다음 오류가 발생합니다.

라텍스 오류: Command \end{list} invalid in math mode 이게 무슨 문제인지 모르겠습니다.

도움을 주셔서 감사합니다.

\begin{algorithm}
\caption{Algorithme de Dijkstra}
\begin{algorithmic}[1]
\REQUIRE Un graphe $G$
\REQUIRE Un noeud source $s$
\ENSURE Les plus court chemins de s vers tout les autres noeuds de G $A$
\FORALL{$v \in V[G]$}
    \STATE $d[v] \leftarrow +\infty$ 
    \STATE $previous[v] \leftarrow undefined
\ENDFOR
\STATE $d[s] \leftarrow 0
\STATE $S \leftarrow empty set
\STATE $Q \leftarrow $V[G]
\Loop Q is not an empty set 
    \STATE $u \leftarrow  Extract_Min(Q)
    \STATE $S \leftarrow  S union $u
    \ForAll{edge (u,v) outgoing from u}  
    \IF{d[u] + w(u,v) < d[v]}
        \STATE d[v] \leftarrow d[u] + w(u,v)
        \STATE previous[v] := u 
    \ENDIF
    \EndFor
\EndLoop
\end{algorithmic}
\end{algorithm}

답변1

수학 공식을 구분하는 데 일관성이 없습니다. 예를 들어 두 번째 \STATE줄에서는 수학 공식을 닫지 않고 엽니다.

나는 알고리즘을 보다 일관되게 만들려고 노력했습니다. \LOOP및 은 \Loop동일하지 않습니다(후자는 에 정의되어 있지 않음 algorithmic). 다른 패키지 세트를 사용하는 경우 알려 주시기 바랍니다.

\documentclass{article}
\usepackage{amsmath}
\usepackage{algorithm}
\usepackage{algorithmic}

\newcommand{\kw}[1]{\textrm{#1}}

\begin{document}
\begin{algorithm}
\caption{Algorithme de Dijkstra}
\begin{algorithmic}[1]
\REQUIRE Un graphe $G$
\REQUIRE Un noeud source $s$
\ENSURE Les plus court chemins de $s$ vers tout les autres noeuds de $G$ $A$
\FORALL{$v \in V[G]$}
    \STATE $d[v] \leftarrow +\infty$ 
    \STATE $\kw{previous}[v] \leftarrow \kw{undefined}$
\ENDFOR
\STATE $d[s] \leftarrow 0$
\STATE $S \leftarrow \kw{empty set}$
\STATE $Q \leftarrow V[G]$
\LOOP 
    \STATE $Q$ is not an empty set 
    \STATE $u \leftarrow  \kw{Extract}_{\kw{Min}}(Q)$
    \STATE $S \leftarrow  S \cup \{u\}$
    \FORALL{edge $(u,v)$ outgoing from $u$}  
    \IF{$d[u] + w(u,v) < d[v]$}
        \STATE $d[v] \leftarrow d[u] + w(u,v)$
        \STATE $\kw{previous}[v] := u$ 
    \ENDIF
    \ENDFOR
\ENDLOOP
\end{algorithmic}
\end{algorithm}
\end{document}

여기에 이미지 설명을 입력하세요

관련 정보