Given a matrix $A \in \mathbb{R}_{+}^{n \times m}$ where $m \geq n$.
I want to convert it into a form where there is a single $1$ per row yet no more than a single $1$ per column.
The logic is convert the highest sum of values into 1.
For instance, for $A = \begin{bmatrix} 0.3 & 0.25 & 0.9 \\ 0.6 & 0.1 & 0.03 \end{bmatrix}$ the output will be $B = \begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \end{bmatrix}$.
So I'm after maximizing $\sum_{i, j} \left( A \otimes B \right)$ (where $\otimes$ is the element wise multiplication) under the constraints that $ {B}_{i, j} \in \left\{ 0, 1 \right\}$, $ \sum_{i} {B}_{i, j} = 1 \; \forall j$ and $\sum_{j} {B}_{i, j} \leq 1 \; \forall i$.
The problem arises when the maximum of several columns happens at the same row:
$$A = \begin{bmatrix} 0.8 & 0.25 & 0.9 & 0.5 \\ 0.6 & 0.1 & 0.03 & 0.55 \\ 0.23 & 0.33 & 0.2 & 0.45 \end{bmatrix}$$
I am not after an optimal solution. I'm OK with a greedy solution which is fast and near optimal.
Is this problem known? Are there known greedy algorithms for the case of large matrices?