Microsoft PowerPoint - IntroAlgDs pptx

Size: px
Start display at page:

Download "Microsoft PowerPoint - IntroAlgDs pptx"

Transcription

1 アルゴリズムとデータ構造入門 年 1 月 21 日 大学院情報学研究科知能情報学専攻 okuno@i.kyoto-u.ac.jp,okuno@nu.org if mod( 学籍番号の下 3 桁,3) 0 if mod( 学籍番号の下 3 桁,3) 1 if mod( 学籍番号の下 3 桁,3) 2 試験は 1 月 28 日 ( 火 )3 限 8 号館 3F 大講義室 1 1. vctor ( ベクタ ) によるSorting 1. ヒープソート (hap sort) 2. Sarching ( 探索 ) 1. 二分探索 (binary sarch) 2. ハッシュ法 (hashing) 3. 授業アンケート 3 (dfin (palindrom? chars) (qual? chars (rvrs chars) ) (dfin (mak-palindrom chars) (dfin (mak-vn-palindrom chars) (appnd chars (rvrs chars)) ) (dfin (mak-odd-palindrom chars) (appnd chars (cdr (rvrs chars))) ) (palindrom? '(shi n bu n shi)) (palindrom? '(ta k ya bu ya k ta)) (palindrom? (M A D A M I M A D A M)) (dfin (last-but-on itms) (rvrs (cdr (rvrs itms))) ) (last-but-on '(shi n bu n shi)) (shi n bu n) 4 1

2 データの並びを表現するデータ型 #( 要素 0 要素 n-1 ) インデックス (indx) は 0 から始まる (0-origin) 要素 は任意のデータ いわゆる 1 次元配列 (array) Constructor( 構築子 ) (mak-vctor サイズ [ データ ]) (vctor データ 0 データ n-1 ) (list->vctor リスト ) 5 Slctors( 選択子 ) (vctor-rf ベクタ インデックス ) その他 (vctor-lngth ベクタ ) サイズを返す (vctor-st! ベクタ インデックス データ ) (vctor->list ベクタ ) 入出力は #( ) 6 (dfin y (mak-vctor 5)) #(() () () () ()) (dfin x #( )) #( ) (vctor-lngth x) 5 (vctor-rf x 2) 3 (vctor-st! x 3 128) #( ) x #( ) (vctor-st! x 0 'foo) #(foo ) 7 2

3 ヒープとは 2 分木の特殊形 ヒープの高さを h とすると 1. 高さ h-1 までは完全 2 分木 2. 高さ h の葉は左詰 3. 親ノードの値 v p と子ノードの値 v c とすると v p prd v c が成立 prd は比較 (<, >, >=, <=) ベクタで実現する h h-1 8 ヒープの高さを h とすると 高さ h-1 までは完全 2 分木 高さ h の葉は左詰 ベクタ利用の利点 2i 2i+1 サイズ0 親のインデックスを i 子のインデックスは 2i, 2i+1 i h h-1 i 2i 2i+1 9 (dfin (mak-hap maxsiz) (lt ((hap (mak-vctor (+ maxsiz 1)))) (vctor-st! hap 0 0) hap ))) (dfin (hap-siz hap) (vctor-rf hap 0)) (dfin (hap-lft-child n) (* n 2)) (dfin (hap-right-child n) (+ (* n 2) 1)) (dfin (hap-parnt n) (quotint n 2)) (dfin (hap-top hap) (vctor-rf hap 1)) (dfin (hap-siz-st! hap n) (vctor-st! hap 0 n) ) 0 i 2i 2i+1 サイズ10 3

4 (dfin (insrt-hap hap lmnt prd) (lt ((n (+ (hap-siz hap) 1))) (vctor-st! hap n lmnt) (hap-siz-st! hap n) (sift-up hap n lmnt prd) lmnt )) sift-up では 高さが 1 つずつ減少 11 (dfin (sift-up hap from lmnt prd) (if (<= from 1) lmnt (lt ((parnt (hap-parnt from))) (lt ((valu (vctor-rf hap parnt))) (cond ((prd valu lmnt) lmnt) (ls (vctor-st! hap from valu) (vctor-st! hap parnt lmnt) (sift-up hap parnt lmnt prd ))))))) 1 回繰り返すと高さが1 減少 要素数を n とすると計算量は (log n) 12 (dfin (hap-xtract-top hap prd) (lt* ((valu (hap-top hap)) (n (hap-siz hap)) (lmnt (vctor-rf hap n)) ) (hap-siz-st! hap (- n 1)) (vctor-st! hap 1 lmnt) (sift-down hap 1 (- n 1) lmnt prd) valu )) sift-down では 高さが 1 つずつ増加 13 4

5 (dfin (sift-down hap from to lmnt prd) (lt ((lft-child (hap-lft-child from)) (right-child (hap-right-child from)) ) (if (or (>= from to) (> lft-child to)) lmnt (lt ((max-child (if (> right-child to) lft-child (if (prd (vctor-rf hap lft-child) (vctor-rf hap right-child) ) lft-child right-child )))) (lt ((max-child-valu (vctor-rf hap max-child))) (cond ((prd lmnt max-child-valu) lmnt) (ls (vctor-st! hap from max-child-valu) (vctor-st! hap max-child lmnt) (sift-down hap max-child to lmnt prd )))))))) 14 1 回繰り返すと高さが 1 増加 要素数を n とすると計算量は (log n) sift-downward では 高さが 1 ずつ増加 15 (dfin (hap-sort rcords. args) (lt ((prd (if (null? args) >= (car args))) (hap (mak-hap 100)) (rsult ()) ) (for-ach (lambda (i) (insrt-hap hap i prd)) rcords) (do ((i (lngth rcords) (- i 1)) (rsult nil) ) ((<= i 0) (rvrs rsult)) (st! rsult (cons (hap-xtract-top hap prd) rsult ))))) ヒープソートの計算量 ( n log n) 16 5

6 ベクタ x のヒープ成立条件 hap(m,n) im1, n xi 2 xi sift-down では 実行前 : hap(1,n) の成立は? 実行後 : hap(1,3) が成立 k 回目の sift-down では 実行前 :hap(1,k) は成立, hap(k,n)? 実行後 :hap(k,2k+1) が成立 つまり, hap(1,2k+1) が成立 17 ベクタ x のヒープ成立条件 hap(m,n) im1, n xi 2 xi sift-up では 実行前 :hap(1,n) 成立, hap((n+1)/2,n+1) だけが? 実行後 :hap((n+1)/4,(n+1)/2) は? k 回目の sift-up では 実行前 :hap(k/2,k)? 他は成立 実行後 :hap(k/2,n) 成立, hap(k/4,k/2)? vctor ( ベクタ ) によるSorting 1. ヒープソート (hap sort) 2. Sarching ( 探索 ) 1. 二分探索 (binary sarch) 2. ハッシュ法 (hashing) 3. 授業アンケート 19 6

7 二分探索 (binary sarch) > = < 比較 > = < > = < 二分探索の計算量 (log n) 20 探したいデータの範囲膨大 例 : 最大 10 文字の単語 50 文字とすると組合わせの数は log( ) 10(2 log 2) 17 ところが実際の単語数は高々 6 10 ベクタ ( 配列 ) で単語を管理すると疎 すかすかの配列 ハッシュ法 (hashing) を使用 vctor ( ベクタ ) によるSorting 1. ヒープソート (hap sort) 2. Sarching ( 探索 ) 1. 二分探索 (binary sarch) 2. ハッシュ法 (hashing) 3. 授業アンケート 23 7

8 ッapocalyps 黙示シュ値ントリハapocop 語尾消失 ( 空 ) ハッシュエ apocrypha 聖書外典 apodosis 帰結節 dirctaccss tabl apog 遠地点 apocalyps 2 apog 遠地点 apocop 6 apocrypha 4 apocalyps apodosis 5 apog 0 apocrypha apodosis apocop 24 キーの値の探索なしにアクセス ハッシュ関数 (hash function) キー ハッシュ値 ( 整数 ) ハッシュ表 (hash tabl) サイズ M 占有率 (load factor)α データ量 N N M 異なるキーに対してハッシュ値が同じ ハッシュ値の衝突 (collision) 26 設計の指針 : ランダム性を有するもの キー : x a 1 a 2 a n ky ( x) m 例 1: キーから 例 2: 文字列から整数への写像 n 2 i1 h ( x) cod ( a ) mod M i 例 3: m 2 の中央部分の logm 桁分を使用 h ( x) 1 2 h3 ( x) m mod M K whr constant K such that MK m mod M 2 N

9 挿入 (insrt) hash 表に ky を持つデータを挿入 検索 (mmbr) hash 表から ky でデータを検索 削除 (dlt) hash 表から ky を持つデータを削除 28 チェイン法 (chaining, sparat chaining, 連鎖法 内部ハッシュ法 ) 開番地法 (opn addrssing, オープン法 外部ハッシュ法 ) 1. 線形走査法 (linar probing) 2. 万能ハッシュ法 (univrsal hashing) 3. 2 重ハッシュ法 (doubl hashing) h, gとすると h(x), h(x)+g(x), h(x)+2g(x), h(x)+3g(x), 29 dog ハッシュ値の衝突 Backt( バケツ ) を作り, つないで行く curb bird bird チェイン法の平均最悪計算量 1. 挿入 (N ) 2. 検索 (N ) 3. 削除 (N ) 30 9

10 ハッシュ関数 h i 占有率 α N M エントリに状態を導入 /dltd/ky( データ ) 1 1. 挿入 : /dltd というフラグのあるエントリに入れる 2. 検索 : まで探す 3. 削除 : dltd というフラグを立てる dltd キー 1 データ1 キー 2 データ2 31 ハッシュ関数 h 衝突発生時 h i h+i mod M 挿入 /dltd というフラグのあるエントリに入れる 検索 まで探す 削除 dltd というフラグを立てる 32 ハッシュ関数 h, ハッシュ関数をランダムに選択 挿入 /dltd というフラグのあるエントリに入れる 検索 まで探す 削除 dltd というフラグを立てる 33 10

11 ハッシュ関数 h, g 衝突発生時 h i h+ig mod M 挿入 /dltd というフラグのあるエントリに入れる 検索 /dltd まで探す 削除 dltd というフラグを立てる 34 h(dog)=2 h(kyoto)=4 h(univ)=0 h(informatics)=2 h(sicp)=3 h(tst)= n 個のデータが格納済 n+1 個目のデータ挿入時に h i (x) がi-1 回目まですべて詰まっている確率 n n 1 n 2 n i 1 M M 1 M 2 M i 1 2. 空きセルを見つけるまでの比較回数 1 M 1 n( n 1) ( n i 1) 1 M ( M 1) ( M i 1) i1 i1 3. ハッシュ表にN 個のデータを挿入する手間は N M N M M log dx M M n 0 M x M N 1 n M n0 i M M n 36 11

12 4. 1 回あたりの平均の挿入の手間は M M 1 log log N M N 1 (1 ) Computational Complxity /(1-α) -1/α log (1-α) Load Factor load factor α log (1 ) dltd はないものと仮定 2. 表にキーがない時は n=n の挿入と同じ M 1 M N 1 3. 表にキーがある時 M M 1 log log (1 ) N M N 1 4. 削除も検索と同じ 5. 上記の解析は 一様ハッシュ (uniform hashing) を仮定 : キーの探索列ランダム dltd はないものと仮定 2. 表にキーがない時は n=n の挿入と同じ M 1 M N 1 3. 表にキーがある時 M N log M 1 log (1 ) M N

13 Hap Sortの正しさを証明せよ 1. Sift-up アルゴリズムを書け 2. Sift-down アルゴリズムを書け 3. Hap-sort アルゴリズムを書け 4. Hap 成立条件を使って,Sift-upアルゴリズムが正しいことを証明 5. Hap 成立条件を使って,Sift-downアルゴリズムが正しいことを証明 6. Hap-sort の計算量を求めよ 41 期末テスト 健闘を期待します 必修課題 2の締切は2 月 9 日 16 時 随意課題の提出でランクアップを 期末テスト :1 月 28 日 ( 火 )3 限 8 号館 3F 大講義室 42 13

Microsoft PowerPoint - IntroAlgDs pptx

Microsoft PowerPoint - IntroAlgDs pptx アルゴリズムとデータ構造入門 -14 2012 年 1 月 8 日 大学院情報学研究科知能情報学専攻 http://winnie.kuis.kyoto-u.ac.jp/~okuno/lecture/11/introalgds/ okuno@i.kyoto-u.ac.jp,okuno@nue.org if mod( 学籍番号の下 3 桁,3) 0 if mod( 学籍番号の下 3 桁,3) 1 if

More information

Microsoft PowerPoint - IntroAlgDs ppt

Microsoft PowerPoint - IntroAlgDs ppt アルゴリズムとデータ構造入門 -4 006 年 月 7 日 アルゴリズムとデータ構造入門 Sorting( 整列 ) Hashing( ハッシュ法 ) 奥乃 博 年前の今朝阪神 淡路大震災犠牲者死者だけで 6434 人天災は忘れた頃にやってくる ( 寺田寅彦 ) 天才は忘れた頃にやってくる ( 奥乃博 ) 月 7 日 本日のメニュー. vector ( ベクタ ). Sorting ( 整列 ) 3.

More information

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

Microsoft PowerPoint - IntroAlgDs ppt [互換モード] アルゴリズムとデータ構造入門 -4 008 年 月 5 日 アルゴリズムとデータ構造入門 Sorting( 整列 ) Hashing( ハッシュ法 ) 奥乃博祝成人の日 年前の7 日阪神 淡路大震災犠牲者死者だけで6434 人天災は忘れた頃にやってくる ( 寺田寅彦 ) 天才は忘れた頃にやってくる ( 奥乃博 ) (Asahi.com より転載 ) 月 5 日 本日のメニュー. vector ( ベクタ

More information

Microsoft PowerPoint - IntroAlgDs pptx

Microsoft PowerPoint - IntroAlgDs pptx アルゴリズムとデータ構造入門 -3 04 年 月 4 日 大学院情報学研究科知能情報学専攻 http://wiie.kuis.kyoto-u.ac.jp/~okuo/lecture//itroalgds/ okuo@i.kyoto-u.ac.jp,okuo@ue.org if mod( 学籍番号の下 3 桁,3) 0 if mod( 学籍番号の下 3 桁,3) if mod( 学籍番号の下 3 桁,3).

More information

Microsoft PowerPoint - Intro-Comp-Sci-07.ppt [互換モード]

Microsoft PowerPoint - Intro-Comp-Sci-07.ppt [互換モード] 情報科学基礎論 -3 007 年 4 月 4 日情報科学基礎論 3. アルゴリズムとデータ構造 Algorthms ad Data Structures 奥乃 博 data structure( データ構造 ). 配列. リスト 3. 木構造 4. ハッシング Sortg ( 整列 ). 内部整列. 外部整列 http://we.kus.kyoto-u.ac.jp/ ~okuo/lecture/07/itrocs/

More information

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

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

More information

PowerPoint Presentation

PowerPoint Presentation 算法数理工学 第 2 回 定兼邦彦 クイックソート n 個の数に対して最悪実行時間 (n 2 ) のソーティングアルゴリズム 平均実行時間は (n log n) 記法に隠された定数も小さい in-place ( 一時的な配列が必要ない ) 2 クイックソートの記述 分割統治法に基づく 部分配列 A[p..r] のソーティング. 部分問題への分割 : 配列 A[p..r] を 2 つの部分配列 A[p..q]

More information

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

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

More information

PowerPoint Presentation

PowerPoint Presentation 算法数理工学 第 回 定兼邦彦 クイックソートの 確率的アルゴリズム クイックソートの平均的な場合の実行時間を解析する場合, 入力の頻度を仮定する必要がある. 通常は, すべての順列が等確率で現れると仮定 しかし実際にはこの仮定は必ずしも期待できない この仮定が成り立たなくてもうまく動作するクイックソートの確率的アルゴリズムを示す 確率的 radomized) アルゴリズム 動作が入力だけでなく乱数発生器

More information

memo

memo 計数工学プログラミング演習 ( 第 5 回 ) 2017/05/09 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 内容 文字列 双方向リスト ハッシュ 2 文字列 文字列は char の配列 char name[] = ABC ; name は ABC を格納するのに十分な長さの配列 長さは, 文字列の長さ + 1 ( 終端記号用 ) char name[4]

More information

Microsoft PowerPoint - 5.pptx

Microsoft PowerPoint - 5.pptx 5. サーチ 5-1. 線形探索 5-2.2 分探索 5-3. ハッシュ 1 サーチ問題 入力 :n 個のデータ a, a,, an a n 0 1 1 ( ここで 入力サイズは とします ) さらに キー k 出力 : k = a となる a があるときは i i となるがあるときは その位置 i,(0 i n 1) キーが存在しないとき -1 2 探索 ( サーチ ) 入力 : 5 3 8 1

More information

Microsoft PowerPoint - 13approx.pptx

Microsoft PowerPoint - 13approx.pptx I482F 実践的アルゴリズム特論 13,14 回目 : 近似アルゴリズム 上原隆平 (uehara@jaist.ac.jp) ソートの下界の話 比較に基づく任意のソートアルゴリズムはΩ(n log n) 時間の計算時間が必要である 証明 ( 概略 ) k 回の比較で区別できる場合の数は高々 2 k 種類しかない n 個の要素の異なる並べ方は n! 通りある したがって少なくとも k n 2 n!

More information

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

Microsoft PowerPoint - ca ppt [互換モード] 008//8 大阪電気通信大学情報通信工学部光システム工学科 年次配当科目 コンピュータアルゴリズム 探索アルゴリズム () 第 8 講 : 平成 0 年 月 8 日 ( 金 ) 4 限 E5 教室 中村嘉隆 ( なかむらよしたか ) 奈良先端科学技術大学院大学助教 y-nkmr@is.nist.jp http://nrym.nist.jp/~y-nkmr/ 第 講の復習 探索アルゴリズム 探索するデータ構造

More information

5after探索( )

5after探索( ) 探索アルゴリズム 探索とは? キー 一致するものを探す レコード フィールド START n=10, i =0, target=54 i : n a[i] : target i++ < = 線形探索アルゴリズム (1) 前提 : 配列 a に n 個のデータが保存 処理 :target と同じデータが蓄えられている配列要素の添え字を返し, ない場合は -1 を返すフローチャートを記せ return

More information

Microsoft PowerPoint - kougi10.ppt

Microsoft PowerPoint - kougi10.ppt C プログラミング演習 第 10 回二分探索木 1 例題 1. リストの併合 2 つのリストを併合するプログラムを動かしてみる head1 tail1 head2 tail2 NULL NULL head1 tail1 tail1 があると, リストの併合に便利 NULL 2 #include "stdafx.h" #include struct data_list { int data;

More information

memo

memo 計数工学プログラミング演習 ( 第 4 回 ) 2016/05/10 DEPARTMENT OF MATHEMATICA INFORMATICS 1 内容 リスト 疎行列 2 連結リスト (inked ists) オブジェクトをある線形順序に並べて格納するデータ構造 単方向連結リスト (signly linked list) の要素 x キーフィールド key ポインタフィールド next x->next:

More information

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

データ構造と  アルゴリズムⅠ 算法数理工学 第 5 回 定兼邦彦 ハッシュ表 辞書操作 (INSERT, DELETE, SEARCH) を効率よく実現するデータ構造 応用 :C 言語のコンパイラでの記号表の管理 キー : 変数名などの文字列 ハッシュ表は実際的な場面では極めて速い 妥当な仮定の下で,SEARCH の時間の期待値は O() 最悪の場合 () 2 チェイン法を用いるハッシュ法の解析 SEARCH は最悪の場合 ()

More information

Microsoft PowerPoint - 05.pptx

Microsoft PowerPoint - 05.pptx アルゴリズムとデータ構造第 5 回 : データ構造 (1) 探索問題に対応するデータ構造 担当 : 上原隆平 (uehara) 2015/04/17 アルゴリズムとデータ構造 アルゴリズム : 問題を解く手順を記述 データ構造 : データや計算の途中結果を蓄える形式 計算の効率に大きく影響を与える 例 : 配列 連結リスト スタック キュー 優先順位付きキュー 木構造 今回と次回で探索問題を例に説明

More information

計算機ソフトウエア

計算機ソフトウエア データ構造とプログラミング技法 ( 第 2 回 ) ー線形構造ー 線形構造 用語 : レコード : ひとまとまりのデータ ( 構造体 ) 線形リスト :n 0 個のレコードの1 次元並び 順配置 : 表 リンク配置 : 連鎖リスト 順配置された線形リスト : 表 論理構造 物理構造 a b c d f 要素の 位置 の順序関係を アドレスの値の順序関係で表現する方法 0000 0001 0002 0003

More information

Microsoft PowerPoint - IntroAlgDs pptx

Microsoft PowerPoint - IntroAlgDs pptx アルゴリズムとデータ構造入門 -4 202 年 0 月 23 日 大学院情報学研究科知能情報学専攻知能メディア講座音声メディア分野 http://wiie.kuis.kyoto-u.ac.jp/~okuo/lecture/0/itroalgds/ okuo@i.kyoto-u.ac.jp,okuo@ue.org TAの居室は文学部東館 4 階奥乃 研,2 研 if mod( 学籍番号の下 3 桁,3)

More information

memo

memo 計数工学プログラミング演習 ( 第 6 回 ) 2016/05/24 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : 再帰呼び出し 2 分探索木 深さ優先探索 課題 : 2 分探索木を用いたソート 2 再帰呼び出し 関数が, 自分自身を呼び出すこと (recursive call, recursion) 再帰を使ってアルゴリズムを設計すると, 簡単になることが多い

More information

Microsoft Word - 13

Microsoft Word - 13 担当 : 富井尚志 (tommy@ynu.ac.jp) アルゴリズムとデータ構造 講義日程 1. 基本的データ型 2. 基本的制御構造 3. 変数のスコープルール. 関数 4. 配列を扱うアルゴリズムの基礎 (1). 最大値, 最小値 5. 配列を扱うアルゴリズムの基礎 (2). 重複除去, 集合演算, ポインタ 6. ファイルの扱い 7. 整列 (1). 単純挿入整列 単純選択整列 単純交換整列

More information

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; Point; 問題 18. 問題 17 の Point を用いて 2 点の座標を入力するとその 2 点間の距 離を表示するプログラムを作成せよ 平方根は

More information

1. A0 A B A0 A : A1,...,A5 B : B1,...,B12 2. 5 3. 4. 5. A0 (1) A, B A B f K K A ϕ 1, ϕ 2 f ϕ 1 = f ϕ 2 ϕ 1 = ϕ 2 (2) N A 1, A 2, A 3,... N A n X N n X N, A n N n=1 1 A1 d (d 2) A (, k A k = O), A O. f

More information

alg2015-4r2.ppt

alg2015-4r2.ppt 1 アルゴリズムとデータ 構造 第 4 回基本的なデータ構造 ( ヒープ ) 再帰的アルゴリズム 2017/04/18 アルゴリズムとデータ構造 2 リスト リストとは要素を 0 個以上 1 列に並べたもの リスト a 0,a 1,,a n-1 の実現法 1. 配列 (array) 前回の復習 (1/3) a 0 a 1 a n-1 2. 連結リスト (linked list) init a 0 a

More information

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

Microsoft PowerPoint - algo ppt [互換モード] 平衡木 アルゴリズム概論 - 探索 (2)- 安本慶一 yasumoto[at]is.naist.jp 二分探索木 高さがデータを挿入 削除する順番による 挿入 削除は平均 O(log n) だが, 最悪 O(n) 木の高さをできるだけ低く保ちたい 平衡木 (balanced tree) データを更新する際に形を変形して高さが log 2 n 程度に収まるようにした木 木の変形に要する時間を log

More information

データ構造

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

More information

自己紹介 ( 専門分野 ) プログラミング言語の研究 特に基礎理論 研究の出発点 : 自分がうまくプログラムが書けないのを言語のせいにする プログラムの間違いを自動発見する仕組みを作る そもそも間違いを犯しにくいプログラミング言語を作る

自己紹介 ( 専門分野 ) プログラミング言語の研究 特に基礎理論 研究の出発点 : 自分がうまくプログラムが書けないのを言語のせいにする プログラムの間違いを自動発見する仕組みを作る そもそも間違いを犯しにくいプログラミング言語を作る 全学共通科目 工学部専門科目 計算機科学概論 アルゴリズムとプログラミングその 1 五十嵐淳 igarashi@kuis.kyoto-u.ac.jp 大学院情報学研究科通信情報システム専攻 自己紹介 ( 専門分野 ) プログラミング言語の研究 特に基礎理論 研究の出発点 : 自分がうまくプログラムが書けないのを言語のせいにする プログラムの間違いを自動発見する仕組みを作る そもそも間違いを犯しにくいプログラミング言語を作る

More information

memo

memo 計数工学プログラミング演習 ( 第 6 回 ) 2017/05/16 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : 再帰呼び出し 2 分探索木 深さ優先探索 課題 : 2 分探索木を用いたソート 2 再帰呼び出し 関数が, 自分自身を呼び出すこと (recursive call, recursion) 再帰を使ってアルゴリズムを設計すると, 簡単になることが多い

More information

PowerPoint Template

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

More information

Microsoft PowerPoint - IntroAlgDs-05-2.ppt

Microsoft PowerPoint - IntroAlgDs-05-2.ppt アルゴリズムとデータ構造入門 2005 年 10 月 11 日 アルゴリズムとデータ構造入門 1. 手続きによる抽象の構築 1.1 プログラムの要素 奥乃 博 1. TUT Schemeが公開されました. Windowsは動きます. Linux, Cygwin はうまく行かず. 調査中. 2. 随意課題 7の追加 友人の勉学を助け,TAの手伝いをする. 支援した内容を毎回のレポート等で詳細に報告.

More information

Microsoft PowerPoint - DA2_2019.pptx

Microsoft PowerPoint - DA2_2019.pptx Johnon のアルゴリズム データ構造とアルゴリズム IⅠ 第 回最大フロー 疎なグラフ, 例えば E O( V lg V ) が仮定できる場合に向いている 隣接リスト表現を仮定する. 実行時間は O( V lg V + V E ). 上記の仮定の下で,Floyd-Warhall アルゴリズムよりも漸近的に高速 Johnon のアルゴリズム : アイデア (I) 辺重みが全部非負なら,Dikra

More information

1. A0 A B A0 A : A1,...,A5 B : B1,...,B

1. A0 A B A0 A : A1,...,A5 B : B1,...,B 1. A0 A B A0 A : A1,...,A5 B : B1,...,B12 2. 3. 4. 5. A0 A B f : A B 4 (i) f (ii) f (iii) C 2 g, h: C A f g = f h g = h (iv) C 2 g, h: B C g f = h f g = h 4 (1) (i) (iii) (2) (iii) (i) (3) (ii) (iv) (4)

More information

DA02

DA02 線形構造 データ構造とアルゴリズム ( 第 2 回 ) ー線形構造ー 用語 : レコード : ひとまとまりのデータ ( 構造体 ) 線形リスト :n 0 個のレコードの 1 次元並び 順配置 : 表 リンク配置 : 連鎖リスト 順配置された線形リスト : 表 要素の 位置 の順序関係を アドレスの値の順序関係で表現する方法 表に対する操作 : 要素の挿入 削除 表に対する操作 : アクセス リンク配置された線形リスト

More information

Microsoft PowerPoint - 06.pptx

Microsoft PowerPoint - 06.pptx アルゴリズムとデータ構造第 6 回 : 探索問題に対応するデータ構造 (2) 担当 : 上原隆平 (uehara) 2015/04/22 内容 スタック (stack): 最後に追加されたデータが最初に取り出される 待ち行列 / キュー (queue): 最初に追加されたデータが最初に取り出される ヒープ (heap): 蓄えられたデータのうち小さいものから順に取り出される 配列による実装 連結リストによる実装

More information

Microsoft PowerPoint - ruby_instruction.ppt

Microsoft PowerPoint - ruby_instruction.ppt Ruby 入門 流れ Ruby の文法 画面に出力 キーボードから入力 数値 文字列 変数 配列 ハッシュ 制御構造 ( 分岐 繰り返しなど ) if while case for each 関数 クラス Ruby とは プログラミング言語 インタプリタ言語 オブジェクト指向 国産 ウェブアプリケーションフレームワーク RubyOnRails で注目 弊社での Web アプリケーション開発に利用 画面に出力

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

ICDE’15 勉強会 R24-4: R27-3 (R24:Query Processing 3, R27 Indexing)

ICDE’15 勉強会 R24-4:  R27-3 (R24:Query Processing 3, R27 Indexing) R24-4: The DBMS - your Big Data Sommelier (R24: Query Processing 3) R27-3: A Comparison of Adaptive Radix Trees and Hash Tables (R27: Indexing) 小山田 (NEC) ICDE 15 勉強会 R24-4: The DBMS - your Big Data Sommelier

More information

論理と計算(2)

論理と計算(2) 情報科学概論 Ⅰ アルゴリズムと計算量 亀山幸義 http://logic.cs.tsukuba.ac.jp/~kam 亀山担当分の話題 アルゴリズムと計算量 Fibonacci 数列の計算を例にとり アルゴリズムと計算量とは何か 具体的に学ぶ 良いアルゴリズムの設計例として 整列 ( ソーティング ) のアルゴリズムを学ぶ 2 Fibonacci 数 () Fibonacci 数 (2) = if

More information

組合せ爆発の対処

組合せ爆発の対処 探 索 アルゴリズム 探 索 とは? キー 一 致 するものを 探 す レコード : : : フィールド START n=10, i =0, target=54 i : n a[i] : target i++ < = 線 形 探 索 アルゴリズム(1) 前 提 : 配 列 aにn 個 のデータが 保 存 処 理 :target と 同 じデータが 蓄 えら れている 配 列 要 素 の 添 え 字

More information

memo

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

More information

cp-7. 配列

cp-7. 配列 cp-7. 配列 (C プログラムの書き方を, パソコン演習で学ぶシリーズ ) https://www.kkaneko.jp/cc/adp/index.html 金子邦彦 1 本日の内容 例題 1. 月の日数配列とは. 配列の宣言. 配列の添え字. 例題 2. ベクトルの内積例題 3. 合計点と平均点例題 4. 棒グラフを描く配列と繰り返し計算の関係例題 5. 行列の和 2 次元配列 2 今日の到達目標

More information

PowerPoint Presentation

PowerPoint Presentation 二分探索木 今回の要点 二分探索木の構造 どのような条件を満たさねばならないか? 二分探索が効率よく出来るため 二分探索木の操作 探索の方法 挿入の方法 削除の方法 各操作の実装コード 二分探索木の性質 どのような形がもっと探索に適しているか? 二分探索木とは 木構造 枝分かれした構造を表現するのに適する 根から葉に向かってたどる = 探索 何らかの特徴を持って構成されていると探索しやすい 二分探索木

More information

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版   Copyright 2018 NTT DATA INTRAMART CORPORATION 1 Top 目次 1. 改訂情報 2. はじめに 2.1. 本書の目的 2.2. 対象読者 2.3. サンプルコードについて 2.4. 本書の構成 3. 辞書項目 API 3.1. 最新バージョン 3.1.1. 最新バージョンの辞書を取得する 3.2. 辞書項目 3.2.1. 辞書項目を取得する 3.2.2.

More information

1. A0 A B A0 A : A1,...,A5 B : B1,...,B

1. A0 A B A0 A : A1,...,A5 B : B1,...,B 1. A0 A B A0 A : A1,...,A5 B : B1,...,B12 2. 3. 4. 5. A0 A, B Z Z m, n Z m n m, n A m, n B m=n (1) A, B (2) A B = A B = Z/ π : Z Z/ (3) A B Z/ (4) Z/ A, B (5) f : Z Z f(n) = n f = g π g : Z/ Z A, B (6)

More information

INTRODUCTION TO ALGORITHMS

INTRODUCTION TO ALGORITHMS 20.7.7 関根渓 ( 情報知識ネットワーク研究室 B4) INTRODUCTION TO LGORITHMS 6. Heapsort CONTENTS 6. ヒープ (Heap) 6.2 ヒープ条件の維持 (Maintaining the heap property) 6.3 ヒープの構成 (Building a heap) 6.4 ヒープソート (The heapsort algorithm)

More information

# let st1 = {name = "Taro Yamada"; id = };; val st1 : student = {name="taro Yamada"; id=123456} { 1 = 1 ;...; n = n } # let string_of_student {n

# let st1 = {name = Taro Yamada; id = };; val st1 : student = {name=taro Yamada; id=123456} { 1 = 1 ;...; n = n } # let string_of_student {n II 6 / : 2001 11 21 (OCaml ) 1 (field) name id type # type student = {name : string; id : int};; type student = { name : string; id : int; } student {} type = { 1 : 1 ;...; n : n } { 1 = 1 ;...; n = n

More information

Microsoft PowerPoint - IntroAlgDs-06-8.ppt

Microsoft PowerPoint - IntroAlgDs-06-8.ppt アルゴリズムとデータ構造入門 2006 年 11 月 21 日 アルゴリズムとデータ構造入門 2. データによる抽象の構築 2.2 階層データ構造と閉包性 奥乃博大学院情報学研究科知能情報学専攻知能メディア講座音声メディア分野 http://winnie.kuis.kyoto-u.ac.jp/~okuno/lecture/06/introalgds/ okuno@i.kyoto-u.ac.jp 12

More information

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

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

More information

始めに, 最下位共通先祖を求めるための関数 LcaDFS( int v ) の処理を記述する. この関数は値を返さない再帰的な void 関数で, 点 v を根とする木 T の部分木を深さ優先探索する. 整数の引数 v は, 木 T の点を示す点番号で, 配列 NodeSpace[ ] へのカーソル

始めに, 最下位共通先祖を求めるための関数 LcaDFS( int v ) の処理を記述する. この関数は値を返さない再帰的な void 関数で, 点 v を根とする木 T の部分木を深さ優先探索する. 整数の引数 v は, 木 T の点を示す点番号で, 配列 NodeSpace[ ] へのカーソル 概略設計書 作成者築山修治作成日 2012 年 10 月 1 日 概要 ( どのような入力に対して, どのような出力をするかの概要説明 ) * 木 T および質問点対の集合 P が与えられたとき, 各質問点対 p = (v,w) P の最下位共通先祖 ( すなわち木 T において点 v と w の共通の先祖 a で,a の真の子孫には v と w の共通の先祖が無いような点 ) を見出す関数である.

More information

長崎大学大学院生産科学研究科(博士前期課程)

長崎大学大学院生産科学研究科(博士前期課程) 問 1 次の文は 問題の把握からプログラムの完成までのプログラミング過程 を 5 段階に分けて示したものである 下記の [a.]~[x.] に当てはまる語句を記入せよ (ⅰ) 問題の把握と対策 : 何が問題か その問題を解決するにはどのようなシステムで対処するのかを考え, 全体を見渡して人手や機械で処理し部分と, 計算機で処理する部分とを明らかにする (ⅱ) プログラミングの設計 : フローチャートを用いてシステムの開発工程を管理することを考えると,

More information

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード] 情報工学実験 II 実験 2 アルゴリズム ( リスト構造とハッシュ ) 実験を始める前に... C 言語を復習しよう 0. プログラム書ける? 1. アドレスとポインタ 2. 構造体 3. 構造体とポインタ 0. プログラム書ける? 講義を聴いているだけで OK? 言語の要素技術を覚えれば OK? 目的のプログラム? 要素技術 データ型 配列 文字列 関数 オブジェクト クラス ポインタ 2 0.

More information

プレポスト【解説】

プレポスト【解説】 コース名 : シェルの機能とプログラミング ~UNIX/Linux の効率的使用を目指して ~ 1 UNIX および Linux の主な構成要素は シェル コマンド カーネルです プロセスとは コマンドやプログラムを実行する単位のことなので プロセスに関する記述は誤りです UNIX および Linux のユーザーインターフェースは シェル です コマンドを解釈するという機能から コマンドインタープリタであるともいえます

More information

論理と計算(2)

論理と計算(2) 情報科学概論 Ⅰ アルゴリズムと計算 亀山幸義 http://logic.cs.tsukuba.ac.jp/~kam 計算とは? コンピュータが計算できることは? 1 2 関数 = 計算? NO 部分関数と計算 入力 1 入力 2 関数 出力 入力 1 入力 2 部分関数 出力 停止しない 入力 1 入力 2 コンピュータ 止まらないことがある出力 3 入力 1 入力 2 コンピュータ 出力 停止しない

More information

PostgreSQL SQL チューニング入門 ~ Explaining Explain より ~ 2012 年 11 月 30 日 株式会社アシスト 田中健一朗

PostgreSQL SQL チューニング入門 ~ Explaining Explain より ~ 2012 年 11 月 30 日 株式会社アシスト 田中健一朗 PostgreSQL SQL チューニング入門 ~ Explaining Explain より ~ 2012 年 11 月 30 日 株式会社アシスト 田中健一朗 アジェンダ 1.EXPLAIN とは 2. 表アクセスの基本 3. 結合の基本 4. 統計情報とは 5.EXPLAIN コマンド 6. 問題解決例 7. まとめ 2 1.EXPLAIN とは 実行計画とは - 目的地は 1 つでもアクセス方法は複数

More information

情報処理Ⅰ

情報処理Ⅰ Java フローチャート -1- フローチャート ( 流れ図 ) プログラムの処理手順 ( アルゴリズム ) を図示したもの 記号の種類は下記のとおり 端子記号 ( 開始 終了 ) 処理記号計算, 代入等 条件の判定 条件 No ループ処理 LOOP start Yes データの入力 出力 print など 定義済み処理処理名 end サンプルグログラム ( 大文字 小文字変換 ) 大文字を入力して下さい

More information

Quick Sort 計算機アルゴリズム特論 :2017 年度 只木進一

Quick Sort 計算機アルゴリズム特論 :2017 年度 只木進一 Quick Sort 計算機アルゴリズム特論 :2017 年度 只木進一 2 基本的考え方 リスト ( あるいは配列 )SS の中の ある要素 xx(pivot) を選択 xx より小さい要素からなる部分リスト SS 1 xx より大きい要素からなる部分リスト SS 2 xx は SS 1 または SS 2 に含まれる 長さが 1 になるまで繰り返す pivot xx の選び方として 中央の要素を選択すると効率が良い

More information

Microsoft Word - NonGenList.doc

Microsoft Word - NonGenList.doc ジェネリクスとコンパレータを使用しないリストのプログラム例 1. ポインタによる線形リスト LinkedListNG.java: ポインタによる線形リストのクラス LinkedListNG LinkedListTesterNG.java: LinkedListNG を利用するプログラム例 2. カーソルによる線形リスト AryLinkedListNG.java: カーソルによる線形リストのクラス AryLinkedListNG

More information

PowerPoint Presentation

PowerPoint Presentation 今週のトピックス アルゴリズムとデータ構造 第 10 回講義 : 探索その 1 探索 (search) 逐次探索 (sequential search) 2 分探索 (binary search) 内挿探索 (interpolation search) Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 1 Produced

More information

NLP プログラミング勉強会 6 かな漢字変換 自然言語処理プログラミング勉強会 6 - かな漢字変換 Graham Neubig 奈良先端科学技術大学院大学 (NAIST) 1

NLP プログラミング勉強会 6 かな漢字変換 自然言語処理プログラミング勉強会 6 - かな漢字変換 Graham Neubig 奈良先端科学技術大学院大学 (NAIST) 1 自然言語処理プログラミング勉強会 6 - かな漢字変換 Graham Neubig 奈良先端科学技術大学院大学 (NAIST) 1 かな漢字変換のモデル 日本語入力でひらがな列 X をかな漢字混じり文 Y へ変換 かなかんじへんかんはにほんごにゅうりょくのいちぶ かな漢字変換は日本語入力の一部 HMM や単語分割と同じく 構造化予測の一部 2 選択肢が膨大! かなかんじへんかんはにほんごにゅうりょくのいちぶ

More information

第 3 回 Java 講座 今回の内容 今週の Java 講座はコレクション 拡張 for 文, ガベージコレクションについて扱う. 今週の Java 講座は一番内容が薄いも のになるだろう. コレクション コレクションとは大きさが決まっていない配列だと考えればよい. コレクションには List 先

第 3 回 Java 講座 今回の内容 今週の Java 講座はコレクション 拡張 for 文, ガベージコレクションについて扱う. 今週の Java 講座は一番内容が薄いも のになるだろう. コレクション コレクションとは大きさが決まっていない配列だと考えればよい. コレクションには List 先 第 3 回 Java 講座 今回の内容 今週の Java 講座はコレクション 拡張 for 文, ガベージコレクションについて扱う. 今週の Java 講座は一番内容が薄いも のになるだろう. コレクション コレクションとは大きさが決まっていない配列だと考えればよい. コレクションには List 先頭の要素要素から最後までが直線的に直結している構造 Set 同じものは含まないという構造. 要素間につながりはない

More information

2011 年度春学期基礎ゼミナール ( コンピューティングクラス ) A コース 1 / 18 コンピュータリテラシー A コース 第 10 講 [ 全 15 講 ] 2011 年度春学期 基礎ゼミナール ( コンピューティングクラス ) 同志社大学経済学部 DIGITAL TEXT コンピュータリ

2011 年度春学期基礎ゼミナール ( コンピューティングクラス ) A コース 1 / 18 コンピュータリテラシー A コース 第 10 講 [ 全 15 講 ] 2011 年度春学期 基礎ゼミナール ( コンピューティングクラス ) 同志社大学経済学部 DIGITAL TEXT コンピュータリ A コース 1 / 18 コンピュータリテラシー A コース 第 10 講 [ 全 15 講 ] 2011 年度春学期 基礎ゼミナール ( コンピューティングクラス ) 第 10 講データ処理 5 10-1 ブック ( ファイル ) を開く第 8 講で保存した meibo.xlsx を開きましょう 2 / 18 10-2 行列の非表示と再表示 E 列 と F 列 を非表示にしましょう 1. 列番号

More information

『赤すぐ』『妊すぐ』<出産・育児トレンド調査2003>

『赤すぐ』『妊すぐ』<出産・育児トレンド調査2003> 79.9 1.6 UP 86.6% 7.0 UP 61.3% 12.7UP 18-24 3 66.6 3.0 UP 38.7 0.7 UP 14.8 1.9 UP 13.3 0.3UP 4 1 024 1.23 0.01down Topics 5 79.9 1.6UP 7.0 UP 12.7U 3.5 0.4 UP 3.4 0.4 UP 6 73.1% 5.7 UP 75.0% 71.2% 7 53.9%

More information

Microsoft PowerPoint - lecture02.pptx

Microsoft PowerPoint - lecture02.pptx アルゴリズム論 ( 第 10 回 ) マージソート 佐々木研 ( 情報システム構築学講座 ) 講師山田敬三 k-yamada@iwate-pu.ac.jp 内部ソートと外部ソート 内部ソート メモリを使用 外部ソート ファイルを直接操作してソートを行う. 一般に, 主記憶 < 補助記憶 外部ソートの留意点 1. 記憶空間を節約することは考慮しない. ソートを高速化するためには, 同じデータをいくつかのファイルに同時に格納

More information

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

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

More information

Microsoft PowerPoint - kougi11.ppt

Microsoft PowerPoint - kougi11.ppt C プログラミング演習 中間まとめ 2 1 ソフトウエア開発の流れ 機能設計 外部仕様 ( プログラムの入力と出力の取り決め ) 構成設計 詳細設計 論理試験 内部データ構造や関数呼び出し方法などに関する取り決めソースプログラムの記述正しい入力データから正しい結果が得られるかテスト関数単位からテストをおこなう 耐性試験 異常な入力データに対して, 異常を検出できるかテスト異常終了することはないかテスト

More information

Microsoft Word - NonGenTree.doc

Microsoft Word - NonGenTree.doc ジェネリクスとコンパレータを使用しない 2 分探索木のプログラム例 BinTreeNG.java: 2 分探索木のクラス BinTreeNG BinTreeTesterNG.java: BinTreeNG を利用するプログラム例 === BinTreeNG.java =========================================================================

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 5 回演習 前回までのお話 ポインタ ポインタを用いた文字列処理 構造体 ファイル 再帰的構造体 リスト構造 動的メモリ管理 今日のお題 ポインタやファイルなど これまでの内容の練習 教材 以前 以下に単語を収録したファイルがあることを紹介した : /usr/share/dict/words この中からランダムに単語を取り出したファイルを用意した http://sun.ac.jp/prof/yamagu/2019app/

More information

第2回

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

More information

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

Microsoft PowerPoint - 06graph3.ppt [互換モード] I118 グラフとオートマトン理論 Graphs and Automata 担当 : 上原隆平 (Ryuhei UEHARA) uehara@jaist.ac.jp 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 - lec10.ppt

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

More information

Microsoft Word - no206.docx

Microsoft Word - no206.docx 3.2 双方向リスト 今までのリストは 前から順にたどることしかできませんでした 今度は逆にもたどることができる 双方向リストを扱います この場合は 構造体には次を表すポインタの他に前を表すポインタを持つ ことになります 今回は最初と最後をポインタを使うと取り扱いが面倒になるので 最初 (start) と最後 (end) を どちらとも構造体 ( 値は意味を持たない ) を使うことにします こうすることによって

More information

デジタル表現論・第4回

デジタル表現論・第4回 デジタル表現論 第 4 回 劉雪峰 ( リュウシュウフォン ) 2016 年 5 月 2 日 劉 雪峰 ( リュウシュウフォン ) デジタル表現論 第 4 回 2016 年 5 月 2 日 1 / 14 本日の目標 Java プログラミングの基礎 出力の復習 メソッドの定義と使用 劉 雪峰 ( リュウシュウフォン ) デジタル表現論 第 4 回 2016 年 5 月 2 日 2 / 14 出力 Systemoutprint()

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 - qcomp.ppt [互換モード]

Microsoft PowerPoint - qcomp.ppt [互換モード] 量子計算基礎 東京工業大学 河内亮周 概要 計算って何? 数理科学的に 計算 を扱うには 量子力学を計算に使おう! 量子情報とは? 量子情報に対する演算 = 量子計算 一般的な量子回路の構成方法 計算って何? 計算とは? 計算 = 入力情報から出力情報への変換 入力 計算機構 ( デジタルコンピュータ,etc ) 出力 計算とは? 計算 = 入力情報から出力情報への変換 この関数はどれくらい計算が大変か??

More information

Microsoft PowerPoint - IntroAlgDs-05-7.ppt

Microsoft PowerPoint - IntroAlgDs-05-7.ppt アルゴリズムとデータ構造入門 2005 年 11 月 15 日 アルゴリズムとデータ構造入門 2. データによる抽象の構築 2 Building Abstractions with Data 奥乃 博 具体から抽象へは行けるが 抽象から具体へは行けない ( 畑村洋太郎 直観でわかる数学 岩波書店 ) 1 11 月 15 日 本日のメニュー 2 Building Abstractions with Data

More information

PowerPoint Presentation

PowerPoint Presentation 最適化手法 第 回 工学部計数工学科 定兼邦彦 http://researchmap.jp/sada/resources/ 前回の補足 グラフのある点の隣接点をリストで表現すると説明したが, 単に隣接点の集合を持っていると思ってよい. 互いに素な集合のデータ構造でも, 単なる集合と思ってよい. 8 3 4 3 3 4 3 4 E v 重み 3 8 3 4 4 3 {{,},{3,8}} {{3,},{4,}}

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

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

アルゴリズムとデータ構造 講義 アルゴリズムとデータ構造 第 3 回基本的なデータ構造 ( リスト スタック キュー ) 大学院情報科学研究科情報理工学専攻情報知識ネットワーク研究室喜田拓也 講義資料 2018/5/23 今日の内容 基本的なデータ構造リスト : 最も基本的なデータ集合の表現 配列 / 連結リスト / 双連結リストによる実装 スタック : 積み上げ式のデータ格納方式キュー : 入れた順に取り出せるデータ格納方式

More information

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

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

More information

NLP プログラミング勉強会 4 単語分割 自然言語処理プログラミング勉強会 4 - 単語分割 Graham Neubig 奈良先端科学技術大学院大学 (NAIST) 1

NLP プログラミング勉強会 4 単語分割 自然言語処理プログラミング勉強会 4 - 単語分割 Graham Neubig 奈良先端科学技術大学院大学 (NAIST) 1 自然言語処理プログラミング勉強会 4 - 単語分割 Graham Neubig 奈良先端科学技術大学院大学 (NAIST) 1 単語分割とは 日本語や中国語 タイ語などは英語と違って単語の間に空白を使わない 単語分割を行う 単語分割は単語の間に明示的な区切りを入れる 単語分割を行う 2 必要なプログラミング技術 : 部分文字列 文字列の一部からなる部分文字列を作る方法 $./my-program.py

More information

alg2015-3r3.ppt

alg2015-3r3.ppt 1 アルゴリズムとデータ 構造 第 3 回基本的なデータ構造 ( リスト スタック キュー ) プログラミング で学ぶところ 授業で学ぶデータ構造の範囲 機械語のデータ型 レジスタ値とその番地 基本データ型 char, int, large int, double, 構造データ型 配列 (array), 構造体 (struct) 基本的データ構造 リスト (linked list), スタック (stack),

More information

プログラミング入門1

プログラミング入門1 Java 2 第 9 回表形式データ (2) 1 [ 復習 ] 配列と複合データを用いた表形式データの作成表へのレコードの登録 ( 考え方 ) (1) 配列を作成 ProductData [] list [0] [1] [2] (3) 配列に登録 (2) インスタンスを作成 name:apple price:100 (2)(3) を繰り返す ProductData [] list [0] name:apple

More information

Microsoft PowerPoint - 7.pptx

Microsoft PowerPoint - 7.pptx 7. 木構造 7-1. データ構造としての木 グラフ理論での木の定義 根付き木 7-2.2 分探索木 7-3. 高度な木 ( 平衡木 ) AVL 木 B 木 1 7-1 1. データ構造としての木 2 木構造 木構造を表すデータ構造の一つとしてヒープがある しかし ヒープでは 配列を用いプではるため 要素数で木の形状が一通りに決定してしまった ここでは 再帰的なデータ構造を用いることにより より柔軟な木構造が構築可能なより柔軟な木構造が構築可能なことを見ていく

More information

JAVA入門

JAVA入門 JAVA 入門 3 配列とコレクション 配列 1. 配列とは? 簡単 JAVA 説明 11 配列 同じ型の値を複数まとめて記憶する という機能を持つもの ということですが イメージとしては 同じ型の入れ物を複数用意する というイメージです int int int 簡単 JAVA 説明 11 配列の準備 2. 配列の準備 行うことは次の 2 つです 1 配列の宣言 2 配列要素の確保 簡単 JAVA

More information

Microsoft PowerPoint - ppt-7.pptx

Microsoft PowerPoint - ppt-7.pptx テーマ 7: 最小包含円 点集合を包含する半径最小の円 最小包含円問題 問題 : 平面上に n 点の集合が与えられたとき, これらの点をすべて内部に含む半径最小の円を効率よく求める方法を示せ. どの点にも接触しない包含円 すべての点を内部に含む包含円を求める 十分に大きな包含円から始め, 点にぶつかるまで徐々に半径を小さくする 1 点にしか接触しない包含円 現在の中心から周上の点に向けて中心を移動する

More information

Microsoft PowerPoint - 11.pptx

Microsoft PowerPoint - 11.pptx ポインタと配列 ポインタと配列 配列を関数に渡す 法 課題 : 配列によるスタックの実現 ポインタと配列 (1/2) a が配列であるとき, 変数の場合と同様に, &a[0] [] の値は配列要素 a[0] のアドレス. C 言語では, 配列は主記憶上の連続領域に割り当てられるようになっていて, 配列名 a はその配列に割り当てられた領域の先頭番地となる. したがって,&a[0] と a は同じ値.

More information

r3.dvi

r3.dvi 2012 3 / Lisp(2) 2012.4.19 1 Lisp 1.1 Lisp Lisp (1) (setq) (2) (3) setq defun (defun (... &aux...)...) ( ) ( nil ) [1]> (defun sisoku (x y &aux wa sa sho seki) (setq wa (+ x y)) (setq sa (- x y)) (setq

More information

第2回

第2回 第 4 回基本データ構造 1 明星大学情報学科 2 3 年前期 アルゴリズムとデータ構造 Ⅰ 第 4 回 Page 1 配列 スタック キューとその操作 4-1. 配列とその操作 配列型 同じ型の変数を並べたもの 配列にする型は 基本型 配列型 構造体 ポインタいずれでもよい 要素の並べ方を 次元 という 1 次元配列 ( 直線状 ) 2 次元配列 ( 平面状 ) 3 次元配列 ( 立体状 ) a[5]

More information

情報基礎A

情報基礎A 情報基礎 A 第 10 週 プログラミング入門 マクロ基本文法 4 1 配列 FOR~NEXT 全眞嬉 東北大学情報科学研究科システム情報科学専攻情報システム評価学分野 http://www.dais.is.tohoku.ac.jp/~jinhee/jyoho-19.html 6 人分の合計を計算 2 socre(0) socre(1) socre(2) socre(3) socre(4) socre(5)

More information

文字列操作と正規表現

文字列操作と正規表現 文字列操作と正規表現 オブジェクト指向プログラミング特論 2018 年度只木進一 : 工学系研究科 2 文字列と文字列クラス 0 個以上の長さの文字の列 Java では String クラス 操作 文字列を作る 連結する 文字列中に文字列を探す 文字列中の文字列を置き換える 部分文字列を得る 3 String クラス 文字列を保持するクラス 文字列は定数であることに注意 比較に注意 == : オブジェクトとしての同等性

More information

memo

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

More information

Microsoft PowerPoint - kougi7.ppt

Microsoft PowerPoint - kougi7.ppt C プログラミング演習 第 7 回メモリ内でのデータの配置 例題 1. 棒グラフを描く 整数の配列から, その棒グラフを表示する ループの入れ子で, 棒グラフの表示を行う ( 参考 : 第 6 回授業の例題 3) 棒グラフの1 本の棒を画面に表示する機能を持った関数を補助関数として作る #include "stdafx.h" #include void draw_bar( int

More information

RF_1

RF_1 RF_1 10/04/16 10:32 http://rftechno.web.infoseek.co.jp/rf_1.html 1/12 RF_1 10/04/16 10:32 http://rftechno.web.infoseek.co.jp/rf_1.html 2/12 RF_1 10/04/16 10:32 http://rftechno.web.infoseek.co.jp/rf_1.html

More information

r3.dvi

r3.dvi / 94 2 (Lisp ) 3 ( ) 1994.5.16,1994.6.15 1 cons cons 2 >(cons a b) (A. B).? Lisp (S ) cons 2 car cdr n A B C D nil = (A B C D) nil nil A D E = (A (B C) D E) B C E = (A B C D. E) A B C D B = (A. B) A nil.

More information

Microsoft PowerPoint - JKO18-learning.ppt

Microsoft PowerPoint - JKO18-learning.ppt 観察からの学習 Chapter 18 Section 1 3,5 概要 学習エージェント 帰納的学習 決定木学習 学習 学習は未知の環境では本質的 設計者が全能でないときと同値 学習はシステム構成の方法として有用 その方法を書き下そうとするよりもエージェントを現実に立ち向かわせる 学習は性能を向上させるようにエージェントの決定機構を修正させる Learning agents 学習要素 学習要素の設計は次のものに影響される

More information