X



Prologでまったり Part5 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0116デフォルトの名無しさん
垢版 |
2020/09/15(火) 14:31:15.52ID:aWAWrZMP
帰納論理プログラミングってプログラムの入出力の正しい例と不正解の例をあたえて機械学習でプログラムを作るはなしでいいんだよね?
最近のニューラルネットワークから影響受けた進歩はどんなのがあるの?
決定木を作りたい分野?だからあまり影響うけてないのかな。
0118デフォルトの名無しさん
垢版 |
2020/11/20(金) 20:30:34.02ID:kpOgVe3q
>>117
フィボナッチ数列の定義で40番目前後で、計算できなくなっていた定義に、
途中で計算できた値を動的に asserta((fib(N) :- !)) してしまうと途端に巨大な
フィボナッチ数列を生成できるようになる。この場合は自分でassertaしているが
それを処理系が全ての目標に対して、結果を書留め、その結果を優先して利用する。
Prologの速度の遅さを改善し、深さ優先探索では計算不能の場合でも解が得られる
ケースがある。
0120デフォルトの名無しさん
垢版 |
2020/11/23(月) 02:51:39.97ID:XIoHPhIo
miniKanrenのcondeとかcondaとかconduとか用語の名前つけの意味が分からん。
どっかに書いてあるの?
てかこんな変な略語にする意味あるの??学びにくい
0121デフォルトの名無しさん
垢版 |
2020/11/25(水) 10:47:14.62ID:m/dxKoiX
>>118

> >>117
> フィボナッチ数列の定義で40番目前後で、計算できなくなっていた定義に、
> 途中で計算できた値を動的に asserta((fib(N) :- !)) してしまうと途端に巨大な
> フィボナッチ数列を生成できるようになる。この場合は自分でassertaしているが
> それを処理系が全ての目標に対して、結果を書留め、その結果を優先して利用する。
> Prologの速度の遅さを改善し、深さ優先探索では計算不能の場合でも解が得られる
> ケースがある。
副作用がある述語を含んだ述語はメモ化しないとかするん?
0122デフォルトの名無しさん
垢版 |
2021/02/04(木) 08:23:36.35ID:JjBI2OlW
>>121
確かに、解がその時その時で変わる目標もあるので、そのことをどう見抜くのだろうか
0123デフォルトの名無しさん
垢版 |
2021/05/21(金) 17:21:50.55ID:ZyYdcxQO
要素位置が同じ(_n番目,L1,L2,L1のn番目,L2のn番目) :-
要素位置が同じ(1,_n番目,L1,L2,L1のn番目,L2のn番目).

要素位置が同じ(N,_n番目,[A|_],[B|_],A,B).
要素位置が同じ(M,_n番目,[_|R1],[_|R2],A,B) :-
succ(M,N),
要素位置が同じ(N,_n番目,R1,R2,A,B).
0124デフォルトの名無しさん
垢版 |
2021/05/21(金) 17:34:04.02ID:ZyYdcxQO
% 遅いですが、これでも同じ結果がでます。

要素位置が同じ(_n番目,L1,L2,L1のn番目,L2のn番目) :-
nth1(_n番目,L1,L1のn番目),
nth1(_n番目,L2,L2のn番目).
0125デフォルトの名無しさん
垢版 |
2021/05/22(土) 04:06:27.31ID:EzA/TCTS
Prologでは非決定性の述語に書いていくというのが普通です。

春の七草(セリ).
春の七草(ナズナ).
春の七草(ゴギョウ).
春の七草(ハコベラ).
春の七草(ホトケノザ).
春の七草(スズナ).
春の七草(スズシロ).

この春の七草/1という述語は非決定性です。
つまり、所謂データベースは非決定性述語だということになります。
0126デフォルトの名無しさん
垢版 |
2021/05/22(土) 06:37:34.55ID:EzA/TCTS
'春の七草の名前の中に「スズ」が入るのは'(_名前の中にスズが入る春の七草) :-
春の七草(_名前の中にスズが入る春の七草),
sub_atom(_名前の中にスズが入る春の七草,_,_,_,スズ).

のように検索します。sub_atom/5の第二、第三、第四引数はそれぞれ
匿名変数になっていますが、ここは本来
第二引数 : 変位
第三引数 : 文字数
第四引数 : 残り文字数
が来るところです。この検索ではこの情報は必要がないから匿名変数にしてあります。
0127デフォルトの名無しさん
垢版 |
2021/05/22(土) 06:58:50.79ID:EzA/TCTS
'春の七草の名前の中に「スズ」が入るのは'(_名前の中にスズが入る春の七草) :-
春の七草(_春の七草),
sub_atom(_春の七草,_,_,_,スズ),
_春の七草 = _名前の中にスズが入る春の七草.

% この方が良いという意見もある。私は >>126 で構わないと思いますが。
0128デフォルトの名無しさん
垢版 |
2021/05/22(土) 10:57:31.66ID:EzA/TCTS
Prologで項を読み込む時は read や read_term を使うけれど、syntax errorにならないように気を使わなくてはならず、さらに最後にピリオドが必要だったりであまり使われない。
SWI-Prologでは文の読み取りは read_line_to_string/2 が主に使われるようだ。

?- read_line_to_string(current_input,S).

とかやると、プロンプトが出てきて、入力可能になる。アルファベットと認識できる文字なら空白があろうとビリオドがあろうと全体がストリングとして読み取られる。
0129デフォルトの名無しさん
垢版 |
2021/05/22(土) 11:35:44.08ID:EzA/TCTS
さて、read_line_to_string/2の第二引数にはStringが来る。このString。少々ヘンである。

?- read_line_to_string(current_input,X),name(Y,X).
|: 山下
X = "山下",
Y = 山下.

?- name(山下,X).
X = [23665, 19979].

?- read_line_to_string(current_input,[23665,19979]).
|: 山下
false.

?-
伝統的にnameの第二引数にStringが来ると第一引数には対応するアトムが単一化される。確かそうなっているようだが、これをread_line_to_stringの第二引数にもってくるとfalse.となる。
0130デフォルトの名無しさん
垢版 |
2021/05/22(土) 11:43:12.26ID:EzA/TCTS
もう少しやってみると

?- read_line_to_string(current_input,X),X = [97,98].
|: ab
false.

?- "ab" = [97,98].
false.

?- name(X,"ab").
X = ab.

?-
name/2とは第二引数にStringと文字コードリストが入り得る仕様のようだ。
それではなぜ第一引数にアトムがくると文字コードリストが選択されるのか。
双方向性の述語の仕様として異様である。
0131デフォルトの名無しさん
垢版 |
2021/05/22(土) 11:54:49.12ID:EzA/TCTS
実際には、Stringであるかatomであるかはほとんど気にせず使っている。理由は、

?- read_line_to_string(current_input,S),sub_atom(S,0,1,_,X).
|: 山下
S = "山下",
X = 山.

のようにsub_atom/5やatom_concat/3を介すると自動的にatomに変換されてしまう。
ほとんどの文字列処理ではこれらの組込述語を使うことになるためStringとatomについて心配する必要がない。
ただし、
?- read_line_to_string(current_input,S),assertz(S).
|: 山下
これはエラーになる。Stringを述語名に持ってくることはできない。
0132デフォルトの名無しさん
垢版 |
2021/05/24(月) 13:39:16.27ID:pTUv/8tK
>>131
?- read_line_to_string(current_input,S),string_to_atom(S,A),assertz(A).
のようにアトムに変換する述語を介すれば定義可能。
0133デフォルトの名無しさん
垢版 |
2021/05/24(月) 14:45:39.55ID:pTUv/8tK
SWI-Prologにはconsult/1とreconsult/1の区別がない。全部、reconsult/1となる。これによって間違いは少なくなるが、ここと言う時にまとめての節の追加assertzがし難い。このような仕様になっているのは、述語定義とそれが記述されているソースファイルを一対一に対応させたいからなのだろう。
0134デフォルトの名無しさん
垢版 |
2021/05/28(金) 02:54:03.56ID:c1aNJ6R+
別のスレで話題が出ていたPrologの小学校授業の実践例。
私は聞かないのだが、試みている方いますか?
0135デフォルトの名無しさん
垢版 |
2021/05/28(金) 02:56:30.10ID:c1aNJ6R+
>>134
5chでこの質問は無理かな。twitterで問いかけてみよう。
0136デフォルトの名無しさん
垢版 |
2021/05/28(金) 03:08:05.89ID:cfWnMWR2
Prologおじさんは真夜中に仕事!
0137デフォルトの名無しさん
垢版 |
2021/06/01(火) 15:31:29.00ID:IjgT90G7
>>5

いや、Prologは動的な型はあるぞ。
integer/1 で整数であるか調べたりもできる。
型がなかったら整数かどうかを調べることもできない。
0138デフォルトの名無しさん
垢版 |
2021/06/01(火) 15:35:19.88ID:IjgT90G7
>>59
TAPLみたいな型理論を理解するには述語論理を使えるPrologを使うと理解がしやすいと思うんだがな。
単一化もあるから型推論も簡単にかけるし。
0139デフォルトの名無しさん
垢版 |
2021/06/01(火) 15:44:36.37ID:IjgT90G7
>>128
定理証明支援系のCoqも.で終わったりします。
Coqで.を使う言語は言語を扱うメタな言語の方なので、
Prologと共通点があるのかもw
0140デフォルトの名無しさん
垢版 |
2021/06/01(火) 19:28:43.26ID:NMxDDUXJ
>>137
Prologで整数や数値が「型」かどうかとなると相当に怪しい。
単に計算対象になる整数。数値。そしてアトム。それだけ。
複合項のパターンを纏めるつもりが全くない言語で型があると言ってよいものだろうか。
0141デフォルトの名無しさん
垢版 |
2021/06/02(水) 00:05:18.95ID:PGTV1esh
Prologの規格にPrologと型という概念は相容れないという記述でもあるのか?
教えてくれ
0144デフォルトの名無しさん
垢版 |
2021/06/02(水) 02:56:41.74ID:BUsn5VkI
>>141
50数冊発行されている日本語のProlog書の中で、索引に型という項目が存在するのは3冊だけ
やはり単一化が相当に重いから、さらに型付をしたいとは思わないということでは
0145デフォルトの名無しさん
垢版 |
2021/06/02(水) 08:33:49.33ID:WwionR+x
>>144
型という概念はFORTRANの時代からあったわけだし、使ってもよかったはずだけれど
使わなかった。アトムだけで行きたかったけれど妥協して数値は作った。
論理変数に型付けなんて論外。要するにほんの少しでも決まり事を減らしたい。そういう世界。
0146デフォルトの名無しさん
垢版 |
2021/06/02(水) 08:42:56.55ID:BUsn5VkI
>>145
最初から確信を持ってそうなのだから、所謂ガルパゴス化ではないと
0147デフォルトの名無しさん
垢版 |
2021/06/02(水) 12:47:50.87ID:BUsn5VkI
述語論理とかHaskellがあがっていますが、
小6では述語論理やPrologでは遅すぎ。Haskellでは早すぎるのではないでしょうか。
0148デフォルトの名無しさん
垢版 |
2021/06/02(水) 12:50:22.32ID:BUsn5VkI
>>147
すみません。これ誤爆でした。
0149デフォルトの名無しさん
垢版 |
2021/06/04(金) 09:27:00.93ID:y0+/+oEy
「文字を覚えたときがPrologの覚えどき」
とは、言い得ると思うのですが、さて、この「文字を覚えたとき」を何時とみるか。
5才なのか、7才なのか、それとも・・・
0150デフォルトの名無しさん
垢版 |
2021/06/04(金) 09:39:23.01ID:W7exS3i6
>>149
個人差がある。幼稚園に入るために予備校に行ってる児童もいる。この場合は4才だって行けるだろうし。
0151デフォルトの名無しさん
垢版 |
2021/06/04(金) 11:51:33.16ID:y0+/+oEy
公立の小学校なら二年生から。そういう言い方をしないといけないのかな。
0153デフォルトの名無しさん
垢版 |
2021/06/05(土) 05:28:48.44ID:WQBHghpu
わりと興味はあるが書店行っても大学の教材みたいな内容の本しかないのが辛い
CやJavaみたいな初心者向けの入門書(それでいてそれなりに深いとこまでやるゴツくて厚いやつ)欲しい
教材タイプのって数学の教科書みたいな、必要十分なこと書いてはい説明終わり、ここまでの内容でこの問題できるからなやっとけよ、で突き放されて分からないまま途方に暮れて終わる
0154デフォルトの名無しさん
垢版 |
2021/06/05(土) 08:05:06.46ID:st3XvE6E
>>153
適切な表現かどうかわからないが、Prologの『逆引き』本がほしい。
アプリのグループでまとめたもの。まとまった単位のソースが得られ
ればそれをヒントに作り替えたり、そこまでできなくても深く学ぶこ
とができる。
0155デフォルトの名無しさん
垢版 |
2021/06/06(日) 19:15:04.37ID:n4lTECsD
>>140
マーキュリーとか普通にHM型付けしてたりしてますよ。
型クラスもあるしw

integerはatomの部分型と考えることができますし。
numberもatomの部分型
string型もあるし、objectもありますよね。
動的型付けな言語は多かれ少なかれそう言った型システムに守られているので、型なしで未定義エラーで死んだりしません。
0156sage
垢版 |
2021/06/06(日) 19:19:06.05ID:n4lTECsD
>>147
Prolog を型理論を学習する前後で勉強すると良いのではと思う今日この頃です。
述語論理は普通のプログラマにとってとっつき辛いのでTAPLは難解だと言われている。
Prolog で一階述語論理を理解しておくと図が簡単に実装できるので便利w
0157sage
垢版 |
2021/06/06(日) 19:27:41.20ID:n4lTECsD
>> 152
日本語プログラミングとか、型理論とかは確かにオーソドックスじゃないのかもなぁ。
Prologの得意分野は非決定的な計算や言語を扱いやすい点にあるので、言語機能の実験にちょろっと使うのに便利w
だからプログラミング言語の論文で広く述語論理が使われてるのだと思う。
0158sage
垢版 |
2021/06/06(日) 19:30:01.30ID:n4lTECsD
Prologは文法を意識しないで日本語が話せるように使うことができるという意味で簡単だ。
しかし言語の文法を意識して研究する場合にも有用であるので、とっつきやすい人はとっつきやすいのだけど、文法がどうのって話になると途端に敷居が上がる言語だと思いますな。
0159デフォルトの名無しさん
垢版 |
2021/06/10(木) 12:53:16.61ID:gzqz1I/r
>>141
ISOの規格(ISO/IEC 13211-1)では7.1に4頁ほどを割いています。floatやintegerそしてリストの説明。
しかし、冒頭のやや下に

NOTE - Prolog is not a typed language, and an argument of
a compound term or predication tan be any term whatsoever.
・・・
から始まるコメントがあり、その内容は私には不可解ですが、全くtypesを重視しない、そして
言語としてはこの問題に関わらない姿勢だけは読み取れます。
0160デフォルトの名無しさん
垢版 |
2021/06/10(木) 23:11:29.64ID:8rzcBiSm
んー.この註釈が型について語っていることはむしろ逆だろう.
Nonetheless, some predications can be satisfied only when the arguments possess particular properties, and some evaluable functors are defined only when the operands (3.121) possess some particular property.
と続くが,some particular property はつまり型じゃない?
これはrubyとかlispを型なし言語と表現するようなものじゃないかな.
アトミックな項か複合項しかない(型なし言語)にもかかわらず,some particular property をみて処理する(型がある)わけでしょう?
0161デフォルトの名無しさん
垢版 |
2021/06/13(日) 16:17:57.28ID:Mv2X7sgn
>>159
プログラミング言語を広く見た場合にPrologは動的型付け言語な言語なのだけど、
Prolog 文化としては動的型付け言語は型なし言語と標準を作る際でも呼んでいる。
標準化委員会の趣味や趣向、時代的な背景の違いによる用語選択の違いでしょう。
0163デフォルトの名無しさん
垢版 |
2021/07/10(土) 07:22:38.57ID:oQhiue2Q
悲しい
失われる前に知識のアーカイブ化を
0164デフォルトの名無しさん
垢版 |
2021/07/10(土) 14:20:04.35ID:hyh546Qk
@TakaoOzaki
肺癌進行
最短経路でpinpinころり
南無南無
0165デフォルトの名無しさん
垢版 |
2021/12/26(日) 11:33:27.89ID:5417YXm0
快方に向かっているようでよかった。
0166デフォルトの名無しさん
垢版 |
2023/07/07(金) 23:08:08.10ID:dbf8ktWh
その後どうだい?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況