PowerPoint Presentation

Size: px
Start display at page:

Download "PowerPoint Presentation"

Transcription

1 今週のトピックス アルゴリズムとデータ構造 第 10 回講義 : 探索その 1 探索 (search) 逐次探索 (sequential search) 2 分探索 (binary search) 内挿探索 (interpolation search) Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 1 Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 2 探索 (search) 探索 簡単に言えば データの中から データを探すこと. 前もって格納されている多くのデータの中からほしいデータを引き出す操作. 探索のプロセス 与えられた探索キーと一致するキーを持つ ( 全ての ) データを探し出す. 探索キーはほしいデータの特徴である 探索は与えられた特徴を持つデータを探し出すこと. 探索の例 辞書 (dictionary) 英 - 英辞書 英 - 日辞書 など キー : 単語 レコード : 単語に関連する情報 探索 : 与えられた単語の発音 意味などを調べること 記号表 (symbol table): プログラムを管理するためにシステムが作った 辞書 キー : プログラムで使用されている変数名 レコード : 変数の種類 サイズ 関連メソッドなどの情報 探索 : コンパイラが プログラム中の変数名に従ってプログラムを機械語に翻訳するために 必要な情報を引き出す 一般的に 辞書はデータベース 知識ベースと考えられる Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 3 Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 4 1

2 データベースの基本操作 Initialize: データ構造を初期設定する Search: 与えられたキーをもつレコードを探索する Insert: 新しいレコードを挿入する Delete: 指定されたレコードを削除する Join:2つの辞書を合併して1つの辞書を作る Sort: 辞書を整列する 逐次探索 (sequential search) プログラミング C のリニャサーチである 基本的な考え方 配列にレコードを格納し 新しいレコードを挿入する時に配列の最後におき レコードを探索する時には配列を順番に探していく 実現法 配列による 連結リストによる Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 5 Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 6 配列によるプログラム例 (p. 5, Vol. 2) static struct node {int key; int info; ; static struct node a[maxn+1]; static int N; seqinitialize() { N = 0; 最後の項目から調べ 見つ int search(int v) { かったら終了 ;a[0].keyにvを int x = N+1; 入れたので 必ず終了する a[0].key = v; a[0].info = -1; while (v!= a[--x].key) ; return a[x].info; seqinsert(int v, int info) { a[++n].key = v; a[n].info = info; Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 7 リストによる実現 : 初期化 static struct node { int key, info; struct node *next; ; static struct node *head, *z; listinitialize() { head = (struct node *) malloc (sizeof *head); z = (struct node *) malloc (sizeof *z); head->next = z; z->next = z; z->info =-1; (p. 7, Vol. 2) Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 8 2

3 連結リストによる実現 int listsearch(int v) { struct node *t = head; z->key = v; while (v > t->key) t = t->next; if (v!= t->key) return z->info; return t->info; リストは事前に整列されていることを前提とする リストによる実現 : 挿入 listinsert(int v, int info) { struct node *x, *t = head; z->key = v; while (v > t->next->key) t = t->next; x = (struct node *) malloc(sizeof *x); x->next = t->next; t->next =x; x->key = v; x->info = info; メリット : 整列が簡単にできる Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 9 Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 10 逐次探索の計算量 配列による実現 不成功探索 N+1 回の比較 成功探索 平均約 N/2 回の比較 整列リストによる実現 成功 不成功とも 平均約 N/2 回の比較 整列されていないリストによる実現 配列とほぼ同じ 2 分探索法 (binary search) 基本的考え方 : 分割統治法を適用 目的 : 探索時間を減らす レコードの集合を 2 つの部分に分けて 探すキーがどちらの部分に属しているかを判定し キーが属する部分を調べる レコードの集合を分割する方法 レコードを整列し 整列した配列の添字を用いて調べるべき部分を指定する Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 11 Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 12 3

4 2 分探索のプログラム ( 非再帰 ) int binarysearch(int v) { int l = 1, r = N, x; while (r >= l) { x = (l+r)/2; if (v < a[x].key) r = x-1; else l = x+1; if (v == a[x].key) return a[x].info; return 1; (p. 9, Vol. 2) 2 分探索の様子 キー M を探す様子 Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 13 Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 14 内挿探索 (interpolation search) 内挿探索の意味 : 線形予測 2 分探索の x = (r+l)/2 = l + (r-l)/2 を x = l + (v-a[l].key)(r-l)/(a[r].key-a[l].key) にすると 内挿探索 l a[r].key v a[l].key x r x l v a[ l]. key r l a[ r]. key a[ l]. key Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 15 Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 16 4

5 内挿探索の例 i 番目のアルファベットを i で表す M(=13) を探索するようす 2 分探索と内挿探索の比較 両方とも整列されているデータを探索する 2 分探索 真ん中のデータが 探したいデータかどうか調べ 探したいデータより小さければ左側に対して 大きければ右側に対して 同じことを繰り返す 内挿探索 真ん中のデータのかわりに 探したいデータの位置をある程度予測してからデータを調べる Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 17 Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 18 2 分探索の例 :20 を探したい 内挿探索の例 :20 を探したい Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 19 Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 20 5

6 2 分探索と内挿探索の計算量 2 分探索 : 成功 不成功とも 比較は lgn+1 回以下 内挿 : 成功 不成功とも 比較は lglgn+1 回以下 例 :N=10 億の場合 内挿探索の比較回数は 5 より小さいので 2 分探索よりかなり良い クイズ 次のようなソートされたデータがある : (1) このデータから二分探索を用いて 9 を探索する過程を書きなさい (2) このデータから内挿探索を用いて 9 を探索する過程を書きなさい Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 21 Produced by Qiangfu Zhao (Since 2009), All rights reserved (c) 22 6

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

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

More information

Microsoft PowerPoint - 05.pptx

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

More information

データ構造

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

More information

Taro-リストⅢ(公開版).jtd

Taro-リストⅢ(公開版).jtd リスト Ⅲ 0. 目次 2. 基本的な操作 2. 1 リストから要素の削除 2. 2 リストの複写 2. 3 リストの連結 2. 4 問題 問題 1 問題 2-1 - 2. 基本的な操作 2. 1 リストから要素の削除 まず 一般的な処理を書き つぎに 特別な処理を書く 一般的な処理は 処理 1 : リスト中に 削除するデータを見つけ 削除する場合への対応 特別な処理は 処理 2 : 先頭のデータを削除する場合への対応

More information

Taro-リストⅠ(公開版).jtd

Taro-リストⅠ(公開版).jtd 0. 目次 1. 再帰的なデータ構造によるリストの表現 1. 1 リストの作成と表示 1. 1. 1 リストの先頭に追加する方法 1. 1. 2 リストの末尾に追加する方法 1. 1. 3 昇順を保存してリストに追加する方法 1. 2 問題 問題 1 問題 2-1 - 1. 再帰的なデータ構造によるリストの表現 リストは データの一部に次のデータの記憶場所を示す情報 ( ポインタという ) を持つ構造をいう

More information

情報処理Ⅰ

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

More information

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

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

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

memo

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

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

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

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

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

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

More information

新・明解Javaで学ぶアルゴリズムとデータ構造

新・明解Javaで学ぶアルゴリズムとデータ構造 第 3 章 探索 Arrays.binarySearch 743 3-1 探索 探索 searching key 配列 探索 Fig.3-1 b c 75 a 6 4 3 2 1 9 8 2 b 64 23 53 65 75 21 3-1 53 c 5 2 1 4 3 7 4 Fig.3-1 a 763 3-2 線形探索 線形探索 linear search sequential search 2

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

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

memo

memo 計数工学プログラミング演習 ( 第 6 回 ) 2017/05/16 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

Microsoft Word - no12.doc

Microsoft Word - no12.doc 7.5 ポインタと構造体 構造体もメモリのどこかに値が格納されているのですから 構造体へのポインタ も存在します また ポインタも変数ですから 構造体のメンバに含めることができます まずは 構造体へのポインタをあつかってみます ex53.c /* 成績表 */ #define IDLENGTH 7 /* 学籍番号の長さ */ #define MAX 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

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

第2回

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

More information

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

Taro-2分探索木Ⅱ(公開版).jtd 2 分探索木 Ⅱ 0. 目次 5. 2 分探索木の操作 5. 1 要素の探索 5. 2 直前の要素の探索 5. 3 直後の要素の探索 5. 4 要素の削除 5. 5 問題 問題 1-1 - 5. 2 分探索木の操作 5. 1 要素の探索 要素 44 の探索 (1) 要素 と 44 を比較して 左部分木をたどる (2) 要素 33 と 44 を比較して 右部分木をたどる (3) 要素 44 を見つけた

More information

memo

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

More information

Microsoft PowerPoint - 06.pptx

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

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

第2回

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

More information

Microsoft PowerPoint - kougi9.ppt

Microsoft PowerPoint - kougi9.ppt C プログラミング演習 第 9 回ポインタとリンクドリストデータ構造 1 今まで説明してきた変数 #include "stdafx.h" #include int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int i; double start_x; double step_x; FILE*

More information

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

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

More information

ハピタス のコピー.pages

ハピタス のコピー.pages Copyright (C) All Rights Reserved. 10 12,500 () ( ) ()() 1 : 2 : 3 : 2 4 : 5 : Copyright (C) All Rights Reserved. Copyright (C) All Rights Reserved. Copyright (C) All Rights Reserved. Copyright (C) All

More information

Copyright 2008 All Rights Reserved 2

Copyright 2008 All Rights Reserved 2 Copyright 2008 All Rights Reserved 1 Copyright 2008 All Rights Reserved 2 Copyright 2008 All Rights Reserved 3 Copyright 2008 All Rights Reserved 4 Copyright 2008 All Rights Reserved 5 Copyright 2008 All

More information

PowerPoint プレゼンテーション

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

More information

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

Taro-再帰関数Ⅱ(公開版).jtd 0. 目次 6. 2 項係数 7. 二分探索 8. 最大値探索 9. 集合 {1,2,,n} 上の部分集合生成 - 1 - 6. 2 項係数 再帰的定義 2 項係数 c(n,r) は つぎのように 定義される c(n,r) = c(n-1,r) + c(n-1,r-1) (n 2,1 r n-1) = 1 (n 0, r=0 ) = 1 (n 1, r=n ) c(n,r) 0 1 2 3 4 5

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

nlp1-04a.key

nlp1-04a.key 自然言語処理論 I. 文法 ( 構文解析 ) その 構文解析 sytctic lysis, prsig 文の構文的な構造を決定すること句構造文法が使われることが多い文法による構文木は一般に複数ある 構文木の違い = 解釈の違い 構文解析の目的 句構造文法の規則を使って, 文を生成できる構文木を全て見つけだすこと 文法が入力文を生成できるかどうかを調べるだけではない pro I 構文解析とは 構文木の違い

More information

Microsoft Word - NonGenList.doc

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

More information

文字列操作と正規表現

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

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

GEC-Java

GEC-Java Copyright (C) Junko Shirogane, Waseda University 2019, All rights reserved. 1 プログラミング初級 (Java) 第 14 回継承 白銀純子 第 14 回の内容 継承 オーバーライド ポリモーフィズム Copyright (C) Junko Shirogane, Waseda University 2019, All rights

More information

1000 Copyright(C)2009 All Rights Reserved - 2 -

1000 Copyright(C)2009 All Rights Reserved - 2 - 1000 Copyright(C)2009 All Rights Reserved - 1 - 1000 Copyright(C)2009 All Rights Reserved - 2 - 1000 Copyright(C)2009 All Rights Reserved - 3 - 1000 Copyright(C)2009 All Rights Reserved - 4 - 1000 Copyright(C)2009

More information

Taro-最大値探索法の開発(公開版

Taro-最大値探索法の開発(公開版 最大値探索法の開発 0. 目次 1. 開発過程 1 目標 1 : 4 個のデータの最大値を求める 目標 2 : 4 個のデータの最大値を求める 改良 : 多数のデータに対応するため 配列を使う 目標 3 : n 個のデータの最大値を求める 改良 : コードを簡潔に記述するため for 文を使う 目標 4 : n 個のデータの最大値を求める 改良 : プログラムをわかりやすくするため 関数を使う 目標

More information

Microsoft PowerPoint - kougi11.ppt

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

More information

人工知能入門

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

More information

Microsoft PowerPoint - lec10.ppt

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

More information

明解Javaによるアルゴリズムとデータ構造

明解Javaによるアルゴリズムとデータ構造 74 searching 3 key Fig.3-1 75 2を探索 53を探索 3-1 5 2 1 4 3 7 4 を探索 Fig.3-1 76 3 linear searchsequential search 2 Fig.3-2 0 ❶ ❷ ❸ 配列の要素を先頭から順に走査していく 探索すべき値と等しい要素を発見 Fig.3-2 6 4 3 2 3-2Fig.3-3 77 5 Fig.3-3 0

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

untitled

untitled http://www.riskdatabank.co.jp The of Japan, Ltd. All rights reserved. 2 The of Japan, Ltd. All rights reserved. 3 The of Japan, Ltd. All rights reserved. 4 The of Japan, Ltd. All rights reserved. 5 The

More information

初心者にもできるアメブロカスタマイズ新2016.pages

初心者にもできるアメブロカスタマイズ新2016.pages Copyright All Rights Reserved. 41 Copyright All Rights Reserved. 60 68 70 6 78 80 Copyright All Rights Reserved. FC2 97 Copyright All Rights Reserved. Copyright All Rights Reserved. Copyright All Rights

More information

- 2 Copyright (C) 2006. All Rights Reserved.

- 2 Copyright (C) 2006. All Rights Reserved. - 2 Copyright (C) 2006. All Rights Reserved. 2-3 Copyright (C) 2006. All Rights Reserved. 70-4 Copyright (C) 2006. All Rights Reserved. ...1...3...7...8 1...9...14...16 2...18...20...21 3...22...23...23...24

More information

memo

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

More information

Microsoft Word - NonGenTree.doc

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

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 - 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

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 4 回再帰的構造体 前回の出席確認演習 #include int main() { FILE *fp; int c, linecount, length, maxlength; fp=fopen("/usr/share/dict/words","r"); if (fp == NULL) return 1; linecount=0; length=0;

More information

PG13-6S

PG13-6S プログラム演習 I レポート 学籍番号 担当教員 : 小林郁夫 氏名 実習日平成 26 年 7 月 4 日 提出期限 7 月 11 日提出日 7 月 17 日 1 週遅れ 第 13 回 テーマ : 並べ替えのアルゴリズム 教員使用欄 15 S A B C 再提出 課題 1 バブルソートの実行画面 プログラムのソースコード // day13_akb1.cpp : コンソールアプリケーションのエントリポイントを定義します

More information

Microsoft PowerPoint - 6.pptx

Microsoft PowerPoint - 6.pptx 6. データ構造入門 6-1. 連結リスト (Linked List) 6-2. スタック (Stack) 6-. キュー (Queue) 6-4. デク (Double-Ended-Queue) 6-. 抽象データ型 (Abstract Data Type) データ構造とは データの保存を効率的に行うもの 1 ito 2.712.14 suzuki データ構造 1 2 6-1. 連結リスト (Linked

More information

Copyright All Rights Reserved. -2 -!

Copyright All Rights Reserved. -2 -! http://ameblo.jp/admarketing/ Copyright All Rights Reserved. -2 -! Copyright All Rights Reserved. -3- Copyright All Rights Reserved. -4- Copyright All Rights Reserved. -5 - Copyright All Rights Reserved.

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

program7app.ppt

program7app.ppt プログラム理論と言語第 7 回 ポインタと配列, 高階関数, まとめ 有村博紀 吉岡真治 公開スライド PDF( 情報知識ネットワーク研 HP/ 授業 ) http://www-ikn.ist.hokudai.ac.jp/~arim/pub/proriron/ 本スライドは,2015 北海道大学吉岡真治 プログラム理論と言語, に基づいて, 現著者の承諾のもとに, 改訂者 ( 有村 ) が加筆修正しています.

More information

Analysis of Algorithms

Analysis of Algorithms アルゴリズムの設計と解析 黄潤和 佐藤温 (TA) 2012.4~ Contents (L3 Search trees) Searching problems AVL tree 2-3-4 trees Red-Black tree 2 Searching Problems Problem: Given a (multi) set S of keys and a search key K, find

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

JAVA入門

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

More information

JAVA入門

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

More information

IPA:セキュアなインターネットサーバー構築に関する調査

IPA:セキュアなインターネットサーバー構築に関する調査 Copyright 2003 IPA, All Rights Reserved. Copyright 2003 IPA, All Rights Reserved. Copyright 2003 IPA, All Rights Reserved. Copyright 2003 IPA, All Rights Reserved. Copyright 2003 IPA, All Rights Reserved.

More information

Microsoft PowerPoint - C4(反復for).ppt

Microsoft PowerPoint - C4(反復for).ppt C 言語プログラミング 繰返し ( for 文と while 文 ) 例題 (10 個のデータの平均を求める ) 手順 入力データをx1,x2,,x10 として, (x1+x2+x3+x4+x5+x6+x7+x8+x9+x10)/10 を計算する データ数が,1000 個,10000 個, となったらどうする? データ数個分の 変数の宣言, scanf 関数の呼出し, 加算式の記述 が必要 1 総和を求めること

More information

Prog1_10th

Prog1_10th 2012 年 6 月 20 日 ( 木 ) 実施ポインタ変数と文字列前回は, ポインタ演算が用いられる典型的な例として, ポインタ変数が 1 次元配列を指す場合を挙げたが, 特に,char 型の配列に格納された文字列に対し, ポインタ変数に配列の 0 番の要素の先頭アドレスを代入して文字列を指すことで, 配列そのものを操作するよりも便利な利用法が存在する なお, 文字列リテラルは, その文字列が格納されている領域の先頭アドレスを表すので,

More information

Microsoft Word - 最終版 バックせどりismマニュアル .docx

Microsoft Word - 最終版 バックせどりismマニュアル .docx ism ISM ISM ISM ISM ISM ISM Copyright (c) 2010 All Rights Reserved. Copyright (c) 2010 All Rights Reserved. Copyright (c) 2010 All Rights Reserved. ISM Copyright (c) 2010 All Rights Reserved. Copyright

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

alg2015-3r3.ppt

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

More information

Analysis of Algorithms

Analysis of Algorithms アルゴリズムの設計と解析 黄潤和 佐藤温 (TA) 2013.4~ Contents (L3 Search trees) Searching problems AVL tree 2-3-4 trees Red-Black trees 2 Searching Problems Problem: Given a (multi)set S of keys and a search key K, find

More information

PowerPoint プレゼンテーション

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

More information

Microsoft PowerPoint - Pro110111

Microsoft PowerPoint - Pro110111 本日の到達目標 : コレクション プログラミング III 及び実習 1. コレクションとは 2. コレクションの種類 3. 使用方法 第 13 回コレクション 1 2 配列 ( 第 3 回 10 月 13 日 ) 演習 2 ファイル Bubble1.java は, 交換ソート ( バブルソート ) のプログラム ( 途中 ) である. プログラムを完成させ, 正しく実行できることを確かめなさい. /edu/g/po3_09/bubble1.java

More information

PowerPoint Presentation

PowerPoint Presentation 幅優先探索アルゴリズム 復習 Javaでの実装 深さ優先探索 復習 Javaでの実装 1 探索アルゴリズムの一覧 問題を解決するための探索 幅優先探索 深さ優先探索 深さ制限探索 均一コスト探索 反復深化法 欲張り探索 山登り法 最良優先探索 2 Breadth-first search ( 幅優先探索 ) 探索アルゴリズムはノードやリンクからなる階層的なツリー構造で構成された状態空間を探索するアルゴリズムです

More information

kiso2-09.key

kiso2-09.key 座席指定はありません 計算機基礎実習II 2018 のウェブページか 第9回 ら 以下の課題に自力で取り組んで下さい 計算機基礎実習II 第7回の復習課題(rev07) 第9回の基本課題(base09) 第8回試験の結果 中間試験に関するコメント コンパイルできない不完全なプログラムなど プログラミングに慣れていない あるいは複雑な問題は 要件 をバラして段階的にプログラムを作成する exam08-2.c

More information

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

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

More information

Microsoft Word - no206.docx

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

More information

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

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

More information

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

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

More information

Microsoft Word - 3new.doc

Microsoft Word - 3new.doc プログラミング演習 II 講義資料 3 ポインタ I - ポインタの基礎 1 ポインタとは ポインタとはポインタは, アドレス ( データが格納されている場所 ) を扱うデータ型です つまり, アドレスを通してデータを間接的に処理します ポインタを使用する場合の, 処理の手順は以下のようになります 1 ポインタ変数を宣言する 2 ポインタ変数へアドレスを割り当てる 3 ポインタ変数を用いて処理 (

More information

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a = 問 1 配列の宣言整数型配列 data1 にデータが初期設定されている この配列 data1 のデータを下図のように 整数型配列 data2 に代入しなさい また data2 の内容を printf( "data2[0] = %d\n", data2[0] ); printf( "data2[5] = %d\n", data2[5] ); を用いて出力しなさい 実行結果 data2[0] = 76

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 5 回 繰り返し (while ループ ) 授業開始前に ログオン後 不要なファイルを削除し て待機してください Java 1 第 5 回 2 参考書について 参考書は自分にあったものをぜひ手元において自習してください 授業の WEB 教材は勉強の入り口へみなさんを案内するのが目的でつくられている これで十分という訳ではない 第 1 回に紹介した本以外にも良書がたくさんある

More information

データ構造

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

More information

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - prog03.ppt プログラミング言語 3 第 03 回 (2007 年 10 月 08 日 ) 1 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 2/33 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/java06/ にアクセスすると 教材があります 2007 年 10 月 08 日分と書いてある部分が 本日の教材です

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

<4D F736F F F696E74202D20352D335F8D5C90AC CF909482CC90B690AC82C695D28F572E707074>

<4D F736F F F696E74202D20352D335F8D5C90AC CF909482CC90B690AC82C695D28F572E707074> RD_301 構成要素一覧と検索 から構成要素の編集辞書 ( 削除 ) を作る 作成 ( 編集 ) する削除辞書を開きます 構成要素を検索します ドラック & ドロップでも OK 範囲を選択して右クリック 右クリック 削除辞書に登録 ( 追加 ) したい構成要素を選択しコピーします 削除辞書に追加 ( 貼りつけ ) ます Step5. 削除辞書に構成要素が登録 ( 追加 ) されます 構成要素一覧と検索

More information

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

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

More information

論理と計算(2)

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

More information

Microsoft PowerPoint - lecture02.pptx

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

More information

Microsoft Word - 中間試験 その1_解答例.doc

Microsoft Word - 中間試験 その1_解答例.doc 問題 1.C 言語 情報技術 Ⅱ 前半中間試験 次の宣言をしている時 以下の問いに答えよ unsigned char moji_1; struct Kouzou { unsigned char code; unsigned char str[10]; }; struct Kouzou mk[3]; 明星大学情報学科 3 年後期 情報技術 Ⅱ 中間試験その 1 Page 1 1-1. 各値を求めよ (1)sizeof(

More information

untitled

untitled mitsuya Copyright (C) 2007. All Rights Reserved. 1/1 mitsuya Copyright (C) 2007. All Rights Reserved. 2/2 mitsuya Copyright (C) 2007. All Rights Reserved. 3/3 mitsuya Copyright (C) 2007. All Rights Reserved.

More information

PowerPoint Presentation

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

More information

基礎計算機演習 実習課題No6

基礎計算機演習 実習課題No6 実習課題 No.6 課題は 3 題ある. 課題 6-1 時間内提出 次の実行例のように, 名簿を出力するプログラムをつくりたい. このプログラムでは, まず人数をたずね, 次にその人数分の名前を入力し, それを再びコンソールに出力する. なお, 空の名前が入力されても終了せずにその欄は空欄で出力するものとする. 注意とヒント この課題では,string 型の配列をまず宣言する. このとき, 配列の要素はちょうど名簿に入力する人数分だけを宣言すること

More information

Microsoft Word - 12

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

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

Microsoft PowerPoint - mp11-06.pptx

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

More information