知能プログラミング演習I・前半講義 Prolog演習:掲示板


演習の進め方演習の予定レポート課題レポートの提出方法ホームへ戻る

演習の進め方

この演習では,Prolog言語の基本を学びながら,論理プログラミングと知能プログラミングの方法を学びます.

成績はレポート(及び小テスト)で評価します.これ以外の試験はしません.

演習の予定

※注意:日程や内容は変更される場合があります.

第0回:
講義+演習の進め方説明
レポート出題
  SWI-Prologの起動確認
第1回:
講義(導入,テキスト1章 Prologの概観,テキスト2章 Prologプログラムの構文と意味)
レポート出題
  練習1.2 (教科書p.6)
  練習1.5 (教科書p.12)
  練習1.6 (教科書p.18)
  練習2.1 (教科書p.34)
  練習2.3 (教科書p.40)
  練習2.5 (教科書p.40)
第2回:
講義(テキスト3章 リスト,オペレータ,算術演算)
  問題3.1 (教科書p.72)
  問題3.2 (教科書p.73)
  問題3.4 (教科書p.79)
  問題3.9 (教科書p.79)
第3回:
講義(テキスト3章 リスト,オペレータ,算術演算)
レポート出題
  問題3.8 (教科書p.79)
  問題3.11 (教科書p.80)
  問題3.12 (教科書p.85)
  問題3.21 (教科書p.92)
  問題3.9-別解
第4回:
講義(テキスト4章 構造の利用と例題プログラム)
  レポート出題
  問題4.2 (教科書p.98)
  問題4.5 (教科書p.105)
第5回:
講義(テキスト5章 バックトラックの制御)
レポート出題
  問題5.2 (教科書p.133)
  問題5.3 (教科書p.133)
  問題5.6 (教科書p.137)
第6回:
講義(テキスト6章 入出力)
  問題6.2 (教科書p.153)
  問題6.3 (教科書p.155)
第7回:
講義(テキスト7章 その他の組込み手続き)
  問題7.3 (教科書p.175)
  問題7.5 (教科書p.175)
  問題7.8 (教科書p.185)

注意事項


レポート課題

課題 rep07::提出〆切 2023年06月12日 17時
注意:
述語 memberを用いて解答を作成する場合は教科書p.69の定義を用いて,述語名を"mem" とせよ.
traceを用いて実行過程の追跡を行うこと.こちらを参照
問題7.3 (教科書p.175)

述語ground(Term)を,具体化されていない変数がTermに含まれない
なら真となるように定義せよ.※ただし,組み込み述語にgroundが
定義されているので,gndとして定義せよ.
問題7.5 (教科書p.175)

subsumes(Term1,Term2)
という関係を,Term1がTerm2と等しいか一般的であるように定義せよ.
たとえば,
?- subsumes(X,c).
yes
?- subsumes(g(X),g(t(Y))).
yes
?- subsumes(f(X,X),f(a,b)).
no
つまり,subsumes(Term1,Term2)は以下の式を満足するときに真を
返す述語とする.
HB(Term1)⊇HB(Term2)
ここでHB(T)は項Tのエルブラン基底の集合を表す.
ただし,組み込み述語にsubsumesが定義されているので,
subsumeとして定義せよ
ヒント:
項の構造に注目して問題の宣言的意味を満足するようにプログラム
すると良い.(エルブラン領域を手続き的に求めて集合の大小関係
を比較しようとする場合,HBは一般的に無限となり得るため,解法
として適さない.)
問題7.8 (教科書p.185)

与えられた集合(集合はリストで表わされるとする)のすべての部分集合の集合を
計算するために,関係powerset(Set,Subsets)をbagofを用いて定義せよ
※rep3問題3.8で作成した部分集合を生成する述語subsを用いて定義すること
注意:
レポートは出題された問題すべてをまとめて1通のメールで提出すること.複数回に分けた場合,上書きされて最後の送信のみが有効となる.
また,traceを用いて実行過程の追跡を行うこと.こちらを参照

レポートの提出方法 (重要)