DAG mit fehlenden Knoten und Hilfslinien

DAG mit fehlenden Knoten und Hilfslinien

Ich möchte einen DAG (gerichteten azyklischen Graphen) zeichnen, der nach rechts wächst, wobei jeder Knoten einen festen Abstand zu den anderen Knoten hat. Manchmal können jedoch Knoten fehlen, sodass ich diesen Abstand dennoch berücksichtigen möchte:

Beispielsweise sollte der Abstand zwischen F und D dem Abstand zwischen A und D entsprechen.

Bildbeschreibung hier eingeben

Gleichzeitig möchte ich dahinter Hilfslinien einzeichnen, die dabei helfen, zu verstehen, wie sie richtig angeordnet werden

Bildbeschreibung hier eingeben

Im ersten Beispiel habe ich nur eine Möglichkeit gefunden, anzugeben, wo genau die Knoten sein sollen (ideal wäre jedoch eine automatische Positionierung).

\begin{tikzpicture}[
grow=right,
level distance=200mm,
sibling distance=105mm]
    \node[shape=circle,draw=black] (A) at (0, 0){A};
    \node[shape=circle,draw=black] (B) at (1,-1) {B};
    \node[shape=circle,draw=black] (C) at (1,1) {C};
    \node[shape=circle,draw=black] (D) at (2,0) {D};
    \node[shape=circle,draw=black] (F) at (4,0) {F} ;

    \path [<-](A) edge node[right] {} (B);
    \path [<-](A) edge node[right] {} (C);
    \path [<-](B) edge node[right] {} (D);
    \path [<-](C) edge node[right] {} (D); 
    \path [<-](D) edge node[right] {} (F); 
\end{tikzpicture}

Im zweiten Fall habe ich nur eine Möglichkeit gefunden, Bäume zu konstruieren - die ich nicht wirklich ausbreiten kann

\begin{tikzpicture}[
grow=right,
level distance=20mm,
sibling distance=10mm,
every node/.style={draw=black,border=1mm,circle,inner sep=5pt}
]
\draw [help lines, dashed,ystep=5, xstep=2] (0,0) grid(15, 5);
\node {0}
child { node {1} }
    child { node {2}
      child { node {3}
        child { node {4} }
        child { node {5} }
        child { node {6} } }
      child { node {7} } };
;
\end{tikzpicture}

Gibt es eine Möglichkeit, das zu erreichen, was ich möchte?

Antwort1

Relevante Codeelemente:

  • Die Bibliothek positioningermöglicht es Ihnen, Knoten relativ zu anderen Knoten zu positionieren above, indem Sie belowusw. verwenden. Der Abstand wird mit der Option gesteuert node distance. Um die Mittelpunkte der Knoten in einem festen Abstand zu platzieren, benötigen Sie die Option on grid(andernfalls wird der Abstand zwischen den Rändern der Knoten gemessen).

  • Damit die Knoten das Raster im Hintergrund abdecken, verwenden Sie es fill=whitemit den Knoten.

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}%
  [vertex/.style={circle,draw=black,fill=white},
   node distance=2cm,
   on grid,
   >=latex
  ]
  \draw[gray!50] (-1,-2) grid (5,2);
  \node[vertex] (A) {A};
  \node[vertex,above right=1cm and 1cm of A] (B) {B};
  \node[vertex,below=of B] (C) {C};
  \node[vertex,right=of A] (D) {D};
  \node[vertex,right=of D] (F) {F};
  \draw[->]
    (C) edge (A)
    (B) edge (A)
    (D) edge (C)
    (D) edge (B)
    (F) edge (D);
\end{tikzpicture}
\end{document}

verwandte Informationen