Microsoft PowerPoint - IntroAlgDs-05-6.ppt

Similar documents
Microsoft PowerPoint - IntroAlgDs-09-6.pptx

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

Microsoft PowerPoint - IntroAlgDs-05-5.ppt

Microsoft PowerPoint - IntroAlgDs-05-7.ppt

A9RF112.tmp.pdf

基礎数学I

Microsoft PowerPoint - IntroAlgDs-05-2.ppt

Microsoft PowerPoint - IntroAlgDs pptx

第86回日本感染症学会総会学術集会後抄録(II)

24.15章.微分方程式

第85 回日本感染症学会総会学術集会後抄録(I)

0 s T (s) /CR () v 2 /v v 2 v = T (jω) = + jωcr (2) = + (ωcr) 2 ω v R=Ω C=F (b) db db( ) v 2 20 log 0 [db] (3) v R v C v 2 (a) ω (b) : v o v o =

Microsoft PowerPoint - IntroAlgDs-05-4.ppt

基礎から学ぶトラヒック理論 サンプルページ この本の定価 判型などは, 以下の URL からご覧いただけます. このサンプルページの内容は, 初版 1 刷発行時のものです.

Microsoft Word - Wordで楽に数式を作る.docx

0.,,., m Euclid m m. 2.., M., M R 2 ψ. ψ,, R 2 M.,, (x 1 (),, x m ()) R m. 2 M, R f. M (x 1,, x m ), f (x 1,, x m ) f(x 1,, x m ). f ( ). x i : M R.,,

L A TEX ver L A TEX LATEX 1.1 L A TEX L A TEX tex 1.1 1) latex mkdir latex 2) latex sample1 sample2 mkdir latex/sample1 mkdir latex/sampl

# let rec sigma (f, n) = # if n = 0 then 0 else f n + sigma (f, n-1);; val sigma : (int -> int) * int -> int = <fun> sigma f n ( : * -> * ) sqsum cbsu


チュートリアル:ノンパラメトリックベイズ

第85 回日本感染症学会総会学術集会後抄録(III)

受賞講演要旨2012cs3

untitled

演習1

日本内科学会雑誌第98巻第3号

コンピュータ概論

Microsoft PowerPoint - IntroAlgDs pptx

b3e2003.dvi

第 1 章 書 類 の 作 成 倍 角 文 字 SGML 系 書 類 のみ 使 用 できます 文 字 修 飾 改 行 XML 系 書 類 では 文 字 修 飾 ( 半 角 / 下 線 / 上 付 / 下 付 )と 改 行 が 使 用 できます SGML 系 書 類 では 文 字 修 飾 ( 半 角

確率論と統計学の資料


Microsoft PowerPoint - IntroAlgDs-06-8.ppt

一般演題(ポスター)

number_quantity.indd

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

joho09.ppt

日本内科学会雑誌第101巻第12号

( ) ± = 2018

Microsoft Word - 03-数値計算の基礎.docx

日本糖尿病学会誌第58巻第2号

第88回日本感染症学会学術講演会後抄録(III)

2 N(ε 1 ) N(ε 2 ) ε 1 ε 2 α ε ε 2 1 n N(ɛ) N ɛ ɛ- (1.1.3) n > N(ɛ) a n α < ɛ n N(ɛ) a n

本文/020:デジタルデータ P78‐97

プログラム

(interval estimation) 3 (confidence coefficient) µ σ/sqrt(n) 4 P ( (X - µ) / (σ sqrt N < a) = α a α X α µ a σ sqrt N X µ a σ sqrt N 2

330

ii th-note



5 Armitage x 1,, x n y i = 10x i + 3 y i = log x i {x i } {y i } 1.2 n i i x ij i j y ij, z ij i j 2 1 y = a x + b ( cm) x ij (i j )

日本内科学会雑誌第97巻第3号


診療ガイドライン外来編2014(A4)/FUJGG2014‐01(大扉)

A A. ω ν = ω/π E = hω. E

1 1 ( ) ( % mm % A B A B A 1

: , 2.0, 3.0, 2.0, (%) ( 2.

Functional Programming

dプログラム_1

Microsoft PowerPoint - 小数と大数.pptx

放射線専門医認定試験(2009・20回)/HOHS‐01(基礎一次)

tnbp59-17_Web:プO1/ky079888509610003201


Ł\”ƒ-2005

Microsoft PowerPoint - IntroAlgDs-10-2.pptx

80 X 1, X 2,, X n ( λ ) λ P(X = x) = f (x; λ) = λx e λ, x = 0, 1, 2, x! l(λ) = n f (x i ; λ) = i=1 i=1 n λ x i e λ i=1 x i! = λ n i=1 x i e nλ n i=1 x

N88 BASIC 0.3 C: My Documents 0.6: 0.3: (R) (G) : enterreturn : (F) BA- SIC.bas 0.8: (V) 0.9: 0.5:


web04.dvi

第3章 非線形計画法の基礎

L \ L annotation / / / ; / ; / ;.../ ;../ ; / ;dash/ ;hyphen/ ; / ; / ; / ; / ; / ; ;degree/ ;minute/ ;second/ ;cent/ ;pond/ ;ss/ ;paragraph/ ;dagger/

設問 println はそこで指定されている内容を出力して改行するものである. 一方,print は内容を出力して改行しないものである. 下記のプログラムそれぞれについて出力結果がどうなるか回答せよ. 下記のプログラム - を実行すると, fms という文字列が 回表示される. プログラム - vo

Microsoft PowerPoint - ProgLang-12-1.pptx

第122号.indd

(CC Attribution) Lisp 2.1 (Gauche )

9 8 7 (x-1.0)*(x-1.0) *(x-1.0) (a) f(a) (b) f(a) Figure 1: f(a) a =1.0 (1) a 1.0 f(1.0)

Maxwell ( H ds = C S rot H = j + D j + D ) ds (13.5) (13.6) Maxwell Ampère-Maxwell (3) Gauss S B 0 B ds = 0 (13.7) S div B = 0 (13.8) (4) Farad

日本糖尿病学会誌第58巻第1号


25 II :30 16:00 (1),. Do not open this problem booklet until the start of the examination is announced. (2) 3.. Answer the following 3 proble

Microsoft Word - 資料 (テイラー級数と数値積分).docx

AtCoder Regular Contest 073 Editorial Kohei Morita(yosupo) A: Shiritori if python3 a, b, c = input().split() if a[len(a)-1] == b[0] and b[len(

h23w1.dvi

4

fx-3650P_fx-3950P_J

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

Cプログラミング1(再) 第2回


Program Design (プログラム設計)

JavaプログラミングⅠ


0_nishinomiya

VDM-SL VDM VDM-SL Toolbox VDM++ Toolbox 1 VDM-SL VDM++ Web bool

5989_4840JAJP.qxd

1 # include < stdio.h> 2 # include < string.h> 3 4 int main (){ 5 char str [222]; 6 scanf ("%s", str ); 7 int n= strlen ( str ); 8 for ( int i=n -2; i


鉄鋼協会プレゼン

85 4

Microsoft PowerPoint - IntroAlgDs pptx

新版 明解C++入門編

日本内科学会雑誌第102巻第10号

Transcription:

アルゴリズムとデータ構造入門 005 年 月 8 日 アルゴリズムとデータ構造入門.5 Formulating Abstractions with Higher-Order Procedures. データによる抽象の構築 Building Abstractions with Data 奥乃 博. 世の中のシステムは楽観主義 (optimistic) と悲観主義 (pessimistic) の中庸 (trade-off) で設計されている 祝京大チーム 年連続世界大会出場 Let s Play JMC with your num. (define (jmc n) (if (> n 00) (- n 0) (jmc (jmc (+ n ) )))) 各自 次の式を求めよ (jmc (modulo 学籍番号 00)) 4

月 8 日 本日のメニュー.3.3 Procedures as General Methods.3.4 Procedures as Returned Values Building Abstractions with Data. Introduction to Data Abstraction.. Example: Arithmetic Operations for Rational Numbers 5.3.3 Procedures as General Methods Finding roots of equations by the half-interval method ( 区間二分法 ) (define (search f neg-point pos-point) (let ((midpoint (average neg-point pos-point))) (if (close-enough? neg-point pos-point) midpoint (let ((test-value (f midpoint))) (cond ((positive? test-value) (search f neg-point midpoint)) ((negative? test-value) (search f midpoint pos-point)) (else midpoint)))))) 6 Finding roots of equations by the half-interval method (define (close-enough? x y) (< (abs (- x y)) 0.00)) (define (half-interval-method f a b) (let ((a-value (f a)) (b-value (f b))) (cond ((and (negative? a-value) (positive? b-value)) (search f a b)) ((and (negative? b-value) (positive? a-value)) (search f b a)) (else (error "Values are not of opposite sign" a b)) ))) L: 開始時の区間長 T: 誤差許容度 ステップ数 : Θ(log(L/T)) 7

Finding fixed points of functions( 不動点 ) (define tolerance 0.0000) (define (fixed-point f first-guess) (define (close-enough? v v) (< (abs (- v v)) tolerance)) (define (try guess) (let ((next (f guess))) (if (close-enough? guess next) next (try next)))) (try first-guess)) Xが不動点 x = f(x) f ( x), f ( f ( x)), f ( f ( f ( x))), 8 Finding fixed points of functions( 不動点 ) (fixed-point cos.0) (fixed-point (lambda (y) (+ (sin y) (cos y))) 0. ) 9 (fixed-point cos.0)& (fixed-point cos.0) 3

不動点が求まらない場合がある (fixed-point (lambda (y) (/ x y)).0)) y a x y (sqrt ) を実行すると (y y y ) x 3 Average damping ( 平均緩和法 ) One way to control such ocillations: Redefine a new function y a (fixed-point (lambda (y) (average y (/ x y))).0) ) Average damping ( 平均緩和法 ) x y + y 5 Fixed Point with Average Damping y a x y + y Average damping 平均緩和法 6 4

月 8 日 本日のメニュー.3.3 Procedures as General Methods.3.4 Procedures as Returned Values Building Abstractions with Data. Introduction to Data Abstraction.. Example: Arithmetic Operations for Rational Numbers 7.3.4 Procedures as Returned Values (fixed-point (lambda (y) (average y (/ x y))).0)) 平均緩和法を不動点の観点から眺めると (define (average-damp f) (lambda (x) (average x (f x)))) ((average-damp square) 0) (fixed-point (average-damp (lambda (y) (/ x y))).0)) averagedamp で統一的に捉えることが可能 (define (cube-root x) (fixed-point (average-damp (lambda (y) (/ x (square y)))).0)) 8 Newton's method & differentiation (define (deriv g) (lambda (x)(/ (- (g (+ x dx)) (g x)) dx)) ) (define dx 0.0000) y = x g( x) (define (cube x) (* x x x)) ((deriv cube) 5) g ( x) (define (newton-transform g) ニュートン法 (lambda (x)(- x (/ (g x) ((deriv g) x)))) ) (define (newtons-method g guess) (fixed-point (newton-transform g) guess) ) (newtons-method (lambda (y) (- (square y) x)).0)) 0 5

更なる抽象化 first-class procedures (define (fixed-point-of-transform g transform guess) (fixed-point (transform g) guess) ) st method (fixed-point-of-transform (lambda (y) (/ x y)) average-damp.0 )) nd method (fixed-point-of-transform (lambda (y) (- (square y) x)) newton-transform.0 )) 手続きの構築で何ら差別がない First-class citizen ( 第 級市民 ) 第 級市民の 権利と特権 変数で名前をつけることができる. 手続きへ引数として渡すことができる. 手続きの結果として返すことができる. データ構造の中に含めることができる. Microsoft Longhorn will make RAW first class citizen. The Inquirer, Wed. Jun-8, 005 3 手続き ( 関数 ) への演算 : 導関数 (define dx 0.000) (define (ddx f x) (/ (- (f (+ x dx)) (f x)) dx) ) (ddx square 3) 6.00000000005 我々はもっとスマートだった! 導関数という考え方を採用 (define (deriv f) (lambda (x) (/ (- (f (+ x dx)) (f x)) dx) )) ((deriv square) 3) 6.00000000005 ((deriv (deriv square)) 3).9999999878 (define (new-ddx f x) ((deriv f) x) ) 4 6

手続き ( 関数 ) の合成 : 高階導関数 この考え方を発展させ 高階導関数が構築できる (define (compose f g) (lambda (x) (f (g x)) )) (define nd-deriv (compose deriv deriv)) ((nd-deriv square) 3).9999999878 もちろん手続きの合成も ((compose square sqrt) 7) 7.0 ((nd-deriv cos) pi) 0.999999993959 (define 3rd-deriv (compose deriv nd-deriv)) ((3rd-deriv sin) pi) 0.99999996065838 ((4th-deriv cos) pi).0304656 5 補足 : Fixed Point (define (jmc n) (if (> n 00) (- n 0) (jmc (jmc (+ n ))) )) (fixed-point jmc )? (Y F) = (F (Y F)) Y operator ( 不動点となる手続きを作成 ) (Y jmc) = (F (Y jmc)) = (lambda (n) (if (> n 00) (- n 0)?) ) 6 Fixed Point Operator F (define (Y F) (lambda (s) (F (lambda (x) (lambda (x) ((s s) x))) (lambda (s) (F (lambda (x) ((s s) x)))) ))) 再帰呼び出しに無名手続きを使いたい (Y F) = (F (Y F)) 詳しくは Church numeral の項で説明 7 7

What is this instrument? 計算尺 対数による積の計算 乗算 対数 加算 累乗 対数 乗算 30 はいくら 0 対数 0log 3.0 0 0 3 K 30 0 9 G 9 大きな数 小さな数 deca hecto da h 0 0 deci centi d c 0-0 - kilo K 0 3 milli m 0-3 mega giga M G 0 6 0 9 micro nano μ n 0-6 0-9 tera T 0 pico p 0 - peta exa P E 0 5 0 8 femto atto f a 0-5 0-8 zetta Z 0 zepto z 0 - yotta Y 0 4 yocto y 0-4 30 ten or decad 0 0 hundred or hecatontad 0 3 thousand or chiliad 0 4 myriad 0 5 lac or lakh 0 6 million 0 7 crore 0 8 myriamyriad 0 9 milliard or billion 0 trillion 0 5 quadrillion 0 8 quintillion 0 sextillion 0 4 septillion decillion 0 33 0 63 vigintillion 0 303 centillion 0 00 googol 0 googol googolplex 0 N N plex 0 -N N minex 3 8

ギリシャ文字88plex 80plex 7plex 64plex 56plex 48plex 44plex 40plex 36plex 3plex 8plex 4plex 無量大数不可思議那由他阿僧祇恒河砂極載正澗溝穣杼 ( 禾偏 ) 0plex 6plex plex 8plex 4plex 3plex plex plex 0plex minex minex 3minex 垓京兆億萬 ( 万 ) 千百十一分厘毫 ( 毛 ) 4minex 5minex 6minex 7minex 8minex 9minex 0minex minex minex 3minex 4minex 5minex 絲 ( 糸 ) 忽微纎 ( 繊 ) 沙塵埃渺漠模糊逡巡須臾 33 minex minex 3minex 4minex 5minex 6minex 7minex 8minex 9minex 0minex minex minex 分厘毫 ( 毛 ) モウ絲 ( 糸 ) シ忽コツ微ビ纎 ( 繊 ) セン沙シャ塵ジン埃アイ渺ビョウ漠バク 3minex 4minex 5minex 6minex 7minex 8minex 9minex 0minex minex minex 3minex 模糊逡巡シュンジュン須臾シュユ瞬息シュンソク弾指ダンシ殺那六徳リットク虚空清浄 34 A B G D E Z Y Q I K L M a b g d e z h q i k l m alpha beta gamma delta epsilon zeta eta theta iota kappa lambda mu N X O P R S T U F C Y W n x o p r s t u f c y w nu xi omicron pi rho sigma tau upsilon phi chi psi omega 35 9

月 8 日 本日のメニュー.3.3 Procedures as General Methods.3.4 Procedures as Returned Values Building Abstractions with Data. Introduction to Data Abstraction.. Example: Arithmetic Operations for Rational Numbers 36 第 章データによる抽象の構築 第 章は手続き抽象化 基本手続き 合成手続き 手続き抽象化 例 : Σ, Π, accumulate, filtered-accumulate 第 章はデータ抽象化 基本データ構造 (primitive data structure/object) 合成データオブジェクト (compound data object) データ抽象化で手続きの意味 (semantics) が拡大 加算 (+) 基本手続き : 整数 + 整数 有理数 + 有理数 実数 + 実数 合成手続き : 複素数 + 複素数 行列 + 行列 37 第 章データ抽象化で学ぶこと 抽象化の壁 (abstraction barrier) の構築 データ構造の実装を外部から隠蔽 (blackbox) 閉包 (closure) 組み合わせを繰り返してもよい 慣用インタフェース (conventional interface) Sequence を手続き間インタフェースとして使用 ベルトコンベア トヨタの生産ライン UNIXのパイプ 記号式 (symbolic expression) による表現 汎用演算 (genetic operations) データ主導プログラミング (data-directed programming) 38 0

. データ抽象化 (data abstraction) 抽象データの 4 つの基本操作. 構成子 (constructor). 選択子 (selector) 3. 述語 (predicate) 4. 入出力 (input/ output ) 40.. Rational Numbers( 有理数 ) 構成子 (constructor) (make-rat <n> <d>) <n> numenator( 分子 ),<d> denominator ( 分母 ) 選択子 (selector) (numer <x>) (denom <x>) <x> rational number 述語 (predicate) (rational? <x>) (equal-rat? <x> <y>) 入出力 (input/output) <n>/<d> 4.. Rational Numbers( 有理数 ) 加算 (addition) 減算 (subtraction) 乗算 (multiplication) 除算 (division) 述語 n n nd nd + = + d d dd n n nd nd = d d dd n n nn = d d d d n n d d n = nd = d n d nd n = d n d 4

Rational Number Operations n n nd nd + = + d d d d n n d d (define (add-rat x y) (make-rat (+ (* (numer x) (denom y)) (* (numer y) (denom x)) ) (* (denom x) (denom y)) )) (define (sub-rat x y) (make-rat (- (* (numer x) (denom y)) (* (numer y) (denom x)) ) (* (denom x) (denom y)) )) nd nd = d d 43 Rational Number Operations n n nn n n nd n d = nd = = d d dd d d dn n n = (define (mul-rat x y) d d (make-rat (* (numer x) (numer y)) (* (denom x) (denom y) ))) (define (div-rat x y) (make-rat (* (numer x) (denom y)) (* (denom x) (numer y) ))) (define (equal-rat? x y) (= (* (numer x) (denom x)) (* (numer y) (denom y)) )) 44 Rational Number Representation (define (make-rat n d) (cons n d)) n d ペア (pair) で表現 (define (numer x) (car x)) (define (denom x) (cdr x)) (define (print-rat x) (newline) (display (numer x)) (display / ) (display (denom x)) x ) 45

Rational Number Reduction( 既約化 ) (define (make-rat n d) (cond n d)) これでは 表現が曖昧になる (define (make-rat n d) (let ((g (gcd n d))) (cons (/ n gcd) (/ d gcd)) )) 既約化 : reducing rational numbers to the lowest terms 46 宿題 : 月 4 日午後 5 時締切 宿題は 次の 9 問 : Ex..35,.36,.37,.40,.4,.4,.43,.44,. 53 3