Oups, some renaming of variables was a bit too brutal. Fixed.
[mtp.git] / README.txt
index 5975edf..793710b 100644 (file)
@@ -1,20 +1,48 @@
 
-This is a very simple implementation of the KSP applied to
-multi-target tracking. It is dubbed Multi-Tracked Path since it
-differs a bit from the standard KSP. It works with negative edge
-length and stops when it can not find path of negative length anymore
-instead of fixing the total number of paths to a constant.
+* INTRODUCTION
+
+This is a very simple implementation of a variant of KSP applied to
+multi-target tracking dubbed "Multi-Tracked Paths" (MTP).
+
+It works with negative edge length and stops when it can not find any
+path of negative total length, instead of fixing the total number of
+paths to a constant K.
+
+* INSTALLATION
+
+This source code should compile with any C++ compiler. Just execute
+
+  make
+  ./mtp_example
+
+It will create a synthetic dummy example, save its description in
+tracker.dat, and print the optimal detected trajectories.
+
+If you now execute
+
+  ./mtp tracker.dat
+
+It will load the tracker.dat example, run the detection, save the
+detected trajectories in result.trj, and the underlying graph with
+occupied edges in graph.dot. You can produce a pdf from the latter
+with the dot command from graphviz:
+
+  dot < graph.dot -T pdf -o graph.pdf
+
+* IMPLEMENTATION
 
 The two main classes are MTPGraph and Tracker.
 
 The MTPGraph class stores a directed acyclic graph (DAG), with a
-length for each edge (which can be negative), and can compute the
-family of paths in this graph that minimizes the sum of edge
-lengths.
+length for each edge -- which can be negative -- and can compute the
+family of paths in this graph that minimizes the sum of edge lengths.
 
 This means that it will iteratively add paths as long as it can find
 some with negative length. If there are no such path, it will compute
-no path at all. Note that the solution it finds is globally optimal.
+no path at all. Note that the solution it finds is globally
+optimal. Note that the procedure is similar to that of KSP, in the
+sense that the family it computes eventually is globally optimal, even
+if the procedure is iterative.
 
 The Tracker class allows
 
@@ -28,9 +56,11 @@ The Tracker class allows
 
  (2) to define a number of time steps
 
- (3) to set for every location and time a detection score
+ (3) to set for every location and time a detection score, which
+ should be equal to log(P(Y = 1 | X)/P(Y = 0 | X)) where Y stands for
+ the location occupancy and X for the observations.
 
-From this input, it computes the best set of disjoint trajectories
+From this setting, it computes the best set of disjoint trajectories
 consistent with the topology, which maximizes the overall detection
 score (i.e. the sum of the detection scores of the nodes visited by
 the trajectories)