<4D F736F F F696E74202D B835E8AEE91622D566F6C322D B A C682CD2E >

Similar documents
Microsoft PowerPoint - C4(反復for).ppt

æœ•å¤§å–¬ç´—æŁ°,æœ•å°‘å–¬å•“æŁ°,ã…¦ã…¼ã‡¯ã…ªã……ã…›ã†®äº™éŽ¤æ³Ł

プログラミング基礎

オートマトンと言語

Microsoft PowerPoint - å®�æ−•è©¦é¨fi3ㆮ対ç�Œ.pptx

Microsoft PowerPoint - prog08.ppt

メソッドのまとめ

フローチャートの書き方

æœ•å¤§å–¬ç´—æŁ°,æœ•å°‘å–¬å•“æŁ°,ã…¦ã…¼ã‡¯ã…ªã……ã…›ã†®äº™éŽ¤æ³Ł

プログラミングA

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

学習指導要領

プログラミングA

プログラミング入門1

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

PowerPoint Presentation

情報処理Ⅰ

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

Microsoft Word - VBA基礎(3).docx

学習指導要領

Microsoft PowerPoint - DA2_2017.pptx

Microsoft PowerPoint - lec4.ppt

Microsoft PowerPoint ppt

Microsoft PowerPoint - while.ppt

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

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

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

プログラミング入門1

RSA-lecture-2015.pptx

01.ai

Microsoft PowerPoint - 13approx.pptx

学習指導要領

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

学習指導要領

テレビ学習メモ 数学 Ⅰ 第 40 回 第 5 章データの分析 相関係数 監修 執筆 湯浅弘一 今回学ぶこと データの分析の最終回 今までの代表値を複合し ながら 2 種類のデータの関係を数値化します 相関係数は 相関がどの程度強いのかを表しています 学習のポイント 12 種類のデータの相関関係を

Microsoft PowerPoint - C1(演算と変数).ppt

Microsoft PowerPoint - Prog05.ppt

3. 標準入出力

Programming D 1/15

cp-7. 配列

Microsoft PowerPoint - 08LR-conflicts.ppt [互換モード]

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

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

構造化プログラミングと データ抽象

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

Microsoft PowerPoint - DA2_2017.pptx

構造化プログラミングと データ抽象

jhs-math3_01-02ans

オートマトン 形式言語及び演習 3. 正規表現 酒井正彦 正規表現とは 正規表現 ( 正則表現, Regular Expression) オートマトン : 言語を定義する機械正規表現 : 言語

C 言語第 3 回 2 a と b? 関係演算子 a と b の関係 関係演算子 等しい a==b 等しくない a!=b より大きい a>b 以上 a>=b より小さい a<b 以下 a<=b 状態 真偽 値 条件が満たされた場合 TRUE( 真 ) 1(0 以外 ) 条件が満たされなかった場合 F

JavaScriptで プログラミング

2015-2018年度 2次数学セレクション(整数と数列)解答解説

< 中 3 分野例題付き公式集 > (1)2 の倍数の判定法は 1 の位が 0 又は偶数 ( 例題 )1~5 までの 5 つの数字を使って 3 ケタの数をつくるとき 2 の倍数は何通りできるか (2)5 の倍数の判定法は 1 の位が 0 又は 5 ( 例題 )1~9 までの 9 個の数字を使って 3

4-4 while 文 for 文と同様 ある処理を繰り返し実行するためのものだが for 文と違うのは while 文で指定するのは 継続条件のみであるということ for 文で書かれた左のプログラムを while 文で書き換えると右のようになる /* 読込んだ正の整数値までカウントアップ (for

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

プログラミング実習I

( 表紙 )

<4D F736F F D2094F795AA95FB92F68EAE82CC89F082AB95FB E646F63>

umeda_1118web(2).pptx

Microsoft PowerPoint - IntroAlgDs-05-4.ppt

Taro-プログラミングの基礎Ⅱ(公

Microsoft PowerPoint - DA2_2018.pptx

DVIOUT

問 題

プログラミング実習I

Microsoft PowerPoint - prog07.ppt

プログラミング入門1

Microsoft Word - no11.docx

また RLF 命令は 図 2 示す様に RRF 命令とは逆に 各ビットを一つずつ 左方向に回転 ( ローテイト ) する命令である 8 ビット変数のアドレスを A とし C フラグに 0 を代入してから RLF A,1 を実行すると 変数の内容が 左に 1 ビットシフトし 最下位ビット (LSB)

Microsoft PowerPoint - prog04.ppt

STARTプログラム.indd

前期募集 令和 2 年度山梨大学大学院医工農学総合教育部修士課程工学専攻 入学試験問題 No.1/2 コース等 メカトロニクス工学コース 試験科目 数学 問 1 図 1 は, 原点 O の直交座標系 x,y,z に関して, 線分 OA,OB,OC を 3 辺にもつ平行六面体を示す. ここで, 点 A


サイボウズ ガルーン 3 管理者マニュアル

P indd

今日からはじめるプロアクティブ

1 2 STEP 1 STEP 2 STEP 3


untitled

H1_H4_ ai

85

1


1

制御盤BASIC Vol.3

altus_storage_guide

数学 A 図形の性質発展問題 ( 1) ( 平行線と線分比 ) 3 角形の角の 2 等分線の定理 問 1 ABC の内角 Aの 2 等分線が辺 BCと交わる点を Dとする 内角 Aの外角の 2 等分線が辺 BCの延長線と交わる点を Eとする AB:AC=BD:CD AB:AC=BE:EC が成り立つ

Microsoft PowerPoint - ProD0107.ppt

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

DVIOUT

ガイダンス

Microsoft PowerPoint - prog03.ppt

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


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

プログラミング基礎

(Microsoft Word - \207U\202P.doc)

PowerPoint Presentation

プログラミング基礎

Microsoft PowerPoint - 05.pptx

Transcription:

コンピュータ基礎 アルゴリズムとは - 人間の作業を通じて考察する 成蹊大学理工学部情報科学科

アルゴリズム (algorithm, 算法 ) A well-ordered collection of unambiguous and effectively computable operations that, when executed, produces a result and halts in a finite amount of time. - G. Michael Schneider 誰でもわかるように書かれた 道案内 や 料理のレシピ は, 一種のアルゴリズム 手順だけでなくて, 作業に必要な場所, 道具, 材料についても述べないといけない» カウンタ, メモ用紙,...

アルゴリズム (algorithm, 算法 ) A well-ordered collection of unambiguous and effectively computable operations that, when executed, produces a result and halts in a finite amount of time. well-ordered : 手順をはっきりさせる unambiguous : 何回か繰り返す 以下同様に は曖昧 effectively computable : できない作業は指示しない halts in a finite amount of time : 永遠に終わらないのはだめ

アルゴリズムの語源 Abu Abd Allah Muhammad. ibn Musa al-khwarizmi Father of Abudullah, Mohammed, son of Moses, native of Khwarizm 8~9 世紀のペルシャの数学者, 教科書著者

手順 の基本パターン ( 制御構造 ) 一連の作業 ( 作業 1, 作業 2,..., 作業 n ) を順番に処理する ある ( 一連の ) 作業を繰り返す... を 回繰り返す... を x = x 1, x 2,..., x n について行う...( 条件 ) が成り立っている間... を繰り返す 状況に応じて処理内容を変える...( 条件 ) が成り立っていれば作業 1,[ さもなければ作業 2 ] を行う すでに定義してある他の処理を実行する

簡単な例題 - 答案の集計 0 枚の採点済み答案用紙の束の中から最高点の答案を ( 表彰したいので ) 全部抜き出せ 使えるもの : 答案 3 枚分の机スペース (A, B, C) 片手

簡単な例題 - 答案の集計 A に答案の束を置く A の頭の 1 枚を C に移動 A に答案が残っている限り以下を繰り返す Aの頭の1 枚がCの頭の1 枚と同得点以上ならば Aの頭の1 枚をCに移動さもなければ Aの頭の1 枚をBに移動

簡単な例題 - 答案の集計 C の頭の 1 枚を A に移動 C に答案が残っている限り以下を繰り返す C の頭の 1 枚が A の頭の 1 枚と同得点ならば Cの頭の1 枚をAに移動さもなければ Cの頭の1 枚をBに移動 A に積まれた答案が最高点である.B, C には最高点の答案はない.

正しいことを証明する これくらいの例ならば, 正しいかどうかが直観的にもわかる. しかし アルゴリズムにはちゃんとした説明や証明が必要» 複雑になってくると直観ではわからない» 証明なしのプログラムに命は託せない 正しいことをきちんと説明するにはどうすればいいか? なぜこれでいいの? と聞かれて 明らかじゃないですか では非科学的

簡単な例題 - 再訪 C の束の答案は, いつも上から見て得点の良い順に並んでいる Aに答案の束を置く Aの頭の1 枚をCに移動 Aに答案が残っている限り以下を繰り返す Bの束には,Cの頭の1 枚よりも高得点の答案はない Aの頭の1 枚がCの頭の1 枚と同得点以上ならば すべての答案はA, B, C のいずれかに Aの頭の1 枚をCに移動存在するさもなければ Aの頭の1 枚をBに移動 ここでは何が常に成立? ここでは何が成立? A には答案が残っていない

簡単な例題 - 再訪 C の頭の 1 枚を A に移動 C に答案が残っている限り以下を繰り返す C の頭の 1 枚が A の頭の 1 枚と同得点ならば Cの頭の1 枚をAに移動さもなければ Cの頭の1 枚をBに移動 ここでは何が常に成立? A に積まれた答案は最高点である B には最高点の答案はない 繰返し作業のあいだじゅう不変な 性質 を探せばよい すべての答案は A, B, C のいずれかに存在する

例題 2- 最大公約数 紙に並べて書かれた二つの正整数の最大公約数 (greatest common divisor, gcd) を求めよ. 使えるもの : 紙の余白と鉛筆 素因数分解をするには大変な手間がかかる 大変なことが暗号技術に利用されるほど x>y のとき gcd(x,y) = gcd(x ー y,y) であることを利用 - 互減法 (2500 年以上前!) 引算のかわりに剰余算を使うとEuclidの互除法 (2300 年以上前 )

例題 2- 互減法 左右の一番下の整数の値が異なる間, 以下を 繰り返す 大きい方の値の下に, その値と小さい方の値との差を記入 20 68 48 残っている ( 同一の ) 値が答 4 28 8 4

例題 2- 互減法 左右の一番下の整数の値が異なる間, 以下を 繰り返す 大きい方の値の下に, その値と小さい方の値との差を記入 20 68 一番下の二数の gcd = 元の二数の gcd 4 48 28 残っている ( 同一の ) 値が答 繰返しは必ず終わるのだろうか? 8 4

例題 2- 互減法 左右の一番下の整数の値が異なる間, 以下を 繰り返す 大きい方の値の下に, その値と小さい方の値との差を記入 20 68 一番下の二数の gcd = 元の二数の gcd 記入された値は正 残っている ( 同一の ) 値が答 繰返しは必ず終わるのだろうか? 一番下の二数の和が必ず減る 4 48 28 8 4

互減法 (x と y の最大公約数 ) x y である間 x > y ならば x x ー y さもなければ y y ー x を繰り返す while (x!= y) { if (x > y) x = x ー y; else y = y ー x; } Java 言語 C/C++ 言語

値の交換 クイズ : 変数 x と y の内容を交換するにはどうすればよいか?( 計算機は一度に一つのことしかできない ) 78 90 x y

値の交換 78 90 x 方法 1 z x x y y z y 方法 2 x y ー x y y ー x x x + y z 例 x y 90 78 90 78

値の交換 方法 2 x y ー x y y ー x x x + y (x 0, y 0 ) (x 1, y 0 ) (x 1, y 1 ) (x 2, y 1 ) x 1 =y 0 ー x 0 y 1 = y 0 ー x 1 x 2 = x 1 + y 1 正しいことをどのように示せばよいか? 数学の変数と数学の等式で書き直してみる x 2 =y 0 y 1 = x 0

最短経路を求める start A 8 B 14 7 D 11 20 F 15 C E 15 仮定 : 各地点間のコストは負でない cf. 運賃計算, インターネットの経路制御

最短経路を求める Step 1 start 0 A B 8 14 7 D 11 20 F C 15 E 15

最短経路を求める Step 2 start 0 A 18 B 8 14 7 24 D 11 20 F C 15 E 25 15

最短経路を求める Step 3 start 0 A B 8 14 7 22 24 D 11 20 F C 15 E 25 19 15

最短経路を求める Step 4 start 0 A 8 B 14 7 22 30 24 D 20 11 F 34 C 15 E 25 19 15

最短経路を求める Step 5 start 0 A B 8 14 7 22 24 D 11 20 F 42 34 C 15 E 25 19 15

最短経路を求める Step 6 start 0 A B 8 14 7 22 24 D 11 20 F 34 C 15 E 25 19 15

最短経路を求める - Dijkstra 法 ( すべての地点の旅程を とする ) スタート点の旅程を 0 とする 赤丸のついていない地点が残っている限り 赤丸のついていない地点の中で旅程が最小の地点 (p とする ) に赤丸をつける p 地点の各隣接地点 (q とする ) について p 地点経由の旅程の方が既知の旅程より短ければ,q 地点の旅程を更新する

まとめ プログラミングの基本はアルゴリズム設計 アルゴリズムを書いたら, その正当性を論理的に検討しよう. ほとんどのアルゴリズムは繰返し作業を含む 毎回の繰返しの前後で変わらない性質をたくさん発見しよう» その性質は繰返しの開始前にも終了後にも成り立つ 毎回の繰返しによって減少するものを一つ発見しよう