■掲示板に戻る■
■過去ログ倉庫めにゅーに戻る■
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 名前: 2 投稿日: 2000/12/11(月) 14:15
- >>1
1じゃね〜ぞ!!
- 7 名前: 2 投稿日: 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