This is probably not the most elegant solution, but one approach with TikZ.
It draws white circles between the arrow in the background and the arrows in the foreground at the intersections.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix,intersections}
\pgfdeclarelayer{fg}
\pgfdeclarelayer{crossing over}
\pgfsetlayers{main,crossing over,fg}
\begin{document}
\begin{tikzpicture}
\matrix (m) [matrix of math nodes, column sep=1cm, row sep=1cm, circle] {
X_1 &X_2 &X_3 \\
Y_1 &Y_2 &Y_3 \\
};
\draw[->, name path=bg arrow] (m-1-3) -- (m-2-1);
\begin{pgfonlayer}{fg}
\draw[->, name path global/.expanded=fg arrow1] (m-1-1) -- (m-2-3);
\draw[->, name path global/.expanded=fg arrow2] (m-1-2) -- (m-2-3);
\end{pgfonlayer}
\begin{pgfonlayer}{crossing over}
\foreach \arrow in {1, ..., 2} {
\fill[white, name intersections={of=bg arrow and fg arrow\arrow, name=i}] (i-1) circle (2pt);
}
\end{pgfonlayer}
\end{tikzpicture}
\end{document}
Edit:
Alternative code producing same output but avoiding several layers:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix,intersections}
\makeatletter
% http://tex.stackexchange.com/a/127045/120953
\tikzset{use path/.code=\tikz@addmode{\pgfsyssoftpath@setcurrentpath#1}}
\makeatother
\begin{document}
\begin{tikzpicture}
\matrix (m) [matrix of math nodes, column sep=1cm, row sep=1cm, circle] {
X_1 &X_2 &X_3 \\
Y_1 &Y_2 &Y_3 \\
};
\draw[->, name path=bg arrow] (m-1-3) -- (m-2-1);
\path[name path=fg arrow1, save path=\pathFGone] (m-1-1) -- (m-2-3);
\path[name path=fg arrow2, save path=\pathFGtwo] (m-1-2) -- (m-2-3);
\foreach \arrow in {1, ..., 2} {
\fill[white, name intersections={of=bg arrow and fg arrow\arrow, name=i}] (i-1) circle (2pt);
}
\draw[->, use path=\pathFGone];
\draw[->, use path=\pathFGtwo];
\end{tikzpicture}
\end{document}
tikz-cd. I complete the code. – jiaopjie Feb 14 '17 at 07:52