# Decoding Time vs Event probability matrix into a set of discrete events

I've a matrix $P$ of size $Time \times EventClass$, such that $P_{t,c}$ specifies the probability of event of class $c$ happening at time $t$.

From this I'd like to generate a discrete event list, $(e_0,e_1,..,e_k)$, where each event $e_i=(t_i,c_i,P_{t_i,c_i})$, such that the list meets certain constraints. The number of events should be determined from the data (k is not fixed).

• The events should not be close together in time: $\forall (i,j) d(t_i,t_j)> treshold_t$ where $d(x,y)$ is the distance in time. (Alternatively, there could be some penalization function such as $\sum_{i,j} d(t_i,t_j)$)

• The probability of the events should be as big as possible: $\sum_i P_{t_i,c_i}$ >> 0

The matrices I'm currently working on aren't that big (120 timestep vs 64 classes)

I thought about just feeding this to a solver with those constraints/objective function. Also, I could use a left-to-right markov network with a node for each $(t,c)$ pair, and skip connections to model the fact that the events should not be near each other.

¿Any suggestions on how to solve this problem?