# 単語並べ替えと冠詞生成の同時逐次処理：日英機械翻訳への適用

本稿では，機械翻訳の単語並べ替え問題にシフトリデュース構文解析法を応用する ための手法を提案する。提案手法では, 単一言語の Inversion Transduction 文法に よって単語並べ替え問題を定式化する。また，日本語文と英語文との単語対応をと りやすくするため, あらかじめ除去した英冠詞を翻訳結果へ挿入する問題も単語並 べ替えと同時に定式化する。提案法を日英特許翻訳に適用したところ, 句に基づく 統計的機械翻訳の BLEU スコア 29.99 に対して, +3.15 の改善が得られた。 キーワード：統計的機械翻訳, 単語並べ替え, 後編集, 冠詞生成, シフトリデュース構文解析
## Incremental Word Re-Ordering and Article Generation: Its Application to Japanese-to-English Machine Translation

\author{
Katsuhiko Hayashi $^{\dagger}$, Katsuhito Sudoh $^{\dagger}$, Hajime Tsukada $^{\dagger}$, \\ JUN SUZUKI ${ }^{\dagger}$ and MASAaKi NAgATa ${ }^{\dagger}$
}

This paper introduces a novel word re-ordering model for statistical machine translation that employs a shift-reduce parser for inversion transduction grammars. The proposed model also solves article generation problems simultaneously with word reordering. We applied it to the post-ordering of phrase-based machine translation (PBMT) for Japanese-to-English patent translation tasks. Our experimental results suggest that our method achieves a significant improvement of +3.15 BLEU scores against 29.99 BLEU scores of the baseline PBMT system.

Key Words: Statistical machine translation, Word re-ordering, Postediting, Shift-reduce parsing

## 1 はじめに

句に基づく統計的機械翻訳 (Koehn, Och, and Marcu 2003) が登場し，仏英などの言語対にお ける機械翻訳性能は大きく向上した，その一方で，文の構文構造が大きく異なる言語対（日英 など）において，長距離の単語並べ替えを上手く扱うことができないという問題がある.

近年, この問題を解決するため, 同期文脈自由文法 (Wu 1997; Chiang 2005) や木トランス デューサ (Graehl and Knight 2004; Galley, Graehl, Knight, Marcu, DeNeefe, Wang, and Thayer 2006)により, 構文情報を使って単語並べ替えと訳語選択を同時にモデル化する研究が活発化し

ている.しかし, 単語アライメントや構文解析のエラーを同時にモデルへ組み达んでしまうた め, 句に基づく手法と比較して, いつでもより良い性能を達成できているわけではない.

これらの研究と並行して, 事前並べ替え法 (Collins, Koehn, and Kučerová 2005; Isozaki, Sudoh, Tsukada, and Duh 2012) や事後並べ替え法 (Sudoh, Wu, Duh, Tsukada, and Nagata 2011; Goto, Utiyama, and Sumita 2012) に関する研究も盛んに行われている.これらの手法は単語並べ替え と訳語選択の処理を分けてモデル化し，語順が大きく異なる言語対で，句に基づく手法の翻訳性能を大きく向上させられることが報告されている.

特に, 文献 (Isozaki et al. 2012) で提案された主辞後置変換規則による事前並べ替え法は, 特許文を対象とした英日翻訳で高い性能を達成している (Goto, Lu, Chow, Sumita, and Tsou 2011; Goto, Chow, Lu, Sumita, and Tsou 2013).この規則はある言語（本稿では英語を仮定する）を 日本語（主辞後置言語）の語順へと変換するものであるが，文献 (Sudoh et al. 2011)では，主辞後置変換規則によってできた日本語語順の英語文を元の英語文へと復元するためのモデルを 構築し，主辞後置変換規則の利点を日英翻訳へと適用可能にしている（事後並べ替え法）.

文献 (Goto et al. 2012) では事後並べ替えを構文解析によってモデル化している。この手法は, 1 言語の上で定義された Inversion Transduction 文法 (ITG) (Wu 1997)1 1 に Berkeley 構文解析器 を適用することで，単語並べ替えを行う。また，主辞後置変換規則では日英単語アライメント 性能を向上させるため，データから英冠詞を除去する，そのため，翻訳結果に冠詞生成を行う 必要があり, 文献 (Goto et al. 2012)では, 構文解析による単語並べ替えとは独立して, $N$-gram モデルによる冠詞生成法を提案している.

文献 (Goto et al. 2012)の手法は, Berkeley 構文解析器の解析速度の問題や冠詞生成を独立し て行うことから, 解析効率や精度の点で大きな問題が残る。本稿では, この構文解析に基づく 事後並べ替えの新たな手法を提案し，解析効率，及び，翻訳性能の改善をはかる．提案手法は シフトリデュース構文解析法に基づいており, 文献 (Goto et al. 2012)で利用された段階的枝刈 り手法による Berkeley 構文解析 (Petrov and Klein 2007) と比べて, 次の利点を持つ.

1 線形時間で動作し, 高速で精度の高い単語並べ替えが可能.

2 並べ替え文字列の $N$-gram 素性（非局所素性に該当）を用いても計算量が変わらない.

3 アクションを追加するだけで，並べ替えと同時に語の生成操作などが行える.

1 と 2 の利点は, 解析効率における利点, また, 2 と 3 は翻訳性能を向上させる上での利点とな る. 特に，3つ目の利点を活かして，単語並べ替えと冠詞生成問題を同時にモデル化すること が, 提案法の最も大きな新規性と言える。本稿では, 日英特許対訳データを使って, 提案手法 が従来手法を翻訳速度，性能の両面で上回ることを実験的に示す。以下，第 2 章では構文解析
^{1}$ ITG は 2 言語の構文解析 (biparsing) を扱う枠組みであるが, 単語並べ替え問題では原言語の単語と目的言語の訳語を同じと考えることができるため, 1 言語の上で定義された通常の構文解析として扱える.
}

による事後並べ替えの枠組み, 第 3 章では提案手法, 第 4 章では実験結果について述べる，第 5,6 章では研究の位置付けとまとめを行う.

## 2 構文解析による事後並べ替え

図 1 に示すように, 事後並べ替えによる機械翻訳方式 (Sudoh et al. 2011) は 2 つのステップ に分けられる。最初のステップでは入力文をそのままの並びで出力言語文（中間言語文）へと 翻訳する。そして，次のステップにおいて中間言語文を並べ替え，出力言語の語順になった文 を生成する. 文献 (Goto et al. 2012) はこの 2 番目のステップを構文解析によってモデル化し, そのための学習データを次のような手順で作成している.

まず, 図 2 の左図に示すように, 英語文に対して語彙化構文木を作成する. 次に, 主辞後置変換規則によって, 図 2 の右図に示すような木 (中間英語木) へと変換する ${ }^{2}$. この変換では, 非終端記号 に付随する主辞をその句の後方へと移動する。例えば, 左図の $\mathrm{PP}($ with) $\rightarrow \mathrm{PR}$ (with) $\mathrm{NP}$ (telescope) の辺では, PP の主辞となる withは telescopeの前に位置するが, 右図では PP\# $\rightarrow \mathrm{N}($ telescope) “a/an" PR(with)のように telescope の後ろに位置する。\#は並べ替えを意味するマークである．右図 の木構造における葉ノードから成る文を中間英語文と呼ぶ.

さらに, 中間英語文からは冠詞 (the, a, an)が消去されており, 逆に, 日本語の助詞 (が (ga),

図 1 事後並べ替えによる機械翻訳方式の流れ

図 2 主辞後置変換規則による中間英語データの作成例
($ telescope $) \rightarrow \mathrm{N}($ telescope) のような単一規則は解析効率を考慮して全て除去している.
}

は (wa),を (wo)）が挿入されているが，これらは日本語文との単語対応をとりやすくするため である。削除された冠詞はそれが先頭に挿入される句を表す品詞ないしは非終端記号にマーク している。例えば, $\mathrm{N}$ (telescope)“a/an”である。文献 (Goto et al. 2012) はこのような削除した冠詞のマークを行っていないが，提案手法では削除した冠詞の挿入を構文解析の朹組みとして定式化するため, このようなマークを行っている.

\#や冠詞マークを使うことで, 図 2 の右図に示す中間英語木から元の英語文を復元すること は可能である。よって, 中間英語木から学習した構文解析器によって, 翻訳器が出力した中間英語文に中間英語木構造を自動推定することで, 機械翻訳の単語並べ替えを行うことができる.

## 3 シフトリデュース構文解析による単語並べ替えと冠詞生成

## 3.1 単一言語の Inversion Transduction 文法

第 2 節で説明した単語並べ替え（及び，冠詞生成）問題は，文献（Tromble and Eisner 2009; DeNero and Uszkoreit 2011) などで言及されているように, Inversion trasduction 文法 (ITG) (Wu 1997) と関連付けられる。本来, ITG は 2 言語の構文解析 (biparsing) を扱う枠組みである が，単語並べ替え問題を扱う場合， 1 言語の構文解析として定式化する点に注意する（単一言語の ITG).

単一言語の ITG $G$ は $G=(V, T, P, I, \mathrm{TOP})$ から成る. ここで $V$ は非終端記号, 及び, 品詞の 集合, $T$ は終端記号の集合, $P$ は生成規則の集合, $I$ は冠詞挿入 (“the”, “a/an”, “no article”) を行う非終端記号及び品詞の候補集合, TOP は開始記号である. 生成規則の集合 $P$ は

$
\mathrm{X} \rightarrow w, \quad \mathrm{X} \rightarrow \mathrm{YZ}, \quad \mathrm{X}^{\#} \rightarrow \mathrm{YZ}, \quad \mathrm{TOP} \rightarrow \mathrm{X} \mid \mathrm{X}^{\#}
$

の形式を持つ規則から構成される $(w \in T, \mathrm{X}, \mathrm{X} \#, \mathrm{Y}, \mathrm{Z} \in V)$. 最初の規則は単語 $w$ を生成する 語彙生成規則, 次の 2 つは 2 分生成規則, 最後は終了規則である.

## 3.2 シフトリデュース構文解析

単一言語の ITG に対するシフトリデュース構文解析法を定義する。本稿で用いる記法は, 文献 (Huang and Sagae 2010) や (Zhang and Clark 2011) を参考にしているため, 以下の定義を読解する上で，それらを参考にすると良いだろう。

シフトリデュース構文解析は状態とアクションを使って解析を進める。基本的な動作原理は, まず，入力文 $W=w_{1} \ldots w_{|W|}$ をバッファ $B$ に積み込み（慣習に従い，左端が先頭), シフト と呼ばれるアクションによって, バッファの先頭単語に語彙生成規則を適用して, 状態が持つ スタックの先頭へと移す。そして, リデュースと呼ばれるアクションを使って, 状態が持つス タックの先頭 2 つの要素に対して 2 分生成規則を適用して, 構文木を組み上げていく. 本稿で

はさらに，挿入アクションを使って，冠詞の生成問題も同時にモデル化する.

シフトリデュース構文解析における状態 $p$ は

$
p:[\ell:\langle i, j, S\rangle: \pi]
$

として定義され， $\ell$ はステップ数， $S$ はスタックを表す．スタックは $\ldots\left|s_{1}\right| s_{0}$ を要素に持ち，各要素は部分解析木を表現する。慣習に従い，スタックの要素は右端を先頭とし，各要素を|で 区切る，i $i$ はタック先頭要素 $s_{0}$ が持つ部分解析木の左端単語の $W$ 中での位置インデックスを 表し， $j$ はバッファ $B$ の先頭単語の $W$ 中での位置インデックスを表す. $\pi$ は予測前状態へのポ インタ集合である。予測前状態とは, 現状態の $s_{0}$ が構築される直前の状態のことであり， $\pi$ は そこへのバックポインタを保持する。 $\pi$ が集合となるのは, 文献 (Huang and Sagae 2010)の動的計画法により状態の結合が起こると， $\pi$ をも一方の状態の $\pi$ へと結合するからである ${ }^{3}$.

各スタックの要素は以下の部分解析木に関する変数を持つ.

$
s=\left.\langle\mathrm{H}, h, w_{\text {left }}, w_{\text {right }}, a\right.\rangle
$

ここで $\mathrm{H}$ とは $s$ が持つ部分解析木のルートにある非終端記号または品詞ラベルの変数を表す. $h$ は $\mathrm{H}$ に付随する主辞単語の $W$ 中のインデックスを表す変数である, $a$ は “the", “a/an”, “no article"，または null が割り当てられる変数を示している $4 . w_{\text {left }}$ と $w_{\text {right }}$ は部分解析木が覆う 並べ替え文字列の左端と右端単語を表す変数である（解析時に並べ替えが起こったとき， $w_{l \text { left }}$ と $w_{\text {right }}$ だけを明示的に並べ替えることに注意）ｓ喓素 $*$ は $s . *$ として参照する.

図 3 には状態の説明図を示す，以下のアクションに関する説明が煩雑になることを防ぐため, スタック要素の定義から $\mathrm{L}, \mathrm{R}, w_{l}$ は除いたが, 後述する識別モデルの素性にはこれらを利用す る. Lは $\mathrm{H}$ の左側の子供となる非終端記号, $\mathrm{R}$ は右側の子供となる非終端記号, $w_{l}$ は L 付随 する主辞単語の $W$ 中の位置インデックスを表す変数である.

図 3 状態定義の説明図: 慣習上，スタックは右端，バッファは左端が先頭とする.
^{3} \pi$ の結合は, シフトで作られた状態同士が結合されたときに起こる. 詳細は文献 (Huang and Sagae 2010) を参照.

4 "no article”と null を区別し, 一度“no article” が插入れれも, “the”や“a/an”の㨁入が行えるようにして いる.
}
提案手法はシフト-X, 挿入- $x$, リデュース MR-X, リデュース $\mathrm{SR}-\mathrm{X}$ ， 終了の 5 種類のアク ションを持つ。以下，各アクションは推論規則

$
\frac{\text { 前状態 } p}{\text { 後状態 } p^{\prime}} \text { 条件部 }
$

を使って定義する. 条件部にはアクションの適用条件を記述し, 状態 $p$ にアクションを適用す ると, 状態 $p^{\prime}$ になことを表す. 解析は初期状態 $p_{0}:[0:\langle 0,1, \epsilon\rangle: \emptyset]$ から始まり, 終了アクショ ンによって導かれる終了状態に至るまで続ける。

・ シフト-X: バッファの先頭単語をスタックに積み, 品詞を割り当てる.

$
\frac{p:\left[\ell:\left.\langle i, j, S \mid s_{0}^{\prime}\right.\rangle: \pi\right]}{\left.p^{\prime}:\left[\ell+1:\left.\langle j, j+1, S\left|s_{0}^{\prime}\right| s_{0}\right)\right.\rangle:\{p\}\right]} \quad \mathrm{X} \rightarrow w_{j} \in P
$

ここで $s_{0}$ は $\mathrm{H}=\mathrm{X}, \quad h=j, \quad w_{\text {left }}=w_{j}, w_{\text {right }}=w_{j}, \quad a=\operatorname{null}$ となり, 単語 $w_{j}$ に品詞 $\mathrm{X}$ が割当られたことを意味する。
- 挿入- $x$ : 現在の状態が持つスタック先頭要素の部分解析木が覆う単語列の先頭に “the", "a/an", “no articles”のいずれか（変数 $x$ で表す）を挿入する操作を行う.

$
\frac{\left.\left.p:\left[\ell:\langle i, j, S| s_{0}^{\prime}\right)\right.\rangle: \pi\right]}{p^{\prime}:\left[\ell+1:\left.\langle i, j, S \mid s_{0}\right.\rangle: \pi\right]} s_{0}^{\prime} \cdot \mathrm{X} \in I \wedge
$

$
\left(s_{0}^{\prime} \cdot a=\text { null } \| x \neq \text { "no article" } \wedge s_{0}^{\prime} \cdot a \neq \text { "the" } \wedge s_{0}^{\prime} \cdot a \neq \text { "a/an" }\right)
$

ここで $s_{0}$ は $\mathrm{H}=s_{0}^{\prime} \cdot \mathrm{H}, \quad h=s_{0}^{\prime} \cdot h, \quad w_{\text {left }}=s_{0}^{\prime} \cdot w_{\text {left }}, w_{\text {right }}=s_{0}^{\prime} \cdot w_{\text {right }}, \quad a=x$ となる. ア クションの適用条件で $s_{0}^{\prime}=$ null は現状態でまだ一度も冠詞挿入が行われていないことを 意味し, “the”, “a/an", “no article”が代入できる。一方, すでに“no article”が挿入さ れた位置には, 条件 $x \neq$ "no article" $\wedge s_{0}^{\prime} \cdot a \neq$ “the" $\wedge s_{0}^{\prime} \cdot a \neq$ “a/an”によって, “the" か “a/an”のみ挿入可能で，そのいずれかを挿入以後，その位置には冠詞挿入は行えない.

・リデュース：リデュース MR-Xとリデュース SR-X\#の 2 種類を定義する. これらは同 じ形式の推論規則で表記できる。

$
\frac{q:\left[-:\left.\langle k, i, S^{\prime} \mid s_{1}^{\prime}\right.\rangle: \pi^{\prime}\right] \quad p:\left[\ell:\left.\langle i, j, S \mid s_{0}^{\prime}\right.\rangle: \pi\right]}{p^{\prime}:\left[\ell+1:\left.\langle k, j, S^{\prime} \mid s_{0}\right.\rangle: \pi^{\prime}\right]} \mathrm{X} \rightarrow \mathrm{YZ} \in P \wedge q \in \pi
$

リデュースは $s_{0}^{\prime}$ と $s_{1}^{\prime}$ を文法規則 $\mathrm{X} \rightarrow \mathrm{Y} \mathrm{Z}$ によって結合し, 新たなスタック要素 $s_{0}$ を作 り出す.リデュース MR-Xでは

$
s_{0}=\left.\langle\mathrm{X}, s_{0}^{\prime} \cdot h, s_{1}^{\prime} \cdot w_{\text {left }}, s_{0}^{\prime} \cdot w_{\text {right }}, s_{1}^{\prime} \cdot a\right.\rangle
$

を新たに作り出す. 新たな非終端記号は $\mathrm{X}$ となり, その主辞単語は $s_{0} . h=s_{0}^{\prime} . h$ として, $\mathrm{Z}$ の主辞単語の位置インデックスを代入する. リデュース MR は非終端記号 $\mathrm{Y}$ と Z が覆 う 2 つの句をそのままの並びで結合するため, $\mathrm{X}$ が覆う句の左端は $s_{0} \cdot w_{l e f t}=s_{1}^{\prime} \cdot w_{l e f t}$,
右端は $s_{0} \cdot w_{r i g h t}=s_{0}^{\prime} \cdot w_{\text {right }}$ となる. 冠詞変数は $s_{0} \cdot a=s_{1}^{\prime} \cdot a$ として, Y の先頭に挿入さ れた冠詞変数が代入される. リデュース SR-X\# は MR-X とは逆に，文法規則 $\mathrm{X} \# \rightarrow \mathrm{Y} Z$ によってＹとＺの句を並べ替えて結合し，新たなスタック要素

$
s_{0}=\left.\langle\mathrm{X}^{\#}, s_{0}^{\prime} \cdot h, s_{0}^{\prime} \cdot w_{\text {left }}, s_{1}^{\prime} \cdot w_{\text {right }}, s_{0}^{\prime} \cdot a\right.\rangle
$

を作り出す。新たな非終端記号は $\mathrm{X} \#$ となり，その主辞単語はリデュース $\mathrm{MR}$ 同様に $s_{0} . h=s_{0}^{\prime} . h$ として, $\mathrm{Z}$ の主辞単語の位置インデックスを代入する. リデュース $\mathrm{SR}$ は 非終端記号 Y と Z が覆う 2 つの句を並べ替えて結合するため, $\mathrm{X} \#$ が覆う句の左端は $s_{0} \cdot w_{\text {left }}=s_{0}^{\prime} \cdot w_{\text {left }}$, 右端は $s_{0} \cdot w_{\text {right }}=s_{1}^{\prime} \cdot w_{\text {right }}$ となる. 冠詞変数は $s_{0} \cdot a=s_{0}^{\prime} \cdot a$ として, $\mathrm{Z}$ の先頭に挿入された冠詞変数が代入される.
- 終了：シフトやリデュースをこれ以上適用できなくなり, 終了規則が適用できる場合,

$
\frac{p:\left[\ell:\left.\langle 0,|W|, s_{0}^{\prime}\right.\rangle: \pi\right]}{\left.p^{\prime}:\left[\ell+1:\left.\langle 0,|W|, s_{0}\right)\right.\rangle: \pi\right]} \quad \text { TOP } \rightarrow \mathrm{X} \mid \mathrm{X}^{\#} \in P
$

として，終了状態 $p^{\prime}$ を導く．ただし， $s_{0}^{\prime} \cdot \mathrm{H}=\mathrm{X} \mid \mathrm{X}^{\#}, s_{0} \cdot \mathrm{H}=\mathrm{TOP}$ とする．終了状態 $p^{\prime}$ からバックトレースすることで，中間英語木，または，英語文は出力できる.

図 4 に解析の例を示す。図 4 では，解析の過程が全て理解できるよう，スタック要素を省略 せず，解析部分木を全て示した。

入力文 $W$ が与えられたとき，初期状態 $p_{0}$ から終了状態に至る状態とアクションの系列を完全アクション状態系列と呼び,

$
y=\left(\left(p_{0}, a_{0}\right),\left(p_{1}, a_{1}\right), \ldots,\left(p_{|y|-1}, a_{|y|-1}\right),\left(p_{|y|},-\right)\right)
$

と定義すると，シフトリデュース構文解析の探索問題は以下のように定式化される.

$
\hat{y}=\underset{y \in \mathcal{Y}(W)}{\arg \max } \sum_{\ell=0}^{|y|-1} \operatorname{Score}\left(p_{\ell}, a_{\ell}\right)
$

ここで $\mathcal{Y}(W)$ は， $W$ に対して解析可能な全ての完全アクション状態系列の集合を表す。一般に， $\operatorname{Score}(p, a)$ は識別モデルによってモデル化される.

$
\operatorname{Score}(p, a)=\Phi(p, a) \cdot \vec{\alpha}
$

素性関数 $\Phi$ は状態 $p$ とアクション $a$ を素性べクトル $\Phi(p, a)$ へ写像する関数である, 素性べク トルは発火した素性が対応する次元に 1 ，それ以外は 0 をとる。 $\vec{\alpha}$ は重みべクトルで，素性べ クトルとの内積をスコアとする。表 1 には本稿の実験で使用した素性テンプレートを示す。。 によって結合された要素は組み合わせ素性を表し, 状態 $p$ が持つ要素から全て計算される。さ らに，全ての素性は $a$ を結合して，状態 $p$ でアクション $a$ を行う判断をモ゙ル化している。例

図 4 中間英語文 “girl wo saw” に対する提案手法の動作事例

えば，図 4 の step5 の状態でレデュース SR-VP\# アクションを行う場合, 素性テンプレートの $s_{0} \cdot \mathrm{H} \circ s_{1} \mathrm{H} \circ s_{1}$.L は $\mathrm{V} \circ \mathrm{NP} \circ \mathrm{N} \circ$ レデュース $\mathrm{SR}-\mathrm{VP} \#$ という素性になり, 素性関数 $\Phi$ によって素性べクトルの対応する次元へ写像される。表の最も下の行は並べ替え文字列に関わる素性で,本稿ではこれらを非局所素性 (non-local feature, nf) と呼ぶ.

実装上では，解析性能を高めるため，ビームサーチ (Zhang and Clark 2008) により，各ステッ プではスコアが上位 beam 個の状態をビームスタックに保持して解析を行う.

## 3.3 曖昧性除去によるビームサーチの効率改善

単一言語のITGに従って, ある文字列の並べ替えを行う場合, 様々な導出過程から同一の並 べ替え文字列を作り出すことができる。例えば，図 5 のような例である.
表 1 素性テンプレート

 \\

$t$ は品詞夕グを表す。○は要素の結合を表す.

図 5 複数の導出による並べ替えの曖昧性

これは元の文 “e1 e2 e3 e4”を並べ替えない場合のITG木が複数存在することを示している. この現象を Spurious Ambiguity の問題と呼ぶ. 文献 (Wu 1997)では Spurious Ambiguityを解消するために, 左分岐重視 (Left heavy) の ITG を提案しているが, 図 2 のような一般的な複数 の非終端記号を持つ文法規則において，一意な構造に変換する方法は自明ではない.

シフトリデュース構文解析におけるビームサーチでは, Spurious Ambiguity が及ぼす問題は 大きい，なぜなら，同じ並べ替え文字列を表現した元長な状態により，ビームスタックが無駄 に消費されるからである．実際にこのことは第 4.2 節の実験で示す.

提案法では, この問題に対応するため, 2 つの手法を活用する．1つは文献 (Huang and Sagae 2010）の動的計画法に基づくシフトリデュース構文解析法を適用することである。この手法で は，識別モデルの素性ベクトルが同じになる状態を結合し，ビームスタック上に不要な解を保持する必要がなくなる。そのため，壳長な状態の多くを効率的に抑えることができる 5 .

もう1つは並べ替え文字列を解析と同時に構築し, ハッシュテーブルによって同じ文字列を

持つ状態を枝刈りする方法である．同じステップにある状態で，並べ替え文字列とスタック要素 $s_{0}$ と $s_{1}$ の部分木のルート非終端記号が全て一致する場合, モデルスコアの低い方の状態を 削除する， $s_{0}$ と $s_{1}$ のルート非終端記号を考慮するのは, 解析エラーを軽減するためである.

## $3.4 \mathrm{CKY$ 構文解析との計算量比較}

シフトリデュース構文解析は最適解を求められる保証はないが, 入力文長に対して, 線形時間に動作するという利点がある。一方で, CKY 構文解析法は最適解を求めることはできるが, 1 次の主辞・従属辞関係を考慮した場合, 最悪計算量が $O\left(n^{5}|V|^{3}\right)$ に及ぶことが知られている ( $n$ は入力文長, $|V|$ は非終端記号の集合サイズ) (Eisner and Satta 1999).

さらに, 単一言語のITGに対して, 第 3.2 節で定義したような並べ替え単語列の左端単語 $w_{l e f t}$ と右端単語 $w_{\text {right }}$ を特徴量（非局所素性）に考慮すると, リデュース MR に対応する CKY 構文解析の推論規則は以下のようになる.

$
\frac{\left[i, h, k, \mathrm{X}, w_{\text {left }}, w_{\text {right }}\right]\left[k, h^{\prime}, j, \mathrm{X}^{\prime}, w_{\text {left }}^{\prime}, w_{\text {right }}^{\prime}\right]}{\left[i, h^{\prime}, j, \mathrm{X}^{\prime}, w_{\text {left }}, w_{\text {right }}^{\prime}\right]} \quad \mathrm{X}^{\prime \prime} \rightarrow \mathrm{XX}^{\prime} \in P
$

ここで $\left[i, h, k, \mathrm{X}, w_{\text {left }}, w_{\text {right }}\right]$ はある 1 つの CKYアイテムを表し, $i, k$ はアイテムが表現する解析結果の左端と右端のインデックス, $h$ は主辞のインデックスを表す.この推論規則では, 長 さ $n$ に対する 9 つの自由変数 $i, h, k, h^{\prime}, j, w_{\text {left }}, w_{\text {right }}, w_{\text {left }}^{\prime}, w_{\text {right }}^{\prime}$, 非終端記号の集合 $V$ から 3 つの記号 $\mathrm{X}, \mathrm{X}, \mathrm{X}$ ”を考慮するため, 計算量は $O\left(n^{9}|V|^{3}\right)$ となる. 本稿では, 主辞は必ず後置す ることを仮定しているため, $h$ と $h^{\prime}$ はそれぞれ $k$ とから参照でき, 計算量は $O\left(n^{7}|V|^{3}\right)$ とな る. $N$-gram を考慮した構文解析がこのような高い計算量に及ぶことは, 文献 (Li, Zhang, Che, Liu, Chen, and Li 2011)の係り受けと品詞夕グ付けの同時解析でも言及されている（品詞タグ 付けの場合, 連接部分の計算量は $n$ ではなく, 品詞の候補数となる).

CKY 構文解析ではある CKY アイテムに対して，ビタビスコア $\beta$ を最大にする解をボトム アップに計算していく.

$
\begin{array}{r}
\beta\left(\left[i, j, \mathrm{X}^{\prime \prime}, w_{\text {left }}, w_{\text {right }}^{\prime}\right]\right)=\max _{k, w_{\text {right }}, w_{\text {left }}^{\prime}, \mathrm{X}, \mathrm{X}}\left.\{\beta\left(\left[i, k, \mathrm{X}, w_{\text {left }}, w_{\text {right }}\right]\right) \cdot \beta\left(\left[k, j, \mathrm{X}^{\prime}, w_{\text {left }}^{\prime}, w_{\text {right }}^{\prime}\right]\right)\right. \\
\left.\cdot p\left(\mathrm{X}^{\prime \prime} \rightarrow \mathrm{XX}^{\prime}\right) \cdot n f\left(w_{\text {right }}, w_{\text {left }}^{\prime}\right)\right.\} .
\end{array}
$

$p$ は規則のスコア, $n f$ は並べ替え文字列から計算される 2-gram モデルなどの非局所素性に関 わるスコアである． $N$-gram を考慮した CKY 構文解析の計算量は Hook Trick と呼ばれる分配法則によってさらに削減できる (Huang, Zhang, and Gildea 2005). Hook Trick は式 (4)の右辺 に対して，次のような式変換を行う（max 演算は積に対して分配的であることに従う）.

$
\begin{aligned}
\max _{k, w_{\text {left }}^{\prime}, \mathrm{X}},\left.\{\max _{w_{\text {right }}, \mathrm{X}}\left.\{\beta\left(\left[i, k, \mathrm{X}, w_{\text {left }}, w_{\text {right }}\right]\right) \cdot p\left(\mathrm{X}^{\prime \prime} \rightarrow \mathrm{XX}^{\prime}\right) \cdot n f\left(w_{\text {right }}, w_{\text {left }}^{\prime}\right)\right.\}\right. \\
\left.\cdot \beta\left(\left[k, j, \mathrm{X}^{\prime}, w_{\text {left }}^{\prime}, w_{\text {right }}^{\prime}\right]\right)\right.\}
\end{aligned}
$

内部 max 演算では $i, j, k, w_{l e f t}, w_{r i g h t}, w_{l e f t}^{\prime}$ と $\mathrm{X}, \mathrm{X}^{\prime}, \mathrm{X}^{\prime \prime}$ を考慮し, 外部 $\max$ 演算では $i, j, k, w_{l e f t}$, $w_{\text {left }}^{\prime}, w_{\text {right }}^{\prime}$ と X',X"を考慮する.これより計算量は $O\left(n^{7}|V|^{3}\right)$ から $O\left(n^{6}|V|^{3}+n^{6}|V|^{2}\right)$ とな る. しかし, このような計算量は一般にコストが大きく, 提案法と比較して, 実用的ではない.

非局所素性を考慮した CKY 構文解析は Cube Pruning と呼ばれる近似解法 (Huang and Chiang 2007) を使うと, $O\left(n^{3}|V|^{3}\right)$ の CKY 構文解析として解くことはできるが, 最適解が求められる 保証はなくなる。これより, CKY 法や同様の原理（動的計画法）に基づくBerkeley 構文解析な どと比較して, 提案法は単語並べ替え問題において, 実用性の観点から大きな利点がある.

## 4 実験

## 4.1 実験データとツール

実験には NTCIR-9 と NTCIR-10の特許データを使い，日英翻訳を行った．日本語の形態素解析 には Mecab 6 を使用した，英語文の語彙化構文木を作成するため, Enju (Miyao and Tsujii 2008) を用いて全ての英語文を解析した．機械翻訳には，デコーダに Moses (Koehn, Hoang, Birch， Callison-Burch, Federico, Bertoldi, Cowan, Shen, Moran, and Zens 2007), 単語アライメントに GIZA++ (Och and Ney 2003), 言語モデルに SRILM (Stolcke, Zheng, Wang, and Abrash 2011) を用いた。データ及びッールについては表 2 と表 3 にまとめる.

Enjuによって解析した語彙化構文木を文献 (Isozaki et al. 2012)の規則によって中間英語木 へと変換した，削除した冠詞の挿入マークは，その冠詞を含む句の中で最も葉に近い非終端記号に付与した. 冠詞を含む句の非終端記号がない場合, 品詞に挿入マークを付与した. 日本語 の助詞挿入は文献 (Isozaki et al. 2012)に従って行った.

提案手法の単語並べ替えモデルの学習は平均化パーセプトロン (Collins and Roark 2004)で 行った. また, 学習データの量が多いため, 素性ハッシング (Shi, Petterson, Dror, Langford,

表 2 NTCIR-9 と NTCIR-10デー夕

表 3 実験に使用したツール

Smola, and Vishwanathan 2009) を使って, 素性計算を高速化した. 提案手法, 及び, 比較手法 での冠詞挿入によって “a/an”が挿入された場合，挿入位置の後ろに位置する単語の 1 文字目が 母音の場合, an を㨁入し, 子音の場合, aを挿入して翻訳結果を出力した. 日本語助詞は事後並べ替えの解析時には 1 単語として扱い, 翻訳結果の出力時には全て取り除いた.

## 4.2 単語並べ替えに関する実験結果

提案手法の単語並べ替え性能を調べるため, 全訓練デー夕の中間英語木 $3,191,228$ 文からラン ダムに 300,000 文を抽出し, 並べ替えのための構文解析器を学習した. ただし, 中間英語木に おいて冠詞削除, 及び, 日本語助詞の挿入は行っておらず, ここでは並べ替えのみ（挿入アク ションは用いない）を行うようにしている。なぜなら, 冠詞削除や日本語助詞の挿入は翻訳時 の単語アライメント性能向上を意図した操作であり, ここでは純粋に提案法の構文解析, 及び,単語並べ替え性能を調べることが目的だからである.

図 6 では提案法を学習したときの学習イテレーションと開発データに対する $\mathrm{F}$ 値の関係, 図 7 には BLEU スコア (Papineni, Roukos, Ward, and Zhu 2002)との関係を示す.F 値の計算は $\mathrm{EVALB}^{7}$ を用いて評価した8. “Base"は通常のビームサーチ, “DP” は動的計画法付きビーム サーチ，“Hash”は第 3.3 節で述べたハッシュテーブルによる枝刈りを表し，各システムはビー ム幅 12 で訓練した. 図 6 と図 7 から, “DP” やHash”に比べて, “Base"による学習の効率が悪 いことがわかる。図 8 と図 9 では “Base” のビーム幅を $12,24,36$ にしたときの学習イテレー ションと開発データに対する $\mathrm{F}$ 値, 及び, BLEU との関係を示した. これから “Base”による学習は，“DP”や“Hash”よりもビーム幅を大きく設定しなければ，学習が円滑に行えないことが わかる。

表 4 は，NTCIR-9 のテストデータの中間英語文を各システムによって解析したときの BLEU,

図 6 学習のイテレーション回数と開発デー夕 に対する $\mathrm{F}$ 値

図 7 学習のイテレーション回数と開発データ に対する BLEU スコア

RIBES (Isozaki, Hirao, Duh, Sudoh, and Tsukada 2010), 構文解析性能（再現率，適合率, F 値, 文正解率), 解析時間を示した. 文献 (Goto et al. 2012) は論文から抜粋した数値を示す. Berkeley 構文解析はデフォルト設定で学習し, 6 回の学習イテレーションを行った。結果から は，提案手法のうち “DP” 法が他の手法に比べ，高い性能を達成できることがわかった.

表 5 では，表 1 の非局所素性を全て取り除いた (nf. 無し) モデルを学習し, nf. 有りのモデル と比較した，実験結果からは，非局所素性が並べ替えの性能向上に寄与していることがわかる.表 6 では, $k$-best 出力時に, 出力リストの中にどれだけの種類の文字列があるかを示す. 表 6

図 8 “Base”法の学習時におけるビーム幅と開発データに対する $\mathrm{F}$ 値の関係：テスト時 のビーム幅は訓練時と同じに設定

図 9 “Base”法の学習時におけるビーム幅と開発データに対するBLEU スコアの関係:テ スト時のビーム幅は訓練時と同じに設定

表 4 NTCIR-9 テストデー夕に対する語順並べ替え, ITG 構文解析性能と解析時間

表 5 非局所素性 (nf.) による構文解析, 及び, 語順並べ替え性能への影響

ビーム幅は全て 12 に設定.
表 $6 k$-best リスト中に存在する文字列種類

文字列種類数の合計 $/ k$-best リストサイズの合計.

には，テストデータに対して出力した各 $k$-best リスト中の文字列種類数の合計 $/ k$-best リス トサイズの合計を示し, 分子の数が多い程, 多様な並べ替え文字列を出力できることを意味す る。例えば，“Base”法の 64-best リストには， 3，4 種類程度の並べ替え文字列しか存在せず， Berkeley 構文解析でも同様に，同じ文字列を表す解析結果を大量に出力しているがわかる。一方, “Hash”法ではこれらの圥長な表現を排除し, 多様な解析結果を出力できている.

以上の実験から，シフトリデュース法による単語並べ替え性能を向上させるには，Spurious Ambiguity の問題に対処し, ビーム幅を効率的に活用することが極めて重要であることがわかっ た. よって，以下の翻訳実験では，提案法は全て “DP”法を用いて行う。“Hash”は “DP”より も同じ文字列を多く排除できる一方で，文字列を動的に作り出す必要があり，計算コストが高 い. “Hash”法のコスト削減や “DP”法との併用については，今後の課題である.

## 4.3 翻訳に関する実験結果

通常の日英翻訳器は, Mosesの distortion limitを 0, 6, 12, 20 に設定し, 言語モデルには訓練データの全英語文から学習した 6-gram 言語モデルを使用した. Moses の学習は BLEU に対 して Minimum error rate training (MERT) (Och 2003) を行った.

単語並べ替えによる翻訳実験では，学習デー夕に中間英語木 $3,191,228$ 文から抽出した中間英語文を使用し，日本語から中間英語文への翻訳モデルを作成した，中間英語文の言語モデルは 6-gram まで学習し, Mosesの distortion limit (dist)は 0 に設定した. Mosesの学習は BLEUに 対して MERT で行った。事後並べ替えは翻訳器から出力した中間英語文の 1-best を単語並べ替 えモデルで元の英語文にし，評価を行った。

表 7 に提案手法と他の手法の実験結果を示す. 表 7 からは提案手法が文献 (Goto et al. 2012) のモデルを上回る性能を達成していることがわかる. 文献 (Goto et al. 2012)の実験結果は我々 の実験によるものではないが，実験に使用したツールやデータは同一のものであることを明記 しておく. さらに， 3.2 節で定義した非局所素性 (nf.)を使ったモデル (nf. 有り)と取り除いたモ デル (nf. 無し) を比較すると, 非局所素性が有効であることがわかる. BLEU スコアを使って,有意水準 $5 \%$ で 2 項検定を行ったところ, nf. 無しモデルと nf. 有りモデルには有意な差が確認さ

れた。また，非局所素性を使うことによる解析時間への影響も少ない.

## 4.4 実験結果の分析

提案手法では単語並べ替えと冠詞挿入を同時に行っているが，それらを同時解析することの 利点を分析するため，様々なシステムとの比較を行った．NTCIR-9と-10のテストデータに対 する実験結果は表 8 に示す.

単語並べ替えと冠詞生成の同時処理の有効性 (1.2.3.4.) 2. の結果は 1. の結果から冠詞を 削除したときの性能を示している，冠詞を削除すると，BLEU 評価尺度による翻訳精度が極端 に落ちることがわかる。これは BLEUが $N$-gram 単位で評価を行う尺度だかである。

次に，3.の結果は， $N$-gram 手法によって 2. の翻訳文へ冠詞挿入を行ったときの結果を示し

表 7 システム比較

解析時間は 1 文当たりの平均秒を示している。**は我々の実験によるものではなく, 論文からの引用を 意味する.

表 8 単語並べ替えと冠詞插入に関する各システムの精度比較

J-HFE は日本語から中間英語, J-E は日本語から英語への翻訳を意味する.

ている. $N$-gram 手法は文献 (Goto et al. 2012) と同様の冠詞挿入手法を意味する ${ }^{9}$. この結果 から， $N$-gram 手法によって性能は向上するが，1.の同時解析ほどの性能は得られないことがわ かる.

提案手法と $N$-gram 手法による翻訳結果を比較すると，提案手法の方が冠詞挿入を多く行っ ていることがわかった， $N$-gram 手法では冠詞挿入を行う程, 文が長くなるため, 確率が小さく なり，なるべく短い文が選ばれてしまうためであると考察される.

4. は, Mosesによって日英翻訳を行うとき, 英語データから冠詞を削除し, 翻訳結果出力後 に $N$-gram 手法で冠詞挿入した結果を示している。この結果から，単純に冠詞を後編集で挿入 するだけでは，翻訳性能を改善できないことがわかる.

日英対訳データから冠詞を除去することの意味 (1.5.) 5. では, 冠詞を英語文から削除せず,提案手法で単語並べ替えのみを行った結果を示している。このアプローチでは翻訳性能を向上 させることができなかった. この理由は中間英語文で “the the the”のように冠詞が連続して出現してしまうため，翻訳文にも不要な冠詞が出現してしまうからである.

Berkeley 構文解析器との比較 (1. 2. 3. 6. 7.) Berkeley 構文解析器と提案手法を比較する. Berkeley 構文解析器は提案手法と同様の 500,000 文を使って学習した. 2. 3. と 6. 7.の結果か ら, Berkeley 構文解析器による単語並べ替え性能と提案手法による単語並べ替えの性能はほぼ 同等であることがわかる，一方，1.と 7.の結果に対して，BLEU スコアを使って，有意水準 $5 \%$ で 2 項検定を行ったところ, それらには有意な差が確認できた。これは提案法の冠詞生成が $N$-gram 冠詞生成法よりも高い精度であるためと言える.

また, Berkeley 構文解析器と提案手法の解析速度を比較すると, 提案手法のビーム幅を 156 に設定したときにちょうど同程度の解析時間となる。さらに, 提案手法は冠詞挿入も行ってい るのに対し, Berkeley 構文解析器は $N$-gram 手法による冠詞挿入を未だ行っていない時点での 解析時間であり，提案法が従来法よりも効率的に動作することがわかる.

## 5 関連文献

事後並べ替え手法は須藤ら (Sudoh et al. 2011) によって提案された. 須藤らは日本語文から 中間英語文への翻訳を行った後，再び機械翻訳によって中間英語文を英語文へと翻訳している.後藤らは中間英語文から英語文への並べ替えを構文解析によって行うことで, 須藤らの手法を

上回る精度を達成した。本稿でも同様に，構文解析によって事後並べ替えをモデル化した．提案法はシフトリデュース構文解析法を基盤にしており，単語並べ替えと冠詞生成を同時に処理 する仕組みや非局所素性の導入を行うことで，精度と解析効率をさらに向上させた。これらの 点から，提案法は後藤らの手法と明確に区別できる.

文献 (Knight and Chander 1994) では，機械翻訳の後編集において冠詞挿入を行うことの重要性を提唱し，英語文への冠詞挿入を決定木によって行った．後続的にいくつかの文献で英語文 への冠詞挿入を機械学習によって解く手法が提案されているが (Minnen, Bond, and Copestake 2000; Turner and Charniak 2007), 構文解析と冠詞挿入を同時に行う枠組みを提唱したのは，著者らの知る限り，本稿が初めてである。

提案手法で採用したシフトリデュース構文解析法は様々な文法理論の構文解析に応用されて いる。例えば，依存文法 (Yamada and Matsumoto 2003; Nivre 2003; Huang and Sagae 2010),文脈自由文法 (Sagae and Lavie 2006), 組み合わせ範疇文法 (Zhang and Clark 2011) などへの応用がある. シフトリデュース構文解析法を単一言語のITGへ応用した例は本稿が初めてである.

## 6 まとめと今後の課題

本稿では，シフトリデュース構文解析法をべースにした単語並べ替えと冠詞生成の同時逐次処理法を提案し，日英機械翻訳における事後並び替え問題に適用した。日英特許翻訳タスクを 使った実験から，提案法は文献 (Goto et al. 2012) における事後並べ替え法の解析精度と効率の 問題を改善できることがわかった，特に，解析効率の面では，理論上の計算量，及び，実際の 解析速度において, 従来法より優れることを示した. また, 冠詞生成を単語並べ替えと同時に モデル化することが翻訳精度の向上につながることを示した.

提案法は，本質的には事後並べ替えだけでなく，事前並べ替えにも適用可能である。たたし，文献 (Isozaki et al. 2012)の主辞後置変換規則を用いずに，モデルを学習するためのデータを作成する方法は自明ではない。 よって, 単語アライメントと構文木から単語並べ替え構文解析器 の学習データを作るための手法開発が今後の課題である。また, 提案手法は翻訳結果の 1-best に対して，動作する仕組みであったが，今後は多様な翻訳結果に対して動作させるため，翻訳 ラティスを解析する仕組みに拡張することが課題となる.

## 参考文献

Chiang, D. (2005). "A Hierarchical Phrase-based Model for Statistical Machine Translation." In Proceedings of the 43rd Annual Meeting on Association for Computational Linguistics, pp. 263-270.

Collins, M., Koehn, P., and Kučerová, I. (2005). "Clause Restructuring for Statistical Machine Translation." In Proceedings of the 43rd Annual Meeting on Association for Computational Linguistics, pp. 531-540.

Collins, M. and Roark, B. (2004). "Incremental Parsing with the Perceptron Algorithm." In Proceedings of the 42nd Annual Meeting on Association for Computational Linguistics, p. 111.

DeNero, J. and Uszkoreit, J. (2011). "Inducing Sentence Structure from Parallel Corpora for Reordering." In Proceedings of the Conference on Empirical Methods in Natural Language Processing, pp. 193-203.

Eisner, J. and Satta, G. (1999). "Efficient Parsing for Bilexical Context-Free Grammars and Head Automaton Grammars." In Proceedings of the 37st Annual Meeting on Association for Compu tational Linguistics, pp. 457-464.

Galley, M., Graehl, J., Knight, K., Marcu, D., DeNeefe, S., Wang, W., and Thayer, I. (2006). "Scalable Inference and Training of Context-rich Syntactic Translation Models." In Proceedings of the 21st International Conference on Computational Linguistics and the 44th annual meeting of the Association for Computational Linguistics, pp. 961-968.

Goto, I., Chow, K. P., Lu, B., Sumita, E., and Tsou, B. K. (2013). "Overview of the Patent Machine Translation Task at the NTCIR-10 Workshop." In Proceedings of NTCIR, pp. 260-286.

Goto, I., Lu, B., Chow, K. P., Sumita, E., and Tsou, B. K. (2011). "Overview of the Patent Machine Translation Task at the NTCIR-9 Workshop." In Proceedings of NTCIR, pp. 559-578.

Goto, I., Utiyama, M., and Sumita, E. (2012). "Post-ordering by Parsing for Japanese-English Statistical Machine Translation." In Proceedings of the 50th Annual Meeting of the Association for Computational Linguistics, pp. 311-316.

Graehl, J. and Knight, K. (2004). "Training Tree Transducers." In Proceedings of HLT-NAACL, pp. 105-112.

Huang, L. and Chiang, D. (2007). "Forest Rescoring: Faster Decoding with Integrated Language Models." In Proceedings of the 45th Annual Meeting on Association for Computational Linguistics, Vol. 45, p. 144.

Huang, L. and Sagae, K. (2010). "Dynamic Programming for Linear-time Incremental Parsing." In Proceedings of the 48th Annual Meeting of the Association for Computational Linguistics, pp. 1077-1086.

Huang, L., Zhang, H., and Gildea, D. (2005). "Machine Translation as Lexicalized Parsing with Hooks." In Proceedings of the Ninth International Workshop on Parsing Technology, pp. 65-73.

Isozaki, H., Hirao, T., Duh, K., Sudoh, K., and Tsukada, H. (2010). "Automatic Evaluation of

Translation Quality for Distant Language pairs." In Proceedings of the 2010 Conference on Empirical Methods in Natural Language Processing, pp. 944-952. Association for Computational Linguistics.

Isozaki, H., Sudoh, K., Tsukada, H., and Duh, K. (2012). "HPSG-based Preprocessing for Englishto-Japanese Translation." ACM Transactions on Asian Language Information Processing (TALIP), 11 (3).

Knight, K. and Chander, I. (1994). "Automated Postediting of Documents." In Proceedings of the National Conference on Artificial Intelligence, p. 779.

Koehn, P., Hoang, H., Birch, A., Callison-Burch, C., Federico, M., Bertoldi, N., Cowan, B., Shen, W., Moran, C., and Zens, R. (2007). "Moses: Open Source Toolkit for Statistical Machine Translation." In Proceedings of the 45th Annual Meeting of the ACL on Interactive Poster and Demonstration Sessions, pp. 177-180.

Koehn, P., Och, F., and Marcu, D. (2003). "Statistical Phrase-based translation." In Proceedings of the 2003 Conference of the North American Chapter of the Association for Computational Linguistics on Human Language Technology-Volume 1, pp. 48-54.

Li, Z., Zhang, M., Che, W., Liu, T., Chen, W., and Li, H. (2011). "Joint Models for Chinese POS Tagging and Dependency Parsing." In Proceedings of the Conference on Empirical Methods in Natural Language Processing, pp. 1180-1191. Association for Computational Linguistics.

Minnen, G., Bond, F., and Copestake, A. (2000). "Memory-based Learning for Article Generation." In Proceedings of the 2nd workshop on Learning language in logic and the 4th conference on Computational natural language learning-Volume 7, pp. 43-48.

Miyao, Y. and Tsujii, J. (2008). "Feature Forest Models for Probabilistic HPSG Parsing." Computational Linguistics, 34 (1), pp. 35-80.

Nivre, J. (2003). "An Efficient Algorithm for Projective Dependency Parsing." In Proceedings of the 8th International Workshop on Parsing Technologies.

Och, F. J. (2003). "Minimum Error Rate Training in Statistical Machine Translation." In Proceedings of the 41st Annual Meeting on Association for Computational Linguistics-Volume 1, pp. 160-167. Association for Computational Linguistics.

Och, F. J. and Ney, H. (2003). "A Systematic Comparison of Various Statistical Alignment Models." Computational linguistics, 29 (1), pp. 19-51.

Papineni, K., Roukos, S., Ward, T., and Zhu, W.-J. (2002). "BLEU: A Method for Automatic Evaluation of Machine Translation." In Proceedings of the 40th annual meeting on association for computational linguistics, pp. 311-318. Association for Computational Linguistics.

Petrov, S. and Klein, D. (2007). "Improved Inference for Unlexicalized Parsing." In Human lan-
guage technologies 2007: The Conference of the North American Chapter of the Association for Computational Linguistics, pp. 404-411.

Sagae, K. and Lavie, A. (2006). "A Best-first Probabilistic Shift-reduce Parser." In Proceedings of the COLING/ACL on Main Conference Poster Sessions, pp. 691-698.

Shi, Q., Petterson, J., Dror, G., Langford, J., Smola, A., and Vishwanathan, S. (2009). "Hash Kernels for Structured Data." The Journal of Machine Learning Research, pp. 2615-2637.

Stolcke, A., Zheng, J., Wang, W., and Abrash, V. (2011). "SRILM at Sixteen: Update and Outlook." In Proceedings of IEEE Automatic Speech Recognition and Understanding Workshop.

Sudoh, K., Wu, X., Duh, K., Tsukada, H., and Nagata, M. (2011). "Post-ordering in Statistical Machine Translation." In Proceedings of MT Summit.

Tromble, R. and Eisner, J. (2009). "Learning Linear Ordering Problems for Better Translation." In Proceedings of the 2009 Conference on Empirical Methods in Natural Language Processing: Volume 2, pp. 1007-1016.

Turner, J. and Charniak, E. (2007). "Language Modeling for Determiner Selection." In Human Language Technologies 2007: The Conference of the North American Chapter of the Association for Computational Linguistics; Companion Volume, Short Papers, pp. 177-180. Association for Computational Linguistics.

Wu, D. (1997). "Stochastic Inversion Transduction Grammars and Bilingual Parsing of Parallel Corpora." Computational Linguistics, 23 (3), pp. 377-403.

Yamada, H. and Matsumoto, Y. (2003). "Statistical Dependency Analysis with Support Vector Machines." In Proceedings of the 8th International Workshop on Parsing Technologies, Vol. 3. Zhang, Y. and Clark, S. (2008). "A Tale of Two Parsers: Investigating and Combining Graphbased and Transition-based Dependency Parsing using Beam-Search." In Proceedings of the 2008 Conference on Empirical Methods in Natural Language Processing, pp. 562-571.

Zhang, Y. and Clark, S. (2011). "Shift-reduce CCG Parsing." In Proceedings of the 49th Meeting of the Association for Computational Linguistics, pp. 683-692.

## 略歴

林克彦：2013 年, 奈良先端科学技術大学院大学博士後期課程修了. 現在, NTTコミュニケーション科学基礎研究所に所属. 博士 (工学). 構文解析, 機械翻訳に関する研究に従事. ACL, 情報処理学会, 言語処理学会各会員.

須藤 克仁 : 2000 年, 京都大学工学部卒業. 2002 年, 同大大学院情報学研究科修士課程修了. 同年, 日本電信電話株式会社入社. 音声言語処理, 統計的機械翻訳に関する研究に従事. ACL, 情報処理学会, 言語処理学会, 日本音響学
会各会員.

塚田元：1987 年, 東京工業大学理学部情報科学科卒業. 1989 年, 同大学院理工学研究科修士課程修了. 同年, 日本電信電話株式会社入社. 現在, NTT コミュニケーション科学基礎研究所に所属. 統計的機械翻訳の研究に従事. $\mathrm{ACL}$, 電子情報通信学会, 情報処理学会, 人工知能学会, 言語処理学会, 日本音響学会各会員.

鈴木 潤：2001 年, 慶應義塾大学大学院理工学研究科計算機科学専攻修士課程修了. 同年, 日本電信電話株式会社入社. 2005 年 奈良先端大学院大学博士後期課程修了. 2008 2009 年 MIT CSAIL 客員研究員. 現在, NTT コミュニ ケーション科学基礎研究所に所属. 博士 (工学). 主として自然言語処理, 機械学習に関する研究に従事. ACL, 情報処理学会, 言語処理学会各会員.

永田 昌明：1987 年, 京都大学大学院工学研究科修士課程修了. 同年, 日本電信電話株式会社入社. 現在, NTTコミュニケーション科学研究所主幹研究員 (上席特別研究員)．博士 (工学)．統計的自然言語処理の研究に従事. ACL,電子情報通信学会, 情報処理学会, 人工知能学会, 言語処理学会各会員.


# 組合せ最適化入門：線形計画から整数計画まで
## 梅谷 俊治 $\dagger$

\begin{abstract}
線形計画問題において変数が整数値を取る制約を持つ整数計画問題は, 産業や学術 の幅広い分野における現実問題を定式化できる汎用的な最適化問題の 1 つであり，最近では分枝限定法に様々なアイデアを盛り达んだ高性能な整数計画ソルバーがい くつか公開されている。しかし, 整数計画問題では線形式のみを用いて現実問題を 記述する必要があるため, 数理最適化の専門家ではない利用者にとって現実問題を 整数計画問題に定式化することは決して容易な作業ではない. 本論文では, 数理最適化の専門家ではない利用者が現実問題の解決に取り組む際に必要となる整数計画 ソルバーの基本的な利用法と定式化の技法を解説する。

キーワード : 組合せ最適化, 線形計画, 整数計画, 数理最適化
\end{abstract}

## Introduction to Combinatorial Optimization: Model Building in Integer Programming

\author{
ShUnJI UMEtani ${ }^{\dagger}$
}

The integer programming (IP) model is a general-purpose optimization model that can formulate a surprisingly wide class of real applications using integer variables in linear programming (LP) models. Recent development in IP software systems has significantly improved our ability to solve large-scale instances. However, it is still difficult for most non-expert users to formulate real applications into IP models, because all conditions need to be written in linear inequalities. This paper demonstrates how to use IP software systems and formulate real applications into IP models.

Key Words: Combinatorial optimization, Linear Programming, Integer Programming, Mathematical optimization

## 1 はじめに

線形計画問題において全てもしくは一部の変数が整数値を取る制約を持つ（混合）整数計画問題は, 産業や学術の幅広い分野における現実問題を定式化できる汎用的な最適化問題の 1 つ である。 近年, 整数計画ソルバー（整数計画問題を解くソフトウェア）の進歩は著しく, 現在で は数千変数から数万変数におよぶ実務上の最適化問題が次々と解決されている。また, 商用・非商用を含めて多数の整数計画ソルバーが公開されており, 整数計画問題を解くアルゴリズム を知らなくても定式化さえできれば整数計画ソルバーを利用できるようになったため, 数理最

適化以外の分野においても整数計画ソルバーを利用した研究が急速に普及している.

最適化問題は, 与えられた制約条件の下で目的関数 $f(\boldsymbol{x})$ の值を最小にする解 $\boldsymbol{x}$ を 1 つ求める 問題であり, 線形計画問題は，目的関数が線形で制約条件が線形等式や線形不等式で記述され る最も基本的な最適化問題である。 通常の線形計画問題では, 全ての変数は連続的な実数値を 取るが, 全ての変数が離散的な整数值のみを取る線形計画問題は整数（線形）計画問題と呼ば れる。また, 一部の変数が整数値のみを取る場合は混合整数計画問題, 全ての変数が $\{0,1\}$ の 2 値のみを取る場合は 0-1 整数計画問題と呼ばれる。最近では非線形の問題も含めて整数計画問題と呼ばれる場合が多いが, 本論文では線形の問題のみを整数計画問題と呼ぶ．また, 混合整数計画問題や 0-1 整数計画問題も区別せずに整数計画問題と呼ぶ. 整数変数は離散的な值を取 る事象を表すだけではなく, 制約式や状態を切り替えるスイッチとして用いることが可能であ り，産業や学術の幅広い分野における現実問題を整数計画問題に定式化できる．組合せ最適化問題は, 制約条件を満たす解の集合が組合せ的な構造を持つ最適化問題であり, 解が集合, 順序, 割当て, グラフ, 論理値, 整数などで記述される場合が多い. 原理的に, 全ての組合せ最適化問題は整数計画問題に定式化できることが知られており, 最近では, 整数計画ソルバーの性能向上とも相まって, 整数計画ソルバーを用いて組合せ最適化問題を解く事例が増えている.

現実問題を線形計画問題や整数計画問題に定式化する際には, 線形式のみを用いて目的関数 と制約条件を記述する必要がある。こう書くと，扱える現実問題がかなり限定されるように思 われる，実際に，線形計画法の生みの親である Dantzig もWisconsin 大学で講演をした際に「残念ながら宇宙は線形ではない」と批判を受けている (今野 2005). しかし, 正確さを失うことな く現実問題を非線形計画問題に定式化できても最適解を求められない場合も多く, 逆に非線形 に見える問題でも変数の追加や式の変形により等価な線形計画問題や整数計画問題に変換でき る場合も少なくない. そのため, 現実問題を線形計画問題や整数計画問題に定式化してその最適解を求めることは，実用的な問題解決の手法として受け入れられている.

現在では, 整数計画ソルバーは現実問題を解決するための有用な道具として数理最適化以外 の分野でも急速に普及している。一方で，数理最適化の専門家ではない利用者にとって，線形式のみを用いて現実問題を記述することは容易な作業ではなく, 現実問題を上手く定式化でき ずに悩んだり，強力だが専門家だけが使う良く分からない手法だと敬遠している利用者も少な くない，そこで，本論文では，数理最適化の専門家ではない利用者が, 現実問題の解決に取り組 む際に必要となる整数計画ソルバーの基本的な利用法と定式化の技法を解説する。なお, 最近 の整数計画ソルバーはアルゴリズムを知らなくても不自由なく利用できる場合が多いため, 本論文では, 線形計画法, 整数計画法の解法および理論に関する詳しい説明は行わない. 線形計画法については (Chvatal 1983; 今野 1987), 整数計画法については (今野 1982; Nemhauser and Wolsey 1988; Wolsey 1998) が詳しい. また, 線形計画法, 整数計画法の発展の歴史については (Achterberg and Wunderling 2013; Ashford 2007; Bixby and Rothberg 2007; 今野 2005, 2014;

Lodi 2010) が詳しい.

## 2 線形計画問題と整数計画問題

線形計画問題は, 目的関数が線形で制約条件が線形等式や線形不等式で記述される最適化問題であり，一般に以下の標準形で表される.

$
\begin{array}{ll}
\operatorname{minimize} & \sum_{j=1}^{n} c_{j} x_{j} \\
\text { subject to } & \sum_{j=1}^{n} a_{i j} x_{j} \geq b_{i}, \quad i=1, \ldots, m, \\
& x_{j} \geq 0, \quad j=1, \ldots, n .
\end{array}
$

ここで, $a_{i j}, b_{i}, c_{j}$ は定数, $x_{j}$ は変数である. 制約式を全て満たす変数值の組を実行可能解と呼び,実行可能解全体の集合を実行可能領域と呼ぶ．実行可能解の中で目的関数の值を最小にする解が最適解であり，このときの目的関数の值を最適值と呼ぶ。線形計画問題は $\min \left.\{\boldsymbol{c}^{T} \boldsymbol{x} \mid \boldsymbol{A} \boldsymbol{x} \geq \boldsymbol{b}, \boldsymbol{x} \geq \boldsymbol{0}\right.\}$ と記述される場合も多い. ここで，各変数の非負条件 $x_{j} \geq 0$ を（非負）整数条件 $x_{j} \in \mathbb{Z}_{+} （ \mathbb{Z}_{+}$ は非負整数集合）に置き換えると整数計画問題となる。

線形計画問題では効率の良いアルゴリズムが開発されており，一番最初に単体法 ${ }^{1}$ が 1947 年 にDantzigによって提案されている。単体法は実用的には優れた性能を持つが，理論的には多項式時間アルゴリズムではない。その後，初めての多項式時間アルゴリズムとなる楕円体法が 1979 年に Khachiyan に, さらに実用的にも高速な内点法が 1984 年に Karmarkar によって提案 されている，現在では，単体法と内点法が実用的なアルゴリズムとして広く使われている．性能では内点法の方が優れているが，単体法は制約式や変数を追加して解き直す再最適化を効率良く実行できるため，単体法を用いた再最適化は整数計画問題を解く上で重要な役割を担って いる.

整数計画問題は実行可能解の数が有限となる場合が多く, 理論上は全ての実行可能解を列挙 すれば最適解が求められる。しかし，この種の列挙法は問題の規模の増加とともに走査する解 の個数が急激に増加（組合せ的爆発）するため実用的ではない. 整数計画問題は NP 困難と呼 ばれる問題のクラスに属することが計算の複雑さの理論により知られている。詳しい説明は省略するが，NP 困難問題の最適解を求めようとすると，最悪の場合に全ての実行可能解を列挙す るのと本質的に変わらない計算時間が必要であろうと予想されている².

整数計画問題では, 分枝限定法と切除平面法が代表的なアルゴリズムとして知られている.
 \neq \mathrm{NP}$ 予想として有名である.
}
分枝限定法は, 直接解くことが難しい問題をいくつかの小規模な部分問題に分解する分枝操作 と, 生成された部分問題のうち何らかの理由で最適解が得られないと判定されたものを除く限定操作の 2 つの操作を繰返し適用するアルゴリズムで, 整数計画問題以外にも多くの最適化問題で使われている。整数計画問題に対する分枝限定法は 1960 年に Land と Doigによって提案 されており, 暫定解 (これまでの探索で得られた最良の実行可能解）から得られる最適値の上界值と, 線形計画緩和問題（各変数の整数条件を緩和して得られる線形計画問題）を解いて得ら れる最適值の下界値を利用した限定操作で無駄な探索を省くアルゴリズムである。切除平面法 は 1958 年に Gomory によって提案されており, 線形計画緩和問題から始めて, 切除平面（実行可能な整数解を残しつつ線形計画緩和問題の最適解を除去する制約式）を組織的に生成し，線形計画緩和問題に逐次追加することで最終的に整数最適解を得るアルゴリズムである。切除平面法は単体では実用的なアルゴリズムではなく，現在では，分枝限定法の内部で切除平面を逐次追加し, 変数値の固定や部分問題に対する下界値の改善を実現する分枝切除法が大きな成功 を収めている。

## 3 整数計画問題の応用事例

これまで, 産業や学術の幅広い分野における多くの現実問題が整数計画問題に定式化されて きた. ここでは自然言語処理の応用事例として文書の自動要約 (Filatova and Hatzivassiloglou 2004; Gillick and Favre 2009; 平尾, 鈴木, 磯崎 2009; McDonald 2007; 西川, 平尾, 牧野, 松尾, 松本 2013; 高村, 奥村 2008) と文の対応付け (西野, 平尾, 永田 2013; 西野, 鈴木, 梅谷,平尾, 永田 2014) を紹介する.

## 3.1 文書の自動要約

文書の自動要約は与えられた単数もしくは複数の文書から要約を生成する問題であり，与え られた文書から必要な文の組合せを選択する手法が知られている。文書要約の問題には，1つ だけの文書が与えられる単一文書の要約と, 同じトピックについて記述した複数の文書が与え られる複数文書の要約がある ${ }^{3}$.

まず，単一文書の要約を考える， $m$ 個の概念と $n$ 個の文と要約長 $L$ が与えられる．概念 $i$ の 重要度を $w_{i}(>0)$, 文 $j$ の長さを $l_{j}$, 文 $j$ に含まれる概念 $i$ の数を $a_{i j} \in\{0,1\}$ と表す. $x_{j}$ は変数で，文 $j$ が要約に含まれるならば $x_{j}=1$, そうでなければ $x_{j}=0$ の値を取る. 文 $j$ に含まれ る概念の重要度の合計 $p_{j}=\sum_{i=1}^{m} w_{i} a_{i j}$ はあらかじめ計算できるので, 要約長 $L$ を超えない範

囲で重要度の合計が最大となる要約を構成する問題は以下の通りに定式化できる。

$
\begin{aligned}
\operatorname{maximize} & \sum_{j=1}^{n} p_{j} x_{j} \\
\text { subject to } & \sum_{j=1}^{n} l_{j} x_{j} \leq L, \\
& x_{j} \in\{0,1\}, \quad j=1, \ldots, n .
\end{aligned}
$

この問題はナップサック問題と呼ばれる NP 困難のクラスに属する組合せ最適化問題であるが,動的計画法や分枝限定法に基づく効率良いアルゴリズムが知られている (Kellerer, Pferschy, and Pisinger 2004; Korte and Vygen 2012).

次に複数文書の要約を考える。複数の文書に類似した内容の文が含まれる場合はこれらの文 が同時に選択され，生成された要約の中に類似した内容が繰返し現れる恐れがある。そこで，概念 $i$ が要約に含まれているならば $z_{i}=1$, そうでなければ $z_{i}=0$ の値を取る変数 $z_{i}$ を導入す ると以下の通りに定式化できる。

$
\begin{aligned}
\operatorname{maximize} & \sum_{i=1}^{m} w_{i} z_{i} \\
\text { subject to } & \sum_{j=1}^{n} a_{i j} x_{j} \geq z_{i}, \quad i=1, \ldots, m, \\
& \sum_{j=1}^{n} l_{j} x_{j} \leq L, \\
& x_{j} \in\{0,1\}, \quad j=1, \ldots, n, \\
& z_{i} \in\{0,1\}, \quad i=1, \ldots, m .
\end{aligned}
$

1 番目の制約条件は, 左辺の值に関わらず $z_{i}=0$ の値を取れば必ず制約条件が満たされるため,最適解において概念 $i$ を含む文 $j$ が要約に含まれているにも関わらず $z_{i}=0$ の値を取る場合が あるように思われる。しかし, 目的関数は最大化で各変数 $z_{i}$ の係数 $w_{i}$ は正の值であり, この ような場合には $z_{i}=1$ の値を取れば改善解が得られるため, 最適解では概念 $i$ を含む文 $j$ が要約に含まれていれば必ず $z_{i}=1$ の値を取ることが分かる. この定式化では, 重要度の高い概念 が要約の中に繰返し現れても目的関数は増加しないので, 壳長性を自然に抑えることができる.一方で, この問題は（ナップサック制約付き）最大被覆問題と呼ばれる $\mathrm{NP}$ 困難のクラスに属 する組合せ最適化問題であり，大規模な問題例では最適解を効率良く求めることは難しい．複数文書の要約を求める問題は, この他にも施設配置問題 (高村, 奥村 2010) や兄長制約付きナッ プサック問題 (西川他 2013) などに定式化されている.

## 3.2 文の対応付け

統計的機械翻訳では，対訳コーパスにおいて原言語文と目的言語文の対応付けが与えられて いる前提の下で処理が適用される。しかし, 実際の対訳コーパスでは, 文書同士の対応付けは 行われていても，それらの文書に含まれる文同士の対応付けは行われていない場合が多い。そ のため, 対訳文書の間で文同士の正しい対応付けを求めることは, 統計的機械翻訳の精度を上 げるための重要な前処理となる。

(Ma 2006; Moore 2002) などは，対訳文書間で対応する文の出現順序が大きく入れ替わらない という前提で動的計画法に基づく文の対応付けを提案している。すなわち, 対訳文書の組 $F, E$ が与えられたとき， $F$ の $i$ 番目の文と $E$ の $j$ 番目の文が対応するならば， $F$ の $i+1$ 番目の文に 対応する $E$ の文は, (存在するならば） $j$ 番目の近くにあるという前提で文の対応付けを行って いる.しかし, 文の出現順序が大きく入れ替わらないという前提はどの文書でも成り立つ性質 ではない.

まず，文書 $F$ と $E$ の任意の文を出現順序に関わらず自由に対応付けても良い場合を考える。 $n_{f}$ 個の文を含む文書 $F$ と $n_{e}$ 個の文を含む文書 $E$ が与えられる. 文書 $F$ の $i$ 番目の文と文書 $E$ の $j$ 番目の文が対応付けられたときのスコアを $s_{i j}$ と表す. $x_{i j}$ は変数で, 文書 $F$ の $i$ 番目の文 と文書 $E$ の $j$ 番目の文が対応付けられるならば $x_{i j}=1$, そうでなければ $x_{i j}=0$ の值を取る. このとき，文書 $F$ の文は文書 $E$ の高々 1 つの文にしか対応付けられない（その逆も同様）とい う制約を課すと，スコアの合計が最大となる文の対応付けを求める問題は以下の通りに定式化 できる.

$
\begin{aligned}
\operatorname{maximize} & \sum_{i=1}^{n_{f}} \sum_{j=1}^{n_{e}} s_{i j} x_{i j} \\
\text { subject to } & \sum_{j=1}^{n_{e}} x_{i j} \leq 1, \quad i=1, \ldots, n_{f} \\
& \sum_{i=1}^{n_{f}} x_{i j} \leq 1, \quad j=1, \ldots n_{e}, \\
& x_{i j} \in\{0,1\}, \quad i=1, \ldots, n_{f}, j=1, \ldots, n_{e}
\end{aligned}
$

この問題は（2 部グラフの）最大重みマッチング問題と呼ばれる組合せ最適化問題であり, ハン ガリー法など効率良いアルゴリズムが知られている (Korte and Vygen 2012).

文書 $F$ と $E$ の任意の文を対応付けても良いという前提では，それぞれの文書において前後の 文との繋がりを無視した対応付けを行うことになるため，段落のような文の系列（連続する文 のまとまり）を単位として順序が入れ替わる場合には正しい順序付けができない可能性が高い. そこで，図 1 に示すように，文書 $F$ と文書 $E$ をそれぞれ同数の文の系列に分割し, 文の系列に ついて一対一の対応付けを求めることを考える。文書 $F$ の $i$ 番目から $j$ 番目までの文の系列を

図 1 出現順序の入れ替わりを考慮した文の系列の対応付け

$F[i, j]\left(1 \leq i \leq j \leq n_{f}\right)$, 文書 $E$ の $k$ 番目から $l$ 番目までの文の系列を $E[k, l]\left(1 \leq k \leq l \leq n_{e}\right)$ とする. 文 $p \in F[i, j]$ の文 $q \in E[k, l]$ の対応付けでは出現順序の入れ替わりはないとすると, (Moore 2002)の手法を適用することで文 $p \in F[i, j]$ と文 $q \in E[k, l]$ の最適な対応付けとスコア の合計 $w_{i j k l}$ を計算できる。考えられ得る全ての文の系列の組 $(F[i, j], E[k, l])$ に対して，それら の系列に含まれる文同士の最適な対応付けとスコアの合計 $w_{i j k l}$ をあらかじめ計算する. $x_{i j k l}$ は変数で, 文の系列 $F[i, j]$ と $E[k, l]$ が対応付けられると $x_{i j k l}=1$, そうでなければ $x_{i j k l}=0$ の 値を取る。各文 $p \in F, q \in E$ が対応付けられたいずれかの文の系列 $F[i, j], E[k, l]$ にちょうど 1 回ずつ含まれるという制約条件を用いて文の系列を一対一に対応付ける。このとき，スコアの 合計が最大となる文の系列の対応付けを求める問題は以下の通りに定式化できる.

$
\begin{aligned}
& \operatorname{maximize} \sum_{1 \leq i \leq j \leq n_{f}} \sum_{1 \leq k \leq l \leq n_{e}} w_{i j k l} x_{i j k l} \\
& \text { subject to } \sum_{i<p<j} \sum_{1<k<l<n_{e}} x_{i j k l}=1, \quad p=1, \ldots, n_{f} \text {, } \\
& \sum_{1 \leq i \leq j \leq n_{f}} \sum_{k \leq q \leq l} x_{i j k l}=1, \quad q=1, \ldots, n_{e}, \\
& x_{i j k l} \in\{0,1\}, \quad 1 \leq i \leq j \leq n_{f}, 1 \leq k \leq l \leq n_{e} \text {. }
\end{aligned}
$

この問題は集合分割問題と呼ばれる NP 困難のクラスに属する組合せ最適化問題であり，大規模な問題例では最適解を効率良く求めることは難しい.

統計的機械翻訳では，この他にもフレーズ（連続する単語列）の対応付けを求める問題が整数計画問題に定式化されている (DeNero and Klein 2008; 越川, 内山, 梅谷, 松井, 山本 2010).

## 4 整数計画ソルバーを利用する

前節で紹介したように，実際に多くの現実問題が整数計画問題として定式化できる。一方で,整数計画問題を含む多くの組合せ最適化問題は NP 困難のクラスに属することが計算の複雑さ

の理論により明らかにされている。こう書くと, 多くの現実問題に対して最適解を求めること は非常に困難であるように思われるが，計算の複雑さが示す結果の多くは「最悪の場合」であ り, 全ての入力データに対して最適解を求めることは困難でも，多くの入力デー夕に対して現実的な計算時間で最適解を求められる問題は少なくない。また，整数計画ソルバーは探索中に 得られた暫定解を保持しているので，与えられた計算時間内に最適解が求められなくても，精度の高い実行可能解が求まれば，利用者によっては十分に満足できる場合も多く，整数計画ソ ルバーはそのような目的にも使われる.

表 1 に示すように, 現在では, 商用・非商用を含めて多数の整数計画ソルバーが利用可能であ る (Atamtürk and Savelsbergh 2005; Linderoth and Ralph 2006; Fourer 2013; Mittelmann 2014).商用ソルバーを利用するためには, 数十万〜数百万円のライセンス料金が必要となる場合が多い が, 無償の試用ライセンスや無償〜数十万円のアカデミックライセンスが用意されている場合も 少なくない，一般的に，非商用ソルバーより商用ソルバーの方が性能は高いが，実際には商用ソ ルバーの中でもかなりの性能差がある。整数計画ソルバーのベンチマーク問題例に対する最新 の実験結果 (Mittelmann 2014) によると，商用ソルバーでは，先に挙げた Xpress Optimization Suite, Gurobi Optimizer, CPLEX Optimization Studioの3つが, 非商用ソルバーでは SCIP が最 も性能が高いようである。整数計画ソルバーを選ぶ際には, 性能以外にも，扱える問題の種類 ${ }^{4}$,扱える問題の記述形式，インターフェースなどを考慮して，各自の目的に合った整数計画ソル バーを選ぶことが望ましい．利用可能な整数計画ソルバーについては (Fourer 2013; Mittelmann

表 1 代表的な整数計画ソルバー

2014) が詳しい.

まず，整数計画ソルバーを用いて以下の問題例を解くことを考える。

$
\begin{array}{cl}
\operatorname{maximize} & 2 x_{1}+3 x_{2} \\
\text { subject to } & 2 x_{1}+x_{2} \leq 10 \\
& 3 x_{1}+6 x_{2} \leq 40 \\
& x_{1}, x_{2} \in \mathbb{Z}_{+}
\end{array}
$

整数計画ソルバーの主な利用法には, (1) コマンドラインインターフェースを通じてソルバーを 実行する方法, (2) 最適化モデリングツールを通じてソルバーを実行する方法, (3) 他のソフト ウェアから $\mathrm{API}^{5}$ を通じてソルバーを実行する方法の 3 通りがある.

1 番目は, 問題例を LP 形式 6 , MPS 形式7などで記述された入カファイルを用意して整数計画ソルバーを実行する方法である。図 2 は問題例 (6) をLP 形式で記述したものである。目的関数や制約条件の部分は，数式をほぼそのまま記述しているだけである8. maximize, subject to, bounds, general, end は予約語で，変数値の上下限や整数制約などをこれらの予約語を用 いて記述している．LP 形式は文法が平易で可読性が高く，多くの整数計画ソルバーが対応して いる。図 3 は問題例 (6) を MPS 形式で記述したものである。 MPS 形式は 1960 年代に IBM に よって導入された形式で, 現在も標準的に使われているが可読性は低い. LP 形式やMPS 形式 はプログラミング言語の配列のように変数をまとめて扱う記述ができない. つまり, LP 形式や MPS 形式で $\sum_{j=1}^{100} x_{j} \leq 3$ の数式を記述するには, $\mathrm{x} 1+\mathrm{x} 2+$ (中略 $)+\mathrm{x} 100<=3$ と書くしか

図 2 問題例 (6) の LP 形式による記述
^{6}$ LP は "Linear Programming” の略.

7 MPS は “Mathematical Programming System”の略.

8 図 2 では非負制約を記述しているが, LP 形式では何も指定しなければ各変数 $x_{j}$ の非負制約 $x_{j} \geq 0$ は自動的に設定される。
}

図 3 問題例 (6) の MPS 形式による記述

方法がない。よって, 大きな問題例を記述する場合には, 適当なプログラム言語を用いて LP 形式や MPS 形式のファイルを生成するプログラムを作成する必要がある.

2 番目は, 最適化モデリングツールが提供するモデリング言語で問題例を記述し, 最適化モデ リングツールを通じて整数計画ソルバーを実行する方法である。商用の最適化モデリングツール が提供するモデリング言語では, AIMMS, AMPL, GAMS など, 非商用では, Math Prog, ZIMPL などが知られている。図 4 は問題例 (6)をMath Prog 形式で記述したものである. 多くのモデ リング言語では，モデル部分とデー夕部分を分離して記述できるため，数式を直感的にモデルに 書き換えることが可能である. 例えば, $\sum_{j=1}^{100} x_{j} \leq 3$ の数式は, $\operatorname{sum(i~in~1..100)(x[i])<=~}$ 3 と記述できる. 現実問題を最適化問題に定式化できればすぐに整数計画ソルバーを利用でき るので効率良いプロトタイピングが可能となる。一方で, 最適化モデリングツールの購入とモ デリング言語の習得が必要で，1番目の方法に比べると汎用性に欠ける。

3 番目は, 整数計画ソルバーが提供する $\mathrm{C}, \mathrm{C}++$, Java, Python, Matlab, Excel などのライブ ラリやプラグインを通じて整数計画ソルバーを実行する方法である．部分問題を解くためのサ ブルーチンとして整数計画ソルバーを利用する場合や, 整数計画ソルバーの挙動を細かく制御 したい場合はこの方法が効率的である。ただし, 整数計画ソルバーやそのバージョン毎にライ ブラリやプラグインの仕様が異なるため汎用性と保守性に欠ける.

最適化ソルバーの利用者にとって, 与えられた問題例がどの程度の計算時間で解けるかを事前 に見積ることは重要である。線形計画問題では，一部の特殊な問題を除けば変数や制約式の数 を計算時間の目安にして差し支えない場合が多い。一方で, 整数計画問題では, (Koch, Achter-

図 4 問題例 (6) の Math Prog 形式による記述

berg, Andersen, Bastert, Berthold, Bixby, Danna, Gamrath, Gleixner, Heinz, Lodi, Mittelmann, Ralphs, Salvagnin, Steffy, and Wolter 2011) で報告されているように, 10 万変数, 10 万制約式 で最適解を効率良く求められる問題例がある一方で，1,000 変数程度でも最適解を求められない 問題例があり，変数や制約式の数だけでは計算時間を見積れないことが知られている.

整数計画ソルバーの現状や利用法については (Berthold, Gleixner, Heinz, Koch, and Shinano 2012; 藤江 2011; 宮代 2014, 2012; 宮代, 松井 2006) が詳しい.

## 5 線形計画問題に定式化する

線形計画問題では, 数百万変数, 数百万制約式の大規模な問題例でも現実的な計算時間で最適解を求められるが，線形式のみを用いて目的関数と制約条件を記述する必要があるため，数理最適化の専門家ではない利用者にとって, 現実問題を線形計画問題に定式化することは容易 な作業ではない.しかし，一見すると非線形計画問題に見える問題も変数の追加や式の変形に より等価な線形計画問題に変換できる場合は少なくない．現実問題を線形計画問題を定式化す る際には，与えられた現実問題を線形計画問題で正確に記述できるか，または満足できる程度 に近似できるか良く見極める必要がある。ここでは，一見すると非線形に見える最適化問題を 線形計画問題に定式化するいくつかの方法を紹介する.

## 5.1 凸関数最小化問題

凸関数最小化問題は線形計画問題に近似できる。ここでは, 図 5 に示すように，1 変数の凸関数 $f(x)$ を区分線形関数 $g(x)$ で近似する方法を考える. 凸関数 $f(x)$ 上の $m$ 個の点 $\left(a_{1}, f\left(a_{1}\right)\right)$, $\ldots,\left(a_{m}, f\left(a_{m}\right)\right)$ を適当に選んで線分で繋ぐと区分線形関数 $g(x)$ が得られる。この区分線形関数 $g(x)$ は凸関数なので，各区分を表す線形関数を用いて，

$
g(x)=\max _{i=1, \ldots, m-1}\left.\{\frac{f\left(a_{i+1}\right)-f\left(a_{i}\right)}{a_{i+1}-a_{i}}\left(x-a_{i}\right)+f\left(a_{i}\right)\right.\}, \quad a_{1} \leq x \leq a_{m}
$

と記述できる。このとき，各区分を表す線形関数の最大値を表す変数 $z$ を用意すると，区分線形関数 $g(x)$ の最小化問題は以下の線形計画問題に定式化できる.

$
\begin{array}{ll}
\operatorname{minimize} & z \\
\text { subject to } & \frac{f\left(a_{i+1}\right)-f\left(a_{i}\right)}{a_{i+1}-a_{i}}\left(x-a_{i}\right)+f\left(a_{i}\right) \leq z, \quad i=1, \ldots, m-1, \\
& a_{1} \leq x \leq a_{m}
\end{array}
$

多変数の凸関数最小化問題でも，直線の集合の代わりに超平面の集合で凸関数を近似すれば同様に定式化できる。

## 5.2 連立 1 次方程式の近似解

全ての制約式を同時には満たせない連立 1 次方程式に対して，できる限り多くの制約式を満 たす近似解を求める問題は目標計画法と呼ばれる (Charnes and Cooper 1961). 連立 1 次方程式

$
\sum_{j=1}^{n} a_{i j} x_{j}=b_{i}, \quad i=1, \ldots, m
$

図 5 凸関数の区分線形関数による近似

に対して，その誤差

$
z_{i}=\left|b_{i}-\sum_{j=1}^{n} a_{i j} x_{j}^{*}\right|, \quad i=1, \ldots, m
$

をできる限り小さくする近似解 $\boldsymbol{x}^{*}=\left(x_{1}^{*}, \ldots, x_{n}^{*}\right)$ を求める問題を考える. このとき, 平均 2 乗誤差 $\frac{1}{m} \sum_{i=1}^{m} z_{i}^{2}$, 平均誤差 $\frac{1}{m} \sum_{i=1}^{m} z_{i}$, 最悪誤差 $\max _{i=1, \ldots, m} z_{i}$ などが評価基準として考えられ る.これらの評価基準は, それぞれ誤差べクトル $\boldsymbol{z}=\left(z_{1}, \ldots, z_{m}\right)$ の $L_{2}$ ノルム, $L_{1}$ ノルム, $L_{\infty}$ ノルムを最小化する近似解 $\boldsymbol{x}^{*}$ を求めることに対応する. 応用事例では, 誤差の分布がガウス分布に近いことを前提に, 平均 2 乗誤差を評価基準として最小 2 乗法を用いて近似解を求める場合が多い.しかし, 実際には外れ値が多いなど誤差の分布がガウス分布と全く異なる場合も少 なくない.このような場合は, 外れ値の影響を受けにくい平均誤差や最悪誤差を評価基準とし て近似解を求める方法が考えられる。

平均誤差を最小化する近似解 $\boldsymbol{x}^{*}$ を求める問題は, 制約式を持たない以下の最適化問題に定式化できる.

$
\operatorname{minimize} \sum_{i=1}^{m}\left|b_{i}-\sum_{j=1}^{n} a_{i j} x_{j}\right|
$

これは一見しただけでは線形計画問題に見えないが以下の線形計画問題に変換できる.

$
\begin{aligned}
& \operatorname{minimize} \quad \sum_{i=1}^{m} z_{i} \\
& \text { subject to } \quad b_{i}-\sum_{j=1}^{n} a_{i j} x_{j} \geq-z_{i}, \quad i=1, \ldots, m \\
& b_{i}-\sum_{j=1}^{n} a_{i j} x_{j} \leq z_{i}, \quad i=1, \ldots, m \\
& z_{i} \geq 0, \quad i=1, \ldots, m
\end{aligned}
$

この方法で線形回帰問題を解くこともできる。 $m$ 個のデータ $\left(\boldsymbol{x}_{1}, y_{1}\right), \ldots,\left(\boldsymbol{x}_{m}, y_{m}\right)$ が与えら れる. これを $n$ 個の関数 $\left.\{\phi_{1}\left(\boldsymbol{x}_{i}\right), \ldots, \phi_{n}\left(\boldsymbol{x}_{i}\right)\right.\}$ の線形結合を用いて $y\left(\boldsymbol{x}_{i}\right) \approx w_{0}+w_{1} \phi_{1}\left(\boldsymbol{x}_{i}\right)+\cdots+$ $w_{n} \phi_{n}\left(\boldsymbol{x}_{i}\right)$ と近似する問題を考える. 各データ $\left(\boldsymbol{x}_{i}, y_{i}\right)$ に対する平均誤差を最小にするパラメー 夕 $w_{0}, \ldots, w_{n}$ を求める問題は以下の最適化問題に定式化できる.

$
\operatorname{minimize} \sum_{i=1}^{m}\left|y_{i}-\left(w_{0}+w_{1} \phi_{1}\left(\boldsymbol{x}_{i}\right)+\cdots+w_{n} \phi_{n}\left(\boldsymbol{x}_{i}\right)\right)\right|
$

$i$ 番目のデータに対する誤差を表す変数 $z_{i}$ を用意すると以下の線形計画問題 9 に定式化できる.
^{9} \boldsymbol{x}_{i}$ は与えられたデータなので $\phi_{1}\left(\boldsymbol{x}_{i}\right), \ldots, \phi_{n}\left(\boldsymbol{x}_{i}\right)$ は定数となる.
}

$
\begin{array}{lll}
\operatorname{minimize} & \sum_{i=1}^{m} z_{i} & \\
\text { subject to } & y_{i}-\left(w_{0}+w_{1} \phi_{1}\left(\boldsymbol{x}_{i}\right)+\cdots+w_{n} \phi_{n}\left(\boldsymbol{x}_{i}\right)\right) \geq-z_{i}, & i=1, \ldots, m \\
& y_{i}-\left(w_{0}+w_{1} \phi_{1}\left(\boldsymbol{x}_{i}\right)+\cdots+w_{n} \phi_{n}\left(\boldsymbol{x}_{i}\right)\right) \leq z_{i}, & i=1, \ldots, m \\
& z_{i} \geq 0, & i=1, \ldots, m
\end{array}
$

最悪誤差を最小化する近似解 $\boldsymbol{x}^{*}$ を求める問題も制約式を持たない以下の最適化問題に定式化できる.

$
\operatorname{minimize} \max _{i=1, \ldots, m}\left|b_{i}-\sum_{j=1}^{n} a_{i j} x_{j}\right|
$

これも一見すると線形計画問題に見えないが以下の線形計画問題に変換できる.

$
\begin{array}{ll}
\operatorname{minimize} & z \\
\text { subject to } & b_{i}-\sum_{j=1}^{n} a_{i j} x_{j} \geq-z, \quad i=1, \ldots, m \\
& b_{i}-\sum_{j=1}^{n} a_{i j} x_{j} \leq z, \quad i=1, \ldots, m
\end{array}
$

$
z \geq 0
$

この方法で $k$ 個の目的関数 $\sum_{j=1}^{n} c_{1 j} x_{j}, \sum_{j=1}^{n} c_{2 j} x_{j}, \ldots, \sum_{j=1}^{n} c_{k j} x_{j}$ を同時に最小化する多目的最適化問題も解くことができる.

$
\begin{array}{lll}
\operatorname{minimize} & \left.\{\sum_{j=1}^{n} c_{1 j} x_{j}, \ldots, \sum_{j=1}^{n} c_{k j} x_{j}\right.\} & \\
\text { subject to } & \sum_{j=1}^{n} a_{i j} x_{j} \geq b_{i}, & i=1, \ldots, m, \\
& x_{j} \geq 0, & j=1, \ldots, n .
\end{array}
$

まず,これらの目的関数の線形和を最小化する定式化が考えられる。しかし，いくつかの目的関数が極端に大きな値となる解が求まってしまう場合が少なくないため, 全ての目的関数をバ ランス良く最小化することは容易ではない，そこで，これらの目的関数の最大值を最小化する 定式化を考える。新たに目的関数の最大値を表す変数 $z$ を導入すると，この問題は以下の線形計画問題に変換できる。

$
\begin{array}{ll}
\operatorname{minimize} & z \\
\text { subject to } & \sum_{j=1}^{n} c_{h j} x_{j} \leq z, \quad h=1, \ldots, k, \\
& \sum_{j=1}^{n} a_{i j} x_{j} \geq b_{i}, \quad i=1, \ldots, m, \\
& x_{j} \geq 0, \quad j=1, \ldots, n .
\end{array}
$

## 5.3 比率の最小化

2 つの関数の比を目的関数に持つ最適化問題は分数計画問題と呼ばれる. 以下の 2 つの線形関数の比を目的関数に持つ分数計画問題を考える。

$
\begin{aligned}
& \operatorname{minimize} \frac{\sum_{j=1}^{n} c_{j} x_{j}}{\sum_{j=1}^{n} d_{j} x_{j}} \\
& \text { subject to } \quad \sum_{j=1}^{n} a_{i j} x_{j}=b_{i}, \quad i=1, \ldots, m \text {. }
\end{aligned}
$

ただし, $\sum_{j=1}^{n} d_{j} x_{j}>0$ とする. ここで，新たな変数 $t=1 / \sum_{j=1}^{n} d_{j} x_{j}$ と $y_{j}=t x_{j}(j=1, \ldots, n)$ を導入すると, この問題は以下の線形計画問題に変換できる.

$
\begin{aligned}
\operatorname{minimize} & \sum_{j=1}^{n} c_{j} y_{j} \\
\text { subject to } & \sum_{\substack{n=1 \\
n}} a_{i j} y_{j}-b_{i} t=0, \quad i=1, \ldots, m \\
& \sum_{j=1}^{n} d_{j} y_{j}=1
\end{aligned}
$

この変換は $\sum_{j=1}^{n} d_{j} x_{j}$ が常に同じ符号で 0 にならない場合のみ成立するので, 必要があれば $\sum_{j=1}^{n} d_{j} x_{j} \geq \varepsilon$ （عは十分に小さな正の定数）などの制約式を追加すれば良い.

## 6 整数計画問題に定式化する

整数計画問題は整数変数を含む線形計画問題であるが，線形計画問題の方が整数計画問題よ りもはるかに解き易い事実を考慮すれば，現実問題において離散値を取る量を決定するという 理由だけで安易に整数変数を用いるべきではない，例えば，自動車や機械部品の生産数を決定 する問題を整数計画問題に定式化することは必ずしも適切ではない.このような場合は，各変数の整数条件を取り除いた線形計画問題を解いて実数最適解を得た後に，その端数を丸めて最

も近い整数解を求めれば十分に実用的な解となる場合が多い. 実際に，多くの現実的な整数計画問題では, yes $/$ noの決定や離散的な状態の切り替えを記述するために 2 値変数 $(\{0,1\}$ の 2 值 のみを取る整数変数）を用いていることに注意する必要がある.

ここでは, 代表的な組合せ最適化問題を例に整数計画問題の基本的な定式化の技法を紹介す る.もち万ん，いくつかの組合せ最適化問題では効率良いアルゴリズムが知られているが，現実問題が既知の組合せ最適化問題と一致することは稀であり，これらの効率良いアルゴリズム をそのまま適用できるとは限らない。一方で, 整数計画ソルバーであれば定式化を少し変形す るだけで適用できる場合が多い。このように, 代表的な組合せ最適化問題に対する整数計画問題の定式化を知れば，それらを雛形として変形もしくは組合せることで多種多様な現実問題を 整数計画問題に定式化できるようになる.

## 6.1 整数性を持つ整数計画問題

整数計画問題は一般には NP 困難のクラスに属する計算困難な問題であるが，いくつかの特殊な整数計画問題は効率良く解けることが知られている。ここでは, 制約行列 $\boldsymbol{A}$ が完全単摸行列である整数計画問題 $\min \left.\{\boldsymbol{c}^{T} \boldsymbol{x} \mid \boldsymbol{A} \boldsymbol{x} \geq \boldsymbol{b}, \boldsymbol{x} \in \mathbb{Z}_{+}^{n}\right.\}$ を紹介する. 任意の小行列式が $0,1,-1$ の どれかに等しい行列 $\boldsymbol{A}$ は完全単摸行列と呼ばれる， $\boldsymbol{A}$ が整数行列， $\boldsymbol{b}$ が整数ベクトルである線形計画問題 $\min \left.\{\boldsymbol{c}^{T} \boldsymbol{x} \mid \boldsymbol{A} \boldsymbol{x} \geq \boldsymbol{b}, \boldsymbol{x} \geq \boldsymbol{0}\right.\}$ について, $\boldsymbol{A}$ が完全単摸行列で（実数）最適解が存在す るならば，単体法を適用すると常に整数最適解 $x \in \mathbb{Z}_{+}^{n}$ が得られる.

有向グラフが与えられたとき，点の番号を行番号，辺の番号を列番号とする行列 $\boldsymbol{A}$ で，辺 $e=(i, j)$ に対応する列が $a_{i e}=1, a_{j e}=-1$ （その他は $0 ）$ で与えられる行列は接続行列と呼ば れる。任意の有向グラフに対して，その接続行列は完全単摸行列となる。また, 無向グラフの 接続行列では辺に対応する列が $a_{i e}=a_{j e}=1$ （その他は 0 ）で与えられる. 無向グラフでは 2 部 グラフであるときに限り，その接続行列は完全単摸行列となる.

以下では, 完全単摸行列を制約行列に持つ整数計画問題の例として最短路問題と割当問題を 紹介する。

最短路問題 : 有向グラフ $G=(V, E)$ と各辺 $(i, j) \in E$ の長さ $d_{i j}$ が与えられる. $x_{i j}$ は変数で,辺 $(i, j) \in E$ が経路に含まれるならば $x_{i j}=1$, そうでなければ $x_{i j}=0$ の值を取る. このとき,与えられた始点 $s \in V$ から終点 $t \in V$ に至る最短路を求める問題は以下の通りに定式化できる.

$
\begin{array}{ll}
\text { minimize } & \sum_{(i, j) \in E} d_{i j} x_{i j} \\
\text { subject to } & \sum_{j:(s, j) \in E} x_{s j}=1, \\
& \sum_{i:(i, t) \in E} x_{i t}=1, \\
& \sum_{i:(i, k) \in E} x_{i k}-\sum_{j:(k, j) \in E} x_{k j}=0, \quad k \in V \backslash\{s, t\}, \\
& x_{i j} \in\{0,1\}, \quad(i, j) \in E .
\end{array}
$

1 番目と 2 番目の制約式は, 始点 $s$ から出る辺と終点 $t$ に入る辺がちょうど 1 本ずつ選ばれるこ とを表す. 3 番目の制約式は, 訪問する頂点 $k$ では出る辺と入る辺がちょうど 1 本ずつ選ばれ, それ以外の頂点では辺は選ばれないことを表す。

割当問題: $m$ 人の学生を $n$ 個のクラスに割り当てる. クラス $j$ の受講者数の下限を $l_{j}$, 上限を $u_{j}$, 学生 $i$ のクラス $j$ に対する満足度を $p_{i j}$ とする. $x_{i j}$ は変数で, 学生 $i$ がクラス $j$ に割当て られれば $x_{i j}=1$, そうでなければ $x_{i j}=0$ の值を取る.このとき，学生の満足度の合計が最大 となる割当てを求める問題は以下の通りに定式化できる.

$
\begin{array}{lll}
\operatorname{maximize} & \sum_{i=1}^{m} \sum_{j=1}^{n} p_{i j} x_{i j} & \\
\text { subject to } & \sum_{j=1}^{n} x_{i j}=1, \quad i=1, \ldots, m \\
& l_{j} \leq \sum_{i=1}^{m} x_{i j} \leq u_{j}, \quad j=1, \ldots, n \\
& x_{i j} \in\{0,1\}, \quad i=1, \ldots, m, j=1, \ldots, n .
\end{array}
$

1 番目の制約式は，各学生 $i$ がちょうど 1 つクラスに割当てられることを表す。 2 番目の制約式は，各クラス $j$ に割当てられる学生の数が受講者数の上下限内に収まることを表す.

最短路問題, 割当問題はそれぞれダイクストラ法やハンガリー法など効率良いアルゴリズム が知られている (Korte and Vygen 2012)。しかし，現実問題では実務上の要求から生じる制約条件が追加される場合が多いため，これらの効率良いアルゴリズムがそのまま適用できるとは 限らない。一方で，与えられた現実問題を完全単摸行列に近い形の制約行列を持つ整数計画問題に定式化できる場合は，線形計画緩和問題から良い下界値が得られることが期待できるため,整数計画ソルバーを用いて現実的な計算時間で最適解を求められる場合は少なくない. 完全単摸行列の性質については (Korte and Vygen 2012; Schrijver 1998) が詳しい.

## 6.2 論理的な制約条件

現実問題が既知の組合せ最適化問題と一致することは稀であり, 実務上の要求から生じる制約条件が追加される場合が多い. ここでは，ナップサック問題を例にいくつかの論理的な制約条件とその記述を紹介する。

ナップサック問題：1つの箱と $n$ 個の荷物が与えられる. 箱に詰込める重さ合計の上限を $c(>0)$,各荷物 $j$ の重さを $w_{j}(<c)$, 価値を $p_{j}$ とする. $x_{j}$ は変数で, 荷物 $j$ を箱に詰めるならば $x_{j}=1$, そうでなければ $x_{j}=0$ の値を取る。このとき, 価値の合計が最大となる荷物の詰込みを求める 問題は以下の通り定式化できる。

$
\begin{aligned}
\operatorname{maximize} & \sum_{j=1}^{n} p_{j} x_{j} \\
\text { subject to } & \sum_{j=1}^{n} w_{j} x_{j} \leq c \\
& x_{j} \in\{0,1\}, \quad j=1, \ldots, n .
\end{aligned}
$

ちなみに, 複数の制約式を持つナップサック問題は多制約ナップサック問題と呼ばれ，投資計画 やポートフォリオ最適化などの応用を持つ. ナップサック問題については (Kellerer et al. 2004) が詳しい.

以下に，いくつかの論理的な制約条件とその記述を示す.

（1）詰込む荷物の数は高々 $k$ 個.

$
\sum_{j=1}^{n} x_{j} \leq k
$

（2）荷物 $j_{1}, j_{2}$ の少なくとも一方は詰込む.

$
x_{j_{1}}+x_{j_{2}} \geq 1
$

（3）荷物 $j_{1}$ を詰込むならば荷物 $j_{2}$ も詰込む.

$
x_{j_{1}} \leq x_{j_{2}} .
$

（4）詰达む荷物の数は 0 または 2 .

$
\sum_{j=1}^{n} x_{j}=2 y, y \in\{0,1\}
$

もしくは $y$ を使わずに，以下の通りにも記述できる。

$
\left.\{\begin{array}{l}
+x_{1}+x_{2}+\cdots+x_{n} \leq 2 \\
-x_{1}+x_{2}+\cdots+x_{n} \geq 0 \\
+x_{1}-x_{2}+\cdots+x_{n} \geq 0 \\
\cdots \\
+x_{1}+x_{2}+\cdots-x_{n} \geq 0
\end{array}\right.
$

2 番目以降の制約式は $\sum_{j=1}^{n} x_{j}=1$ を満たす解を除外しており, 図 6 に示すように, こ れらの制約式は実行可能解全体の凸包（全ての実行可能解を含む最小の凸多面体）から 得られる。

## 6.3 固定費用付き目的関数

生産計画や物流計画など多くの現実問題では, 取り扱う製品量によって生じる変動費用と段取替えなど所定の作業によって生じる固定費用の両方を考慮する場合が多い. 例えば， $x$ 単位費用 $c_{1}$ で生産される製品の生産量とする。もし, その製品が少しでも生産されれば初期費用 $c_{2}$ が生じるとすると, 総費用 $f(x)$ は以下に示す非線形関数となる ( $C$ は製品の生産量の上限と する).

$
f(x)= \begin{cases}0 & x=0 \\ c_{1} x+c_{2} & 0<x \leq C .\end{cases}
$

そこで, 少しでも製品を生産するならば $y=1$, そうでなければ $y=0$ の値を取る 2 值変数 $y$ を

図 $6 x_{1}+x_{2}+x_{3}=0$ または 2 を満たす全ての解を含む凸包
導入すると，総費用 $f(x)$ は以下の通りに記述できる.

$
f(x)=\left.\{c_{1} x+c_{2} y \mid x \leq C y, 0 \leq x \leq C, y \in\{0,1\}\right.\}
$

以下では，固定費用を持つ整数計画問題の例としてビンパッキング問題を紹介する.

ビンパッキング問題：十分な数の箱と $n$ 個の荷物が与えられる. 箱に詰込める荷物の重さ合計 の上限を $c(>0)$, 各荷物 $j$ の重さを $w_{j}(<c)$ とする. $x_{i j}$ と $y_{i}$ は変数で, 荷物 $j$ が箱 $i$ に入って いれば $x_{i j}=1$, そうでなければ $x_{i j}=0$, 箱 $i$ を使用していれば $y_{i}=1$, そうでなければ $y_{i}=0$ の値を取る。このとき, 使用する箱の数が最小となる荷物の詰达みを求める問題は以下の通り に定式化できる。

$
\begin{array}{rll}
\operatorname{minimize} & \sum_{i=1}^{n} y_{i} \\
\text { subject to } & \sum_{j=1}^{n} w_{j} x_{i j} \leq c y_{i}, \quad i=1, \ldots, n, \\
& \sum_{i=1}^{n} x_{i j}=1, \quad j=1, \ldots, n, \\
& x_{i j} \in\{0,1\}, \quad & i=1, \ldots, n, j=1, \ldots, n, \\
& y_{i} \in\{0,1\}, \quad & i=1, \ldots, n .
\end{array}
$

1 番目の制約式は, 箱 $i$ が使用されている場合は詰込まれた荷物の重さ合計が上限内に収まるこ とを, 箱 $i$ が使用されていない場合は荷物が詰达めないことを表す。2 番目の制約式は, 各荷物 jがちょうど 1 つ箱に詰込まれることを表す.

## 6.4 離接した制約式

一般に, 最適化問題では全ての制約式を同時に満たすことを求められるが, 現実問題では $m$本の制約式のうちちょうど $k$ 本だけを満たすことを求められる場合も少なくない. これは離接 した制約式と呼ばれ，選択や順序付けなどの組合せ的な制約条件を記述する場合に用いられる.

例えば， 2 つの制約式 $\sum_{j=1}^{n} a_{1 j} x_{j} \leq b_{1}$ と $\sum_{j=1}^{n} a_{2 j} x_{j} \leq b_{2}\left(0 \leq x_{j} \leq u_{j}, j=1, \ldots, n\right)$ の少な くとも一方が成立するという場合は，各制約式に対応する 2 值変数 $y_{1}, y_{2}$ を導入すれば以下の 通りに記述できる。

$
\left.\{\begin{array}{l}
\sum_{j=1}^{n} a_{1 j} x_{j} \leq b_{1}+M\left(1-y_{1}\right), \\
\sum_{j=1}^{n} a_{2 j} x_{j} \leq b_{2}+M\left(1-y_{2}\right), \\
y_{1}+y_{2}=1, \\
y_{1}, y_{2} \in\{0,1\} .
\end{array}\right.
$

ここで， $M$ は

$
M \geq \max \left.\{\sum_{j=1}^{n} a_{1 j} x_{j}-b_{1}, \sum_{j=1}^{n} a_{2 j} x_{j}-b_{2} \mid 0 \leq x_{j} \leq u_{j}, j=1, \ldots, n\right.\}
$

を満たす十分に大きな定数 (big- $M$ と呼ばれる) である. $y_{i}=0$ の場合は, 制約式の右辺は $b_{i}+M$ と十分に大きな值を取り, 各変数 $x_{j}$ の取る値に関わらず必ず満たされる.

以下では，離接した制約式を持つ整数計画問題の例として 1 機械スケジューリング問題と長方形詰込み問題を紹介する。

1 機械スケジューリング問題： $n$ 個の仕事とこれらを処理する 1 台の機械が与えられる。機械は 2 つ以上の仕事を同時には処理できないものとする。仕事 $i$ の処理にかかる時間を $p_{i}(>0)$, 納期を $d_{i}(\geq 0)$ とする. $s_{i}$ と $x_{i j}$ は変数で, $s_{i}$ は仕事 $i$ の開始時刻, $x_{i j}$ は仕事 $i$ が仕事 $j$ に先行 するならば $x_{i j}=1$, そうでなければ $x_{i j}=0$ の值を取る. このとき, 仕事の納期遅れの合計が 最小となる処理スケジュールを求める問題は以下の通りに定式化できる.

$
\begin{array}{cll}
\operatorname{minimize} & \sum_{i=1}^{n} \max \left.\{s_{i}+p_{i}-d_{i}, 0\right.\} & \\
\text { subject to } & s_{i}+p_{i} \leq s_{j}+M\left(1-x_{i j}\right), & i=1, \ldots, n, j \neq i, \\
& x_{i j}+x_{j i}=1, & i=1, \ldots, n, j \neq i, \\
& x_{i j} \in\{0,1\}, & i=1, \ldots, n, j \neq i, \\
& s_{i} \geq 0, & i=1, \ldots, n .
\end{array}
$

納期遅れは仕事 $i$ の終了時刻 $s_{i}+p_{i}$ が納期 $d_{i}$ より後になる場合のみ生じるので, 各仕事 $i$ に対 する納期遅れは $\max \left.\{s_{i}+p_{i}-d_{i}, 0\right.\}$ と記述できる. 1 番目の制約式は, 仕事 $i$ が仕事 $j$ に先行 するならば仕事 $i$ の終了時刻が仕事 $j$ が開始時刻の前になることを表す. 2 番目の制約式は, 仕事 $i$ が仕事 $j$ に先行するかもしくはその逆が必ず成り立つことを表す. 目的関数が最大値の最小化なので, 納期遅れを表す新たな変数 $t_{i}=\max \left.\{s_{i}+p_{i}-d_{i}, 0\right.\}$ を導入すると整数計画問題に 変換できる。

$
\begin{array}{cll}
\operatorname{minimize} & \sum_{i=1}^{n} t_{i} & \\
\text { subject to } & s_{i}+p_{i} \leq s_{j}+M\left(1-x_{i j}\right), & i=1, \ldots, n, j \neq i, \\
& x_{i j}+x_{j i}=1, & i=1, \ldots, n, j \neq i, \\
& s_{i}+p_{i}-d_{i} \leq t_{i}, & i=1, \ldots, n, \\
& x_{i j} \in\{0,1\}, & i=1, \ldots, n, j \neq i, \\
& s_{i}, t_{i} \geq 0, & i=1, \ldots, n .
\end{array}
$
長方形詰込み問題 : 図 7 に示すように, 幅が固定で十分な高さがある長方形の容器と $n$ 個の長方形の荷物が与えられる．容器の幅を $W$, 各荷物 $i$ の幅を $w_{i}$, 高さを $h_{i}$ とする. 荷物はその 下辺が容器の下辺と平行になるように配置し, 回転は許さないものとする. ここで, 全ての荷物を互いに重ならないように容器内に配置する。 $\left(x_{i}, y_{i}\right)$ を荷物 $i$ の左下隅の座標を表す変数と すると（容器の左下隅を原点とする）, 問題の制約条件は以下の通りに記述できる.

制約条件 1 ：荷物 $i$ は容器内に配置される.

これは, 以下の 2 本の不等式がともに成り立つことと同値である.

$
\begin{aligned}
& 0 \leq x_{i} \leq W-w_{i} \\
& 0 \leq y_{i} \leq H-h_{i}
\end{aligned}
$

制約条件 2：荷物 $i, j$ は互いに重ならない.

これは, 以下の 4 本の不等式のうち 1 本以上が成り立つことと同値であり, 各不等式は それぞれ荷物 $i$ が荷物 $j$ の左側，右側，下側，上側にあることを記述している.

$
\begin{aligned}
& x_{i}+w_{i} \leq x_{j} \\
& x_{j}+w_{j} \leq x_{i} \\
& y_{i}+h_{i} \leq y_{j} \\
& y_{j}+h_{j} \leq y_{i}
\end{aligned}
$

$z_{i j}^{\text {left }}, z_{i j}^{\text {right }}, z_{i j}^{\text {lower }}, z_{i j}^{\text {upper }}$ は変数で, それぞれ荷物 $i$ が荷物 $j$ の左側, 右側, 下側, 上側にあるなら ば 1 , そうでなければ 0 の値を取る。このとき, 制約条件を満たした上で必要な容器の高さ $H$ を最小にする荷物の配置を求める問題は以下の通りに定式化できる。

図 7 長方形詰迄久問題の例

$
\begin{array}{cll}
\operatorname{minimize} & H & \\
\text { subject to } & 0 \leq x_{i} \leq W-w_{i}, & i=1, \ldots, n, \\
& 0 \leq y_{i} \leq H-h_{i}, & i=1, \ldots, n, \\
& x_{i}+w_{i} \leq x_{j}+M\left(1-z_{i j}^{\text {left }}\right), & i=1, \ldots, n, j \neq i, \\
& x_{j}+w_{j} \leq x_{i}+M\left(1-z_{i j}^{\text {right }}\right), & i=1, \ldots, n, j \neq i, \\
& y_{i}+h_{i} \leq y_{j}+M\left(1-z_{i j}^{\text {lower }}\right), & i=1, \ldots, n, j \neq i, \\
& y_{j}+h_{j} \leq y_{i}+M\left(1-z_{i j}^{\text {upper }}\right), & i=1, \ldots, n, j \neq i, \\
& z_{i j}^{\text {left }}+z_{i j}^{\text {right }}+z_{i j}^{\text {lower }}+z_{i j}^{\text {upper }}=1, & i=1, \ldots, n, j \neq i, \\
& z_{i j}^{\text {left }}, z_{i j}^{\text {right }}, z_{i j}^{\text {lower }}, z_{i j}^{\text {upper }} \in\{0,1\}, & i=1, \ldots, n, j \neq i .
\end{array}
$

## 6.5 非線形関数

非凸関数最小化問題は整数計画問題に近似できる。 図 8 に示すように, 非凸関数 $f(x)$ 上の $m$ 個の点 $\left(a_{1}, f\left(a_{1}\right)\right), \ldots,\left(a_{m}, f\left(a_{m}\right)\right)$ を適当に選んで線分で繋ぐと区分線形関数 $g(x)$ が得られ る. 区分線形関数上の点 $(x, g(x))$ はある線分上にある. 例えば, 点 $(x, g(x))$ が $\left(a_{i}, f\left(a_{i}\right)\right)$ と $\left(a_{i+1}, f\left(a_{i+1}\right)\right)$ で結ばれる線分上にある場合は以下の通りに記述できる.

$
\left.\{\begin{array}{l}
(x, g(x))=t_{i}\left(a_{i}, f\left(a_{i}\right)\right)+t_{i+1}\left(a_{i+1}, f\left(a_{i+1}\right)\right) \\
t_{i}+t_{i+1}=1 \\
t_{i}, t_{i+1} \geq 0
\end{array}\right.
$

これを考慮すると一般の場合も以下の通りに記述できる。

図 8 非凸関数の区分線形関数による近似

$
\left.\{\begin{array}{l}
(x, g(x))=\sum_{i=1}^{m} t_{i}\left(a_{i}, f\left(a_{i}\right)\right), \\
\sum_{i=1}^{m} t_{i}=1, \\
t_{i} \geq 0, \\
\text { 高々 } 2 \text { つの隣り合う } t_{i} \text { が正. }
\end{array} i=1, \ldots, m,\right.
$

ここで, 2 値変数 $z_{1}, \ldots, z_{m-1}$ を導入すると「高々 2 つの隣り合う $t_{i}$ が正」という制約条件は 以下の通りに記述できる。

$
\left.\{\begin{array}{l}
t_{1} \leq z_{1} \\
t_{i} \leq z_{i-1}+z_{i}, \quad i=2, \ldots, m-1 \\
t_{m} \leq z_{m-1} \\
\sum_{i=1}^{m-1} z_{i}=1, \\
z_{i} \in\{0,1\}, \quad i=1, \ldots, m-1 .
\end{array}\right.
$

次に， 2 值変数で定義される非線形関数を線形関数に変換する方法を紹介する．まず， 2 值変数 $x_{1}$ と $x_{2}$ の積 $y=x_{1} x_{2}$ を考える. このとき， $\left(x_{1}, x_{2}, y\right)$ の実行可能解は $(0,0,0),(1,0,0)$, $(0,1,0),(1,1,1)$ の 4 通りなので以下の通りに記述できる.

$
\left.\{\begin{array}{l}
y \geq x_{1}+x_{2}-1 \\
y \leq x_{1} \\
y \leq x_{2} \\
x_{1}, x_{2} \in\{0,1\}
\end{array}\right.
$

これらの制約式は実行可能解全体の凸包から得られる. 同様に $k$ 個の 2 値変数の積 $y=\prod_{i=1}^{k} x_{i}$ も以下の通りに記述できる。

$
\begin{cases}y \geq \sum_{i=1}^{k} x_{i}-(k-1), & \\ y \leq x_{i}, & i=1, \ldots, k \\ x_{i} \in\{0,1\}, & i=1, \ldots, k\end{cases}
$

## 6.6 グラフの連結性

グラフにおける最適化問題では選択した部分グラフの連結性が求められる場合が少なくない. ここでは, グラフの連結性を制約条件に持つ整数計画問題の例として最小全域木問題と巡回セー ルスマン問題を紹介する。
無向グラフ $G=(V, E)$ の任意の頂点 $i, j \in V$ の間に路が存在するならば $G$ は連結であると呼 ぶ. 図 9 は連結なグラフと非連結なグラフの例である。これは，任意の頂点集合 $S \subset V(S \neq \emptyset)$ に対して， $S$ と $V \backslash S$ の間を繋ぐ辺が少なくとも 1 本は存在するという制約条件に置き換えら れる。

最小全域木問題 : 無向グラフ $G=(V, E)$ と各辺 $(i, j) \in E$ の長さ $d_{i j}$ が与えられる. 閉路を持 たない連結な部分グラフは木, 全ての頂点を繋ぐ木は全域木と呼ばれる， $x_{i j}$ は変数であり，辺 $(i, j)$ は木に含まれるならば $x_{i j}=1$, そうでなければ $x_{i j}=0$ の値を取る. このとき, 辺の長さ の合計が最小となる全域木を求める問題は以下の通り定式化できる.

$
\begin{array}{ll}
\operatorname{minimize} & \sum_{(i, j) \in E} d_{i j} x_{i j} \\
\text { subject to } & \sum_{i \in S} \sum_{j \in V \backslash S} x_{i j} \geq 1, \quad S \subset V, S \neq \emptyset \\
& \sum_{(i, j) \in E} x_{i j}=n-1, \\
& x_{i j} \in\{0,1\}, \quad(i, j) \in E .
\end{array}
$

1 番目の制約式は，辺集合 $T \subseteq E$ が全ての頂点を連結することを表し，カットセット制約と呼 ばれる。 2 番目の制約式は, $|T|=n-1$ を満たすことを表す.これらの制約式は $T$ が全域木と なるための必要十分条件である.

巡回セールスマン問題 : 無向グラフ $G=(V, E)$ の全ての頂点をちょうど 1 回ずつ通る閉路は巡回路と呼ばれる。巡回路となるためには，各頂点 $k$ に接続する辺がちょうど 2 本でなければな らない。しかし, これだけでは不十分で，図 10 (左) に示すような部分巡回路を排除する必要 がある。これは，任意の頂点集合 $S \subset V(S \neq \emptyset)$ に含まれる辺の本数が $|S|-1$ 以下であるとい う制約条件に置き換えられる。

無向グラフ $G=(V, E)$ と各辺 $(i, j) \in E$ の長さ $d_{i j}$ が与えられる. $x_{i j}$ は変数で, 辺 $(i, j) \in E$ が巡回路に含まれるならば $x_{i j}=1$, そうでなければ $x_{i j}=0$ の値を取る. このとき, 全ての頂点をちょうど 1 回ずつ訪問する最短の巡回路を求める問題は以下の通りに定式化できる.

図 9 連結なグラフ（左）と非連結なグラフ（右）の例

図 10 部分巡回路（左）と巡回路（右）の例

$
\begin{array}{lll}
\operatorname{minimize} & \sum_{(i, j) \in E} w_{i j} x_{i j} & \\
\text { subject to } & \sum_{(i, k) \in E: i<k} x_{i k}+\sum_{(k, j) \in E: k<j} x_{k j}=2, & k \in V, \\
& \sum_{(i, j) \in E: i, j \in S} x_{i j} \leq|S|-1, & S \subset V, S \neq \emptyset, \\
& x_{i j} \in\{0,1\}, & (i, j) \in E .
\end{array}
$

1 番目の制約式は, 各頂点に接続する辺がちょうど 2 本となることを表す. 2 番目の制約式は,部分巡回路を持たないことを表し，部分巡回路除去制約と呼ばれる.

最小全域木問題のカットセット制約や巡回セールスマン問題の部分巡回路除去制約は，制約式の数が $\mathrm{O}\left(2^{n}\right)$ と膨大で, 全ての制約式を書き下して整数計画ソルバーに解かせるのは現実的 ではないため，必要に応じて制約式を逐次追加する切除平面法が必要となる.

グラフの連結性を制約条件に持つ整数計画問題の定式化と解法については (藤江 2011; 久保, ペドロソ, 村松, レイス 2012) が詳しく, 新たな変数を導入して必要な制約式の数を抑える方法が紹介されている.

## 7 最適解が求められない場合の対処法

最近の整数計画ソルバーは非常に高性能ではあるものの，解候補を体系的に列挙する分枝限定法を探索の基本戦略とするため，与えられた問題例によってはいつまで待っても計算が終了 しない場合が少なくない．ここでは，目的関数の值を最小化する整数計画問題を考える．分枝限定法は，整数計画問題を分枝操作によって小規模な部分問題に分解しつつ，各部分問題では,暫定解から得られる最適値の上界値と，線形計画緩和問題から得られる最適値の下界値を利用し た限定操作によって無駄な探索を省いている。そのため，いつまで待っても整数計画ソルバー の計算が終了しないならば，(1) 線形計画緩和問題の求解に多大な計算時間を要する，(2) 限定操作が効果的に働いていないことなどが原因として考えられる。もちろん, 整数計画ソルバー

は分枝限定法以外にも多くのアルゴリズムを内包しているため, これだけが原因であると決め つけるべきではないが，対策を練る上でまず始めに確認すべき事項である。

(1)については, 原問題から各変数の整数条件を取り除いた線形計画問題を整数計画ソルバー で解けば計算時間を見積もることができる。実際には，整数計画ソルバーは再最適化と呼ばれ る手法を利用するため, 整数計画問題の各部分問題において線形計画緩和問題の求解に要する 計算時間はもっと短くなる。しかし，この方法で線形計画問題を 1 回解くのに要する計算時間 が長いと感じるようであれば，問題例の規模が整数計画ソルバーで解くには大き過ぎると判断 するのが妥当であろう。ただし, 集合被覆問題や集合分割問題などの線形計画緩和問題では,単体法と内点法で計算時間が大きく異なるため，（部分問題ではなく）原問題の線形計画緩和問題に適用するアルゴリズムを切り替えることで計算時間を大幅に削減できる場合もある.

(2) については, (i) 暫定解から得られる最適値の上界值が悪い場合, (ii) 線形計画緩和問題か ら得られる最適値の下界值が悪い場合, (iii) 多数の最適解が存在する場合などが考えられる. こ れらは, 整数計画ソルバーの実行時に出力される最適値の上界値と下界値から確認できる.

まず，(i) 暫定解から得られる上界值が悪い場合を考える。これは，実行可能解が非常に少な いかもしくは存在しないため, 整数計画ソルバーの実行時に良い実行可能解を発見できないこ とが原因として考えられる。このような場合は, 制約式を必ず満たさなければならない制約式 （絶対制約）とできれば満たして欲しい制約式（考慮制約）に分けた上で, 優先度の低い考慮制約を緩和する方法がある. 例えば, 制約式 $\sum_{j=1}^{n} a_{i j} x_{j} \geq b_{i}$ を $\sum_{j=1}^{n} a_{i j} x_{j} \geq b_{i}-\varepsilon(\varepsilon$ は適当 な正の定数）に置き換える方法や，新しい変数 $z_{i}(\geq 0)$ とぺナルティ係数 $p_{i}(>0)$ を導入して $\sum_{j=1}^{n} a_{i j} x_{j} \geq b_{i}-z_{i}$ に置き換えた上で目的関数に新たな項 $+p_{i} z_{i}$ を加える方法などがある.ま た, 利用者の持つ先験的な知識を利用して容易に実行可能解を求められるならば，利用者が持 つアルゴリズムで求めた実行可能解を初期暫定解として整数計画ソルバーに与えることも可能 である.

次に, (ii) 線形計画緩和問題から得られる最適値の下界値が悪い場合を考える. 図 11 に示す ように, 線形計画緩和問題の実行可能領域は, 整数計画問題の実行可能解となる整数格子点の みを含む凸多面体となるため，同じ整数計画問題に対して線形計画緩和問題の最適値が異なる 複数の定式化が存在する。つまり, 整数計画問題では最適値の良い下界值が得られる強い定式化と, そうでない弱い定式化が存在する。 ちなみに, 最も強い定式化は整数計画問題の実行可能解全体の凸包を記述することであるが，凸包を記述する全ての制約式を求めることは，最悪 の場合には全ての実行可能解を列挙することに他ならないため現実的な方法ではない. たしか に, 制約式の数が少ない定式化の方が見栄えも良く, 分枝限定法を適用した際にも各部分問題 における線形計画緩和問題の求解に要する計算時間も短くなるように思われる. しかし, 最適值の上界值と下界值の差が広がれば分枝限定法で生成される部分問題の数は急激に増加するた め, 安易に制約式を減らすべきではない。一方で，多くの整数計画ソルバーは㔯長な制約式を

図 11 整数計画問題の実行可能解を含む凸多面体の例

前処理で除去するため, 制約式が多少増えても計算時間にはあまり影響しない場合が多い．例 えば，与えられた現実問題を完全単摸行列に近い形の制約行列を持つ整数計画問題に定式化で きる場合は，線形計画緩和問題から良い下界値が得られることが期待できる。

最後に, (iii) 多数の最適解を持つ場合を考える. 最適値の上界值と下界值の差が小さいにも 関わらず, いつまで待っても整数計画ソルバーの計算が終了しないならば, 整数計画問題が多数 の最適解を持っている可能性がある。このような場合は, 目的関数や制約式を変更して最適解 の数を減らす方法がある. 例えば, 6.3 節で紹介したビンパッキング問題の定式化では, 使用す る箱の数が最小であれば使用する箱の組合せは何でも構わないため多数の最適解が生じる。そ こで，必ず番号の小さい箱から順に使用するという制約式を追加すると最適解の数を減らすこ とができる。

$
y_{i} \geq y_{i+1}, \quad i=1, \ldots, n-1
$

また, 5.2 節で紹介した多目的最適化問題の定式化では, 1 変数からなる目的関数を持つ整数計画問題に変換するとやはり多数の最適解が生じる。このような場合は, いつまで待っても整数計画ソルバーの計算が終了しないならば線形和を最小化する定式化に変更した方が良い。また,目的関数 $\sum_{j=1}^{n} c_{j} x_{j}$ の各項の係数 $c_{j}$ が全て同じ値を取る場合も多数の最適解が生じ易いため,可能ならば各項の係数 $c_{j}$ をいろいろな値に変えて最適解の数を絞り込む方が良い.

最後に，いつまで待っても整数計画ソルバーの計算が終了しない場合には, 最適解を求める ことを諦めるのも 1 つの手である. 整数計画ソルバーは探索中に得られた暫定解を保持してい るので，与えられた計算時間内に最適解が求められなくても良い実行可能解が求まれば，利用者 によっては十分に満足できる場合も多い. また, 整数計画ソルバーは線形計画緩和問題を解い て得られる最適値の下界値も保持しているので, 事後にはなるが得られた暫定解の精度も評価 できる，実際に，整数計画ソルバーは近似解法としても高性能であり，メタヒューリスティク

スなどの発見的解法を利用もしくは開発する前に，整数計画ソルバーで良い実行可能解が得ら れるかどうか確認するべきである。最適解が求められない場合の対処法については (宮代 2014;宮代，松井 2006) が詳しい.

## 8 おわりに

本論文では，数理最適化の専門家ではない利用者が，現実問題の解決に取り組む際に必要と なる整数計画ソルバーの基本的な利用法と定式化の技法を解説した. 整数計画ソルバーの解説 は本論文が初めてではなく，オペレーションズ・リサーチの分野では同じ趣旨の解説がいくつ か発表されている (藤江 2012; 宮代, 松井 2006; 宮代 2012). また, 現実問題を線形計画問題や 整数計画問題に定式化する技法については (久保 他 2012; Williams 2013) が詳しい. これらの 文献は，本論文では取り上げていない多くの内容を含んでいるので，整数計画ソルバーに興味 を持たれた読者にはぜひ一読をお勧めする。

## 参考文献

Achterberg, T. and Wunderling, R. (2013). "Mixed Integer Programming: Analyzing 12 Years of Progress." In Jünger, M. and Reinelt, G. (Eds.), Facets of Combinatorial OptimizationFestschrift for Martin Grötschel, pp. 449-481. Springer.

Ashford, R. (2007). "Mixed Integer Programming: A Historical Perspective with Xpress-MP." Annals of Operations Research, 149, pp. 5-17.

Atamtürk, A. and Savelsbergh, M. W. P. (2005). "Integer-programming software systems." Annals of Operations Research, 140, pp. 67-124.

Berthold, T., Gleixner, A. M., Heinz, S., Koch, T., and Shinano, Y. (2012). SCIP Optimization Suite を利用した混合整数（線形／非線形）計画問題の解法. テクニカル・レポート, Zuse Institute Berlin.

Bixby, R. and Rothberg, E. (2007). "Progress in Computational Mixed Integer Programming - A Look Back from the Other Side of the Tipping Point." Annals of Operations Research, 149, pp. 37-41.

Charnes, A. and Cooper, W. W. (1961). Management Models and Industrial Applications of Linear Programming. John Wiley \& Sons.

Chvatal, V. (1983). Linear Programming. W.H.Freeman \& Company.

DeNero, J. and Klein, D. (2008). "The Complexity of Phrase Alignment Problems." In Proceedings of 46th Annual Meeting of the Association for Computational Linguistics: Human

Language Technology, Short Papers, pp. 25-28.

Filatova, E. and Hatzivassiloglou, V. (2004). "A Formal Model for Information Selection in Multi-Sentence Text Extraction." In Proceedings of Coling 2004, pp. 397-403.

Fourer, R. (2013). "Linear programming." OR/MS Today, 40 (3), pp. 40-53.

藤江哲也 (2011). 最近の混合整数計画ソルバーの進展について. オペレーションズ・リサーチ， 56 (5), pp. 263-268.

藤江哲也 (2012). 整数計画法による定式化入門. オペレーションズ・リサーチ, $\boldsymbol{5 7}$ (4), pp. 190-197.

Gillick, D. and Favre, B. (2009). "A Scalable Global Model for Summarization." In Proceedings of the Workshop on Integer Programming for Natural Language Processing at the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, pp. 10-18.

平尾努, 鈴木潤, 磯崎秀樹 (2009). 最適化問題としての文書要約. 人工知能学会論文誌, $24(2)$, pp. 223-231.

Kellerer, H., Pferschy, U., and Pisinger, D. (2004). Knapsack Problems. Springer.

Koch, T., Achterberg, T., Andersen, E., Bastert, O., Berthold, T., Bixby, R. E., Danna, E., Gamrath, G., Gleixner, A. M., Heinz, S., Lodi, A., Mittelmann, H., Ralphs, T., Salvagnin, D., Steffy, D. E., and Wolter, K. (2011). "MIPLIB2010: Mixed Integer Programming Library version 5." Mathematical Programming Computation, 3 (2), pp. 103-163.

今野浩 (1982). 整数計画法と組合也最適化. 日科技連.

今野浩 (1987). 線形計画法. 日科技連.

今野浩 (2005). 役に立つ 1 次式一整数計画法「気まぐれな王女」の 50 年. 日本評論社.

今野浩 (2014). ヒラノ教授の線形計画法物語. 岩波書店.

Korte, B. and Vygen, J. (2012). Combinatorial Optimization: Theory and Algorithms (5th edition). Springer.

越川満, 内山将夫, 梅谷俊治, 松井知已, 山本幹雄 (2010). 統計的機械翻訳におけるフレーズ 対応最適化を利用した N-best 翻訳候補のリランキング. 情報処理学会論文誌, 51 (8).

久保幹雄, J. P. ペドロソ, 村松正和, A. レイス (2012). あたらしい数理最適化—Python 言語 と Gurobi で解く. 近代科学社.

Linderoth, J. T. and Ralph, T. K. (2006). "Noncommercial Software for Mixed-Integer Linear Programming." In Karlof, J. K. (Ed.), Integer Programming-Theory and Practice, pp. 253-303. Taylor \& Francis.

Lodi, A. (2010). "Mixed Integer Programming Computation." In Jünger, M., Liebling, T., Naddef, D., Nemhauser, G., Pulleyblank, W., Reinelt, G., Rinaldi, G., and Wolsey, L. (Eds.), 50 Years of Integer Programming 1958-2008, pp. 619-645. Springer.

Ma, X. (2006). "Champollion: A Robust Parallel Text Sentence Aligner." In Proceedings of 5th International Conference on Language Resources and Evaluation, pp. 489-492.

McDonald, R. (2007). "A Study of Global Inference Algorithms in Multi-Document Summarization." In Proceedings of the European Conference on Information Retrieval (ECIR), pp. 557-564.

Mittelmann, H. D. (2014). "Decision Tree for Optimization Software." http://plato.asu.edu/ guide.html.

宮代隆平 (2012). 整数計画ソルバー入門. オペレーションズ・リサーチ, $5 \mathbf{7}$ (4), pp. 183-189.

宮代隆平 (2014). 整数計画法メモ. http://www.tuat.ac.jp/ miya/ipmemo.html.

宮代隆平, 松井知已 (2006). ここまで解ける整数計画. システム／制御／情報, 50 (9), pp. 363-368.

Moore, R. C. (2002). "Fast and Accurate Sentence Alignment of Bilingual Corpora." In Machine Translation: From Research to Real Users, pp. 135-144. Springer.

Nemhauser, G. L. and Wolsey, L. A. (1988). Integer and Combinatorial Optimization. John Wiley \& Sons.

西川仁, 平尾努, 牧野俊朗, 松尾義博, 松本裕治 (2013). 壳長性制約付きナップサック問題に 基づく複数文書要約モデル. 自然言語処理, 20 (4), pp. 586-612.

西野正彬, 平尾努, 永田昌明 (2013). 集合パッキング問題に基づく文アラインメントのモデル

化. 言語処理学会第 19 回年次大会発表論文集, pp. 932-935.

西野正彬, 鈴木潤, 梅谷俊治, 平尾努, 永田昌明 (2014). 列生成法を用いた高速なアラインメ

ント. 言語処理学会第 20 回年次大会発表論文集, pp. 364-367.

Schrijver, A. (1998). Theory of Linear and Integer Programming. John Wiley \& Sons.

高村大也, 奥村学 (2008). 最大被覆問題とその変種による文書要約モデル. 人工知能学会論文

誌, 23 (6), pp. 505-513.

高村大也, 奥村学 (2010). 施設配置問題による文書要約のモデル化. 人工知能学会論文誌, $\mathbf{2 5}$

(1), pp. 174-182.

Williams, H. P. (2013). Model Building in Mathematical Programming (5th edition). John Wiley $\&$ Sons.

Wolsey, L. A. (1998). Integer Programming. John Wiley \& Sons.

## 略歴

梅谷俊治：1998 年大阪大学大学院基礎工学研究科博士前期課程修了. 2002 年京都大学大学院情報学研究科博士後期課程指導認定退学. 豊田工業大学助手,電気通信大学助教を経て, 2008 年より大阪大学大学院情報科学研究科准教授,現在に至る。博士（情報学)。専門は組合せ最適化，アルゴリズム。日本オ

ペレーションズ・リサーチ学会, 情報処理学会, 人工知能学会, INFORMS, MOS 各会員.

(2014 年 5 月 22 日 受付)

(2014 年 6 月 13 日 採録)

(C) The Association for Natural Language Processing, (Licensed under CC BY 4.0）https://creativecommons.org/licenses/by/4.0/