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

Size: px
Start display at page:

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

Transcription

1 最短経路問題とは プログラミング言語 I 第 0 回 から終点へ行く経路が複数通りある場合に 最も短い経路を見つける問題 経路の短さの決め方によって様々な応用 最短経路問題 埼玉大学工学部電気電子システム工学科伊藤和人 最短経路問題の応用例 カーナビゲーション 現在地から目的地まで最短時間のルート 経路 = 道路 交差点において走る道路を変更してもよい 経路の短さ = 所要時間の短さ 鉄道乗り換え案内 始発駅から目的駅まで料金最低のルート 経路 = 路線 駅において路線を乗り換えてもよい 経路の短さ = 料金の安さ 問題の定式化 定式化 : 問題の意味が変化しないことに注意して 明確な形式に問題を整理すること 条件と解の性質を明確にする あいまいな点をなくす さらに 問題を解くプログラムが容易に作成できるような定式化を行うことが重要 グラフ プログラミングに適した問題定式化の道具としてよく用いられる 個以上の点 ( ノード ) と つの点を結ぶ枝からなる 点 枝 グラフ ( その ) 点を共有する枝の集合をパス (path 経路 ) という パスのと終点を定める 一般にと終点が同じパスは複数通り存在する ( 通りしか存在しない場合や つも存在しない場合あり ) 終点 グラフの例 パス

2 グラフ ( その ) 枝に重みを与える パスの重みは の和とする 9 終点 パス : 重み 終点が同じ複数通りのパスパスによって重みは異なる 横浜 最短経路問題の定式化 グラフによって問題を入力 ( 終点 ) 鉄道乗り換え案内の場合 乗換駅を点 を料金とすればよい 0 円 80 円 品川 重み最小のパスを見つける 渋谷 東京 新宿 上野 池袋 赤羽 0 円 0 円 0 円 0 円 0 円 90 円 0 円 0 円 0 円,70 円 大宮 最小値原理 から終点 t への最短経路上の点を v とすると パス p(,v) とパス p(v,t) はともに最短経路である から v への最短経路 v v から t への最短経路 から t への最短経路 t 終点 終点以外の最短経路を順次求めて 最終的に終点への最短経路を求める 問題の分類 が 0 または正の場合 が 0 正 負で負ループがない場合 が 0 正 負で負ループがある場合 ループ : と終点が一致したパス負ループ : 和が負のループ -8 0 が 0 正 負で負ループがある場合 負ループ : 重み - 最短経路アルゴリズム が 0 または正の場合を考える 0 a 0 a から他の点への最短経路を求める から点 への最短経路が であると決定できるなぜか? 最短経路アルゴリズム ( その ) が 0 または正の場合 0 a が 0 または正であるので 点 a,, を経由するどのパスも重みが 以上となるため aを経由パス重みは 以上 を経由パス重みは 以上 を経由パス重みは 以上

3 最短経路アルゴリズム ( その ) 次に経路が最短な点を求める 0 a e f 0 a e f 0 a e f 0 a e f 最短経路アルゴリズム ( その ) アルゴリズムのポイント 最短経路長の決まっている点 最短経路長の定まった点から さらに枝 本で到達する点のうち 経路長最短の点は 最短経路と決定できる 7 7 ダイクストラ法 さらに枝 本で到達する点 経路長が最小 最短経路を決定できる点 C 言語によるグラフ表現 次元配列を用いる方法 枝が結ぶ 点 (,) 配列要素 e[][] が枝を表す と を区別しない場合 e[][] = e[][] とする e[][]=: 枝あり e[][]=0: 枝なし C 言語によるグラフ表現 ( 続き ) 枝 (,) の重み w[][] が記憶 と を区別しない場合 w[][] = w[][] とする w[][] =0 とする ダイクストラ法の実装 nt, mnlen,, m, u[n], f[n]={0; for( =0 ; <N ; ++ ) u[] = 9999; = 0; u[] = 0; for( m= ; m<n ; m++ ){ f[] = ; 点 は最短経路決定 for( =0 ; <N ; ++ ){ f( e[][]!= ) ontnue; f( u[]+w[][] < u[] ) u[]=u[]+w[][]; mnlen = 9999; for( =0 ; <N ; ++ ){ f( f[] == ) ontnue; f( u[] < mnlen ){ mnlen = u[]; = ; 点 は経路長が最短 点数 N 十分大きな正数 枝 (,) が存在しない 点 への経路長を更新 最短経路既定の点は除外 =0 とする 長さだけでなく経路を記録 nt, mnlen,, m, u[n], f[n]={0, prev[n]; 点数 N for( =0 ; <N ; ++ ) u[] = 9999; = 0; u[] = 0; 十分大きな正数 for( m= ; m<n ; m++ ){ f[] = ; 点 は最短経路決定 for( =0 ; <N ; ++ ){ f( e[][]!= ) ontnue; 枝 (,) が存在しない f( u[]+w[][] < u[] ){ u[]=u[]+w[][]; prev[]=; /* の直前は */ mnlen = 9999; 点 への経路長を更新 for( =0 ; <N ; ++ ){ 最短経路既定の点は除外 f( f[] == ) ontnue; f( u[] < mnlen ){ mnlen = u[]; = ; 点 は経路長が最短

4 ダイクストラ法の計算複雑度 経路長最短の点を つ選び経路を決定 その点から 本の枝で接続する点について経路長を調べなおす すべての点について経路が決定するまで繰り返す O( N ) 秒 プログラムの実行時間 ノード数 Nとプログラム実行時間の関係 N N=8000 約 00M バイト N=7000 約 00M バイト 予想 つのノード当たり 本の枝の場合 PentumIV.GHz MB メモリ プログラムの問題点 配列による枝表現はメモリを大量に必要とし かつ効率が悪い 枝の有無を表す 次元配列 e[][] の例 0 がほとんど 配列による枝表現の問題 枝の有無 (e[][]== か否か ) を調べる処理が必要 枝が無くても (e[][]=0) を記憶する必要があるためメモリを大量に消費し 速度低下 ( スラッシング ) 配列に代わる 不規則なデータを効率よく記録する方式が必要 リスト構造 リストの管理 リストの要素データ領域の他に 次の要素を指すポインタを備えるポインタ次の要素を指す 要素 データ領域 ポインタを用いて要素をつなげる = リスト リストの実装 構造体によって データ領域と次要素へのポインタをまとめて管理する要素の構造体型を宣言例 typeef trut Ege { trut Ege *next; 次要素へのポインタ nt,; // 点, 点 nt w; // データ領域 EDGE; 例 リストの先頭を指すポインタを宣言 EDGE *ege_top = NULL;

5 リストの実装 ( その ) リストの例 ege_top リストを順にたどる処理 NULL 点 点 点 点 点 点 本の枝を記録するリスト リストの末尾では next メンバは NULL EDGE *ep; for( ep=ege_top ; ep!= NULL ; ep=ep->next ){ /* リスト要素に対する処理 */ ダイクストラ法における枝リスト 最短経路が決まるたびに その点から枝 本でつながる点の経路長更新 最短経路長の決まっている点 新たに最短経路長 の決まった点 7 各点に接続する枝リストがあると便利 7 経路長を更新する点 ege[0] ege[] ege[] ダイクストラ法のための枝リスト 各点に接続する枝のリスト 点 0 に接続する枝のリスト 点 に接続する枝のリスト NULL 点 点 点 点ごとに接続する枝数は変化 NULL 点 点 点 点 点 ダイクストラ法と組合わせる場合 メンバ 点 は不要 =0 とする リストを用いたダイクストラ法 nt, mnlen,, m, u[n], f[n]={0; 点数 N EDGE ege[n], *ep; /* 枝リストを設定する処理は省略 */ for( =0 ; <N ; ++ ) u[] = 9999; = 0; u[] = 0; 十分大きな正数 for( m= ; m<n ; m++ ){ f[] = ; 点 は最短経路決定 for( ep=ege[] ; ep!=null ; ep=ep->next ){ f( u[]+ep->w < u[ep->] ){ u[ep->]=u[]+ ep->w; mnlen = 9999; for( =0 ; <N ; ++ ){ f( f[] ) ontnue; f( u[] < mnlen ){ mnlen = u[]; = ; に接続する枝を順に調べる点 ep-> への経路長を更新 点 は経路長が最短 最短経路既定の点は除外 秒 プログラムの実行時間 ノード数 Nとプログラム実行時間の関係 N N=8000 約 00M バイト N=7000 約 00M バイト 配列利用 リスト構造利用 N=0000 約 M バイト PentumIV.GHz MB メモリ 最短経路アルゴリズム 負のが存在する場合 0 a ダイクストラ法では最短経路を見つけられないなぜか? まだ最短経路の決まっていない点を経由した方が経路長が短くなるパスが存在するかもしれないため

6 Bellman 方程式 点 の最短経路長を u とするとき u が満たす関係式 Bellman 方程式 u u = 0 = mn { u + w u w u 最小値原理より Bellman 方程式を解く Bellman 方程式の解 = 最短経路 漸化的に解く u[] が更新されたら 枝 (,) が存在する点 について u[] を更新する すべての点 についてu[] が変化しなくなったら 解が得られている Bellman-For 法 =0 とする リストを用いた Bellman-For 法実装 nt,upate,mnl,,u[n], prev[n]; EDGE *ege_top, *ep; /* リストを正しく作成する必要あり ( ここでは省略 ) */ for( =0 ; <N ; ++ ) u[] = 9999; 十分大きな正数 = 0; u[] = 0; o { upate = 0; for( ep=ege_top ; ep!= NULL ; ep=ep->next ){ f( u[ep->]+ep->w < u[ep->] ){ u[ep->] = u[ep->]+ ep->w; prev[ep->] = ep->; 経路を記録 upate = ; whle ( upate ); 経路長が短くなったら更新フラグを に 経路長更新の場合再度繰り返し o - whle 文 条件が成り立つ間 文を実行 o 文 whle( 式 ); 意味 : まず 回文を実行する 式が真の間 文を実行 文 式 True Fale o-whle 文の実行の様子 式 True 文 Fale whle( 式 ) 文 ; の実行の様子 Bellman-For 法の計算複雑度 すべての枝を順に調査 経路長が更新されたら 再度調査実行 負ループがなければ最短経路を構成する枝数は N 未満 更新は高々 N- 回 実行時間 O(NE) 負ループのある最短経路問題 最短経路は不定 負ループを繰り返すごとに経路長は減少 経路にループを含まない という制約を与えると意味のある問題として定式化される効率よく最短経路を求めるアルゴリズムは見つかっていない 負ループが存在する場合の最短経路問題は負ループが存在しない場合の問題とは性格が異なる

7 組み合わせ最適化問題 ある条件を満足する解候補のうち ある評価尺度が最適になる解を選ぶ問題 例 : 最短経路問題 条件 : から終点への連続した枝集合 ( 経路 ) 評価尺度 : 和が小さい 組み合わせ最適化問題の困難さ 組み合わせ最適化問題を つに分類 P: 多項式可解な問題 問題サイズの多項式オーダの手数で解が得られる 計算複雑度が多項式オーダの解法が存在 NP: 非決定的多項式可解な問題 都合良く選択肢を選ぶと 問題サイズの多項式オーダの手数で解が得られる P でも NP でもない問題 P や NP よりも難しい問題 問題の困難さ 組み合わせ最適化問題の分類とその関係 P 問題の例 P ソート ( 並べ替え ) 最短経路問題 NP オペレーションズ リサーチ 全組み合わせ問題 NP 問題 NP: 非決定的多項式可解な問題 都合良く選択肢を選ぶと 問題サイズの多項式オーダの手数で解が得られる 工学的に有用な問題が多数含まれる 負ループを含む最短経路問題 セールスマンの巡回問題 タスク スケジューリング問題など セールスマンの巡回問題 問題の定義 N 個の都市を順に訪問するための旅費が最小になる訪問順を求めよ 都市間の旅費は非負 最短経路 ( 最小費用 ) を求める問題 一見すると最短経路問題として解けそう? すべての訪問順を列挙して最小費用の順路を求める方法しか知られていない O(N! ) NP 問題と P 問題 NP 問題の解には 今のところ非多項式オーダの手数が必要 多項式オーダの解法が存在しないことは証明されていない もしかすると NP=P かもしれない NP 問題のどれか つについて多項式オーダの解法が見つかれば NP=P すべての NP 問題が多項式オーダで解ける!

8 まとめ 問題定式化とグラフ 最短経路問題 効率よい解法 ダイクストラ法 Bellman-For 法 リスト構造 組み合わせ最適化問題と NP

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

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

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 - 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 - DA2_2018.pptx

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

More information

Microsoft PowerPoint - DA2_2017.pptx

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

More information

Microsoft PowerPoint - DA2_2017.pptx

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

More information

離散数学

離散数学 離散数学 最短経路問題 落合秀也 その前に 前回の話 深さ優先探索アルゴリズム 開始点 から深さ優先探索を行うアルゴリズム 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)

More information

Microsoft PowerPoint - mp13-07.pptx

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

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

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 ポインタ変数の扱い方 1 ポインタ変数の宣言 int *p; double *q; 2 ポインタ変数へのアドレスの代入 int *p; と宣言した時,p がポインタ変数 int x; と普通に宣言した変数に対して, p = &x; は x のアドレスのポインタ変数 p への代入 ポインタ変数の扱い方 3 間接参照 (

More information

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

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

More information

PowerPoint プレゼンテーション

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

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

Microsoft PowerPoint - 13基礎演習C_ITプランナー_2StableMatching.pptx

Microsoft PowerPoint - 13基礎演習C_ITプランナー_2StableMatching.pptx 2013/4,5,6,7 Mon. 浮気しない? カップル 6 人の男女がいます. 少子化対策? のため,6 組のカップルを作り結婚させちゃいましょう. でも各自の好き嫌いを考えずに強引にくっつけちゃうと, 浮気する人が出るかもしれません. 浮気しないように 6 組のカップルをつくれますか? どうすれば浮気しないの? 浮気しないってどういうこと? 浮気ってどういう状況で起こる? 浮気する しないを

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

memo

memo 数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 講座準備 講座資料は次の URL から DL 可能 https://goo.gl/jnrfth 1 ポインタ講座 2017/01/06,09 fumi 2 はじめに ポインタはC 言語において理解が難しいとされる そのポインタを理解することを目的とする 講座は1 日で行うので 詳しいことは調べること 3 はじめに みなさん復習はしましたか? 4 & 演算子 & 演算子を使うと 変数のアドレスが得られる

More information

DVIOUT-SS_Ma

DVIOUT-SS_Ma 第 章 微分方程式 ニュートンはリンゴが落ちるのを見て万有引力を発見した という有名な逸話があります 無重力の宇宙船の中ではリンゴは落ちないで静止していることを考えると 重力が働くと始め静止しているものが動き出して そのスピードはどんどん大きくなる つまり速度の変化が現れることがわかります 速度は一般に時間と共に変化します 速度の瞬間的変化の割合を加速度といい で定義しましょう 速度が変化する, つまり加速度がでなくなるためにはその原因があり

More information

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

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

More information

情報システム評価学 ー整数計画法ー

情報システム評価学 ー整数計画法ー 情報システム評価学 ー整数計画法ー 第 1 回目 : 整数計画法とは? 塩浦昭義東北大学大学院情報科学研究科准教授 この講義について 授業の HP: http://www.dais.is.tohoku.ac.jp/~shioura/teaching/dais08/ 授業に関する連絡, および講義資料等はこちらを参照 教員への連絡先 : shioura (AT) dais.is.tohoku.ac.jp

More information

Taro-ポインタ変数Ⅰ(公開版).j

Taro-ポインタ変数Ⅰ(公開版).j 0. 目次 1. ポインタ変数と変数 2. ポインタ変数と配列 3. ポインタ変数と構造体 4. ポインタ変数と線形リスト 5. 問題 問題 1 問題 2-1 - 1. ポインタ変数と変数 ポインタ変数には 記憶領域の番地が格納されている 通常の変数にはデータが格納されている 宣言 int *a; float *b; char *c; 意味ポインタ変数 aは 整数型データが保存されている番地を格納している

More information

アルゴリズムとデータ構造

アルゴリズムとデータ構造 講義 アルゴリズムとデータ構造 第 2 回アルゴリズムと計算量 大学院情報科学研究科情報理工学専攻情報知識ネットワーク研究室喜田拓也 講義資料 2018/5/23 今日の内容 アルゴリズムの計算量とは? 漸近的計算量オーダーの計算の方法最悪計算量と平均計算量 ポイント オーダー記法 ビッグオー (O), ビッグオメガ (Ω), ビッグシータ (Θ) 2 お風呂スケジューリング問題 お風呂に入る順番を決めよう!

More information

8. 自由曲線と曲面の概要 陽関数 陰関数 f x f x x y y y f f x y z g x y z パラメータ表現された 次元曲線 パラメータ表現は xyx 毎のパラメータによる陽関数表現 形状普遍性 座標独立性 曲線上の点を直接に計算可能 多価の曲線も表現可能 gx 低次の多項式は 計

8. 自由曲線と曲面の概要 陽関数 陰関数 f x f x x y y y f f x y z g x y z パラメータ表現された 次元曲線 パラメータ表現は xyx 毎のパラメータによる陽関数表現 形状普遍性 座標独立性 曲線上の点を直接に計算可能 多価の曲線も表現可能 gx 低次の多項式は 計 8. 自由曲線 曲面. 概論. ベジエ曲線 曲面. ベジエ曲線 曲面の数学. OeGLによる実行. URS. スプライン関数. スプライン曲線 曲面. URS 曲線 曲面 4. OeGLによる実行 8. 自由曲線と曲面の概要 陽関数 陰関数 f x f x x y y y f f x y z g x y z パラメータ表現された 次元曲線 パラメータ表現は xyx 毎のパラメータによる陽関数表現 形状普遍性

More information

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ 4 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プログラミング技術 工業 333 実教出版 ) 共通 : 科目 プログラミング技術 のオリエンテーション プログラミング技術は

More information

umeda_1118web(2).pptx

umeda_1118web(2).pptx 選択的ノード破壊による ネットワーク分断に耐性のある 最適ネットワーク設計 関西学院大学理工学部情報科学科 松井知美 巳波弘佳 選択的ノード破壊によるネットワーク分断に耐性のある最適ネットワーク設計 0 / 20 現実のネットワーク 現実世界のネットワークの分析技術の進展! ネットワークのデータ収集の効率化 高速化! 膨大な量のデータを解析できる コンピュータ能力の向上! インターネット! WWWハイパーリンク構造

More information

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

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

More information

スライド タイトルなし

スライド タイトルなし アルゴリズム入門 (8) ( 近似アルゴリズム ) 宮崎修一京都大学学術情報メディアセンター 近似アルゴリズムとは? 効率よく解ける問題 ( 多項式時間アルゴリズムが存在する問題 ) ソーティング 最短経路問題 最小全域木問題 効率よく解けそうにない問題 (NP 困難問題 ) 最小頂点被覆問題 MX ST MX CUT 本質的に問題が難しいのだが 何とか対応したい 幾つかのアプローチ ( 平均時間計算量

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 解けない問題 を知ろう 保坂和宏 ( 東京大学 B2) 第 11 回 JOI 春合宿 2012/03/19 概要 計算量に関して P と NP NP 完全 決定不能 いろいろな問題 コンテストにおいて Turing 機械 コンピュータの計算のモデル 計算 を数学的に厳密に扱うためのもの メモリのテープ (0/1 の列 ), ポインタ, 機械の内部状態を持ち, 規則に従って状態遷移をする 本講義では

More information

<4D F736F F F696E74202D2093B CC8BE68AD B B82CC8AD AF95FB96405F88EA94CA ED28CFC82AF82C995D28F575F826C A6D94462E >

<4D F736F F F696E74202D2093B CC8BE68AD B B82CC8AD AF95FB96405F88EA94CA ED28CFC82AF82C995D28F575F826C A6D94462E > 道路の区間 ID テーブルの関連付け方法 ( 一般利用者向け ) 自者地図に道路ネットワークが設定されていない利用者 ( 道路の区間 IDテーブルに該当する道路 NWを作成し関連付け ) 目次 本書の位置づけ 2 Ⅰ. 既存地図データへの設定方法の解説 5 Ⅱ. 更新方法の解説 13 1 本書の位置づけ 1) 背景 平成 24 年より 一般財団法人日本デジタル道路地図協会 ( 以降 DRM 協会 という

More information

簡単な検索と整列(ソート)

簡単な検索と整列(ソート) フローチャート (2) アルゴリズム論第 2 回講義 2011 年 10 月 7 日 ( 金 ) 反復構造 ( 一定回数のループ処理 ) START 100 回同じ処理を繰り返す お風呂で子供が指をおって数を数える感じ 繰り返し数を記憶する変数をカウンター ( 変数名 I をよく使う ) と呼ぶ カウンターを初期化して, 100 回繰り返したかどうか判定してそうならば終了そうでなければ処理を実行して

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

モデリングとは

モデリングとは コンピュータグラフィックス基礎 第 5 回曲線 曲面の表現 ベジェ曲線 金森由博 学習の目標 滑らかな曲線を扱う方法を学習する パラメトリック曲線について理解する 広く一般的に使われているベジェ曲線を理解する 制御点を入力することで ベジェ曲線を描画するアプリケーションの開発を行えるようになる C++ 言語の便利な機能を使えるようになる 要素数が可変な配列としての std::vector の活用 計算機による曲線の表現

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

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

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

More information

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - lec10.ppt 今日の内容, とポインタの組み合わせ, 例題 1. 住所録例題 2. と関数とは. を扱う関数. 例題 3. のリスト とポインタの組み合わせ 今日の到達目標 自分で を定義する 自分で定義したについて, 配列やポインタを作成する データ型 基本データ型 char 文字 (1 文字 ) int 整数 double 浮動小数など その他のデータ型配列 データの並び ( 文字列も, 文字の並び ) ポインタ

More information

計算幾何学入門 Introduction to Computational Geometry

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

More information

学習指導要領

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

More information

PowerPoint Presentation

PowerPoint Presentation 工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 7 回 2010 年 11 月 18 日 1 今回のテーマ 1: ポインタ 変数に値を代入 = 記憶プログラムの記憶領域として使用されるものがメモリ ( パソコンの仕様書における 512 MB RAM などの記述はこのメモリの量 ) RAM は多数のコンデンサの集合体 : 電荷がたまっている (1)/ いない

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

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用 RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用体型のローカル変数を文字列操作関数で操作する場合の注意事項 (RXC#013) 配列型構造体または共用体の配列型メンバから読み出した値を動的初期化に用いる場合の注意事項

More information

微分方程式による現象記述と解きかた

微分方程式による現象記述と解きかた 微分方程式による現象記述と解きかた 土木工学 : 公共諸施設 構造物の有用目的にむけた合理的な実現をはかる方法 ( 技術 ) に関する学 橋梁 トンネル ダム 道路 港湾 治水利水施設 安全化 利便化 快適化 合法則的 経済的 自然および人口素材によって作られた 質量保存則 構造物の自然的な性質 作用 ( 外力による応答 ) エネルギー則 の解明 社会的諸現象のうち マスとしての移動 流通 運動量則

More information

untitled

untitled に, 月次モデルの場合でも四半期モデルの場合でも, シミュレーション期間とは無関係に一様に RMSPE を最小にするバンドの設定法は存在しないということである 第 2 は, 表で与えた 2 つの期間及びすべての内生変数を見渡して, 全般的にパフォーマンスのよいバンドの設定法は, 最適固定バンドと最適可変バンドのうちの M 2, Q2 である いずれにしても, 以上述べた 3 つのバンド設定法は若干便宜的なものと言わざるを得ない

More information

Microsoft Word - NumericalComputation.docx

Microsoft Word - NumericalComputation.docx 数値計算入門 武尾英哉. 離散数学と数値計算 数学的解法の中には理論計算では求められないものもある. 例えば, 定積分は, まずは積分 ( 被積分関数の原始関数をみつけること できなければ値を得ることはできない. また, ある関数の所定の値における微分値を得るには, まずその関数の微分ができなければならない. さらに代数方程式の解を得るためには, 解析的に代数方程式を解く必要がある. ところが, これらは必ずしも解析的に導けるとは限らない.

More information

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n を入力してもらい その後 1 から n までの全ての整数の合計 sum を計算し 最後にその sum

More information

Microsoft Word - 第5回 基本データ構造2(連結リスト).doc

Microsoft Word - 第5回 基本データ構造2(連結リスト).doc 第 5 回基本データ構造 2 連結リストとその操作 第 5 回 Page 1 5-1. リスト構造 データ部 と ポインタ部 で構成され ポインタをたどることによりデータを扱うことができる構造 5-2. 単方向リストとその操作 5-2-1. 単方向リスト 次のデータへのポインタを 1 つだけ持っているデータ構造 ( データ部は 複数のデータを持っている場合もある ) データ部 ポインタ部 ノード リストを構成する要素のことを

More information

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

模擬試験問題(第1章~第3章) 基本情報技術者試験の練習問題 - 第 10 回 この問題は平成 19 年度春期の問題から抜粋しています 問 1 次のプログラムの説明及びプログラムを読んで, 設問 1~3 に答えよ プログラムの説明 整数型の 1 次元配列の要素 A[0],,A[N](N>0) を, 挿入ソートで昇順に整列する副プログラム InsertSort である (1) 挿入ソートの手順は, 次のとおりである (i) まず,A[0]

More information

卒論発表

卒論発表 0 年度 ( 平成 年度 ) 広島市大 卒業研究 実現するアルゴリズムの証明に 注目した ASIP のシステム検証 広島市立大学 情報科学部 情報工学科錦織光輝 ( 高橋隆一指導 ) Mitsuki Nishikori 研究背景 0 年代には Verilog HDL によって仕様を記述し, 論理合成によって回路を実現するスタイルが普及した 検証技術が論理合成に続く技術として期待されている 満たすべき性質をアサーションとして記述することによるシミュレーションでの検証

More information

Microsoft PowerPoint - H21生物計算化学2.ppt

Microsoft PowerPoint - H21生物計算化学2.ppt 演算子の行列表現 > L いま 次元ベクトル空間の基底をケットと書くことにする この基底は完全系を成すとすると 空間内の任意のケットベクトルは > > > これより 一度基底を与えてしまえば 任意のベクトルはその基底についての成分で完全に記述することができる これらの成分を列行列の形に書くと M これをベクトル の基底 { >} による行列表現という ところで 行列 A の共役 dont 行列は A

More information

Microsoft PowerPoint - H22制御工学I-10回.ppt

Microsoft PowerPoint - H22制御工学I-10回.ppt 制御工学 I 第 回 安定性 ラウス, フルビッツの安定判別 平成 年 6 月 日 /6/ 授業の予定 制御工学概論 ( 回 ) 制御技術は現在様々な工学分野において重要な基本技術となっている 工学における制御工学の位置づけと歴史について説明する さらに 制御システムの基本構成と種類を紹介する ラプラス変換 ( 回 ) 制御工学 特に古典制御ではラプラス変換が重要な役割を果たしている ラプラス変換と逆ラプラス変換の定義を紹介し

More information

DVIOUT

DVIOUT 5.2. 流れ図 105 5.2 流れ図 流れ図 (flow chart) はアルゴリズムを図式化したもので コンピュータの手順となるデータの流れ 判定 実行の推移などを流れ図記号 4 を用いて描きます 流れ図のようにアルゴリズムを図式化することで 問題の定義や分析または解法がより明確となり プログラムの設計や作成に非常に役立ちます また 第三者にも的確にアルゴリズムを伝えることができます それでは

More information

<4D F736F F F696E74202D2096E291E889F08C8882CC8EE896402E B8CDD8AB B83685D>

<4D F736F F F696E74202D2096E291E889F08C8882CC8EE896402E B8CDD8AB B83685D> 04. ツールを使う ( 問題解決の手法 ) デシジョンテーブル KJ 法 QC 七つ道具 新 QC 七つ道具 影響力ダイアグラム デシジョンツリー ブレーンストーミング ポートフォリオ分析 ピラミッドストラクチャ ロジックツリー MECE( ミッシー ) アローダイアグラム PDCAサイクル ガントチャート 図解の基本 四分円法 04-4. 新 QC7 つの道具 QC 七つ道具は 定量的分析の手法

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング初級 第 7 回 2017 年 5 月 29 日 配列 ( 復習 )~ 文字列 1 配列とは 2 配列 : 複数の変数をグループとしてまとめて扱うもの 配列 変数 int data[10]; 整数型の配列 同種のデータ型を連続して確保したものを配列とよぶ = 整数がそれぞれにひとつずつ入る箱を 10 個用意したようなもの int data; 整数型の変数 = 整数がひとつ入る dataという名前の箱を用意したようなもの

More information

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y  小幡智裕 Java Script プログラミング入門 3-6~3-7 茨城大学工学部情報工学科 08T4018Y 小幡智裕 3-6 組み込み関数 組み込み関数とは JavaScript の内部にあらかじめ用意されている関数のこと ユーザ定義の関数と同様に 関数名のみで呼び出すことができる 3-6-1 文字列を式として評価する関数 eval() 関数 引数 : string 式として評価する文字列 戻り値 :

More information

Microsoft Word - 201hyouka-tangen-1.doc

Microsoft Word - 201hyouka-tangen-1.doc 数学 Ⅰ 評価規準の作成 ( 単元ごと ) 数学 Ⅰ の目標及び図形と計量について理解させ 基礎的な知識の習得と技能の習熟を図り それらを的確に活用する機能を伸ばすとともに 数学的な見方や考え方のよさを認識できるようにする 評価の観点の趣旨 式と不等式 二次関数及び図形と計量における考え方に関 心をもつとともに 数学的な見方や考え方のよさを認識し それらを事象の考察に活用しようとする 式と不等式 二次関数及び図形と計量における数学的な見

More information

離散数学

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

More information

オートマトン 形式言語及び演習 1. 有限オートマトンとは 酒井正彦 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110,

オートマトン 形式言語及び演習 1. 有限オートマトンとは 酒井正彦   形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110, オートマトン 形式言語及び演習 1 有限オートマトンとは 酒井正彦 wwwtrscssinagoya-uacjp/~sakai/lecture/automata/ 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110, } 形式言語 : 数学モデルに基づいて定義された言語 認識機械 : 文字列が該当言語に属するか? 文字列 機械 受理

More information

プログラミング実習I

プログラミング実習I プログラミング実習 I 03 変数と式 人間システム工学科井村誠孝 [email protected] 3.1 変数と型 変数とは p.60 C 言語のプログラム中で, 入力あるいは計算された数や文字を保持するには, 変数を使用する. 名前がついていて値を入れられる箱, というイメージ. 変数定義 : 変数は変数定義 ( 宣言 ) してからでないと使うことはできない. 代入 : 変数には値を代入できる.

More information