STA Chapter2 part2
Estimating the Number of Connected Components
Connected Components(連結成分,以下c.cと書く)
- c.c内の任意の二点間を結ぶパスが存在する。
- 異なるc.c間にはいかなるパスも存在しない。
問題設定
入力
- 無向グラフG(V,E)
- 制限d
目標
c.cの数をcとしたとき、εd-additiveとは見積もった数yが、
をみたすこと。
文字の定義および、整理
をuに含まれるc.cのノードの数とする。
このとき、任意のc.c A ⊆ Vに関して
また、
とすると、
となる。
のときは0、のとき、
これより、シグマをとって
estimate_cc(u)
uからBFS(幅優先探索)を走らせる。
c.c全体を見つける
2/ε個の異なるノードを見つける
いずれかを満たしたらノードの数を出力する。
estimate_cc(u)の計算時間
各ノードから出るエッジの数はせいぜいdであるため。
approx_num_cc(G,ε)
で集合Uを選ぶ
各u∈Uに関して、estimate_cc(u)を用い、を求める。
を出力
approx_num_cc(G,ε)の計算時間
の証明
Chernoff boundにおいて
とおく、
であることに注意すると、
定義より、
よって、
ここで、
より
STA Chapter2 part1
Sublinear Time Algorithms Lecture2
やる内容
- Chernoff bound
- Estimating the number of connected components
- Estimating the weight of the minimum spanning tree
Chernoff bound
Let be m independent identically distributed random variables such that .
Then,
ってわかるか!と、
もとの資料がさくっとしか書いていなかったので、調べた事を。
Chernoff bound
確率論における確率の上限を与える不等式
前述の式はm個のサンプリングの点をとったとき、それが本当の平均とδ以上割合ずれる確率が指数関数で抑えられるという話。
確率の上限を与える不等式として、
- Marcovの不等式
- Chevyshefの不等式
- Chernoff bound
の三つの話をする。
Marcovの不等式
Xを非負の確率変数とする。任意のa>0に対し、
が成り立つ。
証明
a>0に対し、
より
平均をとると
Chebyshevの不等式
任意のa>0に対し
が成り立つ。
STA Chapter1 part3
Graph connectivity
入力: G = (V,E), n = |V| , m = |E| , bounded degree d*1 グラフはn×dの隣接行列で与えられる
目的: グラフが連結グラフか?
目的を以下のように変更する
Gが連結性にε-closeとは、Gを連結するのに高々εdn本の枝を足せばよいことを言う。
アルゴリズム
- O(1/εd)のノード(頂点)をランダムに選ぶ。
- 各ノードsに関して幅優先探索を行う
- をみたすノードが見つかる
- sがサイズの連結グラフ
- もし2.2が起きたらGをrejectして停止
- そうでなければaccept
もし、Gがε-farならばGはεdnの連結成分*3を持つ.
もし、Gがεdn未満のc.cをもつならばGはε-close
ということになる。
すなわち、εdn-1本足すとGは連結にできる。
このことから、
Gは少なくとも個でサイズは最大でもであるc.cをもつことになる。
もし、これが成り立たないと仮定すると
Gは少なくとも個で以上のサイズであるc.cをもつ
これは、
頂点数 >となり矛盾。
Gが連結ならば、rejeectが起きないので100% accept
Gがε-far-fromならば、
となる。
STA Chapter1 part2
Point-set diameter
distance matrix -> 距離行列について
配列iと配列jの距離を記述(iとjの距離がDij)
- >対称行列である(iとjの距離=jとiの距離)
以下を満たす
入力: m×m距離行列d
目的: 直径 を求める。
- を適当に取る
- d(x,y) が最大となるyを選ぶ
- z=d(x,y)として出力する。
行列全部を調べるとm×m回かかるが、これはm回調べるだけでよい。
すなわちですむ。
この際zの取りうる値は
である。
右の不等式は定義より明らか。左の不等式の証明は
となる。
Sequence monotonicity
入力: 要素の集合(半順序つき)
目的: 単調? すなわち、
この問題から以下のように設定を変更する。
入力: 要素の集合(半順序つき)
目的: 単調に近い(ε-close) すなわち、大きさ(1-ε)nの単調増加部分列がある。
例 n = 5 ε = 2/5 で 1 4 2 5 3という列、ここで1 2 3 は大きさ3の単調部分列
BPPのtester
- if が単調 then 3/4の確率で正解を出す。
- if が大きさ(1-ε)nの単調増加部分列がない。 then 3/4の確率で失敗を出す。
ここでいう3/4は本質的にあまり意味がなく、1/2より大きく1より小さければよい。
というのもテストを定数回繰り返し正解と失敗のうち、多いほうが問題に対する入力の答えとなるため。
単純なアイディア1
ランダムにi<jを満たすi,jをとりをみたすか調べる。
かかる。*1
理由:
という風に並んでいるときを考えると、これは失敗としたい。
しかし、でくくった部分の二点をとらない限り正解を出す。
とすると、長さのブロックが個存在する。
すなわち、同じブロック内の二点を選ぶ確率は
ゆえに以上必要。
※弱点は全体的な変化を見る確率が高いために局所的な変化に気付きにくい。
単純なアイディア2
ランダムにiを選んでをみたすか調べる。
これもあまりうまくいかない。
理由:
という風に並んでいるときを考えると、これは失敗としたい。
しかし、でくくった部分の境目をとらない限り正解を出す。
この部分をとる確率はc/n.このため、線形時間かかるためよろしくない。
※弱点は局所的な変化を見る確率が高いために全体的な変化がわからない。
これら二つをうまく組み合わせられないだろうか?というのが次のアイディア
と、その前に今後使う記号の説明。
'[n]'は1からnまでの整数の集合
''は集合Sの中からランダムに選んだものがx
STA Chapter1 part1
これまでの常識:
問題を解くのに入力すべてを見なければ話にならないとされていた。
しかし、一部を見るだけで判断できないか?(モチベーションとしては、生体情報やネットワークグラフのようにそれ自体が巨大な量を持つ問題を解きたい)
そんなことが出来るのか?ということだが、幾つか条件を簡単にすると実際に出来ることが知られている。
近似の細かさのεだとか次数の上限dなどがパラメータとしては入っている。
時間計算量に関するエントリ(http://d.hatena.ne.jp/nsasaki/20110426/1303807572)の中で、線形時間よりも早いものを扱うのが今回の話。とかも含む。
使う資料はTel Aviv University(イスラエル)の準線形アルゴリズム時間に関する授業ノート
Ronitt Rubinfeld, Sublinear time algorithms, Fall 2009
http://www.cs.tau.ac.il/~ronitt/COURSES/F09course/index.html
時間計算量に関して
おおざっぱに言うと、n の増大に対して計算量がどの割合で膨張するのかを示すもの。
計算式の中では一番強いものに引っ張られる。
↓は代表的なもの
名前 | 早さ | 概要 | 数式 | 例 |
factorial time | slower | nのn乗に比例した時間を費やす | 巡回セールスマン問題の総当たりによる解法 | |
指数関数時間 | slow | 定数のn乗に比例した時間を費やす | ルービックキューブの総当たりによる解法 | |
多項式時間 | fast | nの定数乗に比例した時間を費す | 比較ソート (バブル、挿入、選択ソート) | |
linearithmic time | faster | 多項式時間と線形時間の中間の時間を費す | 線形対数ソート*1 (クイックソート、ヒープソート、マージソート) | |
線形時間 | even faster | Nに直接比例した時間を費やす | 配列走査 | |
対数時間 | much faster | Nの対数に比例した時間を費やす | 2分探索 | |
定数時間 | fastest | 入力がどんなに大きくても固定の時間を費やす | インデックスによる配列要素へのアクセス |
参考:Time Complexity [C++ Reference] -- http://www.cppreference.com/wiki/complexity
たとえば、
という式があったとする。
n=1では500が圧倒的に大きい。
しかし、n = 1000 を代入すると、
*2
*3
と天文学的な数字の上のほうと比べて下のほうは誤差といってもいい程度に見える。
下三つはまだ、そんなに差が出ていない。が、
これらも
n=100000000000000000000000000000000000000000000000000000000000000000
くらいを代入すれば差が開く。
通信の基礎 part3
スペクトルと信号処理
パーセバルの定理
ここで、 を代入すると
フィルタ
- 低域通過フィルタ
- 高域通過フィルタ
- 帯域通過フィルタ
無歪伝送(歪み、ひずみ)
振幅が周波数に対して平坦であり、かつ位相が周波数に関して直線的に変化する。
とする
理想低域フィルタ
ある周波数範囲の信号のみをそのまま通過させ、それ以外の周波数成分を完全に減衰させるもの。
t<0で0でないインパルス応答を持つシステムであるため実現不可能である。
※sinc関数が出ている
窓関数
有限の時間範囲Tの中だけ0でない値をとる関数