เครื่องมือสร้างภาพข้อมูลสำหรับทฤษฎีเกม: แผนผังเกม


12

มีหลายวิธีในการวาดเกมต่อเนื่อง 'ด้วยมือ' โดยการวาดเกมฉันหมายถึงสิ่งนี้:

ป้อนคำอธิบายรูปภาพที่นี่

แสดงคะแนนการตัดสินใจของผู้เล่นการกระทำที่มีอยู่และการจ่ายเงิน

มีวิธีใดบ้างที่ฉันสามารถทำได้ใน R หรือภาษาการเขียนโปรแกรมระดับสูงที่คล้ายกัน? เพื่อความแม่นยำ: ฉันไม่ต้องการพล็อตสมการทางเรขาคณิตฉันต้องการกำหนดโครงสร้าง (ผู้เล่นคะแนนการเชื่อมต่อการจ่ายเงิน) และกำหนดโปรแกรม

ฉันกำลังเรียกดูแพคเกจ 'igraph' แต่ฉันมีปัญหาในการติดฉลากดังนั้นฉันจึงสงสัยว่ามีวิธีที่ดีกว่านี้หรือไม่


1
หากคุณคิดว่า LaTeX เป็น "ภาษาการเขียนโปรแกรมระดับสูงที่คล้ายกัน" คุณอาจพบคำตอบสำหรับคำถามนี้ใน TeX.SE (และคำถามอื่น ๆ ที่เกี่ยวข้อง) ที่เป็นประโยชน์
Ilmari Karonen

คำตอบ:


6

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]

ป้อนคำอธิบายรูปภาพที่นี่

นอกจากนี้โปรดทราบว่ามีแพ็คเกจกราฟิกเช่น TikZ ใน Tex ซึ่งมีความสามารถในการวาดกราฟที่มีประสิทธิภาพมาก TikZ ส่วนใหญ่จะใช้ในสภาพแวดล้อม unix แม้ว่าและจะไม่เก็บโครงสร้างข้อมูลหรือทำการคำนวณเช่น Mathematica มันเป็นความสามารถในการวาดภาพกราฟิกอย่างหมดจด

กราฟที่คุณใช้เป็นภาพประกอบโดยทั่วไปจะใช้แบบอักษรใน TeX ดังนั้นจึงอาจสร้างด้วย TikZ หรือแพ็คเกจอื่นของ TeX ถ้าคุณต้องการให้สมการทางคณิตศาสตร์ดูเหมือนว่าคุณสามารถใช้ฟังก์ชัน TraditionalForm หรือระบุแบบอักษรคอมพิวเตอร์ที่ทันสมัยอย่างชัดเจน


7

น้ำยางด้วย forest

forestแพคเกจของน้ำยางช่วยให้คุณวาดต้นไม้เกมที่มีไวยากรณ์ง่ายสวย หลังจากคัดลอกเทมเพลตที่ตั้งค่าล่วงหน้าไว้ในคำนำ LaTeX แล้วสามารถสร้างแผนผังเกมโดยใช้[]ไวยากรณ์ที่ซ้อนกันจากนั้นโปรแกรมจะดูแลการวางโหนด / การเว้นวรรค / ฯลฯ

  • ข้อดี: ความสามารถปรับแต่งได้ (คุณสามารถใส่คำอธิบายประกอบแผนผังเกมในแบบที่คุณต้องการ) และความสอดคล้องของตัวอักษร / สไตล์
  • ข้อเสีย: การป้อนองค์ประกอบของเกม (ชื่อผู้เล่น / แอ็คชั่น, การจ่ายเงิน, ชุดข้อมูล) ยังคงเป็นคู่มือโดยเฉพาะอย่างยิ่งถ้าต้นไม้มีขนาดใหญ่; และช่วงการเรียนรู้ที่ค่อนข้างสูงชันหากคุณยังไม่คุ้นเคยกับแพ็คเกจ TikZ

นี่คือตัวอย่างจาก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}

ป้อนคำอธิบายรูปภาพที่นี่

Game Theory Explorer

สำรวจทฤษฎีเกมจะถูกพัฒนาโดยคนไม่กี่คนที่ LSE อนุญาตให้ผู้ใช้ป้อนเกมในรูปแบบเมทริกซ์หรือสร้างเกมในรูปแบบที่กว้างขวางผ่านทาง GUI ดูเหมือนว่ายังสามารถแปลงระหว่างเกมปกติและเกมที่มีเนื้อหาครอบคลุม นอกจากนี้ซอฟต์แวร์ยังมาพร้อมกับตัวแก้ปัญหาที่ค้นหาสมดุลของแนชของเกมที่ป้อนเข้า

  • ข้อดี: GUI; แก้; ไม่จำเป็นต้องติดตั้งในเครื่อง (จำกัด ) การปรับแต่งได้
  • ข้อเสีย: ไม่มีการสนับสนุนคำอธิบายประกอบ; แบบอักษร / ลักษณะไม่สอดคล้องกับส่วนที่เหลือของเอกสาร

ภาพหน้าจอ: ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


3

หากคุณใช้ LaTeX คุณสามารถวาดistgameแผนผังเกมด้วยแพ็คเกจซึ่งใช้ TikZ

คู่มือมีตัวอย่างมากมายพร้อมรหัสเต็ม ได้แก่ :

  • ต้นไม้เกมในทุกทิศทาง: ลง, ขึ้นไปทางตะวันออก, -45 องศา ฯลฯ
  • ผู้เล่นการติดฉลากป้ายการกระทำและการจ่ายผลตอบแทน
  • โหนดการตัดสินใจ, โหนดโอกาส, โหนดเทอร์มินัล
  • ชุดข้อมูลต่าง ๆ
  • ลูกศรต่าง ๆ บนกิ่งไม้ (เหนี่ยวนำหลัง)
  • การกระทำต่าง ๆ ที่ต่อเนื่องกัน
  • subgames
  • เกมส่งสัญญาณ

ด้วย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}

นี่มันเยี่ยมมากขอบคุณ!
Giskard

1

ป้อนคำอธิบายรูปภาพที่นี่

ฉันใช้ 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}

1

เพียงเพื่อความสะดวกของคุณ

หากคุณสนใจistgameแพ็คเกจคุณสามารถทำสิ่งนี้ได้ (เพื่อวาดตัวอย่างของ Amit):

สำหรับเกมตะขาบ:

ป้อนคำอธิบายรูปภาพที่นี่

\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}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.