Похож на дерево, но с большим количеством стрелок

Похож на дерево, но с большим количеством стрелок

Какой самый простой способ получить следующий древовидный граф?

введите описание изображения здесь

решение1

Другая альтернатива, поскольку график очень прост с использованием tikz-cd.

введите описание изображения здесь

\documentclass{article}
\usepackage{tikz-cd}
\usepackage{amsmath}
\begin{document}
\begin{tikzcd}
 &  & a &  &  \\
 & b \arrow[ru] &  & c \arrow[lu] &  \\
d \arrow[ru] &  & e \arrow[lu] \arrow[ru] &  & f \arrow[lu]
\end{tikzcd}
\end{document}

Для вашего вопроса вы можете воспользоваться этой ссылкой, чтобы изменить тип стрелок: Можно ли изменить размер наконечника стрелы в TikZ/PGF?

Ниже новый пример. Я изменил толщину одной стрелки. введите описание изображения здесь

\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{arrows}
\usepackage{amsmath}
\begin{document}
\begin{tikzcd}
 &  & a &  &  \\
 & b \arrow[-triangle 90,
        line width=.8mm,ru] &  & c \arrow[lu] &  \\
d \arrow[ru] &  & e \arrow[lu] \arrow[ru] &  & f \arrow[lu]
\end{tikzcd}
\end{document}

решение2

Библиотека графиков TikZ может сделать это довольно просто:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs}
\begin{document}
\begin{tikzpicture}
\graph[branch right, grow down] 
{a[x=1] <- {{b <- {d[x=-1],e}}, {c <- {e,f[x=1]}}}};
\end{tikzpicture}
\end{document}

вывод кода

Если вы хотите, чтобы график был более компактным, как ваше изображение, вы можете уменьшить ширину ветви. Поскольку корректировки узлов также зависят от этой ширины, лучше всего использовать такой макрос:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs}
\newcommand*{\bw}{.5}
\begin{document}
\begin{tikzpicture}
\graph[branch right=\bw, grow down] 
{a[x=\bw] <- {{b <- {d[x=-\bw],e}}, {c <- {e,f[x=\bw]}}}};
\end{tikzpicture}
\end{document}

вывод второго кода

решение3

Легко и просто с psmatrixокружающей средой:

\documentclass{article}
\usepackage{pst-node}
\usepackage{auto-pst-pdf} %% to compile with pdflatex --enable-write18 (MiKTeX) or pdflatex --shell-escape (TeX Live, MacTeX))

\begin{document}%

\begin{psmatrix}[rowsep=1cm, colsep=0.9cm]
& &[name=a] a \\
& [name=b] b & & [name=c] c \\
[name=d] d & & [name=e] e & & [name=f] f
\foreach \beg/\targ in {b/a, c/a, d/b, e/b, e/c, f/c}{\ncline[arrows=->, arrowinset=0.12, nodesep=3pt]{\beg}{\targ}}
\end{psmatrix}

\end{document} 

введите описание изображения здесь

решение4

Поспешная попытка с MetaPost и егоboxesпакет, входящий в программу LuaLaTeX.

\RequirePackage{luatex85}
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
    \mplibtextextlabel{enable}
\begin{document}
\begin{mplibcode}
input boxes;
def junction(suffix a, b) =
    drawarrow a.c -- b.c cutbefore bpath.a cutafter bpath.b;
enddef;
h := 1.25cm; v := 1cm;
beginfig(1);
    forsuffixes z = a, b, c, d, e, f: circleit.z(str z); endfor;
    e.c = origin; f.c = (h, 0) = - d.c;  
    b.c = (-.5h, v); c.c = (.5h, v);
    a.c = (0, 2v);
    drawunboxed(a, b, c, d, e, f);
    junction (b, a); junction(c, a);
    junction(d, b); junction(e, b);
    junction(e, c); junction(f, c);
endfig;
\end{mplibcode}
\end{document}

введите описание изображения здесь

Конечно, его можно было бы закодировать более умело, если бы я использовал, например,metaobjпакет, но я недостаточно хорошо его знаю.

Связанный контент