Answers:
Mathematica具有图形构建和绘图功能。
因此,如果您在Mathematica中构建图形,则可以使用所选设置对其进行绘制。
在Mathematica中,您可以使用TreeGraph来构建图形,并使用TreePlot来绘制图形。例如,以下代码生成一个树,其中的节点用坐标标记,并具有与所需格式相似的格式:
TreePlot[{1 -> 4, 1 -> 1, 1 -> 5, 2 -> 4, 3 -> 6, 3 -> 9, 4 -> 8,
4 -> 10, 6 -> 7, 8 -> 9},
EdgeRenderingFunction -> ({If[First[#2] === Last[#2], Red, Black],
Arrow[#1, .1],
Text[#2, LineScaledCoordinate[#1, .5], Background -> White]} &),
VertexLabeling -> True]
另外,请注意,Tex中有诸如TikZ的图形软件包,它们具有非常强大的图形绘制功能。但是,TikZ主要用于UNIX环境,不会存储数据结构或进行类似Mathematica的计算。它纯粹是图形绘制功能。
您用作图解的图形具有TeX中通常使用的字体,因此它可能是由TikZ或其他TeX软件包生成的。如果希望Mathematica方程看起来像这样,可以使用TraditionalForm函数,或显式指定Computer Modern字体。
forest
该forest
乳胶包装可以绘制游戏树木很简单的语法。将预设模板复制到LaTeX序言中后,可以使用嵌套[]
语法构建游戏树,然后该程序负责节点放置/间距/等。
这是forest
手册中的示例(第5.1节中的“决策树”):
\begin{forest}
decision tree
[N,plain content
[I;{p_1=0.5},plain content,elo={yshift=4pt}
[{5,1};a]
[II;b,plain content
[{1,2};m]
[{2,3};n]
]
]
[II;{p_2=0.5},plain content,elo={yshift=4pt}
[;c
[{1,0};z]
[{2,2};t]
]
[;d
[{3,1};z]
[{0,0};t]
]
]{\draw[dashed](!1.anchor)--(!2.anchor) node[pos=0.5,above]{I};}
]
\end{forest}
在博弈论的探险家是由伦敦政治经济学院的几个人发展。它允许用户通过GUI输入矩阵形式的游戏或构建广泛的形式的游戏。它似乎也能够在普通形式游戏和广泛形式游戏之间进行转换。此外,该软件还带有一个求解器,用于查找输入游戏的纳什均衡。
如果使用LaTeX,还可以使用istgame
基于TikZ 的软件包绘制游戏树。
该手册包含许多带有完整代码的示例,包括:
使用该istgame
程序包,您可以像手工绘制游戏树一样绘制游戏树。
\documentclass{standalone}
\usepackage{istgame}
\begin{document}
\begin{istgame}
\xtdistance{15mm}{40mm}
\istroot(0){1}
\istb{a_1}[al]
\istb{a_2}[ar]
\endist
\xtdistance{15mm}{20mm}
\istroot(1)(0-1){2}
\istb{b_1}[al]{5,5}
\istb{b_2}[ar]{1,5}
\endist
\istroot(1)(0-2){2}
\istb{b_3}[al]{3,6}
\istb{b_4}[ar]{2,2}
\endist
\end{istgame}
\end{document}
我已经将LaTeX与tikz包一起使用了。以下代码用于生成此Centepede游戏:
\documentclass{article}
\usepackage{tikz}
\usepackage{bodegraph}
\usepackage[printwatermark]{xwatermark}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=1.3cm,
thick,main node/.style={circle,fill=blue!20,draw,font=\sffamily\normalsize\bfseries}]
\node[main node] (1) {1};
\node[main node] (2) [right of=1] {2};
\node[main node] (3) [right of=2] {1};
\node[main node] (4) [right of=3] {2};
\node[main node] (5) [right of=4] {1};
\node[main node] (6) [right of=5] {2};
\node (7) [below of=1] {$(1,0)$};
\node (8) [below of=2] {(0,2)};
\node (9) [below of=3] {$(3,1)$};
\node (10) [below of=4] {$(2,4)$};
\node (11) [below of=5] {$(5,3)$};
\node (12) [below of=6] {$(4,6)$};
\node (13) [right of=6] {$(7,5)$};
\path[every node/.style={font=\sffamily\small\scshape}]
(1) edge node [above] {In} (2)
edge node [left] {Out} (7)
(2) edge node [above] {In} (3)
edge node [left] {Out} (8)
(3) edge node [above] {In} (4)
edge node [left] {Out} (9)
(4) edge node [above] {In} (5)
edge node [left] {Out} (10)
(5) edge node [above] {In} (6)
edge node [left] {Out} (11)
(6) edge node [above] {In} (13)
edge node [left] {Out} (12);
\end{tikzpicture}
\end{document}
这是另一个示例:
以上游戏的代码是:
\documentclass{article}
\usepackage{tikz}
\usepackage{bodegraph}
\usepackage[printwatermark]{xwatermark}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=3cm,
thick,main node/.style={circle,fill=blue!20,draw,font=\sffamily\Large\bfseries}]
\node[main node] (1) {1};
\node[main node] (2) [below right of=1] {2};
\node[main node] (3) [below left of=2] {1};
\node (4) [below left of=1] {$(1,1)$};
\node (5) [below right of=2] {(0,2)};
\node (6) [below left of=3] {$(10,0)$};
\node (7) [below right of=3] {$(5,5)$};
\path[every node/.style={font=\sffamily\small\scshape}]
(1) edge node [right] {Play} (2)
edge node [left] {Not Play} (4)
(2) edge node [right] {Distrust} (5)
edge node [left] {Trust} (3)
(3) edge node [left] {Steal} (6)
edge node [right] {Share} (7);
\end{tikzpicture}
\end{document}
如果您对该istgame
软件包感兴趣,可以这样做(画Amit的示例):
对于the游戏:
\documentclass{standalone}
\usepackage{istgame}
\begin{document}
\begin{istgame}
%% for arrows (optional)
\xtShowArrows
\xtShowEndPoints[ellipse node]
\xtHideTerminalNodes
%% some more optional settings
\setistEllipseNodeStyle{15pt}[blue!20] % node style
\setistmathTF*001<textbf>{textsc} % input mode changer
\setistgrowdirection{-45} % direction
%% tree
\xtdistance{10mm}{20mm}
\istrooto(1){1}
\istbt{Out}[l]{(1,0)}[b] \istb{In}[a] \endist
\istrooto(2)(1-2){2}
\istbt{Out}[l]{(0,2)}[b] \istb{In}[a] \endist
\istrooto(3)(2-2){1}
\istbt{Out}[l]{(3,1)}[b] \istb{In}[a] \endist
\istrooto(4)(3-2){2}
\istbt{Out}[l]{(2,4)}[b] \istb{In}[a] \endist
\istrooto(5)(4-2){1}
\istbt{Out}[l]{(5,3)}[b] \istb{In}[a] \endist
\istrooto(6)(5-2){2}
\istbt{Out}[l]{(4,6)}[b] \istbt{In}[a]{(7,5)}[r] \endist
\end{istgame}
\end{document}
树形结构本身很容易绘制。
\documentclass{standalone}
\usepackage{istgame}
\begin{document}
\begin{istgame}[font=\scriptsize]
\setistmathTF*001{textsc} % input mode changer
\setistgrowdirection{-45} % direction
%% tree
\xtdistance{10mm}{20mm}
\istroot(1){1}
\istb{Out}[l]{(1,0)}[b] \istb{In}[a] \endist
\istroot(2)(1-2){2}
\istb{Out}[l]{(0,2)}[b] \istb{In}[a] \endist
\istroot(3)(2-2){1}
\istb{Out}[l]{(3,1)}[b] \istb{In}[a] \endist
\istroot(4)(3-2){2}
\istb{Out}[l]{(2,4)}[b] \istb{In}[a] \endist
\istroot(5)(4-2){1}
\istb{Out}[l]{(5,3)}[b] \istb{In}[a] \endist
\istroot(6)(5-2){2}
\istb{Out}[l]{(4,6)}[b] \istb{In}[a]{(7,5)}[r] \endist
\end{istgame}
\end{document}
对于另一个示例:
\documentclass{standalone}
\usepackage{istgame}
\begin{document}
\begin{istgame}[font=\scriptsize]
%% for arrows (optional)
\xtShowArrows
\xtShowEndPoints[ellipse node]
\xtHideTerminalNodes
%% some more optional settings
\setistEllipseNodeStyle{15pt}[blue!20] % node style
\setistmathTF*001<textbf>{textsc} % input mode changer
%% tree
\xtdistance{15mm}{30mm}
\istrooto(1){1}
\istbt{Not Play}[al]{(1,1)}
\istb{Play}[ar]
\endist
\istrooto(2)(1-2){2}
\istb{Trust}[al]
\istbt{Distrust}[ar]{(0,2)}
\endist
\istrooto(3)(2-1){1}
\istbt{Steal}[al]{(10,10)}
\istbt{Share}[ar]{(5,5)}
\endist
\end{istgame}
\end{document}
同样,树形结构很容易绘制。
\documentclass{standalone}
\usepackage{istgame}
\begin{document}
\begin{istgame}[font=\scriptsize]
\setistmathTF*001{textsc} % input mode changer
%% tree
\xtdistance{15mm}{30mm}
\istroot(1){1}
\istb{Not Play}[al]{(1,1)}
\istb{Play}[ar]
\endist
\istroot(2)(1-2){2}
\istb{Trust}[al]
\istb{Distrust}[ar]{(0,2)}
\endist
\istroot(3)(2-1){1}
\istb{Steal}[al]{(10,10)}
\istb{Share}[ar]{(5,5)}
\endist
\end{istgame}
\end{document}
(添加)如果您希望树向东:
\documentclass{standalone}
\usepackage{istgame}
\begin{document}
\begin{istgame}[font=\scriptsize]
\setistmathTF*001{textsc} % input mode changer
\setistgrowdirection'{east} % direction
%% tree
\xtdistance{15mm}{30mm}
\istroot(1)<180>{1}
\istb{Not Play}[al]{(1,1)}
\istb{Play}[bl]
\endist
\istroot(2)(1-2)<180>{2}
\istb{Trust}[al]
\istb{Distrust}[bl]{(0,2)}
\endist
\istroot(3)(2-1)<180>{1}
\istb{Steal}[al]{(10,10)}
\istb{Share}[bl]{(5,5)}
\endist
\end{istgame}
\end{document}