2014 年度 SCCP s 古河智弥 目的 論理型プログラミング言語 Prolog の学習 宣言型言語であり 探索などに利用することができるプログラミング言語 Prolog の基本を習得し 機械学習の研究への応用および データベースの問い合せ言語として Prolog を記述する方法を

Similar documents
kantan_C_1_iro3.indd

PowerPoint プレゼンテーション

離散数学

オートマトン 形式言語及び演習 1. 有限オートマトンとは 酒井正彦 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110,

スライド 1

融合規則 ( もっとも簡単な形, 選言的三段論法 ) ll mm ll mm これについては (ll mm) mmが推論の前提部になり mmであるから mmは常に偽となることがわかり ll mmはllと等しくなることがわかる 機械的には 分配則より (ll mm) mm (ll mm) 0 ll m

メソッドのまとめ

Microsoft PowerPoint - handout07.ppt [互換モード]

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

JavaプログラミングⅠ

Microsoft PowerPoint - HITproplogic.ppt

Microsoft PowerPoint - mp11-02.pptx

プログラミング基礎

Microsoft PowerPoint - 1.ppt [互換モード]

論理学補足文書 7. 恒真命題 恒偽命題 1. 恒真 恒偽 偶然的 それ以上分割できない命題が 要素命題, 要素命題から 否定 連言 選言 条件文 双 条件文 の論理演算で作られた命題が 複合命題 である 複合命題は, 命題記号と論理記号を 使って, 論理式で表現できる 複合命題の真偽は, 要素命題

Functional Programming

知識工学 II ( 第 2 回 ) 二宮崇 ( ) 論理的エージェント (7 章 ) 論理による推論 命題論理 述語論理 ブール関数 ( 論理回路 )+ 推論 ブール関数 +( 述語 限量子 ( ) 変数 関数 定数 等号 )+ 推論 7.1 知識

データベースS

オートマトンと言語

Microsoft PowerPoint - qcomp.ppt [互換モード]

リレーショナルデータベース入門 SRA OSS, Inc. 日本支社 Copyright 2008 SRA OSS, Inc. Japan All rights reserved. 1

プログラミング実習I

データ構造とアルゴリズム論

情報数理学

Microsoft PowerPoint - fol.ppt

Microsoft PowerPoint - logic ppt [互換モード]

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

Microsoft Word - 201hyouka-tangen-1.doc

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

PowerPoint プレゼンテーション

Microsoft PowerPoint - 5.ppt [互換モード]

Javaプログラムの実行手順

オートマトン 形式言語及び演習 3. 正規表現 酒井正彦 正規表現とは 正規表現 ( 正則表現, Regular Expression) オートマトン : 言語を定義する機械正規表現 : 言語

PowerPoint Presentation

2-1 / 語問題 項書換え系 4.0. 準備 (3.1. 項 代入 等価性 ) 定義 3.1.1: - シグネチャ (signature): 関数記号の集合 (Σ と書く ) - それぞれの関数記号は アリティ (arity) と呼ばれる自然数が定められている - Σ (n) : アリ

プログラミング入門1

JAVA入門

Microsoft PowerPoint - system8.ppt

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

文法と言語 ー文脈自由文法とLR構文解析2ー

Microsoft PowerPoint - 講義補助資料2017.pptx

レコードとオブジェクト

PowerPoint プレゼンテーション

Prog2_12th

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Microsoft PowerPoint - mp13-07.pptx

メタデータスキーマレジストリ MetaBridge の概要

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

プレポスト【解説】

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

2006年10月5日(木)実施

JavaプログラミングⅠ

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

Microsoft PowerPoint - db03-5.ppt

PowerPoint プレゼンテーション

Functional Programming

Microsoft PowerPoint - logic.pptx

7-1- 基 RDB に関する基礎知識 1 独立行政法人情報処理推進機構

Microsoft PowerPoint - ProD0107.ppt

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

プログラミング基礎I(再)

Microsoft PowerPoint - logic ppt [互換モード]

目次 研究目的 背景システム開発について実験および評価結論

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

6回目

Microsoft PowerPoint - class2-OperatorOverLoad.pptx

コンピュータ応用・演習 情報処理システム

nlp1-12.key

JavaプログラミングⅠ

紀要_第8号-表紙

PowerPoint プレゼンテーション

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

Microsoft Word - VBA基礎(3).docx

Microsoft PowerPoint - prog03.ppt

プログラミング入門1

Prog1_12th

プログラミング基礎

<4D F736F F F696E74202D208A778F708FEE95F197AC92CA82F08EC08CBB82B782E98B5A8F E97708B5A8F70816A5F94D196EC8D758E742E >

講義の進め方 第 1 回イントロダクション ( 第 1 章 ) 第 2 ~ 7 回第 2 章 ~ 第 5 章 第 8 回中間ミニテスト (11 月 15 日 ) 第 9 回第 6 章 ~ 第 回ローム記念館 2Fの実習室で UML によるロボット制御実習 定期試験 2

Microsoft PowerPoint - 3.ppt [互換モード]

Microsoft PowerPoint - 10.pptx

< F838A F838B815B838B81698A A2E786C7378>

アスペクトの相互作用を解消するアスペクトの提案

<4D F736F F D208C51985F82CD82B682DF82CC88EA95E A>

Microsoft PowerPoint - 2-LispProgramming-full

PowerPoint プレゼンテーション

XML基礎

PowerPoint プレゼンテーション

Microsoft PowerPoint - sakurada3.pptx

Microsoft Word - CygwinでPython.docx

Wordの学習

構造化プログラミングと データ抽象

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do

1 BCM BCM BCM BCM BCM BCMS

Microsoft Word _VBAProg1.docx

02: 変数と標準入出力

Microsoft PowerPoint - design-theory-6.pptx

Prog1_15th

Transcription:

2014 年度 SCCP s1200191 古河智弥 目的 論理型プログラミング言語 Prolog の学習 宣言型言語であり 探索などに利用することができるプログラミング言語 Prolog の基本を習得し 機械学習の研究への応用および データベースの問い合せ言語として Prolog を記述する方法を学ぶ 概要 The Art of Prolog [1] の全 24 章の内 始めの 2 章を読み 内容の要約を発表する形式で学習した ここでは Prolog についてと 発表資料を元に学習した内容についてまとめた Prolog とは Prolog とは記号処理を目的につくられた 非数値計算用プログラミング言語である 一階述語論理をベースとした宣言型言語であり プログラムは複数の節と呼ばれる構造からなる Prolog のプログラムの流れは 事実や規則の集合に対して質問をし その質問にあてはまるものを Prolog が自動で返し それを使ってまた質問をする といったくりかえしで構成される プログラムを作成する目的は通常なにかの目的 (10 の階上を知りたい ) があり Prolog はその目的を記述することに集中できるように作られている 他の手続型言語のように手順の詳細を記述する必要はない キーワード 一階述語論理数理論理学における論理の数学的モデルのひとつである述語論理の中でも 固体の量化のみを許すもの つまり一階述語論理では述語を量化することはできないので これを元にしている Prolog でも量化することはできない 宣言型言語代表的な手続き型言語である C 言語などのように処理の流れではなく それがなんであるかをプログラムに記述するというプログラミングのパラダイムを表す リテラル原子論理式と呼ばれる論理式における最小の単位 またはそれの否定をあらわす 節命題論理においてリテラルを選言で結合した命題であり Prolog のコードは式の変形を行うことで全て節の形になる 詳細については The Art of Prolog のキーワードの項で記す

事実 animal(dog). のような 変数を含まずそれが常に真であるような節である 規則規則は A : B1,B2,,Bn. (n >= 0) のような形をした節であり A の部分をヘッド, B1,B2,,Bn (n >= 0) の部分をボディと言う 例えば creature(x) : animal(x). のようなものであり 論理学における A B を逆向きにしたものをあらわしている つまり animal(x) が真であるならば creature(x) は真である という意味である また n = 0 である規則は事実とみなすことができる 質問? animal(dog). のように Prolog に対して式を渡し それとマッチするようなものを検索してもらうこと 上記のような事実 (animal(dog).) が宣言されている場合 Prolog は true のように結果を返す 変数を含むこともでき? animal(x). とすると Prolog は X = dog のように マッチする項目を探し結果を返す The Art of Prolog の概要 ここより [1] の要約と用語の解説をする 1 章 この章では Prolog のプログラムにおいて一つの質問や 規則を表す " 節 " に焦点を当てて解説している 節 規則 事実の関係は 節 規則 事実であり Prolog のプログラムは節の集合で成りたっている キーワード 基底節 節の中でも変数を含まないものを基底節と言い そうでないものを非基底節という ホーン節数理論理学において 以下の条件を満す節を差し Prolog での自動推論を行う際の基本となっている 否定でない原子命題のリテラルを Ln (n > 0), C とする 否定でないリテラルがただひとつの節 ( L1 L2 Ln C) を確定節という また 全てが否定を含むのリテラ

ルからなる節 ( L0 L1 Ln ) をゴール節という ここで命題論理において P,Q を原子命題とすれば P Q = P Q になるのでゴール節は = L1 L2 Ln C = (L1 L2 Ln) C = L1 L2 Ln C という変形をすることができ, これは Prolog の規則である C : L1, L2,, Ln と対応する これを利用することで 機械的な推論を効率的に行うことが可能になっている 手続き Prolog における手続きとは同じ名前のヘッドを持つ規則の集合をさす 例えば member(x,[x _]). member(x,[_ T]) : member(x,t). のような一連の手続きを指す 2 章 この章では Prolog の基本的な利用として 論理データベースの定義と データ構造の処理を取り上げ それについて紹介している 論理データベースは事実と規則の集合で構成され, 関係データベースにおけるように 関係を事実の集合から定義する また 関係代数のように 複雑な関係の質問をルールを用いて定義する方法を示しめしている キーワードと関係代数の定義 関係スキーマスキーマは関係 ( 表 ) と関係内の属性 ( フィールド ) 属性や関係の関連の定義である Prolog ではこれを述語で行う 定義データベースが parent, male, female という事実からのみ成り立っているとすると father, mother という関係をルールにより定義することができる father(dad,child) : parent(dad,child), male(dad). mother(mum,child) : parent(mum,child), female(mum). このように データベース中に暗黙に存在する関係を明示的に表すことができる データの構造化データの構造化は プログラミング一般 とくに論理プログラミングにおいて重要であり データの構造化を行うことにより データを意味豊かに表現することができ ルールについてはより抽象的に記述することができる 例えば 月曜の午前 9 時から 12 時 講義棟 M8 教室で大井先生による OS の講義 というものを 構造化をしない場合とする場合

で比較してみる course(os,mon,9,12,lecture_building,m8,oi). course(os,date(mon,9,12),place(lecture_building,m8),oi). 後者の方がデータまとまりがはっきりしており また質問する時も 例えば詳細な場所が必要で 講義の日時や授業の講師についての情報が不要な場合は? course(os,_,place(bulding,room),_). というように 必要な部分だけを取り出すことができる ( _ は無視することを示す特殊な変数 ) 構造化がされていない場合? course(os,_,_,_,lecturerplace,classroom,_). のように 必要な _ が増え煩雑になり どれが何をあらわすかの判断が難しくなる 論理プログラムと関係データベース論理プログラムは 関係データベースの強力な拡張とみることができる 新しいルールを記述できることにより より高い記述力を得ることができる 論理プログラムに導入された多くの概念が データベースにおける概念との意味深い類似性をもち 関係代数の基本演算は論理プログラムの範疇で容易に記述することができる 関係代数は集合和 集合差 直積 射影 および選択という 5 つの基本演算により定義される それらのプログラムを以下に示す 集合和演算それぞれ項数が n であるような 2 つの関係 r, s とから項数 n の関係を新しくつくる r_union_s(x1,,xn) : r(x1,,xn). r_union_s(x1,,xn) : s(x1,,xn). 集合差これを定義するには否定が必要であり 述語 not が定義されているとすると r_diff_s(x1,,xn) : r(x1,,xn),not s(x1,,xn). r_diff_s(x1,,xn) : s(x1,,xn),not r(x1,,xn). ( 処理系によっては not がビルドインでない可能性がある ) 直積直積は 1 つの rule で定義できる r を m 関係 s を n 関係とすると その直積は m + n 項関係となる r_x_s(x1,,xm,xm+1,,xm+n) : r(x1,,xm),s(xm+1,,xm+n). 射影射影は既存の関係が持つ属性の中からその一部だけを使って新しい関係を形成する 例

えば 項数が 3 である関係 r の第 1 および第 3 引数を選択するような射影 r13 は 次のようになる r13(x1,x3) : r(x1,x2,x3). 選択選択は一部に条件を加える 第 2 要素が第 3 要素よりも大きい n 個の項からなる関係は r1(x1,x2,x3,...,xn) : r(x1,x2,x3,...,xn),x2 > X3. 次に 第 1 要素が Smith あるいは Jones であるような関係は 宣言的関係 smith_or_jones(smith). smith_or_jones(jones). が必要となり 次のようになる r2(x1,x2,x3),smith_or_jones(x1). smith_or_jones(smith). smith_or_jones(jones). まとめ 今回の学習では Prolog で用いられる基本的な用語の解説を中心に学んだ Prolog の独特な記法に慣れ 簡単なアルゴリズムや問題に対するプログラムを作成できるようになった また今回の目的である Prolog のデータベースへの利用に向けて関係代数の基本演算を Prolog で記述する方法を学んだ 今後この本ではさらに人工知能の分野の話 ( 探索 非決定性問題 ) などが続くため 更に読み進め理解を深め 最終的には卒論 修論における機械学習の研究に利用していきたい 参考文献 [1]. Leon Sterling, Ehud Shapiro, The Art of Prolog, Massachusetts Institute of Technology 1994. [2]. Ivan Bratko, 安部憲広, Prolog への入門, 近代科学社, 1992.