Download - Algo2014 a02
[第2回] コンピュータの基本処理
アルゴリズム論 a (2014)
10進数 1+1=2
2進数 1+1=10
1ビットコンピュータ
1+1=0
64ビットコンピュータ
11・・11+1=0
64桁
入力
最終出力
逐次的処理(直列的処理)
処理1 処理2
処理 n ・・・・・
(出力1) (出力2)
(出力n-1)
中間出力
処理の順番が重要
中間出力
中間出力
入力 出力
並列的処理
処理1
処理2
処理 n
・・・・・
処理結果の合成
問題分析
アルゴリズムの確立
プログラム開発
実行、結果、検証、解決
コンピュータの処理部分
CPU メモリ
ハードディスク
読出し・書出し
一時記憶 計算・処理
書出し
読出し
元データ、処理結果の記録・保存
制御
コンピュータの処理部分
CPU メモリ
読み出し
計算・処理
メモリ
書き出し
一時記憶
入力 出力 処理
入力 出力 処理
問題 解答 アルゴリズム
コンピュータの処理
問題解決的
複数ビットの単位 数値/文字/文字列
連続した番地
※メモリの記憶場所を、便宜上箱のように表す
123 “A” “あいうえお”
代入 メモリの中にデータを記憶させる
比較 2つのメモリの中の値の大小を比較
交換 2つのメモリの中の内容を交換
スワップ(swap) 作業用領域を使用
代 入
CPU
文字 ”A”
演算・処理
Load(読込み)
メモリ内容の書き換えはCPUを通じて行う
文字 ”A” ・・・・・
Store(上書き)
メモリ1 メモリ2
メモリ間のデータの交換(SWAP)
データA
メモリの内容を交換
データB
データB データA
スワップ
作業用メモリを用意
A B
B
第3の空メモリを用意
A A
B
A B
B A
B
3つのメモリの間の
循環代入で実現
退避
上書き 上書き
解放
c ← a (メモリ c に a の内容をコピー)
a ← b (メモリ a に b の内容をコピー)
b ← c (メモリ b に c の内容をコピー)
※プログラムでは a = b のように記述
c = a
a = b
b = c
A B
A+B B
A+B B-(A+B)
A+B-A -A
B +A
加算
減算
減算
正負反転
ゲーム解決はアルゴリズムの典型
「ゲームに勝つ手順を見つける」
勝利に導く手順がアルゴリズム
解の発見、最短ステップでの解決 1人ゲーム
2人ゲーム
多人数ゲーム
15パズル→8パズル
解決の手順を考える
8クイーン問題
8個のクイーンの可能な配置
自分の知っているゲーム(ルールを正しく知っているもの)でプレイする方針の手順を説明
必勝手順がないものは、勝てる可能性がある手順
例) 「ルービックキューブの整列手順の方針」
「オセロで勝つための手順の方針」
自動販売機でに千円札を入れた場合の
お釣りの硬貨の種類と枚数を判定するアルゴリズム
を考える。