å æ¥ãä¸è¨ã®è¨äºã§ããããµãã¯åé¡ã® DP ãæç´ã«çºãã¾ããã
ä»åã¯ãããããµãã¯åé¡ã«éããæ§ã 㪠DP ãæç´ã«çºããåã§ãã ãââï¼ä½ããã®éåï¼ã®æ大å¤ãã®ããã«è¨ç®ãããââã®é¨åã«ã¤ãã¦èãã¦ããã¾ãã ãã¡ãã DP ãããéã«ââããã®ã¾ã¾æã¤ã¨ç©ºéè¨ç®éããã¡ããã¡ãã«ãªãï¼ãã¨ã«ä¼´ã£ã¦æéè¨ç®éããã¡ããã¡ãã«ãªãï¼ã®ã§ãããå ¸å DP ã§æã«æ§ç¯ããã¦ããéåãèãã¦ãããã¨ã§ãããããæ§é ãæ㤠DP ãèããéã«ç解ãã¹ã ã¼ãºã«ãªãæ°ããã¾ãã ãä½ã ãå ¨ãã¿ã¼ã³èæ ®ããããã¨ãªã£ãã¨ãã«ããããã漸åå¼ãèããã°ããã¯ããã¨ã§ããã¬ãã¼ããªã¼ãå¢ãããã§ãã
æ³å®èªè ã¯ç«¶ããããã¦ã㦠DP ãå¦ã³ä¸ã»è¦æ¦ä¸ãããç¨åº¦ç¥ã£ã¦ãã人ã§ãããç¨åº¦æ°å¼ãèªãã人ã§ããæ°å¼ãè¦æãªäººã¯ãæ°å¼ãå¾æãªäººã«å©ãã¦ããããªã©ããã¦ããããã¨å©ããã¾ããå ·ä½ä¾ã交ãã¤ã¤èª¬æãã¦ããã®ã§é°å²æ°ã¯ããã£ã¦ããããããããã¾ããï¼ ã¨ã¯ããç®ã§èªãã ãã§ã¯ããããªãé¨åãããã¨æãã®ã§ãæãåããã¤ã¤èãã¦ããããã¨ããããæ°ããã¾ãã
軽ãæ°æã¡ã§æ¸ãå§ããã¨ããéå»ä¸ã®ããªã¥ã¼ã ã«ãªã£ã¦ãã¾ã£ã¦å°æãã¦ãã¾ãã åãã¼ãã¯æ¦ãé£æ度é ã§ä¸¦ãã§ããæ°ããã¾ããããã¾ãé åºã«ãã ãããæ°ã«ãªãã¨ãããèªã¿ããã¨ãã«èªãã§ããããã°ããããã§ãã
- å°å ¥
- å®ç¾©ãè¨æ³ãªã©
- è©æ £ãã
- å ¸åçãªæ§é
- å®è£ ä¾
- é¢é£è³æ
- ãã¨ãã
- ããã
å°å ¥
$\gdef\DP{\operatorname{dp}}$ ä½ããã®éå $\mathcal{S}$ ã«å¯¾ã㦠$\bigodot_{S\in\mathcal{S}} f(S)$ ãè¨ç®ãããåé¡ããã£ãã¨ãã¾ãã ãã®ãããªåé¡ã§ DP ãè¡ãå ´åã$\mathcal{S}$ ãæ§ç¯ãã漸åå¼ããã®ã¾ã¾ DP ã«æµç¨ã§ãããã¨ããã°ãã°ããã¾ãã ãã®ããã$\mathcal{S}$ ã«é¢ãã漸åå¼ãèãã¦ãããã¨ãæç¨ã§ãã
ããã§ã$\mathcal{S}$ ã¯ä¸è¬ã«ã¯ç©ºéè¨ç®éãããããã®ï¼é¨åæååãé¨åéåãªã©ï¼ã®éåã§ã$f$ ã¯ãã®è¦ç´ ã空éè¨ç®éã®ããã¾ãªããã®ï¼æ´æ°ã boolean ãªã©ï¼ã«åãé¢æ°ã$\bigodot$ 㯠$f$ ã§åããããã®ãã¡ãåãããæä½ï¼$\min$ ã $\sum$ ãªã©ï¼ã§ããå人çã«ã¯ $f$ ã projection (project)ã$\bigodot$ ã folding (fold) ã¨å¼ãã§ãã¾ãã
ã¾ããä¸è¨ã§æãããã㪠$\mathcal{S}$ ã«å¯¾ãã¦ãã$\mathcal{S}$ ã®åè¦ç´ ãæ¡ä»¶ $P$ ãæºãããã©ããã§åé¡ãããã$\mathcal{S}$ ã®åè¦ç´ $S$ ãé¢æ° $f(S)$ ã®å¤ã§åé¡ããããªã©ãèæ ®ãããã¨ã§ãæ¡ä»¶ã®å¢ãã DP ãèãããã¨ãå¯è½ã§ãã
å æ¥ã®è¨äºã§ã¯é ãã»ãããã«é¢ãã¦èãã¾ããããããã§ã¯æ°å¼ã¨ã®ç¸æ§ãããæ¹æ³ã§èãããã®ã§ãåºæ¬çã«ã¯ãããå½¢å¼ã§ã®æ¼¸åå¼ã«ãªã£ã¦ãã¾ããã¨ã¯ãããé©åã«èå¯ãããã¨ã§å®è£ ä¸ã¯é ãå½¢å¼ã«ãã§ãããã¼ããå¤ãã«ãªã£ã¦ãã¾ãã
å®ç¾©ãè¨æ³ãªã©
ããã¨ããï¼éå (set) ãå (sequence)ãé å (permutation) ãåå² (partition) ãçµè·¯ (path) ãªã©ãé æåãå ±éã®å¯¾è±¡ãè¤æ°åºã¦ãã¾ãããããããã¨ã«å¥ã ã®æåã使ããã¨ããã¨éã«æ··ä¹±ãããã§ãããåç¯ãã¨ã«ã¹ã³ã¼ããåããã¦ããã¨ãã¦ãåãæ示ãã¤ã¤ $S$ ã $P$ ãªã©ã®æåã使ããã¨ã«ãã¾ãã
$S\cap T=\emptyset$ ãæºããéå $S$ 㨠$T$ ã«å¯¾ãã¦ã$S\sqcup T=S\cup T$ ã¨ãã¾ãã ãã¨ãã°ã漸åå¼ãç«ã¦ãéãªã©ã« $S_i = S_{i-1}\sqcup S_{i-2}$ ã®ããã«æ¸ãã$S_{i-1}$ 㨠$S_{i-2}$ ã«éè¤ããè¦ç´ ããªããã¨ã示ãã®ã«ä½¿ã£ãããã¾ãã å®éã«ã¯ $S_{i-1}\cap S_{i-2}=\emptyset$ ã§ãããã¨ã示ãå¿ è¦ãããã¾ãããé©å®çç¥ãã¾ãã $\sum_{x\in S\sqcup T} f(x) = \sum_{x\in S} f(x) + \sum_{x\in T} f(x)$ ãªã©ãæãç«ã£ã¦ä¾¿å©ãªã®ã§ã$\cup$ ã§ã¯ãªã $\sqcup$ ã§èãã¦ãããæ¹ã使ãåæããããã¨ãå¤ããã§ãã
æåéå $\Sigma$ ã«å¯¾ãã¦ã$\Sigma$ ã®è¦ç´ ãï¼éè¤ãã¦ãããï¼é ã« $n$ å並ã¹ããã® $(\sigma_0, \sigma_1, \dots \sigma_{n-1})$ ã $\Sigma$ ä¸ã®é·ã $n$ ã®å (sequence over $\Sigma$ of length $n$) ã¨ããããããå ¨ä½ã®éåã $\Sigma^n$ ã¨æ¸ãã¾ã*1ã$\Sigma^0 = \{\varepsilon\}$ ã¨ãªã $\varepsilon$ ã空å ((the) empty sequence) ã¨å¼ã³ã¾ã*2ã ææ§ãããªãã¨ã㯠$(\sigma_0, \sigma_1, \dots, \sigma_{n-1})$ ã®ä»£ããã« $\sigma_0\sigma_1\dots\sigma_{n-1}$ ã¨ãæ¸ãã¾ãã
ã¾ãã$\Sigma$ ä¸ã®åå ¨ä½ã®éå $\Sigma^\star$ ã $$\Sigma^\star \triangleq \Sigma^0 \sqcup \Sigma^1 \sqcup \dots \sqcup \Sigma^n \sqcup \dots $$ ã§å®ç¾©ãã¾ãã$\Sigma^\star$ ã¯ç¡ééåã§ããã$n$ ãåºå®ãã $\Sigma^n$ ã¯ï¼$\Sigma$ ãæéã®åæã§ããã°ï¼æééåã§ãããã¨ã«æ³¨æãã¾ãããã $S$ ã®é·ãã $|S|$ ã¨æ¸ãã¾ãã$S\in\Sigma^n$ ã®ã¨ã $|S|=n$ ã§ãã
å $S$ 㨠$T$ ãï¼ãã®é ã«ï¼é£çµããããã®ã $S\concat T$ ã¨æ¸ããã¨ã«ãã¾ã*3ã$|S\concat T| = |S|+|T|$ ã¨ãªãã¾ãã
é·ã $n$ ã®å $S = (S_0, \dots, S_{n-1})$ ã¨å¤§ãã $k$ ã®éè² æ´æ°ã®éå $I=\{i_0, i_1, \dots, i_{k-1}\}$ ($i_0\lt i_1\lt\dots\lt i_{k-1}\lt n$) ã«å¯¾ãã¦ã$S_I$ ãé·ã $k$ ã®å $(S_{i_0}, S_{i_1}, \dots, S_{i_{k-1}})$ ã¨ãã¾ããç¹ã«ã$S_{\emptyset} = \varepsilon$ ã§ãã
å $P$ ãéå $S$ ã®é å (permutation of $S$) ã§ããã¨ã¯ã$|P| = |S|$ ãã¤ãä»»æã® $x\in S$ ã«å¯¾ã㦠$x$ ã $P$ ã«ã¡ããã©ä¸åº¦ç¾ãããã¨ãè¨ãã¾ãã éå $S$ ã®é åå ¨ä½ã®éåã $S!$ ã¨æ¸ããã¨ã«ãã¾ã*4ã$S!\subseteq S^{|S|}$ ã§ãã ãã¨ãã° $$ \begin{aligned} \{0, 1, 2\}! &= \{(0, 1, 2), (0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)\}, \\ \emptyset! &= \{\}! = \{()\} = \{\varepsilon\} \end{aligned} $$ ã§ãã$|\varepsilon| = |\emptyset| = 0$ ã§ããã$\emptyset$ ã®ä»»æã®è¦ç´ ãã¡ããã©ä¸åº¦ç¾ãã¦ãã (vacuously true) ãã¨ã«æ³¨æãã¾ãããã
ç°¡æ½ãã®ãããå ´ååãã§å®ç¾©ããéã« $$ \begin{aligned} \DP[\angled{i, 0}] &= x, \\ \DP[\angled{0, j}] &= y, \\ \DP[\angled{i, j}] &= z \end{aligned} $$ ã®ããã« $i$ ã $j$ ã®æ¡ä»¶ãæ示ããã«è¡ãã¾ãã ããããããã°ã©ãã³ã°è¨èªã®ãã¿ã¼ã³ãããã®ããã«ä¸ããé ã«é©ç¨ãããã¨ãããã¨ãã°æ¬¡ã®ç¥è¨ã§ããã¨è§£éããããã§ãã $$ \DP[\angled{i, j}] = \begin{cases} x, & \text{if }j = 0; \\ y, & \text{if }j \ne 0 \wedge i = 0; \\ z, & \text{if }j \ne 0 \wedge i \ne 0. \end{cases} $$
ãã®ä»ãåãããã¯ã«ãããéå®çãªå®ç¾©ã«é¢ãã¦ã¯ã該å½ç®æã§åå¥ã«è¨ããã¨ã«ãã¾ãã
éåã®è¨æ³ã«é¢ãã¦
ããããåºã¦ããã®ã§æ¸ãã¦ããã¾ãã
å å çè¨æ³ã«ããã¦ã¯ãæ¦ã次ã®ãããªæ°æã¡ã§è¨è¿°ãã¦ãã¾ãï¼å³å¯ã«å®ããã¦ãããã¨ãä¿è¨¼ãããã®ã§ã¯ãªãã§ãï¼ã
è¨æ³ | ããã¡ |
---|---|
$\{x\in S\mid P(x)\}$ | s.filter(p) |
$\{f(x)\mid x\in S\}$ | s.map(f) |
$\{f(x)\mid x\in S, P(x)\}$ | s.filter(p).map(f) |
ãã㧠.filter(p)
㯠p
ãæºãããã®ã«çµãæä½ã§ã.map(f)
ã¯åè¦ç´ ã« f
ãé©ç¨ããæä½ã§ãã
$x, x'\in S$ ($x\ne x'$) ã«å¯¾ã㦠$f(x) \ne f(x')$ ã¨éããªãå ´åã$\{f(x)\mid x\in S\}$ ã®è¦ç´ æ°ã $S$ ããæ¸ããããã¨ã«ã¯æ³¨æãã¾ãããï¼ããã§ã¯ãã¾ãããããä¾ã¯åºãªãã§ããï¼ã
è¤æ°ã®éåã® $\sqcup$ ãèããã¨ãã®è¨æ³ã§ãã $$ \bigsqcup_{i=0}^{n-1} S_i = S_0\sqcup S_1 \sqcup \dots \sqcup S_{n-1} $$ ã§ããä¸è¨ã§ã¯éåã®éåãªã©ãèãããããã®ã§ãããããããªãã¾ããè½ã¡ã¤ãã¦èãã¾ãããã $$ \begin{aligned} \bigsqcup_{i=0}^{n-1} {\{S_i\}} &= \{S_0\}\sqcup \{S_1\} \sqcup \dots \sqcup \{S_{n-1}\} \\ &= \{S_0, S_1, \dots, S_{n-1}\} \\ &= \{S_i\mid i\in\{0, 1, \dots, n-1\}\}. \end{aligned} $$
éå $S = \{a_0, \dots, a_{n-1}\}$ ã«æ°ããè¦ç´ $a_n$ ãå ããéåãèãããã¨ãã¯ã$S\sqcup \{a_n\}$ ã®ããã«æ¸ãã¾ãã
$S$ ã®é¨åéå $T$ ãèãããã¨ããã$T\subseteq S$ ãèãããã§ã¯ãªãã$T\in 2^S$ ãèãããã®ãããªè¨æ³ã使ããã¨ãå¤ãã§ããéåããé¸ãã§ãããã¨ãæèãããã¨ãã¦ããããæ¸ãæ¹ããã¦ãã¾ãããæå³åãã¨ãã¦ã¯åãã§ãã
è©æ £ãã
ä¸è¬çã«ä½¿ãããããªæ§é ã®è©±ãããåã«ãåç´ãª DP ãèãã¦ã¿ã¾ããããæç´ã«èããç·´ç¿ã§ãã
Fibonacci æ°å
å $S=(S_0, S_1, \dots, S_{|S|-1})$ ã«å¯¾ãã¦ãç°¡æ½ãã®ãã $\sum S = \sum_{i=0}^{|S|-1} S_i$ ã¨å®ç¾©ãã¦ããã¾ãã
$\Sigma = \{1, 2\}$ ä¸ã®åãèãã$S\in\Sigma^{\star}$ ã§ãã£ã¦ $\sum S = k$ ãªããã®å ¨ä½ãããªãéåã $\Phi_k$ ã¨ããã¾ãã å°ããæ¹ããæããã¨æ¬¡ã®ããã«ãªãã¾ãã $$ \begin{aligned} \Phi_0 &= \{\varepsilon\}, \\ \Phi_1 &= \{(1)\}, \\ \Phi_2 &= \{(1, 1), (2)\}, \\ \Phi_3 &= \{(1, 1, 1), (1, 2), (2, 1)\}, \\ \Phi_4 &= \{(1, 1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (2, 2)\}. \end{aligned} $$
$n\gt 0$ ã®ã¨ããå é ã®è¦ç´ ã $1$ ã $2$ ãã§åé¡ãããã¨ãã§ãã $$ \Phi_n = \{(1)\concat\phi\mid\phi\in\Phi_{n-1}\}\sqcup\{(2)\concat\phi\mid\phi\in\Phi_{n-2}\} $$ ã¨æ¸ããã¨ãã§ãã¾ãã両辺ã®è¦ç´ æ°ãèããã° $|\Phi_n| = |\Phi_{n-1}| + |\Phi_{n-2}|$ ã¨ãªãã¾ããã
Fibonacci æ°åã $(1, 1, 2, 3, 5, \dots)$ ã¨ã ãèããããããã$3$ ã¨è¨ã£ã¦ããã®ã¯ $\{(1, 1, 1), (1, 2), (2, 1)\}$ ã«å¯¾å¿ãã¦ãããã ãã¨æããæ¹ãã¤ã¡ã¼ã¸ã®å¹ ãåºããã®ã§ã¯ãªãã§ããããããã¡ãããã¤ã¡ã¼ã¸ã®ä»æ¹ã¯ä»ã«ãããããããã¨ã¯æãã¾ãã
ãã¦ãé½ã«åãæ¸ãåºãã¦ã¿ãã¨ãã$\Phi_n$ ã«å«ã¾ããåã®é·ãã®åè¨ã¯ããã¤ï¼ãã®ãããªçåãèªç¶ã«æ¹§ãã¦ããã®ã§ã¯ãªãã§ãããããã¡ãã£ã¨ãã£ã¦ã¿ã¾ãããã $$ \begin{aligned} \sum_{\phi\in\Phi_n} |\phi| &= \sum_{\phi\in\Phi_{n-1}} |(1)\concat\phi| + \sum_{\phi\in\Phi_{n-2}} |(2)\concat\phi| \\ &= \sum_{\phi\in\Phi_{n-1}} (1 + |\phi|) + \sum_{\phi\in\Phi_{n-2}} (1 + |\phi|) \\ &= \sum_{\phi\in\Phi_{n-1}} 1 + \sum_{\phi\in\Phi_{n-1}} |\phi| + \sum_{\phi\in\Phi_{n-2}} 1 + \sum_{\phi\in\Phi_{n-2}} |\phi| \\ &= |\Phi_{n-1}| + \sum_{\phi\in\Phi_{n-1}} |\phi| + |\Phi_{n-2}| + \sum_{\phi\in\Phi_{n-2}} |\phi| \end{aligned} $$ 漸åå¼ãç«ã£ãã®ã§ $|\Phi_n|$ ã®æ¹ã¨åããã¦è¨ç®ãããã¨ãã§ãã¾ããã$(0, 1, 3, 7, 15, 30, 58, \dots)$ ã¨ç¶ãããã§ãã
å¥ã®è§£æ³ï¼ãã¾ãï¼
å½¢å¼çåªç´æ°ãèãã¾ãã $$ A(x, y) = \sum_{S\in\{1, 2\}^{\star}} x^{\sum S}y^{|S|} $$ ã¨ããã¨ã $$ \begin{aligned} A(x, y) &= x^{\sum \varepsilon}y^{|\varepsilon|} + \sum_{S\in\{1, 2\}^{\star}} x^{\sum (1)\concat S}y^{|(1)\concat S|} + \sum_{S\in\{1, 2\}^{\star}} x^{\sum (2)\concat S}y^{|(2)\concat S|} \\ &= x^0y^0 + \sum_{S\in\{1, 2\}^{\star}} x^{1 + \sum S}y^{1+|S|} + \sum_{S\in\{1, 2\}^{\star}} x^{2 + \sum S}y^{1+|S|} \\ &= 1 + xy\cdot A(x, y) + x^2 y\cdot A(x, y) \\ &= (1-xy-x^2 y)^{-1} \end{aligned} $$ ã§ããæ±ããããã®ã¯ $$ [x^k] \frac{\partial}{\partial y} A(x, 1) = [x^k] \sum_{S\in\{1, 2\}^{\star}} x^{\sum S} \cdot |S|\,1^{|S|-1} $$ ãªã®ã§ã $$ \frac{\partial}{\partial y} A(x, 1) = \frac{x+x^2}{(1-x-x^2)^2} $$ ãç¨ãã¦è¨ç®ããã°ããã§ãããã
å ¸åçãªæ§é
ä¸è¨ã§ã¯ã$n$ æªæºã®éè² æ´æ°å ¨ä½ãããªãéåãããèãã¾ãããã㧠$\Lambda_n = \{0, 1, \dots, n-1\}$ ã¨ããã¦ããã¾ãã ç¹ã« $\Lambda_0 = \{\} = \emptyset$ ã§ãã
$\Lambda_n$ ããä½ããããããããªæ§é ãèãã¦ããã¾ãã é£ããããªå ´åã§ãéé²ã«æ¼¸åå¼ãç«ã¦ããã¨ããã®ã§ã¯ãªããã¾ãã¯æ§é ã«ã¤ãã¦èããããDP ã®å®ç¾©ã決ããã¨ããããå§ãã¾ãããã
é¨åéå
$\Lambda_n$ ã«å¯¾ã㦠$2^{\Lambda_n}$ ãå¾ãæ¹æ³ãèãã¦ã¿ã¾ãããã
ç°¡åã«æãã¤ããã®ã¨ãã¦ã $$\DP[i] = 2^{\Lambda_i}$$ ã¨ãã¦ã次ã®æ¼¸åå¼ãç«ã¦ããããã§ãã $$ \begin{aligned} \DP[0] &= \{\emptyset\}, \\ \DP[i] &= \big\{S\sqcup\{\}\mid S\in\DP[i-1]\big\} \sqcup \big\{S\sqcup\{i-1\}\mid S\in\DP[i-1]\big\} \\ &= \DP[i-1] \sqcup \big\{S\sqcup\{i-1\}\mid S\in\DP[i-1]\big\} \end{aligned} $$ ãããã¾ãã
äºé ä¿æ°ã®æèã§ã$(1+x)(1+x)(1+x)\cdots$ ãå±éãããã¨ãã¦é ã« $( (1+x)\cdot 1 + (1+x)\cdot x)(1+x)\cdots$ ã¨ããã®ã¨ä¼¼ã¦ãããã§ãã
$\mathcal{S} = \DP[i]$ ã®åè¦ç´ ï¼ã§ããã¨ããã®éåï¼$S$ ã $\sum_{i\in S} w_i$ ãã¨ã«åé¡ãã¦ã$f(S) = \sum_{i\in S} v_i$ã$\bigodot = \max$ ã¨ãããã¨ã§ãããããµãã¯åé¡ã® DP ã«ãªãã¾ãã ãããã¯ã$f(S) = 1$ã$\bigodot = \sum$ ã¨ãããã¨ã§ãé¨åååé¡ã®æ°ãä¸ãã® DP ã«ãªãã¾ãã
ããã§ã¯ç°¡åã®ãã $\{0, 1, \dots, n-1\}$ ã«ã¤ãã¦èãã¾ããããç¶æ³ã«å¿ã㦠$\{\sigma_0, \sigma_1, \dots, \sigma_{n-1}\}$ ãèããæ¹ãããã±ã¼ã¹ãããã§ããããç¶æ³ã«å¿ãã¦é©åã«ãã£ã¦ãã ããã以ä¸ã®æ§é ã«ã¤ãã¦ãåãã§ãã
ã¾ããéåãèãã代ããã«ãé©å½ãªé ã§åºå®ããåãèãã¦ããã¨è¦ãªããã¨ãã§ãããã§ãã$S$ ã®ä»£ããã« $x\in S!$ ãªãããããã® $x$ ãèãã¦ããã¨ãããã¨ã§ãã
é å (exponential)
$\Lambda_n$ ã«å¯¾ã㦠$\Lambda_n!$ ãå¾ãæ¹æ³ãèãã¦ã¿ã¾ãããã
$T\subseteq S$ ã«å¯¾ã㦠$\DP[T] = T!$ ã¨ãããã¨ã§æ¬¡ã®ãããªæ¼¸åå¼ãç«ã¦ããããã§ãã $$ \begin{aligned} \DP[\emptyset] &= \{\varepsilon\}, \\ \DP[T] &= \bigsqcup_{x\in T} \big\{P \concat (x) \mid P\in \DP[T\smallsetminus\{x\}]\big\}. \end{aligned} $$ æ°æã¡ã¨ãã¦ã¯ããéå $T$ ã®é åå ¨ä½ãèããããã¾ãæ«å°¾ã«æ¥ãè¦ç´ $x\in T$ ãåºå®ãããåã®æ«å°¾ãåãé¤ãããã®ã¯ $T\smallsetminus\{x\}$ ã®é åã§ããã$T\smallsetminus\{x\}$ ã®é åå ¨ä½ã®éåã¨ããã®ã¯ããã¾èãããåé¡ã¨åæ§ã®å½¢å¼ã§ãããããèªæãªã±ã¼ã¹ã«ãªã£ã¦ãããã¨ããæãã§ãã å®éã«ã¯ãæ¼ããéè¤ããªããã¨ã示ãå¿ è¦ãããããã§ãã
ä»»æã® $T\subseteq S$ ã«ã¤ã㦠$\DP[T]$ ãèããã®ã§ã$\DP$ ã®æ·»åã®åæ°ã¨ãã¦ã¯ $2^{|S|}$ ã«ãªãã¾ãã$2^{|S|} = o(|S|!)$ ã§ãããã¨ã«ä¸å¿æ³¨æãã¦ããã¾ãããã
å®è£ ããä¸ã§ã¯ã$\DP[T]$ ã®é¨åã«ã¤ãã¦å°ãèæ ®ããå¿ è¦ãããã¾ãã ç´ æ´ã«ã¯é£æ³é åãç¨ãããã¨ã«ãªãããã§ãããè¦ç´ æ°ã $2^{|S|}$ ãã¤æ¯è¼ã«ææª $\Theta(|S|)$ æéããããã¨ããã $$\Theta(2^{|S|}\log(2^{|S|})\cdot |S|) = \Theta(|S|^2\, 2^{|S|})$$ ç¨åº¦ã®æéã使ã£ã¦ãã¾ãããã§ã*5ãä»ã 㯠$T!$ ã®åè¦ç´ ãé½ã«æã£ã¦ããã®ã§ãããã«ãããæéã»ç©ºéã®æ¹ãè¨å¤§ã§ã¯ããã®ã§ãããprojectã»fold ããå ´åã¯åè¦ç´ ã®ã³ã¹ããç¡è¦ã§ããããããã¡ããç¡è¦ã§ããªããªã£ã¦ãã¾ãã¾ãã
ããããå®è£ ã¨ãã¦ãéåãæ´æ°ã«ã¨ã³ã³ã¼ãããæ¹æ³ããããbit DP ãªã©ã¨å¼ã°ãã¦ãã¾ãã $$\angled{T} = \sum_{x\in T} 2^x$$ ã§å®ç¾©ãã¾ãããã¨ãã° $\angled{\emptyset} = 0$ã$\angled{\{0, 1, 3\}} = 2^0+2^1+2^3=11$ ã§ãã $\DP[\angled{T}]$ ã $O(1)$ æéã§ã¢ã¯ã»ã¹ã§ããããã«ãªãä¸ãé£æ³é åã®ã¨ãã®ããã« $T$ ãé½ã«æã¤å¿ è¦ããªããªãããã空éãå ¨ä½ã§ $O(2^{|S|})$ words ã«ãªãã¾ãã
ããã¯æ°ã«ãªãèªè åãã§ãã ã$|S|$ ã大ãããªã£ããå¤åé·æ´æ°ãå¿ è¦ã«ãªãã®ã§ã¯ï¼ãã¨ãã風ãªãã¨ãè¨ã人ãããããããã¾ãããããããã $2^{64}$ åã®ã¨ã³ããªãåããã®èªä½ãï¼æéçã«ï¼ç¾å®çã§ãªããããããããå¿é ã¯ä¸è¦ããã§ãããããã¯ãæéã¯é©å½ã«è§£æ±ºãããã¨ã«ã㦠$2^{1024}$ åã®ã¨ã³ããªãåãããã¨ã«ãªã£ãã¨ãã¾ãããããªã£ãã¨ããã¡ã¢ãªç©ºéä¸ã® $2^{1024}$ åã®ä½ç½®ã«ã©ã³ãã ã¢ã¯ã»ã¹ã§ããå¿ è¦ããããããword ä¸ã¤ãããã®ãããæ°ã $1024$ ç¨åº¦ã¯æä½éå¿ è¦ã«ãªãã¾ããããããããã§ããéåãµã¤ãºã大ãããªããªãå¤åé·æ´æ°ãå¿ è¦ã«ãªããã¨ããã®ã¯å¿ ããããããã§ãããã¨ã¯è¨ããªãã§ããã©ã³ãã ã¢ã¯ã»ã¹ã®è¦ä»¶ããªããã° word ã®ä¸éãä¿è¨¼ã§ããªãã®ã§å°ãã¾ãããèãã¦ããè¨ç®ã¢ãã«ã«ããããã§ããã詳ãã㯠transdichotomous model ã¨ã word RAM ã¨ãã§èª¿ã¹ãã¨ããããã§ãã
ãã¦ãããããä¾ã¨ãã¦ã¯å·¡åã»ã¼ã«ã¹ãã³åé¡ãªã©ãããã¾ãã é å $P$ ã®ã³ã¹ãã $f(P)$ã辺 $(u, v)$ ã®éã¿ã $w(u, v)$ ã¨ããã¨ã $$ f(P' \concat (u, v)) = f(P'\concat(u)) + w(u, v) $$ ã®ããã«è¨ç®ã§ããããã$P$ ã®æ«å°¾ã®è¦ç´ ã§åé¡ãããã¨ã§æ¼¸åå¼ãç«ã¦ããã¾ãã æ«å°¾ã®è¦ç´ ãæ示ãããããå ã®æ¼¸åå¼ã§ $P$ ã¨ãã¦ããé¨åã $P'\concat(u)$ ã®ããã«ãã¦ãã¾ããå®è£ ä¸ã¯ $\DP[\angled{T}][v]$ ã®ãããªã¤ã¡ã¼ã¸ã§ããããã $\varepsilon = P'\concat(u)$ ã¨ãªããã㪠$P'$ ã¯åå¨ããªãã®ã§ããã¼ã¹ã±ã¼ã¹ã«ã¯æ³¨æãå¿ è¦ã§ãã
çµåã
éå $S$ ã®é¨åéåã®ãã¡è¦ç´ æ°ã $k$ ã®ãã®ã $(S)_k$ ã¨æ¸ããã¨ã«ãã¾ãã$|(S)_k| = \binom{|S|}{k}$ ã«ç±æ¥ããè¨æ³ã§ãï¼ä»ã§ã¯ãã¾ãè¦ãªãæ°ããã¾ãï¼ããã¦ãæ°å¼ã§æ¸ãã°æ¬¡ã®éãã§ãã $$ (S)_k = \{x\in 2^S\mid |x| = k\}. $$
ãã¦ã$(\Lambda_n)_k$ ã«ã¤ãã¦æ¼¸åå¼ãèãã¾ãã $$ \begin{aligned} (\Lambda_n)_0 &= \{\emptyset\}, \\ (\Lambda_0)_k &= \emptyset, \\ % (\Lambda_n)_k &= \big( (\Lambda_{n-1})_{k-1}\sqcup\{k-1\}\big)\sqcup(\Lambda_{n-1})_k. (\Lambda_n)_k &= \big( \{T\sqcup\{n-1\}\mid T\in(\Lambda_{n-1})_{k-1}\}\big)\sqcup(\Lambda_{n-1})_k. \end{aligned} $$
ãããã Pascal ã®ä¸è§å½¢ã®æ¼¸åå¼ã«ç¸å½ãã¾ãã $n$ ãå°ããã¨ã㯠bit DP ã§ãã§ãã¾ããbit DP ã®åºç¤ç·´ç¿ã¨ãã¦ãã£ã¦ã¿ãã®ãããã§ãããã
ã¾ãã$\bigsqcup_{k=0}^n (\Lambda_n)_k = 2^{\Lambda_n}$ ã¨ãªãã®ã§ãé¨åéåã«é¢ããä½ããã® DP ã«ã使ããããããã¾ããã
é¨åå (1)
$\Sigma$ ä¸ã®é·ã $n$ ã®å $S\in\Sigma^n$ ãä¸ãããã¾ãã
$S$ ã®é¨ååå ¨ä½ã®éå $\gdef\subseq#1{\mathop{\operatorname{subseq}} #1}$ $$ % \subseq{S} = \bigcup \big\{S_I \mid I\in 2^{\Lambda_n}\big\} \subseq{S} = \bigcup_{I\in 2^{\Lambda_n}} \{S_I\} = \{S_I \mid I\in 2^{\Lambda_n}\} $$ ãèãã¾ãã$\subseq{\varepsilon} = \{\varepsilon\}$ ã§ãã
ãªãã$\bigsqcup$ ã§ã¯ãªã $\bigcup$ ã§ãããã¨ã«æ³¨æãã¾ãããã ãã¨ãã° $\Sigma=\{\mathtt{a}, \mathtt{b}\}$ ä¸ã®å $S = \mathtt{aab}$ ã«å¯¾ã㦠$S_{\{0, 2\}} = S_{\{1, 2\}} = \mathtt{ab}$ ã¨ãªãã¾ãã $$ \subseq{\mathtt{aab}} = \{\varepsilon, \mathtt{a}, \mathtt{aa}, \mathtt{aab}, \mathtt{ab}, \mathtt{b}\} $$ ã§ããï¼ããããçç±ãããé¨åéåå ¨ä½ã®éåã®ã¨ãã¨ã¯éã£ã¦ $2^S$ ã®ãããªè¨æ³ã¯é©ããªãããã§ããï¼
ããã§ã$S_I = S_J$ ã¨ãªããã㪠$I$, $J$ ã¯ãããããå®ããé åº $\preceq$ ã§æå°ã®ãã®ã«ã¤ãã¦ã®ã¿èãããã¨ã«ãã¦ã¿ã¾ãã ããªãã¡ãä»»æã® $J\ne I$ ã«å¯¾ã㦠$I\preceq J$ ã¨ãªããã㪠$I$ ãèããã¨ãããã¨ã§ããæ°æã¡ã¨ãã¦ã¯ãâè¾æ¸é æå°â çãªãã®ãéåã«å¯¾ãã¦èãããã§ãã $$ % I\preceq J \stackrel{\vartriangle}{\iff} I = J \vee \min\, (I\smallsetminus J) \lt \min\, (J\smallsetminus I) I\preceq J \stackrel{\vartriangle}{\iff} (I\smallsetminus J) = \emptyset \vee \min\, (I\smallsetminus J) \lt \min\, (J\smallsetminus I). $$ ãã ãã$\min\emptyset = \infty$ ã¨ãã¦ããã¾ãã
é¨ååãåæãã代ããã«ãâè¾æ¸é æå°â ã®æ·»åã®æ¹ãåæãããã¨ã«ãã¾ãã$\subseq{S}$ ãå®ç¾©ãç´ãã¦ãæ·»åãã¡ã®éåã§ããã¨ããã® $$ \subseq S \triangleq \{ I\in 2^{\Lambda_n}\mid \ForallL{J\in 2^{\Lambda_n}}{S_I=S_J\implies I\preceq J} \} $$ ã¨ãã¾ãã
ã¾ããããæ·»å $I\in 2^{\Lambda_n}$ ã $I\in\subseq{S}$ ã§ãããã¨ã®å¿ è¦ååæ¡ä»¶ãèãã¦ã¿ã¾ãããã $$ \begin{aligned} % I\notin\subseq{S} \iff \ExistsL{J\in 2^{\Lambda_n}}{S_I=S_J \wedge J \prec I} I\in\subseq{S} \iff \ForallL{J\in 2^{\Lambda_n}}{S_I=S_J\implies I\preceq J} \end{aligned} $$ ã§ãã $\emptyset\in\subseq{S}$ ã¯èªæãªã®ã§ã以ä¸ã§ã¯ $I = \{i_0, i_1, \dots, i_{k-1}\}$ ã¨ãã¾ãã ãã $0\le j\lt i_0$ ãåå¨ã㦠$S_{i_0} = S_j$ ã®ã¨ãã$J = \{j, i_1, \dots, i_{k-1}\}$ ã«å¯¾ã㦠$S_I = S_J \wedge I\succ J$ ã¨ãªãã¾ãã ãã£ã¦ã$i_0 = \min{\{i\in\Lambda_n\mid S_i = S_{i_0}\}}$ ãå¿ è¦ã§ãã åæ§ã«ãã¦ã$i_j = \min{\{i\in\Lambda_n\mid i\gt i_{j-1}\wedge S_i = S_{i_j}\}}$ ($0\lt j\lt k$) ãå¿ è¦ã§ãã éã«ãããã§ååã§ãããã¨ããããã¾ãã
$I = \{i_0, i_1, \dots, i_{k-1}\}$ ã¨ãã$I \in\subseq{S}$ ã¨ãã¾ãããã®ã¨ãã$i_k\gt i_{k-1}$ ãªã $i_k$ ã«å¯¾ã㦠$I\cup\{i_k\}\in\subseq{S}$ ã¨ãªãæ¡ä»¶ãèãã¾ãã åè¿°ã®è°è«ã¨åæ§ã«ãã¦ã $$\ForallL{i\in\Lambda_n}{i_{k-1}\lt i\lt i_k \implies S_i\ne S_{i_k}}$$ ã¨åå¤ã«ãªãã¾ãã
ãã£ã¦ããããå ã«ã㦠DP ãèãã¾ãã $$ \begin{aligned} \DP[0] &= \{\emptyset\}, \\ \DP[i] &= \{I\in\subseq{S}\mid I\ne\emptyset\wedge\max I=i-1\} \end{aligned} $$ ãèãã¾ãã$\subseq{S} = \bigsqcup_{i=0}^n\DP[i]$ ã§ãã
漸åå¼ã¯ã次ã®ããã«ãªãã¾ãã $\gdef\last{\operatorname{last}}$ $$ \DP[i] = \bigsqcup_{j=\last(i)}^{i-1} \big\{ I \sqcup \{i-1\} \mid I\in\DP[j] \big\} $$ ãã㧠$\last(i)$ ã¯ä»¥ä¸ã§å®ç¾©ãããé¢æ°ã§ãã$S_{i-1}$ ã¨åãæåãåã«ç¾ããä½ç½®ã¾ã§ $\sqcup$ ããããã¨ãããã¨ã§ãã $$ \last(i) = \max\big(\{j\mid {1\le j \lt i} \wedge {S_{j-1}=S_{i-1}}\}\sqcup\{0\}\big) $$ ãã㯠$i$ ã®æé ã« $\DP[i]$ ãæ´æ°ãã¦ããéç¨ã§ãé£æ³é åãªã©ãç¨ã㦠$S_{i-1}\mapsto i$ ã管çããã° $O(\log(|\Sigma|))$ æéãªã©ã§å¯è½ã§ãã
note: $i'\lt \last(i)$ ãªã $i'$ ã«å¯¾ã㦠$I\in\DP[i']$ ãèããã¨ãã $$ S_{I\sqcup\{i-1\}} = S_{I\sqcup\{\last(i)\}}, \quad I\sqcup\{i-1\}\succ I\sqcup\{\last(i)\} $$ ãªã®ã§ã$I\sqcup\{i-1\}\notin\subseq S$ã§ãã
å®è£ ã®éã$i-1$ ããéé ã« $S_{j-1}=S_{i-1}$ ã«ãªãã¾ã§ã«ã¼ããããã¨ãã¦ããå $j$ ã¯åæåã«å¯¾ãã¦ä¸åº¦ãã¤ããèµ°æ»ãããªããããå ¨ä½ã§ã¯ $O(|S|\cdot|\Sigma|)$ åç¨åº¦ã®ã«ã¼ãã¨ãªãã¾ã*6ã$|\Sigma| = 26 = O(1)$ ãªã©ã®ããããåé¡è¨å®ã§ããã°ã$\Theta(|S|^2)$ æéã«ã¯ãªããªãã®ã§å®å¿ã§ãããã§ã*7ã $|S|\ll|\Sigma|$ ã®ãããªåé¡è¨å®ã ã¨ããã¯ããã¾ããããimos æ³ã on-the-fly ã§è¡ã£ããã»ã°æ¨ãç¨ããããããã¨ã§é«éåãããã¨ãå¯è½ããã§ãã
ã¾ããããã§ã¯è¾æ¸é æå°ãèãã¾ããããæ«å°¾ããè¦ã¦ãã£ãããããã¨ã§ãè¾æ¸é æ大ã®ãã®ãæ±ãããã¨ãå¯è½ããã§ãã
é¨åå (2)
é¨åå (1) ã¨ã¯å¥ã®æ¹éã§èãã¾ãã
$\gdef\suffix#1#2{#1[#2\ldots]}$ $0\le i\le n$ ã«å¯¾ã㦠$\suffix{S}{i} = (S_i, \dots, S_{n-1})$ ã¨ãã¾ããç¹ã« $\suffix{S}{0} = S$, $\suffix{S}{n} = \varepsilon$ ã§ãã
$\DP[i] = \subseq \suffix{S}{i}$ ($0\le i\lt n$) ã¨ãã¦ã¿ã¾ãããã漸åå¼ã¯æ¬¡ã®ããã«ãªãã¾ãã $\gdef\next{\operatorname{next}}$ $$ \begin{aligned} \DP[\infty] &= \emptyset, \\ \DP[i] &= \{\{i\}\}\sqcup\bigsqcup_{\sigma\in\Sigma} {\{\{i\}\sqcup I\mid I\in \DP[\next_{\sigma}(i+1)]\}}. \end{aligned} $$ ããã§ã$\next_{\sigma}(i) = \min{\{j\mid S_j = \sigma\wedge j\ge i\}}$ ã§ãããã ã $\min\emptyset=\infty$ ã¨ãã¦ããã¾ãã
$i'\gt\next_{\sigma}(i+1)$ ã㤠$S_{i'} = S_i$ ãªã $i'$ ã«å¯¾ã㦠$I\in\DP[i']$ ãèããã¨ãå ã»ã©åæ§ã®è«æ³ã§ $\{i\}\sqcup I\notin\subseq \suffix{S}{i}$ ã¨ãªããã¨ããããã¾ããéã«ã$I\in\DP[\next_{\sigma}(i+1)]$ ã«å¯¾ã㦠$\{i\}\sqcup I\in\subseq\suffix{S}{i}$ ã¨ãªããã¨ããããã¾ãã
æ±ãããã£ããã®ã¯ $\subseq S = {\{\emptyset\}}\sqcup{\bigsqcup_{\sigma\in\Sigma} \DP[\next_{\sigma}(0)]}$ ã§ãã
é¨ååãåããé ã«æ±ºãããæèã§ä¾¿å©ããã§ãããã¨ãã°ã$\Sigma$ ã«é¢ããè¾æ¸é ã«é¢ããåé¡ã¨ç¸æ§ãããããã§ãã
éè² æ´æ° (1)
éè² æ´æ° $A$ ãä¸ããããã®ã§ã$A$ 以ä¸ã®éè² æ´æ°å ¨ä½ã®éå $\{0, 1, \dots, A-1, A\}$ ãå¾ãæ¹æ³ãèãã¾ãã ã«ã¼ãããã°ããã¨ããã®ã¯ãããªãã§ãããä»ã¾ã§åæ§ã«æ¼¸åå¼ãç«ã¦ã¾ããããéåãå¾ããã¨èªä½ã§ã¯ãªã projection ã folding ãããããå½¢å¼ã§èããããããã«ãªããã¨ãç®çãªã®ã§ã
$A$ ã¨ã®å¤§å°é¢ä¿ã管çãããé¢ä¿ã§ãä¸ã®æ¡ãã決ãã¦ããã®ãèªç¶ããã§ãã $A$ 㯠$n$ æ¡ã§ããã¨ãã¦æ¬¡ã®ãã㪠DP ãèãã¦ã¿ã¾ã*8ã $$ \DP[i] = \{x\in\N\mid x\cdot 10^{n-i}\le A\}. \qquad (???) $$ ããããããã¯å³ããã§ããä¾ã¨ã㦠$A = 271$ ã§èãã¦ã¿ã¾ãããã$n=3$ ã§ãã $$ \begin{aligned} \DP[0] &= \{x\in\N\mid x\cdot 10^{3-0}\le 271\} = \{0\}, \\ \DP[1] &= \{x\in\N\mid x\cdot 10^{3-1}\le 271\} = \{0, 1, 2\}, \\ \DP[2] &= \{x\in\N\mid x\cdot 10^{3-2}\le 271\} \\ &= \{0, 1, 2, 3, \dots, 9, 10, 11, \dots, 19, 20, 21, \dots, 26, 27\}, \end{aligned} $$ $\DP[2]$ ã«é¢ãã¦ã$10^1$ ã®ä½ã $0$, $1$ ã®ãã®ã¯ $10^0$ ã®ä½ã $9$ ã¾ã§ããã¾ããã$10^1$ ã®ä½ã $2$ ã®ãã®ã¯ $7$ ã¾ã§ããããã¾ããã ããã¯ã漸åå¼ãç«ã¦ãä¸ã§ãã¾ãããããããã¾ãããä¸ä½æ¡ãã©ã決ãã¦ã $A$ ããå°ãããã¨ã確å®ãã¦ãããã©ããã§åé¡ãããã§ãã
ããã§ã$\DP_{\lt}$ 㨠$\DP_{=}$ ã«åãã¦èãã¾ãã $$ \begin{aligned} \DP_{\lt}[i] &= \{x\in\N\mid x\cdot 10^{n-i}\lt A\}, \\ \DP_{=}[i] &= \{x\in\N\mid x\cdot 10^{n-i}=A\}. \end{aligned} $$
$A$ ã®ä¸ãã $i$ æ¡ç® (0-indexed) ãå¾ãé¢æ°ãå®ç¾©ãã¦ããã¾ãã $$d(A, i) \triangleq \floor{A/10^{n-i-1}}\bmod 10.$$
漸åå¼ã¯æ¬¡ã®ããã«ãªãã¾ãã $$ \begin{aligned} \DP_{\lt}[0] &= \{\}, \\ \DP_{=}[0] &= \{0\}, \\ \DP_{\lt}[i] &= \{10x+y \mid x \in\DP_{\lt}[i-1], 0\le y\le 9\} \sqcup {} \\ &\phantom{{}={}}\quad \{10x+y\mid x\in\DP_{=}[i-1], 0\le y\lt d(A, i-1)\}, \\ \DP_{=}[i] &= \{10x+y \mid x\in\DP_{=}[i-1], y = d(A, i-1)\}. \end{aligned} $$ æ±ããããã®ã¯ $\DP_{\lt}[n]\sqcup\DP_{=}[n]$ ã§ãã$\DP_{=}[n] = \{A\}$ ãªã®ã§ã$A$ æªæºã®éè² æ´æ°å ¨ä½ã®éåãèãããã¨ã㯠$\DP_{\lt}[n]$ ã使ãã°ããã§ãï¼ãããã $A-1$ ãè¨ç®ãã¦ä¸è¨ã«å¸°çãããªãã¦ããã¨ãããã¨ï¼ã
ããããæ¡ DP ã§ãã $10$ é²æ³ã§ã¯ãªãä¸è¬ã« $b$ é²æ³ã®å ´åã¯ããã«å¿ãã¦å¤ãã¾ãããã ãªã«ãããã®ãã¾ãã§åé¡ãããå ´åãããªã«ãããã®å¤ã®ç·åã管çãããå ´åã«ã便å©ã§ããé©åã«æ¼¸åå¼ãç«ã¦ã¾ãããã
ãªãã$\sqcup$ ã®å¼æ°ã®é åºã«æ³¨æãããã¨ã§ãéè² æ´æ°ãæé ã«åæãããã¨ãå¯è½ãªãã¨ãããfolding ãå¯æã§ãªãå ´åã«ã対å¿ãããã¨ãå¯è½ããã«è¦ãã¾ãããã¾ãå½¹ç«ã¤ç¶æ³ã¯æãã¤ãã¾ããã
ããã¯å°ãçºå±çãªå 容ããããã¾ããã ã¨ããã§ããã® DP ã§ã¯ãªã¼ãããã³ãæã«èãã¦ãã¾ãã èªãã æ°åï¼ä¸è¨ã® $0\le y\le 9$ï¼ã«å¿ãã¦ã$(=)$ ã®ç¶æ ãã㯠$(=)$ ã¾ã㯠$(\lt)$ ã®ç¶æ ã«é·ç§»ãããã¨ãã§ãã$(\lt)$ ã®ç¶æ ãã㯠$(\lt)$ ã«ã®ã¿é·ç§»ãããã¨ãã§ãã¾ãã ããä¸è¬ã«ããããããæ¡ä»¶ãæºããéåããã¯ãã®éåã«é·ç§»ã§ãããã¨ãã£ããã¨ãèãã¦æ¼¸åå¼ãç«ã¦ãå ´åããªã¼ãããã³ãèãã¦ãããã¨ã«ç¸å½ãããã§ãã é·ç§»ã®æ¹åã¯ä¸æ¹éè¡ã¨ã¯éãã¾ããããã¨ãã°å¤ã $m$ ã§å²ã£ããã¾ããªã©ã®åé¡ããªã¼ãããã³ã¨è¦ãªãã¾ããä¾ã¨ã㦠$2$ é²æ³ã¨ãã¦è§£éã㦠$5$ ã§å²ã£ããã¾ãã§åé¡ããã¨ãç¶æ ã $5$ ã¤ã®ãªã¼ãããã³ä¸ã®é·ç§»ã«ãªãã¾ãã
$x\bmod 5$ | $(2x+0)\bmod 5$ | $(2x+1)\bmod 5$ |
---|---|---|
$0$ | $0$ | $1$ |
$1$ | $2$ | $3$ |
$2$ | $4$ | $0$ |
$3$ | $1$ | $2$ |
$4$ | $3$ | $4$ |
å¥ã®è©±é¡ã¨ãã¦ãç·å $\sum_{x\in \DP_{\lt}[i] } x$ ãèãã¦ã¿ã¾ãããã $$ \begin{aligned} \sum_{x\in\DP_{\lt}[i]} x &= \sum_{x\in\DP_{\lt}[i-1], 0\le y\le 9} (10x+y) + \sum_{x\in\DP_{=}[i-1], 0\le y\lt d(A, i-1)} (10x+y) \\ &= 10 \sum_{x\in\DP_{\lt}[i-1]} x \sum_{0\le y\le 9} 1 + \sum_{x\in\DP_{\lt}[i-1]} \sum_{0\le y\le 9} y + {} \\ &\phantom{{}={}} \quad 10 \sum_{x\in\DP_{=}[i-1]} x \sum_{0\le y\lt d(A, i-1)} 1 + \sum_{x\in\DP_{=}[i-1]} \sum_{0\le y\lt d(A, i-1)} y \\ &= 10^2 \sum_{x\in\DP_{\lt}[i-1]} x + |{\DP_{\lt}[i-1]}| \sum_{0\le y\le 9} y + 10d(A, i-1)\sum_{\DP_{=}[i-1]} x + |{\DP_{=}[i-1]}| \sum_{0\le y\lt d(A, i-1)} y \end{aligned} $$
ãã£ã¦ã $$ \begin{aligned} S_{\lt}^0(i) &= \sum_{x\in\DP_{\lt}[i]} x^0 = |{\DP_{\lt}[i]}|, \\ S_{\lt}^1(i) &= \sum_{x\in\DP_{\lt}[i]} x^1 = \sum_{x\in\DP_{\lt}[i]} x, \\ S_{=}^0(i) &= \sum_{x\in\DP_{=}[i]} x^0 = |{\DP_{=}[i]}|, \\ S_{=}^1(i) &= \sum_{x\in\DP_{=}[i]} x^1 = \sum_{x\in\DP_{=}[i]} x \end{aligned} $$ ã¨ããã¨ã $$ S_{\lt}^1(i) = 10^2\, S_{\lt}^1(i-1) + S_{\lt}^0(i-1)\sum_{y=0}^9 y + 10d(A, i-1)\cdot S_{=}^1(i-1) + S_{=}^0(i-1)\sum_{y=0}^{d(A, i-1)-1} y $$ ã®ãããªæ¼¸åå¼ãç«ã¡ã¾ãã$S_{=}^1(i)$ ã«ã¤ãã¦ãåæ§ã«ã§ãã¾ãã $S_{\lt}^0(i)$ ã«ã¤ãã¦ã¯åè¿°ã® DP ããèªç¶ã«è¨ç®ã§ããã®ã§ãç·åã«ã¤ãã¦ãæ±ãããã¨ãã§ãã¾ããã
$S_{\lt}^2(i) = \sum_{x\in\DP_{\lt}[i]} x^2$ ãªã©ã«ã¤ãã¦ãï¼èªè åã ãå¼å¤å½¢ããã¦ï¼èãã¦ã¿ãã¨ãåæ°ã»ç·åã§ã¯ãªã $0$ ä¹åã»$1$ ä¹åã»$2$ ä¹åã®ããã«èããæ¹ãèªç¶ã ã¨æããã§ãããã
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=3110judge.u-aizu.ac.jp
éè² æ´æ° (2)
éè² æ´æ° (1) ã§ã¯ä¸ã®æ¡ããè¦ã¦ããã¾ããããä¸ã®æ¡ããè¦ã¦ãããã¨ãèãã¦ã¿ã¾ãããã
ä¸ä½æ¡ã決ã¾ã£ã¦ã $A$ ã¨ã®å¤§å°é¢ä¿ã¯å®ã¾ããªãã®ã§å°ã大å¤ããã§ãã
ä»åã¯ã$\DP_{\lt}$ 㨠$\DP_{=}$ 㨠$\DP_{\gt}$ ã«åãã¦èãã¾ãã $$ \begin{aligned} \DP_{\lt}[i] &= \{x\in\N\mid x\lt A\bmod 10^i\}, \\ \DP_{=}[i] &= \{x\in\N\mid x=A\bmod 10^i\}, \\ \DP_{\gt}[i] &= \{x\in\N\mid x\gt A\bmod 10^i\}. \end{aligned} $$
$A$ ã®ä¸ãã $i$ æ¡ç® (0-indexed) ãå¾ãé¢æ°ãå®ç¾©ãã¦ããã¾ãã $$d(A, i) \triangleq \floor{A/10^{i}}\bmod 10.$$
漸åå¼ã¯æ¬¡ã®éãã§ãã便å®çã«ã$\DP_{\lesseqgtr}[i] = \DP_{\lt}[i]\sqcup\DP_{=}[i]\sqcup\DP_{\gt}[i]$ ã¨ãã¾ãã $$ \begin{aligned} \DP_{\lt}[0] &= \DP_{\gt}[0] = \{\}, \\ \DP_{=}[0] &= \{0\}, \\ \DP_{\lt}[i] &= \{10^{i-1}x+y\mid 0\le x\lt d(A, i-1), y\in\DP_{\lesseqgtr}[i-1]\} \sqcup {} \\ &\phantom{{}={}} \quad \{10^{i-1}\cdot d(A, i-1)+y\mid y\in\DP_{\lt}[i-1]\}, \\ \DP_{=}[i] &= \{10^{i-1}\cdot d(A, i-1)+y\mid y\in\DP_{=}[i-1]\}, \\ \DP_{\gt}[i] &= \{10^{i-1}\cdot d(A, i-1)+y\mid y\in\DP_{\gt}[i-1]\} \sqcup {} \\ &\phantom{{}={}} \quad \{10^{i-1}x+y\mid d(A, i-1)\lt x\le 9, y\in\DP_{\lesseqgtr}[i-1]\}. \end{aligned} $$
æ±ããããã®ã¯ $\DP_{\lt}[n]\sqcup\DP_{=}[n]$ ã§ããæé ã®è©±ãæªæºã®è©±ãç·åã®è©±ãªã©ã¯éè² æ´æ° (1) ã®ç¯ã¨åãã§ãã ç¹°ãä¸ããã leading zero ãªã©ã®é¢ä¿ã§ä¸ã®æ¡ããè¦ã¦ããããã¨ãã«ã¯ãã¡ãã便å©ããããã¾ããã
Excel é²æ³
Excel ã®åçªå·ã¯ A, B, ..., Z, AA, AB, ..., AZ, BA, ..., ZZ, AAA, ..., AAAA, ... ã®ããã«ç¶ãã¦ããã¾ãã ãä¸ããããåçªå·ããå·¦ã®åçªå·ã¯ï¼ãã¨ããã®ãåæ§ã® DP ã§åæã§ãã¾ãã
$\Sigma = \{\text{\texttt{A}}, \text{\texttt{B}}, \dots, \text{\texttt{Z}}\}$ ã¨ãã$S, T\in\Sigma^{\star}$ ã«å¯¾ãã¦é åº $\preceq$ ã Excel ã®åçªå·ã¨ãã¦ã®åå¾ã§å®ãã¾ãã 次ã®ããã«è¡¨ããã¨ãã§ãã¾ãããã ãã$\le$ ã¯è¾æ¸é ã¨ãã¾ãã $$ S\preceq T \iff |S| \lt |T| \vee (|S| = |T| \wedge S\le T). $$
ä¸ããããåçªå· $A$ ã«å¯¾ã㦠DP ã以ä¸ã§å®ç¾©ãã¾ãã $$ \begin{aligned} \DP_{\lt}[i] &= \{S\in\Sigma^{|A|-i}\mid S\prec\suffix{A}{i}\}, \\ \DP_{=}[i] &= \{S\in\Sigma^{|A|-i}\mid S=\suffix{A}{i}\}, \\ \DP_{\gt}[i] &= \{S\in\Sigma^{|A|-i}\mid S\succ\suffix{A}{i}\}. \end{aligned} $$ é·ããåºå®ãã¦ããã®ã§ $\prec$ 㯠$\lt$ ã¨åãã§ããã
$\DP_{\lesseqgtr}[i] = \DP_{\lt}[i]\sqcup\DP_{=}[i]\sqcup\DP_{\gt}[i]$ ã¨ãã¾ãã æ±ããããã®ã¯ $$ \left(\bigsqcup_{1\le i\lt |A|}\DP_{\lesseqgtr}[i]\right)\sqcup \DP_{\lt}[|A|]\sqcup\DP_{=}[|A|] $$ ã§ãã
便å®ä¸ $A[|A|-i] = a_{-i}$ ã¨ãã¦ã漸åå¼ã¯æ¬¡ã®ããã«æ¸ãã¾ãã $$ \begin{aligned} \DP_{\lt}[0] &= \DP_{\gt}[0] = \{\}, \\ \DP_{=}[0] &= \{\varepsilon\}, \\ \DP_{\lt}[i] &= \{(x)\concat S\mid \text{\texttt{A}}\le x\lt a_{-i}, S\in\DP_{\lesseqgtr}[i-1]\} \sqcup {} \\ &\phantom{{}={}} \quad \{(a_{-i})\concat S\mid S\in\DP_{\lt}[i-1]\}, \\ \DP_{=}[i] &= \{(a_{-i})\concat S\mid S\in\DP_{=}[i-1]\}, \\ \DP_{\gt}[i] &= \{(a_{-i})\concat S\mid S\in\DP_{\gt}[i-1]\} \sqcup {} \\ &\phantom{{}={}} \quad \{(a_{-i})\concat S\mid a_{-i}\lt x\le \text{\texttt{Z}}, S\in\DP_{\lesseqgtr}[i-1]\}. \end{aligned} $$
Excel é²æ³ã§åçªå·ãä¸ãããã¦ãããããå·¦ã«æ¡ä»¶ãæºããåãããã¤ããã¾ãããã¨ããåé¡ã¯ãã¾ãåºãªãããã§ããï¼ããªããï¼ãã«ã¶ããã¨çµã¿åããããã¨ã§éå¤æãªã©ãã§ãã¾ããã
â æåº #45508879
åå² (exponential)
$\Lambda_n$ ã®åå² (partition) ãèãã¾ãã éå $S$ ã®é¨åéåæ $P\in 2^{2^S}$ ã $S$ ã®åå²ã§ããã¨ã¯ã次㮠3 ã¤ã®æ¡ä»¶ãã¹ã¦ãæãç«ã¤ãã¨ãè¨ãã¾ãã
- $\emptyset\notin P,$
- $\bigcup P = S,$
- $\ForallL{A\in P}{\ForallL{B\in P}{A\ne B\implies A\cap B=\emptyset}}.$
$\gdef\partition#1{\mathop{\operatorname{ptn}}{#1}}$ $S$ ã®åå²å ¨ä½ãããªãéåã $\partition{S}$ ã¨æ¸ããã¨ã«ãã¾ãã
å°ããã±ã¼ã¹ã®ä¾ã示ãã¾ãï¼å·¦ååã $\Lambda_0$ ãã $\Lambda_3$ ã®åå²ã§ãå³ååã $\Lambda_4$ ã®åå²ã§ãï¼ã $$ \begin{aligned} &\partition{\emptyset} = \{ && {} && \partition{\{0, 1, 2, 3\}} = \{ \\ & \qquad \{\}, && {} && \qquad \{\{0, 1, 2, 3\}\}, \\ & \}, && {} && \qquad \{\{0, 2, 3\}, \{1\}\}, \\ &\partition{\{0\}} = \{ && {} && \qquad \{\{0, 1, 3\}, \{2\}\}, \\ & \qquad \{\{0\}\}, && {} && \qquad \{\{0, 3\}, \{1, 2\}\}, \\ & \}, && {} && \qquad \{\{0, 3\}, \{1\}, \{2\}\}, \\ &\partition{\{0, 1\}} = \{ && {} && \qquad \{\{0, 1, 2\}, \{3\}\}, \\ & \qquad \{\{0, 1\}\}, && {} && \qquad \{\{0, 2\}, \{1, 3\}\}, \\ & \qquad \{\{0\}, \{1\}\}, && {} && \qquad \{\{0, 2\}, \{1\}, \{3\}\}, \\ & \}, && {} && \qquad \{\{0, 1\}, \{2, 3\}\}, \\ &\partition{\{0, 1, 2\}} = \{ && {} && \qquad \{\{0, 1\}, \{2\}, \{3\}\}, \\ & \qquad \{\{0, 1, 2\}\}, && {} && \qquad \{\{0\}, \{1, 2, 3\}\}, \\ & \qquad \{\{0, 2\}, \{1\}\}, && {} && \qquad \{\{0\}, \{1, 3\}, \{2\}\}, \\ & \qquad \{\{0, 1\}, \{2\}\}, && {} && \qquad \{\{0\}, \{1, 2\}, \{3\}\}, \\ & \qquad \{\{0\}, \{1, 2\}\}, && {} && \qquad \{\{0\}, \{1\}, \{2, 3\}\}, \\ & \qquad \{\{0\}, \{1\}, \{2\}\}, && {} && \qquad \{\{0\}, \{1\}, \{2\}, \{3\}\}, \\ & \}, && {} && \}. \end{aligned} $$ $\partition{\emptyset} = \{\emptyset\}$ ã«æ³¨æãã¾ãããã$\emptyset\in\emptyset$ ã§ã¯ãªãã®ã§ã$\emptyset\notin P$ ã«åãã¦ãã¾ããã åå²ã§ãªãä¾ã¨ãã¦ã¯ã$\{\{0\}, \{0, 1\}\}\notin\partition{\{0, 1\}}$ ã $\{\{0, 1\}, \{2\}, \{\}\} \notin \partition{\{0, 1, 2\}}$ ãªã©ãããã¾ãã
$\emptyset\subseteq T\subseteq S=\Lambda_n$ ã«å¯¾ã㦠$\DP[T] = \partition{T}$ ã¨ããã¨ã漸åå¼ã¯æ¬¡ã®ããã«ãªãã¾ãã $$ \begin{aligned} \DP[\emptyset] &= \{\emptyset\}, \\ \DP[T] &= \bigsqcup_{\emptyset\subseteq T'\subseteq(T\smallsetminus\{\min T\})} \{ P\sqcup (T\smallsetminus T') \mid P\in\DP[T'] \}. \end{aligned} $$
å®è£ ã«é¢ãã¦ã$\emptyset\subseteq T'\subseteq(T\smallsetminus\{\min T\})$ ã®åæã®éã«ãã$T'\subseteq S$ ãåæã㦠$T'\subseteq(T\smallsetminus\{\min T\})$ ã®ãã®ã®ã¿ä½¿ããã®ã§ã¯ãªãç´æ¥ $T\smallsetminus\{\min T\}$ ã®é¨åéåãåæãããã¨ã§ã$\Theta(4^{|S|})$ åã§ã¯ãªã $\Theta(3^{|S|})$ åã®ã«ã¼ãã«æ¸ãããã¨ãã§ãã¾ãã
æ¦ç¥
ããã§ã¯ $T\smallsetminus \{\min T\}$ ã§ã¯ãªã $S$ ã¨ãã¦ãã¾ããå®æ°åã®éããããªãã®ã§åé¡ãªãã§ãããï¼æ°ã«ãªãèªè ã¯èªåã§æãåããã¦ã¿ããï¼ï¼ã $$ \begin{aligned} \sum_{\emptyset\subseteq T\subseteq S} 2^{|T|} &= \sum_{i=0}^{|S|} \sum_{|T|=i, T\subseteq S} 2^{|T|} \\ &= \sum_{i=0}^{|S|} 2^i \cdot |\{T\in 2^S\mid |T| = i\}| \\ &= \sum_{i=0}^{|S|} 2^i \cdot \textstyle\binom{|S|}{i} \\ &= \sum_{i=0}^{|S|} \textstyle\binom{|S|}{i} \cdot 2^i \cdot 1^{|S|-i} \\ &= (2+1)^{|S|} = 3^{|S|}. \qquad\qed \end{aligned} $$ å®è£ ä¾ã«é¢ãã詳細ãªèª¬æã¯ããã§ã¯ãã¾ããã
ã¨ããã§ã$B_n = |{\partition{\{0, 1, \dots, n-1\}}}|$ ã§å®ç¾©ãããæ°å㯠Bell æ°ã¨å¼ã°ãã¦ãã¾ãã ä¸è¨ã® DP ã®æ¼¸åå¼ã«ãããå $T'$ ã®ãµã¤ãºã¨é¸ã³æ¹ã®éãæ°ãèãããã¨ã§ãBell æ°ã«é¢ãã漸åå¼ãå°ããã¾ãã $$ \begin{aligned} B_0 &= 1, \\ B_n &= \sum_{i=0}^{n-1} \textstyle\binom{n}{i} B_i. \end{aligned} $$
åå²ã«é¢ããä¾é¡ã¨ãã¦ã¯æ¬¡ã®ãããªãã®ãããã¾ãããã®åé¡ã¯æ°ãä¸ãã§ã¯ãªãæé©åãªã®ã§ãå®è£ ä¸ $\sqcup$ ãæ°ã«ããã®ãé¢åã§ããã°ã$\cup$ ã«ãªããããªå®è£ ããã¦ã大ä¸å¤«ã§ãããã
æ£è¦æ¬å¼§å
ãã®ç¯ã§ã¯ãç°¡æ½ãã®ãã $S\concat T$ ã $(x)\concat S\concat (y)$ ãåã« $ST$ã$xSy$ ãªã©ã¨æ¸ããã¨ã«ãã¾ãã
$\gdef\openp{\text{\texttt{(}}}$ $\gdef\closep{\text{\texttt{)}}}$ ãµã¤ãº $n$ ã®æ£è¦æ¬å¼§åã¨ã¯ã$n$ åã® $\openp$ 㨠$n$ åã® $\closep$ ãããªãåã§ãã£ã¦ã次ã®ããããã®æ¡ä»¶ãæºãããã®ãè¨ãã¾ãã
- 空åã§ãã
- ãã $0\lt k\lt n$ ã«å¯¾ãããµã¤ãº $k$ ã®æ£è¦æ¬å¼§å $S$ ã¨ãµã¤ãº $n-k$ ã®æ£è¦æ¬å¼§å $T$ ãåå¨ã㦠$ST$ ã¨æ¸ãã
- ãã $0\le k\lt n$ ã«å¯¾ãããµã¤ãº $k$ ã®æ£è¦æ¬å¼§å $S$ ãåå¨ã㦠$\openp S \closep$ ã¨æ¸ãã
ããããããã©ã³ã¹ã®åããæ¬å¼§åãã対å¿ã®åããæ¬å¼§åããbalanced parenthesesããregular parenthesesããwell-formed parenthesesãã¨ãå¼ã°ãããã®ã§ããçãã®ãã訳èªãããã°ç¥ãããã§ãã
ãµã¤ãº $n$ ã®æ£è¦æ¬å¼§åå ¨ä½ãããªãéåã $P_n$ ã¨ããã¨ã次ã®å¼ãæãç«ã¡ã¾ãã $$ \begin{aligned} P_0 &= \{\varepsilon\}, \\ P_n &= \bigsqcup_{i=0}^{n-1} {\{ \openp S \closep T \mid (S, T)\in P_i\times P_{n-i-1} \}}. \end{aligned} $$ 空ã§ãªãã¨ãå é ã®æåã¯å¿ ã $\openp$ ã«ãªããã¨ã«æ³¨æãã¾ããããã«å¯¾å¿ãã $\closep$ ã®ä½ç½®ãå $i$ ãã¨ã«ç°ãªããã¨ããã$\sqcup$ ã使ã£ã¦åé¡ããã¾ããã
å°ããã±ã¼ã¹ã®ä¾ã¯æ¬¡ã®éãã§ãã $$ \begin{aligned} P_0 &= \{\varepsilon\}, \\ P_1 &= \{\openp\closep\}, \\ P_2 &= \{\openp\closep\openp\closep, \openp\openp\closep\closep\}, \\ P_3 &= \{\openp\closep\openp\closep\openp\closep, \openp\closep\openp\openp\closep\closep, \openp\openp\closep\closep\openp\closep, \openp\openp\closep\openp\closep\closep, \openp\openp\openp\closep\closep\closep\}, \\ \end{aligned} $$
ãã¦ãããã¯ããã¨ãã¦ãé·ã $n$ ã®å $a = (a_0, a_1, \dots, a_{n-1})$ ã¨ï¼çµååãæºããã¨ã¯éããªãï¼é©å½ãªäºé æ¼ç® $\odot$ ãèãã¾ãã $a$ ã®åè¦ç´ ã¸ã® $\odot$ ã®é©ç¨ããæ¹ãåæãã¦ã¿ã¾ãããã$n=4$ ã¨ãã¾ãã
- $(a_0\odot (a_1\odot (a_2\odot a_3)))$,
- $(a_0\odot ( (a_1\odot a_2)\odot a_3))$,
- $( (a_0\odot a_1)\odot (a_2\odot a_3))$,
- $( (a_0\odot (a_1\odot a_2))\odot a_3)$,
- $( ( (a_0\odot a_1)\odot a_2)\odot a_3)$.
$($ ã $\openp$ ã«ã$\odot$ ã $\closep$ ã«ç½®ãæãããã以å¤ã®æåãæ¶ããã¨ã§ $P_3$ ã®åè¦ç´ ã¨å¯¾å¿ã¥ãããããã¨ããããã¾ã*9ã $\odot$ ã¯ããã¾ã§å½¢å¼çãªæ¼ç®åã§ãããããã®è¨ç®çµæããã¾ãã¾åãã«ãªã£ããåä¸è¦ãããã¨ãã£ããããªãã¨ã¯èããªããã¨ã«ãã¾ãã
$\gdef\paren#1{\mathop{\operatorname{paren}}{#1}}$ ã¨ããããã§ããã®æ¬å¼§ã®ã¤ãæ¹å ¨ä½ãããªãéåãèãã¾ãã$a$ ã¸ã®æ¬å¼§ã®ã¤ãæ¹å ¨ä½ãããªãéåã $\paren{a}$ ã¨æ¸ããã¨ã«ãã¾ãã次ã®ãã¨ãæãç«ã¡ã¾ãã $$ \begin{aligned} \paren{(x, y)} &= \{(x\odot y)\}, \\ \paren{a} &= \{(S\odot T)\mid ST = a\}. \end{aligned} $$ $\DP[\angled{l, r}] = \paren{(a_l, a_{l+1}, \dots, a_{r-1})}$ ã¨ããã¨ã次ã®ããã«ã§ãã¾ãã $$ \begin{aligned} \DP[\angled{i, i+1}] &= \{a_i\}, \\ \DP[\angled{l, r}] &= \bigcup_{i=l+1}^{r-1} \big\{ (S\odot T)\mid (S, T)\in \DP[\angled{l, i}]\times\DP[\angled{i, r}] \big\}. \end{aligned} $$
note: $(S\odot T)$ 㯠$\openp S\closep T$ ã«å¯¾å¿ãã¦ãã¾ãã$\paren{a} = \DP[\angled{0, n}]$ ã§ãã
ããããåºé DP ã§ããæ¬å¼§åã¨ã®å¯¾å¿ã¥ããæèããã«è¦ãã¦ãã人ãããã®ããããã¾ããï¼ã¨æã£ããã®ã®ãé£éè¡åç©åé¡ã ã£ããã¹ã©ã¤ã ããã£ã¤ãããã¤ã ã£ãããæååé¡ã§ãããã¨ãèããã¨ãå ¨å¡ãããããèªèãæã£ã¦ããæ°ããã¦ãã¾ãããå®éã®ã¨ããã©ããªã®ã§ããããã
ãµã¤ãº $n$ ã®æ£è¦æ¬å¼§åã®åæ°ã¯ Catalan æ°ã¨å¼ã°ãããã $C_n$ ã¨æ¸ããã¾ãã ãã㯠$C_n = \Theta(4^n/n^{1.5})$ ã§ãããã¨ã示ãã¾ãã ãã®ãã¨ãããï¼è¦ç´ æ° $n$ ã®éåã®é¨åéåã $\Theta(2^n)$ åã§ãããã¨ãèããã¨ï¼æåã«è¦ããããªå é $i$ åç®ã§ 2 éãã«åå²ãããã㪠DP ã§ã¯å ¨ãã¿ã¼ã³ãç¶²ç¾ ã§ãããæ£è¦æ¬å¼§åå ¨ä½ã«é¢ãã¦èãããåé¡ã§ã¯ä¸é©å½ã§ãããã¨ãããã«ãããããã§ãã ãã¾ãããããææããã¦ãã解説ã¯è¦ãªãæ°ããã¾ããã
ãã®åé¡ã¯ãå®éã«ã¯ãåºæã®æ§è³ªãç¨ãããã¨ã§åºé DP ã使ãã $O(n\log(n))$ æéã§è§£ãããã¨ãç¥ããã¦ãã¾ãã
Catalan æ°ã®ãªã¼ãã¼ã«ã¤ãã¦
å°åºã¯ããã§ã¯è¡ãã¾ããããä¸è¨ã®ããã«è¡¨ãã¾ãã $$ C_n = \frac{(2n)!}{n!\,(n+1)!}. $$ ã¾ããStirling ã®è¿ä¼¼å ¬å¼ãããä¸è¨ãæãç«ã¡ã¾ãã $$ n! = \Theta(\sqrt{n}\, (n/e)^n). $$ $(n+1)! = \Theta(n\cdot n!)$ ã§ãããã¨ã«æ°ãã¤ãã¤ã¤ããã¨ã¯æã®éåã§ãã $$ \begin{aligned} C_n &= \Theta{\left(\frac{(2n)!}{n\cdot (n!)^2}\right)} \\ &= \Theta{\left(\frac{\sqrt{2n}\,(2n/e)^{2n}}{n\cdot (\sqrt{n}\,(n/e)^n)^2}\right)} \\ &= \Theta{\left(\frac{\sqrt{2n}\,(2n/e)^{2n}}{n^2 (n/e)^{2n}}\right)} \\ &= \Theta{\left(\frac{\sqrt{2n}\cdot 2^{2n}}{n^2}\right)} \\ &= \Theta(4^n/n^{1.5}). \end{aligned} $$
æå¾ã®è¡ã§ã¯å®æ°åã® $\sqrt{2}$ ãç¡è¦ãã¦ãããã¨ã«æ³¨æãã¦ãã ããã
é å (polynomial-1)
é åã«ã¤ãã¦å¥ã®ã¢ããã¼ããèãã¦ã¿ã¾ãã $\Lambda_n!$ ã«ã¤ãã¦èãããã§ãã
é å (exponential) ã®æ¹ã§ã¯ãé åãåããä½ã£ã¦ãããã©ã®è¦ç´ ã使ã£ããã§åé¡ãããã¨ããæ¦ç¥ã«åºã¥ãã¦ãããéåã管çããå¿ è¦ãããã¾ããã ããã§ã¯ãé å $p$ ãã$i$ ã $p_i$ ãå°ããæ¹ãã決ãã¦ãããã¨ããæ¦ç¥ãèãã¾ãã
$\{(0, p_0), (1, p_1), \dots, (n-1, p_{n-1})\}$ ($i\ne j\implies p_i\ne p_j$) ãªãéåã¯ã$(p_0, p_1, \dots, p_{n-1})\in \Lambda_n!$ ã«å¯¾å¿ãã¾ãããã£ã¦ãé åãç´æ¥èãã代ããã«ããããå½¢å¼ã®éåãèãã¦ããããã¨ã«ãªãã¾ãã ããã§ãå·¦å³ã®è¦ç´ ã $i$ æªæºãã¤ãå·¦ã®è¦ç´ ãç¸ç°ãªããå³ã®è¦ç´ ãç¸ç°ãªãéåãèãã¾ãã $$ S_i = \{S\in \Lambda_i^2\mid \ForallL{(k_l, k_r)\in S}{\ForallL{(k_l', k_r')\in S}{(k_l, k_r)\ne(k_l', k_r')\implies k_l\ne k_l'\wedge k_r\ne k_r'}}\}. $$ å°ããæ¹ããæãã㨠$$ \begin{aligned} S_0 &= \{\emptyset\}, \\ S_1 &= \{\emptyset, \{(0, 0)\}\}, \\ S_2 &= \{\emptyset, \{(0, 0)\}, \{(0, 1)\}, \{(1, 0)\}, \{(1, 1)\}, \{(0, 0), (1, 1)\}, \{(0, 1), (1, 0)\}\} \end{aligned} $$ ãªã©ã§ããå®éã«æã§æ¸ãã¦ã¿ãã¨ãçµæ§ãã大ãããªãããã ãªãã¨ããæè¦ãå¾ãããã®ã§ããããã§ãã
ãã¦ã$\Lambda_n = \{S\in S_n\mid |S| = n\}$ ãªã®ã§ã次ã®ãã㪠DP ãèãã¦ã¿ã¾ãã $$ \DP[\angled{i, j}] = \{S\in S_i\mid |S| = j\}. $$
漸åå¼ã¯æ¬¡ã®ããã«ãªãã¾ãã $$ \begin{aligned} \DP[\angled{i, 0}] &= \{\emptyset\}, \\ \DP[\angled{0, j}] &= \emptyset, \\ \DP[\angled{i, -1}] &= \emptyset, \\ \DP[\angled{i, j}] &= \DP[\angled{i-1, j}] \sqcup {} \\ % &\phantom{{}={}}\quad \bigsqcup_{S\in\DP[\angled{i-1, j-1}]} f_{=}(S, i) \sqcup {} \\ % &\phantom{{}={}}\quad \bigsqcup_{S\in\DP[\angled{i-1, j-1}]} f_{\lt}(S, i) \sqcup {} \\ % &\phantom{{}={}}\quad \bigsqcup_{S\in\DP[\angled{i-1, j-1}]} f_{\gt}(S, i) \sqcup {} \\ &\phantom{{}={}}\quad \bigsqcup_{S\in\DP[\angled{i-1, j-1}]} \big(f_{=}(S, i)\sqcup f_{\lt}(S, i)\sqcup f_{\gt}(S, i)\big) \sqcup {} \\ &\phantom{{}={}}\quad \bigsqcup_{S\in\DP[\angled{i-1, j-2}]} f_{\lessgtr}(S, i) \end{aligned} $$ ããã§ãå $f_{\ast}(S, i)$ ã¯æ¬¡ã®ãã®å ¨ä½ãããªãéåãè¿ãé¢æ°ã§ãï¼æ°å¼ã§ã®å®ç¾©ã¯å¾è¿°ãã¾ãï¼ã
- $f_{=}(S, i)$ï¼éå $S$ ã« $(i-1, i-1)$ ã追å ãã¦ã§ããéå
- $f_{\lt}(S, i)$ï¼éå $S$ ã« $(j, i-1)$ ($j\lt i-1$) ã追å ãã¦ã§ããéå
- ãã ããå·¦ã®è¦ç´ ã $j$ ã§ããè¦ç´ 㯠$S$ ã«å«ã¾ãã¦ããªãã¨ãã
- $f_{\gt}(S, i)$ï¼éå $S$ ã« $(i-1, j)$ ($j\lt i-1$) ã追å ãã¦ã§ããéå
- ãã ããå³ã®è¦ç´ ã $j$ ã§ããè¦ç´ 㯠$S$ ã«å«ã¾ãã¦ããªãã¨ãã
- $f_{\lessgtr}(S, i)$ï¼éå $S$ ã« $(j_l, i-1)$ 㨠$(i-1, j_r)$ ($j_l, j_r\lt i-1$) ã追å ãã¦ã§ããéå
- ãã ããå·¦ã®è¦ç´ ã $j_l$ ã§ããè¦ç´ ãå³ã®è¦ç´ ã $j_r$ ã§ããè¦ç´ 㯠$S$ ã«å«ã¾ãã¦ããªãã¨ãã
ããªãã¡ã次ã®ããã«æ¸ãã¾ãã $$ \begin{aligned} f_{=}(S, i) &= \big\{S\sqcup \{(i-1, i-1)\}\big\}, \\ f_{\lt}(S, i) &= \big\{S\sqcup \{(j, i-1)\}\mid j\in \Lambda_{i-1}, \ForallL{i'\in\Lambda_{i-1}}{(j, i')\notin S}\big\}, \\ f_{\gt}(S, i) &= \big\{S\sqcup \{(i-1, j)\}\mid j\in \Lambda_{i-1}, \ForallL{i'\in\Lambda_{i-1}}{(i', j)\notin S}\big\}, \\ f_{\lessgtr}(S, i) &= \big\{S\sqcup \{(j_l, i-1), (i-1, j_r)\}\\ &\phantom{{}={}} \qquad \mid (j_l, j_r)\in \Lambda_{i-1}^2, \ForallL{i'\in\Lambda_{i-1}}{(i', j_r)\notin S\wedge (j_l, i')\notin S}\big\}. \end{aligned} $$
æ±ãããã®ã¯ $$ % \Lambda_n! = \bigsqcup_{S\in\DP[\angled{n, n}]}{\{(p_0, p_1, \dots, p_{n-1})\mid \{(i, p_i)\}_{i=0}^{n-1}\in S\}} \Lambda_n! = \big\{(p_0, p_1, \dots, p_{n-1})\mid \{(i, p_i)\}_{i=0}^{n-1}\in \DP[\angled{n, n}]\big\} $$ ã§ãã
ãã¦ã$f_{\lt}(S, i)$ ãªã©ã®è¨ç®ã«é¢ãã¦è£è¶³ã§ãã åé åãé½ã«åæãããï¼ã¤ã¾ããå®è³ªçã«è¨ç®éã度å¤è¦ã§ããï¼æèã§ããã°æç´ã«ããã°ããã®ã§ãããè¨ç®éãæ¹åããããã« DP ãããæèã§ã¯ããã¯ããã¾ããã ããã«é¢ãã¦ã¯ projection ã folding ã®æ§è³ªã¨ã®å ¼ãåãã«ãªãã¾ããããã¨ãã°è¦ç´ æ°ã«é¢ãã¦ã§ããã°æ¬¡ã®ããã«ãã¾ãããã¾ãã $$ \begin{aligned} |f_{=}(S, i)| &= 1, \\ |f_{\lt}(S, i)| &= i-1-|S|, \\ |f_{\gt}(S, i)| &= i-1-|S|, \\ |f_{\lessgtr}(S, i)| &= (i-1-|S|)^2. \end{aligned} $$ ãã㧠$S\in\DP[\angled{i, j}]$ ã®ã¨ã $|S|=j$ ã§ãããã¨ã«æ³¨æãã¾ãããã ã¤ã¾ãä¸è¨ã®ããã«ãªãã¾ãã $$ \begin{aligned} |{\DP[\angled{i, 0}]}| &= 1, \\ |{\DP[\angled{0, j}]}| &= 0, \\ |{\DP[\angled{j, -1}]}| &= 0, \\ |{\DP[\angled{i, j}]}| &= |{\DP[\angled{i-1, j}]}| + {} \\ &\phantom{{}={}} \quad |{\DP[\angled{i-1, j-1}]}|\cdot(1 + 2\cdot(i-j)) + {} \\ &\phantom{{}={}} \quad |{\DP[\angled{i-1, j-2}]}|\cdot (i-j-1)^2. \end{aligned} $$
ããããç®±æ ¹é§ ä¼ DP ã¨å¼ã°ãã¦ãããã®ã«ãªãã¾ãããããããä¿çãã¨ããè¨ãåããæèããªãå½¢ã§å®å¼åãã¦ã¿ã¾ããã ååã®ç±æ¥ã¯ AOJ 2439 ã§ãã
é å (polynomial-2)
ä»ã®æ¹éã§é å $\Lambda_n!$ ãåæãã¦ã¿ã¾ãã åºæ¬çãªæ¹éã¯ã$i$ åç®ã®æ´æ°ã§ã¯ $i$ éãã®è¦ç´ ãçæãããã§ãã 空åã«ã¤ãã¦ã¯ãã¤ãåãã§ãã $$\DP[0] = \{\varepsilon\}.$$ $i$ åç®ã®æä½ã«ã¤ãã¦ã¯ããã¤ãã®æ¹æ³ãããã¾ãããæ¦ã次ã®å½¢å¼ã«ãªãã§ãããã $$ \DP[i] = \bigsqcup_{P\in\DP[i-1]} f_i(P). $$
$f_i$ ã¨ãã¦ã¯æ¬¡ã®ãããªãã®ãèãããã¾ãã$P = (p_0, p_1, \dots, p_{i-2})$ ã¨ãã¦ããã¾ãã $$ \begin{aligned} % f_i^{\text{insert}}( (p_0, p_1, \dots, p_{i-2})) &= \{ f_i^{\text{insert-x}}(P) &= \{ (p_0, \dots, p_{j-1}, i-1, p_j, \dots, p_{i-2}) \mid j\in\Lambda_i \}, \\ f_i^{\text{swap}}(P) &= \{ (p_0, \dots, p_{j-1}, i-1, p_{j+1}, \dots, p_{i-2}, p_j) \mid j\in\Lambda_{i-1} \} \sqcup {} \\ &\phantom{{}={}}\quad\{P\concat (i-1)\}, \\ f_i^{\text{insert-y}}(P) &= \{ (p_0', \dots, p_{i-2}', i-1) \mid j\in\Lambda_i \}. \end{aligned} $$ ãã ãã$f_i^{\text{insert-y}}$ ã«ããã $p_j'$ ã¯æ¬¡ã®ããã«å®ç¾©ãããã¨ãã¾ãã $$ p_j' = \begin{cases} p_j, & \text{if }p_j \lt i-1; \\ p_j + 1, & \text{if }p_j \ge i-1. \end{cases} $$ ãã¨ãã° $$ \begin{aligned} &f_4^{\text{insert-x}}( (0, 2, 1)) = \{ \\ &\qquad (3, 0, 2, 1), \\ &\qquad (0, 3, 2, 1), \\ &\qquad (0, 2, 3, 1), \\ &\qquad (0, 2, 1, 3), \\ &\}, \\ &f_4^{\text{swap}}( (0, 2, 1)) = \{ \\ &\qquad (3, 2, 1, 0), \\ &\qquad (0, 3, 1, 2), \\ &\qquad (0, 2, 3, 1), \\ &\qquad (0, 2, 1, 3), \\ &\}, \\ &f_4^{\text{insert-y}}( (0, 2, 1)) = \{ \\ &\qquad (1, 3, 2, 0), \\ &\qquad (0, 3, 2, 1), \\ &\qquad (0, 3, 1, 2), \\ &\qquad (0, 2, 1, 3), \\ &\} \end{aligned} $$ ã§ãã
insert-x ã insert-y ã®æ°æã¡ã¯ã$(x, y) = (i, p_i)$ ãªãç¹ãããããããã®ã«åºã¥ãã¦ãã¾ãã ããæ¿å ¥ DP ãªã©ã¨å¼ã°ãã¦ãã¾ãã
ä½ãããã®åæ°ãåºå®ããã¨ãã®é åãæ°ãä¸ãããæèã§ã¯ãbit DP ãããã« $n^{O(1)}$ åã«åé¡ã§ããªããèãã¦ã¿ã¾ãããï¼bit DP ãçµç±ãã¦èå¯ããã®ãæªãã¯ãªãã¨æãã¾ãï¼ãåé¡ã®æ¡ä»¶ã projectionã»folding ã¨ã®å ¼ãåãã§ãã©ã®ãã㪠$f_i$ ã¨ç¸æ§ãããããèããã¨ããããã§ãã
éä¹ã»åå² (polynomial)
éå $S$ ã $k$ åã®åé åã«åãããã®å ¨ä½ãããªãéåã $[S]_k$ã$k$ åã®éåã«åãããã®å ¨ä½ãããªãéåã $\{S\}_k$ ã¨æ¸ããã¨ã«ãã¦ã¿ã¾ãã$|[S]_k| = {|S|\brack k}$, $|\{S\}_k| = {|S|\brace k}$ ã«ç±æ¥ããè¨æ³ã§ããããããã¾ãè¦ãªãæ°ããã¾ããããã§ãããã ããããã®è¦ç´ æ°ã¯ã第ä¸ç¨® Stirling æ°ã第äºç¨® Stirling æ°ã¨å¼ã°ãã¦ãã¾ãã
$a_0\stackrel{p}{\mapsto} a_1, \dots, a_{m-2}\stackrel{p}{\mapsto} a_{m-1}, a_{m-1}\stackrel{p}{\mapsto}a_0$ ã®ãããªé å $p$ ãåé åã¨ããã$[a_0, a_1, \dots, a_{m-1}]$ ã¨æ¸ããã¨ã«ãã¾ããç¹ã«ã$[a_0]$ 㯠$a_0\stackrel{p}{\mapsto} a_0$ ãæå³ãã¾ãã
$[S]_k$ ã $\{S\}_k$ ã®ä¾ã¨ãã¦ã¯æ¬¡ã®ããã«ãªãã¾ãã $$ \begin{aligned} & [\Lambda_4]_2 = \{ \\ & \qquad \{[0, 3, 2], [1]\}, \\ & \qquad \{[0, 2, 3], [1]\}, \\ & \qquad \{[0, 2], [1, 3]\}, \\ & \qquad \{[0, 3], [1, 2]\}, \\ & \qquad \{[0], [1, 3, 2]\}, \\ & \qquad \{[0], [1, 2, 3]\}, \\ & \qquad \{[0, 3, 1], [2]\}, \\ & \qquad \{[0, 1, 3], [2]\}, \\ & \qquad \{[0, 1], [2, 3]\}, \\ & \qquad \{[0, 2, 1], [3]\}, \\ & \qquad \{[0, 1, 2], [3]\}, \\ & \}, \\ & \{\Lambda_4\}_2 = \{ \\ & \qquad \{\{0, 2, 3\}, \{1\}\}, \\ & \qquad \{\{0, 2\}, \{1, 3\}\}, \\ & \qquad \{\{0, 3\}, \{1, 2\}\}, \\ & \qquad \{\{0\}, \{1, 2, 3\}\}, \\ & \qquad \{\{0, 1, 3\}, \{2\}\}, \\ & \qquad \{\{0, 1\}, \{2, 3\}\}, \\ & \qquad \{\{0, 1, 2\}, \{3\}\}, \\ & \}. \end{aligned} $$
ããã§èãã¦ããåé åã®éåã¯ãåã ã®è¦ç´ ã«éè¤ããªãã®ã§ãå ¨ä½ã§ä¸ã¤ã®é åã¨è¦ãªããã¨ãã§ãããã¨ã«æ³¨æãã¦ããã¾ãã ãã¨ãã°ã$\{[0, 3, 1], [2, 4]\}$ 㯠$(3, 0, 4, 1, 2)$ ã«ç¸å½ãã¾ãã
漸åå¼ãæ¸ãã«ããã£ã¦ãé åã«å¯¾ããæä½ã«é¢ããè¨æ³ãå°å ¥ãã¦ããã¾ãã $p_x$ ãå®ç¾©ããã $x$ 㨠$p_y$ ãå®ç¾©ããã¦ããªã $y$ ã«å¯¾ãã¦ã$p\veebar (x\mapsto y)$ ã¯æ¬¡ã®å¯¾å¿ã¥ããããªãé åã¨ãã¾ãã
- $x\mapsto y$,
- $y\mapsto p_x$,
- $z\mapsto p_z$ ($z\ne x\wedge z\ne y$).
ã¾ãã$p_x$ ãå®ç¾©ããã¦ããªã $x$ ã«å¯¾ã㦠$p\sqcup [x]$ ã¯æ¬¡ã®å¯¾å¿ã¥ããããªãé åã¨ãã¾ãã
- $x\mapsto x$,
- $y\mapsto p_y$ ($y\ne x$).
ãã®è¨æ³ãç¨ãã¦ã漸åå¼ã¯æ¬¡ã®ããã«æ¸ãã¾ãã $$ \begin{aligned} [\Lambda_0]_0 &= \{\emptyset\}, \\ [\Lambda_0]_k &= \emptyset, \\ [\Lambda_n]_0 &= \emptyset, \\ [\Lambda_n]_k &= \{p\sqcup [n-1]\mid p\in[\Lambda_{n-1}]_{k-1}\} \sqcup {} \\ &\phantom{{}={}}\quad \bigsqcup_{p\in[\Lambda_{n-1}]_k} {\{ p\veebar (j\mapsto n-1) \mid j\in \Lambda_{n-1} \}}. \end{aligned} $$ éåã¸ã®åå²ã®æ¹ã¯æ¬¡ã®éãã§ãã $$ \begin{aligned} \{\Lambda_0\}_0 &= \{\emptyset\}, \\ \{\Lambda_0\}_k &= \emptyset, \\ \{\Lambda_n\}_0 &= \emptyset, \\ \{\Lambda_n\}_k &= \{p\sqcup \{n-1\}\mid p\in\{\Lambda_{n-1}\}_{k-1}\} \sqcup {} \\ &\phantom{{}={}}\quad \bigsqcup_{p\in\{\Lambda_{n-1}\}_k} {\{ (p\smallsetminus S)\sqcup(S\sqcup \{n-1\})\mid S\in p \}}. \end{aligned} $$
ãããã®æ¼¸åå¼ãããStirling æ°ã«é¢ãã漸åå¼ãå°ããã¾ãã
$$ \begin{aligned} \textstyle{n\brack k} &= \textstyle{n-1\brack k-1} + (n-1)\,\textstyle{n-1\brack k}, \\ \textstyle{n\brace k} &= \textstyle{n-1\brace k-1} + k\,\textstyle{n-1\brace k}. \end{aligned} $$
ã¾ãã$\bigsqcup_{k=0}^n {[\Lambda_n]_k} = \Lambda_n!$ ã $\bigsqcup_{k=0}^n {\{\Lambda_n\}_k} = \partition{\Lambda_n}$ ãªã©ãæãç«ã¡ã¾ãã
ç©å½¢é å
é å $p\in\Lambda_n!$ ã«å¯¾ãã¦ãç¹ç¾¤ $S = \{(i, p_i) \mid i\in\Lambda_n\}$ ã x-y å¹³é¢ã«ãããããããã¨ãèãã¾ãã ãã®ã¨ããããç¹ $(x, y)\in \Lambda_n^2$ ã®å·¦ä¸é å $$ T_{(x, y)} = \{(x', y')\in S \mid x'\le x\wedge y'\le y\} $$ ãèãã¾ãã $p_i = 0$ ãªã $i$ ã«å¯¾ã㦠$T_{(i, p_i)} = \{(i, p_i)\}$ ã¨ãªãã®ã¯æããã§ãããã ããã§ã$y$ 座æ¨ã®æé ã«æ¼¸åå¼ãç«ã¦ããã¨ãèãã¾ã*10ã
便å®ä¸ã$q_{p_i} = i$ ãªãé å $q$ï¼ããªãã¡ $p$ ã®éé åï¼ãå®ç¾©ãã¦ããã¾ãã ä¸è¨ã®ãã¨ã¯ $T_{(q_0, 0)} = \{(q_0, 0)\}$ ã¨è¨ãæãããã¾ãã
ãã¦ã漸åå¼ã¯æ¬¡ã®ããã«ãªãã¾ãã $$ \begin{aligned} T_{(x, 0)} &= \emptyset && (x\lt q_0), \\ T_{(x, 0)} &= \{(q_0, 0)\} && (x\ge q_0), \\ T_{(x, y)} &= T_{(x, y-1)} && (x\lt q_y), \\ T_{(x, y)} &= T_{(x, y-1)}\sqcup\{(q_y, y)\} && (x\ge q_y). \end{aligned} $$
$y$ ãåºå®ããã¨ãã®å¦çã¨ãã¦ã¯ã$q_y$ ãå¢ã¨ãã¦å·¦å´ã¯ä½ããããå³å´ã¯ $(q_y, y)$ ã追å ããã ãã§ãã®ã§ãåºéã«å¯¾ããæ´æ°ãã§ãããã¼ã¿æ§é ãç¨ãããã¨ã§é«éã«å¦çãå¯è½ã§ãï¼$y$ ãã¨ã« $T$ ã使ãåãã¤ã¡ã¼ã¸ã§ãï¼ã
ãããã¯ã $$ a_{(x, y)} = \begin{cases} \emptyset, & \text{if }p_x \lt y; \\ \{(x, p_x)\}, & \text{if }p_x \ge y \end{cases} $$ ã®ãããªé å $a_{(x, y)}$ ã管çãããã¨ã§ãåºé fold ãã§ãããã¼ã¿æ§é ãç¨ãããã¨ãå¯è½ã§ãã $T_{(x, y)} = \bigsqcup_{x'\le x} a_{(x', y)}$ ã¨ãããã¨ã§ãã
ãã®ããã«ãããããã®åº§æ¨ã®æé ï¼ãéé ï¼ã«å¦çãé²ãããã¨ã§ãæ¡ä»¶ã®ä¸çå¼ãå¦çé ã«è¨ãæãããã¯ã¯å¹³é¢èµ°æ»ã¨å¼ã°ãã¦ãã¾ããå ã ã¯è¨ç®å¹¾ä½å¦å´ã®ç¨èªã®ã¯ãã§ãè±èªã 㨠sweeping ã¨å¼ã°ãã¦ããã¨æãã¾ããå¦çé ã«æ²¿ã£ã¦åãç·ï¼ä»åã®ä¾ã§ããã°ã$x$ 座æ¨ã«å¯¾ãã¦å¹³è¡ãªã$y$ 軸æ£æ¹åã«åãç·ï¼ãèµ°æ»ç·ã¨å¼ã³ã¾ããèµ°æ»ç·ã¯åº§æ¨è»¸ã«å¹³è¡ã¨ã¯éããããã¨ãã°åãã¯åç´ç· $OX$ ããéå§ãã¦åæè¨åãã«å転ãããããªã±ã¼ã¹ãããã¾ããã¾ããä»å㯠$x'\le x$ ã®ããã«çå´ãéãã¦ããªãåºéã§ãããã$x_l\le x'\le x_r$ ã®ãããªå¦çãè¡ãåé¡ãé »åºã§ãï¼DP ã ã¨èªèãããã¨ã¯å°ãªãããããã¾ããï¼ã
ãã®ãã¯ã§è§£ããé »åºåé¡ã¨ãã¦ã¯ãLIS ã転åæ°ãªã©ãããã¾ãã
é¨åéå + åºé
$[0, n)$ ã«å«ã¾ããé空ãªåºéå ¨ä½ãããªãéå $A_n$ ãèãã¾ãï¼å¢çã¯æ´æ°ã¨ãã¾ãï¼ã $$ A_n = \{[l, r) \mid (l, r)\in\Lambda_n, l\lt r\}. $$ ããã®é¨åéå $S \in 2^{A_n}$ ãä¸ããããã¨ãã¦ãããã«é¢ããåé¡ãèãã¾ãã
$I\in 2^{\Lambda_n}$ ã«å¯¾ãã¦ä»¥ä¸ã®ãããªéåãè¿ãé¢æ°ãèãã¾ãã $$ f_S(I) = \{x\in S\mid \ExistsL{i\in I}{i\in x}\}. $$
ç´æçãªèª¬æã¨ãã¦ã¯ãé¸ãã ããã¤ãã®åº§æ¨ã§åºéã串åºãã«ããã¨ããå®éã«ä¸²ãåºããåºéãè¿ããã®ã§ãã
以ä¸ã«å³ã示ãã¾ãã[---)
ãåºéã^
ã串ã§ãã
0 1 2 3 4 5 6 7 8 ^ ^ ^ # S = { [--------) ^ # [0, 3), ^ ^ [--------------) # [2, 7), ^ [-----------) ^ # [1, 5), ^ ^ [-----) # [6, 8), ^ ^ ^ # } ^ ^ ^ # I = {0, 1, 7}
$S = \{[0, 3), [2, 7), [1, 5), [6, 8)\}$ 㨠$I = \{0, 1, 7\}$ ã§ãã$f_S(I) = \{[0, 3), [1, 5), [6, 8)\}$ ã¨ãªãã¾ãã
ãã¦ã次ã®éåãèãããã§ããããªãã¡ãå ¨é¨ã®åºãæ¹ã«ãããåºéã®é¸ã°ãæ¹ãåæãããã§ãã $$ % \{ f_S(I) \mid I\in 2^{\Lambda_n} \}. \bigcup_{I\in 2^{\Lambda_n}} f_S(I). $$
次ã®ãã㪠DP ãèãã¦ã¿ã¾ãããã $$ \begin{aligned} % % \DP[\angled{i, j}] &= \big\{f_{\{[l, r)\in S\mid r\le i\}}(I) \\ % \DP[\angled{i, j}] &= \big\{f_{S\cap A_i}(I) \\ % &\phantom{{}={}} \qquad \mid I\in 2^{\Lambda_i}, \max {(\{i+1\mid i\in I\}\sqcup \{0\})} = j\big\}. \DP[\angled{i, j}] &= \big\{f_{S\cap A_i}(I) \mid I\in 2^{\Lambda_i}, \max {(\{i+1\mid i\in I\}\sqcup \{0\})} = j\big\}. \end{aligned} $$ åºéã¯å³ç«¯ã $i$ 以ä¸ã®ãã®ãåºãæ¹ã¯æ大å¤ã $j-1$ï¼$j=0$ ã®ã¨ãã¯åºããªãï¼ã®ãã®ã§çµã£ã¦ãã¾ã*11ã 欲ããã®ã¯ $\bigcup_{j=0}^n {\DP[\angled{n, j}]}$ ã§ãã$\sqcup$ ã¯é£ããã£ãã§ãã ã¾ãã$j$ ã®ç¯å²ã¯ $0\le j\le i$ ã¨ãã¾ãã
ãã¦ã漸åå¼ã¯æ¬¡ã®ããã«ãªãã¾ããç°¡æ½ãã®ããã$S_i = \{[l, r) \in S\mid r = i\}$ ã¨å®ç¾©ãã¦ããã¾ãã $$ \begin{aligned} \DP[\angled{0, 0}] &= \{\emptyset\}, \\ \DP[\angled{i, i}] &= \bigcup_{j=0}^{i-1}{\{T\sqcup S_i\mid T\in\DP[\angled{i-1, j}]\}}, \\ \DP[\angled{i, j}] &= \{ T\sqcup\{[l, r)\in S_i\mid l\lt j\} \mid T\in\DP[\angled{i-1, j}] \}. \end{aligned} $$ $\DP[\angled{i, \ast}]$ ã§ã¯ã$\DP[\angled{i-1, \ast}]$ ã¨æ¯ã¹ã¦ãå³ç«¯ã $i$ ã®åºéã®éåãã¨ãåº§æ¨ $i-1$ ã§ä¸²ãåºããã©ããã®åå²ãã®èæ ®ãå¢ãã¾ãã $i-1$ ã§ä¸²ãåºãå ´åã¯ãæ°ããå¢ããï¼å³ç«¯ã $i$ ã®ï¼åºéãã¡ã¯é¸ã°ãã¾ãã ä¸æ¹ã$i-1$ ã§ä¸²ãåºããªãå ´åã¯ãæ°ããå¢ããåºéã®ãã¡ $j-1$ ã§åºããããã®ï¼ããªãã¡ $l\lt j$ ã®ãã®ï¼ã ããé¸ã°ãã¾ãã
ãããã㯠projectionã»folding ãè¡ããã¨ãåæã¨ãã話ã«ãªãã¾ãã ããã«ã$\DP[\angled{i-1, \ast}]$ 㨠$\DP[\angled{i, \ast}]$ ã®éãã«ã¤ãã¦æ³¨ç®ãã¾ãããã ã¾ãã$\DP[\angled{i, i}]$ ã«é¢ãã¦ã¯ $\DP[\angled{i-1, 0}], \dots, \DP[\angled{i-1, i-1}]$ ã®ããããã« $S_i$ ãåããããã®ã«ãªãã¾ããprojectionã»folding ã®æèã§è¨ãã°ã $$ \bigodot_{j=0}^{i-1} {\{f(T\sqcup S_i)\mid T\in\DP[\angled{i-1, j}]\}} $$ ãé«éã«è¨ç®ã§ããã°ããããã§ãã $\DP[\angled{i, j}]$ ã«é¢ãã¦ã¯æ¬¡ã®éãã§ãã
- $\DP[\angled{i, j}]$ ã« $\DP[\angled{i-1, j}]$ ãã³ãã¼ããã
- $[l, r)\in S_i$ ãªãååºéã«å¯¾ãã¦æ¬¡ã®æ´æ°ãè¡ãã
- $l\lt j\lt i$ ãªãå $\DP[\angled{i, j}]$ ã«å¯¾ãã¦ã$[l, r)$ ã追å ããã¨ãã®å¤ã§è¨ç®ãç´ãã
ããã projectionã»folding ã¨ã®å ¼ãåãã§ããããããããã¼ã¿æ§é ãç¨ãããã¨ã§å¯è½ãªç¶æ³ãå¤ããã§ãã $\DP[\angled{i, i}]$ ã®æ¹ã®æ´æ°ãã¾ã¨ã㦠$l\lt j\le i$ ã®åºéãæ´æ°ããæ¹ãå®è£ ãç°¡æ½ã«ãªãããããã¾ããã
ã¨ããã§ã$\DP[\angled{i-1, \ast}]$ ã $\DP[\angled{i, \ast}]$ ã«ã³ãã¼ããé¨åã«é¢ãã¦ã¯ãï¼å¾ãã $\DP[\angled{n, \ast}]$ 以å¤ã使ãããç¶æ³ã§ãªããã°ï¼$\DP[\ast]$ ã ãã®ä¸æ¬¡å ã®é åã ã¨ãããã¨ã«ãã¦ä½¿ãåããã¨ã§ãä½ãããã«æ¸ã¿ã¾ãã ããã«ããã$O(n)$ åã®åºé fold 㨠$O(|S|)$ åã®åºéæ´æ°ã§éæã§ãã¾ãã ãã ãã$\bigodot {\{f(T\sqcup S_i)\}} = (\bigodot f(T))\odot f(S_i)$ ãªã©ã®ããæ§è³ªããã£ã¦ã$S_i$ ã追å ããã¨ãã®å¤ã容æã«è¨ç®ã§ãããã¨ãåæã¨ãªã£ã¦ãã¾ãã
ãã®ãããªåæã®ä¸ã§ãDP é åã使ãåã㦠in-place ã«æ´æ°ãè¡ããã¯ã¯ãã¤ã³ã©ã¤ã³ DP ã¨ã in-place DP ã¨ãå®å®¶ã¨ãå¼ã°ãã¦ãã¾ãããã®ãã¯èªä½ã¯ãã®ç¯ã§èãããããªãã¼ãã«åºæã®ãã®ã§ã¯ããã¾ãããå¹³é¢èµ°æ»ã®ã¨ããã§ã使ãã¾ãããã
topcoder-g-hatena-ne-jp.jag-icpc.org
ãã®ä»
ã°ãªããã®å·¦ä¸ããå³ä¸ã«ãå³ã¾ãã¯ä¸ã¸ã®ç§»åãç¹°ãè¿ãçµè·¯ã®ç·æ°ãèããåé¡ãããã¾ãã ããã¯ãåãã¹ã«å°éããçµè·¯ã®éåãæã£ã¦ããã¨è¦ãªãã¾ãã
EDPC Z ã®ãããªãããã¤ãã®ãã¹ãçµç±ãã¦ã´ã¼ã«ã«å°éããã¾ã§ã®ã³ã¹ãã®æå°å¤ãæ±ããåé¡ãããã¾ãã ããã¯ãçµç±ãããã¹ã®é¨åéåãèãã¦ããã¨è¦ãªãã¾ãããã¹ $j$ ãã $i$ ã¸ã®ç§»åã®ã³ã¹ãã $j$ 以åã®çµè·¯ã«ãããªããã¨ããåä¸è¦ãã¦ç¶æ æ°ãæ¸ããã¦ãã¾ããEDPC Z ã§ã¯ããã« CHT ãªã©ã§é«éåããã¾ãã
ããã¤ãåé¡ãæããã®ã§èãã¦ã¿ãã¨ããã§ãããã解説ãããªããæãããã®ãå«ã¿ã¾ãã
- ABC 041 D
- ABC 318 D
- TDPC G
- Number of Subsequences
- EDPC S
- TDPC E
- ã¿ããªã®ããã³ã³ 2019 D
- AOJ 3110
- EDPC U
- EDPC N
- AOJ 2439
- ABC 134 F
- CPSCO2019 Session3 F
- JOI 2017/2018 æ¥å宿 Day2 åé¡ 1
- å°èª²é¡ 3 ã¾ã§
- ARC 055 B
- EDPC Q
- TDPC K
- EDPC W
- ABC 296 Ex
- TDPC S
- EDPC Z
- TDPC P
å®è£ ä¾
Rust ã§ã®å®è£ ä¾ã§ããè¨ç®é度å¤è¦ã®åãªã®ã§ã競ããç¨ã«ç´æ¥å½¹ç«ã¤ãã¨ã¯å°ãªãããããã¾ããã è¨äºä¸ã®è¨è¿°ãæ£ãããã¨ã® verify ç¨ã¨ãã¦ã®å½¹å²ç¨åº¦ã®ãã®ã§ãã
- Fibonacci æ°å
- é¨åéå
- é å (exponential)
- çµåã
- é¨åå (1)
- é¨åå (2)
- éè² æ´æ° (1)
- éè² æ´æ° (2)
- åå² (exponential)
- æ£è¦æ¬å¼§å
- é å (polynomial-1)
- é å (polynomial-2)
- ç©å½¢é å
- éä¹ã»åå² (polynomial)
- é¨åéå + åºé
é¢é£è³æ
ä¸è¨ã®è¨äºã§æãããã¦ãããããªãã®ã«ã¤ãã¦ãèãã¦ã¿ãã¨ããããããã¾ããã
ãã®è¨äºãæ¸ãã«ããã£ã¦èª¿ã¹ã¦ããéç¨ã§è¦ã¤ãããã®ãè²¼ãã¾ããè¨äºä¸ã§ã¯è§¦ãã¦ããªããã¼ãã§ããé¢ç½ããã§ãã
ãã¨ãã
ã¤ããã¾ããã
åå¿è ã®é ãæ°ãä¸ã DP ãããã¨ãã«å ·ä½çãªå¯¾è±¡ãã¤ã¡ã¼ã¸ã§ãã¦ãããã« MECE ã«ãªã£ã¦ããªã漸åå¼ãç«ã¦ãããã¦ããè¨æ¶ãèã£ã¦ããã®ã§ãé½ã«åæãããã¨ã§æèãã¦ã¿ããã¨ããä¼ç»ã§ããã æè¿å§ã㦠DP ã«æ©ãã§ãã人ãã¡ã¯ã©ã®ããã«ã¤ã¡ã¼ã¸ãã¦èå¯ã»å®è£ ãã¦ããã®ã§ããããã
æ£è¦æ¬å¼§åã®ç¯ã§ãè¿°ã¹ã¾ããããèãããã¨ãã¦ãã対象ã®åæ°ã¨ DP ã§åæã§ããåæ°ã«ä¹é¢ããªãããæèãã¦ã¿ãã®ã大äºããã§ãããã¨ãã°ãFibonacci æ°åã®ç¯ã§ã¯ $\{1, 2\}^{\star}$ ã®åã§ç·åã $n$ ã®ãã®ãèãã¾ãããã$\{1, 2, \dots, n\}^{\star}$ ã®åã§ç·åã $n$ ã®ãã®ã¯ã©ã®ç¨åº¦ã®åæ°ã«ãªããã¤ã¡ã¼ã¸ãã¤ãã§ããããï¼
ãã®è¨äºã®å
容ã¯ããã®æã®æ§é 㧠DP ããããã¨ãç¨ã®ãã©ã¤ãã©ãªãã®ãããªç«ã¡ä½ç½®ã§ãããã®ã®ç´æ¥ #include
use
import
ãªã©ã§ä½¿ãåãã«ãããããªå
容ã«ãªã£ã¦ãããããªæ°ããã¾ãï¼ã§ããªãããªããã®ããããã¨ã¯æãã¾ããï¼ã
ã¨ã¯ããèå¯ã®å¼ãåºãã¨ãã¦ã¯æç¨ã ã¨æãã®ã§ãä½ããã®æ¹æ³ã§æ´çãã¦ããã¨ããã®ããªã¨æãã¾ãã
ã¾ãæ°å¼å¤ãã®è¨äºã«ãªã£ã¦ãã¾ã£ãæ°ãããï¼ããèªä½ã¯å¥ã«æªããã¨ã§ã¯ãªãã¦ããã種å½ç¶ã ã¨ãæãã¾ãï¼ã®ã§ãæ°å¼ãè¦æãªäººãæ°å¼ãå¾æã«ãªã£ã¦ããããããªè§£èª¬ãæ¸ããããããªã¨æãã¤ã¤ããã³ã¡ããåãã§ã¯ãªãã¨ããæ°ããã¾ãã è¦æãªäººã¨ããã®ã¯ã¯ã³ãã¿ã¼ã³ã§ã¯ãªãã¨æãã®ã§ãããã®è¨äºèªãã§ããã§ãã¾ãããã«ãããããªæ°ããã¦ãã¦ãä¸å¯¾å¤ã§ããã«ããæ°ããã¦ãããã§ãããã 競ããã§åºã¦ããæèã®æ°å¼ã£ã¦ããããä¸å¦ã»é«æ ¡æ°å¦ã¯å¿ ãããåæã¨ããªãã®ã§ããæ°å¼å¤ãã®ç«¶ãã解説ãèªããããã«ãªããã¨ããç®æ¨ã«ããæè²ã³ã³ãã³ãã¨ããã®ãããããããã¾ããï¼
å½åã®äºå®ã§ã¯ãã£ã¨è»½ãæ¸ãäºå®ã ã£ããã§ãããæ°ã¥ãããããªã¥ã¼ã å¤ãã«ãªã£ã¦ãã¾ãã¾ããã $\KaTeX$ ã®æ°å¼ã®è¨è¿°ãå«ãã㨠5 ä¸æåãè¶ ãã¦ãã¾ã£ã¦ãã¾ãã ããªã¥ã¼ã å¤ãã®è¨äºãã好ã¿ã®æ¹ã¯ä¸è¨ãããããã§ãã
ãããã 2 å¹´åã®è¨äºãããã§ããæ°ãåãããã¾ããªã«ãæ¸ããã¨æãã¾ãã
ããã
ãããã§ãããã¤ãããã¾ã§ããã
*1:æåéåã¯ã¢ã«ãã¡ãããã¨ãå¼ã°ãã¾ããå½¢å¼è¨èªçè«ãæååçéã®ç¨èªã§ãããã¾ãã¾éåã¨ãã¦ä¸è´ãããã¨ã¯ããã¾ããããããã [A-Za-z] ãæãç¨èªã§ã¯ãªãã®ã§æ³¨æãã¾ãããã
*2:$\lambda$ ã§è¡¨ãæç®ãããã¨æãã¾ãã空éåã $\emptyset$ ã§ã¯ãªã $\{\}$ ã¨æ¸ãããã«ã空åã $()$ ã§è¡¨ãç¶æ³ãããããã§ãã
*3:Haskell ãªã©ã®é¢æ°åè¨èªã ã£ãããç´ç²é¢æ°åãã¼ã¿æ§é çéã ã£ããã§ä½¿ããã¦ããè¨æ³ã¨ããå°è±¡ãããã¾ãã
*4:ãã¶ãããã¯ä¸è¬çãªè¨æ³ã§ã¯ãªãã§ããã$2^{|S|}$ ã®ãããªè¨æ³åæ§ã« $|S!| = |S|!$ ãæãç«ã¤ãã¨ããããã¾ãéç´æçãªè¨æ³ã§ããªãã§ãããã
*5:ææªæ $\Theta(n^2)$ æéã«ãªãããã·ã¥ãã¼ãã«ã§ã¯ã©ããªããï¼ ãã¡ãã¯èªè ã«ä»»ãã¾ãã
*6:å®éã«ã¯ $|\Sigma|$ ã§ã¯ãªãã$\Sigma$ ã®ãã¡ $S$ ã«å«ã¾ããè¦ç´ ã®ç¨®é¡æ°ã§æãããããã§ãã
*7:ã¢ã«ãã¡ããããµã¤ãº $|\Sigma|$ ã¯å¸¸ã«å®æ°ã¨è¦ãªããããã§ã¯ããã¾ãããã26 ã¯æ¯è¼ç大ããã ããå®æ°ã§ã¯ãªããã®ãããªä¸»å¼µã¯ãã³ã»ã³ã¹ã§ãå¤ã®å¤§å°èªä½ã¯å®æ°æ§ã¨ã¯ç¡é¢ä¿ã§ããããã¾ã§åé¡è¨å®ãªã©ã«ããã¾ãã
*8:$A=0$ ã®å ´å㯠$n$ ã¯ã©ããã¾ããããã$-\infty$ æ¡ã¨è¦ãªãå®æ´¾ã®äººããããããã§ãã
*9:éåãã®å¯¾å¿ã¥ãã¯ã¡ãã£ã¨èããå¿ è¦ãããã¾ãããé©åã«è¡ããã¨ã§å¯è½ã§ãã
*10:$x$ 座æ¨ã®æé ãªã©ã§ãããã§ãã好ã¿ã®åé¡ã§ãããã¨ãå¤ãæ°ããã¾ãã
*11:$[0, i)$ ã«å«ã¾ãã¦ãããããªåºéã ããèãããã®ã§å³ç«¯ã $i$ 以ä¸ã¨ãã¦ãã¾ãããã®ãããªç¶æ³ã§ã¯ãååºéãå³ç«¯ã®æé ã§ã½ã¼ããã¦ããã¨ãããã¨ãå¤ããã§ãã