Alat visualisasi untuk teori permainan: Pohon permainan

11

Ada banyak cara untuk menggambar game berurutan 'dengan tangan'. Dengan menggambar game, maksud saya ini:

masukkan deskripsi gambar di sini

Menampilkan poin keputusan pemain, aksi yang tersedia, dan hadiah.

Apakah ada cara saya bisa melakukan ini dalam R atau bahasa pemrograman tingkat tinggi yang serupa? Tepatnya: Saya tidak ingin memplot persamaan geometris, saya ingin mendefinisikan struktur (pemain, poin, koneksi, hasil) dan minta plot programnya.

Saat ini saya sedang menjelajah paket 'igraph' tetapi saya mengalami kesulitan memberi label, jadi saya ingin tahu apakah ada cara yang lebih baik.

Giskard
sumber
1
Jika Anda menganggap LaTeX sebagai "bahasa pemrograman tingkat tinggi yang serupa", Anda mungkin menemukan jawaban untuk pertanyaan ini di TeX.SE (dan pertanyaan terkait lainnya di sana) berguna.
Ilmari Karonen

Jawaban:

6

Mathematica memiliki kemampuan membangun grafik dan menggambar.

Jadi, jika Anda membuat grafik dalam Mathematica, maka Anda dapat memplotnya menggunakan pengaturan yang Anda pilih.

Di Mathematica, Anda mungkin menggunakan TreeGraph sebagai cara untuk membuat grafik, dan TreePlot sebagai cara untuk merencanakannya. Sebagai contoh, kode berikut menghasilkan pohon dengan node yang dilabeli oleh koordinat dan memiliki format yang mirip dengan yang Anda inginkan:

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]

masukkan deskripsi gambar di sini

Juga, perhatikan bahwa ada paket grafis seperti TikZ di Tex yang memiliki kemampuan menggambar grafik yang sangat kuat. TikZ sebagian besar digunakan di lingkungan unix, dan tidak akan menyimpan struktur data atau melakukan perhitungan seperti Mathematica. Ini murni kemampuan menggambar grafis.

Grafik yang Anda gunakan sebagai ilustrasi memiliki font yang biasanya digunakan dalam TeX, sehingga mungkin diproduksi dengan TikZ atau paket TeX lainnya. Jika Anda ingin persamaan Mathematica terlihat seperti itu, Anda dapat menggunakan fungsi TraditionalForm, atau secara eksplisit menentukan font Computer Modern.

Lassie Fair
sumber
7

LaTeX dengan forest

The forestpaket LaTeX memungkinkan Anda untuk menggambar pohon permainan dengan sintaks cukup sederhana. Setelah menyalin template yang telah ditentukan ke dalam pembukaan LaTeX, seseorang dapat membangun pohon permainan menggunakan []sintaks bersarang , kemudian program menangani penempatan / spacing / etc node.

  • pro: kemampuan penyesuaian (Anda dapat membuat anotasi struktur permainan sesuai keinginan Anda) dan konsistensi font / gaya
  • kontra: memasukkan elemen pohon permainan (nama pemain / tindakan, hadiah, set info) masih agak manual, terutama jika pohonnya besar; dan kurva belajar yang agak curam jika Anda belum terbiasa dengan paket TikZ

Berikut ini contoh dari forestmanual ("Pohon keputusan" di Bagian 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}

masukkan deskripsi gambar di sini

Penjelajah Teori Game

The teori permainan explorer dikembangkan oleh beberapa orang di LSE. Ini memungkinkan pengguna untuk memasukkan game bentuk-matriks atau membuat game bentuk yang luas melalui GUI. Tampaknya juga mampu mengkonversi antara permainan bentuk normal dan luas. Selain itu, perangkat lunak ini dilengkapi dengan pemecah yang mencari Nash equilibria dari game yang dimasukkan.

  • pro: GUI; pemecah; tidak perlu untuk instalasi lokal; (terbatas) kemampuan penyesuaian
  • kontra: tidak ada dukungan untuk penjelasan; font / style inconsistency dengan sisa dokumen

Tangkapan layar: masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Herr K.
sumber
3

Jika Anda menggunakan LaTeX, Anda juga dapat menggambar pohon permainan dengan istgame paket, yang didasarkan pada TikZ.

Manual ini berisi banyak contoh dengan kode lengkap termasuk:

  • pohon permainan ke segala arah: ke bawah, ke atas, ke timur, -45 derajat, dll.
  • memberi label pada pemain, label aksi, dan hadiah
  • simpul keputusan, simpul peluang, simpul terminal
  • berbagai set informasi
  • berbagai panah pada cabang (induksi mundur)
  • berbagai tindakan lanjutan
  • subgame
  • game pensinyalan

Dengan istgamepaket itu, Anda dapat menggambar pohon permainan seperti menggambarnya dengan tangan.

masukkan deskripsi gambar di sini

\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}
InSung Cho
sumber
Ini bagus, terima kasih!
Giskard
1

masukkan deskripsi gambar di sini

Saya telah menggunakan paket LaTeX dengan tikz. Kode berikut digunakan untuk menghasilkan Game Centepede ini:

\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}

Ini adalah contoh lain:

masukkan deskripsi gambar di sini

Kode untuk permainan di atas adalah:

\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}
Amit
sumber
1

Hanya untuk kenyamanan Anda

Jika Anda tertarik dengan istgamepaket ini, Anda bisa melakukan ini (untuk menggambar contoh Amit):

Untuk pertandingan kelabang:

masukkan deskripsi gambar di sini

\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}

Struktur pohon itu sendiri mudah untuk digambarkan.

masukkan deskripsi gambar di sini

\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}


Untuk contoh lain:

masukkan deskripsi gambar di sini

\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}

Sekali lagi, struktur pohon mudah untuk digambarkan.

masukkan deskripsi gambar di sini

\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}

(TAMBAH) Jika Anda ingin pohon berada di timur :

masukkan deskripsi gambar di sini

\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}
InSung Cho
sumber