* INSTALLATION
-This software should compile with any C++ compiler. Just execute
+This software should compile with any C++ compiler. Under a unix-like
+environment, just execute
make
./mtp_example
./mtp tracker.dat
-It will load the tracker.dat saved by the previous command, run the
-detection, save the detected trajectories in result.trj, and the
+It will load the file tracker.dat saved by the previous command, 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:
+If you do have the graphviz set of tools installed, you can produce a
+pdf from the latter with the dot command:
dot < graph.dot -T pdf -o graph.pdf
The two main classes are MTPGraph and MTPTracker.
-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 globally minimizes the sum of edge
-lengths.
+The MTPGraph class contains a directed acyclic graph (DAG), with a
+length for each edge -- which can be negative -- and has methods to
+compute the family of paths in this graph that globally 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 procedure is similar to that of KSP, in
-the sense that the family it computes eventually is globally optimal,
-even if the computation is iterative.
+If there are no path of negative length, this optimal family will be
+empty, since the minimum total length you can achieve is zero. 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
+computation is iterative.
The MTPTracker is defined by
(2) a number of time steps
- (3) for every location and time a detection score, which should stand
- for log(P(Y = 1 | X)/P(Y = 0 | X)) where Y is for the location
+ (3) a detection score for every location and time, which stands for
+ log(P(Y = 1 | X)/P(Y = 0 | X)) where Y is the said location
occupancy and X the available observations.
-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)
+From this setting, MTPTracker has methods to compute 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). If no trajectory of total
+positive detection score exists, this optimal set of trajectories will
+be empty.
The MTPTracker is a wrapper around the MTPGraph class.