---
# System prepended metadata

title: Chapter6.5

---

# Chapter6.5 

#### RNA Secondary Structure: Dynamic Programming over Intervals

## 定式

文字列: $B = b_1 b_2 \dots bn, b_i \in \{A,C,G,U \}$

RNAという遺伝子をモデル化したもの。RNAは塩基ごとにペアを作る。
以下の4つのルールを守った上で、文字列$B$に対してペアを生成する。このペアの集合を$S$とし、RNAの構造と呼ぶ。

- $b_i,b_j \ (i < j)$がペアであるとき$i < j - 4$
- かならず$(A,U), (C,G)$のどちらかのペアとなる
- $b_i$は2つ以上のペアを作らない
- ペアはそれぞれ線で繋がれると考えた時に、線が交差しない。言い換えると$(i,j),(k,l)$が存在し$i < k$ならば$i < k < j< l$とはならない。

ただし注意して欲しいのは$b_i$はかならずペアになるわけではない。ぼっちもいる。

## 目的

ペアの数を最大化する。

## アルゴリズム

### 最初のアプローチ

$OPT(j) := b_1 \cdots b_jでの最適解$

$j$に対して2つの操作が考えられる.

1. j番目はペアにならない.このとき$OPT(j) := OPT(j-1)$
2. j番目は$t < j - 4$ペアになるのいずれかとペアになる.

#### 2番について

$t$と$j$がペアとなるとき、$1,\cdots ,t -1$の任意の要素と$t+1, \cdots j -1$とペアになることはできない。
なので$OPT(j) = OPT(t -1) + [t + 1 からj -1での最大値]$。2つ目の項は定義されていない。

### 改善案

$OPT(i,j) := b_i , \cdots , b_j$での最大ペア数

### ベルマン方程式

$OPT(i,j) := max(OPT(i,j-1),1 + OPT(i,t - 1) + OPT(t + 1,j - 1)), for \ any \ t \in \{i, \cdots ,j-1\}$

### アルゴリズム

はい。やるだけ。algorithm designをみろ。

### ねこ

ねこ〜〜

### 計算量

$O(n^3)$