ホーム » スタッフ » 斉藤徹 » ハノイの塔の帰納法による証明とメモリ利用の問題提起

2009年5月
« 4月   6月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

最近の投稿(電子情報)

アーカイブ

カテゴリー

ハノイの塔の帰納法による証明とメモリ利用の問題提起

ハノイの塔の処理回数の証明

前回授業のハノイの塔のルールの説明を受け、 実際にハノイの塔の処理回数の再帰方程式を示す。 そして実際にその証明ということで、数学的帰納法を用いて証明を行う。

処理速度のオーダの一般例として、 の事例として、クイックソートなどの例を示し、説明のしやすい マージソートについて、再帰方程式を示す。 次に代入法により、その式の一般解を示す。

メモリ利用の問題提起

例として、名前と電話番号のデータベースを作るというテーマとして、 これに必要とするデータ構造の宣言を示し、その問題点を示す。

#define DATA_SIZE 100
#define NAME_SIZE 10
#define TEL_SIZE 10
char name[ DATA_SIZE ][ NAME_SIZE ] ;
char tel[ DATA_SIZE ][ TEL_SIZE ] ;

しかし、DATA_SIZE は、1クラス50人ではなく、学年=200人、学校=1000人かもしれない。 TEL_SIZE は、12-3456 でなく、携帯電話 090-1234-5678 の16文字かもしれない。 "0033"をつけるかもしれない、"内線番号"がつくかもしれない、"国際電話で国別コード"がつくかもしれない。 NAME_SIZE も、漢字8文字=16byteかもしれない、 寿限無 みたいな名前だったら、漢字約100文字=200byte にするのか? 最初から、こういうめったにない事例に応じて、*_SIZE を巨大にするのは、メモリの無駄。 かといって、

int x ;
char name[ x ] ; // C言語では、配列サイズは定数しか使えない

こういう点で、データサイズが任意というのは、いかにプログラムで扱いにくいのかを説明する。