5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Prolog でまったり

1 :人工無能:2000/12/11(月) 00:43
Cなどの言語とは全く得意分野も構造もちがうProlog。
そんなPrologについてまったり話しましょう

2 :名無し娘。:2000/12/11(月) 00:44
よく分からんが人工知能用の言語だっけ?
実際人工知能ってどれくらいのもの作れるの?

3 :名無しさん@お腹いっぱい。:2000/12/11(月) 06:28
>>1=2
1自身がよく判ってないので終了。

4 :(V)o\o(V):2000/12/11(月) 13:12
Prologについてわかりやすいサイトとか書籍はありますか?
ちなみに、Prologについは全くしりません

5 :名無しさん@お腹いっぱい。:2000/12/11(月) 13:25
おいらも知りたい。
文法すらわからん。
フリーの処理系ありますか?

6 ::2000/12/11(月) 14:15
>>1
1じゃね〜ぞ!!

7 ::2000/12/11(月) 14:15
6は >>3 の間違い

8 :名無しさん@お腹いっぱい。:2000/12/11(月) 15:12
ftp://ftp.lddlabs.co.jp/lang/prolog/
ここになにかあるよ。


9 :名無しさん@お腹いっぱい。:2000/12/11(月) 15:16
GNU も prolog 出してるよ。

10 :名無しさん@お腹いっぱい。:2000/12/11(月) 15:17
ま、カットの使い方がキメ手だな。

11 :名無しさんi486:2000/12/11(月) 17:10
http://www.gnu.org/gnulist/production/prolog.html

12 :名無しさんi486:2000/12/11(月) 17:14
http://bach.seg.kobe-u.ac.jp/prolog/intro/

13 :名無しさん@お腹いっぱい。:2000/12/11(月) 17:31
どっか、プロログについて詳しくのってるところないかな。
歴史とか背景とか

14 :名無しさん@お腹いっぱい。:2000/12/11(月) 17:52
ここのなかはいろいろ書いてあるんだけど
http://www.ifcomputer.com/home_jp.html

とくにここなんかはどう?
http://www.ifcomputer.com/Products/IFProlog/Manuals/v4.1/user_guide/concept/home_en.html

15 :8:2000/12/11(月) 18:37
PrologのHello, Worldだ。
http://www.latech.edu/~acm/helloworld/prolog.html


16 :初心者ちゃん:2000/12/12(火) 11:00
プロログってシステム設計とかにしか使われないのでしょうか?


17 :Prolog:2000/12/13(水) 00:13
Prologはすごいと言われてるけど、C言語とかを覆すほどのすごさなのか?

18 :名無しさん@お腹いっぱい。:2000/12/13(水) 04:26
 少なくとも、>>15のHelloWorldじゃあ、効率悪くてCどころか
 JAVAの足元にも及ばない位、すごくないです。



19 :名無しさん@お腹いっぱい。:2000/12/13(水) 06:01
逆の演算(みたいなこと)もできる(場合がある)のが
Cよりもすごい

20 :5:2000/12/13(水) 12:28
わーい さんくすー
さっそく gprolog インストール中です。

21 :名前ついてますか?:2000/12/13(水) 12:32
ぎゃはは、もっとも Prologらしくない >> hello.world

でも Prologって本当につかえるソース見たことないや。
パズル解くぐらいなら書いたけどねえ。
でも ICOTでは Prologマシン作ってたんだっけ?


22 :名無しさん@お腹いっぱい。:2000/12/13(水) 13:11
Prologでの正しい "Hell World"
と印字するプログラムを教えてください

23 :5:2000/12/13(水) 17:03
最初のほうのサンプルは理解できるー

member(X, [X|_]).
member(X, [_|L]) :- member(X, L).

になると 理解できるけど、書けません(x_x)。
こんなの思いつきません(x_x)。

しかし.....楽しい^^)

24 :名無しさん@お腹いっぱい。:2000/12/13(水) 22:00
>>19
そうそう、ユニフィケーションと代入の大きな違いだね。

>>23
リストを先頭と2番目以降に分けて考えるやりかたは、
prolog出現前にlispでしゃぶりつくされた常套手段だから
当たり前のように使えるようになっておくといいよ。

25 :名無しさん@お腹いっぱい。:2000/12/13(水) 22:05
>>21
ICOTが作っていたのは非ノイマン型の「第五世代コンピュータ」。

色々な研究が為されて成果もあったけど、結局のところは、
「ノイマン型で高速化・高集積化する方が産業的に成功する」
という現実に叩き潰されたと思う。

26 :名無しさん@お腹いっぱい。 :2000/12/13(水) 22:12
ノイマンってそんなに凄いのか?
なんかで読んだけど計算機を作ったときに
「俺の次に計算の速い奴が確定した」
とか言ってた話を読んだことがあるけど

27 :名無しさん@お腹いっぱい。:2000/12/14(木) 01:14
今までずっとプロローグだと思ってました。

28 :名前ついてますか?:2000/12/14(木) 03:29
>>24 わしも Lisp(つーかLogo) やってから、member述語が理解できました。
で、調子に乗って quick sortを書くと
qsort([], []).
qsort([X|XS], YS) :-
partition(X, XS, XL, XR), qsort(XL, YL), qsort(XR, YR),
append(YL, [X|YR], XS).
partition と appendは作ってね。

でも appendなんかつくってエレガントじゃないなあ。
差分リストとか使えばかっこよくいくんでしょうか?




29 :名前ついてますか?:2000/12/14(木) 19:28
>>25 その非ノイマン型コンピュータのシステム記述言語が Prologじゃ?
ってもしかすると KL/1だったっけ。並列 Prologの一種の。

>>26 すごいっす。やつがいなかったら日本は被爆国になってません。
# いや、多分。


30 :名無しさん@お腹いっぱい。:2000/12/14(木) 21:16
>>26
ロスアラモスで、エッカート(だったかなぁ)が計算機を、
ファインマンが計算尺をそれぞれ忙しく操作している時、
傍らに座ったノイマンが暗算で最も速く答を出していた、
というようなエピソードが「御冗談でしょうファインマンさん」
に載ってる。


31 :名無しさん@お腹いっぱい。:2000/12/14(木) 21:27
>>29
ノイマンが爆縮レンズを考案しなかったら、
核爆弾の完成はかなり遅れただろうね。

32 :名無しさん@お腹いっぱい。:2000/12/14(木) 23:55
「爆縮レンズ」を Yahoo で検索して調べた。
CIAにマークされたかもしれんな。
ヤバイ情報を収集すると特殊機関にマークされるらしい。
これで俺も有名人!!

33 :名無しさん@お腹いっぱい。:2000/12/25(月) 23:59
C言語とPrologの違いがわかりやすい、プログラムの例があれば教えて下さい。


34 :名無しさん@お腹いっぱい。:2000/12/29(金) 22:30
age

35 :名無しさん@お腹いっぱい。:2000/12/31(日) 01:14
なんていうか、prologはCみたいに、趣味とかのプログラミングには使い
ずらいのかな

36 :デフォルトの名無しさん:2001/01/01(月) 00:44
>>33

member(_, []) :- false.
member(Ans, [Ans|Tail]).
member(Ans, [_|Tail]) :- member(Ans, Tail).


bool member(const vector<int>& vec, const int ans)
{
for (vector<int>::iterator it=vec.begin(); it!=vec.end(); it++) {
if (*it == ans)
return true;
}
return false;
}Prologならmember判定できるだけでなく

?- member(X, [1,2,3,4,5]).

のようにすると

X = 1;
X = 2;
X = 3;
X = 4;
X = 5;

のようにmemberを一つ一つ取り出す事ができる。


37 :デフォルトの名無しさん:2001/01/01(月) 01:25
>>36
それだけじゃ、で?って感じだけど...
もっとPrologならではっての無いの?

38 :デフォルトの名無しさん:2001/01/01(月) 01:31
爆縮ってなんですか?
Prologで解答をお願いします。

39 :デフォルトの名無しさん:2001/01/01(月) 01:34
PrologとCを比較するのはナンセンスだよ。

40 :デフォルトの名無しさん:2001/01/01(月) 01:38
理由を説明せよ>39

41 :デフォルトの名無しさん:2001/01/01(月) 03:47
>>37
Prologの特徴を十二分に表現してると思うけど。


42 :デフォルトの名無しさん:2001/01/01(月) 05:01
ふむふむ。なんか面白くなってきた。
ちなみに、36さんの奴をcにするとどうなるの?

43 :デフォルトの名無しさん:2001/01/01(月) 05:48
どれが特徴なんですか?>41

44 :デフォルトの名無しさん:2001/01/01(月) 08:13
Cなどの手続き型言語あるいは命令型と呼ばれる言語は命令を並べる事がプログラミング。
Prologでは関係の記述がプログラミング。

命令の記述とは(全てではないが)データの流れの制御。
Prologではデータの流れは結果として起こる事でありプログラムがデータの流れを記述しているわけではない。
そのためmemberのようにある変数が入力ともなり得るし出力ともなり得る。


45 :名無しさん@:2001/01/01(月) 20:04
Prolog++ってなんじゃ?
http://www.lpa.co.uk/ppp.htm

46 :名前ついてますか:2001/01/02(火) 23:09
Lispスレッドに触発されて書いた sortの定義。
algorithmを書かないようにしてみたけど、当然実用的ではない。(O(n!))

% sortの定義
% Xの bsortが Yであるとは、Yが Xの並び替えで、かつ Yが整列しているとき。
bsort(X, Y) :- permutation(X, Y), sorted(Y).

% permutation(並び替え)
% Yが Xの並び替えであるとは
permutation([], []).
permutation([X|Xs], Y) :- permutation(Xs, Ys), insert(X, Ys, Y).

insert(X, Ys, [X|Ys]).
insert(X, [Y|Ys], [Y|Yss]) :- insert(X, Ys, Yss).

% sorted(整列?)
% Yが整列しているとは、その先頭の 2つが順になっていて、
% かつ、先頭を除いた残りも整列になっているとき
sorted([]).
sorted([X]).
sorted([X0, X1|Xs]) :- X0 =< X1, sorted([X1|Xs]).

47 :デフォルトの名無しさん:2001/01/02(火) 23:53
>>46
う〜む。なにか、人間の言葉みたいだけど、
なぜだかかえってわかりにくいな・・・

48 :デフォルトの名無しさん:2001/01/04(木) 18:49
>>47
同意します。
頭がそっちに入ってる時には非常に分かりやすく感じるんだけど、突然見せられるとなかなか難解。
このあたりがPrologが普及しなかった(すでに過去形・・・)最大の理由だと思う。
結局人間にとっては手続き的思考の方が容易という事なのであろうか。


49 :デフォルトの名無しさん:2001/01/04(木) 18:59
慣れ、だ〜よ〜

50 :名前ついてますか?:2001/01/06(土) 03:40
多分、宣言的に書くほうが本当はわかりやすいんだけど、
でも実はそれじゃ使い物にならなくて (46の sortみたいな)
動作に依存した手続き的な書き方をしなきゃいけない場面も多くて。
そこらへんの切り替えが慣れないと大変なのかなあ。と思いました。


51 :Pure Cer:2001/01/06(土) 11:05
>>46
なななな、何をやってるのかさっぱりわからない。


52 :デフォルトの名無しさん:2001/01/08(月) 02:44
8パズル問題を解くPrologプログラムの例などがのってる
HPを知ってるかた居ませんでしょうか?

53 :デフォルトの名無しさん:2001/01/08(月) 10:06
8パズル問題って何?

54 :デフォルトの名無しさん:2001/01/08(月) 11:22
http://alpha.c.oka-pu.ac.jp/~yokota/ai/03.htm
こういう問題のことです、はい。

55 :デフォルトの名無しさん:2001/01/09(火) 23:10
もっとprologのことしたいばい。
HP教えてクレクレタコら

56 :デフォルトの名無しさん:2001/01/10(水) 06:54
Prologでぐったり


57 :タケ:2001/02/19(月) 00:10
・宣言的に記述できるのは、非常に有用。
ともかく「性質」をならべるだけでいいのだから。
・大量のデータをファクトで置いとくときの
探索は非常に強力
・手続き的な部分が必要な場合、例えば、
解を複数出したくないときは!をどうしても
使わないといけない。
・ある述語が必ず成功するのか、失敗することも
あるのかを考えないといけない。
・他の手続き的言語とうまく組み合わせることが大事
なんじゃないかなあ。

以上!!

58 :デフォルトの名無しさん:2001/02/24(土) 17:19
カットの存在で萎えました。

59 :デフォルトの名無しさん:2001/04/13(金) 04:13
あげ

60 :デフォルトの名無しさん:2001/04/13(金) 13:23
>>52
8QUEEN のことか?

http://www.geocities.co.jp/SiliconValley-Oakland/1680/prolog/prolog12.html

61 :デフォルトの名無しさん:2001/04/13(金) 18:13
むかーし処理系書いたけど、面白いよ。
つーかプログラムか?あれ?SQLの方が
近いのではないかしらん。


62 :>61:2001/04/13(金) 22:10
面白いのはいいから
使い道おしえてくれ

63 :デフォルトの名無しさん:2001/04/17(火) 17:32
データベースの操作とかも出来るらしいです。
第五世代コンピュータの開発に用いられたらしいですけど・・・

64 :デフォルトの名無しさん:2001/05/08(火) 20:18
同値関係(反射律、対称律、推移律)ってPrologでどう書くの?

65 :デフォルトの名無しさん:2001/05/08(火) 21:09
その質問の答えがここで返ってくると思うか?>64

66 :デフォルトの名無しさん:2001/05/08(火) 21:26
>64
言葉の意味をおせーてくれ!たのむ!!

67 :デフォルトの名無しさん:2001/05/08(火) 21:59
はんしゃ率 R(X,X).
タイショウ率 R(Y,X) :- R(X,Y).
水位率 R(X,Z) :- R(X,Y),R(Y,Z).
かな〜

68 :デフォルトの名無しさん:2001/05/09(水) 09:54
それだと止まらなくなるんじゃないか?

69 :デフォルトの名無しさん:2001/05/09(水) 14:59
人工知能やるにはやっぱりlispとprolog、両方極めるべきですか?

70 :デフォルトの名無しさん:2001/05/09(水) 16:14
>>67
そのまま書けばいいんでない?処理系によるけど。

71 :デフォルトの名無しさん:2001/05/09(水) 21:25
つーかlispでprolog実装しろ>69

72 :関数型牽制揚げ:2001/05/10(木) 23:38
そだね、やっぱunificationとresolutionでLisp入門だよね。

73 :デフォルトの名無しさん:2001/05/11(金) 00:13
http://bach.seg.kobe-u.ac.jp/prolog/

74 :デフォルトの名無しさん:2001/06/10(日) 03:14
WIN版で日本語対応かつフリーなPrologってないでしょうか?
UNIX版では結構あるんですけど、、、

75 :デフォルトの名無しさん:2001/06/10(日) 03:27
>>74
windowsに移植するってのは?
(ひょっとするとcygwin環境でそのままコンパイルできるかもしれないし。)
あとは、日本語に対応したlispやschemeの上で使うとか。
scheme上で動くのはschelogってのがあった様な。

76 :デフォルトの名無しさん:2001/06/11(月) 02:19
>>75
レスありがとうございます。
基本的に初心者にも簡単に使用できるシステムを考えているもので、
cygwinでの動作はシステムの趣旨から反してしまうので、、、
せっかく教えていただいたのに、自分勝手ですみません。
schelogは知りませんでした。
調べてみようと思います。

77 :デフォルトの名無しさん:2001/07/18(水) 00:24
479まで下がってたage

15 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)