.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

基礎理論

離散数学

連続でない、とびとびの対象をあつかう数学のこと

基数(XX進数

2-XX進数

  • 10進数をXXで因数分解した結果を逆に読む。
  • 4の二進数は、100なので...、
2 )4...0
  ---
2 )2...0
  ---
   1 

演算精度

  • 丸め誤差
  • 打ち切り誤差
  • 桁落ち
  • 情報落ち

集合

─────
A∪B∪C = 空集合

https://upload.wikimedia.org/wikipedia/commons/4/42/Inclusion-exclusion.svg

カルノー図と論理式

論理回路などにおいて論理式を簡単化するための表

 CD
AB
00011110
001001
010110
110110
100000
  • カルノー図の論理式化
    • 1が記入されている部分をグループ化
      • 隣り合ったチェックを四角形で囲む
      • 四隅の 4 ますがグループ化できる
    • グループ化した部分を論理積の論理式で表す
    • グループ内の共通項を抽出する。
    • 共通項の論理和の論理式にする。
  • グループA
                    _  _  _  _
    AB=00、CD=00 -> A・B・C・D
                    _  _     _
    AB=00、CD=10 -> A・B・C・D
                    _  _     _
                    A・B・   D
  • グループB
                    _     _
    AB=01、CD=01 -> A・B・C・D
                    _
    AB=01、CD=11 -> A・B・C・D
                          _
    AB=11、CD=01 -> A・B・C・D
    
    AB=11、CD=11 -> A・B・C・D
    
    AB=11、CD=01 ->    B・   D

応用数学

相関係数

  • 標本点が
    • 一直線上にある:線形(linear)
      • 右上がり(傾きが正):相関係数=+1
      • 右下がり(傾きが負):相関係数=-1
    • 一直線上にない:非線形(nonlinear)
      • 外れが多い程、相関係数は0に近くなる。
      • 相関係数=0なら無相関

M/M/1 待ち行列モデル

昨今queueが冗長化、多重化されているので、結構、実践向きでなかった。

  • 特徴
  • 分布
    • 要求の発生の分布はランダム
    • 平均到着率(所与の時間内での生起回数の確率)はポアソン分布
    • サービス時間(生起期間の確率)は指数分布
  • 待ち行列
    • 窓口は1つ。
    • 長さに制限はない。
  • 前提条件
    • 到着順に処理される。
    • 末尾に並び、途中で抜けない。

情報に関する理論

データ可逆圧縮方式

  • ハフマン符号(可変長二進符号)
    • よく出現する文字には短いビット列を、
    • あまり出現しない文字には長いビット列を

割り当てる

BNF

バッカス・ナウア記法

  • 文脈自由文法を定義するのに用いられるメタ言語
  • 現在はBNFを拡張したEBNF (Extended BNF) が一般的。
  • EBNFは正規表現を用いてより簡単に記述でき、
    ASN.1、SQL、XMLなどの構文定義にも利用されている。

有限オートマトン

状態遷移表

現在状態→
入力 ↓
状態A状態B状態C
入力X状態...へ遷移状態...へ遷移状態...へ遷移
入力Y状態...へ遷移状態...へ遷移状態...へ遷移
入力Z状態...へ遷移状態...へ遷移状態...へ遷移

通信に関する理論

誤り検出/訂正

  • 誤り検出/訂正
    • 誤り検出のための符号: 誤り検出符号 (EDC, error detecting code)
      • パリティ・ビットは、最も単純な誤り検出符号
      • 奇数個のビットの誤りしか検出できない。
    • 訂正のための符号: 誤り訂正符号 (ECC, error correcting code)
      • 垂直水平パリティ符号では、1ビットの誤りを検出可能。
      • ハミング符号は、より効率的だが訂正力は高くない。
  • 奇数(odd) or 偶数(even)パリティ
    • 奇数(odd)パリティ
      • データとパリティの1の数を数えて奇数になるようにする。
      • ビット列中に含まれる「1」の個数が奇数個なら「0」を設定する。
    • 偶数(even)パリティ
      • データとパリティの1の数を数えて偶数になるようにする。
      • ビット列中に含まれる「1」の個数が偶数個なら「0」を設定する。

計測/制御に関する理論

センサ

  • ジャイロは角速度センサ。
  • 加速度センサは反力センサ。

アルゴリズム・プログラミング

データ構造

ポーランド記法

  • 中置記法
    1 + 2
  • ポーランド記法
    +12
  • 逆ポーランド記法
    12+
  • 逆ポーランド記法とスタックを使用した計算の例
    • 中置記法
      (3+4) * (1-2)
    • 逆ポーランド記法
      順にpushしていき演算子で項をpopする。
      この際、項はpop順ではなくpush順に並べて計算する。
      34+12-*
      • 3
      • 3, 4
      • 7
      • 7, 1
      • 7, 1, 2
      • 7, -1
      • -7

木構造の走査法

  • 幅優先探索
  • 深さ優先探索
  • 前順・先行順・前置順・行きがけ順
    2分探索木のコピーを作る。構文木からポーランド記法の表現を得る。
    • 根ノードを調査する。
    • もしあれば、左の部分木を前順走査する。
    • もしあれば、右の部分木を前順走査する。
  • 間順・中間順・通りがけ順
    2分探索木では走査順がソートされた順序になる(多分木では定義されない)。
    • もしあれば、左の部分木を間順走査する。
    • 根ノードを調査する。
    • もしあれば、右の部分木を間順走査する。
  • 後順・後行順・後置順・帰りがけ順
    • もしあれば、左の部分木を後順走査する。
    • もしあれば、右の部分木を後順走査する。
    • 根ノードを調査する。

アルゴリズム

フローチャート

  • アルゴリズムを問われた場合、
    適当な値を当てハメて計算して結果を確認してみる。
  • ル-プには、終了条件を記載する。
    • 前判定型ループ
    • 後判定型ループ

ハッシュ

連想配列、連想リスト、連想コンテナ、辞書、ディクショナリ、ハッシュ、マップ

  • alphabetのASCIIコードを使用
  • ハッシュ関数は10進数の1の桁
  • 衝突する組み合わせは?
  • AのASCIIコードは65だが、
    A=1で計算しても結果は同じになる。

探索手法

  • リスト探索
  • 線形探索
    • 先頭から順に比較を行い、それが見つかれば終了する。
    • 使用頻度順に並べれば、平均検索速度が向上する。
  • 二分探索 = 2分探索木
    • 中央の値を見て、検索したい値との大小関係を用い、
    • 検索したい値が中央の値の右にあるか、左にあるかを判断し、
      片側には存在しないことを確かめながら検索していく。
  • 内挿探索
    • 二分探索を改良した探索アルゴリズム。
    • 目的のデータは恐らくこの辺りに集まっているだろうと予測して絞り込んで探索。
  • 文字列探索
    • クヌース-モリス-プラット法
    • ボイヤー-ムーア文字列検索アルゴリズム
    • エイホ-コラシック法
    • ラビン-カープ文字列検索アルゴリズム
    • Bitapアルゴリズム
    • 全文検索
  • グラフ探索固有
    • 最短経路問題
      • ダイクストラ法
      • ベルマン-フォード法
    • 最小全域木
      • プリム法
      • クラスカル法
    • 最大フロー問題・最小カット問題
      • フォード・ファルカーソンのアルゴリズム
      • エドモンズ・カープのアルゴリズム
    • 巡回セールスマン問題
      • 最近傍法
    • 連結度
      • 最大隣接順序
      • 最小次数順序

比較ソート

データの集合を一定の規則に従って並べる

  • 安定ソート、内部ソートと外部ソート
  • 安定ソート
    同等なデータのソート前の順序が、ソート後も保存されるもの
    • バブルソート
    • 挿入ソート
    • マージソート
  • 内部ソートと外部ソート
    • 内部ソート
      ソートされるデータの格納領域を変更して処理を進めていくIn-placeのソート
    • 外部ソート
      ソートされるデータの格納領域以外に O(n) 以上の一時的な記憶領域が必要であるソート
  • 比較ソート
    個々の項目を比較演算で大小判定することを基本とするソート
  • バブルソート(安定ソート、内部ソート)
    • 全ての要素に関して、隣接する要素と比較し順序が逆であれば入れ替える。
    • これを要素数-1回繰り返すことでソートを行なう。
    • 入れ替えが起こらなくなった時点で中断することができる。
  • 挿入ソート(安定ソート、内部ソート)
    • バブルソートより速い。
    • 整列してある配列に追加要素を適切な場所に挿入する。
    • ソート済みの状態の配列へのソート処理は非常に早い。
  • クイックソート(内部ソート)
    • 適当な数(ピボットという中央値が望ましい)を選択
    • ピボットより小さい数を前方、大きい数を後方に移動(分割)
    • 最も高速だがデータの並びや数によって大きく異なる。
  • シェルソート(内部ソート)
    • バブルソート、挿入ソートの一般化
    • 間隔の離れた要素の組に対してソートを行い、
      比較する要素間の間隔を小さくしながらソートを繰り返す。
    • 実行時間は、比較時に選ぶ間隔によって大きく異なる。
  • ヒープソート(内部ソート)
    • 二分木データ構造の要素番号の規則からポインタ等の制御用データが不要
    • 未整列リストの先頭から、データを入替て、二分ヒープ木を構築する。
    • リスト先頭の二分ヒープ木からデータを取り出し、整列リストをリスト後方から作成。
  • マージソート(安定ソート)
    • 大きい列を多数の列に分割し、整列しながらマージする(マージは並列化できる)。
    • ボトムアップの分割統治法により、マージ後のリストも整列されている。

再帰

ローカル変数をスタック的に利用する。

近似計算

実際の値を吸うパターン入力して展開し、
展開式と近似式から条件を考察。

参考


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-03-17 (日) 22:38:08 (2d)