Их несколько существует:
-самый распространенный - алгоритм Гревиля,
-алгоритм Фаддеева.
В случае полного столбцового (строкого - в зависимости от размерности матрицы) ранга эрмитовы формулы, или как они там называются, которые транспонированная на обратную произведения матрицы на транспонированную (в вики хороший текст).
Для блочных есть отдельные:
-формулы Клайна, самое простое
Также видел, что блочные алгоритмы разбирались в работах Блюмина, Шмырина по окрестностным системам.
В программной реализации Гревиль требует
флопов. SVD вроде четвертый порядок сложности. Самая простая - эрмитовы формулы, но они не работают в неполных рангах, Гревиль же съест.
В дипломе я вывел для блочной третьего порядка, но мои формулы дают псевдообратную в определенных условиях, в общем случае -обобщенную обратную.