
Estoy trabajando en un artículo que necesita un gráfico como el de la siguiente imagen. pero parece muy complicado, no tengo idea de cómo dibujarlo fácilmente, mi supervisor me dijo que se pueden usar Inkscape o xfig, aunque no estoy familiarizado con esas dos herramientas. La fecha límite para enviar mi trabajo se acerca pronto, así que necesito terminar mi borrador en breve. Realmente aprecio su ayuda con mi dibujo.
Respuesta1
Aquí te dejamos algunos trucos que pueden ayudarte a lograr tu objetivo. Utilice un matrix
que se llene automáticamente. Esta es la gran matriz, en la que dondequiera que coloques |[o]|
automáticamente se rellena un nodo con el contenido correcto. Esto es posible porque TikZ realiza un seguimiento de los índices de filas y columnas, por lo que podemos usar
execute at begin node={\the\numexpr17-\pgfmatrixcurrentrow},
para completar el número correspondiente.
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[circ/.style={circle,draw,text width=1.2em,align=center,inner
sep=1pt,font=\sffamily},
o/.style={circ,
execute at begin node={\the\numexpr17-\pgfmatrixcurrentrow},
alias=o-\the\pgfmatrixcurrentcolumn-\the\numexpr17-\pgfmatrixcurrentrow},
>=latex]
\matrix[matrix of nodes,column sep=3em,row sep=1em,
column 5/.style={nodes={thick}}] (big mat) {
|[o]| & |[o]| & |[o]| & |[o]| & \\
& |[o]| & |[o]| & |[o]| & \\
& & & & \\
& & & & \\
& & & & \\
& & & & \\
& |[o]| & |[o]| & |[o]| & \\
& |[o]| & |[o]| & |[o]| & \\
|[o]| & |[o]| & |[o]| & |[o]| & |[o]|\\
& & |[o]| & |[o]| & |[o]|\\
& & |[o]| & |[o]| & |[o]|\\
& & |[o]| & |[o]| & |[o]|\\
|[o]| & |[o]| & & |[o]| & |[o]|\\
& & & |[o]| & |[o]|\\
|[o,yshift=-2em]| & |[o,yshift=-2em]| & |[o]| & |[o]| & |[o]|\\
& |[o,yshift=-2em]| & |[o]| & |[o]| & \\
$W_t=16$ & $W_t=8$ & $W_t=4$ & $W_t=2$ & \\
};
\path ([yshift=2.5em,xshift=2em]big mat.south east)
node[matrix of nodes,nodes={circ,thick},column sep=1em]
(small mat) {0 & 0 & 0 & 0 & 0 & 0\\};
\foreach \X in {2,...,8}
{\draw[->] (o-5-\X) -- (o-4-\X);}
\foreach \X in {1,...,6}
{\draw[->] (small mat-1-\X) to[out=90,in=0] (o-4-1.north);}
\end{tikzpicture}
\end{document}
Como ves la mayoría de los nodos del diagrama están sin necesidad de especificar ningún número, sólo pon algunos |[o]|
aquí y allá.
Para completar su tarea, probablemente desee cargar la backgrounds
biblioteca y dibujar las conexiones en la capa de fondo (y agregarlas fill=white
a la definición de circ
). Ni siquiera intenté comenzar esto, la respuesta es solo mencionar el truco para agregar automáticamente la mayoría de los nodos.
Respuesta2
Tikz puede hacer diagramas tan complicados
Ejemplo sencillo de los documentos:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}
\begin{document}
\begin{tikzpicture}[shorten >=1pt,node distance=2cm,on grid,auto]
\draw[help lines] (0,0) grid (3,2);
\node[state,initial] (q_0) {$q_0$};
\node[state] (q_1) [above right=of q_0] {$q_1$};
\node[state] (q_2) [below right=of q_0] {$q_2$};
\node[state,accepting](q_3) [below right=of q_1] {$q_3$};
\path[->] (q_0) edge node {0} (q_1)
edge node [swap] {1} (q_2)
(q_1) edge node {1} (q_3)
edge [loop above] node {0} ()
(q_2) edge node [swap] {0} (q_3)
edge [loop below] node {1} ();
\end{tikzpicture}
\end{document}