我试图得到这个问题的类似结果:在 Tikz 中绘制 AND/OR 树。
然而,我正在尝试使用trees
tikz 中的库,并试图获取通过访问forest
包中的兄弟姐妹和父母而产生的自动弧,如图所示这里。但是,我找不到访问节点的第一个和最后一个子节点的方法。
基本上,我想在我的and
样式中添加一种在其所有子节点之间自动生成弧的方法(如上一个问题中所示)。我知道我可以手动命名节点并创建弧(例如\path (P) -- coordinate[midway] (PQ) (Q);
),但我希望使用自动解决方案。
% !TeX program=lualatex
\documentclass[convert]{standalone}
\usepackage{tikz}
\usetikzlibrary{
graphdrawing,
graphs,
}
\usegdlibrary{trees}
\begin{document}
\begin{tikzpicture}[
and/.style={fill=red!50, draw=red, graphs/source edge style=red},
or/.style={fill=cyan!50, draw=black, graphs/source edge clear}
]
\graph[
tree layout, fresh nodes,
sibling distance=1.5cm, layer distance=1cm,
nodes={shape=circle, draw, minimum width=.5cm},
edge quotes={fill=white, inner sep=1pt},
grow=down,
level/.append code={\ifodd#1\relax\tikzset{nodes={or}}\else\tikzset{nodes={and}}\fi},
] {
G -- {
"" -- {
B -- "" -- D -- "" -- S;
P -- "" -- S
};
"" -- {
B -- "" -- D -- "" -- S;
P -- "" -- S
}
};
};
\end{tikzpicture}
\end{document}