情 ★報 ★科 ★学
Pascalに
よる
デー タ構造 古東 馨 著
東京電機大学 出版局
まえがき
プ ロ グ ラ ミ ング を初 め て 学 ぶ 人 に 対 す る忠 告 と して,「 プ ロ グ ラム を 書 く...
19 downloads
410 Views
29MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
情 ★報 ★科 ★学
Pascalに
よる
デー タ構造 古東 馨 著
東京電機大学 出版局
まえがき
プ ロ グ ラ ミ ング を初 め て 学 ぶ 人 に 対 す る忠 告 と して,「 プ ロ グ ラム を 書 くこ と は,小 説 を書 くこ とで あ る」 とい う例 え を よ く耳 に す る.小 説 もプ ロ グ ラ ム も正 確 に書 か な け れ ば な ら な い の は 当然 で あ るが,修 辞 上 の 善 しあ しだ けで 小 説 の 価 値 が決 ま る わ け で は な い よ う に,プ
ログ ラム も,表 現 の た め の 言 語 を超
え た 内容 が最 も大 切 とい え よ う.プ ロ グ ラ ミン グ言 語 を 習 得 してプ ログ ラ ミ ン グ に精 通 した つ も りに な る は早 計 で あ る し,逆 に,プ
ロ グ ラ ミ ング 言 語 を味 気
な い規 則(文 法)だ らけ の 言 葉 と敬 遠 した 人 で も,プ ロ グ ラ ミン グ(小 説)の お も しろ さ が 理解 で き る と もい え る. 本 書 は,計 算機 言 語 の 学 習 の た め の プ ロ グ ラ ミ ング を 終 え て,プ
ログ ラ ミ ン
グ 自身 を学 ぶ 入 門 書 とな る こ とを 目的 と して い る.内 容 は,計 算 機 の最 も基 本 的 な機 能 で あ るデ ー タの 検 索,整 列 の 計 算 方 法 を題 材 と して,プ
ロ グ ラム の 基
礎 とな るア ル ゴ リズ ム とそ の計 算 対 象 とな るデ ー タの 表 現 方法 を 中心 に,計 算 シ ス テ ム と して抽 象 的 に捕 え る考 え方,ア
ル ゴ リズ ム の 評 価,具
体的 なプ ログ
ラム へ の 実 装 とデ ー タ構 造 に つ い て解 説 して い る. ま た本 書 は,著 者 の 講 義 内容 を基 に,1 年 間 の 授 業 テ キス トと して も使 え る こ とを念 頭 に コ ンパ ク トに ま とめ て あ る.こ の ため,全 体 につ い て広 く述 べ る こ とを心 が け,細 部 に わ た り解 説 す る こ とを あ え て避 け て い る.特 に,ア ル ゴ リズ ムの 緒 性 質 の 論 理 的 ま た は 数 学 手 法 に よ る解析 は,よ
く知 られ て 身 近 な ア
ル ゴ リズ ム で も高 度 の 知 識 が 必 要 と され た り,未 解 決 問題 で あ っ た りす る こ と か ら,直 観 的 な,あ
るい は,例 え に よ る手 法 の 理 解 を優 先 して 解 説 した.幸
い
に も本 書 の 目的 ど お りに,プ ロ グ ラ ミン グ に 関 す る興 味 が 増 した読 者 は,さ
ら
に専 門 的 な本 に よ り理 解 を深 め る こ と を希 望 す る. プ ロ グ ラ ミング 言 語 にはPascalを
用 い た.読 者 はPascalに
つ い て一 通 りの 知
識 が あ る もの と仮 定 して い るが,デ ー タ の構 造 を議 論 す る上 で 重 要 なPascalの
各 種 構 造 型 デ ー タ,お
よ び ポ イ ン タ 型 デ ー タ に つ い て は,復 習 の 意 味 で 第 3章
に ま とめ て あ る.Pascalの
これ らの デ ー タ構 造 に つ い て の 知 識 が あ る読 者 は,
第 3章 を とば して読 み 進 ん で い た だ い て さ しつ か え な い. プ ロ グ ラ ミン グ の 対 象 は,近 年 ます ます 広 範 囲 に大 規模 に な りつ つ あ り,高 い生 産 性,信
頼 性 が 要 求 され て い る.そ れ に 伴 っ て基 本 的 な アル ゴ リズム や デ
ー タ構 造 を抽 象 的 な 計 算 シス テ ム と して と ら え る こ と,さ
らに,人 間 の 思 考 過
程 に あ った プ ロ グ ラ ム作 成技 法 や 計 算機 言 語 が 注 目 され て い る.本 書 が そ の よ う な プ ロ グ ラ ミ ン グへ の 入 門 と して 役 だ て れ ば,著 者 と しての 最 上 の 喜 び で あ る.な お,本 書 に 対 す る ご 意 見,感
想 等 お よせ い た だ け れ ば幸 い で あ る.
最 後 に,本 書 の 草 稿 に 関 して,片 岡 一 夫 氏 を始 め,多
くの 方 々 か らお よせ い
た だ い た ご意 見 や 激 励 に 深 謝 す る.ま た,本 書 の 刊 行 に際 して は,東 京 電機 大 学 出 版 局 の 植 村 八潮 氏 に た いへ ん お 世 話 に な っ た こ と を感 謝 す る.
1987年 5月
鳩 山 にて
古東
馨
目
1
次
プログラミングとその考え方
1.1プ
ロ グ ラ ム と そ の は た ら き
1
1.2よ
い プ ロ グ ラ ム と は
3
1.3プ
ロ グ ラ ム の 構 成
5
1.4プ
1.3.1ア
ル ゴ リ ズ ム
6
1.3.2デ
ー タ構 造 と型
10
1.3.3実
装 プ ロ グ ラ ム
11
ロ グ ラ ミ ン グ の 手 法
12
1.4.1プ
ロ グ ラ ム の 読 み や す さ に つ い て
12
1.4.2下
降 型 プ ロ グ ラ ミ ン グ と 上 昇 型 プ ロ グ ラ ミ ン グ
15
1.4.3下
降 型 プ ロ グ ラ ミ ン グ と そ の 例
18
2
アルゴリズムの評価
2.1ア
ル ゴ リ ズ ム の 記 述
29
2.2ア
ル ゴ リ ズ ム の 計 算 時 間
34
2.2.1評
価 基 準 に つ い て
34
2.2.2ア
ル ゴ リズ ム の 計 算 時 間
35
2.2.3デ
ー タ 量 に 対 す る 計 算 時 間
37
2.2.4計
算 時 間 の 解 析 の 例
40
2.3ア
ル ゴ リ ズ ム の 改 善
43
2.3.1演
算 の 回 数 の 減 少,短
時 間 演 算 へ の 置 き 換 え
2.3.2計
算 し た 結 果 の 有 効 利 用
45
2.3.3分
割 ・処 理 ・統 合 に よ る 計 算 時 間 の 縮 小 化
47
3Pascalに 3.1デ
3.2.1配
3.3ポ
お ける構造型 のデ ータ
ー タ の 型
3.2Pascalの
44
51 構 造 型 デ ー タ
55
列 型 デ ー タ
55
3.2.2レ
コー
ド型 デ ー タ
58
3.2.3集
合 型 デ ー タ
64
3.2.4フ
ァ イ ル 型 デ ー タ
65
イ ン タ 型 デ ー タ 3.3.1LHS表
68
現 とRHS表
現
69
3.3.2静
的 領 域 と 動 的 領 域
70
3.3.3ポ
イ ン タ 型 デ ー タ
71
4
線形 リス ト
4.1リ
ス ト型 の デ ー タ
79
4.2リ
ス ト の 実 装
82
4.3ス
4.2.1配
列 構 造 に よ る リ ス トの 実 装
82
4.2.2リ
ン ク 構 造 に よ る リ ス トの 実 装
86
タ ッ ク と キ ュ ー
92
4.3.1特
殊 な リ ス ト
92
4.3.2ス
タ ッ ク
92
4.3.3ス
タ ッ ク の 応 用 例
95
4.3.4キ
ュ ー
101
4.3.5キ
ュ ー の 応 用 例
105
5
木
構
造
5.1木
構造 のデー タ
111
5.2グ
ラ フ 構 造 と し て の 木 構 造
116
5.3木
構 造 の 操 作
119
5.4木
構 造 の 実 装
126
5.4.1一 5.4.2n-分 5.4.3配 5.5木
般 的 木 の 実 装
126
木 の 実 装
130
列 を 用 い た 平 衡 n-分 木 の 実 装
の 操 作 の 実 装
131 133
6
整
列
6.1デ
ー タ の 処 理 と 整 列
142
6.2整
列 に 関 す る 基 礎
145
6.3挿
入 法 に よ る 整 列
148
6.4入
6.5そ
6.3.1挿
入 法 に よ る整 列 の 基 本
148
6.3.2基
本 的 挿 入 法 に よ る 整 列 ア ル ゴ リ ズ ム の 実 装
150
6.3.3シ
ェ ル の 方 法
152
れ 換 え 法 に よ る 整 列
154
6.4.1入
れ 換 え 法 に よ る 整 列 の 基 本 原 理
154
6.4.2バ
ブ ル ソ ー ト(bubble
sort)
155
6.4.3ク
イ ッ ク ソ ー トの ア ル ゴ リ ズ ム の 原 理 と実 装
157
の 他 の 方 法 に よ る 整 列 6.5.1選
択 法 に よ る 整 列
161 161
6.5.2併
合 法 に よ る 整 列
165
6.5.3複
合 ア ル ゴ リ ズ ム に よ る整 列
171
7
検
索
7.1検
索 と は
176
7.2順
次 検 索
180
7.32
分 検 索
182
7.3.1配
列 構 造 の フ ァ イ ル に お け る 2分 探 索
182
7.3.22
分 木 構 造 の フ ァ イ ル に お け る 2分 探 索
183
7.3.32
分 検 索 法 の 計 算 時 間 の 解 析
187
7.4最
適 2分 木 検 索190
7.5デ
ィ ジ タ ル 検 索
198
7.5.1デ
ィ ジ タ ル 検 索 木
198
7.5.2ハ
ッ シ ュ 検 索
201
8 8.1い
記憶の方式と管理
ろ い ろ な 記 憶 方 式
8.2Pascalに 8.3集
213
お け る 可 変 長 レ コ ー ドの 記 憶 方 式
合型 の デ ー タ と ビ ッ トマ トリ ク ス
8.4Pascalに
お け る 動 的 記 憶 領 域 と ヒー プ構 造
付
214 218 224
録
付録 A
アル ゴ リズ ム の 計 算 時 間 と〓-記 法
234
付録 B
置 換 の 反 転 数 の 解 析
236
索
引
243
[1] プ ログラミングとその考 え方
1.1
プログラムとそのはたらき
は じめ に,「 計 算 機 の プ ロ グ ラ ム 」お よび 「プ ログ ラ ミ ング 」とは な ん で あ るか を考 え て み た い.数 学 事 典(岩 波 書 店)に よ る と,計 算 機 プ ロ グ ラム とは 「所 用 の 計 算 を 実 行 す る た め に こ れ らの 命 令 の 有 限個 を適 当 に 並 べ た列 」 とあ り,プ ロ グ ラ ミ ン グ とは 「プ ロ グ ラム を作 る作 業,す
な わ ち 目的 の 計 算 を単 位 の 命令
の 有 限 個 の 列 で 表 現 す る こ とで あ る」とあ る.こ の 記 述 は 抽 象 的 で あ り,ま た 数 学 的 に も厳 密 な もの で,こ れ だ け で,な
る ほ ど と納 得 の い く人 はプ ロ グ ラム
と は何 か を 知 っ て い る とい って い いの で は な い だ ろ うか. 引 き続 い た 説 明 に,「 各 命 令 は,制 御 装 置 の構 造 か ら定 ま る一 定 の 形 式 で 数 値 的 に表 現 され,計 算 に 先 立 っ て 記 憶 装 置 の 中 に 蓄 え られ る 」 と あ るの を 見 て もわ か る と お り,こ こ で は機 械 語 の プ ロ グ ラム の 説 明 を して い る. プ ロ グ ラ ム とは,計 算 機 に 実 行 して も ら う計 算 の 方法 を計 算 機 に指 令 す る命 令 群 で あ る し,計 算 機 は機 械 語 しか 理 解 で きな いの で,厳 密 に は こ こ に書 か れ て い る とお りで あ る. しか し,人 間 が 直 接機 械 語 の プ ロ グ ラ ム を書 か な くて も,ア セ ンブ リ言 語や 数 多 くの 標 準 化 さ れ た プ ロ グ ラ ミン グ言 語 を 用 い て書 い た プ ロ グ ラム を,計 算 機 内 に用 意 され て い る翻 訳 プ ログ ラム に 入 力 して,機 械 語 の プ ロ グ ラム に 変換
して 目的 の プ ロ グ ラ ム を得 る方 法 が機 械 語 の プ ロ グ ラ ミン グ よ り も一般 的 で あ る こ とは,読 者 諸 氏 の よ く知 る と ころ で あ ろ う.ア セ ンブ リ言 語 に始 ま り,問 題 向 き言 語 とか 高 級 言語 とか は,無 味 乾 燥 な機 械 語 の プ ロ グ ラ ミン グ を人 間 の 言 葉 に近 く,ま た機 械 に依 存 しな い 言 語 へ と発 展 させ て きた 結 果 で あ る と もい え る. 機 械 語 の プ ロ グ ラム が 機 械 へ の 指 令 を表 現 す るだ け もの で あ った の に対 し, Pascalの
よ うな 高 級 言 語 に よ るプ ロ グ ラム は,そ の 本 来 の 目的 で あ る機 械 へ の
指 令 を表 現 す る た め で は な く,人 と人 との 意 志 の伝 達 手 段 を 目的 と して も利 用 され て い る.た
とえ ば,複 雑 な仕 事 の 手 順 を仲 間 に 知 らせ るの に く ど くど と文
章 で 表 現 す る よ り も,Pascalの
プ ログ ラム で書 き示 した ほ うが 正 確 で わ か りや
す い とい う こ とが あ り得 る. 著 者 の 知 る限 りでの こ の よ う な仕 事 の 手 順 を記 述 して あ る例 は,料 理法 の 本 で あ る.誰 に で も同 じ味 の 料 理 が で き る よ うに,用
い られ る材 料(デ ー タ)の 記
述 に 始 ま り,料 理 の 手 順(計 算 の 方法)を あ い ま い な とこ ろ が な い よ う に正 確 に 記 述 す る.料 理 の 方 法 をPascalで ての 料 理 人 がPascalを
書 い た 本 な ど見 た こ と もな いが,も
し,す べ
自然 言 語 の よ う に理 解 で き る とす れ ば,料 理 法 の本 は 半
分 以 下 の 厚 さ に な り,も っ と正 確 な 記 述 が で き るの で は な いか と冗 談 半 分 に思 っ て い る. 図1・1に
示 さ れ た 三 つ の プ ロ グ ラ ム は,50個
図 1・1
の 数 の 和 を 求 め る機 械 語,ア セ
ン ブ リ語 お よ びPascalの
プ ロ グ ラ ム の 一 部 分 を 示 し た もの で あ る が,詳
と は と も か く機 械 語 よ り は ア セ ン ブ リ語 に よ る プ ロ グ ラ ム が,ま 語 よ り はPascalに
しい こ
た ア セ ンブ リ
よ る プ ロ グ ラ ム の ほ う が 読 み や す く は な い だ ろ う か.
機 械 語 とア セ ン ブ リ語 との 相 違 は,前 者 が 単 な る 数 字 の 羅 列 で あ るの に対 し, 後 者 は命 令 や デ ー タ の 意 味 との連 想 づ け した 記 号 化 を用 い て 読 み や す くな っ て い る.し か し,双 方 の プ ロ グ ラ ム と もにプ ログ ラム を構 成 す る命 令 の 一 つ 一 つ が か な り微 細 な機 能 しか 持 っ て い な い た め に,プ ロ グ ラム か ら全 体 の 構 成 とか, 思 想 を理 解 す る こ とは 容 易 で は な い. ま た,各 命 令 も機 械 特 有 の もの で わ れ わ れ が 日常 な じみ の な い もの ば か りで あ り,か つ機 械 が 異 な る と異 な っ た 言 語 で 記 述 しな け れ ば な らな い.こ して 高 級 言 語 は,よ
れ に対
りな じみ の あ る 単 語 や 表 現 を用 い書 か れ たプ ロ グ ラ ム も普
通 の 文 章 に近 い し,言 語 が標 準 化 さ れ て 異 な っ た機 械 に も共 通 の プ ロ グ ラ ミ ン グ が 可 能 で あ る. プ ログ ラム 言 語 が 発 達 して くる と,機 械 的 な決 ま りき っ た 手 順 の 記 述 は機 械 に まか せ る こ とが で き る よ う に な り,プ ロ グ ラ ミ ング は,「 どの よ う」に計 算 す る か で は な く「何 を 」計 算 す るか を記 述 す る とい う意 味 あ いが 強 くな っ て くる. 現 代 の プ ロ グ ラ ム は,単
に機 械 へ の 指 令 伝 達 の た め ば か りで は な く,人 間 的
な 要 素 つ ま り人 間 の 思 考 の 表 現 とか,情 報 交 換 の 手 段 と して の機 能 も重 視 され て きつ つ あ る こ とに注 意 してプ ログ ラ ミン グ を 考 え な けれ ば な らな いで あ ろ う.
1.2
よいプログラムとは
よ いプ ロ グ ラム とは どの よ うな プ ロ グ ラ ム を指 す の で あ ろ う か.プ
ログラム
と は,計 算 機 に仕 事 を させ る と きの 手 順 を書 き示 した もの で あ る か ら,そ れ が 正 し く書 か れ て い る こ とが 一 番 大 切 で あ る. 仮 に,こ の条 件 が満 た さ れ て い る もの とす れ ば,答
を得 るまでの計算時 間が
短 い こ と,プ ロ グ ラム が 作 動 す る た め に 必 要 と され る記 憶 領 域 が 小 さ い こ とな どが あ る.こ れ は,計 算 機 資 源 の 利 用 効 率 の 面 か らの評 価 方 法 で あ る.
こ れ に対 して,プ
ロ グ ラ ム の 適 用 範 囲 が 広 い こ と,改 造 が しや す い こ と,プ
ロ グ ラ ム が 人 間 に と っ て読 み や す い こ とな どが よい プ ロ グ ラ ム の 条 件 と な る こ と もあ る. これ らの 評 価 の観 点 を ま とめ る と, (1)
計 算機資源 の利用効 率の観点か らみ た評価
(2)
プ ロ グ ラ ム の 利 用 者 や 作 成 者 な どの 対 人 間 的 な 面 か ら見 た評 価
の 二 つ の 観 点 か らプ ログ ラ ム を評 価 して い る こ とが わ か る.こ の 二 つ の 評 価 方 法 は,異
な った 次 元 に 立 って い る の で,簡 単 に優 劣 を つ け る こ とが で きな い.
こ の 二 つ の 評 価 方法 につ い て も う少 し考 え て み よ う. あ る人 が,数 多 くの場 合 に わ た っ て 同 じよ うな 計 算 を す る問 題 に対 してA, Bの 二 つ の プ ロ グ ラ ム の ど ち ら を 用 い た らよ いの か 考 慮 してい る もの と しよ う. A の プ ロ グ ラム は一 つ の デ ー タ に対 して10秒,B
は20秒
で あ っ た とす る と,
A の ほ うが 選 ば れ る で あ ろ う. こ の 場 合,A
も B も正 しい プ ロ グ ラ ム で あ る とい う仮 定 が あ る.つ ま り,プ
ロ グ ラ ム の 善 しあ しの 最 大 の また 当然 の 条 件 で あ る正 し く作 動 す る とい う こ と を前 提 とで きれ ば,計 算 機 資 源 の 利 用 効 率 だ け で プ ロ グ ラ ム の評 価 が で き る. しか しな が ら,プ ロ グ ラ ム が 正 し く作 動 す る か ど うか とい う こ とは 以 外 に む ず か しい.た
とえ ば,プ
ロ グ ラム に入 力 デ ー タが あ る と き に は,適 用 で き る デ
ー タ の範 囲 ,必 要 と され る精 度,表 が,望
現 の 方法 な ど に制 限 が あ る の が普 通 で あ る
む 結 果 を得 る ため の 入 力 デ ー タの 条 件 を知 る こ とが,プ
ログ ラム を正 し
く作 動 させ るた め に 必 須 とな る.こ れ はプ ロ グ ラ ムの 仕 様 書 な どに書 か れ て い る が,十 分 で な い と きに はプ ロ グ ラム を読 む 必 要 が あ る.利 用 者 で な く,プ ロ グ ラ ム の 作 成 者 側 で あ る と き に は な お さ ら とな る. 以 後 の 議 論 に お い て は,計 算機 資 源 の 効 率 の 面 か らのプ ロ グ ラム の 善 しあ し を 問題 とす る場 合 をプ ログ ラム の 効 率(ま た はア ル ゴ リズ ム の 効 率)と 呼 び,対 人 間 的 な面 か ら見 た場 合 をプ ロ グ ラ ミングの 効 率 と呼 ん で 区 別 す るこ とに す る. こ の 二 つ の 評 価 を統 一 的 に議 論 す る こ と はむ ず か か しい.一 般 的 に は,プ
ロ
グ ラ ム の 効 率 とア ル ゴ リズ ム の 効 率 とは 直 接 関 係 が な い とい え るが,ア ル ゴ リ
ズ ム の効 率 の よ いプ ログ ラム は,複 雑 かつ 技 巧 的 で プ ロ グ ラ ミ ン グが む ず か し くな り,逆 に 人 間 に読 み や す く,明 快 なプ ロ グ ラ ミン グ をす る と,プ ロ グ ラム の 寸 法 が 大 き く,時 間 の か か るプ ロ グ ラ ム とな って しま う傾 向 に あ る. プ ログ ラム の 効 率 は,あ
る物 理 量 か ら数 値 的 に優 劣 が 比 較 で き るが,プ
ログ
ラ ミ ング の 効 率 は な か な か そ うは い か な い.こ の 両 者 の 関 係 をひ とつ の比 喩 で 表 せ ば,「プ ロ グ ラ ミ ング は 小 説 を 書 くの と同 じで あ る」とい う こ とが で き よ う. 無 制 限 に 誰 にで もわ か りや す い 文章 と い う もの は あ り得 な い.小 学 生 の語 彙 で な ん で も説 明 しよ う とす れ ば,表 現 す る概 念 の や さ しい言 葉 で の 定 義 が 必 要 と な る な ど,文 章 は長 く複雑 と な る.か
え っ て大 人 に はわ か りず ら くな る 可 能性
が あ る. 逆 に,専 門 用 語 な どの 高 度 の 意 味 を持 つ 単語 を用 い れ ば,文 章 は簡 潔 か つ 正 確 とな る.だ が,専 門 用 語 を理 解 で き る 人 に は わ か りよ くて も,知 ら な い 人 に は わ か りず ら い. プ ロ グ ラ ミン グ で も,そ の 技 術 の 高 さや,扱
う内 容 が 専 門 的 に な れ ば,そ れ
に 応 じて 高 度 ま た は専 門 の プ ロ グ ラ ム 表 現(ア ル ゴ リズ ム)や デ ー タ の表 現(デ ー タ構 造)が
必 要 とな っ て く る.つ
ま り,プ ロ グ ラ ミン グ は計 算 機 言 語 だ け を
知 っ て い れ ば よ いの で は な く,少 な く と もあ る程 度 の ア ル ゴ リズ ム や デ ー タ構 造 の 知 識 が 不 可 欠 とな る. どの よ うな 場 合 に どの ア ル ゴ リズ ム を用 い る か に は ア ル ゴ リズ ム の 評 価 が 必 要 で あ る し,ア ル ゴ リズ ム を多 く知 れ ば,そ れ だ け 書 か れ るプ ロ グ ラ ム も正確 で わ か りや す くな り,プ ロ グ ラ ミ ング も容 易 とな る.こ の よ うに,一 見 した と こ ろ で は異 な った 次 元 の プ ロ グ ラ ム 評 価 規 準 も 「よ い プ ロ グ ラ ム 」を作 る こ と で は 協 力 しあ って い る.
1. 3
プログラムの構成
わ れ わ れ が 計 算 機 で 解 くべ き問 題 が 与 え られ た と き,ま ず 最 初 に しな け れ ば な ら な い こ とは,こ の 問題 が計 算 機 で 解 く対 象 に な る よ う に モ デ ル 化 す る こ と
で あ る.こ の モ デ ル は,一 般 に 数 学 的 モ デ ル(mathematical 象 モ デ ル(abstract
model)と
model),ま
たは抽
呼 ば れ て お り,解 くべ き問 題 を数 値 表 現 や 図 式表
現 な ど の 記 号 とそ の 記 号 間 の法 則 とで表 現 した もの で あ る. た と え ば,宇
宙 空 間 を飛 行 す る ロ ケ ッ トの あ る時 刻 で の 位 置 を知 りた い とい
う問題 に対 して は,地 球 を原 点 とす る三 次 元 座 標 系 を仮 定 し,ロ ケ ッ トや 各 天 体 系 の 質 量,ロ ば,ロ
ケ ッ トの 噴 射 力 な ど と,引 力 の 法 則 や 運 動 方 程 式 が 与 え られ れ
ケ ッ トを含 め た 天 体 の 状 況 を 幾組 か の 数値 で 表 現 され た モ デル を作 る こ
とが で き る. わ れ わ れ は,現 実 の 問題 を この モ デ ル の 上 に投 影 し,こ の モ デ ル の うえ で 問 題 の 解 を見 い だ そ う とす る.正 確 に は,解
そ の もの を求 め るの で は な く,ど の
よ う に した ら解 が 求 ま るか の 手 段 を見 つ け る こ とで あ る.こ の 解 を求 め る手法 は,ア
ル ゴ リズ ム と呼 ば れ て い る.
1.3.1
アル ゴリズム
ア ル ゴ リズ ム(algorithm)は,古
くは 四 則 演 算 に よ る計 算 の 手 順 の 意 味 に 用
い られ た り,単 に ユ ー ク リ ッ ドの互 除法 に よ る最 大 公 約 数 の 求 め 方 な ど を意 味 して い たが,現
在 で は計 算 の 手 順 全般 を意 味 す る.
しか し,単 に計 算 の や り方 とい う よ りは制 約 が 強 く,計 算 機 関 連 の 記 述 に は 頻 繁 に 使 わ れ 重 用 な概 念 で あ るの で,単
にア ル ゴ リズ ム と訳 され て い る.
アル ゴ リズ ム の 正 確 な 意 味 づ け に は,専 門 的 数 学*の 助 け を借 りな け れ ば な ら な い.む
しろ,ア ル ゴ リズ ム と い う言 葉 自体 が 数 学 の 専 門 用 語 で あ る とい うほ
うが 正 確 で あ る.し
か しな が ら,こ こ で は 正確 な数 学 的 な 定 義 をす る こ とが 目
的 で は な く,そ の概 念 を 平 易 に 理 解 す る だ け で 十 分 で あ る. ア ル ゴズ ム とは, (1)次
の(2)を 満 たす よ うな命 令 を有 限 個 並 べ て 表 現 した計 算 法 の 記 述 で あ
る. * 数 学 基 礎 論,計
算 の 理 論 な どの 分 野 の 数 学.
(2)各
命 令 は,そ れ が 実 行 され る すべ て の 状 況 に 対 して,あ い ま い さ が な く
明確 に記 述 され て い て,か つ,有 (3)命
限 時 間 で 実 行 され な けれ ば な ら な い.
令 の 実 行 順 序 は,特 に指 定 の な い 限 り,一 つ の 命 令 が 終 わ っ た後 は,
そ の 直 後 の 命 令 を実 行 す る もの とす る. (4)ア
ル ゴ リズ ム に は,必 要 に 応 じて計 算 の 初 期 値 と な るデ ー タ(ア ル ゴ リ
ズ ム の 入 力 と呼 ぶ)が あ って も よい.ま
た,少 な くと も一 つ の 計 算 結 果(ア
ル ゴ リズ ム の 出 力 と呼 ぶ)を 持 た な け れ ば な ら な い. (5)命
令 列 の 中 に は必 ず停 止 命 令 が あ り,計算 開 始 か ら有 限 回の 命令 の 実 行
の 後 に 必 ず 停 止 命 令 が 実 行 され る保 証 が な けれ ば な らな い. ア ル ゴ リズ ム の 条 件 の(5)の 代 りに (5') 命 令 列 の 中 には,必 で 置 き か え た も の,つ
ず停 止 命 令 が な けれ ば な らな い.
ま り ア ル ゴ リ ズ ム の 条 件 の う ち,有
に 停 止 す る 保 証 の な い 場 合 は,プ
ロ シ ジ ァ(procedure)と
限回の命令実行の 後 呼 ば れ る.す
べ ての
ア ル ゴ リ ズ ム は プ ロ シ ジ ァ で も あ る こ と は す ぐ に わ か る. プ ロ シ ジ ァ と い う 用 語 も数 学 の 専 門 用 語 で,Pascalの じ綴 り で あ る の で ま ぎ ら わ し い.以 ぐ た め に,こ
下 の 議 論 で は,こ
手 順(procedure)と
同
の 二 つ が混 同 す るの を 防
こ で 定 義 し た プ ロ シ ジ ァ は 計 算 手 順 と 訳 し,Pascalの
ほ う は単 に
手 順 とす る こ と に す る. 【例 】
与 え られ た整 数m(m>0)が
3の 公 倍 数 で あ るか否 か を判 定す る問 題 を考 えて
み よ う.
Procedure も しm=0
A
Step
A1:
な ら ば Step
Step
A2:
m-3を
Step
A3:
Step A1へ.
Step
A4:
「m は 3の 倍 数 で あ る 」と 出 力 す る.
Step
A5:
計 算 を 停 止 す る.
計 算 し,そ
A4へ.
の 値 を 改 め て m の 値 と す る.
(a)Procedure
A
(b)Algorithm
B
図1・2
前 記 の計 算 の 手 順 は,有 限 の 命 令 数(5 ス テ ップ)で あ り,そ れ ぞ れ の 命 令 に は あ い ま い さ が な く有 限 時 間 で 実 行 で き る.入 力 は 非 負 の 整 数 m,出 力 は「m は 3の 倍 数 で あ る 」と い う文 章 で あ り,停 止 命 令 が あ る の で この 計 算 法 の 記 述 は 計 算 手 順 で は あ るが ア ル ゴ リズ ム で あ る とは い え な い.な ぜ な らば,m 公 倍 数 の 場 合 に は 計 算 が 停 止 す るが,そ
が 3の
うで な い と きに は 永 久 に停 止 す る こ と
が な い.こ の 計 算 手 順 を
Algorithm ら ばStep
B
Step
B1:
も しm=0な
Step
B2:
m-3を
Step
B3:
Step
Step
B4:
「m は 3の 倍 数 で あ る 」と 出 力 す る.
Step
B5:
計 算 を 停 止 す る.
Step
B6:
「m は 3 の 倍 数 で は な い 」と 出 力 す る.
Step
B7:
計 算 を 停 止 す る.
計 算 し,そ
B4へ.ま
たm