Where's this algorithm come from? Any references?
And a specific question, when the authors compute the transformation from world space to ray-triangle intersection coordinate space, what's the permutation step for?
The permutation is described in section 3.6.2, page 158-159.
A reason behind this permutation is that a shear matrix (which involves dividing z component of ray direction) is computed to transform from world space to ray triangle intersection coordinate space. Permuting the coordinates is to avoid divide-by-0 error by mapping nonzero component to +z.