Desenhando um gráfico de Petersen como um gráfico de tensão

Desenhando um gráfico de Petersen como um gráfico de tensão

Estou tentando ilustrar a construção de um gráfico de tensão do gráfico de Petersen. Na prática, isso significa:

  • O ciclo externo será rotulado no sentido horário (a,0),...,(a,4) com arcos orientados nessa ordem;
  • O ciclo interno será rotulado no sentido horário (b,0),...,(b,4) com arcos (b,0) -> (b,2), (b,1) -> (b,3), (b,2) -> (b,4) e (b,3) -> (b,0); e
  • Cada (a,i) será unido ao (b,i) correspondente (nessa direção).

Quase consigo fazer isso usando a macro grpetersen e o seguinte código:

\begin{tikzpicture}[->,>=triangle 45,rotate=90,scale=1.2,style=thick]
  \newcommand{\aset}[2]{$\{#1,#2\}$}
  \tikzset{VertexStyle/.style={draw,rectangle}}
  \SetVertexNoLabel
  \SetVertexMath
  \SetUpVertex[MinSize=30pt]
  \grPetersen[RA=3,RB=1.5]
%  \SetUpEdge{style={->-}}
  \AssignVertexLabel{a}{\textsl{(a,0)},\textsl{(a,4)},\textsl{(a,3)},\textsl{(a,2)},\textsl{(a,1)}}
  \AssignVertexLabel{b}{\textsl{(b,0)},\textsl{(b,4)},\textsl{(b,3)},\textsl{(b,2)},\textsl{(b,1)}}
\end{tikzpicture}

No entanto, os arcos no ciclo externo estão orientados na direção errada e não consigo ver como alterá-los sem alterar os outros arcos orientados corretamente.

Qualquer sugestão será muito bem-vinda.


Faz parte de tkzgraph/berge - consulte "Plotando gráficos nomeados" de Altermundus. Aqui está um documento mínimo contendo o código acima.

\documentclass{article}
\usepackage{tkz-graph}
\usepackage{tkz-berge}
\begin{document}
\begin{tikzpicture}[->,>=triangle 45,rotate=90,scale=1.2,style=thick]
  \newcommand{\aset}[2]{$\{#1,#2\}$}
  \tikzset{VertexStyle/.style={draw,rectangle}}
  \SetVertexNoLabel
  \SetVertexMath
  \SetUpVertex[MinSize=30pt]
  \grPetersen[RA=3,RB=1.5]
%  \SetUpEdge{style={->-}}
  \AssignVertexLabel{a}{\textsl{(a,0)},\textsl{(a,4)},\textsl{(a,3)},\textsl{(a,2)},\textsl{(a,1)}}
  \AssignVertexLabel{b}{\textsl{(b,0)},\textsl{(b,4)},\textsl{(b,3)},\textsl{(b,2)},\textsl{(b,1)}}
\end{tikzpicture}
\end{document}

Responder1

Aqui talvez uma solução. Modifiquei minha macro que defini emtkz-berge.sty. A melhor maneira é aprendertkz-bergeou para aprendertikzpara criar suas próprias macros. Você pode encontrar algumas ideias dentro do código detkz-bergemas você também olha o documentoGráficos Nomeadospara encontrar alguns exemplos Gráficos Nomeados

Observação: tkz-berge carrega tkz-graph e tikz

\documentclass{article}
\usepackage{tkz-berge} 
\makeatletter

\renewcommand*{\grPetersen}[1][]{%
\begingroup%
    \setkeys[GR]{cl}{#1}%
        \begin{scope}[<-]
            \grCycle[#1]{5}%     
        \end{scope}
        \edef\tkzb@rtemp{\cmdGR@cl@RB}
        \edef\tkzb@ptemp{\cmdGR@cl@prefixx}
        \grStartwo[#1,RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{2}
        \EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{5} 
\endgroup%
}  
\makeatother


\begin{document}
\begin{tikzpicture}[->,>=triangle 45,rotate=90,scale=1.2,style=thick]
  \newcommand{\aset}[2]{$\{#1,#2\}$}
  \tikzset{VertexStyle/.style={draw,rectangle}}
  \SetVertexNoLabel
  \SetVertexMath
  \SetUpVertex[MinSize=30pt]
  \grPetersen[RA=3,RB=1.5]
  \AssignVertexLabel{a}{\textsl{(a,0)},\textsl{(a,4)},\textsl{(a,3)},\textsl{(a,2)},\textsl{(a,1)}}
  \AssignVertexLabel{b}{\textsl{(b,0)},\textsl{(b,4)},\textsl{(b,3)},\textsl{(b,2)},\textsl{(b,1)}}
\end{tikzpicture}
\end{document}

insira a descrição da imagem aqui

informação relacionada