アルゴリズム
概要 †
- アルゴリズムを構築するアルゴリズムとして
- ランダムなアルゴリズムを考える
- 矛盾しないかを実験する。矛盾しなければ終了する。
- (1)に戻る。
- を走らせているのがマズそう
数学的帰納法的思考 †
- プログラミングは全て数学的帰納法
- [0, i)の転倒数がわかってるとするじゃん?からスタートすると一瞬で正しいアルゴリズムを演繹できる
必要条件と十分条件 †
- 全くわからないタイプの問題には、しばしば、必要条件を列挙していたら実は必要十分条件だった、というタイプがある
- 必要条件が足りない場合は、漏れているケースを実験的に探索する必要がある。
- 必要条件や十分を列挙し、ダメなケースを実験的に探すと見えてくるパターンがある
- 例
状態の追加 †
証明 †
証明の練習問題 †
- 証明の訓練をするしか無い
- Topcoder SRM 697 D1E
- ARC 53C
- 上がって下がってする奴
- あの貪欲の構成は面白かった気がする
- AGC 03B
- AGC29 B
- 辺eをマッチングに使わないのならば、辺eを取ることでマッチング数を1あげることができる
- 次数>1を使うとすると、次数>1を使う他のマッチングe=(次数>1, v)があるが、マッチングとして使えなくなる朝展が次数>1, 次数=1, vの三点となってしまい、真に悪くなる
- 任意の頂点uについて、u-v とマッチするよりも良いマッチングの仕方があるとしたら、 a-u v-b みたいになってるはずで、対偶?を考えると、uがどれともマッチしない場合よりも何かとマッチしたほうが良い。
- u-v とマッチするよりも良いマッチングの仕方Xがあるとします。Xにおいてuもvも使わないなら、u-v使ったほうがよいです。Xにおいて u使わない & v-b よりも u-v, bフリー のほうが良いです。Xにおいて v使わない & a-u のときも同じです。
|