try: 通常の処理 [処理] except:エラー時の処理 [処理]
n=3(円盤3つ)の問題は(1,1,1)の初期状態(3つの円盤は柱1にある:(小,中,大))から(3,3,3)の終了状態(3つの円盤は柱3にある:(小,中,大))までのすべて可能状態を表示する(状態空間を示す) 。辞書のデータ構造も使えます、その時、
初期状態は{小:1,中:1,大:1}, 順番は需要です。:
{中:1,小:1,大:1}か{中:2,小:2,大:1}はルールの違反です。
と
終了状態{小:3,中:3,大:3}
となる。
辞書キーは逆にも出来ます。
初期状態: {1:[小,中,大],2:[],3:[]}、
終了状態:{1:[],2:[],3:[小,中,大]}
>>> ================================ RESTART ================================
>>>
initial state:{1: ['小', '中', '大'], 2: [], 3: []}
move disk 1 from:1 --> to:3
{1: ['中', '大'], 2: [], 3: ['小']}
move disk 2 from:1 --> to:2
{1: ['大'], 2: ['中'], 3: ['小']}
move disk 1 from:3 --> to:2
{1: ['大'], 2: ['小', '中'], 3: []}
move disk 3 from:1 --> to:3
{1: [], 2: ['小', '中'], 3: ['大']}
move disk 1 from:2 --> to:1
{1: ['小'], 2: ['中'], 3: ['大']}
move disk 2 from:2 --> to:3
{1: ['小'], 2: [], 3: ['中', '大']}
move disk 1 from:1 --> to:3
{1: [], 2: [], 3: ['小', '中', '大']}
>>>
実行結果は授業中に紹介したプログラムからのものです。利用したデータ構造は次のようです。Python言語はC言語と同じからリストか配列の最初インデックスは0です。
disk={1:'小',2:'中',3:'大'}
state={1:[disk[1],disk[2],disk[3]],2:[],3:[]}
要素を参照したい時、disk[i](ex:disk[3]='大')を使います。
状態の円盤を移動したい時 move(frm,to,n)を変更し、
state[to] = [disk[i]] + state[to](frm, to:柱の変数)と
state[frm][disk[i]のインデックス]の要素を削除する。状態(state)を出力すれば、上記の結果を得られるでしょう。
グラフの二つのノードを与える時、経路を探索プログラムはリンクの通りで行う
ここクリック:graph-search-explain.html
課題4:締切(2011/6/3)
(1)授業の知能システム学のグラフ例をPythonで実装する。
(2)授業の知能システム学の課題3-1、3−2のデータ構造も実装する
課題5:締切(2011/6/10)
知能システム学の課題4を実装する。
課題6:締切(2011/6/17)
上記のプログラムを入力し、理解し、コメントを付けて、出力結果を別のファイルに保存するプログラムを作成せよ。
課題7:締切(2011/6/20)
(1)上記のプログラムを入力し、理解し、コメントを付けて、出力結果を別のファイルに保存するプログラムを作成せよ。
(1)課題6の出力をこのプログラムのデータ入力にしなさい。その時、すべてのタグを処理しなさい。出力データのみを別のファイルに保存する。
この関数を実装し、n=30までの関数呼び出し結果をリストに保存してからファイルにも保存するプログラムを作成する。
その関数の再帰呼び出しの実行を図で説明しなさい。ハノイの塔のような図を作成しなさい (F(30),F(29),F(28),省略,F(3),F(2),F(1)の計算を図で示すこと)
(2)以下の擬似コードをPythonプログラムに変換しなさい。
pivot = 要素の最大値と要素の最小値の平均値にする
関数quicksort()再帰呼出の擬似コード:
def quicksort(数列)
if len(数列) <= 1 then return 数列 # len(数列):数列の要素の数
if len(数列) == 2 then
if 数列[0]>数列[1] then return 数列=[数列[1],数列[0]]
else return 数列
if len(数列) > 2 then
pivotを求める(要素の最大値と要素の最小値の平均値)
左のリスト=[]
右のリスト=[]
for 要素 in 数列:
if 要素 <= pivot then 左のリストに追加
else 右のリストに追加
左のリスト=quicksort(左のリスト) #左のリストをソートする
右のリスト=quicksort(右のリスト) #右のリストをソートする
return 左のリスト + 右のリスト
この関数を実装し、結果をリストに保存してからファイルにも保存するプログラムを作成する。その関数の再帰呼び出しの実行を図で説明しなさい。ハノイの塔のような図を作成しなさい
(3) csv, xmlモジュールの関数のリストを調べ、それぞれの関数を日本語で説明せよ。
(4) 地震のエネルギー(J:Joules)は次の公式で計算する:
その関数を実装し、メインプログラムには震度ML数字(2から11)を入力し、関数を呼び出して、関数の結果表(Jouleとton of TNT(爆発物のエネルギー単位), 1 ton of TNT=4.184 x 109Joule)を出力する。
x = np.arrange(-5,5,0.3)のx軸を変更できます。
matplotlibのマニュアル:http://matplotlib.sourceforge.net/api/pyplot_api.html#module-matplotlib.pyplot
重み付き無効グラフの最小木問題 (Minimum Spanning Tree of a undirected weighted graph Problem)
プリム法とは、グラフ理論で重み付き連結グラフの最小全域木を求めるアルゴリズムである。(プリム法)
(1) 2011/5/20の演習の時のグラフを重み付き無効グラフにしてから最小全域木を求めよ。
(2) 授業の知能システム学第8-9回の岩手県グラフ例を重み付き無効グラフの最小全域木をプログラム用いて求めよ。プログラムはプリム法を使う。
(3)自分で作った岩手県の重み付き無効グラフも最小全域木をプログラム用いて求めよ。
それぞれの最小木をグラフ上で図せよ。
問: '宅'は英語で何ですか? <- プログラムの質問 答: home <- ユーザの入力 当り! <- プログラムチェックの結果 問: '客'は英語で何ですか? 答: guest 当り! 問:'river'の漢字は何ですか? 答: 川 当り! 問:'leader'の漢字は何ですか? 答: 導 残念! 正解: '将' 終了の時、 まとめ:合計 =(問:4、正解:3、誤り:1)プログラムの質問は乱数モジュール(random)を利用して、常用漢字リストの漢字か英単語の1つを選択し、質問文と答えのタプルを作成する。チェックは正規表現を使用する。
re.compile()関数とre.match()関数とre.sub()関数を使ってみる。ファイル名(regex4.py)
次のファイルは必要です:(kenji_poem1.txt)(hira-kata.txt)。
dataというフォルダを自分のプログラムにあるフォルダのサブフォルダです。
集合(セット)の作成、要素の追加、和集合(&)、共通集合(|)、差集合(-)、対称差(^)
内包表記:
(ここでif文は0か空"",[]の時、Falseと評価し、0以外はTrueと評価される)
Wikipediaのページから以下の議事コードとグラフをプログラムに実装した。
上記のプログラムを改善しましょう。入力したデータをファイルに保存し、必要な時、そのファイルを読み込む。データ構造はクラスとオブジェクトで記述しましょう。辞書は単語のリストである(class tango_list(object): ... ; )。その辞書はオブジェクト単語のリストとして定義しましょう( jisho=tango_list() がインスタンス).各単語が単語クラスのインスタンスである (class tango: pass;)。単語はオブジェクトである( 次にa_tango=tango() がインスタンス)。その単語オブジェクトは名前、定義、英語の要素を持っている(a_tango.name, a_tango.teigi, a_tango.eigo )(C言語なら、structの構成に当てはまる)。ライブラリpickleというオブジェクトデータベースファイル管理ツールを使用しましょう。
Webラーニングプラザ:オブジェクト指向 (ログインしないで学習する)
課題11: 締切(2011/08/08)
辞書のプログラムのフローチャートを描く。オブジェクトとクラスの図を描く。
自分が前期で受講しているの授業名、定義(内容)、英語名を上記の辞書登録プログラム
を用いて入力し、ファイルに保存する。メニュ1の内容をプリントスクリーンし、提出する。
Page designed by David Ramamonjisoa