Oyun teorisi için görselleştirme araçları: Oyun ağaçları


12

Sıralı bir oyunu 'elle' çizmenin birçok yolu vardır. Oyunu çizerek şunu kastediyorum:

resim açıklamasını buraya girin

Oyuncuların karar noktalarını, mevcut eylemleri ve getirilerini göstermek.

Bunu R veya benzer bir üst düzey programlama dilinde yapabilmemin bir yolu var mı? Kesin olmak gerekirse: Geometrik denklemler çizmek istemiyorum, bir yapı tanımlamak istiyorum (oyuncular, puanlar, bağlantılar, kazançlar) ve programın onu çizmesini istiyorum.

Şu anda 'igraph' paketine göz atıyorum ama etiketleme konusunda bazı zorluklar yaşıyorum, bu yüzden daha iyi bir yol olup olmadığını merak ediyorum.


1
LaTeX'in "benzer bir üst düzey programlama dili" olduğunu düşünüyorsanız , TeX.SE (ve diğer ilgili sorular) için bu sorunun yanıtlarını yararlı bulabilirsiniz.
Ilmari Karonen

Yanıtlar:


6

Mathematica grafik oluşturma ve çizim yeteneğine sahiptir.

Grafiği Mathematica'da oluşturduysanız, seçtiğiniz ayarları kullanarak grafiği çizebilirsiniz.

Mathematica'da, grafiği oluşturmak için TreeGraph'ı ve grafiği çizmenin bir yolu olarak TreePlot'u kullanabilirsiniz. Örneğin, aşağıdaki kod, düğümleri koordinatla etiketlenmiş ve istediğiniz biçime benzer bir ağaç oluşturur:

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]

resim açıklamasını buraya girin

Ayrıca, TikZ gibi Tex'te çok güçlü grafik çizim yeteneğine sahip grafik paketler olduğunu unutmayın. TikZ çoğunlukla unix ortamlarında kullanılır ve veri yapılarını saklamaz veya Mathematica gibi hesaplamalar yapmaz. Tamamen bir grafik çizim yeteneğidir.

Resim olarak kullandığınız grafik, genellikle TeX'te kullanılan yazı tipine sahiptir, bu nedenle muhtemelen TikZ veya başka bir TeX paketi ile üretilmiştir. Bir Mathematica denkleminin böyle görünmesini istiyorsanız, TraditionalForm işlevini kullanabilir veya Bilgisayar Modern yazı tipini açıkça belirleyebilirsiniz.


8

İle LaTeX forest

forestLaTeX paketi oldukça basit bir sözdizimi ile oyun ağaçları çizebiliriz. Önceden ayarlanmış bir şablonu LaTeX önsözüne kopyaladıktan []sonra, iç içe geçmiş bir sözdizimi kullanarak oyun ağacı oluşturulabilir , daha sonra program düğüm yerleşimi / aralığı / vb.

  • artıları: özelleştirilebilirlik (oyun ağacına istediğiniz şekilde açıklama ekleyebilirsiniz) ve yazı tipi / stil tutarlılığı
  • eksileri: oyun ağacı öğelerinin (oyuncu / aksiyon adları, kazançlar, bilgi setleri) girilmesi, özellikle ağaç büyükse, yine de biraz manueldir; ve zaten TikZ paketini bilmiyorsanız biraz dik bir öğrenme eğrisi

forestEl kitabından bir örnek (Bölüm 5.1'deki "Karar ağacı"):

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

resim açıklamasını buraya girin

Oyun Teorisi Araştırıcısı

Oyun teorisi kaşif LSE'deki birkaç kişi tarafından geliştirilmiştir. Kullanıcıların bir GUI aracılığıyla matris form oyunları girmesine veya kapsamlı form oyunları oluşturmasına izin verir. Ayrıca normal ve yaygın form oyunları arasında dönüştürme yeteneğine sahip görünüyor. Ek olarak, yazılım, girilen oyunun Nash dengesini arayan bir çözücü ile birlikte gelir.

  • artıları: GUI; çözücü; yerel kuruluma gerek yoktur; (sınırlı) özelleştirilebilirlik
  • eksileri: ek açıklama desteği yok; belgenin geri kalanıyla yazı tipi / stil tutarsızlığı

Ekran görüntüleri: resim açıklamasını buraya girin

resim açıklamasını buraya girin


4

LaTeX kullanıyorsanız istgame, TikZ tabanlı paket ile oyun ağaçları da çizebilirsiniz .

Kılavuz tam kodları içeren birçok örnek içermektedir:

  • herhangi bir yönde oyun ağaçları: aşağı, yukarı, doğu, -45 derece, vb.
  • oyuncuları, aksiyon etiketlerini ve getirileri etiketleme
  • karar düğümleri, şans düğümleri, terminal düğümleri
  • çeşitli bilgi setleri
  • dallarda çeşitli oklar (geriye dönük çıkarım)
  • çeşitli eylem sürekliliği
  • subgames
  • signaling oyunları

istgamePaket ile oyun ağaçlarını elle çizdiğiniz gibi çizebilirsiniz.

resim açıklamasını buraya girin

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

Harika, teşekkürler!
Giskard

1

resim açıklamasını buraya girin

Ben tikz paketi ile LaTeX kullandım. Bu Centepede Oyununu oluşturmak için aşağıdaki kod kullanılır:

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

İşte başka bir örnek:

resim açıklamasını buraya girin

Yukarıdaki oyun için kod:

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

1

Sadece rahatınız için

istgamePaketle ilgileniyorsanız , bunu yapabilirsiniz (Amit'in örneklerini çizmek için):

Kırkayak oyunu için:

resim açıklamasını buraya girin

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

Ağaç yapısının kendisini çizmek kolaydır.

resim açıklamasını buraya girin

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


Başka bir örnek için:

resim açıklamasını buraya girin

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

Yine, ağaç yapısının çizilmesi basittir.

resim açıklamasını buraya girin

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

(EKLENDİ) Ağacın doğuya doğru olmasını istiyorsanız :

resim açıklamasını buraya girin

\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}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.