This is an old revision of the document!


Probabilistic Programming — Probabilistic Graphs

Graph structures are commonly used to represent knowledge across various domains and problems. It shouldn't be surprising that they are also present in many probabilistic models. In this class we will introduce probabilistic graphs — weighted graphs with weights representing probabilities. Next, there will be very short introduction to decision theory in Problog. Finally we will try to escape from zombies which clearly shows usefulness of this class.

Probabilistic Graphs

Probabilistic graph looks like a normal weighted graph with weights being real numbers from range <0,1>, like in the graph below:

You can easily represent this graph in Problog as a list of edges:

0.8::edge(1,2).
0.2::edge(1,3).
0.2::edge(1,4).
0.2::edge(2,3).
0.7::edge(3,5).
0.3::edge(4.5).

The weight should be interpreted as a probability that transition from node to node (from state to state?) succeeds.

We can now write a rule (the same as in classical Prolog) to check if there is a path in a graph, i.e.

% there is a direct path between the nodes, if there is an edge between those nodes
path(A,B) :- edge(A,B).
% there is a indirect path between the nodes, if there is an intermediate node
% that can be reached directly from the first node, and from which you can reach the second node
path(A,C) :- edge(A,B),
             B \= C,
             edge(B,C).

Now you can ask Problog, what is the probability of reaching 5 from 1.

query(path(1,5)).

Test it!

en/dydaktyka/problog/lab2.1496577637.txt.gz · Last modified: 2019/06/27 16:00 (external edit)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0