我有这个算法,正如你所见,它太长了,无法放在一张 A4 纸上。我曾在这里,但出现错误,提示我 \AND、\OR 和 \TO 未定义。如果您能指导我如何将其拆分为两个页面,并设置一个标题和标签,我将不胜感激。有没有办法在保持这种结构的同时,让波斯语文本右对齐?
\documentclass[a4paper,11pt]{book}
\usepackage{amsthm,amssymb}
\usepackage{unicode-math}
\usepackage[pagebackref=false,colorlinks,linkcolor=red,citecolor=red]{hyperref}
\usepackage{graphicx}
\graphicspath{{./images/}}
\usepackage{fancyhdr}
\usepackage{tikz}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
\node[shape=circle,draw,inner sep=2pt] (char) {#1};}}
\usepackage{csquotes}
\usepackage{setspace}
\usepackage{algorithm}
\makeatletter
\renewcommand\thealgorithm{\thechapter.\arabic{algorithm}}
\@addtoreset{algorithm}{chapter}
\makeatother
\usepackage{algorithmic}
\usepackage{optidef}
\usepackage{enumitem}
\usepackage[square,comma,sort&compress,numbers]{natbib}
\usepackage{multirow}
\usepackage{array}
\usepackage{tabularray}
\usepackage[perpagefootnote=on]{bidi}
\usepackage{xepersian}
\settextfont[Scale=1]{XB Zar}
\setlatintextfont[Scale=1]{Times New Roman}
\setdigitfont[Scale=1]{XM Yekan}\begin{document}\begin{algorithm}[h]
\caption{\textbf{استخراج یک شبکهٔ لایهای}}
\label{alg:3-6-e}
\begin{algorithmic}
\begin{LTR}
\STATE \textbf{procedure }LAYER$(G_{L},l,\text{stpath});$
\STATE \rl{
$\rbrace$فرایند، شبکهٔ لایهای $G_{L}=\left(V_{L},E_{L}\right)$ با $l$ لایه را از شبکهٔ $G$ با طرح جریان $F$ استخراج میکند. اگر هیچ مسیر $s-t$ ای وجود نداشته باشد، \lr{stpath} مقدار \lr{false} میگیرد.$\lbrace$}
\STATE INITIALIZATION:
\STATE $\text{stpath}\leftarrow\text{true};$
\FORALL{$v\in V$}
\STATE\textbf{begin}
\STATE $\text{label}(v)\leftarrow-1;$
\STATE $\text{succ}(v)\leftarrow\varnothing;$\hspace{5mm}$\lbrace$\rl{جانشینان و سلفهای گرهها در شبکهٔ لایهای}$\rbrace$
\STATE $\text{pred}(v)\leftarrow\varnothing$
\ENDFOR
\STATE $V_{1}\leftarrow\lbrace s\rbrace;$
\STATE $\text{label}(s)\leftarrow1;$
\STATE $E_{L}\leftarrow\varnothing;$\hspace{5mm}$\lbrace$\rl{$E_{L}$ مجموعهٔ یالهای شبکهٔ لایهای}$\rbrace$
\STATE $i\leftarrow1;$\hspace{5mm}$\lbrace$\rl{عدد لایهٔ کنونی $i$ است}$\rbrace$
\STATE ITERATION: \hspace{10mm}$\lbrace$\rl{پیمایش پیشرو و برچسبزنی}$\rbrace$
\WHILE{$(V_{i}\neq\varnothing)\,\,$\AND$\,\,(\text{label}(t)=-1)$}
\STATE\textbf{begin}
\STATE $V_{i+1}\leftarrow\varnothing;$
\FORALL{$x\in V_{i}$}
\STATE\textbf{begin}
\FOR{\rl{هر یال خروجی $(x,y)$ از $x$، اگر $f_{x y}<c_{x y}$ و برای هر یال ورودی $(y,x)$ به $x$ اگر $f_{y x}>0\,\,$}\AND $\,\,(\text{label}(y)=-1\,\,$\OR$\,\,\text{label}(y)=i+1)$}
\STATE\textbf{begin}
\STATE $V_{i+1}\leftarrow V_{i+1}\cup\lbrace y\rbrace;$
\STATE $\text{label}(y)\leftarrow i+1;$
\STATE $\text{succ}(x)\leftarrow\text{succ}(x)\cup\lbrace y\rbrace;$
\STATE $\text{pred}(y)\leftarrow\text{pred}(y)\cup\lbrace x\rbrace;$
\STATE $E_{L}\leftarrow E_{L}\cup\lbrace\left(x,y\right)\rbrace$
\ENDFOR
\ENDFOR
\STATE $i\leftarrow i+1$
\ENDWHILE
\STATE $l\leftarrow i;$
\STATE ITERATION$:$\hspace{10mm}$\lbrace$\rl{پیمایش پسرو و هرسکردن}
\IF{$\text{label}(t)=-1$}
\STATE $\text{stpath}\leftarrow\text{false}$\hspace{5mm}\rl{خروج}
\STATE \rl{چون مسیر مفیدی از $s$ به $t$ وجود ندارد، برچسبزنی ممکن نیست}
\STATE\textbf{else}
\STATE\rl{یالها و گرههای پراکنده \lr{stray} را حذف کن}
\STATE\textbf{begin}
\STATE $j\leftarrow i;$
\WHILE{$j\neq1$}
\STATE\textbf{begin}
\FORALL{$w\in V_{j}$}
\IF{$\left(\text{succ}(u)=\varnothing\right)\,\,$\AND$\,\,\left(w\neq t\right)$}
\STATE \textbf{begin}
\FORALL{$x\in\text{pred}(w)$}
\STATE \textbf{begin}
\STATE $E_{L}\leftarrow E_{L}-\left\{\left(x,w\right)\right\};$
\STATE $\text{succ}(x)\leftarrow\text{succ}(x)-\left\{w\right\}$
\ENDFOR
\STATE $V_{j}\leftarrow V_{j}-\left\{w\right\};$
\STATE $\text{pred}(w)\leftarrow\varnothing$
\ENDIF
\STATE $j\leftarrow j-1$
\ENDFOR
\ENDWHILE
\ENDIF
\end{LTR}
\end{algorithmic}
\end{algorithm}
\end{document}
答案1
我提供三种解决方案:
- 算法分成两个浮点数
- 具有自动分页的非浮动算法
- 带有手动分页符的非浮动算法
算法分为两个浮点数
结构如下。完整文档请参见下文。
\usepackage{algcompatible}
\newcommand{\AND}{\textbf{and}}
\newcommand{\OR}{\textbf{or}}
\newcommand{\TO}{\textbf{to}}
\usepackage{algorithm}% for the float 'algorithm'
\begin{document}
\begin{algorithm}
\caption{...}\label{...}
\begin{algorithmic}
...
\algstore{myalg}
\end{algorithmic}
\end{algorithm}
\begin{algorithm}
\caption{...}\label{...}
\begin{algorithmic}
\algrestore{myalg}
...
\end{algorithmic}
\end{algorithm}
具有自动分页符的非浮动算法
结构如下。完整文档请参见下文。
\usepackage{algcompatible}
\newcommand{\AND}{\textbf{and}}
\newcommand{\OR}{\textbf{or}}
\newcommand{\TO}{\textbf{to}}
\begin{document}
\begin{algorithmic}
...
\end{algorithmic}
带有手动分页符的非浮动算法
结构如下。完整文档请参见下文。
\usepackage{algcompatible}
\newcommand{\AND}{\textbf{and}}
\newcommand{\OR}{\textbf{or}}
\newcommand{\TO}{\textbf{to}}
\begin{document}
\begin{algorithmic}
...
\algstore{myalg}
\end{algorithmic}
\newpage
\begin{algorithmic}
\algrestore{myalg}
...
\end{algorithmic}
示例:算法拆分成两个浮点数
\documentclass[a4paper,11pt]{book}
\usepackage{amsthm,amssymb}
\usepackage{unicode-math}
\usepackage{algcompatible}
\usepackage{algorithm}
\makeatletter
\renewcommand\thealgorithm{\thechapter.\arabic{algorithm}}
\@addtoreset{algorithm}{chapter}
\makeatother
\newcommand{\AND}{\textbf{and}}
\newcommand{\OR}{\textbf{or}}
\newcommand{\TO}{\textbf{to}}
\usepackage{xepersian}
\settextfont[Scale=1]{XB Zar}
\setlatintextfont[Scale=1]{Times New Roman}
\setdigitfont[Scale=1]{XM Yekan}
\begin{document}
\begin{algorithm}
\caption{\textbf{استخراج یک شبکهٔ لایهای}}
\label{alg:3-6-e-1}
\begin{algorithmic}
\begin{LTR}
\STATE \textbf{procedure }LAYER$(G_{L},l,\text{stpath});$
\STATE \rl{
$\rbrace$فرایند، شبکهٔ لایهای $G_{L}=\left(V_{L},E_{L}\right)$ با $l$ لایه را از شبکهٔ $G$ با طرح جریان $F$ استخراج میکند. اگر هیچ مسیر $s-t$ ای وجود نداشته باشد، \lr{stpath} مقدار \lr{false} میگیرد.$\lbrace$}
\STATE INITIALIZATION:
\STATE $\text{stpath}\leftarrow\text{true};$
\FORALL{$v\in V$}
\STATE\textbf{begin}
\STATE $\text{label}(v)\leftarrow-1;$
\STATE $\text{succ}(v)\leftarrow\varnothing;$\hspace{5mm}$\lbrace$\rl{جانشینان و سلفهای گرهها در شبکهٔ لایهای}$\rbrace$
\STATE $\text{pred}(v)\leftarrow\varnothing$
\ENDFOR
\STATE $V_{1}\leftarrow\lbrace s\rbrace;$
\STATE $\text{label}(s)\leftarrow1;$
\STATE $E_{L}\leftarrow\varnothing;$\hspace{5mm}$\lbrace$\rl{$E_{L}$ مجموعهٔ یالهای شبکهٔ لایهای}$\rbrace$
\STATE $i\leftarrow1;$\hspace{5mm}$\lbrace$\rl{عدد لایهٔ کنونی $i$ است}$\rbrace$
\STATE ITERATION: \hspace{10mm}$\lbrace$\rl{پیمایش پیشرو و برچسبزنی}$\rbrace$
\WHILE{$(V_{i}\neq\varnothing)\,\,$\AND$\,\,(\text{label}(t)=-1)$}
\STATE\textbf{begin}
\STATE $V_{i+1}\leftarrow\varnothing;$
\FORALL{$x\in V_{i}$}
\STATE\textbf{begin}
\FOR{\rl{هر یال خروجی $(x,y)$ از $x$، اگر $f_{x y}<c_{x y}$ و برای هر یال ورودی $(y,x)$ به $x$ اگر $f_{y x}>0\,\,$}\AND $\,\,(\text{label}(y)=-1\,\,$\OR$\,\,\text{label}(y)=i+1)$}
\STATE\textbf{begin}
\STATE $V_{i+1}\leftarrow V_{i+1}\cup\lbrace y\rbrace;$
\STATE $\text{label}(y)\leftarrow i+1;$
\STATE $\text{succ}(x)\leftarrow\text{succ}(x)\cup\lbrace y\rbrace;$
\STATE $\text{pred}(y)\leftarrow\text{pred}(y)\cup\lbrace x\rbrace;$
\STATE $E_{L}\leftarrow E_{L}\cup\lbrace\left(x,y\right)\rbrace$
\ENDFOR
\ENDFOR
\STATE $i\leftarrow i+1$
\ENDWHILE
\algstore{myalg}
\end{LTR}
\end{algorithmic}
\end{algorithm}
\begin{algorithm}
\caption{\textbf{استخراج یک شبکهٔ لایهای}}
\label{alg:3-6-e-2}
\begin{algorithmic}
\begin{LTR}
\algrestore{myalg}
\STATE $l\leftarrow i;$
\STATE ITERATION$:$\hspace{10mm}$\lbrace$\rl{پیمایش پسرو و هرسکردن}
\IF{$\text{label}(t)=-1$}
\STATE $\text{stpath}\leftarrow\text{false}$\hspace{5mm}\rl{خروج}
\STATE \rl{چون مسیر مفیدی از $s$ به $t$ وجود ندارد، برچسبزنی ممکن نیست}
\STATE\textbf{else}
\STATE\rl{یالها و گرههای پراکنده \lr{stray} را حذف کن}
\STATE\textbf{begin}
\STATE $j\leftarrow i;$
\WHILE{$j\neq1$}
\STATE\textbf{begin}
\FORALL{$w\in V_{j}$}
\IF{$\left(\text{succ}(u)=\varnothing\right)\,\,$\AND$\,\,\left(w\neq t\right)$}
\STATE \textbf{begin}
\FORALL{$x\in\text{pred}(w)$}
\STATE \textbf{begin}
\STATE $E_{L}\leftarrow E_{L}-\left\{\left(x,w\right)\right\};$
\STATE $\text{succ}(x)\leftarrow\text{succ}(x)-\left\{w\right\}$
\ENDFOR
\STATE $V_{j}\leftarrow V_{j}-\left\{w\right\};$
\STATE $\text{pred}(w)\leftarrow\varnothing$
\ENDIF
\STATE $j\leftarrow j-1$
\ENDFOR
\ENDWHILE
\ENDIF
\end{LTR}
\end{algorithmic}
\end{algorithm}
\end{document}
示例:具有自动分页符的非浮动算法
由于有多余的字体,因此用来xelatex
排版示例代码。
\documentclass[a4paper,11pt]{book}
\usepackage{amsthm,amssymb}
\usepackage{unicode-math}
\usepackage{algcompatible}
\newcommand{\AND}{\textbf{and}}
\newcommand{\OR}{\textbf{or}}
\newcommand{\TO}{\textbf{to}}
\usepackage{xepersian}
\settextfont[Scale=1]{XB Zar}
\setlatintextfont[Scale=1]{Times New Roman}
\setdigitfont[Scale=1]{XM Yekan}
\begin{document}
\begin{algorithmic}
\begin{LTR}
\STATE \textbf{procedure }LAYER$(G_{L},l,\text{stpath});$
\STATE \rl{
$\rbrace$فرایند، شبکهٔ لایهای $G_{L}=\left(V_{L},E_{L}\right)$ با $l$ لایه را از شبکهٔ $G$ با طرح جریان $F$ استخراج میکند. اگر هیچ مسیر $s-t$ ای وجود نداشته باشد، \lr{stpath} مقدار \lr{false} میگیرد.$\lbrace$}
\STATE INITIALIZATION:
\STATE $\text{stpath}\leftarrow\text{true};$
\FORALL{$v\in V$}
\STATE\textbf{begin}
\STATE $\text{label}(v)\leftarrow-1;$
\STATE $\text{succ}(v)\leftarrow\varnothing;$\hspace{5mm}$\lbrace$\rl{جانشینان و سلفهای گرهها در شبکهٔ لایهای}$\rbrace$
\STATE $\text{pred}(v)\leftarrow\varnothing$
\ENDFOR
\STATE $V_{1}\leftarrow\lbrace s\rbrace;$
\STATE $\text{label}(s)\leftarrow1;$
\STATE $E_{L}\leftarrow\varnothing;$\hspace{5mm}$\lbrace$\rl{$E_{L}$ مجموعهٔ یالهای شبکهٔ لایهای}$\rbrace$
\STATE $i\leftarrow1;$\hspace{5mm}$\lbrace$\rl{عدد لایهٔ کنونی $i$ است}$\rbrace$
\STATE ITERATION: \hspace{10mm}$\lbrace$\rl{پیمایش پیشرو و برچسبزنی}$\rbrace$
\WHILE{$(V_{i}\neq\varnothing)\,\,$\AND$\,\,(\text{label}(t)=-1)$}
\STATE\textbf{begin}
\STATE $V_{i+1}\leftarrow\varnothing;$
\FORALL{$x\in V_{i}$}
\STATE\textbf{begin}
\FOR{\rl{هر یال خروجی $(x,y)$ از $x$، اگر $f_{x y}<c_{x y}$ و برای هر یال ورودی $(y,x)$ به $x$ اگر $f_{y x}>0\,\,$}\AND $\,\,(\text{label}(y)=-1\,\,$\OR$\,\,\text{label}(y)=i+1)$}
\STATE\textbf{begin}
\STATE $V_{i+1}\leftarrow V_{i+1}\cup\lbrace y\rbrace;$
\STATE $\text{label}(y)\leftarrow i+1;$
\STATE $\text{succ}(x)\leftarrow\text{succ}(x)\cup\lbrace y\rbrace;$
\STATE $\text{pred}(y)\leftarrow\text{pred}(y)\cup\lbrace x\rbrace;$
\STATE $E_{L}\leftarrow E_{L}\cup\lbrace\left(x,y\right)\rbrace$
\ENDFOR
\ENDFOR
\STATE $i\leftarrow i+1$
\ENDWHILE
\STATE $l\leftarrow i;$
\STATE ITERATION$:$\hspace{10mm}$\lbrace$\rl{پیمایش پسرو و هرسکردن}
\IF{$\text{label}(t)=-1$}
\STATE $\text{stpath}\leftarrow\text{false}$\hspace{5mm}\rl{خروج}
\STATE \rl{چون مسیر مفیدی از $s$ به $t$ وجود ندارد، برچسبزنی ممکن نیست}
\STATE\textbf{else}
\STATE\rl{یالها و گرههای پراکنده \lr{stray} را حذف کن}
\STATE\textbf{begin}
\STATE $j\leftarrow i;$
\WHILE{$j\neq1$}
\STATE\textbf{begin}
\FORALL{$w\in V_{j}$}
\IF{$\left(\text{succ}(u)=\varnothing\right)\,\,$\AND$\,\,\left(w\neq t\right)$}
\STATE \textbf{begin}
\FORALL{$x\in\text{pred}(w)$}
\STATE \textbf{begin}
\STATE $E_{L}\leftarrow E_{L}-\left\{\left(x,w\right)\right\};$
\STATE $\text{succ}(x)\leftarrow\text{succ}(x)-\left\{w\right\}$
\ENDFOR
\STATE $V_{j}\leftarrow V_{j}-\left\{w\right\};$
\STATE $\text{pred}(w)\leftarrow\varnothing$
\ENDIF
\STATE $j\leftarrow j-1$
\ENDFOR
\ENDWHILE
\ENDIF
\end{LTR}
\end{algorithmic}
\end{document}
示例:带有手动分页符的非浮动算法
由于有多余的字体,因此用来xelatex
排版示例代码。
\documentclass[a4paper,11pt]{book}
\usepackage{amsthm,amssymb}
\usepackage{unicode-math}
\usepackage{algcompatible}
\newcommand{\AND}{\textbf{and}}
\newcommand{\OR}{\textbf{or}}
\newcommand{\TO}{\textbf{to}}
\usepackage{xepersian}
\settextfont[Scale=1]{XB Zar}
\setlatintextfont[Scale=1]{Times New Roman}
\setdigitfont[Scale=1]{XM Yekan}
\begin{document}
\begin{algorithmic}
\begin{LTR}
\STATE \textbf{procedure }LAYER$(G_{L},l,\text{stpath});$
\STATE \rl{
$\rbrace$فرایند، شبکهٔ لایهای $G_{L}=\left(V_{L},E_{L}\right)$ با $l$ لایه را از شبکهٔ $G$ با طرح جریان $F$ استخراج میکند. اگر هیچ مسیر $s-t$ ای وجود نداشته باشد، \lr{stpath} مقدار \lr{false} میگیرد.$\lbrace$}
\STATE INITIALIZATION:
\STATE $\text{stpath}\leftarrow\text{true};$
\FORALL{$v\in V$}
\STATE\textbf{begin}
\STATE $\text{label}(v)\leftarrow-1;$
\STATE $\text{succ}(v)\leftarrow\varnothing;$\hspace{5mm}$\lbrace$\rl{جانشینان و سلفهای گرهها در شبکهٔ لایهای}$\rbrace$
\STATE $\text{pred}(v)\leftarrow\varnothing$
\ENDFOR
\STATE $V_{1}\leftarrow\lbrace s\rbrace;$
\STATE $\text{label}(s)\leftarrow1;$
\STATE $E_{L}\leftarrow\varnothing;$\hspace{5mm}$\lbrace$\rl{$E_{L}$ مجموعهٔ یالهای شبکهٔ لایهای}$\rbrace$
\STATE $i\leftarrow1;$\hspace{5mm}$\lbrace$\rl{عدد لایهٔ کنونی $i$ است}$\rbrace$
\STATE ITERATION: \hspace{10mm}$\lbrace$\rl{پیمایش پیشرو و برچسبزنی}$\rbrace$
\WHILE{$(V_{i}\neq\varnothing)\,\,$\AND$\,\,(\text{label}(t)=-1)$}
\STATE\textbf{begin}
\STATE $V_{i+1}\leftarrow\varnothing;$
\FORALL{$x\in V_{i}$}
\STATE\textbf{begin}
\FOR{\rl{هر یال خروجی $(x,y)$ از $x$، اگر $f_{x y}<c_{x y}$ و برای هر یال ورودی $(y,x)$ به $x$ اگر $f_{y x}>0\,\,$}\AND $\,\,(\text{label}(y)=-1\,\,$\OR$\,\,\text{label}(y)=i+1)$}
\STATE\textbf{begin}
\STATE $V_{i+1}\leftarrow V_{i+1}\cup\lbrace y\rbrace;$
\STATE $\text{label}(y)\leftarrow i+1;$
\STATE $\text{succ}(x)\leftarrow\text{succ}(x)\cup\lbrace y\rbrace;$
\STATE $\text{pred}(y)\leftarrow\text{pred}(y)\cup\lbrace x\rbrace;$
\STATE $E_{L}\leftarrow E_{L}\cup\lbrace\left(x,y\right)\rbrace$
\ENDFOR
\ENDFOR
\STATE $i\leftarrow i+1$
\ENDWHILE
\algstore{myalg}
\end{LTR}
\end{algorithmic}
\newpage
\begin{algorithmic}
\begin{LTR}
\algrestore{myalg}
\STATE $l\leftarrow i;$
\STATE ITERATION$:$\hspace{10mm}$\lbrace$\rl{پیمایش پسرو و هرسکردن}
\IF{$\text{label}(t)=-1$}
\STATE $\text{stpath}\leftarrow\text{false}$\hspace{5mm}\rl{خروج}
\STATE \rl{چون مسیر مفیدی از $s$ به $t$ وجود ندارد، برچسبزنی ممکن نیست}
\STATE\textbf{else}
\STATE\rl{یالها و گرههای پراکنده \lr{stray} را حذف کن}
\STATE\textbf{begin}
\STATE $j\leftarrow i;$
\WHILE{$j\neq1$}
\STATE\textbf{begin}
\FORALL{$w\in V_{j}$}
\IF{$\left(\text{succ}(u)=\varnothing\right)\,\,$\AND$\,\,\left(w\neq t\right)$}
\STATE \textbf{begin}
\FORALL{$x\in\text{pred}(w)$}
\STATE \textbf{begin}
\STATE $E_{L}\leftarrow E_{L}-\left\{\left(x,w\right)\right\};$
\STATE $\text{succ}(x)\leftarrow\text{succ}(x)-\left\{w\right\}$
\ENDFOR
\STATE $V_{j}\leftarrow V_{j}-\left\{w\right\};$
\STATE $\text{pred}(w)\leftarrow\varnothing$
\ENDIF
\STATE $j\leftarrow j-1$
\ENDFOR
\ENDWHILE
\ENDIF
\end{LTR}
\end{algorithmic}
\end{document}
答案2
确定分割点:在算法中找到一个自然的断点,以便将其分成两部分。这可能是一个主要步骤或一组相关操作之后。
使用 \ContinuedFloat:LaTeX 在 caption 包中提供了 \ContinuedFloat 命令,用于跨多页继续浮动(如图形和算法)。此命令有助于跨页面保持相同的图形或算法编号。
修改您的 LaTeX 代码:
第一部分(第 1 页):像往常一样使用 \begin{algorithm} 开始您的算法,并使用 \end{algorithm} 在您选择的分割点结束它。
第二部分(第 2 页):在下一页再次使用 \begin{algorithm} 开始算法的第二部分,但这次在 \begin{algorithm} 之后添加 \ContinuedFloat。从上次中断的地方继续算法,并以 \end{algorithm} 结束。
确保标签和标题一致:\ContinuedFloat 命令可确保算法编号和标签在各个页面上保持一致。您可以对两个部分使用相同的标题,也可以对其进行轻微修改(例如,“算法 1:我的算法(续)”)以表示连续性。
可选:分页符:如果您需要在算法的两个部分之间手动插入分页符,请使用 \clearpage 命令。这可确保第一部分在一页上结束,第二部分从下一页的顶部开始。为了排版示例代码,特别是由于包含其他字体,必须使用 XeLaTeX。
\documentclass[a4paper,11pt]{book}
\usepackage{amsthm,amssymb}
\usepackage{unicode-math}
\usepackage[pagebackref=false,colorlinks,linkcolor=red,citecolor=red]{hyperref}
\usepackage{graphicx}
\graphicspath{{./images/}}
\usepackage{fancyhdr}
\usepackage{tikz}
\newcommand*\circled[1]{\tikz[baseline=(char.base)] {
\node[shape=circle,draw,inner sep=2pt] (char) {#1};}}
\usepackage{csquotes}
\usepackage{setspace}
\usepackage{algorithm}
\makeatletter
\renewcommand\thealgorithm{\thechapter.\arabic{algorithm}}
\@addtoreset{algorithm}{chapter}
\makeatother
\usepackage{algorithmic}
\usepackage{optidef}
\usepackage{enumitem}
\usepackage[square,comma,sort&compress,numbers]{natbib}
\usepackage{multirow}
\usepackage{array}
\usepackage{tabularray}
\usepackage{caption} %use it before bidi
\usepackage[perpagefootnote=on]{bidi}
\usepackage{xepersian}
\settextfont[Scale=1]{XB Zar}
\setlatintextfont[Scale=1]{Times New Roman}
\setdigitfont[Scale=1]{XM Yekan}\begin{document}\begin{algorithm}[h]
\caption{\textbf{استخراج یک شبکهٔ لایهای}}
\label{alg:3-6-e}
\begin{algorithmic}
\begin{LTR}
\STATE \textbf{procedure }LAYER$(G_{L},l,\text{stpath});$
\STATE \rl{
$\rbrace$فرایند، شبکهٔ لایهای $G_{L}=\left(V_{L},E_{L}\right)$ با $l$ لایه را از شبکهٔ $G$ با طرح جریان $F$ استخراج میکند. اگر هیچ مسیر $s-t$ ای وجود نداشته باشد، \lr{stpath} مقدار \lr{false} میگیرد.$\lbrace$}
\STATE INITIALIZATION:
\STATE $\text{stpath}\leftarrow\text{true};$
\FORALL{$v\in V$}
\STATE\textbf{begin}
\STATE $\text{label}(v)\leftarrow-1;$
\STATE $\text{succ}(v)\leftarrow\varnothing;$\hspace{5mm}$\lbrace$\rl{جانشینان و سلفهای گرهها در شبکهٔ لایهای}$\rbrace$
\STATE $\text{pred}(v)\leftarrow\varnothing$
\ENDFOR
\STATE $V_{1}\leftarrow\lbrace s\rbrace;$
\STATE $\text{label}(s)\leftarrow1;$
\STATE $E_{L}\leftarrow\varnothing;$\hspace{5mm}$\lbrace$\rl{$E_{L}$ مجموعهٔ یالهای شبکهٔ لایهای}$\rbrace$
\STATE $i\leftarrow1;$\hspace{5mm}$\lbrace$\rl{عدد لایهٔ کنونی $i$ است}$\rbrace$
\STATE ITERATION: \hspace{10mm}$\lbrace$\rl{پیمایش پیشرو و برچسبزنی}$\rbrace$
\WHILE{$(V_{i}\neq\varnothing)\,\,$\AND$\,\,(\text{label}(t)=-1)$}
\STATE\textbf{begin}
\STATE $V_{i+1}\leftarrow\varnothing;$
\FORALL{$x\in V_{i}$}
\STATE\textbf{begin}
\FOR{\rl{هر یال خروجی $(x,y)$ از $x$، اگر $f_{x y}<c_{x y}$ و برای هر یال ورودی $(y,x)$ به $x$ اگر $f_{y x}>0\,\,$}\AND $\,\,(\text{label}(y)=-1\,\,$\OR$\,\,\text{label}(y)=i+1)$}
\STATE\textbf{begin}
\STATE $V_{i+1}\leftarrow V_{i+1}\cup\lbrace y\rbrace;$
\STATE $\text{label}(y)\leftarrow i+1;$
\STATE $\text{succ}(x)\leftarrow\text{succ}(x)\cup\lbrace y\rbrace;$
\STATE $\text{pred}(y)\leftarrow\text{pred}(y)\cup\lbrace x\rbrace;$
\STATE $E_{L}\leftarrow E_{L}\cup\lbrace\left(x,y\right)\rbrace$
\ENDFOR
\ENDFOR
\STATE $i\leftarrow i+1$
\ENDWHILE
\end{LTR}
\end{algorithmic}
\end{algorithm}
\begin{algorithm}
\ContinuedFloat % To continue the same algorithm numbering
\caption{Your Algorithm Title (cont.)} % Optional: Modify caption if needed
\begin{algorithmic}
\begin{LTR}
\STATE $l\leftarrow i;$
\STATE ITERATION$:$\hspace{10mm}$\lbrace$\rl{پیمایش پسرو و هرسکردن}
\IF{$\text{label}(t)=-1$}
\STATE $\text{stpath}\leftarrow\text{false}$\hspace{5mm}\rl{خروج}
\STATE \rl{چون مسیر مفیدی از $s$ به $t$ وجود ندارد، برچسبزنی ممکن نیست}
\STATE\textbf{else}
\STATE\rl{یالها و گرههای پراکنده \lr{stray} را حذف کن}
\STATE\textbf{begin}
\STATE $j\leftarrow i;$
\WHILE{$j\neq1$}
\STATE\textbf{begin}
\FORALL{$w\in V_{j}$}
\IF{$\left(\text{succ}(u)=\varnothing\right)\,\,$\AND$\,\,\left(w\neq t\right)$}
\STATE \textbf{begin}
\FORALL{$x\in\text{pred}(w)$}
\STATE \textbf{begin}
\STATE $E_{L}\leftarrow E_{L}-\left\{\left(x,w\right)\right\};$
\STATE $\text{succ}(x)\leftarrow\text{succ}(x)-\left\{w\right\}$
\ENDFOR
\STATE $V_{j}\leftarrow V_{j}-\left\{w\right\};$
\STATE $\text{pred}(w)\leftarrow\varnothing$
\ENDIF
\STATE $j\leftarrow j-1$%
\ENDFOR
\ENDWHILE
\ENDIF
\end{LTR}
\end{algorithmic}
\end{algorithm}
\end{document}