• Tidak ada hasil yang ditemukan

電子計算機概論I - Sophia

N/A
N/A
Protected

Academic year: 2024

Membagikan "電子計算機概論I - Sophia"

Copied!
53
0
0

Teks penuh

(1)

2010年度秋期

電子計算機概論 I ( 数学科 )

計算機数学 ( 情報理工学科 )

(担当: 角皆)

(2)

本講義の概要

「計算」を対象とする数学

「計算」の定式化

「計算」の実現

「計算」の量と質

→ 「計算する」 とは ?

(3)

本講義の概要

「計算」を対象とする数学

「計算」の定式化

「計算」の実現

「計算」の量と質

→ 「計算する」 とは ?

(4)

「計算する」とは?

「計算」

k

計算機で行なえること

では、計算機では何を行なっているのか ?

(5)

「計算する」とは?

「計算」

k

計算機で行なえること

では、計算機では何を行なっているのか ?

(6)

計算機

アナログ計算機

? 図式計算(計算図表・ノモグラム)

? 計算尺

ディジタル計算機

? プログラム機構方式

? プログラム入力方式

? プログラム内蔵方式 (von Neumann方式)

量子計算機

(7)

計算機

アナログ計算機

? 図式計算(計算図表・ノモグラム)

? 計算尺

ディジタル計算機

? プログラム機構方式

? プログラム入力方式

? プログラム内蔵方式 (von Neumann方式)

量子計算機

(8)

計算機

アナログ計算機

? 図式計算(計算図表・ノモグラム)

? 計算尺

ディジタル計算機

? プログラム機構方式

? プログラム入力方式

? プログラム内蔵方式 (von Neumann方式)

量子計算機

(9)

計算機

アナログ計算機

? 図式計算(計算図表・ノモグラム)

? 計算尺

ディジタル計算機

? プログラム機構方式

? プログラム入力方式

? プログラム内蔵方式 (von Neumann方式)

量子計算機

(10)

本講義の概要()

「計算」の実現: 計算機

? 数の表し方・二進法・Boole代数

? 計算機の実現

論理回路・演算回路・順序回路

? 計算(プログラム)の実際 簡易アセンブラ

(11)

本講義の概要()

「計算」の定式化

? 計算機のモデル化

有限オートマトン・Turing機械など

? 計算機の扱う言語・文法

正規表現・生成文法・文脈自由言語など

? 計算可能性の理論

普遍Turing機械と対角線論法

(12)

本講義の概要()

「計算」の量と質

? 計算量の理論

多項式時間・“P=NP?”問題など

? 幾つかの数理アルゴリズム

Euclidの互除法

素数判定

素因数分解

高速Fourier変換 など

(13)

既習事項(かどうか)の確認

計算機での数の扱い方

? 二進法表示

? 桁溢れ判定

? 符号付き整数の表現(“2の補数表示”)

? Endianについて

? 浮動小数点数(指数部・仮数部)

(14)

既習事項(かどうか)の確認

計算機の実現

? 論理ゲート (NOT・OR・AND)

? Boole代数

? 演算回路 (加算機・multiplexerなど)

? 順序回路 (feedback回路による状態保持)

計算(プログラム)の実際 アセンブラプログラミング

(15)

計算機での情報の表し方

計算機内では全てのデータを 0,1 の組()で表す 情報の最小単位:

01: bit (binary digit) 実際には幾つかのbitを組にして一度に扱う

(通常は 8 bit = 1 byte (octet)) 1 byte で 28=256 通りの値を表せる

(16)

計算機での数の表し方 計算機内の 0,1 の列を、

二進表記(二進法)で数値として扱う 正の整数の場合、1 byte

0x28−1=255

の範囲の値が表せる

(17)

十進表記←→二進表記の変換 十進 二進

0 00000000 1 00000001 2 00000010 3 00000011 4 00000100 5 00000101

... ... 253 11111101 254 11111110 255 11111111

(18)

二進の九九(一一?)の表

+ 0 1 0 0 1 1 1 10

× 0 1

0 0 0

1 0 1

(19)

文字の表し方

符号化(coding)して数値(文字番号)で表す

(文字コード) アスキーコード(ASCII code) 対応表 0 1 2 3 4 5 6 7 8 9 a b c d e f 2 ! " # $ % & ’ ( ) * + , - . / 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ 6 ‘ a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { | } ~

(20)

計算の理論

計算機に於ける「計算」の各ステップ

(= 命令の実行) は、

計算機内の記憶素子(メモリ)

現在の値(状態)に従って、

その値を変更(書込)すること

(21)

計算の理論

プログラム内蔵方式(von Neumann)では、

プログラム・データを区別なくメモリ上に置くが、

プログラムとデータとは、やはり本質的に違う

プログラム: 一つの問題では固定

データ: 可変な入力

どんな(有効な)データ(入力)が来ても、

所定の出力を返すことが要請される

(22)

計算の理論

プログラム内蔵方式(von Neumann)では、

プログラム・データを区別なくメモリ上に置くが、

プログラムとデータとは、やはり本質的に違う

プログラム: 一つの問題では固定

データ: 可変な入力

どんな(有効な)データ(入力)が来ても、

所定の出力を返すことが要請される

(23)

計算の理論

プログラム内蔵方式(von Neumann)では、

プログラム・データを区別なくメモリ上に置くが、

プログラムとデータとは、やはり本質的に違う

プログラム: 一つの問題では固定

データ: 可変な入力

どんな(有効な)データ(入力)が来ても、

所定の出力を返すことが要請される

(24)

計算の理論

或る問題の「計算が可能」

m

その計算を行なうプログラムが存在

計算機の機能 ( =「計算」のモデル) を決めて議論

→ 代表的な「計算のモデル」を幾つか紹介

(25)

計算の理論

或る問題の「計算が可能」

m

その計算を行なうプログラムが存在

計算機の機能 ( =「計算」のモデル) を決めて議論

→ 代表的な「計算のモデル」を幾つか紹介

(26)

計算の理論

或る問題の「計算が可能」

m

その計算を行なうプログラムが存在

計算機の機能 ( =「計算」のモデル) を決めて議論

→ 代表的な「計算のモデル」を幾つか紹介

(27)

問題を「計算する」とは

入力(データ)

⇓ プログラム

⇓ 出力・動作 原理・理論を考える際には、

出力は最も単純に「0 か 1 か」とする

0 : 拒否(reject)

1 : 受理(accept)

(28)

問題を「計算する」とは

入力(データ)

⇓ プログラム

⇓ 出力・動作 原理・理論を考える際には、

出力は最も単純に「0 か 1 か」とする

0 : 拒否(reject)

1 : 受理(accept)

(29)

「問題」とは

入力(データ)

⇓ プログラム

⇓ 受理か拒否か

解くべき「問題」: 入力を受理する条件

(30)

「問題」の例

入力の範囲: 文字 a, b から成る文字列

「問題」: 入力を受理する条件

a と b との個数が同じ

a が幾つか続いた後に b が幾つか続いたもの

a で始まり a, b が交互に並んで b で終わる

同じ文字列 2 回の繰返しから成る

回文(palindrome)

などなど

(31)

「問題」とは

それぞれの「問題」に対し、

定められた計算モデルで、

受理/拒否判定が可能(問題が解ける)? 受理される文字列が

「文法的に正しい」文字列だと思えば、

「問題」とは「文法(言語)」である

「文法的に正しい」かどうかの判定

· · ·「構文解析(syntactic analysis)

(32)

「問題」とは

それぞれの「問題」に対し、

定められた計算モデルで、

受理/拒否判定が可能(問題が解ける)? 受理される文字列が

「文法的に正しい」文字列だと思えば、

「問題」とは「文法(言語)」である

「文法的に正しい」かどうかの判定

· · ·「構文解析(syntactic analysis)

(33)

「問題」とは

それぞれの「問題」に対し、

定められた計算モデルで、

受理/拒否判定が可能(問題が解ける)? 受理される文字列が

「文法的に正しい」文字列だと思えば、

「問題」とは「文法(言語)」である

「文法的に正しい」かどうかの判定

· · ·「構文解析(syntactic analysis)

(34)

代表的な計算モデル

有限オートマトン(有限状態機械)

プッシュダウンオートマトン

チューリングマシン など

(35)

チューリングマシン

無限(非有界)のメモリにランダムアクセスできる

計算機モデル Church-Turingの提唱

「全てのアルゴリズム(計算手順)は、

チューリングマシンで実装できる」

(アルゴリズムと呼べるのは

チューリングマシンで実装できるものだけ)

· · · 「アルゴリズム(algorithm)」の定式化

(36)

万能チューリングマシン

プログラム内蔵方式(von Neumann)

· · · プログラムもデータとして保持

→ 一つの機械で様々な計算を柔軟に実現 同様の働きをするチューリングマシンが存在

· · · 万能チューリングマシン

(universal Turing machine) 全てのチューリングマシンの動作を模倣する

(37)

計算可能性の理論

チューリングマシンは、

どんな問題(言語)でも計算できるのか?

「計算できる」とは?

認識する :

正しければ受理 (そうでなければ受理しない)

判定する :

正しければ受理、そうでなければ拒否

(認識可能だが)判定不可能な問題が存在する!!

(38)

計算可能性の理論

チューリングマシンは、

どんな問題(言語)でも計算できるのか?

「計算できる」とは?

認識する :

正しければ受理 (そうでなければ受理しない)

判定する :

正しければ受理、そうでなければ拒否

(認識可能だが)判定不可能な問題が存在する!!

(39)

計算可能性の理論

チューリングマシンは、

どんな問題(言語)でも計算できるのか?

「計算できる」とは?

認識する :

正しければ受理 (そうでなければ受理しない)

判定する :

正しければ受理、そうでなければ拒否

(認識可能だが)判定不可能な問題が存在する!!

(40)

計算可能性の理論

チューリングマシンは、

どんな問題(言語)でも計算できるのか?

「計算できる」とは?

認識する :

正しければ受理 (そうでなければ受理しない)

判定する :

正しければ受理、そうでなければ拒否

(認識可能だが)判定不可能な問題が存在する!!

(41)

計算量の理論

問題の難しさを如何に計るか ?

(計算モデルを固定して)

解くのに掛かる資源の分量で計る

· · · 計算量(complexity)

時間計算量: 計算に掛かるステップ数(手間)

空間計算量: 計算に必要なメモリ量(場所)

(42)

計算量の理論

問題の難しさを如何に計るか ?

(計算モデルを固定して)

解くのに掛かる資源の分量で計る

· · · 計算量(complexity)

時間計算量: 計算に掛かるステップ数(手間)

空間計算量: 計算に必要なメモリ量(場所)

(43)

計算量の理論

計算量はアルゴリズム(計算方法)によって変わる

· · · アルゴリズムの計算量

→ アルゴリズムの効率 の評価 問題の計算量 :

その問題を解くアルゴリズムの計算量の下限 最も効率良く解くと、どれ位で解けるか

= どうしてもどれ位必要か

= どれ位難しい問題か

→ 問題そのものの難しさ の評価

(44)

計算量の理論

計算量はアルゴリズム(計算方法)によって変わる

· · · アルゴリズムの計算量

→ アルゴリズムの効率 の評価 問題の計算量 :

その問題を解くアルゴリズムの計算量の下限 最も効率良く解くと、どれ位で解けるか

= どうしてもどれ位必要か

= どれ位難しい問題か

→ 問題そのものの難しさ の評価

(45)

計算量の理論

入力データが大きくなれば計算量も増える

→ 入力データ長に対する増加のオーダーで表す (Landau の O-記号) 多項式時間 P · · · ∃k:O(nk)

事実上計算可能な難しさ

「しらみつぶし」が入ると

大体 O(2n) 程度以上になる(指数時間 EXP)

事実上計算不可能

(46)

計算量の理論

入力データが大きくなれば計算量も増える

→ 入力データ長に対する増加のオーダーで表す (Landau の O-記号) 多項式時間 P · · · ∃k:O(nk)

事実上計算可能な難しさ

「しらみつぶし」が入ると

大体 O(2n) 程度以上になる(指数時間 EXP)

事実上計算不可能

(47)

計算量の例

加法: O(n)

乗法: O(n2) かと思いきや O(nlognlog logn) (高速Fourier変換(FFT))

互除法: O(n3) (FFTで O(n2lognlog logn))

素数判定: 多項式時間 P

素因数分解: 多項式時間Pかどうか判っていない

(48)

計算量の例

加法: O(n)

乗法: O(n2) かと思いきや O(nlognlog logn) (高速Fourier変換(FFT))

互除法: O(n3) (FFTで O(n2lognlog logn))

素数判定: 多項式時間 P

素因数分解: 多項式時間Pかどうか判っていない

(49)

計算量の例

加法: O(n)

乗法: O(n2) かと思いきや O(nlognlog logn) (高速Fourier変換(FFT))

互除法: O(n3) (FFTで O(n2lognlog logn))

素数判定: 多項式時間 P

素因数分解: 多項式時間Pかどうか判っていない

(50)

計算量の例

加法: O(n)

乗法: O(n2) かと思いきや O(nlognlog logn) (高速Fourier変換(FFT))

互除法: O(n3) (FFTで O(n2lognlog logn))

素数判定: 多項式時間 P

素因数分解: 多項式時間Pかどうか判っていない

(51)

非決定性計算量 あてずっぽうを許して、

うまくいけばどの位で解けるか

= 答を知って、その検証にどの位かかるか 非決定性多項式時間(NP):

非決定性の計算モデルで多項式時間で解ける 例: 素因数分解は NP

· · · 素因数を知っていれば割算 1 回だけ

(52)

未解決問題 (P vs NP Problem) P=NP

であるか否か ?

“The Millennium Problems”

の 7 つの問題のうちの 1 つ (賞金 $1M)

(53)

未解決問題 (P vs NP Problem) P=NP

であるか否か ?

“The Millennium Problems”

の 7 つの問題のうちの 1 つ (賞金 $1M)

Referensi

Dokumen terkait

INFORMATION AND COMMUNICATION ENGINEERS 確率過程としての記号処理 — 計算過程のマクロ・モデル —* 金田 泰 新情報処理開発機構 〒305 茨城県つくば市竹園一-6-1 E-mail: [email protected] あらまし複雑な記号処理をおこなう計算システムは,プログラムを静的に理解することによって,

75 5.2.8

結構化程式設計 所謂的結構化程式設計是指一個程式可以透過由上而下top-down的過程,將複雜的程式 分解成許多小單元如 C 語言中的函數,這些單元稱為模組Module,每個模組有各自的功 能。一個結構化的程式僅能有單一入口及單一出口,而 goto 跳躍指令易破壞結構,不應使用。 結構化程式設計的優點為:撰寫較容易、減少程式維護的時間和成本、提高程式的可讀性。

2 会計の機能 マクロ的機能 利害調整 情報提供 企業横断的機能 法制度 企業横断的機能 法制度 説明調整 3 会計の機能 ミクロ的機能 情報提供 意思決定支 援 契約支援 企業特殊的機能 経済学 企業特殊的機能 経済学 説明機能 • 資金委託者に対して資金受託者の受託責任 の履行状況を説明する機能が,会計の説明 機能です。 ■第1章参照

7 モデルの理論的基礎 • 井尻[1968]の会計測定論。会計測定の3公理。 • 井尻モデルの修正。「借方は財の増分,貸方は財の減分」という因果性を,「現金収支と原 因事象」の因果性に修正。現金収支は,会計測定の3公理を縮約。現金は,基本財とされ, 計算貨幣として機能することになる。 •

基礎となる数理の予備知識 代表的には、例えば次のような事柄 基礎編 初級編 情報理論 微分積分・線型代数・確率論 符号理論 有限体上の 線型代数 整数論・群論・ 暗号理論 初等整数論 代数幾何の初歩 素数の話 他に、計算の理論計算可能性・計算量など... 情報の符号化 アナログデータ 連続データ ⇓ サンプリングなど ディジタルデータ 離散・有限データ

最悪計算量と平均計算量 計算量の理論では、入力データに対して 「どんな場合でも最悪でもこれだけで出来る」 というのが計算量の定義最悪計算量だが、 実際に計算するには、ランダムなデータに対して 「平均的にはこれだけで出来る」

計算の理論 プログラム内蔵方式von Neumann型では、 プログラム・データを区別なく メモリ上に置いていたが、 プログラムとデータとは、やはり本質的に違う • プログラム: 一つの問題では固定 • データ: 可変な入力 ⇓ どんな有効なデータ入力が来ても、 所定の出力を返すことが要請される —電子計算機概論I 6—... 計算の理論