Tikz 和有向图

Tikz 和有向图

我是 TikZ 新手,有什么最好的软件包(和技术)可以快速(轻松地)绘制像这样的有向图(图片来自 M. Sipser 的书)?
特别是在图形中间绘制(对齐)点的最佳方法是什么(添加“...”文本并将其放置在绝对位置)?那么半圆弧呢?
是否存在功能足够强大的图形 Tikz GUI 工具来实现相同的结果?

在此处输入图片描述

答案1

有一些软件包可以做到这一点,但如果学习一些关于 Tikz 的简单知识以及如何使用一些基本命令可能会很有趣

1)加载包蒂克兹

2)然后加载一个库获取一些关于箭头的特殊样式

3)我们可以为顶点和边定义一些样式,但你可以在之后查看

4)我们放置一些节点。我这里的方法很简单,但不是一个好方法,因为修改值并不容易。

5)画出边缘

6) (a3) 和 (c) 之间的点\path很有用,因为我们不绘制任何东西,但可以放置一个节点。默认情况下,节点放置在每个末端的中间。

7)我创建了空节点,没有绘制

\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{arrows}

\begin{document}

\begin{tikzpicture}

\tikzset{vertex/.style = {shape=circle,draw,minimum size=1.5em}}
\tikzset{edge/.style = {->,> = latex'}}
% vertices
\node[vertex] (a) at  (0,0) {};
\node[vertex] (b) at  (4,3) {};
\node[vertex] (c) at  (8,0) {};
\node[vertex] (d) at  (4,-3) {$t$};
\node[vertex] (a1) at (1.5,0) {};
\node[vertex] (a2) at (3,0) {};
%edges
\draw[edge] (b) to (a);
\draw[edge] (b) to (c);
\draw[edge] (a) to (d);
\draw[edge] (c) to (d);

\draw[edge] (a)  to[bend left] (a1);
\draw[edge] (a1) to[bend left] (a);

\draw[edge] (a1) to[bend left] (a2);
\draw[edge] (a2) to[bend left] (a1);

\path (a2) to node {\dots} (c);
\node [shape=circle,minimum size=1.5em] (a3) at (4.5,0) {};
\draw[edge] (a2) to[bend left] (a3);
\draw[edge] (a3) to[bend left] (a2);

\node [shape=circle,minimum size=1.5em] (c1) at (6.5,0) {};
\draw[edge] (c) to[bend left] (c1);
\draw[edge] (c1) to[bend left] (c);
\end{tikzpicture}

\end{document}

在此处输入图片描述

备注:可以定义常数来定义节点之间的距离。Tikz 还提供了使用某些选项的可能性,例如node distance。还有其他选项可以放置节点,但对于第一种方法来说,它更复杂。

相关内容