What is the Q distribution in expectation maximization in the following explanation? I am reading a blog on expectation maximization - http://krasserm.github.io/2019/11/21/latent-variable-models-part-1/
Here, I encounter the following expression:

When you look at the above distribution, please correct my understanding when it comes to nature generating N points from C gaussian distributions.
I assume that the data is generated as follows by nature (to be confirmed by you).


*

*Nature first selects a gaussian among C of them using a probability distribution q. So nature looks at the q distribution which says there is a probability with which it generates gaussian 1, a probability with which it generates gaussian 2, and so on for gaussian C. So nature will first sample for a gaussian from q.

*Then, nature will use the mean and covariance of this gaussian samples above to generate a point.

*Nature repeats the above step 1 and 2 N number of times.


Now, my understanding for GMM is that we are just given points 1 to N and we want to know which gaussian each point came from. As we cannot say for sure if a point came from any particular gaussian, we attach a probability for the point to every gaussian in such a way that the probabilities add to 1.
In the above expression (10), if we were to expand the joint probability of $p(x_i, t_{ic} = 1 | \Theta)$, I would do it as $p(xi | t_{ic} = 1, \Theta) * q(t_{ic} = 1)$ because I know that the probability with which nature would have selected the gaussian c (among 1..C) for generating point $x_i$ is $q(t_{ic}=1)$.
Why then we use two different annotations as $p(t_{ic} = 1 | x_i, \Theta)$ and $q(t_{ic} = 1)$?
What is the different between the $p(t_{ic}=1) and q(t_{ic}=1)$?
 A: I recommend you to check the CS229 notes by Andrew Ng. The note 8 then 7b. It should be clear after that at least I believe. CS229
The general log-likelihood function with a latent variable is:
$$
\begin{aligned}
lnp(x; \theta) 
& = \Sigma_{i=1}^{N}lnp(x_i; \theta)\\
& = \Sigma_{i=1}^{N}ln\Sigma_{t}p(x_i | t_i; \theta)p(t_i; \phi)\\
& = \Sigma_{i=1}^{N}ln\Sigma_{t}p(x_i, t_i; \theta, \phi)
\end{aligned}
$$
where $t_i$ takes the number of Gaussians (states) you assumed and e.g. $p(t_i=1) = \phi_1$ is the prior of state 1 in your explanation 1.
$q$ is just an arbitrarily introduced distribution to derive the algorithm, not the prior. In fact, it's the posterior. 
Simply put, you maximise the equation (10) with Jensen's inequality, the lower bound is maximised when the equality holds, that is $\frac{p(x_i, t_i;\theta)}{q(t_i)} = c$. Thus $q$ is set to the posterior $p(t_i|x_i; \theta)$, the probability (density) of states with respect to each data point. If you have a sample of size 100 and assume there're two underlying Gaussians, then the shape of the posterior is (100, 2). Detailed derivation see the notes.
The relationship between the prior and the posterior is $\phi_1 = \frac{1}{N}\Sigma_{i=1}^{N}p(t_i=1|x_i; \theta)$, as one of the m-step.
By the way, e-step is to get the posterior and m-step consists of maximising the likelihood with respect to the means, covariances and the state priors. The initialisation could be done using kmeans if you're considering writing your code. It was a good practise for me to understand GMM by reading the scikit-learn source code...
