第3章 図形と方程式

線形計画法
─ 領域を利用して一次式の最大・最小を求める

「限られた条件のもとで利益を最大にするには?」── 線形計画法は、連立不等式が定める領域内で一次式(目的関数)の最大値・最小値を求める方法です。
直線の平行移動という幾何学的なアイデアが、最適化問題を鮮やかに解決します。

1線形計画法とは

日常生活やビジネスでは、「限られた資源のもとで利益を最大にする」「コストを最小にする」といった問題が数多く現れます。こうした最適化問題のうち、条件も目的もすべて「一次式」で表されるものを扱うのが線形計画法(Linear Programming, LP)です。

基本的な構造

線形計画法は、次の3つの要素で構成されます。

  1. 変数:最適化したい量を表す未知数 $x$, $y$
  2. 制約条件:変数が満たすべき連立一次不等式(例:$x + y \leq 10$, $x \geq 0$, $y \geq 0$ など)
  3. 目的関数:最大化または最小化したい一次式 $k = ax + by$

制約条件を満たす点 $(x, y)$ の集合が実行可能領域(feasible region)であり、この領域内で目的関数 $k$ の値が最大(または最小)になる点を見つけるのが目標です。

具体例で考える

たとえば、あるパン屋が食パンとクロワッサンを作るとします。小麦粉と時間に限りがあるとき、利益を最大にするにはそれぞれ何個ずつ作ればよいか、という問題は典型的な線形計画法の問題です。

📐 線形計画法の標準形

目的関数:$k = ax + by$ を最大化(または最小化)

制約条件:

$$\begin{cases} a_1 x + b_1 y \leq c_1 \\ a_2 x + b_2 y \leq c_2 \\ \quad \vdots \\ x \geq 0, \quad y \geq 0 \end{cases}$$

制約条件が定める領域内で、目的関数の最大値・最小値を求めます。

💡 ここが本質:最適解は実行可能領域の頂点にある

線形計画法の最も重要な定理は、目的関数の最大値・最小値は、実行可能領域の頂点(角の点)で達成されるということです。

実行可能領域が有界な凸多角形であるとき、一次式の最大・最小は必ずいずれかの頂点で実現します。したがって、すべての頂点で目的関数の値を計算し、比較すればよいのです。

2幾何学的解法

目的関数を「直線の族」と見る

目的関数 $k = ax + by$ を変形すると、

$$y = -\frac{a}{b}x + \frac{k}{b} \quad (b \neq 0)$$

これは傾き $-\dfrac{a}{b}$、$y$ 切片 $\dfrac{k}{b}$ の直線の方程式です。$k$ の値を変えると、傾きが同じで $y$ 切片だけが変わるので、平行な直線の族が得られます。

$k$ を変える = 直線を平行移動する

$k$ を大きくすると $y$ 切片 $\dfrac{k}{b}$ が大きくなり、直線は上に平行移動します($b > 0$ の場合)。逆に $k$ を小さくすると直線は下に移動します。

したがって、$k$ の最大値を求めるには、直線 $ax + by = k$ を実行可能領域と共有点をもつ範囲で、できるだけ上に($b > 0$ なら)移動させればよいのです。

▷ 幾何学的解法の手順

Step 1. 制約条件の連立不等式から実行可能領域を図示する。

Step 2. 目的関数 $ax + by = k$ を直線として描く(例えば $k = 0$ のとき)。

Step 3. この直線を平行移動させ、実行可能領域と共有点をもつ最後の位置を見つける。

Step 4. その位置での接点(頂点)の座標から $k$ の最大値(最小値)を求める。

例題で確認

例題:次の条件のもとで $k = x + 2y$ の最大値を求めよ。

$$x + y \leq 6, \quad x + 3y \leq 12, \quad x \geq 0, \quad y \geq 0$$

解:

実行可能領域の頂点は、連立不等式の境界線の交点を求めることで得られます。

  • $\mathrm{O}(0, 0)$:原点
  • $\mathrm{A}(6, 0)$:$x + y = 6$ と $x$ 軸の交点
  • $\mathrm{B}(3, 3)$:$x + y = 6$ と $x + 3y = 12$ の交点
  • $\mathrm{C}(0, 4)$:$x + 3y = 12$ と $y$ 軸の交点

直線 $x + 2y = k$ は傾き $-\dfrac{1}{2}$ の直線です。$k$ を大きくすると直線は右上に移動します。この直線が実行可能領域と共有点をもつ限界が、点 $\mathrm{B}(3, 3)$ を通るときです。

$$k = 3 + 2 \times 3 = 9$$

よって、$k$ の最大値は $9$($x = 3$, $y = 3$ のとき)。

📐 幾何学的解法のポイント

目的関数 $k = ax + by$ の最大値・最小値は、直線 $ax + by = k$ を平行移動して実行可能領域と最後に接する位置で得られる。

直線の傾きと領域の形状から、どの頂点で最大・最小が実現するかが幾何学的にわかります。

⚠️ 落とし穴:領域が非有界のとき

実行可能領域が有界(閉じた多角形)でない場合、目的関数に最大値や最小値が存在しないことがあります。

✗ 誤り:「領域内で最大値は必ず存在する」と思い込む

✓ 正しい:領域が非有界の場合、直線を際限なく移動できるため最大値(または最小値)が存在しないことがある

たとえば制約条件が $x \geq 0$, $y \geq 0$, $x + y \geq 2$ のとき、領域は右上に無限に広がるので $k = x + y$ の最大値は存在しません。

3頂点での評価

なぜ頂点だけ調べればよいのか

実行可能領域が凸多角形であるとき、一次関数は凸多角形の辺の上や内部では「端(頂点)よりも大きい(小さい)値をとることはない」という性質があります。これは一次関数が直線的に変化し、途中で折り返すことがないからです。

▷ 直感的な理解

一次関数 $k = ax + by$ は平面上で「一定の方向に値が増加する」関数です。凸多角形の辺の上では $k$ は単調に変化するので、辺の両端の頂点でのどちらかが辺上の最大(最小)です。

多角形全体で考えても、最大・最小はいずれかの辺の端点、すなわち頂点で達成されます。

頂点評価法の手順

  1. 制約条件から実行可能領域を求め、すべての頂点の座標を連立方程式で計算する。
  2. 各頂点で目的関数 $k = ax + by$ の値を計算する。
  3. 計算した値を比較し、最大値・最小値を見つける。

例題で確認

例題:次の条件のもとで $k = 2x + 3y$ の最大値と最小値を求めよ。

$$x + y \leq 5, \quad 2x + y \leq 8, \quad x \geq 0, \quad y \geq 0$$

解:頂点を求めます。

  • $\mathrm{O}(0, 0)$:原点
  • $\mathrm{A}(4, 0)$:$2x + y = 8$ と $y = 0$ の交点
  • $\mathrm{B}(3, 2)$:$x + y = 5$ と $2x + y = 8$ の交点
  • $\mathrm{C}(0, 5)$:$x + y = 5$ と $x = 0$ の交点
頂点 $(x, y)$ $k = 2x + 3y$
$\mathrm{O}$ $(0, 0)$ $0$
$\mathrm{A}$ $(4, 0)$ $8$
$\mathrm{B}$ $(3, 2)$ $12$
$\mathrm{C}$ $(0, 5)$ $15$

よって、最大値は $15$(点 $\mathrm{C}(0, 5)$ のとき)、最小値は $0$(原点 $\mathrm{O}(0, 0)$ のとき)。

⚠️ 落とし穴:頂点の見落とし

頂点を1つでも見落とすと、最大値・最小値を間違える可能性があります。特に注意すべきケースは以下の通りです。

✗ 誤り:境界線の交点だけを求め、領域内にあるかどうかを確認しない

✓ 正しい:境界線の交点を求めたら、すべての制約条件を満たすかどうかを確認する

また、座標軸との交点($x = 0$ や $y = 0$ との交点)を頂点として数え忘れることもよくあるミスです。必ず領域を図示して頂点を確認しましょう。

📐 頂点評価法

実行可能領域が有界な凸多角形のとき、一次式 $k = ax + by$ の最大値・最小値は頂点で達成される。

$$k_{\max} = \max\{k(\text{頂点}_1),\, k(\text{頂点}_2),\, \ldots,\, k(\text{頂点}_n)\}$$

$$k_{\min} = \min\{k(\text{頂点}_1),\, k(\text{頂点}_2),\, \ldots,\, k(\text{頂点}_n)\}$$

頂点の個数は有限なので、すべて調べ上げることが可能です。

4典型的な問題パターン

パターン1:$k = x + y$ 型

目的関数が $k = x + y$ の場合、直線 $x + y = k$ は傾き $-1$ の直線です。$k$ を大きくすると直線は右上に平行移動します。

例:$x \geq 0$, $y \geq 0$, $x + 2y \leq 8$, $2x + y \leq 10$ のもとで $x + y$ の最大値を求めよ。

頂点 $(0,0)$, $(5,0)$, $(4,2)$, $(0,4)$ を求め、各頂点で $x+y$ を計算すると、点 $(4,2)$ で $x + y = 6$ が最大です。

パターン2:$k = ax + by$(一般の係数)型

目的関数の係数によって、直線の傾きが変わるので、最適解の頂点も変わります。領域は同じでも、目的関数が異なれば最適解は異なり得ることに注意しましょう。

例:同じ領域で $k = 2x + 3y$ の最大値を求めると、直線の傾きは $-\dfrac{2}{3}$ となり、最適解が変わる場合があります。

パターン3:$\dfrac{y}{x}$ 型(傾き型)

$k = \dfrac{y}{x}$(ただし $x > 0$)の最大・最小を求める問題は、$k$ が原点と点 $(x, y)$ を結ぶ直線の傾きであることに着目します。

$y = kx$ は原点を通る傾き $k$ の直線なので、この直線を原点を中心に回転させて、実行可能領域と接する限界の傾きを求めます。

📐 傾き型の目的関数

$k = \dfrac{y - q}{x - p}$ の最大・最小は、点 $(p, q)$ と領域内の点 $(x, y)$ を結ぶ直線の傾きの最大・最小に対応する。

特に $k = \dfrac{y}{x}$ は原点からの傾きです。直線 $y = kx$ を回転させて、領域と最後に共有点をもつ位置を見つけます。

パターン4:$k = \dfrac{y - q}{x - p}$ 型(定点を通る傾き)

目的関数が $\dfrac{y - q}{x - p}$ の形のとき、定点 $(p, q)$ が領域の外にあることが多いです。定点から領域への接線の傾きが最大値・最小値に対応します。

例:$k = \dfrac{y + 1}{x - 2}$ の最大値を求めるには、点 $(2, -1)$ から領域への見通しを考えます。

パターン 目的関数 幾何学的解釈
一次式型 $k = ax + by$ 直線 $ax + by = k$ の平行移動
傾き型 $k = \dfrac{y}{x}$ 原点を通る直線 $y = kx$ の回転
定点傾き型 $k = \dfrac{y - q}{x - p}$ 定点 $(p,q)$ を通る直線の回転
💡 ここが本質:目的関数の幾何学的意味を読む

線形計画法の問題を解く鍵は、目的関数を直線の方程式として解釈し、その幾何学的な動き(平行移動・回転)で最適解を見つけることです。

「$k$ を動かすと何が起こるか」を常に図形的に考える習慣をつけましょう。

5線形計画法の応用

応用1:文章題(生産計画問題)

実際の線形計画法の問題は、文章から条件を読み取って数式に翻訳する力が求められます。

例題:ある工場で製品 A と製品 B を生産する。製品 A は1個あたり利益 $3$ 万円、製品 B は1個あたり利益 $5$ 万円である。原料の制約として $2x + y \leq 14$、労働時間の制約として $x + 3y \leq 12$ がある。$x \geq 0$, $y \geq 0$ のとき、利益 $k = 3x + 5y$ を最大にせよ。

解:頂点を求めます。

  • $(0, 0)$:$k = 0$
  • $(7, 0)$:$k = 21$
  • $(6, 2)$:$2x + y = 14$ と $x + 3y = 12$ の交点、$k = 28$
  • $(0, 4)$:$k = 20$

よって、$x = 6$, $y = 2$ のとき利益は最大 $28$ 万円です。

応用2:分数型の目的関数

$k = \dfrac{y}{x}$ のような分数型の問題では、「傾き」として解釈して解きます。

例題:$x + y \leq 6$, $x \geq 1$, $y \geq 0$ のもとで $k = \dfrac{y}{x}$ の最大値を求めよ。

解:$k = \dfrac{y}{x}$ は原点と点 $(x, y)$ を結ぶ直線の傾きです。直線 $y = kx$ を原点を中心に反時計回りに回転させると、領域との最後の共有点で $k$ が最大になります。

$x + y = 6$ と $x = 1$ の交点 $(1, 5)$ で $k = \dfrac{5}{1} = 5$ が最大です。

応用3:整数制約のある問題

入試では「$x$, $y$ が整数のとき」という制約がつく場合があります。この場合、最適解は必ずしも頂点ではなく、頂点付近の格子点(整数座標の点)を調べる必要があります。

例題:$x + y \leq 5$, $x \geq 0$, $y \geq 0$, $x, y$ は整数のとき、$k = 3x + 2y$ の最大値を求めよ。

解:整数制約がない場合、頂点 $(5, 0)$ で $k = 15$ が最大です。この場合 $(5, 0)$ は整数点なのでそのまま最大値 $15$ が答えです。しかし、頂点が整数点でないときは、頂点付近の格子点をすべて調べる必要があります。

⚠️ 落とし穴:整数制約での最適解

整数制約のある線形計画法では、「連続の最適解に最も近い整数点」が必ずしも最適であるとは限りません。

✗ 誤り:頂点 $(3.5, 2.5)$ に近い $(4, 2)$ や $(3, 3)$ だけを調べる

✓ 正しい:直線を少しずらしながら、制約を満たすすべての整数点の候補を調べる

🔬 深掘りTips:シンプレックス法とオペレーションズ・リサーチ

高校では2変数の線形計画法を図形的に解きますが、実際のビジネスや工学では変数が数百〜数万にもなります。このような大規模な線形計画法を効率的に解くアルゴリズムが、1947年にダンツィグが考案したシンプレックス法(単体法)です。

シンプレックス法は「頂点から隣の頂点へ移動しながら目的関数を改善していく」方法で、高校で学ぶ「頂点で最適解が得られる」という事実を基礎としています。

線形計画法はオペレーションズ・リサーチ(OR)と呼ばれる分野の中核であり、物流の最適化、金融ポートフォリオの設計、航空便のスケジューリングなど、幅広い分野で活用されています。

📋まとめ

  • 線形計画法の定義:連立一次不等式が定める実行可能領域内で、目的関数 $k = ax + by$ の最大値・最小値を求める手法。条件も目的もすべて一次式で表される最適化問題を扱う。
  • 幾何学的解法:目的関数 $ax + by = k$ は傾き一定の平行な直線の族を表す。$k$ を変化させること=直線の平行移動であり、実行可能領域と最後に接する位置で最大・最小が得られる。
  • 頂点での評価:実行可能領域が有界な凸多角形のとき、一次式の最大・最小は必ず頂点で達成される。すべての頂点で目的関数の値を計算し比較すればよい。
  • 典型的なパターン:$k = ax + by$ の平行移動型、$k = \dfrac{y}{x}$ の傾き型、$k = \dfrac{y-q}{x-p}$ の定点傾き型がある。目的関数の幾何学的意味を読み取ることが解法の鍵。
  • 応用上の注意:文章題では条件を正確に数式化する。整数制約がある場合は頂点だけでなく格子点も調べる。領域が非有界のときは最大・最小が存在しない場合がある。

✅ 確認テスト

Q1. 線形計画法において、目的関数の最大・最小が達成される位置はどこか。

▶ クリックして解答を表示 実行可能領域(制約条件を満たす領域)の頂点(角の点)で達成される。

Q2. 制約条件 $x + y \leq 4$, $x \geq 0$, $y \geq 0$ のもとで $k = x + 3y$ の最大値を求めよ。

▶ クリックして解答を表示 頂点は $(0,0)$, $(4,0)$, $(0,4)$。それぞれ $k = 0, 4, 12$。よって最大値は $12$($(0, 4)$ のとき)。

Q3. 目的関数 $k = 2x + y$ を $k$ の値を変えて図示すると、どのような直線の族になるか。

▶ クリックして解答を表示 傾き $-2$ の平行な直線の族。$k$ が大きくなると $y$ 切片 $k$ が大きくなり、直線は上に平行移動する。

Q4. $k = \dfrac{y}{x}$($x > 0$)の最大・最小を求めるとき、$k$ は幾何学的に何を表すか。

▶ クリックして解答を表示 $k = \dfrac{y}{x}$ は原点と点 $(x, y)$ を結ぶ直線の傾きを表す。直線 $y = kx$ を回転させて、領域と接する限界の傾きを求める。

Q5. 実行可能領域が非有界のとき、目的関数の最大値について何がいえるか。

▶ クリックして解答を表示 領域が非有界の場合、目的関数の最大値(または最小値)が存在しないことがある。直線を際限なく平行移動できるため、$k$ がいくらでも大きく(小さく)なる場合がある。

📝入試問題演習

問題 1 A 基礎

次の連立不等式の表す領域において、$k = x + 2y$ の最大値と最小値を求めよ。

$$x + y \leq 6, \quad x - y \leq 2, \quad x \geq 0, \quad y \geq 0$$

▶ クリックして解答を表示
解答

実行可能領域の頂点を求める。

$x + y = 6$ と $x - y = 2$ の交点:$2x = 8$ より $x = 4$, $y = 2$ → $(4, 2)$

$x - y = 2$ と $y = 0$ の交点:$(2, 0)$

$x + y = 6$ と $x = 0$ の交点:$(0, 6)$

原点 $(0, 0)$

各頂点で $k = x + 2y$ を計算:

$(0, 0)$:$k = 0$、$(2, 0)$:$k = 2$、$(4, 2)$:$k = 8$、$(0, 6)$:$k = 12$

よって、最大値 $12$($(0, 6)$ のとき)、最小値 $0$($(0, 0)$ のとき)。

問題 2 B 標準

連立不等式 $x + 2y \leq 10$, $3x + y \leq 12$, $x \geq 0$, $y \geq 0$ の表す領域を $D$ とする。点 $(x, y)$ が領域 $D$ 内を動くとき、次の値の最大値を求めよ。

(1) $k = 3x + 4y$

(2) $k = x + 5y$

▶ クリックして解答を表示
解答

頂点を求める。

$\mathrm{O}(0, 0)$、$\mathrm{A}(4, 0)$:$3x + y = 12$ と $y = 0$ の交点

$\mathrm{B}$:$x + 2y = 10$ と $3x + y = 12$ の連立。$x + 2y = 10$ より $x = 10 - 2y$。代入して $3(10-2y) + y = 12$ → $30 - 6y + y = 12$ → $y = \dfrac{18}{5}$, $x = \dfrac{14}{5}$ → $\mathrm{B}\!\left(\dfrac{14}{5}, \dfrac{18}{5}\right)$

$\mathrm{C}(0, 5)$:$x + 2y = 10$ と $x = 0$ の交点

(1) 各頂点で $k = 3x + 4y$:

$\mathrm{O}$:$0$、$\mathrm{A}$:$12$、$\mathrm{B}$:$3 \cdot \dfrac{14}{5} + 4 \cdot \dfrac{18}{5} = \dfrac{42 + 72}{5} = \dfrac{114}{5}$、$\mathrm{C}$:$20$

最大値は $\dfrac{114}{5}$(点 $\mathrm{B}$ のとき)。

(2) 各頂点で $k = x + 5y$:

$\mathrm{O}$:$0$、$\mathrm{A}$:$4$、$\mathrm{B}$:$\dfrac{14}{5} + 5 \cdot \dfrac{18}{5} = \dfrac{14 + 90}{5} = \dfrac{104}{5}$、$\mathrm{C}$:$25$

最大値は $25$(点 $\mathrm{C}$ のとき)。

解説

同じ領域でも目的関数の係数が変わると、最適解が別の頂点に移ります。(1)では直線の傾きが $-\dfrac{3}{4}$ で頂点 $\mathrm{B}$ が最適、(2)では傾きが $-\dfrac{1}{5}$ で頂点 $\mathrm{C}$ が最適になります。

問題 3 B 標準

連立不等式 $y \leq 2x$, $x + y \leq 6$, $y \geq 0$ の表す領域内の点 $(x, y)$ について、$k = \dfrac{y + 2}{x + 1}$ の最大値を求めよ。

▶ クリックして解答を表示
解答

$k = \dfrac{y + 2}{x + 1}$ は、点 $(-1, -2)$ と点 $(x, y)$ を結ぶ直線の傾きを表す。

実行可能領域の頂点は $(0, 0)$, $(6, 0)$, $(2, 4)$。

$y + 2 = k(x + 1)$ すなわち $y = kx + k - 2$ が定点 $(-1, -2)$ を通る直線。

この直線を $(-1, -2)$ を中心に回転させ、領域と最後に接する位置を見つける。

各頂点での $k$ の値:

$(0, 0)$:$k = \dfrac{0+2}{0+1} = 2$

$(6, 0)$:$k = \dfrac{0+2}{6+1} = \dfrac{2}{7}$

$(2, 4)$:$k = \dfrac{4+2}{2+1} = \dfrac{6}{3} = 2$

よって最大値は $2$($(0,0)$ または $(2,4)$ のとき)。

解説

$k = \dfrac{y + 2}{x + 1}$ は定点 $(-1, -2)$ からの傾き型の問題です。定点が領域の外にあることを確認し、定点から各頂点への傾きを計算して最大値を求めます。この場合、$(0,0)$ と $(2,4)$ を通る直線がちょうど傾き $2$ であり、領域の辺 $y = 2x$ 上のすべての点で $k = 2$ が実現します。

問題 4 C 発展

連立不等式 $x + y \leq 7$, $2x + y \leq 10$, $x \geq 0$, $y \geq 0$ の表す領域内で、$x$, $y$ がともに整数であるとき、次の問いに答えよ。

(1) 制約を満たす整数点 $(x, y)$ のうち、$k = 3x + 5y$ を最大にする点を求め、最大値を答えよ。

(2) 制約を満たす整数点 $(x, y)$ のうち、$k = 4x + y$ を最大にする点を求め、最大値を答えよ。

▶ クリックして解答を表示
解答

まず連続の場合の頂点を求める。

$\mathrm{O}(0, 0)$, $\mathrm{A}(5, 0)$, $\mathrm{B}(3, 4)$:$x + y = 7$ と $2x + y = 10$ の交点, $\mathrm{C}(0, 7)$

(1) $k = 3x + 5y$ の場合

連続の頂点での値:$\mathrm{O}$:$0$, $\mathrm{A}$:$15$, $\mathrm{B}(3,4)$:$29$, $\mathrm{C}$:$35$

$\mathrm{C}(0, 7)$ は整数点であるから、最大値は $35$($(0, 7)$ のとき)。

(2) $k = 4x + y$ の場合

連続の頂点での値:$\mathrm{O}$:$0$, $\mathrm{A}(5,0)$:$20$, $\mathrm{B}(3,4)$:$16$, $\mathrm{C}$:$7$

$\mathrm{A}(5, 0)$ は整数点であるから、最大値は $20$($(5, 0)$ のとき)。

解説

この問題では、連続の最適解がそのまま整数点であったため、整数制約の影響はありませんでした。しかし、もし連続の最適解が非整数(たとえば $\left(\dfrac{7}{3}, \dfrac{14}{3}\right)$ など)であった場合は、最適解付近の整数点をすべて列挙して比較する必要があります。

一般に整数計画問題(Integer Programming)は連続の線形計画法よりもはるかに難しく、大学レベルの数理最適化で詳しく学びます。

採点のポイント
  • 頂点を正しく求めている
  • 各頂点で目的関数を正しく評価している
  • 整数点であることを確認している
  • 頂点が非整数の場合の処理方法に言及できている