Information and coding theory (2013-2014)

Last modification: 23 December 2013 10:00


Results are no longer available.


  • Further to a question after the exercise session (10th October), small precision:
    The factorization P(A,B,C) = P(C).P(B|C).P(A|B) can be represented by two bayesian networks (A→B→C and C→B→A). Indeed, several networks can be adequate for the same joint distribution.


26/09 Project 1 Project presentation
Statement, Matlab files
3/10 Q & A Questions and answers session for project 1
6/10 Deadline Deadline for project 1
10/10 TP

Project 1

Project 2
Exercises session on bayesian networks (Statement)


Project presentation
Statement, Matlab files
17/10 Q & A Questions and answers session for project 2
22/10 Deadline Deadline for project 2
24/10 Project 2

Project 3

Project presentation
Statement, Matlab files
31/10 Q & A Questions and answers for project 3
7/11 Q & A Questions and answers for project 3
10/11 Deadline Deadline for project 3
14/11 Project 3

Project 4

Project presentation
Statement, Matlab files
21/11 Q & A Questions and answers for project 4
28/11 Q & A Questions and answers for project 4
1/12 Deadline Deadline for project 4
5/12 - -
12/12 - -
19/12 Projects 3 and 4


Summary exercice session (Statement)

Frequently asked questions (F.A.Q.)

It is strongly recommanded to participate to Q&A sessions and to read the F.A.Q. section before any mail question.


  • Report writting
    Reports can be written, at choice, in english or in french.

  • Report submission
    Reports must be sent in PDF. Latex is not mandatory, you can generate a PDF file from Word or another writting software.

  • Project 1

  • How to calculate a particular logarithm in Matlab??
    Most used logarithms are already defined in Matlab. For example, log2, log10 are already defined. For other logarithm base, use a logarithm quotient.

  • An example of first function result...

    entropy(data,musc) = 0.9934

    Don't modify the function form. For example, entropy(data,var,node_sizes) is not correct.

  • Project 2

  • I fail to understand the interest of using the toolbox in questions 1 and 2, is a reasonning "by the hand" sufficient?
    The idea of this project is to make you familiar with a bayesian network representation and with the toolbox. Yes, it is true that the toolbox is not required for the four asked functions. A reasoning "by the hand" would obviously be possible but, here, the goal is to use the toolbox in order to be able to create a bayesian network within the form a adjacency matrix. This will be useful for the next project (where the difficulty will not be in the bayesian network creation).

  • For the question 3: is it a simple reasoning on the adjacency matrix? In other words: the function takes, as entries, a adjacency matrix and a node and returns directly reachable nodes? Moreoever, is the graph directed or undirected?
    Yes, the function does not need to know if the graph is directed or not. It is only necessary to think on the direction and if the path is possible in that direction for a directed or undirected arc.

  • For the function node_parent, could you give an example of use? It is mostly about the argument candidates that I have doubts : is a 2-nodes vector or 2,3,4 nodes? Because the function ask_oracle does allow to use only two more nodes and this function is used in the v-structure detection.
    I propose you a spoot example in order to understand what does the function. Feel free to ask me a more precise example if this is not clear enough.

    node_parent([Mathilde's mother, Mathilde's father, France's father, France's mother], Mathilde)
    → [Mathilde's mother, Mathilde's father]
    node_parent([Matthieu's mother, Matthieu's father], Mathilde)
    → []
    node_parent([Mathilde's mother, France's father],Mathilde)
    → []
    And let us assume that a node has 3 parents and that all nodes (except the considered node) are in the candidates vector, the function would return the three parents.
    The function returns, in all cases, a vector of nodes (eventually empty).

  • What does "propagate the information direction" mean?
    It means that, once you have detected a v-structure, you can orientate some arcs.

  • Project 3

    For project 3, it is advised to read carefully the theory about the comparison of codings with different alphabet sizes!
  • I fail to use bn_mut_inf, I always get an error message : (line 11) if not(isequal(marg.domain,variables)). I do "bn_mut_inf(marg,i,j,[]);" where marg is a matrix containing joint probabilities of variables i and j (so "marg(a,b)=P(Xi=a and Xj=b"). Is it the good way to use this function?
    Yes, this is the good way to use it. However, the marginal distribution must be in the same format as the one returned by the inference engine of Matlab, i.e. a particular structure, as it is mentionned in the help of the function (in the beginning of the file) with

    Its format (and ordering) is the same as the result of a call to an inference engine of the BNT.

    For example, for two variables, it is a structure 1x1 which have four parts : domain, T (matrix 3x1), mu (empty) and sigma (empty).

  • If I understand correctly, I must use an inference engine to calculate this marginal distribution? In that case, I must create an inference engine in Matlab, but this requires a bayesian network which I don't know because I will use the engine to create it. How can I overcome the fact that we go round in circles? Do I have to create a temporary network following what is written in the user guide under "maximum likelihood parameter estimation from complete data"?
    You have the structure of the bayesian network under its adjacency matrix form in the data as "dag".

  • Project 4