Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_rbs_back [2008/07/11 12:33] miw |
pl:miw:miw08_rbs_back [2008/07/14 09:58] miw |
====== Opis ====== | |
Dawid, Zwoźniak, <david_z@poczta.fm> | |
| |
RBS_Back | |
Przegląd metodologii reprezentacji reguł dla wnioskowania w tył (wstecz). Należy szczególnie uwzględnić reprezentacje graficzne oraz zwrócić uwagę na: przejrzystość reguł, gęstość reprezentowanej informacji. | |
| |
| |
====== Spotkania ====== | |
===== 080304 ===== | |
przydzielenie projektu | |
| |
===== 080311 ===== | |
planowane konsultacje | |
| |
| |
===== 080318 ===== | |
? | |
| |
| |
| |
| |
===== 080527 ===== | |
| |
| |
? | |
| |
===== 080626 ===== | |
? | |
| |
| |
====== Projekt ====== | |
| |
| |
====== WSTĘP ====== | |
Ekspertowy system regułowy składa się z bazy danych, zawierającej pewne ustalone fakty i reguły służące do wywnioskowywania nowych faktów oraz interpetera reguł, sterującego procesem wnioskowań. | |
| |
W systemach ekspertowych wykorzystuje się 3 rodzaje wnioskowania: | |
- w przód | |
- wstecz | |
- mieszane | |
| |
Wnioskowanie wstecz przebiega w odwrotną stronę niż wnioskowanie w przód. Ogólnie polega ono na wykazaniu prawdziwości hipotezy głównej na postawie prawdziwości przesłanek. Jeśli nie wiemy, czy jakaś przesłanka jest prawdziwa, to traktujemy tę przesłankę jako nową hipotezę i próbujemy ją wykazać. Jeżeli w wyniku takiego postępowania zostanie wreszcie znaleziona reguła, której wszy¬stkie przesłanki są prawdziwe, to konkluzja tej reguły jest prawdziwa. Na pod¬stawie tej konkluzji dowodzi się następną regułę, której przesłanka nie była po¬przednio znana itd. Postawiona hipoteza jest prawdziwa, jeśli wszystkie rozważa¬ne przesłanki dadzą się wykazać. | |
| |
Cel -> reguły -> fakty | |
| |
Wnioskowanie wstecz różni się od wnioskowania w przód m.in. tym, że generuje mniejszą liczbę nowych faktów oraz uniemożliwia równoczesne dowodzenie kilku hipotez. Ogólnie w typowych zastosowaniach wnioskowanie wstecz jest efektywniejsze i bardziej rozpowszechnione. Istotne jest także to, że przy wnioskowaniu wstecz czas oczekiwania na osiągnięcie rozwiązania postawionej hipotezy jest w wielu przypadkach dużo krótszy niż przy wnioskowaniu w przód. | |
| |
| |
Wnioskowanie wstecz zostało zastosowane, między innymi, w interpreterach PROLOG-u. | |
| |
| |
======== SOFTWARE VISUALIZATION ======= | |
| |
Celem projektu było zbadanie metodologii reprezentacji wiedzy w systemach regułowych z wnioskowaniem wstecz, a konkretnie o sposób wizualizacji wiedzy. | |
| |
W projekcie skupiono się na odszukaniu projektów wizualizaji reprezentacji wiedzy w PROLOG-u. | |
| |
Znaleziono następujące programy: | |
* PPVL (Prolog Program Visualization Laboratory) | |
* TPM (Transparent Prolog Machine) | |
* Tools for Software Visualization – SVT (Semantic Visualization Tools) and Vmax | |
* VPP (Visual Programming in Prolog) | |
| |
| |
| |
| |
| |
| |
======= PPVL (Prolog Program Visualization Laboratory) ========= | |
| |
PPVL jest projektem który służy do wizualizacji wiedzy Prolog-u. Łączy w sobie kilka programów do wizualizacji - SV. | |
Są to: | |
* Spy (Byrd, 1980) | |
* PTP (Prolog Trace Package) | |
* TPM (Transparent Prolog Machine) | |
* TTT (Textual Tree Tracer) | |
| |
W środowisku PPVL każdy wymieniony wyżej SV system ma podobny interfejs i nawigacje. | |
| |
Środowisko zostało stworzone w Macprolog wersji 4.5 i uruchamiane na Macintosh system 7.1 | |
| |
Spy, PTP i TTT zostały w pełni zaimplementowane. Natomiast TPM zostało zaimportowane i później zmodyfikowane aby umożliwić integracje z PPVL (nawigacje i zapisywanie). | |
PPVL posiada wiele zalet nad zaimplementowanymi systemami osobno, między innymi zapewnia identyczny interfejs dla wszystkich systemów. | |
| |
== Spy (Byrd, 1980) == | |
| |
Spy jest krokowym, liniowym i tekstowym systemem śledzenia wykonywania programu, który używa Byrd Box model do uruchamiania programu. Model używa proceduralnej interpretacji logiki. | |
| |
Początek klauzuli jest klasyfikowany jako procedura, natomiast koniec klauzuli jedną lub więcej sub procedur. | |
Każda procedura lub sub procedura może mieć jeden z czterech stanów: | |
* call | |
* exit | |
* fail | |
* redo | |
| |
Wywołanie procedury jest klasyfikowane jako call, jeśli jest zakończone sukcesem jest kończone exit, jeśli nie to fail. Procedura ponownego próbowania lub wstecznego śledzenia jest pokazywana jako redo. | |
| |
Przykładowy program: | |
| |
''p(X) :- q(X), r(X).'' | |
''q(a).'' | |
''q(b).'' | |
''r(b).'' | |
'':- p(What).'' | |
| |
Spy - śledzenie wykonywania przykładowego programu: | |
| |
''call p(_1)'' | |
''UNIFY 1 []'' | |
''call q(_1)'' | |
''UNIFY 1'' | |
''exit q(a)'' | |
''call r(a)'' | |
''fail r(a)'' | |
''redo q(a)'' | |
''UNIFY 2'' | |
''exit q(b)'' | |
''call r(b)'' | |
''UNIFY 1'' | |
''exit r(b)'' | |
''exit p(b)'' | |
| |
| |
| |
| |
| |
| |
| |
| |
====== ISVL (The Internet Software Visualization Laboratory) ======== | |
| |
| |
======= TPM (Transparent Prolog Machine) =============== | |
| |
TPM jest narzędziem do wizualizacji i animacji uruchamianych programów napisanych w Prologu. Stworzony zarówno dla początkujących jak i zaawansowanych programistów Prologu, zapewnia wierną reprezentację (w zwolnionym tempie) działania wewnętrznego interpretera Prologu, jak również umożliwia wysokiej prędkości wizualny podgląd uruchamianego programu. | |
| |
Bieżące wersje umożliwiają używanie: textbook diagrams, animacji video oraz implementacji graficznych stacji roboczych. | |
| |
System dodatkowo umożliwia tworzenie użytkownikowi widoków śledzonych programów . | |
| |
Model: | |
| |
{{:pl:miw:miw08_rbs_back:tpm_model.jpg|:pl:miw:miw08_rbs_back:tpm_model.jpg}} | |
| |
Akcja: | |
| |
{{:pl:miw:miw08_rbs_back:tpm_action.jpg|:pl:miw:miw08_rbs_back:tpm_action.jpg}} | |
| |
Granulacja danych: | |
| |
{{:pl:miw:miw08_rbs_back:tpm_gran.jpg|:pl:miw:miw08_rbs_back:tpm_gran.jpg}} | |
| |
| |
Podgląd ogólny widoku uruchamiania programu Prologu. | |
| |
{{:pl:miw:miw08_rbs_back:tpm_1.jpg|:pl:miw:miw08_rbs_back:tpm_1.jpg}} | |
| |
Ten sam widok z bliska | |
| |
{{:pl:miw:miw08_rbs_back:tpm_2.jpg|:pl:miw:miw08_rbs_back:tpm_2.jpg}} | |
| |
| |
Projekt powstawal w latach 1983-1988 w Open University and Expert Systems Ltd. | |
TPM jest dostepny jako komercyjny produkt (Expert Systems Ltd.) uruchamiany na graficznych stacjach roboczych systemu UNIX. | |
Powstała również wersja uczelniana na platforme Mac. | |
| |
| |
| |
| |
======= Tools for Software Visualization – SVT (Semantic Visualization Tools) and Vmax ========= | |
| |
System SVT dostarcza strukturę dla SV (Software Visualization) nazywana Vmax. Kod źródłowy i uruchamiane dane są analizowane w tym systemie poprzez język Prolog, co zapewnia dostęp do informacji o strukturze programu i uruchomionych w nim danych w szerokim zakresie połączonych widoków. Środowisko SVT oraz widok programu użytkownika został napisany w Javie. | |
| |
SVT jest potężnym narzędziem który umożliwia wizualizację programów napisanych w różnych językach oraz wszelkiego typu diagramów. | |
| |
Skupiono się jednak na możliwościach SVT do wizualizaji wiedzy i programów w Prolog-u. | |
| |
Vmax może wyświetlać i edytować programy Prolog-u jako wizualne języki (visual languages). To pokazuje potencjalne możliwości SVT dla visual programming. | |
| |
Klauzula Prologu w SVT wygląda następująco: | |
''user_clause(ClauseId, Clause)'' | |
| |
gdzie ClauseId jest niepowtarzalnym identyfikatorem klauzuli, a Clause jest struktura klauzuli. | |
| |
Aktualnie nie ma zewnętrznej tekstowej reprezentacji Prologu. | |
| |
Klauzule które zdefiniuje użytkownik mogą być przeglądane. | |
| |
Przykładowy ekran widoku predykatów: | |
| |
{{:pl:miw:miw08_rbs_back:vmax1.jpg|:pl:miw:miw08_rbs_back:vmax1.jpg}} | |
| |
Przykładowy ekran widoku klauzuli: | |
| |
{{:pl:miw:miw08_rbs_back:vmax2.jpg|:pl:miw:miw08_rbs_back:vmax2.jpg}} | |
| |
Struktura klauzuli może być vizualizowana na różne sposoby. Przedstawia to rysunek poniżej: | |
| |
{{:pl:miw:miw08_rbs_back:vmax3.jpg|:pl:miw:miw08_rbs_back:vmax3.jpg}} | |
| |
Vmax umożliwia również wizualizacji klauzul bardzo podobnie do TPM, co można zobaczyć na rysunku: | |
| |
{{:pl:miw:miw08_rbs_back:vmax4.jpg|:pl:miw:miw08_rbs_back:vmax4.jpg}} | |
| |
Vmax daje możliwość edycji klauzul na różne sposoby zarówno tekstowo jak i graficznie. Jednak zmiany w trybie graficznym nie są zapisywane do kodu źródłowego, dlatego jest to mało użyteczne. Lepszym rozwiązaniem w tym przypadku jest edycja kodu źródła programu. | |
| |
| |
| |
======== VPP (Visual Programming in Prolog) i VPE (Visual Program Execution)================== | |
| |
Komputerowe środowisko jakim jest VPP zostało stworzone aby wspomagać programowanie w Prolog-u przy wykorzystaniu graficznego interfejsu, który jest czytelniejszy dla początkujących programistów. | |
| |
Visual Programming to dwie różne eksperymentalne implementacje: | |
- Visual Programming (VPP) | |
- wizualizacja uruchamiania (VPE) | |
| |
W źródłach do jakich można dotrzeć VPE jest opisywane jeszcze w fazie konstrukcji. Działa na podobnej zasadzie jak TPM, jednak w przeciwieństwie do TPM ma dopełniający system VPP (który używa w zasadzie tych samych formalizmów) w celu zapewnienia pełną funkcjonalność dla visual programming. Zależności są bardziej wyeksponowane w VPE niż w TPM. | |
| |
Wyidealizowany widok środowiska VPP dla visual programming przedstawia rysunek poniżej: | |
| |
{{:pl:miw:miw08_rbs_back:vpp1.jpg|:pl:miw:miw08_rbs_back:vpp1.jpg}} | |
| |
Relacja w VPP jest przedstawiana następująco: | |
| |
{{:pl:miw:miw08_rbs_back:vpp2.jpg|:pl:miw:miw08_rbs_back:vpp2.jpg}} | |
| |
Klauzula w następujący sposób: | |
| |
{{:pl:miw:miw08_rbs_back:vpp3.jpg|:pl:miw:miw08_rbs_back:vpp3.jpg}} | |
| |
Reguła następująco: | |
| |
{{:pl:miw:miw08_rbs_back:vpp4.jpg|:pl:miw:miw08_rbs_back:vpp4.jpg}} | |
| |
| |
Natomiast rysunek poniżej przedstawia kompletny ślad uruchamiania prostego programu w VPE: | |
| |
{{:pl:miw:miw08_rbs_back:vpp5.jpg|:pl:miw:miw08_rbs_back:vpp5.jpg}} | |
| |
Poniższy rysunek pokazuje jeden ze sposobów reprezentowania list relacji w VPP i VPE: | |
| |
{{:pl:miw:miw08_rbs_back:vpp6.jpg|:pl:miw:miw08_rbs_back:vpp6.jpg}} | |
| |
Aktualnie są dwie prototypowe implementacje VPP: | |
* Philip | |
* Treglow | |
| |
| |
| |
| |
====== Sprawozdanie ====== | |
====== Materiały ====== | |