担当:酒居敬一@A468(sakai.keiichi@kochi-tech.ac.jp) アルゴリズムとデータ構造1 2009年6月8日 担当:酒居敬一@A468(sakai.keiichi@kochi-tech.ac.jp) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/ALG/2009/index.html.

Slides:



Advertisements
Similar presentations
専門教科「情報」(2) 6/1/07. 各科目(続き) 課題研究 課題研究(1) 目標 情報に関する課題を設定し,その課題の解決 を図る学習を通して,専門的な知識と技術の 深化,総合化を図るとともに,問題解決の能 力や自発的,創造的な学習態度を育てる.
Advertisements

身の回りの IT 情報科教育法 後期 10 回 2004/12/18 太田 剛. 目次 1. 最終提出の確認 2. ルータの説明 ( 先週の続き ) 3. 身の回りの IT 1/8 の授業は情報科教員の試験対策です。
エンジニアのためのリテラシー 学生番号順に着席する (クラスa) 1 列 12 人で 前 方
情報処理Ⅱ 第1回 2006年10月6日(金).
大学入門講座の 実施に向けて ●桑折範彦   
Java I 第2回 (4/18)
プログラミング入門 (教科書1~3章) 2005/04/14(Thu.).
知識情報演習Ⅲ(後半第1回) 辻 慶太(水)
アルゴリズムとデータ構造1 2007年6月12日
執筆者:市川伸一 授業者:寺尾 敦 atsushi [at] si.aoyama.ac.jp
データ構造と アルゴリズム 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 知能情報学部 新田直也.
オペレーティングシステムJ/K 2004年10月7日
VBA(Visual Basic Application)を使ったプログラミングの初歩概説
経済情報処理ガイダンス 神奈川大学 経済学部.
プログラミング演習I 2004年4月14日(第1回) 木村巌.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
オペレーティングシステムJ/K 2004年11月4日
情報科学1(G1) 2016年度.
データ構造と アルゴリズム 知能情報学部 新田直也.
計算の理論 I -講義について+αー 月曜3校時 大月美佳.
アルゴリズムとデータ構造 2011年6月9日
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
プログラミング言語論 プログラミング言語論 ガイダンス 水野 嘉明 ガイダンス 1 1.
「教育工学をはじめよう」  第2章     学会発表に向けて     プロポーザルを書く 発表 菊池 陵  皂 智樹.
オブジェクト プログラミング 第1回.
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
基礎プログラミング演習 第1回.
コンピュータ リテラシー 担当教官  河中.
アルゴリズムとデータ構造 2013年6月10日
続・WebApplication研究 2001年度秋学期大岩研究会2 第一回 ~紹介~.
ICT活用指導力チェックシート(小学校版)
シミュレーション論 Ⅱ 第15回 まとめ.
専門教科「情報」 アルゴリズム 第1回 ガイダンス.
データ構造とアルゴリズム論 第1章 アルゴリズムの表現-流れ図
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
設計工学 内容 目的 ★もの作りのための設計 ★実際の現場で役立つ設計 ★機械設計や機械作りの楽しさを知る。 ★工学的な理屈を考える。
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
アルゴリズムとデータ構造1 2005年6月10日
情報スキル活用 第4週 基礎技術-4 : その1(タグのまとめ).
概要.
情報 第1回:状態遷移 その1.
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
ガイダンス 情報システム管理 ガイダンス 水野 嘉明 情報システム管理 1.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
明星大学 情報学科 2012年度前期     情報技術Ⅰ   第1回
経済情報処理ガイダンス 神奈川大学 経済学部.
コンパイラ 2012年10月1日
コンクリート工学研究室 岩城一郎・子田康弘
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
ガイダンス 電子計算機 電気工学科 山本昌志 1E
東京工科大学 コンピュータサイエンス学部 亀田弘之
オペレーティングシステムJ/K (管理のためのデータ構造)
執筆者:難波和明 授業者:寺尾 敦 atsushi [at] si.aoyama.ac.jp
リレーショナル・データベース J2EE I (データベース論) 第2回 /
設計工学 内容 目的 ★もの作りのための設計 ★実際の現場で役立つ設計 ★機械設計や機械作りの楽しさを知る。 ★工学的な理屈を考える。
自然言語処理2015 Natural Language Processing 2015
計算の理論 I -講義について+αー 月曜3校時 大月美佳 平成31年5月18日 佐賀大学理工学部知能情報システム学科.
オペレーティングシステムJ/K (並行プロセスと並行プログラミング)
オペレーティングシステム (ファイル) 2008年11月17日
情報数学Ⅲ 5,6 (コンピュータおよび情報処理)
情報数学5,6 (コンピュータおよび情報処理) 講義内容
データ構造とアルゴリズム論 第9章 連結リスト
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
計算の理論 I -講義について+αー 火曜3校時 大月美佳 平成31年8月23日 佐賀大学理工学部知能情報システム学科.
自然言語処理2016 Natural Language Processing 2016
明星大学 情報学科 2014年度前期     情報技術Ⅰ   第1回
Presentation transcript:

担当:酒居敬一@A468(sakai.keiichi@kochi-tech.ac.jp) アルゴリズムとデータ構造1 2009年6月8日 担当:酒居敬一@A468(sakai.keiichi@kochi-tech.ac.jp) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/ALG/2009/index.html

テキスト    『アルゴリズムとデータ構造』, 石畑清 著(岩波書店) 参考書    『アルゴリズムとデータ構造』, 平田富夫 著(森北出版). 『アルゴリズムとデータ構造入門』, 東野勝治,臼田昭司 著(森北出版). 『ハッカーのたのしみ』, H.S.ウォーレン Jr 著,滝沢徹,鈴木貢, 赤池英夫,葛毅,藤波順久,玉井浩訳(星雲社) 『プログラミング言語C』, B.W.カーニハン,D.M.リッチー 著, 石田晴久 訳(共立出版).

講義計画 アルゴリズムとデータ構造入門(6月8日3時限) アルゴリズムとデータ構造基礎(6月11日3時限) メモリとデータ構造(6月15日3時限) プログラムとアルゴリズム(6月18日3時限) 配列(6月18日5時限) ※ 連結リスト(6月22日3時限) スタック(6月25日3時限) 待ち行列(6月29日3時限) 二分木(7月2日3時限) 第1章の演習(7月2日5時限)  ※ 探索(7月6日3時限) ハッシュ(7月9日3時限) ソート(7月13日3時限) 再帰的アルゴリズム(7月16日3時限) 第2章の演習(7月16日5時限) ※ くり返し処理と再帰的処理(7月23日3時限) 第3章の演習(7月27日3時限) [クォータ末試験](7月30日3時限)

成績評価 クオータ末試験および演習を総合的に 評価する. 試験や演習で持ち込めるもの 教科書・ノート・配布資料 再試験はしない.

本講義の位置づけ プログラムの勉強(技術的な知識) アルゴリズムとデータ構造(抽象的な知識) 計算機のしくみの勉強(低水準の知識) 計算機言語(第1、第2)、実験1 背景は、表現方法としてのプログラミング言語 アルゴリズムとデータ構造(抽象的な知識) 計算機システムの基礎 数学と計算法(計算機はΣや∫を知らない) 計算機のしくみの勉強(低水準の知識) 情報システム工学実験2、計算機アーキテクチャ コーディング対象を知る システム設計の勉強(高水準の知識) ソフトウェア工学、オペレーティングシステム

アルゴリズム+データ構造=プログラム (このように書くのは簡単) アルゴリズムとデータ構造 具体化 抽象化 この間があまりにも遠いのが現実     間を埋めるもの→想像力       想像力を増やす→経験を積む         経験を積むには→楽しさが必要           楽しさって何?               書いたとおり動くのが救い プログラム(Java, C,…)

プログラムとは? アルゴリズムとデータ構造を表現したもの 計算機に仕事をさせる指示・手続き 表現方法にはいっぱいある プログラミング言語の数だけ 構造体やレコードといったデータ構造 連接や条件文や繰り返し文といった制御構造 計算機に仕事をさせる指示・手続き 計算機は指示通りに動くように作られている 動かない場合も稀にある… (教科書2ページ)

アルゴリズムとデータ構造入門 アルゴリズムとデータ構造の役割 なぜ、アルゴリズムとデータ構造について学習するのか データとは? 処理とは? 構造とは? なぜ、アルゴリズムとデータ構造について学習するのか

データとは? 現象や性質を何らかの枠組みに従って形式化したもの 身長、体重、座高、視力 家族構成、居住地、居住形態 CDに記録されている音

処理とは? 物事をさばいて始末をつけること。 対象を分析する 準備する 仕事する 後片付けする 「段取り八分仕事二分」 スケジュールをたてる、データを整理する、など 仕事する 決められた手順でこなす 後片付けする 「段取り八分仕事二分」

構造とは? 全体を形づくっている種々の材料による各部分の組み合わせ。作りや仕組み。 さまざまな要素が相互に関連し合って作り上げている総体。また、各要素の相互関係。 階層的な構造 わかりやすい文書やプログラム

データ構造 ひとつまたは複数のデータを編成し保持する構造のこと データ構造どうしは関連している 計算機のメモリには構造らしい構造がない 設計が必要だけど、その基礎がデータ構造 例:このppt原稿(?) タイトル(アルゴリズムとデータ構造1) 見出し 箇条書きの内容

アルゴリズム アルゴリズムは必ず問題を解決するもの ひとつまたは複数のデータを操作し目的の結果を得るための一連の処理手順 いつかは停止しないといけない ひとつまたは複数のデータを操作し目的の結果を得るための一連の処理手順 例: 交差点を渡りたい(=問題) 信号があるか? 信号がないならば、どうするか?

なぜ学習するか? すばやくコーディングするため 美しいコードを書くため わかりやすいコードにするため どのように表現するか、どのように処理し目的を達成するか、を理解する

すばやくコーディングする よく知られたものを使う 全体をよく考えて、既存のものが使えるようにする 探せばどこかに実装が存在する 既存のものを使えばデバグの手間が省ける 定番と呼ばれる書籍の存在 全体をよく考えて、既存のものが使えるようにする そのために勉強する!

美しいコード 洗練されたコードは美しい コーディング規則の外側に美しさがある 適切なアルゴリズム 適切なデータ構造 人間が読み書きするものであることを肝に銘じて きちゃないコードは読む気がするか?

わかりやすいコード 構造がわかりやすい 構造がプログラミング言語の自然なデータ型や制御文に合っている プログラムの共有ができる よくしられたデータ構造 よくしられたアルゴリズム これらの再帰的な組み合わせ 構造がプログラミング言語の自然なデータ型や制御文に合っている プログラムの共有ができる 3日後の自分は他人と同じ 記憶力のいい人は1ヶ月くらいは平気?

抽象的 vs. 具体的 ptrで指される領域からvalueを線形探索 for(i = n; i; i--, ptr++) if(*ptr == value) break; mov eax,value mov edx,ptr mov ecx,n 0: cmp eax,[edx] je 1f lea edx,[edx+4] loop 0b 1: