  The semi-random graph process is a single player game in which the player is
initially presented an empty graph on $n$ vertices. In each round, a vertex $u$
is presented to the player independently and uniformly at random. The player
then adaptively selects a vertex $v$, and adds the edge $uv$ to the graph. For
a fixed monotone graph property, the objective of the player is to force the
graph to satisfy this property with high probability in as few rounds as
possible.
  We focus on the problem of constructing a perfect matching in as few rounds
as possible. In particular, we present an adaptive strategy for the player
which achieves a perfect matching in $\beta n$ rounds, where the value of
$\beta < 1.206$ is derived from a solution to some system of differential
equations. This improves upon the previously best known upper bound of
$(1+2/e+o(1)) \, n < 1.736 \, n$ rounds. We also improve the previously best
lower bound of $(\ln 2 + o(1)) \, n > 0.693 \, n$ and show that the player
cannot achieve the desired property in less than $\alpha n$ rounds, where the
value of $\alpha > 0.932$ is derived from a solution to another system of
differential equations. As a result, the gap between the upper and lower bounds
is decreased roughly four times.
