# Implementing t-SNE: problem when calculating pairwise affinities

I'm trying to implement the t-SNE method. It's not a very complicated algorithm as it can be described like this:

I found that to compute the pairwise affinities, I have to follow this:

My problem is to compute $\sigma_i$ in this formula. In wikipedia I found:

The bandwidth of the Gaussian kernels $\sigma_{i}$, is set in such a way that the perplexity of the conditional distribution equals a predefined perplexity using a binary search. As a result, the bandwidth is adapted to the density of the data: smaller values of $\sigma_{i}$ are used in denser parts of the data space.

I don't understand what this realy mean. How can can I calculate $\sigma_i$ given data and perplexity?