6

I am relatively new to latex and work in overleaf(not sure if that helps?). I am trying to create a game tree. I currently have a few problems.

  1. I am not sure how to specify the size of the node (so that it is small enough to look like a node and not a huge circle).

  2. I wanted to take the "Nature", "P1", "P2", and so on into circles (hallow).

  3. I am not sure how to write the numbers in terminal nodes in columns rather than rows, and \ command doesn't help.

  4. I would really like to tilt the second, 3rd and 4th level edges of the trees, the long ones, that lead to the last 2 "P2"s, so that the latters are closer to each other, but I don't seem to find a way to do this.

  5. Is there a way to make a particular edge thicker or double it instead of colouring?

Thanks in advance.

Here is what I have so far:

\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{multirow}
\usepackage[margin=1in]{geometry} 
\usepackage{amsmath,amsthm,amssymb,amsfonts}
 \usepackage{tikz}   %for game theory stuff
\usetikzlibrary{calc}


\newcommand{\overbar}[1]{\mkern 1.5mu\overline{\mkern-1.5mu#1\mkern-1.5mu}\mkern 1.5mu}

\newenvironment{problem}[2][Problem]{\begin{trivlist}
\item[\hskip \labelsep {\bfseries #1}\hskip \labelsep {\bfseries #2.}]}{\end{trivlist}}


\title{Math 350 \\ Homework 4}
\author{Elen Khachatran}
\date\today


\begin{document}
\maketitle


\begin{figure}
    \centering
    \caption{Caption}

    \begin{tikzpicture}[scale=1,font=\footnotesize]
\tikzstyle{solid node}=[circle,draw,inner sep=1.2,fill=black];
    \tikzstyle{hollow node}=[circle,draw,inner sep=1.2];
\tikzstyle{level 1}=[level distance=30mm,sibling distance=30mm]
\tikzstyle{level 2}=[level distance=25mm,sibling distance=10mm]
\tikzstyle{level 3}=[level distance=20mm,sibling distance=10mm]
\tikzstyle{level 4}=[level distance=20mm,sibling distance=50mm]
\tikzstyle{level 5}=[level distance=28mm,sibling distance=25mm]
 \tikzstyle{level 6}=[level distance=28mm,sibling distance=50mm]   
    \node {Nature}
    child {node (1){P1} 
      child {node (7){$-1, 1$}
            edge from parent 
  node[left, pos=0.6, xshift=-2] {c}
            }
    child {
    child{ 
    child{node(8)[right, pos=0.6, xshift=-5]{P2} 
    child {node(27){$1,-1$}
    edge from parent 
  node[right, pos=0.6, xshift=-15] {f}}
    child {node (28){$-2,2$}
    edge from parent 
  node[right, pos=0.6, xshift=2] {c}}}
    edge from parent 
  node[right, pos=0.6, xshift=2] {r}}
    } 
  edge from parent 
  node[left, pos=0.6, xshift=-5] {$JQK$}
  node[left, pos=0.2, xshift=-5] {$ p_1 $}
  }
    child {node (2){P1} 
        child {node (9){$-1, 1$}
            edge from parent 
  node[right, pos=0.6, xshift=-15] {c}}
        child {node(10){P2} 
            child {node (19){$1,-1$} 
            edge from parent 
  node[right, pos=0.6, xshift=-15] {f}}
            child {node (20){$-2,2$}
            edge from parent 
  node[right, pos=0.6, xshift=2] {c}}
            edge from parent 
  node[right, pos=0.6, xshift=2] {r}}
  edge from parent 
  node[right, pos=0.6, xshift=-5] {$JKQ$}
  node[right, pos=0.2, xshift=-5] {$p$}
  }
   child {node (3){P1} 
      child {node (11){P2}
            child {node (21){$1,-1$}
            edge from parent 
  node[right, pos=0.6, xshift=-12] {f}}
            child {node (22){$-2,2$}
            edge from parent 
  node[right, pos=0.6, xshift=2] {c}}
            edge from parent 
  node[right, pos=0.6, xshift=-15] {r}}
    child {node(12){$-1,1$} 
    edge from parent 
  node[right, pos=0.6, xshift=2] {c}}
  edge from parent 
  node[right, pos=0.6, xshift=-5] {$QKJ$}
  node[right, pos=0.2, xshift=-5] {$p$}
  } 
   child {node (4){P1} 
      child {node (13){$1,-1$}
            edge from parent 
  node[right, pos=0.6, xshift=-15] {c}
            }
    child {node(14){P2} 
            child {node (23) {$1,-1$}
            edge from parent 
  node[right, pos=0.6, xshift=-15] {f}}
            child {node (24) {$2,-2$}
            edge from parent 
  node[right, pos=0.6, xshift=2] {c}}
            edge from parent 
  node[right, pos=0.6, xshift=2] {r}}
  edge from parent 
  node[right, pos=0.6, xshift=-5] {$QJK$}
  node[right, pos=0.2, xshift=-5] {$ p$}
  } 
   child {node (5){P1} 
      child {node (15){P2}
            child {node (25) {$1,-1$}
            edge from parent 
  node[right, pos=0.6, xshift=-15] {f}}
            child {node (26) {$2,-2$}
            edge from parent 
  node[right, pos=0.6, xshift=2] {c}}
            edge from parent 
  node[right, pos=0.6, xshift=-15] {r}}
    child {node(16){$1,-1$} 
    edge from parent 
  node[right, pos=0.6, xshift=2] {c}}
  edge from parent 
  node[right, pos=0.6, xshift=-5] {$KJQ$}
  node[right, pos=0.2, xshift=-5] {$p$}
  } 
   child {node (6){P1} 
      child{
      child{
      child {node (17){P2}
            child {node (27)[solid node]{$1,-1$}
            edge from parent 
  node[right, pos=0.6, xshift=-15] {r}}
            child {node{$2,-2$}
            edge from parent 
  node[right, pos=0.6, xshift=2] {c}}
            }edge from parent 
  node[right, pos=0.6, xshift=-15] {r}}}
    child {node(18){$1,-1$} 
    edge from parent 
  node[right, pos=0.6, xshift=2] {c}}
  edge from parent 
  node[right, pos=0.6, xshift=-5] {$KQJ$}
  node[right, pos=0.2, xshift=-5] {$p$}
  }; 
\draw[dashed,-] (1) -- (2);    
 \draw[dashed,-] (3) -- (4);
 \draw[dashed,-] (5) -- (6);
  \draw[dashed,-] (10) -- (11);  
  \draw[dashed,-] (14) -- (15);      
  \draw[dashed,-] (8) -- (17);    

    \end{tikzpicture}
\end{figure}

\end{document}

enter image description here

Mensch
  • 65,388

2 Answers2

8

I try to clean-up your code and add option hn (hollow node) to nodes which are in circle. for the root node i suggest to use rectangle with rounded corners. The end nodes I wouldn't put in circle, eventually I would add gray background (in mwe below it is showed for last two end nodes). If you liked such solution, you only need to add node style gn (gray node) to all end nodes.

Since the tree is very wide, I reduce page borders to 20 mm. I also remove from preamble all what is not related to tree diagram.

\documentclass[11pt]{article}
\usepackage[margin=20mm]{geometry}
\usepackage[skip=1ex]{caption}
\usepackage{tikz}   %for game theory stuff

%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}

\begin{figure}
    \centering
    \caption{Caption}

    \begin{tikzpicture}[
          font = \footnotesize,
     hn/.style = {circle, draw},
     gn/.style = {rounded corners, fill=gray!20, inner xsep=2pt},
level 1/.style = {level distance = 30mm,sibling distance=31mm},
level 2/.style = {level distance = 20mm,sibling distance=10mm},
level 4/.style = {level distance =  5mm},
level 5/.style = {level distance = 20mm}
                        ]
\node[draw, rounded corners] {Nature}
    child {node (1) [hn] {P1}
      child {node (7) {$-1, 1$}
            edge from parent node[left] {c}
            }
    child {
        child{
            child{ node (8) [hn] {P2}
        child {node (27) {$1,-1$}
            edge from parent node[left] {f}}
        child {node (28){$-2,2$}
            edge from parent node[right] {c}}
                }
        edge from parent node[right] {r}}
            }
    edge from parent node[left=1mm] {$JQK$}
                     node[left=1mm, pos=0.25] {$p_1$}
        }
    child {node (2) [hn] {P1}
        child {node (9) {$-1, 1$}
            edge from parent node[right] {c}
               }
        child {node (10) [hn] {P2}
            child {node (19) {$1,-1$}
                edge from parent node[right, pos=0.6, xshift=-15] {f}}
            child {node (20) {$-2,2$}
                edge from parent node[right, pos=0.6, xshift=2] {c}
                  }
            edge from parent node[right, pos=0.6, xshift=2] {r}
            }
        edge from parent node[left=1mm] {$JKQ$}
                         node[left=1mm, pos=0.3] {$p$}
            }
   child {node (3) [hn] {P1}
      child {node (11) [hn] {P2}
        child {node (21) {$1,-1$}
            edge from parent node[right=1mm] {f}}
            child {node (22) {$-2,2$}
                edge from parent node[right=1mm] {c}}
            edge from parent node[right=1mm] {r}}
    child {node(12) {$-1,1$}
        edge from parent node[right, pos=0.6, xshift=2] {c}
           }
        edge from parent node[left=1mm] {$QKJ$}
                         node[left=1mm, pos=0.35] {$p$}
        }
   child {node (4) [hn] {P1}
      child {node (13) {$1,-1$}
        edge from parent node[right=1mm] {c}
            }
    child {node(14) [hn] {P2}
        child {node (23) {$1,-1$}
            edge from parent node[right=1mm] {f}}
            child {node (24) {$2,-2$}
                edge from parent node[right=1mm] {c}
                }
            edge from parent node[right=1mm] {r}
            }
        edge from parent node[right=1mm] {$QJK$}
                         node[right=1mm, pos=0.35] {$ p$}
        }
    child {node (5) [hn] {P1}
        child {node (15) [hn] {P2}
            child {node (25){$1,-1$}
                edge from parent node[right=1mm] {f}
                  }
            child {node (26) {$2,-2$}
                edge from parent node[right=1mm] {c}
                  }
            edge from parent node[right=1mm] {r}}
            child {node(16) {$1,-1$}
                edge from parent node[right=1mm] {c}
                 }
            edge from parent node[right=1mm] {$KJQ$}
                             node[right=1mm, pos=0.3] {$p$}
        }
   child {node (6) [hn] {P1}
      child{
        child{
            child {node (17) [hn] {P2}
            child {node (27) [gn]  {$1,-1$}
                edge from parent node[right=1mm] {r}
                    }
            child {node [gn] {$2,-2$}
                edge from parent node[right=1mm] {c}
                    }
                }
        edge from parent node[right=1mm] {r}
            }}
    child {node(18) {$1,-1$}
        edge from parent node[right=1mm] {c}
            }
        edge from parent node[right=1mm] {$KQJ$}
                         node[right=1mm,pos=0.25] {$p$}
        };
\draw[dashed]   (1)  -- (2)
                (3)  -- (4)
                (5)  -- (6)
                (10) -- (11)
                (14) -- (15)
                (8)  -- (17);
    \end{tikzpicture}
\end{figure}

enter image description here

(red lines indicate text borders)

peterh
  • 331
Zarko
  • 296,517
4

Another solution to use the istgame package (version 2).

enter image description here

\documentclass{standalone}

\usepackage{amsmath}
\def\vpay#1#2{\begin{matrix}#1\\#2\end{matrix}}

\usepackage{istgame}

\begin{document}

\begin{istgame}[scale=.8,font=\footnotesize]
\xtShowEndPoints % solid nodes
\setistEllipseNodeStyle{6mm} % minimum circle size for players
\xtdistance{30mm}{30mm}
\istrooto(0){Nature}
  \istB{JQK}[l]{p_1}[left,near start,xshift=-5pt]
  \istB{JKQ}[l]{p}[left,near start]
  \istB{QJK}[l]{p}[left,near start]
  \istB{QJK}[r]{p}[right,near start]
  \istB{KJQ}[r]{p}[right,near start,xshift=5pt]
  \istB{KQJ}[r]{p}[right,near start,xshift=5pt]
  \endist
\xtdistance{25mm}{10mm}
\istrooto(1)(0-1){$P_1$}
  \istb{c}[l]{\vpay{-1}{1}} \istb<grow=-70,level distance=90mm>{r}[r] \endist
\istrooto(2)(0-2){$P_1$}
  \istb{c}[l]{\vpay{-1}{1}} \istb{r}[r] \endist
\istrooto(3)(0-3){$P_1$}
  \istb{r}[l] \istb{c}[r]{\vpay{-1}{1}} \endist
\istrooto(4)(0-4){$P_1$}
  \istb{c}[l]{\vpay{1}{-1}} \istb{r}[r] \endist
\istrooto(5)(0-5){$P_1$}
  \istb{r}[l] \istb{c}[r]{\vpay{1}{-1}} \endist
\istrooto(6)(0-6){$P_1$}
  \istb<grow=-110,level distance=90mm>{r}[l] \istb{c}[r]{\vpay{1}{-1}} \endist
\xtdistance{20mm}{10mm}
\istrooto(a)(2-2){$P_2$}
  \istb{f}[l]{\vpay{1}{-1}} \istb{c}[r]{\vpay{-2}{2}} \endist
\istrooto(b)(3-1){$P_2$}
  \istb{f}[l]{\vpay{1}{-1}} \istb{c}[r]{\vpay{-2}{2}} \endist
\istrooto(c)(4-2){$P_2$}
  \istb{f}[l]{\vpay{1}{-1}} \istb{c}[r]{\vpay{2}{-2}} \endist
\istrooto(d)(5-1){$P_2$}
  \istb{f}[l]{\vpay{1}{-1}} \istb{c}[r]{\vpay{2}{-2}} \endist
\xtdistance{28mm}{25mm}
\istrooto(A)(1-2){$P_2$}
  \istb[draw=red]{f}[l]{\vpay{1}{-1}} \istb[draw=blue]{c}[r]{\vpay{-2}{2}} \endist
\istrooto(B)(6-1){$P_2$}
  \istb[double]{f}[l]{\vpay{1}{-1}} \istb[ultra thick]{c}[r]{\vpay{2}{-2}} \endist
% information sets
\setxtinfosetstyle{dashed}
\xtInfoset(1)(2)
\xtInfoset(3)(4)
\xtInfoset(5)(6)
\xtInfoset(a)(b)
\xtInfoset(c)(d)
\xtInfoset(A)(B)
\end{istgame}

\end{document}
I. Cho
  • 2,985