Ayuda a mejorar este gráfico tikz de un conjunto dirigido

Ayuda a mejorar este gráfico tikz de un conjunto dirigido

Soy un novato en tikz. Quería dibujar un gráfico de un conjunto dirigido y lo logré juntando código de ejemplos en línea, sin entender mucho lo que está sucediendo. Ahora me gustaría hacer algunas mejoras, para las cuales no encontré ejemplos (que podrían integrarse con mi código).

Mi código hasta ahora:

\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzset{main node/.style={circle,draw}}
...
\begin{tikzpicture}
\node[main node] (B) {};
\node[main node] (a) [above left = 1 cm and 1cm of B] {$\alpha$};
    \node[main node] (a1)  [above left = 1 cm and 1cm of a]  {};
    \node[main node] (a2)   [above right = 1 cm and 1cm of a] {};
    \node[main node] (g) [above right = 1cm and 1cm of B] {$\gamma$};
    \node[main node] (g1)   [above left = 1 cm and 1cm of g]{};
    \node[main node] (g2)   [above right = 1 cm and 1cm of g]{};
    \node[main node] (g3)   [above right = 1 cm and 1cm of g2]{};
\path[draw,thick]
    (B) edge node {} (a)
    (B) edge node {} (g)
    (a) edge node {} (a1)
    (a) edge node {} (a2)    
    (g) edge node {} (g1)
    (g) edge node {} (g2)
    (g2) edge node {} (g3);         
\end{tikzpicture}

Mi resultado hasta ahora:Grafico

Mejoras que me gustaría hacer:

1) Me gustaría indicar que la gráfica continúa. Por ejemplo, el nodo y el borde superior derecho me gustaría reemplazarlos con tres guiones en la dirección del borde actual. Estas "extensiones de tres guiones" también me gustaría agregarlas a los hijos de $\alpha$.

2) Me gustaría dibujar un rectángulo alrededor de todos los descendientes de $\alpha$, incluida la extensión indicada en el punto 1). Me gustaría poner un texto en la parte superior de este cuadro que diga$\geq\alpha$

3) Me gustaría que todos los círculos tuvieran el mismo tamaño, que está determinado automáticamente por la etiqueta más grande.

EDITAR:

Puedo resolver parcialmente 3) usando minimum size=1cmel estilo de los nodos. Sin embargo, esto requeriría ajustar 1 cm cada vez que se cambien etiquetas, fuentes y otros tamaños.

Respuesta1

1 se puede hacer haciendo los nodos invisibles (omitiendo draw) y haciendo los bordes dashed.

2 se puede hacer usando fittikzlibrary.

3 es bastante difícil, porque hay que establecer el tamaño del nodo de antemano, mientras que sólo se conoce el nodo más grande después de que se hayan procesado todos los nodos. Hay formas de abordar esto, pero será (mucho) más fácil definir un tamaño absoluto (como usted mismo sugiere) o, alternativamente, calcular el tamaño máximo a partir de un nodo más grande proporcionado por el usuario (en MWE a continuación).

Nota: esta solución se basa en preguntas existentes: por ejemplo,Tikz: cómo dibujar cuadros alrededor de un conjunto de nodos. Asegúrese de realizar una búsqueda exhaustiva antes de hacer una nueva pregunta. Para su MWE, asegúrese de que se compile, es decir, que incluya \documentclassy \begin{document}sin ....

MWE:

\documentclass{article}
\usepackage{tikz}
\usepackage{calc}
\usetikzlibrary{positioning}
\usetikzlibrary{fit}
\tikzset{main node/.style={circle,draw}}

\newcommand{\largest}{$\gamma$}
\newlength{\sizemax}
\setlength{\sizemax}{\maxof{\widthof{\largest}}{\totalheightof{\largest}}}
\tikzset{minimum size=\sizemax+10pt}

\begin{document}
\begin{tikzpicture}
\node[main node] (B) {};
\node[main node] (a) [above left = 1cm and 1cm of B] {$\alpha$};
    \node[main node] (a1)  [above left = 1cm and 1cm of a]  {};
    \node[main node] (a2)   [above right = 1cm and 1cm of a] {};
    \node (a1x)   [above left = 1cm and 1cm of a1]{};
    \node (a2x)   [above left = 1cm and 1cm of a2]{};
    \node[main node] (g) [above right = 1cm and 1cm of B] {$\gamma$};
    \node[main node] (g2)   [above right = 1cm and 1cm of g]{};
    \node (g3)   [above right = 1cm and 1cm of g2]{};
\path[draw,thick]
    (B) edge (a)
    (B) edge (g)
    (a) edge (a1)
    (a) edge (a2)    
    (g) edge (a2)
    (g) edge (g2)
    (g2) edge[dashed] (g3)
    (a1) edge[dashed] (a1x)
    (a2) edge[dashed] (a2x);
\node[draw,fit=(a) (a1) (a2) (a1x) (a2x)] (ad) {};
\node[above=0mm of ad] {$\geq\alpha$};
\end{tikzpicture}
\end{document}

Resultado:

ingrese la descripción de la imagen aquí

información relacionada