我需要画一棵非常抽象的树。这棵树将用自然演绎(证明理论)来可视化证明替代。我有一个 A 的演绎(我们称之为“D1”),它有开放假设 B;还有一个 B 的演绎(我们称之为“D2”),它有开放假设 C。每个演绎都可以用一棵树来可视化,它的叶子由证明的假设标记,它的根由证明的结论标记。
因此,证明替换可以通过用 D2 树替换树 D1 的所有叶子 B 来直观地展示。这就像将 D2 添加为子树,其根为 B,并在 D1 的每个叶子 B 上添加叶子 C。
我需要做的是画出替换后的证明树。
我尝试过这个:
\documentclass[a4paper]{scrartcl}
\usepackage{fancybox}
\usepackage{tikz}
\title{MergeSort-RecursionTree}
\author{Manuel Kirsch}
\date{}
\begin{document}
\begin{tikzpicture}[level/.style={sibling distance=5cm/#1}]
\node (z){$A$}
child {node (a) {$\vdots$}
child {node (b) {$B$}
child {node (A) {$\vdots$}
child {node (B) {$C$}}
child {node (G) {$C$}}
}
child {node (J) {$\vdots$}
child {node (K) {$C$}}
child {node (L) {$C$}}
}
}
child {node (g) {$B$}
child {node (A) {$\vdots$}
child {node (B) {$C$}}
child {node (G) {$C$}}
}
child {node (J) {$\vdots$}
child {node (K) {$C$}}
child {node (L) {$C$}}
}
}
}
child {node (j) {$\vdots$}
child {node (k) {$B$}
child {node (A) {$\vdots$}
child {node (B) {$C$}}
child {node (G) {$C$}}
}
child {node (J) {$\vdots$}
child {node (K) {$C$}}
child {node (L) {$C$}}
}}
child {node (l) {$B$}
child {node (A) {$\vdots$}
child {node (B) {$C$}}
child {node (G) {$C$}}
}
child {node (J) {$\vdots$}
child {node (K) {$C$}}
child {node (L) {$C$}}
}}
};
\path (a) -- (j) node [midway] {$\cdots$};
\path (b) -- (g) node [midway] {$\cdots$};
\path (k) -- (l) node [midway] {$\cdots$};
\path (k) -- (g) node [midway] {$\cdots$};
\path (A) -- (J) node [midway] {$\cdots$};
\path (K) -- (G) node [midway] {$\cdots$};
\path (B) -- (G) node [midway] {$\cdots$};
\path (K) -- (L) node [midway] {$\cdots$};
\end{tikzpicture}
\end{document}
但是除了一些下边有交叉外,这种树给读者的印象是所有节点 B 都在同一层,节点 C 也一样。此外,还不清楚这棵树不是二叉树。
是否存在更抽象的树,使得它仅可视化必要的信息并且不会给读者增加有关其结构的任何进一步印象?关于这棵树我想强调的是,所有节点 B 都有相同的子树。
说实话,我甚至无法想象这样的树。我不知道如何可视化每个节点的任意子节点数量或从根到每个叶子的路径的任意长度。所以,任何关于这方面的想法/建议都会非常有帮助!非常感谢这样的树的代码,因为我没有太多使用 tikz 的经验。