動的計画法で現れる部分問題を状態とよび、状態のあいだの依存関係を弧で表す。弧の向きは「用いられる側から用いる側へ」と定める。この向きを採ると、位相順序に沿って前から評価するという手続きがそのまま意味をもつ。
代表的な最適化問題として、重さの上限のもとで価値の総和を最大にする問題を扱う。まず問題そのものを定め、その最適値が漸化式を満たすことを証明する。最適値が漸化式を満たすという事実が、「最適部分構造をもつ」という標語の内実である。この事実は、実行可能解の集合を二つに分けて数える議論によって示される。
例 4.1.n=3、W=5、重さを(w1,w2,w3)=(2,3,4)、価値を(p1,p2,p3)=(3,4,5)とする。層分解ℓ(i,j)=iに沿って、第0層から順にOPT(i,j)を求める。
第0層はOPT(0,j)=0(j=0,1,2,3,4,5)である。
第1層はw1=2、p1=3による。j=0,1ではj<2であるからOPT(1,j)=OPT(0,j)=0である。j=2ではmax{OPT(0,2), OPT(0,0)+3}=max{0,3}=3、j=3ではmax{0, OPT(0,1)+3}=3、j=4ではmax{0, OPT(0,2)+3}=3、j=5ではmax{0, OPT(0,3)+3}=3である。よって第1層はj=0,1,2,3,4,5の順に0,0,3,3,3,3である。
第2層はw2=3、p2=4による。j=0,1,2ではj<3であるから第1層の値をそのまま引き継ぎ0,0,3である。j=3ではmax{OPT(1,3), OPT(1,0)+4}=max{3,4}=4、j=4ではmax{3, OPT(1,1)+4}=max{3,4}=4、j=5ではmax{3, OPT(1,2)+4}=max{3,7}=7である。よって第2層は0,0,3,4,4,7である。
第3層はw3=4、p3=5による。j=0,1,2,3ではj<4であるから第2層の値を引き継ぎ0,0,3,4である。j=4ではmax{OPT(2,4), OPT(2,0)+5}=max{4,5}=5、j=5ではmax{OPT(2,5), OPT(2,1)+5}=max{7,5}=7である。よって第3層は0,0,3,4,5,7であり、OPT(3,5)=7である。
総当たりによる検算。{1,2,3}の部分集合8個について、重さの総和と価値の総和を書き下す。∅は(0,0)、{1}は(2,3)、{2}は(3,4)、{3}は(4,5)、{1,2}は(5,7)、{1,3}は(6,8)、{2,3}は(7,9)、{1,2,3}は(9,12)である。重さの総和が5以下であるものは∅、{1}、{2}、{3}、{1,2}の五つであり、価値の総和の最大値は{1,2}による7である。OPT(3,5)=7と一致する。
同様にj=4では重さの総和が4以下であるものが∅、{1}、{2}、{3}の四つであり、価値の最大値は5である。OPT(3,4)=5と一致する。j=3では∅、{1}、{2}の三つで最大値は4であり、OPT(3,3)=4と一致する。
状態数と遷移数の検算。∣Q∣=(3+1)(5+1)=24である。Aの第一の集合の要素数は3×6=18である。第二の集合の要素数は、i=1で∣{j:2≤j≤5}∣=4、i=2で∣{j:3≤j≤5}∣=3、i=3で∣{j:4≤j≤5}∣=2であるから4+3+2=9である。よって∣A∣=18+9=27であり、命題 3.3 (4)により得られる範囲18≤∣A∣≤36に収まる。使用セル数は、全状態を保持すれば24、連続する二層だけを保持すれば2×6=12以下である。
解答.
(1)では、境界値と遷移関数を次のように定める。s∈Qに対し、s=σのときε(s)=1、s=σのときε(s)=0と置く。s∈Q0についてb(s)=ε(s)と定め、s∈Q∖Q0について
gs(x)=ε(s)+t∈N−(s)∑x(t)と定める。得られる状態遷移図式をΣとし、πがΣの解であることを示す。
まず、σからtへの有向道v0,…,vmと弧(t,s)∈Aに対し、列v0,…,vm,sが有向道であることを示す。(vm,s)=(t,s)∈Aであるから、この列は有向歩道である。s=vk(0≤k≤m)とすると、vk,vk+1,…,vm,sは長さm−k+1≥1の閉じた有向歩道であり、§D2.11 補題 1.3 (2)によりDは有向閉路をもつことになって、Dが有向非巡回グラフであることに反する。ゆえにsはv0,…,vmのいずれとも異なり、この列は有向道である。
s∈Qを固定し、σからsへの有向道の全体を、長さが0のものと長さが1以上のものとに分ける。長さ0の有向道は列σだけであり、その終点はσであるから、長さ0のものの個数はε(s)である。長さが1以上の有向道v0,…,vk=sでは(vk−1,s)∈Aであるからvk−1∈N−(s)であり、これらをvk−1によって分類する。t∈N−(s)を取る。vk−1=tを満たす有向道v0,…,vk−1,sに対し、列v0,…,vk−1は頂点が相異なる有向歩道であるから、σからtへの有向道である。前段により、σからtへの有向道の末尾にsを付け加えた列はσからsへの有向道であり、この二つの対応は互いに逆である。ゆえにvk−1=tを満たすものの個数はπ(t)である。和の法則(§D2.2 定理 2.1)により
π(s)=ε(s)+t∈N−(s)∑π(t)である。s∈Q0のときはN−(s)=∅であるからπ(s)=ε(s)=b(s)であり、定義 1.2 条件 (a)が成り立つ。s∈/Q0のときは右辺がgs((π(t))t∈N−(s))であるから、定義 1.2 条件 (b)が成り立つ。よってπはΣの解であり、定理 1.4 (3)により唯一の解である。
例を計算する。Aのどの弧も番号の小さい状態から大きい状態へ向くので、有向閉路が存在すると、閉路に沿って番号が狭義に増加し、出発点へ戻ることに反する。よってDは有向非巡回グラフであり、列1,2,3,4,5は位相順序である。Q0={1}、N−(2)={1}、N−(3)={1,2}、N−(4)={2,3}、N−(5)={3,4}である。この位相順序に沿った評価は
u1=b(1)=1,u2=0+u1=1,u3=0+u1+u2=2,u4=0+u2+u3=3,u5=0+u3+u4=5であり、定理 1.4 (3)によりπ(5)=u5=5である。列挙して照合する。1から5への有向道は、番号が狭義に増加する列1,…,5であって隣り合う二項がAの弧をなすものである。途中の状態の集合S⊆{2,3,4}ごとに調べると、S=∅では(1,5)∈/A、S={2}では(2,5)∈/A、S={4}では(1,4)∈/Aであるから有向道にならない。残るS={3}、{2,3}、{2,4}、{3,4}、{2,3,4}はそれぞれ有向道1,3,5、1,2,3,5、1,2,4,5、1,3,4,5、1,2,3,4,5を与える。有向道は5本であり、評価の結果と一致する。
(2)を示す。定理 1.4 (3)により解Vはただ一つ存在する。有向道は頂点が相異なるので、その長さは∣Q∣−1以下であり、sを終点とする有向道は有限個で、長さ0の有向道sを含む。ゆえにh(s)は定まり、0≤h(s)≤∣Q∣−1である。
(t,s)∈Aならばh(t)<h(s)であることを示す。tを終点とする長さh(t)の有向道v0,…,vm=tを取る。s=vk(0≤k≤m)とすると、vk,…,vm,sは長さが正の閉じた有向歩道であり、§D2.11 補題 1.3 (2)によりDは有向閉路をもつことになって矛盾する。ゆえにv0,…,vm,sはsを終点とする長さh(t)+1の有向道であり、h(s)≥h(t)+1である。
非負整数mについての述語C(m)を「h(s)<mを満たすすべてのs∈Qについてu(m)(s)=V(s)である」と定め、単純帰納法(§D2.1 命題 1.2 (1))で示す。h(s)≥0であるから、C(0)は空虚に真である。C(m)を仮定し、s∈Qがh(s)<m+1を満たすとする。s∈Q0ならば、定義 1.2 条件 (a)によりu(m+1)(s)=b(s)=V(s)である。s∈/Q0ならば、各t∈N−(s)についてh(t)<h(s)≤mであるから、C(m)よりu(m)(t)=V(t)であり、定義 1.2 条件 (b)により
u(m+1)(s)=gs((u(m)(t))t∈N−(s))=gs((V(t))t∈N−(s))=V(s)である。ゆえにC(m+1)が成り立つ。よってすべての非負整数mについてC(m)が成り立ち、m>h(s)ならばu(m)(s)=V(s)である。すべてのs∈Qについてh(s)≤∣Q∣−1<∣Q∣であるから、m=∣Q∣のときu(m)=Vである。この反復は、位相順序を用いず、初期値u(0)にもよらずに、∣Q∣回で解に到達する。
(3)を示す。F(0,j)={∅}であるからNUM(0,j)=1である。1≤i≤nとし、Fout={T∈F(i,j): i∈/T}、Fin={T∈F(i,j): i∈T}と置く。F(i,j)はこの二つの交わらない合併であるから、和の法則(§D2.2 定理 2.1)によりNUM(i,j)=∣Fout∣+∣Fin∣である。T⊆{1,…,i}かつi∈/TであることはT⊆{1,…,i−1}と同値であり、重さの条件は同じ式であるから、Fout=F(i−1,j)である。T∈Finならばwi≤∑k∈Twk≤jであるから、j<wiのときFin=∅であり、NUM(i,j)=NUM(i−1,j)である。j≥wiのとき、T′∈F(i−1,j−wi)に対しT′∪{i}は{1,…,i}の部分集合であってiを含み、重さの総和は∑k∈T′wk+wi≤jであるからFinに属する。逆にT∈Finに対しT∖{i}は{1,…,i−1}の部分集合であって重さの総和は∑k∈Twk−wi≤j−wiであるからF(i−1,j−wi)に属する。二つの対応は互いに逆であるから∣Fin∣=NUM(i−1,j−wi)であり、NUM(i,j)=NUM(i−1,j)+NUM(i−1,j−wi)である。最大値の場合と異なり、和の法則は空の部分を含む分割にもそのまま適用することができる。場合を分けるのは、j<wiのときj−wi<0となり、NUM(i−1,j−wi)が定義されていないからである。
命題 3.3と同じQとAの上で、境界値をb(0,j)=1と定め、s=(i,j)(1≤i≤n)に対する遷移関数を、j<wiのときgs(x)=x((i−1,j))、j≥wiのときgs(x)=x((i−1,j))+x((i−1,j−wi))と定める。Aの定め方から、N−((i,j))はj<wiのとき{(i−1,j)}、j≥wiのとき{(i−1,j),(i−1,j−wi)}である。命題 3.3 (1)と上の漸化式によりNUMはこの図式の解であり、定理 1.4 (3)により唯一の解である。したがって層ごとの評価によってNUMを求めることができる。
例 4.1のインスタンス(W=5、(w1,w2,w3)=(2,3,4))で計算する。第0層はj=0,1,2,3,4,5の順に1,1,1,1,1,1である。第1層は、j=0,1ではj<2であるから1,1、j≥2ではNUM(0,j)+NUM(0,j−2)=2であり、1,1,2,2,2,2である。第2層は、j=0,1,2では第1層を引き継いで1,1,2、j=3ではNUM(1,3)+NUM(1,0)=2+1=3、j=4ではNUM(1,4)+NUM(1,1)=2+1=3、j=5ではNUM(1,5)+NUM(1,2)=2+2=4であり、1,1,2,3,3,4である。第3層は、j=0,1,2,3では第2層を引き継いで1,1,2,3、j=4ではNUM(2,4)+NUM(2,0)=3+1=4、j=5ではNUM(2,5)+NUM(2,1)=4+1=5であり、1,1,2,3,4,5である。よってNUM(3,5)=5である。例 4.1の総当たりでは、重さの総和が5以下である部分集合は∅、{1}、{2}、{3}、{1,2}の五つであり、一致する。同じ総当たりで重さの総和が4以下のものは∅、{1}、{2}、{3}の四つであり、NUM(3,4)=4とも一致する。
(4)の例として、Q={α,β,γ}、A={(α,β),(β,γ),(α,γ)}とする。各弧の始点と終点は相異なるので、D=(Q,A)は§D2.11 定義 1.1の意味での有向グラフである。列α,β,γでは三つの弧がいずれも前から後ろへ向くので、この列は位相順序である。有向閉路v0,v1,…,vk=v0(k≥1)が存在すると仮定すると、この列における位置は各弧に沿って狭義に増加するので、vkの位置はv0の位置より後になり、vk=v0に反する。よってDは有向非巡回グラフである。Q0={α}、N−(β)={α}、N−(γ)={α,β}であり、境界値をb(α)=1、遷移関数をgβ(x)=x(α)+1、gγ(x)=x(α)+x(β)と定めると、Σは状態遷移図式である。したがって定理 1.4を適用することができ、解はただ一つ存在し、位相順序α,β,γに沿った評価u1=1、u2=u1+1=2、u3=u1+u2=3が解の値V(α)=1、V(β)=2、V(γ)=3を与える。
Σは層分解をもたない。写像ℓ:Q→{0,1,…,L}が層分解であると仮定すると、弧(α,β)、(β,γ)によりℓ(γ)=ℓ(β)+1=ℓ(α)+2であり、弧(α,γ)によりℓ(γ)=ℓ(α)+1であるから、ℓ(α)+2=ℓ(α)+1となって矛盾する。
弧(α,γ)を、新しい状態δを経由する二本の弧(α,δ)、(δ,γ)に置き換える。すなわちQ′={α,β,γ,δ}、A′={(α,β),(β,γ),(α,δ),(δ,γ)}とする。各弧の始点と終点は相異なり、列α,β,δ,γではすべての弧が前から後ろへ向くので、上と同じ議論によりD′=(Q′,A′)は有向非巡回グラフである。D′において入次数が0の状態はαだけであり、βとδの先行状態の集合は{α}、γの先行状態の集合は{β,δ}である。境界値をb′(α)=1と定め、遷移関数を
gβ′(x)=x(α)+1,gδ′(x)=x(α),gγ′(x)=x(δ)+x(β)と定めて、状態遷移図式Σ′を得る。ℓ(α)=0、ℓ(β)=ℓ(δ)=1、ℓ(γ)=2と置くと、A′の四本の弧はいずれもℓの値を1だけ増やすので、ℓはΣ′の層分解である。
定理 1.4 (3)によりΣ′の解V′がただ一つ存在する。Σ′の漸化式によりV′(α)=1=b(α)、V′(β)=V′(α)+1、V′(δ)=V′(α)であるから、
V′(γ)=V′(δ)+V′(β)=V′(α)+V′(β)である。これらは、V′のQへの制限がΣの漸化式、すなわちV(α)=b(α)、V(β)=gβ((V(t))t∈N−(β))、V(γ)=gγ((V(t))t∈N−(γ))を満たすことを述べている。定理 1.4 (3)によりΣの解はただ一つであるから、V′のQへの制限はVに一致する。実際、V′(α)=1、V′(β)=2、V′(δ)=1、V′(γ)=3である。さらにΣ′には命題 2.4 (3)の手続きを用いることができ、その使用セル数はmax{∣L0∣+∣L1∣, ∣L1∣+∣L2∣}=max{1+2, 2+1}=3以下である。
(5)では、状態を価値で添字付けるために、価値を整数とする。正の整数n、非負整数P、正の整数w1,…,wn(重さ)および非負整数p1,…,pn(価値)が与えられているとし、0≤i≤nと0≤q≤Pに対し
G(i,q)={T⊆{1,…,i} : k∈T∑pk≥q}と置く。求めるものはG(n,P)の上での∑k∈Twkの最小値であるが、G(i,q)は空でありうる。遷移関数と境界値を実数値にするため、Ω=1+∑k=1nwkと置き
MW(i,q)=min({k∈T∑wk : T∈G(i,q)}∪{Ω})と定める。右辺は空でない有限集合の最小値であるから存在する。どのT⊆{1,…,n}についても∑k∈Twk≤Ω−1<Ωであるから、G(i,q)=∅ならばMW(i,q)はG(i,q)の上での重さの総和の最小値に等しく、G(i,q)=∅ならばMW(i,q)=Ωである。とくに、価値の下限Pを満たす選び方が存在することはMW(n,P)<Ωと同値であり、そのとき最適値はMW(n,P)である。
漸化式は次のとおりである。MW(0,0)=0、1≤q≤PについてMW(0,q)=Ωであり、1≤i≤nと0≤q≤Pについて、qi+=max{q−pi,0}と置くと
MW(i,q)=min{MW(i−1,q), MW(i−1,qi+)+wi}が成り立つ。
この漸化式を示す。境界の場合。G(0,q)は空集合の部分集合のうち価値の総和0がq以上であるものの全体であるから、q=0のとき{∅}、q≥1のとき空集合である。よってMW(0,0)=min{0,Ω}=0、q≥1のときMW(0,q)=Ωである。
i≥1の場合。Gout={T∈G(i,q): i∈/T}、Gin={T∈G(i,q): i∈T}と置くと、G(i,q)はこの二つの交わらない合併である。命題 3.2の証明と同じく、T⊆{1,…,i}かつi∈/TはT⊆{1,…,i−1}と同値であり、価値の条件は両者で同じ式であるから、Gout=G(i−1,q)である。次に、T′↦T′∪{i}がG(i−1,qi+)からGinへの全単射であることを示す。T′⊆{1,…,i−1}に対し∑k∈T′∪{i}pk=∑k∈T′pk+piである。q≥piのときはqi+=q−piであるから、∑k∈T′pk+pi≥qと∑k∈T′pk≥qi+は同値である。q<piのときはqi+=0であり、価値が非負であることから、任意のT′について∑k∈T′pk≥0=qi+と∑k∈T′pk+pi≥pi>qがともに成り立つので、やはり二つの条件は同値である。したがってT′∈G(i−1,qi+)ならばT′∪{i}∈Ginであり、逆にT∈GinならばT∖{i}∈G(i−1,qi+)である。二つの対応は互いに逆であるから、主張の写像は全単射である。さらにi∈/T′であるから∑k∈T′∪{i}wk=∑k∈T′wk+wiである。
重さの総和の集合をXout={∑k∈Twk: T∈Gout}、Xin={∑k∈Twk: T∈Gin}と書くと、MW(i,q)はXout∪Xin∪{Ω}=(Xout∪{Ω})∪(Xin∪{Ω})の最小値である。有限集合Xが空でない二つの部分集合X1、X2の合併であるとき、minX=min{minX1,minX2}が成り立つ。実際、X1⊆XとX2⊆Xにより左辺は右辺以下であり、minXはX1またはX2に属するので左辺は右辺以上である。この等式はX1とX2が交わらないことを用いないので、Ωを共有する二つの集合へ適用することができる。Gout=G(i−1,q)によりmin(Xout∪{Ω})=MW(i−1,q)である。min(Xin∪{Ω})=min{MW(i−1,qi+)+wi, Ω}であることを二つの場合に分けて示す。G(i−1,qi+)=∅のときは、上の全単射によりXin={x+wi: x∈X′}である。ここでX′はG(i−1,qi+)の上での重さの総和の集合であり、minX′=MW(i−1,qi+)であるから、minXin=MW(i−1,qi+)+wiである。G(i−1,qi+)=∅のときはXin=∅であるから左辺はΩであり、MW(i−1,qi+)=Ωであるから右辺はmin{Ω+wi,Ω}=Ωである。以上より
MW(i,q)=min{MW(i−1,q), MW(i−1,qi+)+wi, Ω}である。MW(i−1,q)はΩを含む集合の最小値であるからΩ以下であり、右辺のΩを除いても最小値は変わらない。よって主張の漸化式を得る。
状態遷移図式は次のとおりである。状態集合をQ={0,1,…,n}×{0,1,…,P}とし、弧集合を
A={((i−1,q),(i,q)): 1≤i≤n, 0≤q≤P}∪{((i−1,qi+),(i,q)): 1≤i≤n, 0≤q≤P}とする。どの弧でも終点の第一成分は始点の第一成分に1を加えたものであるから、始点と終点は相異なり、命題 3.3 (1)の証明と同じ議論によりD=(Q,A)は有向非巡回グラフであって、境界状態の全体はQ0={(0,q): 0≤q≤P}である。またℓ(i,q)=iは層分解である。1≤i≤nのときN−((i,q))={(i−1,q),(i−1,qi+)}であり、qi+=qのときはこの集合の要素は一つである。境界値をb(0,0)=0、1≤q≤Pについてb(0,q)=Ωと定め、s=(i,q)(1≤i≤n)に対する遷移関数を
gs(x)=min{x((i−1,q)), x((i−1,qi+))+wi}と定める。二つの状態はともにN−(s)に属するので、gsはRN−(s)上の実数値の写像として定まる。上の漸化式は、写像(i,q)↦MW(i,q)が定義 1.2の二条件を満たすことを述べている。よって定理 1.4 (3)によりMWはこの図式の唯一の解であり、任意の位相順序に沿った評価がMW(n,P)を与える。
状態数は∣Q∣=(n+1)(P+1)である。遷移数を数える。第一の集合の弧はn(P+1)本である。終点の異なる弧は相異なるので、第二の集合の弧((i−1,qi+),(i,q))が第一の集合に属するのは、それが同じ終点の弧((i−1,q),(i,q))に等しいとき、すなわちqi+=qのときに限る。qi+=qはpi=0またはq=0と同値である。実際、q≥1かつpi≥1ならばq−pi<qかつ0<qであるからqi+<qであり、q=0またはpi=0ならばqi+=qである。よってn+=∣{i: pi≥1}∣と置くと
∣A∣=n(P+1)+n+P,n(P+1) ≤ ∣A∣ ≤ n(P+1)+nP < 2n(P+1)である。命題 2.2の計算模型と仮定のもとで、位相順序に沿った評価の基本操作の総回数Tは∣Q∣+∣A∣≤T≤κ(∣Q∣+∣A∣)を満たす。∣Q∣+∣A∣=(2n+1)(P+1)+n+Pであり、n+P≤n(P+1)であるから
(2n+1)(P+1) ≤ T ≤ κ(3n+1)(P+1)を得る。
(6)では、注意 1.6の二つの例ではどちらもQ0=∅であるから、定義 1.2 条件 (a)はすべての写像V:Q→Rについて空虚に成り立つ。したがってVが解であることは、定義 1.2 条件 (b)がsとtの両方で成り立つことと同値である。N−(s)={t}、N−(t)={s}であるから、その条件はV(s)=gs((V(t′))t′∈N−(s))かつV(t)=gt((V(t′))t′∈N−(t))である。第一の例では、その条件はV(s)=V(t)+1かつV(t)=V(s)+1である。この二式を満たすVが存在すると仮定して辺々を加えるとV(s)+V(t)=V(s)+V(t)+2となり、両辺からV(s)+V(t)を引くと0=2という偽の等式を得る。よって解は存在しない。第二の例では、その条件はV(s)=V(t)かつV(t)=V(s)である。実数cに対しVc(s)=Vc(t)=cと定めると、Vcはこの条件を満たすので解である。V0(s)=0=1=V1(s)であるからV0=V1であり、解は一意でない。
Q={s,t,r}、A={(s,t),(t,r),(r,s)}とする。各弧の始点と終点は相異なるのでD=(Q,A)は§D2.11 定義 1.1の意味での有向グラフであり、s,t,r,sは長さ3の有向閉路である。N−(s)={r}、N−(t)={s}、N−(r)={t}であり、境界状態は無い。遷移関数を
gs(x)=x(r)+1,gt(x)=x(s)+1,gr(x)=x(t)+1と定める。解Vが存在すると仮定すると、定義 1.2 条件 (b)によりV(s)=V(r)+1、V(t)=V(s)+1、V(r)=V(t)+1である。三式の辺々を加えるとV(s)+V(t)+V(r)=V(s)+V(t)+V(r)+3となり、両辺からV(s)+V(t)+V(r)を引くと0=3という偽の等式を得る。よってこの遷移関数のもとで解は存在しない。▨