---
# System prepended metadata

title: 2021年度 知的システム<br>第6回：線形計画問題(5) 単体法
tags: [OptMech-2021, ' lecture']

---

---
lang: ja
tags: OptMech-2021, lecture
---
# 2021年度 知的システム<br>第6回：線形計画問題(5) 単体法
[ポータルへ戻る](https://hackmd.io/@nagae/OptMech_2021)
<div style="text-align: center">

このページへは以下のQRコードまたはURLからアクセスできます：
![](https://i.imgur.com/y8QhUgn.png =200x)
<code style="font-size:20pt">https://hackmd.io/@nagae/OptMech_2021-Ch05</code>
</div>

# 辞書の更新とリア充問題の最適解
リア充問題の**等式標準形**：
$$
\begin{alignat}{6}
\displaystyle \min_{x_{1}, x_{2}, r_{1}, r_{2}, r_{3}} \quad -z&=-&x_{1} &-& 2x_{2} &-&0\\
\text{s.t.} \quad 
-r_{1}&=&x_{1} &+& x_{2} &-& 8 \\
-r_{2}&=&2x_{1}&+& x_{2} &-& 2 \\
-r_{3}&=&2x_{1}&+&3x_{2} &-& 18 \\
&& x_{1}&,&x_{2} &,& r_{1}&, &r_{2}&,&r_{3}&\geq& 0
\end{alignat}
\qquad
\begin{array}{c|cc|c}
& x_{1} & x_{2} & -1\\
\hline
-r_{1} & 1 & 1 & 8\\
-r_{2} & -2 & 1 & 2 \\
-r_{3} & 2 & 3 & 18\\
\hline
-z & -1 & -2 & 0
\end{array}
$$
に対して，以下の2回の**ピボット演算**を行う:
1. **説明変数**$x_{2}$と**被説明変数**$r_{2}$を入れ替える
2. **説明変数**$x_{1}$と**被説明変数**$r_{3}$を入れ替える

このとき，**辞書**は下記：
$$
\begin{array}{c|cc|c}
& x_{1} & x_{2} & -1\\
\hline
-r_{1} & 1 & 1 & 8\\
-r_{2} & -2 & 1* & 2 \\
-r_{3} & 2 & 3 & 18\\
\hline
-z & -1 & -2 & 0
\end{array}
\rightarrow
\begin{array}{c|cc|c}
& x_{1} & r_{2} & -1\\
\hline
-r_{1} & 3 & -1 & 6\\
-x_{2} & -2 & 1 & 2 \\
-r_{3} & 8* & -3 & 12\\
\hline
-z & -5 & 2 & 4
\end{array}
\rightarrow
\begin{array}{c|cc|c}
& r_{3} & r_{2} & -1\\
\hline
-r_{1} & \frac{3}{8} & \frac{1}{8} & \frac{3}{2}\\
-x_{2} & \frac{1}{4} & \frac{1}{4} & 5 \\
-x_{1} & \frac{1}{8} & -\frac{3}{8} & \frac{3}{2}\\
\hline
-z & \frac{5}{8} & \frac{1}{8} & \frac{23}{2}
\end{array}
$$
のように変化する．最後の辞書は，**説明変数**を$\mathbf{u}=(r_{3}, r_{2})$，**被説明変数**を$\mathbf{v}=(r_{1}, x_{2}, x_{1})$としている．これに対応した**等式標準形**の線形計画問題は以下のように表される：
$$
\begin{alignat}{6}
\displaystyle \min_{r_{3}, r_{2}, r_{1}, x_{2}, x_{1}} \quad -z&=&\tfrac{5}{8}r_{3} &+& \tfrac{1}{8}r_{2} &-&\tfrac{23}{2}\\
\text{s.t.} \quad 
-r_{1}&=&\tfrac{3}{8}r_{3} &+&\tfrac{1}{8}r_{2}  &-& \tfrac{3}{2} \\
-x_{2}&=&\tfrac{1}{4}r_{3}&+& \tfrac{1}{4}r_{2} &-& 5 \\
-x_{1}&=&\tfrac{1}{8}r_{3}&-&\tfrac{3}{8}r_{2} &-& \tfrac{3}{2} \\
&& r_{3}&,&r_{2} &,&r_{1}&, x_{2}, x_{1}\geq 0
\end{alignat}
$$

この問題の目的関数の最初の2項 $\tfrac{5}{8}r_{3} + \tfrac{1}{8}r_{2}$ は， $(r_{3}, r_{2})$ の ==**係数がいずれも正**== なので，$(r_{3}, r_{2})$を小さくするほど小さくなる．

いま，$r_{3} = r_{2}=0$としてみよう．このとき，等式制約から，ただちに残る変数が$(r_{1}, x_{2}, x_{1}) = \left(\tfrac{3}{2}, 5, \tfrac{3}{2}\right)$と求められる．等式制約の ==**右辺定数がいずれも非負**== であるから，$(r_{3}, r_{2} | r_{1}, x_{2}, x_{1})=\left(0, 0\left| \tfrac{3}{2}, 5, \tfrac{3}{2}\right.\right)$は**実行可能**である．

$r_{2}, r_{3}$が非負である限り目的関数が$-z=-\frac{23}{2}$よりも小さくなることはないから，この解は**最適解**である．結局のところ，もとの問題の**最適解**および**最適値**は，以下のように求められる:
- **最適解**: $(r_{3}, r_{2} | r_{1}, x_{2}, x_{1})=\left(0, 0 \left| \tfrac{3}{2}, 5, \tfrac{3}{2}\right.\right)$,
- **最適値**: $z = \tfrac{23}{2}$.

この結果を一般化してみよう．

# 辞書の更新と標準最大化問題の最適解
**標準最大化問題**に対して，ある**辞書**
$$
\begin{array}{c|c|c}
& \mathbf{u}^{\top} & -1  \\
\hline
-\mathbf{v} & \hat{\mathbf{A}} & \hat{\mathbf{b}} \\
\hline
-z & - \hat{\mathbf{c}}^{\top} & \hat{\zeta}
\end{array}
$$
が与えられた時， ==**$\hat{\mathbf{b}} \geq \hat{\mathbf{0}}$ かつ$-\hat{\mathbf{c}} \geq \mathbf{0}$**== ならば，$(\mathbf{v}|\mathbf{u}) = (\hat{\mathbf{b}}|\mathbf{0})$ は，対応する **等式標準形**:
\begin{alignat}{3}
\min_{\mathbf{u}, \mathbf{v}} 
&& -\hat{\mathbf{c}}^{\top} \mathbf{u} - \hat{\zeta} &= - z\\
\text{s.t.} 
&& \hat{\mathbf{A}} \mathbf{u} - \hat{\mathbf{b}} &= - \mathbf{v} \\
&& \mathbf{u}, \mathbf{v} &\geq \mathbf{0}
\end{alignat}
の**最適解**であり，その**最適値**は$-z = -\hat{\zeta}$ である．


従って，ある**標準最大化**問題:
$$
\max_{\mathbf{x}} \left\{
z = \mathbf{c}^{\top} \mathbf{x} \left|
\mathbf{A} \mathbf{x} \leq \mathbf{b}, \mathbf{x} \geq \mathbf{0}
\right.
\right\}
$$
の**最適解**を求める問題は，その**等式標準形**:
$$
\min_{\mathbf{x}, \mathbf{r}} \left\{
-z = \mathbf{c}^{\top} \mathbf{x} \left|
\mathbf{A} \mathbf{x} - \mathbf{b} = - \mathbf{r}, \quad \mathbf{x}, \mathbf{r} \geq \mathbf{0}
\right.
\right\}
$$
と**等価な辞書**:
$$
\begin{align}
-\mathbf{v} &= \hat{\mathbf{A}} \mathbf{u}-\hat{\mathbf{b}} \\
-z &= - \hat{\mathbf{c}}^{\top} \mathbf{u} - \hat{\zeta}
\end{align}
$$
の中で， ==**$\hat{\mathbf{b}} \geq \mathbf{0}$ かつ $-\hat{\mathbf{c}} \geq \mathbf{0}$**== なるものを求める問題に帰着する．

ここまで判ったことを整理すると，**標準最大化問題**の**等式標準形**に対して
1. **辞書**の一つは $(\mathbf{v}|\mathbf{u}) = (\mathbf{r}|\mathbf{x}), (\hat{\mathbf{A}}, \hat{\mathbf{b}}, \hat{\mathbf{c}}) = (\mathbf{A}, \mathbf{b}, \mathbf{c})$ で与えられる．
2. **等価な辞書**$(\hat{\mathbf{A}}, \hat{\mathbf{b}}, \hat{\mathbf{c}})$は**ピボット演算**によって生成できる．
3. そうした**辞書**の中で$\hat{\mathbf{b}} \geq \mathbf{0}$かつ$-\hat{\mathbf{c}} \geq \mathbf{0}$ なるものが(たまたま)見つかれば，もとの問題の**最適解**および**最適値**は, それぞれ, $(\mathbf{v}^{\ast}|\mathbf{u}^{\ast}) = (\hat{\mathbf{b}}|\mathbf{0})$および$z^{\ast} = \hat{\zeta}$ と求められる．

最適解が自明となる(i.e. $\hat{\mathbf{b}} \geq \mathbf{0}$かつ$-\hat{\mathbf{c}} \geq \mathbf{0}$)辞書に必ず辿りつく方法はないだろうか? その問いに答えるのが，次に述べる**単体法**である．

# 単体法
==**単体法 (simplex method)**== は米国の George B. Dantzig が1947 年に提案. 60年以上経過した今日でも**非常に有効な**線形計画問題の数値解法として広く利用されている. **単体法**では以下の用語が使われる:
- **被説明変数**$\mathbf{v}$ → ==**基底変数**==(basic variable) $\mathbf{x}_B$
- **説明変数**$\mathbf{u}$ → ==**非基底変数**==(nonbasic variable) $\mathbf{x}_N$
- **説明変数**を$\mathbf{0}$, **被説明変数**を$\hat{\mathbf{b}}$ とした解 → ==**基底解**==(basic solution)

**単体法**の特徴は以下のように整理される:
- **許容基底解**の1つから始め,(等式標準形の)目的関数の値が**減少**し, かつ**実行可能性**が担保されるように, **ピボット演算**によって次々と**辞書**を更新する.
- *目的関数の**係数が負***となる非基底変数の値を0から増やすため, 目的関数値は*必ず減少*
- **非基底変数**の増加に伴い,少なくとも1つの**基底変数**の値が減少するが, いずれかの**基底変数**が0となったところで**非基底変数**と*入れ替える*ため, **実行可能性**が担保される.

# リア充問題で単体法の基本的動作を確認
## 初期解
リア充問題の**等式標準形**と**辞書**:
$$
\begin{alignat}{6}
\displaystyle \min_{x_{1}, x_{2}, r_{1}, r_{2}, r_{3}} \quad -z&=-&x_{1} &-& 2x_{2} &-&0\\
\text{s.t.} \quad 
-r_{1}&=&x_{1} &+& x_{2} &-& 8 \\
-r_{2}&=&2x_{1}&+& x_{2} &-& 2 \\
-r_{3}&=&2x_{1}&+&3x_{2} &-& 18 \\
&& x_{1}&,&x_{2} &,& r_{1}&, &r_{2}&,&r_{3}&\geq& 0
\end{alignat}
\qquad
\begin{array}{c|cc|c}
& x_{1} & x_{2} & -1\\
\hline
-r_{1} & 1 & 1 & 8\\
-r_{2} & -2 & 1 & 2 \\
-r_{3} & 2 & 3 & 18\\
\hline
-z & -1 & -2 & 0
\end{array}
$$
- **基底変数** (被説明変数): $\mathbf{x}_{B} = (r_{1}, r_{2}, r_{3})$
- **非基底変数** (説明変数): $\mathbf{x}_{N} = (x_{1}, x_{2})$
- **基底解** : $(r_{1}, r_{2}, r_{3}| x_{1}, x_{2}) = (8, 2, 18|0,0)$
- 基底解での**目的関数値**: $-z = 0$

## 1回目の解の改訂
目的関数の **非基底変数** $x_{1}, x_{2}$についての係数は$(-1, -2)$で ==いずれも負==． 従って，$x_{1}, x_{2}$を0より大きくすることで， *現在の**基底解**より小さな目的関数値を実現できる*．

例えば，**非基底変数**のうち，$x_{1}=0$のままにして，$x_{2}$を0から増やすことを考えよう．**等式制約**から，$x_{2}$が変化することで，**基底変数**の値は，以下のように変化する：
$$
\begin{align}
\begin{split}
-r_{1} &= x_{2}-8\\
-r_{2} &= x_{2}-2\\
-r_{3} &= 3x_{2}-18
\end{split}
\Leftrightarrow
\begin{split}
r_{1} &= 8 - x_{2} &(x_{2}\leq 8)\\
r_{2} &= 2 - x_{2} &(x_{2}\leq 2) \\
r_{3} &= 18-3x_{2} \quad&(x_{2}\leq 6)
\end{split}
\end{align}
$$
ただし，括弧内は，対応する基底変数が非負であるために$x_{2}$が満たすべき条件を表している．

これより，非負制約$\mathbf{x}, \mathbf{r} \geq \mathbf{0}$ を担保するためには，$x_{2}$は2までしか増加させられない．$x_{2}=2$まで増加させた時, **基底変数**, **非基底変数**および**目的関数**は以下のように変化する：
||変更前|変更後|
|--|--|--|
|基底変数$(r_{1}, \color{red}{r_{2}}, r_{3})$|$(8,2,8)$|$(6,\color{red}{0}, 12)$|
|非基底変数$(x_{1}, \color{red}{x_{2}})$|$(0,0)$|$(0,\color{red}{2})$|
|目的関数 $-z$|0|$-4$|

変化後の解は，**基底変数**$r_{2}$と**非基底変数**$x_{2}$を入れ替えて得られる以下の**等価**な問題の**基底解**に他ならない．
$$
\begin{array}{c|cc|c}
& x_{1} & x_{2} & -1\\
\hline
-r_{1} & 1 & 1 & 8\\
-r_{2} & -2 & 1* & 2 \\
-r_{3} & 2 & 3 & 18\\
\hline
-z & -1 & -2 & 0
\end{array}
\rightarrow
\begin{array}{c|cc|c}
& x_{1} & r_{2} & -1\\
\hline
-r_{1} & 3 & -1 & 6\\
-x_{2} & -2 & 1 & 2 \\
-r_{3} & 8 & -3 & 12\\
\hline
-z & -5 & 2 & 4
\end{array}
$$
$$
\begin{alignat}{6}
\displaystyle \min_{x_{1}, r_{2}, r_{1}, x_{2}, r_{3}} \quad -z&=-&5x_{1} &+& 2r_{2} &-&4\\
\text{s.t.} \quad 
-r_{1}&=&3x_{1} &-& r_{2} &-& 6 \\
-x_{2}&=-&2x_{1}&+& r_{2} &-& 2 \\
-r_{3}&=&8x_{1}&-&3r_{2} &-& 12 \\
&& x_{1}&,&r_{2} &,& r_{1}&, &x_{2}&,&r_{3}&\geq& 0
\end{alignat}
$$

- **基底/非基底変数**: $\mathbf{x}_{B} = (r_{1}, \color{red}{x_{2}}, r_{3}), \mathbf{x}_{N} = (x_{1}, \color{red}{r_{2}})$
- **基底解**: $(r_{1}, x_{2}, r_{3} | x_{1}, r_{2}) = (6, 2, 12|0,0)$
- 基底解での**目的関数値**: $-z = -4$

## 2回目の解の改訂
新しく得られた問題の目的関数の **非基底変数** $x_{1}, r_{2}$の係数は$(-5, 2)$. ==係数が負である$x_{1}$== を0より大きくすることで，*現在の**基底解**より小さな目的関数値を実現できる*．

$r_{2}=0$のまま**非基底変数** $x_{1}$を0から増やすと，**等式制約**から，**基底変数**の値は，以下のように変化する：
$$
\begin{align}
\begin{split}
-r_{1} &= 3 x_{1}-6\\
-x_{2} &= -2 x_{1}-2\\
-r_{3} &= 8 x_{1}-12
\end{split}
\Leftrightarrow
\begin{split}
r_{1} &= 6 - 3x_{1} & (x_{1} \leq 2)\\
x_{2} &= 2 + 2x_{1} & (\text{$x_{1}$に上限なし})\\
r_{3} &= 12-8x_{1} \quad&(x_{1} \leq \tfrac{3}{2})
\end{split}
\end{align}
$$
ただし，括弧内は，対応する基底変数が非負であるために$x_{1}$が満たすべき条件を表している． なお，$x_{2}=2+2x_{1}$は$x_{1} \geq 0$なら常に非負であるため，$x_{1}$の ==上限を必要としない== ことに注意されたい． 

これより，非負制約を担保するためには，$x_{1}$は$\tfrac{3}{2}$までしか増加させられない．$x_{1}=\tfrac{3}{2}$まで増加させた時, **基底変数**, **非基底変数**および**目的関数** は，以下のように変化する：
||変更前|変更後|
|--|--|--|
|基底変数$(r_{1}, x_{2}, \color{red}{r_{3}})$|$(6,2,12)$|$(\tfrac{3}{2}, 5,\color{red}{0})$|
|非基底変数$(\color{red}{x_{1}}, r_{2})$|$(0,0)$|$(\color{red}{\tfrac{3}{2}}, 0)$|
|目的関数 $-z$|$-4$|$-\tfrac{23}{2}$|

変化後の解は，**基底変数**$r_{3}$と**非基底変数**$x_{1}$を入れ替えて得られる以下の**等価**な問題の**基底解**に他ならない．
$$
\begin{array}{c|cc|c}
& x_{1} & r_{2} & -1\\
\hline
-r_{1} & 3 & -1 & 6\\
-x_{2} & -2 & 1 & 2 \\
-r_{3} & 8* & -3 & 12\\
\hline
-z & -5 & 2 & 4
\end{array}
\rightarrow
\begin{array}{c|cc|c}
& r_{3} & r_{2} & -1\\
\hline
-r_{1} & -\frac{3}{8} & \frac{1}{8} & \frac{3}{2} \\
-x_{2} & \frac{1}{4} & \frac{1}{4} & 5 \\
-x_{1} & \frac{1}{8} & -\frac{3}{8} & \frac{3}{2}\\
\hline
-z & \frac{5}{8} & \frac{1}{8} & \frac{23}{2}
\end{array}
$$
$$
\begin{alignat}{6}
\displaystyle \min_{r_{3}, r_{2}, r_{1}, x_{2}, x_{1}} \quad -z&=&\tfrac{5}{8}r_{3} &+& \tfrac{1}{8}r_{2} &-&\tfrac{23}{2}\\
\text{s.t.} \quad 
-r_{1}&=-&\tfrac{3}{8} r_{3} &+& \tfrac{1}{8}r_{2} &-& \tfrac{3}{2} \\
-x_{2}&= &\tfrac{1}{4}r_{3}&+& \tfrac{1}{4}r_{2} &-& 5 \\
-x_{1}&=&\tfrac{1}{8} r_{3}&-&\tfrac{3}{8} r_{2} &-& \tfrac{3}{2} \\
&& r_{3}&,&r_{2} &,& r_{1}&, &x_{2}&,&x_{1}&\geq& 0
\end{alignat}
$$

- **基底/非基底変数**: $\mathbf{x}_{B} = (r_{1}, x_{2}, \color{red}{x_{1}}), \mathbf{x}_{N} = (\color{red}{r_{3}}, r_{2})$
- **基底解**: $(r_{1}, x_{2}, x_{1} | r_{3}, r_{2}) = (\tfrac{3}{2}, 5, \tfrac{3}{2}|0,0)$
- 基底解での**目的関数値**: $-z = -\tfrac{23}{2}$

## 収束判定
新しく得られた問題の目的関数の**非基底変数**$(r_{3}, r_{2})$の係数は$(\tfrac{5}{8}, \tfrac{1}{8})$ で ==いずれも**非負**である==．このため，これらの非基底変数を0より大きくしても， ==現在の**基底解**より小さな目的関数は実現できない==． → **最適解**が求められた!!

# 単体法の手続き
**単体法**の手続きは以下のように整理できる:
1. **初期許容基底解**を1つ選び, 対応する**辞書**を構成する.
2. ==$−\hat{c}_{k}$(目的関数の係数)が負となる== **辞書**の列(**非基底変数**)$k$の中から任意の1つを選び,$j$とする. 全ての列について$-\hat{c}_{k} \geq 0$ならば，いまの**基底解**が**最適解**.
3. $\hat{a}_{h,j}>0$となる**辞書**の行(**基底変数**)$h$の中から, ==$\hat{b}_{h}/\hat{a}_{h,j}$が最小となるもの== を 1 つ選び,$i$とする. 全ての行について$\hat{a}_{h,j} ≤ 0$ならば, その問題は**無界**である.
4. $\hat{a}_{i,j}$を**ピボット**として**辞書**を更新する. 

**初期許容基底解**の選び方:
- もとの問題の等式標準形が$\mathbf{b}≥\mathbf{0}$となる場合,原点($\mathbf{x}=\mathbf{0}$) に対応する**基底解 **が**許容**であるため，これを**初期許容基底解**とできる.
- $\mathbf{b}\not\geq\mathbf{0}$の場合,もとの問題の**補助問題**を**単体法**で解くことで**初期許容基底解**を見つける(**二段階単体法**).



# 巡回問題と最小添字規則
## 巡回
**単体法**が終了するときには，
- **最適解**が求められる
- **無界**であることが判明する

のいずれかとなることが保証される．では**単体法**は必ず終了するのだろうか?

**単体法**では**ピボット**の列(**非基底変数**)や行(**基底変数**)の選び方に自由度があり，適当に選ぶと終了しない場合がある．例えば，以下の**標準最大化問題**:
$$
\begin{alignat}{6}
\displaystyle 
\max_{x_{1}, x_{2}, x_{3}, x_{4}} \quad 
&&3x_{1} &-&5x_{2}&+&x_{3}&-&2x_{4}&=&z\\
\text{s.t.} \quad 
&& x_{1}&-&2x_{2}&-&x_{3}&+&2x_{4}&\leq&0\\
&&2x_{1}&-&3x_{2}&-&x_{3}&+&x_{4}&\leq&0\\
&& & & & & x_{3} & & &\leq&1\\
&& x_{1}&,&x_{2}&,&x_{3}&,&x_{4} &\geq&0
\end{alignat}
\qquad
\begin{array}{c|cccc|c}
& x_{1} & x_{2} & x_{3} & x_{4} & -1\\
\hline
-r_{1} & 1 & -2 & -1 & 2 & 0\\
-r_{2} & 2 & -3 & -1 & 1 & 0\\
-r_{3} & 0 & 0 & 1 & 0 & 1\\
\hline
-z & -3 & 5 & -1 & 2 & 0
\end{array}
$$
に対して，以下のように注意深く**ピボット**を選ぶと，無限ループが生まれる．
$$
\begin{array}{ccc}
\begin{array}{c|cccc|c}
& x_{1} & x_{2} & x_{3} & x_{4} & -1\\
\hline
-r_{1} & 1* & -2 & -1 & 2 & 0\\
-r_{2} & 2 & -3 & -1 & 1 & 0\\
-r_{3} & 0 & 0 & 1 & 0 & 1\\
\hline
-z & -3 & 5 & -1 & 2 & 0
\end{array}
&\Rightarrow&
\begin{array}{c|cccc|c}
& r_{1} & x_{2} & x_{3} & x_{4} & -1\\
\hline
-x_{1} & 1 & -2 & -1 & 2 & 0\\
-r_{2} & -2 & 1* & 1 & -3 & 0\\
-r_{3} & 0 & 0 & 1 & 0 & 1\\
\hline
-z & 3 & -1 & -4 & 8 & 0
\end{array}
\\
\Uparrow & & \Downarrow 
\\
\begin{array}{c|cccc|c}
& x_{3} & r_{2} & x_{1} & x_{2} & -1\\
\hline
-r_{1} &  1 & -2 & -3 & 4  & 0\\
-x_{4} & -1 & 1* &  2 & -3 & 0\\
-r_{3} &  1 &  0 &  0 & 0  & 1\\
\hline
-z     &  1 & -2 & -7 & 11 & 0
\end{array}
&&
\begin{array}{c|cccc|c}
& r_{1} & r_{2} & x_{3} & x_{4} & -1\\
\hline
-x_{1} & -3 & 2 & 1* & -4 & 0\\
-x_{2} & -2 & 1 & 1 & -3 & 0\\
-r_{3} &  0 & 0 & 1 & 0  & 1\\
\hline
-z     & 1 & 1 & -3 & 5 & 0
\end{array}
\\
\Uparrow & & \Downarrow 
\\
\begin{array}{c|cccc|c}
& r_{1} & r_{2} & x_{1} & x_{2} & -1\\
\hline
-x_{3} & 1* & -2 & -3 & 4  & 0\\
-x_{4} &  1 & -1 & -1 & 1  & 0\\
-r_{3} & -1 &  2 &  3 & -4 & 1\\
\hline
-z     & -1 &  0 &  -4 & 7 & 0
\end{array}
&\Leftarrow&
\begin{array}{c|cccc|c}
& r_{1} & r_{2} & x_{1} & x_{4} & -1\\
\hline
-x_{3} & -3 &  2 &  1 & -4 & 0\\
-x_{2} &  1 & -1 & -1 & 1* & 0\\
-r_{3} &  3 & -2 & -1 & 4  & 1\\
\hline
-z     & -8 &  7 &  3 & -7 & 0
\end{array}
\end{array}
$$

こうした現象を**巡回**(cycling)と呼ぶ．**巡回**が起こるのは，全ての**ピボット演算**が**退化**(degenerate; **ピボット演算**の前後で**基底解**が変化しない)とき． 実際，上記の巡回でも一番右の列は全く変化していない．

## 最小添字規則
**巡回**が起きるのは, **非基底変数**(列)や**基底変数**(行)に複数の候補が存在し，選択に自由度があるとき. 従って**巡回 が**起きないように行・列の選び方を**限定**すれば, **単体法**の停止性を保証できる. その最も簡単かつエレガントな規則として, 以下の**最小添字規則**(smallest subscript rule)が知られている. まず，(スラックも含めた)未知変数について，添字の小さい順に
$$x_1 \succ x_2 \succ \cdots \succ x_{N} \succ r_{1} \succ r_{2} \cdots r_{M}$$
と優先順位をつけておく.そして，
- **非基底変数**(列)の候補(i.e.目的関数の係数$−\hat{c}_j$が負)が複数ある場合, その中で最も優先順位の高い (添字の小さい)ものを選ぶ
- **基底変数**(行)の候補(i.e.非基底変数を増やした時に最初に0になる)が複数ある場合, その中で最も優先順位の高い(添字が
小さい)ものを選ぶ

とする.

# 練習問題
## 課題1
以下の問題を**単体法**で解け．
$$
\begin{alignat}{6}
\displaystyle \max_{x_{1}, x_{2}, x_{3}} \quad &x_{1} &+&x_{2}&+&2x_{3}&=&z\\
\text{s.t.} \quad 
& &&x_{2}&+&2x_{3}&\leq&3\\
-&x_{1}&&&+&3x_{3}&\leq&2\\
&2x_{1}&+&x_{2}&+&x_{3}&\leq&1\\
& x_{1}&,&x_{2} &,& x_{3}&\geq& 0
\end{alignat}
$$

## 課題2
講義で紹介した**巡回**が起きる問題に対し, **最小添字規則**を適用して**単体法**が終了する(**巡回**から抜け出せる)ことを確認せよ.