離散数学

Size: px
Start display at page:

Download "離散数学"

Transcription

1 離散数学 最短経路問題 落合秀也

2 その前に 前回の話 深さ優先探索アルゴリズム 開始点 から深さ優先探索を行うアルゴリズム S.pu() Wl S not mpty v := S.pop() I F[v] = l Tn, F[v] := tru For no u n A[v] S.pu(u) EnFor EnI EnWl (*) 厳密には初期化処理が必要だが省略している k 時間計算量 :O(n+m)

3 その前に 前回の話 深さ優先探索アルゴリズム 再帰呼び出しによる方法 深さ優先探索を行うアルゴリズム ( 再帰呼び出し版 ) Funton DFS(v) I F[v] = l Tn, F[v] := tru For no u n A[v] DFS(u) EnFor EnI EnFunton 頂点 から探索を行う場合 : DFS() を実行すれば良い 再帰呼び出しは 実際には 裏ではスタックを使って実行される

4 最短経路問題を考える ラベル付 ( 重み付 ) グラフ G=(V,E) が与えられたとき 頂点 から頂点 t への最短経路 -t を求めたい 辺のラベルの意味 : 地点間の道のり 地点間の移動時間 地点間の移動に要する燃料の量 状態の遷移で失う資金 最小コストでの移動経路を発見したい 9 = = = (*) 実際はコスト の道が存在する t

5 最短経路問題の解法 ダイクストラ法 すべての辺の重みが非負の場合に適用可能 貪欲法 (Gry Alortm) の一種 ベルマン フォード法 辺の重みに負があっても良いケースがある ( 有向グラフで 有向閉路の和が負でない場合 ) 動的計画法 (Dynm Prormmn) の一種 t コストが 資金の支出の場合 マイナスは 収入を意味する

6 ダイクストラ法 (Dktr Alortm) 99 年 : Er Dktr によって考案された H 考え方 -- G(V,E) に対して 開始点 V から各頂点への最短経路を求める問題 いま すでに部分 H に関して 最短経路が導出されているとする からの距離が判明している H と接する v V-H に対し からの距離を考える その距離の最小値を与える v を H に追加する 赤字 : 判明している からの最短距離

7 ダイクストラ法 ( もう少し正確な定義 ) 用語の定義 : グラフ G(V,E) において u, v V, =(u,v) E とする 辺 =(u,v) の長さを l あるいは l (u,v) で表すとする 開始点を とする (u) で から u までの最短距離を表すとする prv(v) で から v への最短経路における v の直前の頂点を表す 挙動の定義 : V の部分集合 H を以下のように作成する 初期状態 : H = {}, ()=, (v)= (v ), prv(v)=null (v V) とする u H で辺 =(u, v) でつながっている v ( V-H) を考え (v) = mn =(u,v):u H { (u) + l } を計算する v V-H において 上記をさらに最小化する v を選定し その v を H に追加し その距離を (v) とおき その時の u を用いて prv(v)=u とす る H l (u,v) (u) (v) = mn {(u)+l } (u) (v) = mn {(u)+l } l (u,v) (v) または (v) のどちらか片方 を決定する

8 練習 以下のグラフに対し ダイクストラ法により 頂点 から各頂点への最短経路とその距離を求めよ

9 解答 : 頂点 最短経路 距離 9

10 ダイクストラ法の実現 : アルゴリズムの設計素直に上述の定義に従って考えると 準備するもの から u までの最小距離を格納する配列 : [u] 初期条件 : []=, (u に対して ) [u]= から v への最短経路で v の直前を格納する配列 : prv[v] 初期条件 : prv[v]=null 辺の長さを与える関数 : lnt(u,v) 最短経路が確定した頂点のリスト : H 初期条件 : H = {} (v) = mn =(u,v):u H { (u) + l } 方針 [v] を最小にする u H, v V-H の辺 (u,v) を見つける 見つかったら prv[v]=u, [v]= [v] とおき v を H に追加する 上記を H=V になるまで繰り返す

11 ダイクストラ法の実現 : アルゴリズムの設計工夫をしてみよう 最短経路が確定した頂点のリスト (H) を考え からの距離 (v) が最小になる v ( V-H) を H に追加していた ( そして これを H=V になるまで繰り返した ) 最短経路が確定していない頂点のリスト (Q) を考え からの距離 (v) を最小にする v( Q) を Q から削除する ( そして これを Q が空になるまで繰り返す ) 各 v( Q) において (v) の候補を常に計算できていれば Q から削除される段階で (v) が最小であれば そこから新たに (v) を計算をする必要はない

12 ダイクストラ法の実現 : 二つのアプローチ H Q その時点の周辺について計算最小値を与える頂点を取り込む最小値を与える頂点を除外する除外された周辺の頂点までの距離を計算する

13 練習 もう一つのダイキストラ法 (Q の中から最小値を与える頂点を取り除く方法 ) で 以下の頂点 から各頂点までの最短経路を求めよ

14 . []= と置く Q からは が取り出される に隣接する, の距離が計算される. Q から Q の中で最小の (u)= を与える が取り出される に隣接する, の距離が計算される

15 . Q から Q の中で最小の (u)= を与える が取り出される に隣接する, の距離が計算される. Q から Q の中で最小の (u)= を与える が取り出される に隣接する, の距離が計算される

16 . Q から Q の中で最小の (u)= を与える が取り出される に隣接する の距離が計算される. Q から Q の中で最小の (u)= を与える が取り出される に隣接する,, の距離が計算される

17 . Q から Q の中で最小の (u)= を与える が取り出される に隣接する の距離が計算される. Q から Q の中で最小の (u)= を与える が取り出される に隣接する の距離が計算される 9

18 9. Q から Q の中で最小の (u)=9 を与える が取り出される に隣接する の距離が計算される 9. Q から Q の中で最小の (u)= を与える が取り出される に隣接する の距離が計算される 9

19 . Q から Q の中で最小の (u)= を与える が取り出される に隣接する頂点はなし (Q の中で ). Q が空なので 終了 9 頂点 最短経路 距離 9 9

20 装置 Q Q の持つべきインタフェースを考察する 初期化時 : Q に V のすべてを投入する (v) : v V [u] 参照 Empty()? 実行時 : Q が空かどうかを判定する nky() Q から (u) を最小とする u を取り出す Q の内部を で整理する (Q がヒープの場合 ) Q

21 ダイクストラのアルゴリズム For v V [v] :=, prv[v] :=null Q.(v) EnFor [] := Wl Q not mpty u := Q.xtrtMn() For v n A[u] I [v] > [u] + lnt(u, v) Tn, [v] := [u] + lnt(u, v) prv[v]=u ( Q.nKy() -- t mplmntton o Q p ) EnI EnFor EnWl

22 ダイクストラ法 : 計算量の考察 Wl 文の内部は n 回実行される For 文の内部は nm 回実行される 実装によっては O(nm) となりえる Q にリストや配列を使う場合 Q.xtrtMn() に O(n) の時間を要する Q.xtrtMn() は n 回呼び出される O(n ) Wl Q not mpty u := Q.xtrtMn() For v n A[u] I [v] > [u] + lnt(u, v) Tn, [v] := [u] + lnt(u, v) prv[v]=u ( Q.nKy() ) EnI EnFor EnWl Q に 分ヒープを使う場合 Q.xtrtMn() に O(lo n) の時間を要する Q.xtrtMn() の呼び出しは n 回ある O(n lo n) [v] の更新に伴うヒープの組換え処理に O(lo n) の時間を要する [v] の更新は m 回発生する O(m lo n) O( (n+m) lo n )

23 装置 Q の実装 : リストを使った場合 Q.xtrtMn() ポインタ p を用意リストのすべての要素に対して 順に(u) を計算より小さい(u) が発見されたら p に u へのポインタを設定するすべての要素を確認したら p の先を リストから除外し その値を返す 開始 (u) = p

24 装置 Q の実装 : ヒープを使った場合 分ヒープ 親 子の関係になるように構成された 分木 根は最小となる Q.xtrtMn() 根を取り出し 再構成を行う 計算量 O(lo n) []= Q.nKy() []= の変化に合わせて再構成を行う 計算量 O(lo n) []= []= []= []=

25 ベルマン フォード法 Bllmn For Alortm 基本的な考え方 開始点 から への距離を とする 各頂点の開始点 からの距離は 辺の重みを加算しながら から拡散するように伝搬させる 各頂点では距離の最小値を採用する 上記を 頂点数 - 回行う

26 ベルマン フォード法 回目から + 回目への計算 ( 漸化式 ) を考える ここで は 拡散量 ( から伝搬した辺の数 ) に相当する 回目 ( 個の辺の伝搬を考えたとき ) における 頂点 から頂点 v までの最短距離を OPT(,v) とする このとき 以下が言える OPT(+, v) = mn u nr(v) {OPT(,u)+C uv } (*) ここで nr(v) は v の近隣頂点 ( 自分自身も含む ) の集合とするまた C uv は辺 (u,v) のコストとし 便宜上 C vv = とする 初期条件 (= のとき ) OPT(,)=, OPT(,v)= (v V, v )

27 OPT(+, v) = mn u nr(v) {OPT(,u)+C uv } の意味 OPT(,) OPT(,) C v C v v C v OPT(,v) OPT(,v) OPT(,)+C v OPT(,)+C v OPT(,)+C v OPT(,) C vv (=) OPT(+,v) は 上記で最小のものとする

28 練習 以下のグラフに対し ベルマンフォード法により 頂点 から各頂点までの最短距離を求めよ (*) ダイクストラ法との違いも考えてみよ

29 9 回目 回目

30 回目 回目

31 回目 回目

32 回目 回目 9

33 回目 9 回目 9

34 回目以降頂点最短距離 9 9

35 ベルマンフォードのアルゴリズム M[]= M[v]=, prv[v]=null (v V, v ) For =,, n- // n=ount(v) For =(u, v) n E I M[v] > M[u]+C M[v]=M[u]+C prv[v]=u EnI EnFor EnFor 時間計算量 : O(mn)

36 ベルマンフォード法の分散化 グラフ G(V,E) において 各頂点は 辺で接続するもう片方の頂点と通信を行うものとする u OPT(u) + Cuv このとき 各頂点 u から 頂点 v ( nr(u)) に向けて OPT(u)+Cuv を発信する 受信側の頂点 v では 受信した値の中 ( 他者からのものも含む ) で 最小のものを OPT(v) として選ぶ 開始点 の OPT() は に固定する という処理を行うと ベルマンフォード法を分散的に実装できる v

37 ベルマンフォード法の分散化 : 各頂点の動作 v v u u OPT(u) + C uv u OPT(u) OPT(u) + C uv v I OPT(v) > 受信結果 OPT(v) := 受信結果 EnI v u 頂点 u からの送信 ( 定期的に行う ) 頂点 v での受信と処理

38

39 今後の予定 月 日 : 休講 ( レポートで代替 ) 月 日 : 最小全域木 月 日 : 最大流問題 9

離散数学

離散数学 離散数学 最小全域木と最大流問題 落合秀也 今日の内容 最小全域木 プリムのアルゴリズム 最大流問題 フォード ファルカーソンのアルゴリズム 今日の内容 最小全域木 プリムのアルゴリズム 最大流問題 フォード ファルカーソンのアルゴリズム 最小全域木を考える Minimum Spanning Tree Problem ラベル付 ( 重み付 ) グラフ G(V, E) が与えられたとき ラベルの和が最小となる全域木を作りたい

More information

Microsoft PowerPoint - ad11-09.pptx

Microsoft PowerPoint - ad11-09.pptx 無向グラフと有向グラフ 無向グラフ G=(V, E) 頂点集合 V 頂点の対を表す枝の集合 E e=(u,v) 頂点 u, v は枝 e の端点 f c 0 a 1 e b d 有向グラフ G=(V, E) 頂点集合 V 頂点の順序対を表す枝の集合 E e=(u,v) 頂点 uは枝 eの始点頂点 vは枝 eの終点 f c 0 a 1 e b d グラフのデータ構造 グラフ G=(V, E) を表現するデータ構造

More information

Microsoft PowerPoint - DA2_2017.pptx

Microsoft PowerPoint - DA2_2017.pptx // データ構造とアルゴリズム IⅠ 第 回単一始点最短路 (II)/ 全点対最短路 トポロジカル ソート順による緩和 トポロジカル ソート順に緩和 閉路のない有向グラフ限定 閉路がないならトポロジカル ソート順に緩和するのがベルマン フォードより速い Θ(V + E) 方針 グラフをトポロジカル ソートして頂点に線形順序を与える ソート順に頂点を選び, その頂点の出辺を緩和する 各頂点は一回だけ選択される

More information

Microsoft PowerPoint - mp13-07.pptx

Microsoft PowerPoint - mp13-07.pptx 数理計画法 ( 数理最適化 ) 第 7 回 ネットワーク最適化 最大流問題と増加路アルゴリズム 担当 : 塩浦昭義 ( 情報科学研究科准教授 ) [email protected] ネットワーク最適化問題 ( 無向, 有向 ) グラフ 頂点 (verex, 接点, 点 ) が枝 (edge, 辺, 線 ) で結ばれたもの ネットワーク 頂点や枝に数値データ ( 距離, コストなど ) が付加されたもの

More information

Microsoft PowerPoint - DA2_2017.pptx

Microsoft PowerPoint - DA2_2017.pptx 1// 小テスト内容 データ構造とアルゴリズム IⅠ 第 回単一始点最短路 (I) 1 1 第 章の構成. 単一始点最短路問題 単一始点最短路問題とは 単一始点最短路問題の考え方 単一始点最短路問題を解くつのアルゴリズム ベルマン フォードのアルゴリズム トポロジカル ソートによる解法 ダイクストラのアルゴリズム 1 1 単一始点最短路問題とは 単一始点最短路問題とは 前提 : 重み付き有向グラフ

More information

Microsoft PowerPoint - DA2_2018.pptx

Microsoft PowerPoint - DA2_2018.pptx 1//1 データ構造とアルゴリズム IⅠ 第 回単一始点最短路 (I). 単一始点最短路問題 第 章の構成 単一始点最短路問題とは 単一始点最短路問題の考え方 単一始点最短路問題を解くつのアルゴリズム ベルマン フォードのアルゴリズム トポロジカル ソートによる解法 ダイクストラのアルゴリズム 単一始点最短路問題とは 単一始点最短路問題とは 前提 : 重み付き有向グラフ 特定の開始頂点 から任意の頂点

More information

Microsoft PowerPoint - mp11-06.pptx

Microsoft PowerPoint - mp11-06.pptx 数理計画法第 6 回 塩浦昭義情報科学研究科准教授 [email protected] http://www.dais.is.tohoku.ac.jp/~shioura/teaching 第 5 章組合せ計画 5.2 分枝限定法 組合せ計画問題 組合せ計画問題とは : 有限個の もの の組合せの中から, 目的関数を最小または最大にする組合せを見つける問題 例 1: 整数計画問題全般

More information

Microsoft PowerPoint - 06graph3.ppt [互換モード]

Microsoft PowerPoint - 06graph3.ppt [互換モード] I118 グラフとオートマトン理論 Graphs and Automata 担当 : 上原隆平 (Ryuhei UEHARA) [email protected] http://www.jaist.ac.jp/~uehara/ 1/20 6.14 グラフにおける探索木 (Search Tree in a Graph) グラフG=(V,E) における探索アルゴリズム : 1. Q:={v { 0 }

More information

Microsoft PowerPoint - H20第10回最短経路問題-掲示用.ppt

Microsoft PowerPoint - H20第10回最短経路問題-掲示用.ppt 最短経路問題とは プログラミング言語 I 第 0 回 から終点へ行く経路が複数通りある場合に 最も短い経路を見つける問題 経路の短さの決め方によって様々な応用 最短経路問題 埼玉大学工学部電気電子システム工学科伊藤和人 最短経路問題の応用例 カーナビゲーション 現在地から目的地まで最短時間のルート 経路 = 道路 交差点において走る道路を変更してもよい 経路の短さ = 所要時間の短さ 鉄道乗り換え案内

More information

Microsoft PowerPoint - H20第10回最短経路問題-掲示用.ppt

Microsoft PowerPoint - H20第10回最短経路問題-掲示用.ppt プログラミング言語 I 第 10 回 最短経路問題 埼玉大学工学部電気電子システム工学科伊藤和人 最短経路問題とは 始点から終点へ行く経路が複数通りある場合に 最も短い経路を見つける問題 経路の短さの決め方によって様々な応用 最短経路問題の応用例 カーナビゲーション 現在地から目的地まで最短時間のルート 経路 = 道路 交差点において走る道路を変更してもよい 経路の短さ = 所要時間の短さ 鉄道乗り換え案内

More information

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき

More information

alg2015-6r3.ppt

alg2015-6r3.ppt 1 アルゴリズムとデータ 構造 第 6 回探索のためのデータ構造 (1) 補稿 : 木の巡回 ( なぞり ) 2 木の巡回 ( 第 5 回探索 (1) のスライド ) 木の巡回 * (traverse) とは 木のすべての節点を組織だった方法で訪問すること 深さ優先探索 (depth-first search) による木の巡回 *) 木の なぞり ともいう 2 3 1 3 4 1 4 5 7 10

More information

プログラム言語及び演習Ⅲ

プログラム言語及び演習Ⅲ 平成 28 年度後期データ構造とアルゴリズム期末テスト 各問題中のアルゴリズムを表すプログラムは, 変数の宣言が省略されているなど, 完全なものではありませんが, 適宜, 常識的な解釈をしてください. 疑問があれば, 挙手をして質問してください. 時間計算量をオーダ記法で表せという問題では, 入力サイズ n を無限大に近づけた場合の漸近的な時間計算量を表せということだと考えてください. 問題 1 入力サイズが

More information

人工知能入門

人工知能入門 藤田悟 黄潤和 探索とは 探索問題 探索解の性質 探索空間の構造 探索木 探索グラフ 探索順序 深さ優先探索 幅優先探索 探索プログラムの作成 バックトラック 深さ優先探索 幅優先探索 n 個の ueen を n n のマスの中に 縦横斜めに重ならないように配置する 簡単化のために 4-ueen を考える 正解 全状態の探索プログラム 全ての最終状態を生成した後に 最終状態が解であるかどうかを判定する

More information

Taro-スタック(公開版).jtd

Taro-スタック(公開版).jtd 0. 目次 1. 1. 1 配列によるの実現 1. 2 再帰的なデータ構造によるの実現 1. 3 地図情報処理 1. 4 問題 問題 1 グラフ探索問題 - 1 - 1. は データの出し入れが一カ所で行われ 操作は追加と削除ができるデータ構造をいう 出入口 追加 削除 操作 最初 111 追加 111 222 追加 111 222 333 追加 111 222 333 444 追加 111 222

More information

Microsoft PowerPoint - DA2_2018.pptx

Microsoft PowerPoint - DA2_2018.pptx データ構造とアルゴリズム IⅠ 第 7 回幅優先 / 深さ優先探索 / トポロジカルソート. 基本的グラフアルゴリズム 無向グラフ 個の頂点と7 本の辺からなる無向グラフ 隣接リスト 各頂点に関して, 隣接する ( 直接, 辺で結ばれた ) 頂点集合をリストで表現 無向グラフ G=(V,E),V は頂点集合,E は辺集合.E の要素は頂点のペア {u,} によって表される.{u, } と {, u}

More information

040402.ユニットテスト

040402.ユニットテスト 2. ユニットテスト ユニットテスト ( 単体テスト ) ユニットテストとはユニットテストはプログラムの最小単位であるモジュールの品質をテストすることであり その目的は結合テスト前にモジュール内のエラーを発見することである テストは機能テストと構造テストの2つの観点から行う モジュールはプログラムを構成する要素であるから 単体では動作しない ドライバとスタブというテスト支援ツールを使用してテストを行う

More information

模擬試験問題(第1章~第3章)

模擬試験問題(第1章~第3章) 基本情報技術者試験の練習問題 - 第 8 回 この問題は平成 19 年度秋期の問題から抜粋しています 問 1 次のプログラムの説明及びプログラムを読んで, 設問 1,2 に答えよ プログラムの説明 スタックを使って, 実数値を 10 進数字列 ( 文字列 ) に変換する副プログラム FloatFormat である (1) FloatFormat は, 実数 Float の値を 10 進数字列に変換し,

More information

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること C プログラミング演習 1( 再 ) 4 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順

More information

オートマトンと言語

オートマトンと言語 オートマトンと言語 4 回目 5 月 2 日 ( 水 ) 3 章 ( グラフ ) の続き 授業資料 http://ir.cs.yamanashi.ac.jp/~ysuzuki/public/automaton/ 授業の予定 ( 中間試験まで ) 回数月日 内容 4 月 日オートマトンとは, オリエンテーション 2 4 月 8 日 2 章 ( 数式の記法, スタック,BNF) 3 4 月 25 日 2

More information

Microsoft PowerPoint - algo ppt [互換モード]

Microsoft PowerPoint - algo ppt [互換モード] ( 復習 ) アルゴリズムとは アルゴリズム概論 - 探索 () - アルゴリズム 問題を解くための曖昧さのない手順 与えられた問題を解くための機械的操作からなる有限の手続き 機械的操作 : 単純な演算, 代入, 比較など 安本慶一 yasumoto[at]is.naist.jp プログラムとの違い プログラムはアルゴリズムをプログラミング言語で表現したもの アルゴリズムは自然言語でも, プログラミング言語でも表現できる

More information

Microsoft PowerPoint - 13.ppt [互換モード]

Microsoft PowerPoint - 13.ppt [互換モード] 13. 近似アルゴリズム 1 13.1 近似アルゴリズムの種類 NP 困難な問題に対しては多項式時間で最適解を求めることは困難であるので 最適解に近い近似解を求めるアルゴリズムが用いられることがある このように 必ずしも厳密解を求めないアルゴリズムは 大きく分けて 2 つの範疇に分けられる 2 ヒューリスティックと近似アルゴリズム ヒュ- リスティクス ( 発見的解法 経験的解法 ) 遺伝的アルゴリズム

More information

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1 4. ソート ( 教科書 p.205-p.273) 整列すなわちソートは アプリケーションを作成する際には良く使われる基本的な操作であり 今までに数多くのソートのアルゴリズムが考えられてきた 今回はこれらソートのアルゴリズムについて学習していく ソートとはソートとは与えられたデータの集合をキーとなる項目の値の大小関係に基づき 一定の順序で並べ替える操作である ソートには図 1 に示すように キーの値の小さいデータを先頭に並べる

More information

PowerPoint Template

PowerPoint Template プログラミング演習 Ⅲ Linked List P. Ravindra S. De Silva e-mail: [email protected], Room F-413 URL: www.icd.cs.tut.ac.jp/~ravi/prog3/index_j.html 連結リストとは? 一つひとつの要素がその前後の要素との参照関係をもつデータ構造 A B C D 連結リストを使用する利点 - 通常の配列はサイズが固定されている

More information

2014年度 東京大・文系数学

2014年度 東京大・文系数学 014 東京大学 ( 文系 ) 前期日程問題 1 解答解説のページへ以下の問いに答えよ (1) t を実数の定数とする 実数全体を定義域とする関数 f ( x ) を f ( x) =- x + 8tx- 1x+ t - 17t + 9t-18 と定める このとき, 関数 f ( x ) の最大値を t を用いて表せ () (1) の 関数 f ( x ) の最大値 を g( t ) とする t が

More information

離散数学

離散数学 離散数学 ブール代数 落合秀也 前回の復習 : 命題計算 キーワード 文 複合文 結合子 命題 恒真 矛盾 論理同値 条件文 重条件文 論法 論理含意 記号 P(p,q,r, ),,,,,,, 2 今日のテーマ : ブール代数 ブール代数 ブール代数と束 そして 順序 加法標準形とカルノー図 3 今日のテーマ : ブール代数 ブール代数 ブール代数と束 そして 順序 加法標準形とカルノー図 4 ブール代数の法則

More information

グラフの探索 JAVA での実装

グラフの探索 JAVA での実装 グラフの探索 JAVA での実装 二つの探索手法 深さ優先探索 :DFS (Depth-First Search) 幅優先探索 :BFS (Breadth-First Search) 共通部分 元のグラフを指定して 極大木を得る 探索アルゴリズムの利用の観点から 利用する側からみると 取り替えられる部品 どちらの方法が良いかはグラフに依存 操作性が同じでなければ 共通のクラスの派生で作ると便利 共通化を考える

More information

計算幾何学入門 Introduction to Computational Geometry

計算幾何学入門 Introduction to  Computational Geometry テーマ 6: ボロノイ図とデローネイ 三角形分割 ボロノイ図, デローネイ三角形分割 ボロノイ図とは 平面上に多数の点が与えられたとき, 平面をどの点に最も近いかという関係で分割したものをボロノイ図 (Voronoi diagram) という. 2 点だけの場合 2 点の垂直 2 等分線による分割 3 点の場合 3 点で決まる三角形の外接円の中心から各辺に引いた垂直線による分割線 2 点からの等距離線

More information

Taro-2分探索木Ⅰ(公開版).jtd

Taro-2分探索木Ⅰ(公開版).jtd 2 分探索木 Ⅰ 0. 目次 1. 2 分探索木とは 2. 2 分探索木の作成 3. 2 分探索木の走査 3. 1 前走査 3. 2 中走査 3. 3 問題 問題 1 問題 2 後走査 4. 2 分探索木の表示 - 1 - 1. 2 分探索木とは 木はいくつかの節点と節点同士を結ぶ辺から構成される 2 つの節点 u,v が直接辺で結ばれているとき 一方を親節点 他方を子節点という ある節点の親節点は高々

More information

学習指導要領

学習指導要領 (1) 数と式 ア数と集合 ( ア ) 実数数を実数まで拡張する意義を理解し 簡単な無理数の四則計算をすること 絶対値の意味を理解し適切な処理することができる 例題 1-3 の絶対値をはずせ 展開公式 ( a + b ) ( a - b ) = a 2 - b 2 を利用して根号を含む分数の分母を有理化することができる 例題 5 5 + 2 の分母を有理化せよ 実数の整数部分と小数部分の表し方を理解している

More information

Taro-再帰関数Ⅲ(公開版).jtd

Taro-再帰関数Ⅲ(公開版).jtd 0. 目次 1 1. ソート 1 1. 1 挿入ソート 1 1. 2 クイックソート 1 1. 3 マージソート - 1 - 1 1. ソート 1 1. 1 挿入ソート 挿入ソートを再帰関数 isort を用いて書く 整列しているデータ (a[1] から a[n-1] まで ) に a[n] を挿入する操作を繰り返す 再帰的定義 isort(a[1],,a[n]) = insert(isort(a[1],,a[n-1]),a[n])

More information

文法と言語 ー文脈自由文法とLR構文解析2ー

文法と言語 ー文脈自由文法とLR構文解析2ー 文法と言語ー文脈自由文法とLR 構文解析 2 ー 和田俊和資料保存場所 http://vrl.sys.wakayama-u.ac.jp/~twada/syspro/ 前回までの復習 最右導出と上昇型構文解析 最右導出を前提とした場合, 上昇型の構文解析がしばしば用いられる. 上昇型構文解析では生成規則の右辺にマッチする部分を見つけ, それを左辺の非終端記号に置き換える 還元 (reduction)

More information

Microsoft PowerPoint - 09re.ppt [互換モード]

Microsoft PowerPoint - 09re.ppt [互換モード] 3.1. 正則表現 3. 正則表現 : 正則表現 ( または正規表現 ) とは 文字列の集合 (= 言語 ) を有限個の記号列で表現する方法の 1 つ 例 : (01)* 01 を繰り返す文字列 つまり 0(0+1)* 0 の後に 0 か 1 が繰り返す文字列 (01)* = {,01,0101,010101,01010101, } 0(0+1)*={0,00,01,000,001,010,011,0000,

More information

プログラミングI第10回

プログラミングI第10回 プログラミング 1 第 10 回 構造体 (3) 応用 リスト操作 この資料にあるサンプルプログラムは /home/course/prog1/public_html/2007/hw/lec/sources/ 下に置いてありますから 各自自分のディレクトリにコピーして コンパイル 実行してみてください Prog1 2007 Lec 101 Programming1 Group 19992007 データ構造

More information

目次 ペトリネットの概要 適用事例

目次 ペトリネットの概要 適用事例 ペトリネットを利用した状態遷移テスト 和田浩一 東京エレクトロン SDC FA グループ 目次 ペトリネットの概要 適用事例 ペトリネットの概要 - ペトリネットとは ペトリネット (Petri Net) とは カール アダム ペトリが 1962 年に発表した離散分散システムを数学的に表現する手法である 視覚的で 数学的な離散事象システムをモデル化するツールの一つである ペトリネットの概要 - ペトリネットの表記と挙動

More information

ミクロ経済学Ⅰ

ミクロ経済学Ⅰ 労働需要 労働力を雇う側の意思決定 労働力を雇うのは企業と仮定 企業は利潤を最大化する 利潤最大化する企業は どのように労働力を需要するか? まず 一定の生産量を生産する際の 費用最小化問題から考察する 企業の費用最小化 複数の生産要素を用いて生産活動を行なう企業を想定 min C( w, r; y) = wl + rk LK, subject to FKL (, ) y Cwr (, ; y) 費用関数

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 4 回再帰的構造体 プログラミングを 余談 : 教えることの難しさ 丁寧に説明しないと分かってもらえない 説明すると 小難しくなる学生が目指すべきところプログラム例を説明されて理解できる違うやり方でも良いので自力で解決できる おっけー 動けば良い という意識でプログラミング 正しく動くことのチェックは必要 解答例と自分のやり方との比較が勉強になる 今日のお題 再帰的構造体

More information

データ構造

データ構造 アルゴリズム及び実習 7 馬青 1 表探索 定義表探索とは 表の形で格納されているデータの中から条件に合ったデータを取り出してくる操作である 但し 表は配列 ( 連結 ) リストなどで実現できるので 以降 表 の代わりに直接 配列 や リスト などの表現を用いる場合が多い 表探索をただ 探索 と呼ぶ場合が多い 用語レコード : 表の中にある個々のデータをレコード (record) と呼ぶ フィールド

More information

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - 09.pptx 情報処理 Ⅱ 第 9 回 2014 年 12 月 22 日 ( 月 ) 関数とは なぜ関数 関数の分類 自作関数 : 自分で定義する. ユーザ関数 ユーザ定義関数 などともいう. 本日のテーマ ライブラリ関数 : 出来合いのもの.printf など. なぜ関数を定義するのか? 処理を共通化 ( 一般化 ) する プログラムの見通しをよくする 機能分割 ( モジュール化, 再利用 ) 責任 ( あるいは不具合の発生源

More information

学習指導要領

学習指導要領 (1) 数と式 ア数と集合 ( ア ) 実数数を実数まで拡張する意義を理解し 簡単な無理数の四則計算をすること 自然数 整数 有理数 無理数の包含関係など 実数 の構成を理解する ( 例 ) 次の空欄に適当な言葉をいれて, 数の集合を表しなさい ア イ 無理数 整数 ウ 無理数の加法及び減法 乗法公式などを利用した計 算ができる また 分母だけが二項である無理数の 分母の有理化ができる ( 例 1)

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 部内向けスキルアップ研修 組込み OS 自作入門 2014 年 2 月 10st ステップ担当 : 中村 目次 はじめに OSの役割 メモリ管理 メモリ管理実装 プログラムの実行 まとめ はじめに 前回やったこと OS の原型を作成 今回やること 9th ステップでは CPU 時間 という資源管理 本ステップでは メモリ という資源管理 10.1 OS の役割 10.1.1 コンピュータの 3 大要素

More information

Microsoft PowerPoint - mp11-02.pptx

Microsoft PowerPoint - mp11-02.pptx 数理計画法第 2 回 塩浦昭義情報科学研究科准教授 [email protected] http://www.dais.is.tohoku.ac.jp/~shioura/teaching 前回の復習 数理計画とは? 数理計画 ( 復習 ) 数理計画問題とは? 狭義には : 数理 ( 数学 ) を使って計画を立てるための問題 広義には : 与えられた評価尺度に関して最も良い解を求める問題

More information

<4D F736F F D208CF68BA48C6F8DCF8A C30342C CFA90B68C6F8DCF8A7782CC8AEE967B92E8979D32288F4390B394C529332E646F63>

<4D F736F F D208CF68BA48C6F8DCF8A C30342C CFA90B68C6F8DCF8A7782CC8AEE967B92E8979D32288F4390B394C529332E646F63> 2. 厚生経済学の ( 第 ) 基本定理 2 203 年 4 月 7 日 ( 水曜 3 限 )/8 本章では 純粋交換経済において厚生経済学の ( 第 ) 基本定理 が成立することを示す なお より一般的な生産技術のケースについては 4.5 補論 2 で議論する 2. 予算集合と最適消費点 ( 完全 ) 競争市場で達成される資源配分がパレート効率的であることを示すための準備として 個人の最適化行動を検討する

More information

Autodesk Inventor Skill Builders Autodesk Inventor 2010 構造解析の精度改良 メッシュリファインメントによる収束計算 予想作業時間:15 分 対象のバージョン:Inventor 2010 もしくはそれ以降のバージョン シミュレーションを設定する際

Autodesk Inventor Skill Builders Autodesk Inventor 2010 構造解析の精度改良 メッシュリファインメントによる収束計算 予想作業時間:15 分 対象のバージョン:Inventor 2010 もしくはそれ以降のバージョン シミュレーションを設定する際 Autodesk Inventor Skill Builders Autodesk Inventor 2010 構造解析の精度改良 メッシュリファインメントによる収束計算 予想作業時間:15 分 対象のバージョン:Inventor 2010 もしくはそれ以降のバージョン シミュレーションを設定する際に 収束判定に関するデフォルトの設定をそのまま使うか 修正をします 応力解析ソルバーでは計算の終了を判断するときにこの設定を使います

More information

第2回

第2回 明星大学情報学科 年後期 アルゴリズムとデータ構造 Ⅰ 第 回 Page 第 回基本データ構造 連結リストとその操作 -. リスト構造 データ部 と ポインタ部 で構成され ポインタをたどることによりデータを扱うことができる構造 -. 単方向リストとその操作 --. 単方向リスト 次のデータへのポインタを つだけ持っているデータ構造 ( データ部は 複数のデータを持っている場合もある ) データ部

More information

[Problem D] ぐらぐら 一般に n 個の物体があり i 番目の物体の重心の x 座標を x i, 重さを w i とすると 全体の n 重心の x 座標と重さ w は x = ( x w ) / w, w = w となる i= 1 i i n i= 1 i 良さそうな方法は思いつかなかった

[Problem D] ぐらぐら 一般に n 個の物体があり i 番目の物体の重心の x 座標を x i, 重さを w i とすると 全体の n 重心の x 座標と重さ w は x = ( x w ) / w, w = w となる i= 1 i i n i= 1 i 良さそうな方法は思いつかなかった [Problem D] ぐらぐら 一般に n 個の物体があり 番目の物体の重心の x 座標を x, 重さを w とすると 全体の n 重心の x 座標と重さ w は x = ( x w ) / w, w = w となる = n = 良さそうな方法は思いつかなかった アイデア募集中!!! ので 少し強引に解いている 入力データの読み込みは w と h を scanf で読み込み getchar でその行の行末コードを読み込み

More information

1999年度 センター試験・数学ⅡB

1999年度 センター試験・数学ⅡB 99 センター試験数学 Ⅱ 数学 B 問題 第 問 ( 必答問題 ) [] 関数 y cos3x の周期のうち正で最小のものはアイウ 解答解説のページへ 0 x 360 のとき, 関数 y cos3x において, y となる x はエ個, y となる x はオ 個ある また, y sin x と y cos3x のグラフより, 方程式 sin x cos3x は 0 x 360のときカ個の解をもつことがわかる

More information