-
1. Data: 2012-09-08 21:41:05
Temat: Prolog - nawracanie - jak jest implementowane
Od: Sebastian Biały <h...@p...onet.pl>
Nadszedł ten moment kiedy czas na Prolog...
Ze względow praktycznych nie mogę tego zrobić za pomocą języka wprost.
Konkretnie nie mogę mojej bazy wiedzy skonwertować do postaci prologowej
bo zajmie to za duzo czasu (a i parsowanie potrwa wieki). Wolałbym zeby
móc operować na moich strukturach danych bezposrednio.
Przypuszczam że jak poszukam czegoś w rodzaju "embedded prolog" to będe
mogł zrobić abstrakcję na dane i niczego nie konwertować.
Jednak zanim to zrobie nurtuje mnie mały problem: nawracanie.
Jak czytam dowolną ksiązkę o Prologu i autor dochodzi do problemu
nawracania to ani słowem nie wspomina że to powoduje coś na kształt
ekplozji kobinatorycznej. Konkretnie pewne dane są wyszukiwane w sposób
naiwny, czymś w rodzaju brute-force wielokronie przeczesując tą samą
przestrzeń faktów. Cieżko mi uwierzyć że tak wyglądają implementacje
Prologa jak opisywany jest algorytm.
Głupi pomysł: zrobmy wyszukiwanie w mojej bazie typu Prolog-like. Język
i składnie pomińmy, chodzi o koncepcje zmiennych, ukonkretniania,
nawracania itp. Gdzie mogę poczytać o *algorytmach* rozwiązywania
zapytań w Prologu? Nie wierzę, że jest aż tak prymitywny jak opisywane w
książkach metody brute-force.
Oczywiście wiem co wypluwa google na hasło "prolog solver" ale może ktoś
zna jakiś ciekawy tekst, może być "popularnonaukowy" opisujacy co i jak
w sposób mozliwe ogólny pozwalający zorientowac się w temacie.
-
2. Data: 2012-09-08 23:19:28
Temat: Re: Prolog - nawracanie - jak jest implementowane
Od: Piotr Chamera <p...@p...onet.pl>
W dniu 2012-09-08 21:41, Sebastian Biały pisze:
> Nadszedł ten moment kiedy czas na Prolog...
...
> Oczywiście wiem co wypluwa google na hasło "prolog solver" ale może ktoś
> zna jakiś ciekawy tekst, może być "popularnonaukowy" opisujacy co i jak
> w sposób mozliwe ogólny pozwalający zorientowac się w temacie.
Może tutaj coś będzie na temat -> http://www.pwlzo.pl/
-
3. Data: 2012-09-08 23:58:19
Temat: Re: Prolog - nawracanie - jak jest implementowane
Od: A.L. <l...@a...com>
On Sat, 08 Sep 2012 21:41:05 +0200, Sebastian Bia?y
<h...@p...onet.pl> wrote:
>Nadszedł ten moment kiedy czas na Prolog...
>
>Ze względow praktycznych nie mogę tego zrobić za pomocą języka wprost.
>Konkretnie nie mogę mojej bazy wiedzy skonwertować do postaci prologowej
>bo zajmie to za duzo czasu (a i parsowanie potrwa wieki). Wolałbym zeby
>móc operować na moich strukturach danych bezposrednio.
>
Ze co chcesz zrobic?... Niby jak Prolog ma "operowac na moich
strukturach danych"?... Nie ma nijakich "twoich struktur danych" w
Prologu
>Przypuszczam że jak poszukam czegoś w rodzaju "embedded prolog" to będe
>mogł zrobić abstrakcję na dane i niczego nie konwertować.
>
Ze co?...
>Jednak zanim to zrobie nurtuje mnie mały problem: nawracanie.
>
>Jak czytam dowolną ksiązkę o Prologu i autor dochodzi do problemu
>nawracania to ani słowem nie wspomina że to powoduje coś na kształt
>ekplozji kobinatorycznej. Konkretnie pewne dane są wyszukiwane w sposób
>naiwny, czymś w rodzaju brute-force wielokronie przeczesując tą samą
>przestrzeń faktów. Cieżko mi uwierzyć że tak wyglądają implementacje
>Prologa jak opisywany jest algorytm.
>
Moze jednak powineines wziac jakas PORZADNA ksiazke o Prologu?
>Głupi pomysł: zrobmy wyszukiwanie w mojej bazie typu Prolog-like. Język
>i składnie pomińmy, chodzi o koncepcje zmiennych, ukonkretniania,
>nawracania itp. Gdzie mogę poczytać o *algorytmach* rozwiązywania
>zapytań w Prologu? Nie wierzę, że jest aż tak prymitywny jak opisywane w
>książkach metody brute-force.
>
To nie jest zadna metoda "brute force".
Jak chcesz wiedziec jak Prolog dziala "od srodka"... Praktycznie
wszystkie Prologi dzialaja w oparciu o WAM - Warren Abstract Machine.
Ksiazka na temat WAM jest tutaj
http://www.cvc.uab.es/shared/teach/a25002/wambook.pd
f
>Oczywiście wiem co wypluwa google na hasło "prolog solver" ale może ktoś
>zna jakiś ciekawy tekst, może być "popularnonaukowy" opisujacy co i jak
>w sposób mozliwe ogólny pozwalający zorientowac się w temacie.
Mzoe powinienes poczyatc to:
http://homepages.inf.ed.ac.uk/pbrna/prologbook/
A moze najpierw to:
http://www.amzi.com/AdventureInProlog/
A jak chcesz wiedziec DOKLADNIE jak "prolog engine" dziala, wez ta
ksiazke
http://www.ida.liu.se/~ulfni/lpp/
W zasadzie rownie postawowa dla uzywajacych Prolog jak ksiazka o
arytmetycze dla robiacych oblicznia numeryczne...
A.L.
-
4. Data: 2012-09-09 00:00:55
Temat: Re: Prolog - nawracanie - jak jest implementowane
Od: A.L. <l...@a...com>
On Sat, 08 Sep 2012 23:19:28 +0200, Piotr Chamera
<p...@p...onet.pl> wrote:
>W dniu 2012-09-08 21:41, Sebastian Biały pisze:
>> Nadszedł ten moment kiedy czas na Prolog...
>...
>> Oczywiście wiem co wypluwa google na hasło "prolog solver" ale może ktoś
>> zna jakiś ciekawy tekst, może być "popularnonaukowy" opisujacy co i jak
>> w sposób mozliwe ogólny pozwalający zorientowac się w temacie.
>
>Może tutaj coś będzie na temat -> http://www.pwlzo.pl/
Nie, nei bedzie bo ta ksiazka (znakomita zreszta) jest na temat
paradygmatu programowania zwanego "constraint logic programming over
finite domains" (w skrocie CLP(FD)) i z Prologiem ma tyle wspolnego ze
Autor opisuje system CLP(FD) zaimplementowany w Prologu. Nie ma nic
tam o Prologu i jego mechanizmach w sensei ogolnym
A.L.
-
5. Data: 2012-09-09 00:25:04
Temat: Re: Prolog - nawracanie - jak jest implementowane
Od: A.L. <l...@a...com>
On Sat, 08 Sep 2012 21:41:05 +0200, Sebastian Bia?y
<h...@p...onet.pl> wrote:
>Nadszedł ten moment kiedy czas na Prolog...
>
Tak na marginesie... Skad wiesz ze Prolog to wlasnei wlasciwe
narzedzie do tego co chcesz robic? I wlasciwie CO chcesz robic?
A.L.
-
6. Data: 2012-09-09 01:08:28
Temat: Re: Prolog - nawracanie - jak jest implementowane
Od: Piotr Chamera <p...@p...onet.pl>
W dniu 2012-09-09 00:00, A.L. pisze:
> On Sat, 08 Sep 2012 23:19:28 +0200, Piotr Chamera
> <p...@p...onet.pl> wrote:
>
>> W dniu 2012-09-08 21:41, Sebastian Biały pisze:
>>> Nadszedł ten moment kiedy czas na Prolog...
>> ...
>>> Oczywiście wiem co wypluwa google na hasło "prolog solver" ale może ktoś
>>> zna jakiś ciekawy tekst, może być "popularnonaukowy" opisujacy co i jak
>>> w sposób mozliwe ogólny pozwalający zorientowac się w temacie.
>>
>> Może tutaj coś będzie na temat -> http://www.pwlzo.pl/
>
> Nie, nei bedzie bo ta ksiazka (znakomita zreszta) jest na temat
> paradygmatu programowania zwanego "constraint logic programming over
> finite domains" (w skrocie CLP(FD)) i z Prologiem ma tyle wspolnego ze
> Autor opisuje system CLP(FD) zaimplementowany w Prologu. Nie ma nic
> tam o Prologu i jego mechanizmach w sensei ogolnym
Poleciłem tę książkę, bo dla mnie, jako laika w tej dziedzinie, była
bardzo pomocna w zorientowaniu się w jakich problemach można stosować
Prolog i jego następców oraz jak to wszystko (ogólnie) działa.
Myślę, że dla OP też mogłaby być pomocna.
(będę się odnosił do polskiej wersji książki)
Jest rozdział 2 pod tytułem ,,Na początku był Prolog", gdzie ok str. 50
jest wyjaśnione jak działa przeszukiwanie z nawrotami i czym się różni
od przeszukiwania całego drzewa (o co OP pytał).
Poza tym książka daje dobry przegląd tego jakie zadania są
rozwiązywalne w Prologu i CLP i jak to w ogóle działa (na wielu
przykładach), co może pomóc OP dokładniej sprecyzować czego potrzebuje
do rozwiązania swojego problemu i dobrać odpowiednią metodę, bo z
pytania wynika, że raczej nie chodzi koniecznie o Prolog, a bardziej o
zbadanie możliwości zastosowania ,,programowania w logice" do jakiegoś
konkretnego problemu.
-
7. Data: 2012-09-09 01:16:16
Temat: Re: Prolog - nawracanie - jak jest implementowane
Od: A.L. <l...@a...com>
On Sun, 09 Sep 2012 01:08:28 +0200, Piotr Chamera
<p...@p...onet.pl> wrote:
>W dniu 2012-09-09 00:00, A.L. pisze:
>> On Sat, 08 Sep 2012 23:19:28 +0200, Piotr Chamera
>> <p...@p...onet.pl> wrote:
>>
>>> W dniu 2012-09-08 21:41, Sebastian Biały pisze:
>>>> Nadszedł ten moment kiedy czas na Prolog...
>>> ...
>>>> Oczywiście wiem co wypluwa google na hasło "prolog solver" ale może ktoś
>>>> zna jakiś ciekawy tekst, może być "popularnonaukowy" opisujacy co i jak
>>>> w sposób mozliwe ogólny pozwalający zorientowac się w temacie.
>>>
>>> Może tutaj coś będzie na temat -> http://www.pwlzo.pl/
>>
>> Nie, nei bedzie bo ta ksiazka (znakomita zreszta) jest na temat
>> paradygmatu programowania zwanego "constraint logic programming over
>> finite domains" (w skrocie CLP(FD)) i z Prologiem ma tyle wspolnego ze
>> Autor opisuje system CLP(FD) zaimplementowany w Prologu. Nie ma nic
>> tam o Prologu i jego mechanizmach w sensei ogolnym
>
>Poleciłem tę książkę, bo dla mnie, jako laika w tej dziedzinie, była
>bardzo pomocna w zorientowaniu się w jakich problemach można stosować
>Prolog i jego następców oraz jak to wszystko (ogólnie) działa.
>Myślę, że dla OP też mogłaby być pomocna.
>
>(będę się odnosił do polskiej wersji książki)
>Jest rozdział 2 pod tytułem ,,Na początku był Prolog", gdzie ok str. 50
>jest wyjaśnione jak działa przeszukiwanie z nawrotami i czym się różni
>od przeszukiwania całego drzewa (o co OP pytał).
>
>Poza tym książka daje dobry przegląd tego jakie zadania są
>rozwiązywalne w Prologu i CLP i jak to w ogóle działa (na wielu
>przykładach), co może pomóc OP dokładniej sprecyzować czego potrzebuje
>do rozwiązania swojego problemu i dobrać odpowiednią metodę, bo z
>pytania wynika, że raczej nie chodzi koniecznie o Prolog, a bardziej o
>zbadanie możliwości zastosowania ,,programowania w logice" do jakiegoś
>konkretnego problemu.
Moze i byc pomocna. Ale jak pisalem, ksiazka jest przede wszystkim o
konkretnym paradygmacie a nei o ogolnym programwoaniu w Prologu czy w
ogole logic programming.
O "ogolnym" polecam ksiazki Bratko "Prolog Programming for Artificial
Intelligence" czy ksiazke "PROLOG by Example: How to Learn, Teach, and
Use It", Helder Coelho
Ksiazka Niederlinskeigo jest "sfokusowana" na dosyc waski wycinek
logic programming
A.L.
-
8. Data: 2012-09-09 11:05:08
Temat: Re: Prolog - nawracanie - jak jest implementowane
Od: Sebastian Biały <h...@p...onet.pl>
On 2012-09-08 23:58, A.L. wrote:
> Ze co chcesz zrobic?... Niby jak Prolog ma "operowac na moich
> strukturach danych"?... Nie ma nijakich "twoich struktur danych" w
> Prologu
Wiem, dlatego przypuszczam że nie tyle potrzebuje Prologa co pomysłow
solvera z Prologa do implementacji natywnej. Tak się składa że baza
wiedzy u mnie jest nie dość, że nietypowa, to jeszcze pochodzi z róznych
abstrakcyjnych źródeł, w tym niektórych dynamicznie zmieniających się.
>> Przypuszczam że jak poszukam czegoś w rodzaju "embedded prolog" to będe
>> mogł zrobić abstrakcję na dane i niczego nie konwertować.
> Ze co?...
Żeby włożyć Prolog do wnetrza mojej aplikacji. A w zasadzie sam solver z
otoczką.
> Moze jednak powineines wziac jakas PORZADNA ksiazke o Prologu?
Racja, lokalnie jednak niewiele mogę znaleźć, to malo poplurany temat w
PL, nawet lokalne biblioteki specjalistyczne albo niczgo nie oferują
albo "już wypozyczone, od 30 lat".
>> zapytań w Prologu? Nie wierzę, że jest aż tak prymitywny jak opisywane w
>> książkach metody brute-force.
> To nie jest zadna metoda "brute force".
Przeszukanie tej samej przestrzeni faktów miliony razy (jak opisywane w
ksiązkach) dla kazdego spasowania zmiennej brzmi jak brute-force.
> Jak chcesz wiedziec jak Prolog dziala "od srodka"... Praktycznie
> wszystkie Prologi dzialaja w oparciu o WAM - Warren Abstract Machine.
> Ksiazka na temat WAM jest tutaj
> http://www.cvc.uab.es/shared/teach/a25002/wambook.pd
f
Super. Przejrze wskazane źródła.
-
9. Data: 2012-09-09 11:13:52
Temat: Re: Prolog - nawracanie - jak jest implementowane
Od: Sebastian Biały <h...@p...onet.pl>
On 2012-09-09 00:25, A.L. wrote:
>> Nadszedł ten moment kiedy czas na Prolog...
> Tak na marginesie... Skad wiesz ze Prolog to wlasnei wlasciwe
> narzedzie do tego co chcesz robic? I wlasciwie CO chcesz robic?
Nie wiem czy się nadaje. Wlasnie dlatego chce się z nim wziąśc za bary
ponieważ po kilku probach na syntetycznej bazie *wydaje* mi się że jego
składnia lepiej wyraża to co chce z mojej bazy wyczytać.
Innymi słowy: to co w tej chwili opisuje mi algorytm w języku
imperatywnym w kilkuset linijkach udalo mi się zredukować do kilku w
języku logicznym. Przy czym te kilka linijek opisuje to co chcę w sposób
nieporównywalnie czytelniejszy. Chwoliwo podstawowy zysk jaki widzę to
czytelnośc zapytań.
Odrzucam na razie problemy wydajności, sposoby komunikacji itp rzeczy
skupiając się na powaznym (dla mnie) problemie wyrażenia treści zapytania.
A co chce uzyskać: analogia jest taka że mam bazę faktów, np. obecności
pojazdów na skrzyzowaniach, stanu świateł, ruchu pieszych, rucho
komunikacji publicznej. Chcę z takiej bazy, posiadającej dużo niejawnych
relacji (np. czerwony samochód który był 3 minuty temu na skrzyżowaniu X
teraz przejechal na czerwonym skrzyzowaniu Y) wydobyć pewne scieżki
przyczynowo-skutkowe. Rzeczywisty problem jest z innej, odległej
dziedziny, ale analogia z ruchem ulicznym dobrze go przybliża.
Czy Prolog? Nie wiem. Ale warto spróbować choćby dla doświadczenia.
-
10. Data: 2012-09-09 16:04:20
Temat: Re: Prolog - nawracanie - jak jest implementowane
Od: A.L. <l...@a...com>
On Sun, 09 Sep 2012 11:05:08 +0200, Sebastian Biały
<h...@p...onet.pl> wrote:
>On 2012-09-08 23:58, A.L. wrote:
>> Ze co chcesz zrobic?... Niby jak Prolog ma "operowac na moich
>> strukturach danych"?... Nie ma nijakich "twoich struktur danych" w
>> Prologu
>
>Wiem, dlatego przypuszczam że nie tyle potrzebuje Prologa co pomysłow
>solvera z Prologa do implementacji natywnej. Tak się składa że baza
>wiedzy u mnie jest nie dość, że nietypowa, to jeszcze pochodzi z róznych
>abstrakcyjnych źródeł, w tym niektórych dynamicznie zmieniających się.
>
>>> Przypuszczam że jak poszukam czegoś w rodzaju "embedded prolog" to będe
>>> mogł zrobić abstrakcję na dane i niczego nie konwertować.
>> Ze co?...
>
>Żeby włożyć Prolog do wnetrza mojej aplikacji. A w zasadzie sam solver z
>otoczką.
>
>> Moze jednak powineines wziac jakas PORZADNA ksiazke o Prologu?
>
>Racja, lokalnie jednak niewiele mogę znaleźć, to malo poplurany temat w
>PL, nawet lokalne biblioteki specjalistyczne albo niczgo nie oferują
>albo "już wypozyczone, od 30 lat".
>
>>> zapytań w Prologu? Nie wierzę, że jest aż tak prymitywny jak opisywane w
>>> książkach metody brute-force.
>> To nie jest zadna metoda "brute force".
>
>Przeszukanie tej samej przestrzeni faktów miliony razy (jak opisywane w
>ksiązkach) dla kazdego spasowania zmiennej brzmi jak brute-force.
>
Owszem, takie byly zarzurt gdy Prolog powstawal. Wszakze odkryto
mechanizm zwany SLD Resolution, ktory okazal sie na tyle efektywny ze
legl u podstaw efektywnego Prologu. To jest wlasnei tem "solver" o
ktory pytasz, i opisany ejst dokaldnie w ksaize Maluszynakiego.
Opisany jest tez tutaj
http://www.cis.upenn.edu/~cis510/tcl/chap9.pdf
A.L.