Написание алгоритмов и псевдокода в LaTeX (пакет algorithm2e)
Почему algorithm2e — стандарт для научных публикаций
При написании дипломных работ по программной инженерии, диссертаций и статей в IEEE/ACM ключевые вычислительные методы принято представлять не длинными листингами кода и не громоздкими рисунками, а в виде компактного псевдокода. Пакет algorithm2e — признанный эталон академической верстки алгоритмов.
В отличие от пакетов для вывода листингов исходного кода с кириллицей, algorithm2e ориентирован именно на математическую абстракцию алгоритма, обеспечивая строгую нумерацию строк и визуализацию вложенности условий.
Подключение и базовые опции: linesnumbered, ruled, vlined
Для подключения пакета добавьте в преамбулу строку с полезными опциями:
\usepackage[linesnumbered,ruled,vlined,algo2e]{algorithm2e}
Значение параметров:
linesnumbered— автоматическая нумерация строк псевдокода слева;ruled— оформление заголовка алгоритма элегантными горизонтальными разделительными линиями сверху и снизу;vlined— отрисовка аккуратных вертикальных линий, наглядно показывающих границы вложенности условий и циклов;algo2e— предотвращение конфликтов имен окружений с другими пакетами.
Псевдокод в LaTeX algorithm2e: условия If-Else, циклы While и For
Создавая псевдокод в latex algorithm2e, вы используете интуитивные макросы для управляющих конструкций:
- Условие:
\eIf{условие}{блок тогда}{блок иначе}или\If{условие}{блок}; - Цикл с предусловием:
\While{условие}{тело цикла}; - Цикл со счетчиком:
\For{i = 1 \KwTo n}{тело цикла}; - Итератор по коллекции:
\ForEach{элемент \textbf{in} коллекция}{тело}; - Возврат значения:
\Return результат\;(обратите внимание на обязательную точку с запятой\;в конце строки).
Русификация ключевых слов (Вход, Выход, Если, Иначе)
По умолчанию ключевые слова выводятся на английском языке. Чтобы локализовать их по ГОСТу для русскоязычной работы, задайте переопределения в преамбуле:
\SetKwInOut{Input}{Вход}
\SetKwInOut{Output}{Выход}
\SetKw{KwTo}{до}
\SetKw{KwDownTo}{вниз до}
\SetKwIF{If}{ElseIf}{Else}{если}{то}{иначе если}{иначе}{конец если}
\SetKwFor{While}{пока}{выполнять}{конец цикла}
\SetKwFor{For}{для}{выполнять}{конец цикла}
\SetKwFor{ForEach}{для каждого}{выполнять}{конец цикла}
\SetKw{Return}{вернуть}
Оформление алгоритма блок схема LaTeX: законченный пример
Полный код алгоритма поиска кратчайшего пути Дейкстры. Качественное оформление алгоритма блок схема latex в виде псевдокода выглядит строго и профессионально:
\begin{algorithm}[htbp]
\caption{Алгоритм Дейкстры для поиска кратчайшего пути}
\label{algo:dijkstra}
\Input{Взвешенный граф $G = (V, E)$, стартовая вершина $s \in V$}
\Output{Массив кратчайших расстояний $dist[u]$ для всех $u \in V$}
\ForEach{$u \in V$}{
$dist[u] \leftarrow \infty$;
$visited[u] \leftarrow \text{false}$;
}
$dist[s] \leftarrow 0$;
Инициализировать очередь с приоритетами $Q$ парой $(0, s)$;
\While{$Q$ не пуста}{
Извлечь вершину $u$ с минимальным $dist[u]$ из $Q$;
\If{$visited[u]$}{
\textbf{continue};
}
$visited[u] \leftarrow \text{true}$;
\ForEach{соседней вершины $v$ для $u$ со стоимостью ребра $w$}{
\If{$dist[u] + w < dist[v]$}{
$dist[v] \leftarrow dist[u] + w$;
Добавить $(dist[v], v)$ в очередь $Q$;
}
}
}
\Return $dist$;
\end{algorithm}
Чтобы читатель мог перейти к описанию алгоритма из текста работы по клику на его номер, настройте систему кликабельных перекрестных ссылок в PDF.
Практические советы
Точка с запятой \; в конце строки
В algorithm2e команда \; не просто печатает точку с запятой, а завершает логическую строку и осуществляет перенос на новую строку с сохранением нумерации.
Компиляция в Labkeeper
В онлайн-редакторе Labkeeper вы можете мгновенно отлаживать сложные многостраничные алгоритмы без конфликтов стилевых файлов.