æ°çæé©ååé¡ã®ããŒãã·ãŒãçãªãã® (4) - 忣å®å€èšç»ã»2次éèšç»ã®ç¶ãã§ãã
ä»åã¯çµåãæé©åãäžæ°ã«æ±ããŸãããšããããããã§çµäºã§ãã
6. çµåãæé©ååé¡ã®è€éãã»é£ãã
ããŸããŸãªåé¡ã«å¯ŸããŠãå¹ççãªã¢ã«ãŽãªãºã ã®ååŠãåé¡ã®é£æåºŠã®æå³ãšãã£ã芳ç¹ãããåé¡ã®é£ãããè€éããç ç©¶ããã®ãèšç®è€éæ§çè«ã
6.1 ã¢ã«ãŽãªãºã ã®èšç®é
- æéèšç®éïŒã¢ã«ãŽãªãºã ã忢ãããŸã§ã«å¿ èŠãªååæŒç®ãªã©ã®åºæ¬æäœã®å®è¡åæ°ã衚ãã
- 空éèšç®éïŒã¢ã«ãŽãªãºã ã忢ãããŸã§ã«å¿ èŠãªã¡ã¢ãªéã衚ãã
6.2 èšç®éãšã¢ã«ãŽãªãºã ã®åé¡
- å€é åŒæéã¢ã«ãŽãªãºã ïŒèšç®éãå€é åŒã§æžããå Žåã
- ææ°æéã¢ã«ãŽãªãºã ïŒèšç®éãå€é åŒé¢æ°ã§ã¯æããããªãå Žåã
6.3 èšç®ã®è€éããšåé¡ã®é£ãã
- ã¯ã©ã¹ $P$ïŒæ±ºå®æ§ã®ã³ã³ãã¥ãŒã¿ (åå²ã䞊åã«åæã«å®è¡å¯èœãªã³ã³ãã¥ãŒã¿) ã§å€é åŒæéã§è§£ããåé¡ã®éåã
- ã¯ã©ã¹ $NP$ïŒéæ±ºå®æ§ã®ã³ã³ãã¥ãŒã¿ (åå²ã䞊åã«åæã«å®è¡å¯èœãªã³ã³ãã¥ãŒã¿) ã§å€é åŒæéã§è§£ããåé¡ã®éåã
- $NP$ å°é£ïŒã¯ã©ã¹ $NP$ ã«å«ãŸããä»»æã®åé¡ãšé£ãããåçããã以äžã®åé¡ã®éåã
- $NP$ å®å šïŒã¯ã©ã¹ $NP$ ã«å±ããåé¡ã®ãã¡ã$NP$ å°é£ãªåé¡ã¯ã©ã¹ã
ãããã®è€éæ§ã¯ã©ã¹ã«ã€ããŠä»¥äžã®ãããªè©±é¡ãããã
- $P\subseteq NP$ ã§ããã
- $P\neq NP$ ã§ãããã¯åãã£ãŠããªã ($P\neq NP$ äºæ³)ã
- $NP$ å°é£ãªåé¡ã«å¯ŸããŠãå€é åŒæéã¢ã«ãŽãªãºã ãååšããªãããšã¯èšŒæãããŠããªãã
6.4 è€éæ§ã¯ã©ã¹ãšçµåãæé©ååé¡
åçµåãæé©ååé¡ã®è€éæ§ã¯ã©ã¹ã¯ä»¥äžã
- ã¯ã©ã¹ $P$ïŒãªã€ã©ãŒéè·¯åé¡ãæçè·¯åé¡ãæå€§æµåé¡ãæå°è²»çšæµåé¡ãæå°å šåæšåé¡ãå²åœåé¡ã2-SATãæå€§ãããã³ã°åé¡ãæå€§éã¿ãããã³ã°åé¡ãæå€§éã¿æå€§ãããã³ã°åé¡
- $NP$ å°é£ïŒæŽæ°æé©ååé¡ãå·¡åã»ãŒã«ã¹ãã³åé¡ãæå€§å®å®éååé¡ãéååå²åé¡ããããã¶ãã¯åé¡ããã³ãããã³ã°åé¡ãæå€§ã¯ãªãŒã¯åé¡ãæå°é ç¹è¢«èŠåé¡ãæå°æ¥µå€§ãããã³ã°åé¡
7. çµåãæé©ååé¡ã®å šäœå
以äžã®å³ã®ããã«æŽçãããã
8. çµåãæé©åã®æšæºåé¡
8.1 ã°ã©ãåé¡ã»ãããã¯ãŒã¯åé¡
8.1.1 æå°å šåæšåé¡
åé¡
æå°å šåæšãšã¯ãåœè©²ã°ã©ãã®å šããŒããå«ãéšåã°ã©ãã®ãã¡ãé£çµã§éè·¯ãæããªãã°ã©ã (ïŒæš) ã®ããšã
ç¡åã°ã©ã $G=(V, E)$ äžã®èŸº $e$ ã®éã¿ã $w(e)$ ãšãããšããå
šåæš $T=(V, E_T)$ äžã®èŸºã®éã¿ã®ç·å $\displaystyle\sum_{e\in E_T}w(e)$ ãæå°ã«ããå
šåæšãæ±ããåé¡ã
å®åŒåã¯ä»¥äžã$\delta (S)$ ã¯ã$S\subset V$ ã«äžæ¹ã®ç«¯ç¹ã$V\setminus S$ ã«ããäžæ¹ã®ç«¯ç¹ãæã€èŸºå
šäœã®éåã
\begin{array}
&\min &\displaystyle\sum_{e\in E}w(e)x_e \\
s.t. &\displaystyle\sum_{e\in C}x_e\leq |C|-1 &\forall C: \rm{closed~path~of}~G \\
&\displaystyle\sum_{e\in\delta (S)}x_e\geq 1 &\forall S\subset V,~S\neq\emptyset,~S\neq V \\
&x_e\in\lbrace 0,1\rbrace &\forall e\in E
\end{array}
å¶çŽæ¡ä»¶ã¯ãæšã§ããããšã®å¿
èŠå忡件ãå®åŒåã«ã¯ããã€ãããªãšãŒã·ã§ã³ãããã
ããŒã¿ã®ã¯ã©ã¹ã¿ãŒåæããããã¯ãŒã¯ã®èšèšã«äœ¿ãããã
è§£æ³
ã¯ã©ã¹ã«ã«æ³ãããªã æ³ãªã©ã®è²ªæ¬²æ³ããŒã¹ã®å€é
åŒæéã¢ã«ãŽãªãºã ãããã
ã¯ã©ã¹ã«ã«æ³ã¯ä»¥äžãifæã®å€å®ã«ã¯ãUnion-Findæšã䜿ããšå¹ççãèšç®é㯠$O(|E|\log |V|)$ã
T â 空ã°ã©ã
E â ãã¹ãŠã®èŸºã®éå
while (E ã空ã§ãªã)
e â éã¿ãæå°ã®èŸº
E ãã e ãåé€ãã
if (e ã®ç«¯ç¹ã®ãã¡å°ãªããšãäžæ¹ã T ã«å«ãŸããªã)
T â T + e
end if
end while
ããªã æ³ã¯ä»¥äžãéã¿æå°ã®ãšããžéžæã«ã¯ããŒãã䜿ããšéããèšç®éã¯ããŒãã䜿ãå Žåã§ $O(|E|\log |V|)$ã
T â é©åœã«éžãã ããŒã1ã€ã®ã¿ã®éå
V â ãã¹ãŠã®é ç¹ã®éå
while (V ã空ã§ãªã)
e â T ã«å«ãŸããããŒããå§ç¹ãå«ãŸããªãããŒããçµç¹ãšãããšããžã®ãã¡ãéã¿æå°ã®ãã®
E ãã e ãåé€ãã
T â T + e
end while
8.1.2 æå€§ã«ããåé¡
åé¡
ã«ãããšã¯ãç¡åã°ã©ã $G=(V,E)$ ã«ãããŠã$V$ ã2ã€ã®éšåéå $V_1, V_2$ ã«åå²ããçµåãã®ããšã
ç¡åã°ã©ã $G=(V,E)$ ã«ãããŠã$\displaystyle\sum_{v_i\in V_1, v_j\in V_2, i<j}w_{ij}$ ãæå€§ã«ããã«ãã $V_1, V_2$ ãæ±ããåé¡ã
å®åŒåã¯ä»¥äžã$u_i\in\lbrace -1,1\rbrace$ ã¯ãããŒã $i$ ã $V_1$ ã«å±ããå Žå $+1$ã$V_2$ ã«å±ããå Žå $-1$ ãå²ãåœãŠãã
\begin{array}
&\max &\displaystyle\frac{1}{2}\sum_{v_i\in V_1,v_j\in V_2, i<j}w_{ij}(1-u_iu_j) \\
s.t. &u_i\in\lbrace -1,1\rbrace &\forall v_i\in V
\end{array}
ãããã¯ãŒã¯ç£èŠã®å¹çåãªã©ã«çšãããããããè€éãªçµåãæé©ååé¡ã®éšååé¡ãšããŠçšããããããšãå€ãã
è§£æ³
NPå®å
šãã¡ã¿ãã¥ãŒã§è§£ããå€é
åŒæéã¢ã«ãŽãªãºã ã¯ååšããªããšèããããŠããã
ãªããæå°ã«ããåé¡ã«ã¯å€é
åŒæéã¢ã«ãŽãªãºã ãååšãããæå°ã«ããåé¡ã¯æå€§æµåé¡ã®å察åé¡ã
8.1.3 æå°é ç¹è¢«èŠåé¡
åé¡
é ç¹è¢«èŠãšã¯ãé ç¹ã®éå $C\subseteq V$ ã§ãããä»»æã®ãšããžã«ã€ããŠå°ãªããšãäžæ¹ã®ç«¯ç¹ã $C$ ã«å«ãŸãããã®ã
é ç¹è¢«èŠ $C$ ã®ãã¡èŠçŽ æ° $|C|$ ãæå°ã®ãã®ãæ±ããåé¡ã
éã¿ã€ãã®å Žåã®å®åŒåã¯ä»¥äžã
\begin{array}
&\min &\displaystyle\sum_{v_i\in V}w(v_i)x_i \\
s.t. &x_i+x_j\geq 1 &\forall e_{ij}=(v_i,v_j)\in E \\
&x_i\in\lbrace 0,1\rbrace &\forall v_i\in V
\end{array}
é 眮èšç» (亀差ç¹ãžã®èŠåå¡ã®é 眮ãªã©) ã«çšããããããšãå€ããããè€éãªçµåãæé©ååé¡ã®éšååé¡ãšããŠçšããããããšãå€ãã
è§£æ³
NPå°é£ãã¡ã¿ãã¥ãŒã䜿ãããšãå€ãã
8.1.4 æå€§å®å®éååé¡
åé¡
å®å®éå (ç¬ç«éå) ãšã¯ãããŒãéå $S\subseteq V$ ã§ $S$ ã®ä»»æã®2ã€ã®ããŒããã€ãªããšããžãååšããªãéåã®ããšã
å®å®éå $S$ ã®ãã¡èŠçŽ æ° $|S|$ ãæå€§ã®ãã®ãæ±ããåé¡ã
\begin{array}
&\max &\displaystyle\sum_{v_i\in V}x_i \\
s.t. &x_i+x_j\leq 1 &\forall e_{ij}=(v_i,v_j)\in E \\
&x_i\in\lbrace 0,1\rbrace &\forall v_i\in V
\end{array}
ããè€éãªçµåãæé©ååé¡ã®éšååé¡ãšããŠãã°ãã°çšããããã
è§£æ³
NPå°é£ãã¡ã¿ãã¥ãŒã䜿ãã
8.1.5 æçè·¯åé¡
åé¡
ããããŒã $v_s\in V$ ããå¥ã®ããŒã $v_t \in V$ ãžã®çµè·¯ã®äžã§æãã³ã¹ãã®å°ãããã®ãæ±ããåé¡ã
ãšããž $e_{ij}$ ã®éã¿ã $a_{ij}$ ãšããŠãå®åŒåã¯ä»¥äžã
\begin{array}
&\min &\displaystyle\sum_{e_{ij}\in E}a_{ij}x_{ij} \\
s.t. &\displaystyle\sum_{v_j\in V}x_{ij}-\sum_{v_k\in V}x_{ki}=\left\{
\begin{array}
~1 &i=s \\
-1 &i=t \\
0 &\rm{otherwise}
\end{array} \right. \\
&x_{ij}\in\lbrace 0,1\rbrace &e_{ij}\in E
\end{array}
ééã®çµè·¯æ¡å ãè»ã®ããã«å¿çšãããŠããã
è§£æ³
åäžå§ç¹æçè·¯åé¡ã®è§£æ³ã¯ãã³ã¹ããéè² ã®å Žåãã€ã¯ã¹ãã©æ³ãè² ã®ã³ã¹ããèš±ãå Žåãã«ãã³ã»ãã©ãŒãæ³ãå
šç¹å¯Ÿæçè·¯åé¡ã¯ã¯ãŒã·ã£ã«ã»ããã€ãæ³ã
ãã€ã¯ã¹ãã©æ³ã¯ä»¥äžãd[u] ãæå°ãšãªãããŒãã®åãåºã㯠Q ã«ããŒãã䜿ããšå¹ççãèšç®é㯠$O((|E|+|V|)\log |V|)$ã
ãã¹ãŠã® v ã«ã€ã㊠d[v] â â
d[v_s] â 0
Q â ãã¹ãŠã®é ç¹ã®éå
while (Q ã空ã§ãªã)
u â Q ã®ãã¡ d[u] ãæå°ãšãªãããŒã
Q ãã u ãåé€ãã
for each (u ãå§ç¹ãšãã蟺ã®çµç¹ v)
if d[v] > d[u] + cost[u, v]
d[v] â d[u] + cost[u, v]
end if
end for
end while
ãã«ãã³ã»ãã©ãŒãæ³ã¯ä»¥äžãèšç®é㯠$O(|V||E|)$ã
ãã¹ãŠã® v ã«ã€ã㊠d[v] â â
d[v_s] â 0
for i = 1 to |V|
for each (u, v) in V
if d[v] > d[u] + cost[u, v]
d[v] = d[u] + cost[u, v]
end if
end for
end for
ã¯ãŒã·ã£ã«ã»ããã€ãæ³ã¯ä»¥äžãèšç®é㯠$O(V^3)$ã
d[i, j] â 蟺 (i, j) ãååšããã° cost[i, j]ãååšããªããã° â
for each k = 1 to |V|
for each i = 1 to |V|
for each j = 1 to |V|
if d[i, j] > d[i, k] + d[k, j]
d[i, j] = d[i, k] + d[k, j]
end if
end for
end for
end for
8.1.6 æå€§æµåé¡
åé¡
容éä»ãã®ãªã³ã¯ããæ§æãããæåã°ã©ãã«ãããŠããœãŒã¹ããŒãããã·ã³ã¯ããŒããžã®ç·æµéãæå€§ãšãªããããªãããŒãæ±ããåé¡ã
ãã㌠$\boldsymbol{x}$ ã®ããŒã $v_i$ ã«ãããè¶
é $f_{\boldsymbol{x}}(v_i)$ ã以äžã®ããã«å®çŸ©ããã
\displaystyle f_{\boldsymbol{x}}(v_i)=\sum_{(j,i)\in E}x_{ji}-\sum_{(i,j)\in E}x_{ij}
ãœãŒã¹ããŒã $v_s$ãã·ã³ã¯ããŒã $v_t$ããªã³ã¯ $(i,j)$ ã®å®¹éã $u_{ij}$ ãšããŠãå®åŒåã¯ä»¥äžã1ã€ç®ã®å¶çŽãæµéä¿ååã2ã€ç®ã®å¶çŽã容éå¶çŽã
\begin{array}
&\max &f_{\boldsymbol{x}}(v_t) \\
s.t. &f_{\boldsymbol{x}}(v_i)=0 &\forall v_i\in V\setminus\lbrace v_s,v_t\rbrace \\
&0\leq x_{ij}\leq u_{ij} &\forall e_{ij}\in E
\end{array}
æ°Žãé路亀éã®æµãã«é¢ããåé¡ã«é©çšãããããã¹ã±ãžã¥ãŒãªã³ã°ãååçç©åŠã«å¿çšãããŠããã
è§£æ³
ç·åœ¢æé©ååé¡ãªã®ã§åäœæ³ã§è§£ããã
æå€§æµåé¡ã§ã¯ç¹ã«ããã©ãŒãã»ãã¡ã«ã«ãŒãœã³æ³ (ãããŒå¢å æ³) ãšããå¹ççãªã¢ã«ãŽãªãºã ãããããåãªã³ã¯ã«ãããŒãã©ãã ã远å ã§ããã©ãã ãæžããããšãã§ãããããè¡šãæ®äœãããã¯ãŒã¯ãšããæŠå¿µãå°å
¥ããã
å
šãŠã® e â E ã«ã€ã㊠f[e] â 0
while (æ®äœãããã¯ãŒã¯ã«ãããŠãœãŒã¹ããŒãããã·ã³ã¯ããŒããžã®ãã¹ p ãååš)
q â ãã¹ p ã«å«ãŸãããšããžã®ãã¡ã®æå°å®¹é
ãã¹ p ã«ãã㌠q ãæµã
end while
8.1.7 æå°è²»çšæµåé¡
åé¡
æåã°ã©ã $G=(V, E)$ ã«ãããŠãåãšããžã®èŠé ãšã³ã¹ããããŒãã®é絊éãäžãããããšããåãšããžã®å®¹éãè¶ éããåããŒãã®æµåºéãé絊éãšçãããªããããŒã®äžã§ãåãšããžã®æµéã«å¯Ÿããã³ã¹ãã®ç·åãæå°ãšãªããããŒãæ±ããåé¡ã
\begin{array}
&\min &\displaystyle\sum_{(i,j)\in E}c_{ij}x_{ij} \\
s.t. &f_{\boldsymbol{x}}(v_i)=b_i &\forall v_i\in V \\
&0\leq x_{ij}\leq u_{ij} &(i,j)\in E
\end{array}
è§£æ³
- ãããã¯ãŒã¯åäœæ³ãåäœæ³ã«ãããåºåºè§£ããšããžã®éåã«çœ®ãæãã ($x_{ij}=1$ ã®ãšãããšããž $(i,j)$ ãæå¹) ãšå šåæšãšãªãããŸããå šåæšã«å¯ŸããŠé絊å¶çŽãæºãããããŒã¯äžæã«å®ãŸããããåºåºè§£ãšå šåæšã¯äžå¯Ÿäžå¯Ÿå¿ããããã®ãããåäœæ³ã«ãããŠå®è¡å¯èœåºåºè§£ãé ã ã«æ¢çŽ¢ããã®ãšåæ§ã«ãå šåæšãæ¬¡ã ã«æ¢çŽ¢ãããšããçºæ³ãæ°ããå šåæš (ïŒå®è¡å¯èœåºåºè§£) ãæ±ããéã¯ãé絊å¶çŽãæºããã€ã€æ°ããªãšããžã« $\theta$ ã ãæµããŠéè·¯ãçºçããããšãã«ãæåã«æµéãè² ãšãªããšããžãåãé€ãã°ããã
- è² éè·¯é€å»æ³ãæ®äœãããã¯ãŒã¯ã«ãããŠãå ã®ãšããžãšéåãã®ãšããžã®ã³ã¹ãããå ã®ãšããžã®ã³ã¹ãã®-1åãšããã
f[e] â ãããŒä¿åæ¡ä»¶ãæºãããããŒ
while (è² ã®éè·¯ãååš)
f[e] â è² ã®éè·¯ã«æµããã ãæµãããšãã®ãããŒ
end while
8.2 çµè·¯åé¡
8.2.1 鿬çµè·¯åé¡ (Vehicle Routing Problem, VRP)
åé¡
ããããåºçºããããã€ãã®ããŒãã蚪åããŠããã«æ»ãã«ãŒããæé©åãããéèŠéãç§»åã³ã¹ããæå€§çšŒåæéãªã©ã®å¶çŽã®ããšã§è§£ããããªãšãŒã·ã§ã³ãããã€ãããã
äŸãã°ã以äžã®åé¡ã
顧客ã®éå $V=\lbrace 0,\cdots,n\rbrace$ ãšéæ¬è»ã®éå $M=\lbrace 1,\cdots,M\rbrace$ ãäžãããããšãããå鿬è»ã¯ãã $0$ ãåºçºããŠå²ãåœãŠããã顧客éåããããé éãè¡ãããã $0$ ã«æ»ããå顧客 $i\in V$ ã«ã€ããŠãµãŒãã¹ã®éèŠé㯠$a_i$ãåéæ¬è» $k\in M$ ã®æå€§ç©èŒé㯠$u$ ã§ããã顧客 $i, j$ éã®ç§»åã³ã¹ãã $c_{ij}$ ã§ãããšãããå顧客ã®éèŠã¯1å°ã®éæ¬è»ã®1床ã®èšªåã§æºããããããã®ãšããç·ç§»åã³ã¹ããæå€§ãšãªãããã«å šãŠã®éæ¬è»ã®ã«ãŒããæ±ããã
$x_{ij}^k$ ã¯éæ¬è» $k$ ã顧客 $i$ ãã $j$ ãžé²ããåŠãã®ãã€ããªå€æ°ã$w_i^k$ ã¯éæ¬è» $k$ ã顧客 $i$ ãŸã§ã«èšªåãã顧客ã®éèŠéã®ç·åãšããŠãå®åŒåã¯ä»¥äžã
\begin{array}
&\min &\displaystyle\sum_{(i,j)\in E}c_{ij}\sum_{k\in M}x_{ij}^k \\
s.t. &\displaystyle\sum_{j\in\lbrace j|(0,j)\in E\rbrace} x_{0j}^k=1 &\forall k\in M \\
&\displaystyle\sum_{j\in\lbrace j|(i,j)\in E\rbrace}x_{ij}^k=\sum_{j\in\lbrace j|(j,i)\in E}x_{ji}^k &\forall i\in V, \forall k\in M \\
&w_j^k\geq a_j-u\left( 1-x_{ij}^k\right) &\forall (i,j)\in E, i=0, \forall k\in M \\
&w_j^k\geq w_i^k+a_j-u\left( 1-x_{ij}^k\right) &\forall (i,j)\in E, i\neq 0, \forall k\in M \\
&w_i^k\leq u &\forall i\in V, \forall k\in M \\
&\displaystyle\sum_{j\in\lbrace j|(i,j)\in E\rbrace}\sum_{k\in M}x_{ij}^k=1 &\forall i\in V, i\neq 0 \\
&x_{ij}^k \in \lbrace 0,1\rbrace &\forall (i,j)\in E,\forall k\in M \\
&w_i^k\geq 0 &\forall i\in V, \forall k\in M
\end{array}
åºèãžã®é éãéµäŸ¿ãªã©ã®é éããã¿åéãèªç©ºæ©ã®è·¯ç·æ±ºå®ãªã©å¹ åºãåé¡ãã«ããŒããŠããã
è§£æ³
ããªãšãŒã·ã§ã³ã®ã»ãšãã©ã¯NPå°é£ã®ãããè¿äŒŒè§£æ³ãã¡ã¿ãã¥ãŒãéå被èŠåé¡ãšããŠå®çŸ©ãããããšãããã
8.2.2 å·¡åã»ãŒã«ã¹ãã³åé¡ (Traveling Salesman Problem, TSP)
åé¡
ãã¹ãŠã®ãšããžã1åãã€éãæåã®ãšããžã«æ»ãã«ãŒãã®ãã¡ãç·ã³ã¹ããæå°ãšãªãã«ãŒããæ±ããåé¡ã
å®åŒåã¯ä»¥äžã
\begin{array}
&\min &\displaystyle\sum_{(i,j)\in E}c_{ij}x_{ij} \\
s.t. &\displaystyle\sum_{j=1}^{n}x_{ij}=1 &\forall i \in V \\
&\displaystyle\sum_{i=1}^{n}x_{ij}=1 &\forall j\in V \\
&\displaystyle\sum_{(i,j)\in\delta (S)}x_{ij}\geq 1 &\forall S\subset V,S\neq\emptyset,S\neq V \\
&x_{ij}\in\lbrace 0,1\rbrace &i,j\in V, i\neq j
\end{array}
é éèšç»åé¡ãããªã³ãåºæ¿ãžã®ããªã«ç©ŽéããVLCIã®èšèšãªã©ã«çšããããã
è§£æ³
NPå°é£ãè¿äŒŒè§£æ³ãå€ãéçºãããŠãããbit DPã§èšç®éã $O(n!)$ ãã $O(n^22^n)$ ãŸã§ã¯èœãšããã
8.3 éå被èŠåé¡ (Set Covering Problem, SCP)
8.3.1 éå被èŠã»åå²åé¡
åé¡
ããã€ãã®èŠçŽ ãããªãéå $M$ ãš $M$ ã®éšåéåæãäžããããåéšåéåã«ã¯ã³ã¹ããäžããããŠãããšããã
$M$ ã®ãã¹ãŠã®èŠçŽ ãã«ããŒããããã«ããã€ãã®éšåéåãéžã³ãéžãã éšåéåã®ã³ã¹ãã®ç·åãæå°ã«ããã®ãéå被èŠåé¡ã
éžã°ããéšåéåãäºãã«éãªããªããšããæ¡ä»¶ã課ãå Žåãéååå²åé¡ã
ããå ·äœçã«æ°åŒã«èœãšããšä»¥äžãéå $M=\lbrace 1,\cdots,m\rbrace$ ã® $n$ åã®éšåéå $S_j \subseteq M$ã$j\in N=\lbrace 1,\cdots,N\rbrace$ ãèããããã®ãšãã以äžã®æ¡ä»¶ãæºããéåã®æ $\lbrace S_j~|~j\in X\rbrace$ ãéå $M$ ã®è¢«èŠãšããã
\bigcup_{j\in X}S_j=M
éå $M$ ã®è¢«èŠã§ãããã« $S_j\cap S_k=\emptyset,~j,k\in X,~j\neq k$ ãæãç«ã€å Žåãéå $M$ ã®åå²ãšããã
éå被èŠåé¡ã®å®åŒåã¯ä»¥äžã
\begin{array}
&\min &\displaystyle\sum_{j=1}^{n}c_jx_j \\
s.t. &\displaystyle\sum_{j=1}^{n}a_{ij}x_j\geq 1 &\forall i\in M \\
&x_j\in\lbrace 0,1\rbrace &\forall j\in N
\end{array}
éååå²åé¡ã®å®åŒåã¯ä»¥äžã
\begin{array}
&\min &\displaystyle\sum_{j=1}^{n}c_jx_j \\
s.t. &\displaystyle\sum_{j=1}^{n}a_{ij}x_j=1 &\forall i\in M \\
&x_j\in\lbrace 0,1\rbrace &\forall j\in N
\end{array}
鿬çµè·¯åé¡ãã¹ã±ãžã¥ãŒãªã³ã°åé¡ãæœèšé 眮åé¡ãå²åœåé¡ãªã©ãå¥ã®æšæºåé¡ã«å¿çšããããéå被èŠåé¡ã¯çµåãæé©ååé¡ã«ãããŠéèŠãªåºæ¬çãªå顿§é ã§ãããšèšããã
è§£æ³
NPå°é£ãç·åœ¢ç·©åãã©ã°ã©ã³ãžã¥ç·©åãå©çšããå¹ççãªææ³ãææ¡ãããŠããã
8.4 ã¹ã±ãžã¥ãŒãªã³ã°åé¡
ãžã§ããæ§ã ãªå¶çŽã®ããšã§å®è¡ããªããŠã¯ãªããªããšããå®è¡å¯èœãªã¹ã±ãžã¥ãŒã«ãæé©åã¹ã±ãžã¥ãŒã«ãæ±ããåé¡ã
8.4.1 ãžã§ãã·ã§ããåé¡
åé¡
ãžã§ãã·ã§ãããšã¯ãæ©æ¢°å å·¥å·¥å Žãªã©ã§åçš®ã®æ©èœãæ§èœãæã€æ©æ¢°èšåãã°ã«ãŒãåããŠç·šæããæ©èœå¥é
眮工çšã®ããšã
ãžã§ãã·ã§ããåé¡ãšã¯ããžã§ãããšã«æå®ãããé åºã§é 次åŠçããããžã§ãã·ã§ããã«ãããŠãç®ç颿°ãæé©ã«ããããæžãæ©æ¢°ã«ããããžã§ãã®åŠçé åºã決å®ããåé¡ãäŸãã°1æ©æ¢°åé¡ãªã©ä»¥äžã®ããã«èšè¿°ãããã
äžãããã $n$ åã®ãžã§ã $V=\lbrace 1,\cdots,n\rbrace$ ã1å°ã®æ©æ¢°ã§åŠçãããšãããåãžã§ã $i$ ã®åŠçæé㯠$p_i$ ã§ãããæ©æ¢°ã¯1床ã«1ã€ã®ãžã§ãããåŠçã§ããããããžã§ãã®åŠçäžã¯ä»ã®ãžã§ãã¯åŠçã§ããªãããŸããåãžã§ã $i$ ã«ã¯ãæºåæé $r_i$ ãšçŽæ $d_i$ ãäžããããŠããããã®ãšããç®ç颿° $f$ ãæå°ã«ãããžã§ãã®é åãæ±ããã
$x_{ij}$ ããžã§ã $i$ ããžã§ã $j$ ããå ã«åŠçããããã衚ããã€ããªå€æ°ã$M$ ãåå倧ããªæ°ãšããå®åŒåã¯ä»¥äžã
\begin{array}
&\min &f \\
s.t. &c_i\geq r_i+p_i &\forall i\in V \\
&c_i\geq c_j+p_j-Mx_{ij} &\forall i,j\in V,i<j \\
&c_i\leq c_j-p_i+M(1-x_{ij}) &\forall i,j\in V,i<j \\
&c_i<d_i
\end{array}
åé¡ã®ããªãšãŒã·ã§ã³ãšããŠã以äžãªã©ãããã
- äžŠåæ©æ¢°åé¡ïŒ2å°ä»¥äžã®æ©æ¢°ã§åãžã§ãã¯ãããã1å°ã§1床ã ãåŠçããããšããåãžã§ãã«å¯Ÿããæ©æ¢°ã®å²åœãšåæ©æ¢°ã«å²åœãŠããããžã§ãã®åŠçé åºã決å®ããåé¡ã
- ãããŒã·ã§ããåé¡ïŒå·¥çšé åºãã©ã®ãžã§ãã«ã€ããŠãåãå Žåã®åé¡ã
- ãªãŒãã³ã·ã§ããåé¡ïŒãžã§ãã®äžéšãŸãã¯ãã¹ãŠã®å·¥çšé åºãä»»æã§ãå·¥çšé åºãæé©åã®å¯Ÿè±¡ãšãªãå Žåã®åé¡ã
è§£æ³
å€ãã®ã¹ã±ãžã¥ãŒãªã³ã°åé¡ã¯NPå°é£ã ãã工倫ãããåæé宿³ãæã¡èšããããšã§ããªããžã§ãæ°ã倧ããåé¡ãè§£ããå Žåãããã
ãŸãã2æ©æ¢°ã®æ©æ¢°åé¡ã¯ãžã§ã³ãœã³æ³ãšãã貪欲æ³ããŒã¹ã®å¹ççãªå³å¯è§£æ³ãããããã ããåãžã§ãã®æºåæéãšçŽæãå
šãŠåäžã§ããããšãåãžã§ãã«ã¯åå·¥çšãšåŸå·¥çšã®2ã€ã®åŠçãå«ãŸããããšãæ¡ä»¶ã
while (æªæ±ºå®ã®åŠçãååš)
p â æªæ±ºå®ãã€åŠçæéãæå°ã®åŠç
if (p ãåå·¥çš)
åœè©²ãžã§ããã¹ã±ãžã¥ãŒã«ã®æåããé ã«äžŠã¹ã
else if (p ãåŸå·¥çš)
åœè©²ãžã§ããã¹ã±ãžã¥ãŒã«ã®åŸãããé ã«äžŠã¹ã
end if
åœè©²ãžã§ãã®ååŠçãæ±ºå®æžã¿ãšãã
end while
8.4.2 å€åã¹ã±ãžã¥ãŒãªã³ã°åé¡
åé¡
å·¥å Žã®åŸæ¥å¡ãäº€éæ©é¢ã®ä¹åå¡ãç
é¢ã®çè·åž«ãªã©æ§ã
ãªè·å Žã«ãããããæéå
ã®å€åã¹ã±ãžã¥ãŒã«ãäœæããåé¡ã
çè·åž«ã¹ã±ãžã¥ãŒãªã³ã°åé¡ãä¹åå¡ã¹ã±ãžã¥ãŒãªã³ã°åé¡ãªã©æ§ã
ãªããªãšãŒã·ã§ã³ããããäŸãã°çè·åž«ã¹ã±ãžã¥ãŒãªã³ã°åé¡ã¯ã以äžã®ãããªæ¡ä»¶ã®ããšã§ã·ãããæ±ºå®ããåé¡ã
- æææ¡ä»¶1ïŒæ¯æ¥ã®åå€åã«å¿ èŠãªäººæ°ç¢ºä¿
- æææ¡ä»¶2ïŒã¹ãã«ã¬ãã«ãæå±ããŒã ãèæ ®ããåã·ããã®äººå¡æ§æ
- æææ¡ä»¶3ïŒåçè·åž«ã®å€ååæ°ãæ±ºããããç¯å²å ã«åãã
- æææ¡ä»¶4ïŒãã®ä»ã®æ¥åãäŒã¿ã®åžæã®å è¶³
- æææ¡ä»¶5ïŒçŠæ¢ãããŠããã·ãããã¿ãŒã³ã®æé€
ãã¹ãŠã®å¶çŽãæºããã®ã¯é£ãããããå¿ ãå®ãå¿ èŠã®ããå¶çŽã¯çµ¶å¯Ÿå¶çŽãšãããã以å€ã¯ãœããå¶çŽãšããããšãå€ãã
è§£æ³
å€§èŠæš¡ãªæŽæ°èšç»åé¡ãªã®ã§ãå³å¯è§£æ³ã¯å³ãããã¡ã¿ãã¥ãŒãé©çšããç ç©¶ãçãã
8.5 ååºãã»è©°èŸŒã¿åé¡
- ååºãåé¡ïŒå®åã®æ¯æããå¿ èŠãšããã圢ç¶ã倧ããã®è³æãååºããæ¯æã®ææè²»ãååºãã«ãããå·¥çšè²»ãæå°åããåé¡
- 詰蟌ã¿åé¡ïŒäžããããå³åœ¢ããã容åšã®äžã«å³åœ¢ã®éè€ããªãããã«é 眮ããåé¡
æ¬è³ªçã«ã¯ãããã€ãã®å¯Ÿè±¡ç©ãäºãã«éãªããªãããã«äžããããé åå ã«å¹çããé 眮ããåé¡ã
8.5.1 ããããµãã¯åé¡
åé¡
容é $c$ ã®ããããµãã¯ãš $n$ åã®è·ç© $N=\lbrace 1,\cdots,n\rbrace$ ãäžããããŠãããè·ç© $i\in N$ ã®å®¹éã $w_i$ã䟡å€ã $p_i$ ãšãããšãã容éå¶é $c$ ã®ç¯å²ã§äŸ¡å€ã®åãæå€§ã«ãªãè·ç©ã®è©°åããæ±ããåé¡ã
$x_i$ ãè·ç© $i$ ãããããµãã¯ã«å ¥ã£ãŠãããã衚ããã€ããªå€æ°ãšãããšãå®åŒåã¯ä»¥äžã
\begin{array}
&\max &\displaystyle\sum_{i=1}^{n}p_ix_i \\
s.t. &\displaystyle\sum_{i=1}^{n}w_ix_i\leq c \\
&x_i\in\lbrace 0,1\rbrace &\forall i\in N
\end{array}
è§£æ³
NPå°é£ãå³å¯è§£æ³ã§ã¯åæé宿³ãåçèšç»æ³ãè¿äŒŒè§£æ³ã§ã¯å±ææ¢çŽ¢æ³ãªã©ãçšãããããåçèšç»æ³ã¯ä»¥äžãã$i$ åç®ãŸã§ã®åç©ãŸã§ã§ãããããµãã¯ã®å®¹éã $j$ ã®ãšãã®æé©å€ããDPããŒãã«ãšããã
dp â (N+1)Ã(c+1)ã®é
å
for each j = 0 to c
dp[0][j] = 0
end for
for each i = 1 to N
for each j = 0 to c
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w_i] + p_a)
end for
end for
PRINT dp[N][C]
8.5.2 ãã³ãããã³ã°åé¡
åé¡
容é $c$ ã®ç®±ãš $n$ åã®è·ç© $N=\lbrace 1,\cdots,n\rbrace$ ãäžããããŠãããè·ç© $j\in N$ ã®å®¹éã $w_j$ ãšãããšãããã¹ãŠã®è·ç©ãè©°åããã®ã«å¿ èŠãªç®±ã®æ°ãæå°ã«ããè©°åããæ±ããåé¡ã
$x_{ij}$ ãç®± $i$ ã«è·ç© $j$ ãå ¥ã£ãŠãããã®ãã€ããªå€æ°ã$y_i$ ãç®± $i$ ã䜿ãããŠãããã®ãã€ããªå€æ°ãšãããšãå®åŒåã¯ä»¥äžã
\begin{array}
&\min &\displaystyle\sum_{i=1}^n y_i \\
s.t. &\displaystyle\sum_{j=1}^n w_jx_{ij}\leq cy_i &\forall i\in N \\
&\displaystyle\sum_{i=1}^n x_{ij} = 1 &\forall j \in N \\
&y_i\in\lbrace 0,1\rbrace &\forall i\in N \\
&x_{ij}\in\lbrace 0,1\rbrace &\forall i\in N, j\in N
\end{array}
è§£æ³
NPå°é£ãåæé宿³ã貪欲æ³ã»åçææ³ãã¯ãããšããè¿äŒŒè§£æ³ãçšããããã
8.5.3 ãã®ä»
以äžã®ãããªåé¡ãããã
- 1次å è³æååºãåé¡ïŒæ¯æããæ§ã ãªå€§ããäœã®å¿ èŠãšãããéã®è³æãååºããšãã«äœ¿çšããæ¯æãæå°ã«ããåé¡ã
- é·æ¹åœ¢è©°èŸŒã¿åé¡ïŒæ§ã ãªå€§ããã®é·æ¹åœ¢ã2次å å¹³é¢ã®ããé åå ã«éãªãã®ãªãããã«é 眮ããåé¡ã
8.ïŒ é 眮åé¡
æœèšé 眮åé¡ãšã¯ãæœèšã®é 眮å¯èœãªåè£ç¹ãšæœèšã«å²åœãã察象ãäžä»¶ãšããããåºæºãæºããæœèšã®é çœ®ãæ±ºå®ããåé¡ã以äžã¯æœèšé 眮åé¡ã®äŸã
- ã¡ãã£ã¢ã³åé¡ïŒé¡§å®¢ããæãè¿ãæœèšãžã®è·é¢ã®ç·åãæå°åããããã«æœèšãé 眮ããåé¡ã
- ã»ã³ã¿ãŒåé¡ïŒé¡§å®¢ããæãè¿ãæœèšãžã®è·é¢ã®æå€§å€ãæå°åããããã«æœèšãé 眮ããåé¡ã
8.6.1 容éå¶çŽãªãæœèšé 眮åé¡
åé¡
顧客ã®éå $D$ ãšæœèšã®é 眮å¯èœå°ç¹ã®éå $F$ ãäžããããåæœèš $i\in F$ ãéèšããããã®åºå®ã³ã¹ãã $f_i$ãå顧客 $j\in D$ ãšåæœèš $i$ ã®éã®åäœéèŠåœããã®èŒžéã³ã¹ãã $c_{ij}$ ãšãããšããæœèšéèšåºå®ã³ã¹ããšèŒžéã³ã¹ãã®ç·åãæå°ãšãªãããã«ãéèšããæœèšãéžæããåé¡ã
$x_{ij}$ ãæœèš $i$ ã«ãã£ãŠé¡§å®¢ $j$ ã®éèŠãæºããããå²åã$y_i$ ãæœèš $i$ ãéèšãããåŠãã®ãã€ããªå€æ°ãšããŠãå®åŒåã¯ä»¥äžãMIPã«ãªãã
\begin{array}
&\min &\displaystyle\sum_{i\in F}f_iy_i+\sum_{i\in F}\sum_{j\in D}c_{ij}x_{ij} \\
s.t. &x_{ij}\leq y_i &\forall i\in F, j\in D \\
&\displaystyle\sum_{i\in F}x_{ij}=1 &\forall j\in D \\
&x_{ij}\geq 0 &\forall i\in F, j\in D \\
&y_i\in\lbrace 0,1\rbrace &\forall i\in F
\end{array}
è§£æ³
æœèšé 眮åé¡ã®å€ãã¯NPå°é£ãç·©åææ³ãè¿äŒŒææ³ãçšããããã
8.7 å²åœåé¡ã»ãããã³ã°åé¡
ããéåã®åèŠçŽ ã«ã€ããŠããããå¥ã®éåã®ã©ã®èŠçŽ ã«å²åœãŠããšãããŸããŸãªå¶çŽæ¡ä»¶ãæºããã€ã€ãæãããå²åœãè¡ãããšãã§ããã®ããæ±ºå®ããåé¡ã
8.7.1 2次å²åœåé¡
åé¡
察象ç©ãšåæ°ã®å²åœå
ãäžããããŠãããšããå²åœå
éã®èŒžééãšè·é¢ã®åžã®ç·åãæå°åããåé¡ã
ããå
·äœçã«ã¯ãå¯Ÿè±¡ç© $P=\lbrace P_1,\cdots,P_n\rbrace$ ã®å²åœå
$L=\lbrace L_1,\cdots,L_n\rbrace$ ãèããå¯Ÿè±¡ç© $P_i$ ãš $P_j$ ã®éã®èŒžéé $q_{ij}$ ãšå²åœå
$L_k$ ãš $L_l$ ã®éã®è·é¢ $d_{kl}$ ãäžããããŠãããšãã茞ééãšè·é¢ã®ç©ã®ç·åãæå°ã«ããå²åœãæ±ããåé¡ã
$x_{ij}$ ãå¯Ÿè±¡ç© $P_i$ ãå²åœå $L_j$ ã«äœçœ®ãããåŠãã®ãã€ããªå€æ°ãšãã以äžã®ããã«å®åŒåãããã
\begin{array}
&\min &\displaystyle\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{k=1}^{n}\sum_{l=1}^{n}q_{ij}d_{kl}x_{ik}x_{jl} \\
s.t. &\displaystyle\sum_{j=1}^{n}x_{ij}=1 &\forall i\in V \\
&\displaystyle\sum_{i=j}^{n}x_{ij}=1 &\forall j\in V \\
&x_{ij}\in\lbrace 0,1\rbrace &\forall i,j\in V
\end{array}
å·¥å Žå ã®æ©æ¢°ã®é 眮ãå€éšèšæ¶è£ 眮äžã§ã®ããŒã¿é åãªã©ã®çšéãããã
è§£æ³
NPå°é£ãå·¡åã»ãŒã«ã¹ãã³åé¡ãšåãããç®ç颿°ãæå°ã«ããé åãæ±ããåé¡ã ããç®ç颿°ã2次ã§é£ãããåæé宿³ãã¡ã¿ãã¥ãŒã
8.7.2 äžè¬åå²åœåé¡
åé¡
äžããããããã€ãã®ä»äºããšãŒãžã§ã³ãã«å²åœãŠããšããå²åœã«äŒŽãã³ã¹ãã®ç·åãæå°åããåé¡ãäŸãã°ä»¥äžã
$n$ åã®ä»äº $J=\lbrace 1,\cdots,n\rbrace$ ãš $m$ 人ã®ãšãŒãžã§ã³ã $I=\lbrace 1,\cdots,m\rbrace$ ã«å¯ŸããŠãä»äº $j\in J$ ããšãŒãžã§ã³ã $i\in I$ ã«å²åœãŠããšãã®ã³ã¹ã $c_{ij}$ ãšè³æºã®èŠæ±é $a_{ij}$ãããã³åãšãŒãžã§ã³ã $i\in I$ ã®å©çšå¯èœè³æºé $b_i$ ãäžããããŠããã
ããããã®ä»äºãå¿ ããããã1ã€ã®ãšãŒãžã§ã³ãã«å²åœãªããã°ãªããããŸããåãšãŒãžã§ã³ãã«å²åœãŠãããä»äºã®ç·è³æºèŠæ±éãããã®ãšãŒãžã§ã³ãã®å©çšå¯èœè³æºéãè¶ ããªãããã«ããªããŠã¯ãªããªãããã®ãšããå²åœã«äŒŽãã³ã¹ãã®ç·åãæå°åãããããªå²åœãæ±ããã
$x_{ij}$ ãä»äº $j$ ããšãŒãžã§ã³ã $i$ ã«å²åœãŠããåŠãã®ãã€ããªå€æ°ãšããŠãå®åŒåã¯ä»¥äžã
\begin{array}
&\min &\displaystyle\sum_{i\in I}\sum_{j\in J}c_{ij}x_{ij} \\
s.t. &\displaystyle\sum_{j\in J}a_{ij}x_{ij}\leq b_i &\forall i\in I \\
&\displaystyle\sum_{i\in I}x_{ij}=1 &\forall j\in J \\
&x_{ij}\in\lbrace 0,1\rbrace &\forall i\in I,j\in J
\end{array}
è§£æ³
å®è¡å¯èœè§£ãååšãããã®å€å®åé¡ãNPå®å šãäžéšã®å¶çŽãç·©åããŠå®è¡äžå¯èœè§£ãæ¢çŽ¢ã®å¯Ÿè±¡ãšããæ¹æ³ãæå¹ã
8.7.3 æå€§ãããã³ã°åé¡
åé¡
ç¡åã°ã©ã $G=(V,E)$ ã«å¯ŸããŠãšããžã®æ¬æ°ãæå€§ã®ãããã³ã°ãæ±ããåé¡ã
$A$ ãæ¥ç¶è¡åã$\boldsymbol{x}$ ãšãšããžãååšãããåŠãã®ãã€ããªå€æ°ã®ãã¯ãã«ãšããŠãå®åŒåã¯ä»¥äžã
\begin{array}
&\max &\boldsymbol{1}^T\cdot\boldsymbol{x} \\
s.t. &A\boldsymbol{x}\leq\boldsymbol{1} \\
&x(e)\in\lbrace 0,1\rbrace &\forall e\in E
\end{array}
ä»äºã®å²åœãåŠçãšææ¥ã®å²ãåœãŠã人å¡ã®é å±å²åœãªã©ã«çšããããã
è§£æ³
2éšã°ã©ãã®å Žåãçæ¹ã®ã°ã©ãã«ä»®æ³çãªãœãŒã¹ããŒããããçæ¹ã®ã°ã©ãã«ä»®æ³çãªã·ã³ã¯ããŒããå®çŸ©ããŠç¹ãããã¹ãŠã®ãšããžã®å®¹éã1ãšããŠæå€§æµåé¡ãèããã°ããã
äžè¬ã®ã°ã©ãã®å Žåã¯ãšãã¢ã³ãºæ³ (ãŸã çè§£ã§ããŠããªãã®ã§ãçè§£ããã远èšããŸã)ã
8.7.4 æå€§éã¿ãããã³ã°åé¡
åé¡
å蟺 $e\in E$ ã®éã¿ $w(e)$ ãäžããããŠããç¡åã°ã©ã $G=(V,E)$ ã«å¯Ÿããéã¿ã®å $\displaystyle\sum_{e\in M}$ ãæå€§ã®ãããã³ã° $M$ ãæ±ããåé¡ã
$\delta(v)$ ãããŒã $v$ ã«æ¥ç¶ããŠãããšããžéåã$x(e)$ ããšããž $e$ ããããã³ã° $M$ ã®èŠçŽ ãåŠãã®ãã€ããªå€æ°ãšããŠãå®åŒåã¯ä»¥äžã
\begin{array}
&\max &\displaystyle\sum_{e\in E}w(e)x(e) \\
s.t. &\displaystyle\sum_{e\in\delta(v)}x(e)\leq 1 &\forall v\in V \\
&x(e)\in\lbrace 0,1\rbrace &\forall e\in E
\end{array}
è§£æ³
2éšã°ã©ãã§ã¯ãã³ã¬ãªãŒæ³ãäžè¬ã°ã©ãã§ã¯ãšãã¢ã³ãºæ³ãæå€§éã¿å®å šãããã³ã°ã®å Žåã®ãã³ã¬ãªãŒæ³ã¯ä»¥äžã
for each element in A
element â max_element - element
end for
for each row in A
element â element - min_element_in_row
end for
for each col in A
element â element - min_element_in_col
end for
while å€ã0ã®æåã®ã¿ã§å®å
šãããã³ã°ãã§ããªã
0ãå«ãã§ããæåããªããªãããã«è¡ã»åãåé€ããŠè¡åBçæ (åé€ããè¡ã»åæ°ãæå°ã«ãã)
for each element in A
if element is not in åé€ãããè¡ã»å
element â element - min_element_in_B
end if
end for
end while
å€ã0ã®æåã®ã¿ã®å®å
šãããã³ã°ãåºå
9. è§£æ³
9.1 å³å¯è§£æ³
9.1.1 åæé宿³ (Branch and Bound)
倿°ã®å€ã§å ŽååãããŠå
ã®åé¡ãååé¡ã«åå²ããæäœãš (åææäœ)ãååé¡ä»¥äžã«æé©è§£ãååšãããã確èªããæäœ (é宿äœ) ãšãç¹°ãè¿ããŠè§£ãæ±ããææ³ã
å
šæ¢çŽ¢ãããŒã¹ãšããŠå³å¯è§£æ³ã ããåŠçãéäžã§æ¢ããã°æ«å®è§£ãåŸãããã
ãããã¶ãã¯åé¡ãäŸã«ãšããšä»¥äžã®ããã«åŠçãããã
- 貪欲æ³ãªã©ã§åæè§£ãåŸããåæè§£ã¯ãã®åé¡ã®äžçã
- ãŸã æ€èšããŠããªãåç©ãéžãã å Žåãšéžã°ãªãã£ãå Žåã§ããããååé¡ãäœã (åææäœ)
- ååé¡ã§ã¯ç·åœ¢ç·©åã«ããè§£ãåŸãŠãè§£ã®å€ãäžç以äžãªããã®ååé¡ã¯åãæšãŠã (é宿äœ)ãæšãŠãªãå Žåã¯ååé¡ãååž°çã«è§£ããããããã®ååé¡ã§è§£ãåŸãããã°ãäžçãæŽæ°ããã
- ãã¹ãŠã®ååé¡ãè§£ããäžçã«å¯Ÿå¿ãã
9.1.2 åé€å¹³é¢æ³ (Cutting-Plane Method)
ç·åœ¢ç·©ååé¡ã®æé©è§£ããå§ããŠãæŽæ°è§£ãæ®ãã€ã€ç·©åè§£ãé€å»ããå¶çŽã远å ããæç¶ããç¹°ãè¿ãé©çšããã劥åœäžçåŒ (æŽæ°è§£ãæ®ãå¶çŽ) ã®äžã§ç·©åè§£ãé€ããã®ãåé€å¹³é¢ãšèšããåé€å¹³é¢ã远å ããããšã§è§£ç©ºéãçããŠããã
- ç·åœ¢ç·©ååé¡ãè§£ã
- ç·©åè§£ãæŽæ°è§£ãªãçµäº
- 劥åœäžçåŒã远å ããŠ1.ã«æ»ã
9.2 è¿äŒŒè§£æ³
9.2.1 貪欲æ³
åé¡ã®æææ±ºå®å¯Ÿè±¡ã«å¯Ÿãã屿çãªæ
å ±ã ãã§é ã«æææ±ºå®ããŠãããäŸãã°ãããã¶ãã¯åé¡ã§ã$p_i/w_i$ ã倧ãããã®ããé ã«ååãéžãã§ãããªã©ã
äžè¬ã«ã¯è¿äŒŒè§£ããåŸãããªãããã¯ã©ã¹ã«ã«æ³ã»ããªã æ³ã»ãžã§ã³ãœã³æ³ãªã©ã§ã¯å³å¯è§£ãåŸãããã
9.2.2 屿æ¢çŽ¢æ³
ååã®éãä»åŸãããŠããè§£ã®è¿åãæ¢çŽ¢ããŠããã
- åæè§£ $\boldsymbol{x}$ ãããããã®æ¹æ³ã«ããæ§ç¯ãã
- è§£ $\boldsymbol{x}$ ã®è¿åå
ã«ããããè§£ãããã°è§£ $\boldsymbol{x}$ ãæŽæ°ããã¹ããã2ã«æ»ããããããè§£ããªããã°çµäºããã
ãããã¶ãã¯åé¡ãäŸã«ãšããšè¿åã«ã¯ä»¥äžã®ãããªãã®ãããã
- æ¿å ¥è¿åïŒãªã¹ãã«å ¥ã£ãŠããªãåç©ã1ã€éžã³ããªã¹ãã«å ¥ãã
- 亀æè¿åïŒãªã¹ãã«å ¥ã£ãŠãããã®ãã1ã€ãå ¥ã£ãŠããªããã®ãã1ã€éžã³äº€æãã
- $k$-optè¿åïŒ$k$ åã®èŠçŽ ãå€åãããããªã¹ãã«å ¥ã£ãŠãããã®ãã $k-l$ åãå ¥ã£ãŠããªããã®ãã $l$ åéžã³äº€æããããªã©
äžè¬ã«å€§åçæé©è§£ã«ã¯å°éã§ããªããã屿çæé©è§£ã¯æ¯èŒç容æã«æ±ããããã
9.2.3 ã¡ã¿ãã¥ãŒãªã¹ãã£ã¯ã¹
åé¡ã«äŸåããªã圢åŒã§è¿äŒŒçã«è§£ãæ¢çŽ¢ã»æ¹åããææ³ã以äžã®ãããªå·¥å€«ã«ããããè§£ãåŸãããããããããã©ã³ã¹ããå®çŸããããšãéèŠã
- éäžåïŒããè§£åšèŸºãéäžçã«æ¢çŽ¢ãã
- 倿§åïŒå±æçæé©è§£ã«é¥ããªãããã«ãå¹ åºãæ¢çŽ¢ãã
9.2.3.1 å€ã¹ã¿ãŒã屿æ¢çŽ¢æ³ (Multi-start Local Search)
åæè§£ãå€ããŠå±ææ¢çŽ¢æ³ãç¹°ãè¿ãæ¹æ³ãåæè§£ã®äœæã«ã¯ä¹±æ°ãçšããã
éäžãŸã§ã®å±ææé©è§£ãåæè§£ã«åæ ãããæ¹æ³ããããé©å¿çå€ã¹ã¿ãŒã屿æ¢çŽ¢æ³ãšããã
9.2.3.2 éºäŒçã¢ã«ãŽãªãºã (Generic Algorithm)
è§£ãéºäŒåãšããŠè¡šçŸããè€æ°ã®éºäŒåãçšããŠäº€åãçªç¶å€ç°ãªã©ã®æäœãšæ·æ±°ã«ããäžä»£äº€ä»£ã«ãã£ãŠãè§£ãæ¢çŽ¢ããã
亀åãçªç¶å€ç°ã¯ä»¥äžã®ã€ã¡ãŒãžã
9.2.3.3. ç²å矀æé©å (Particle Swarm Optimization)
倿°ã®ç²åã«ãã£ãŠéå£ã圢æããéå£ã«å«ãŸããç²ååå£«ãæ å ±äº€æããããšã«ããæ¢çŽ¢ãé²ããã
- åæåïŒãã¹ãŠã®ç²å $k$ ã«å¯ŸããŠãåæäœçœ® $x_k(0)$ ãšåæé床 $v_k(0)$ ãäžãã
- äœçœ®æŽæ°ïŒé床ãçšããŠç²åã®äœçœ®ãæŽæ°ããã$x_k(t+1)=x_k(t)+v_k(t)$
- éåºŠæŽæ°ïŒããè§£ã®æ¹åã«åããããã«éåºŠãæŽæ°ããã$x_k^p(t)$ 㯠$k$ çªç®ã®ç²åã®äžã§ã®é廿è¯è§£ã$x^g(t)$ ã¯ã¿ã€ã ã¹ããã $t$ ã«ãããæè¯è§£ã$w, c, r$ ã¯å®æ°ã
v_k(t+1)=wv_k(t)+c_1r_1\left(x^{p}_k(t)-x_k(t+1)\right)+c_2r_2\left(x^{g}(t)-x_k(t+1)\right)
9.2.3.4. çŒããªãŸãæ³ (Simulated Annealing)
髿ž©ç¶æ ããã¯ãããæ¢çŽ¢ãç¹°ãè¿ãäžã§äœé³ç¶æ ã«ããŠããã髿ž©ã§ã¯æ¹æªãå«ãæ¢çŽ¢ã蚱容ãäœæž©ã§ã¯éåžžã®å±ææ¢çŽ¢ãããããšã§ã屿æé©è§£ã«é¥ããªãããã«ããã
- åææž©åºŠ $T$ ãèšå®ãã
- åæè§£ãèšå®ãã
- å·åŽç $\alpha$ ã§æž©åºŠãäžããã$Tâ\alpha T$ã
- 次ã®è§£ãã©ã³ãã ã«ãµã³ããªã³ã°ããã
4-1. ãµã³ããªã³ã°ããè§£ãçŸåšã®è§£ããããå ŽåãæŽæ°ããã
4-2. ãµã³ããªã³ã°ããè§£ãçŸåšã®è§£ããæªãå Žåãæ¹æªå¹ $\Delta E$ ã«å¯ŸããŠç¢ºç $\displaystyle Prob\left(U(0,1)>\exp\left(-\frac{\Delta E}{T}\right)\right)$ ã§æŽæ°ããã - éŸå€ãæºããè§£ãåŸããããŸã§3.ãš4.ãç¹°ãè¿ãã
9.2.3.5. 人工èã³ãããŒã¢ã«ãŽãªãºã (Artificial Bee Colony Algorithm)
ããããã®æ¡é€è¡åãæš¡ããåç©«ããã»è¿œåŸããã»åµå¯ãããå®çŸ©ã
- åç©«ããïŒïŒã€ã®é£ç³§æºã«èãåãã«è¡ãããã®è¿åãæ¢çŽ¢ãã
- 远åŸããïŒåç©«ããã®æ å ±ã«åºã¥ããŠç®æšã®é£ç³§æºã決ããèãåãã«è¡ã
- åµå¯ããïŒé£ç³§æºã®èãå°œãããæ°ããé£ç³§æºã決ããã
以äžã®ãããªã¢ã«ãŽãªãºã ã
- åæé£ç³§æºãçæãã
- åç©«ãããã§ãŒãºãèªåã®é£ç³§æºè¿åãæ¢çŽ¢ããããããé£ç³§æºãããã°æŽæ°ããããŸããèã®ååŸåæ°ãã€ã³ã¯ãªã¡ã³ããã
- 远åŸãããã§ãŒãºãè©äŸ¡å€ã®é«ãé£ç³§æºãé«ç¢ºçã§éžæããèã®ååŸåæ°ãã€ã³ã¯ãªã¡ã³ããã
- åµå¯ãããã§ãŒãºãæå®åæ°ä»¥äžèãååŸããé£ç³§æºããä»ã®é£ç³§æºã«çœ®ãæãããæ¢çŽ¢ã®æã¡åãã瀺ã
9.2.3.6. ã¿ããŒæ¢çŽ¢æ³ (Tabu Search)
ã¿ããŒãªã¹ããšåŒã°ããéå»ã®æŽæ°å±¥æŽãçšããŠãåãè§£ãžã®æ¢çŽ¢ãããªãããã«ãããå±æè§£ã«èœã¡ãªãããã®å·¥å€«ã
- åºæºåäœãçæãã
- è¿ååäœãçæãã (ã¿ããŒãªã¹ãã«å«ãŸããåäœã¯çæããªã)
- åºæºåäœããæè¯åäœãžã®é·ç§»ãã¿ããŒãªã¹ãã«è¿œå (æè¯åäœãã®ãã®ãã¿ããŒãªã¹ãã«è¿œå ããå Žåããã)
- æè¯åäœãåºæºåäœã«ãã
- æè¯åäœãçµäºæ¡ä»¶ãæºããã°çµäºããã以å€ã®å Žå2.ã«æ»ãã
9.2.4. åçææ³ (Column Generation Algorithm)
ãã¿ãŒã³ãå šåæãããšèšå€§ã«ãªãç·åœ¢ç·©ååé¡ãè§£ãã®ãé£ããå Žåã«ããã¿ãŒã³ãäžéšã ãåæããŠè¿äŒŒè§£ãåŸãæ¹æ³ã






















