Die Spieltheorie ist ein faszinierendes Gebiet und ein Kapitel daraus sind die sogenannten Zwei-Personen-Nullsummenspiele. Ein Nullsummenspiel ist dadurch charakterisiert, daß der Gewinn des einen Spielers zu Lasten des anderen Spielers und umgekehrt geht. Wird das Spiel nur genügend - unendlich - oft wiederholt, so gehen Gewinn und Verlust der beiden Spieler gegen Null. Der Reiz besteht nun darin, daß das Spiel eben nicht unendlich mal wiederholt wird, sondern nur endlich oft. Dadurch gibt es sehr wohl einen Gewinner und einen Verlierer.
Das Spielfeld ist hier eine Matrix, deren einzelne Elemente mit verschiedenen positiven und negativen Zahlen belegt sind, die per Zufallszahlen-Generator ermittelt werden. Der Spieler sucht sich nun eine Zeile dieser Matrix aus, die für ihn günstig ist. Entsprechend ermittelt der HP-41CX eine Spalte. Ist das durch Zeile und Spalte definierte Element positiv, so gewinnt der Spieler diese Runde. Ist es negativ, gewinnt der HP-41CX. Ist das Element Null, so geht das Spiel unentschieden aus.
In der hier von mir angewendeten einfachen Methode kann das Spiel durchaus einen von Null verschiedenen Wert annehmen. Der Wert des Spieles ergibt sich daraus, wer gewänne, wenn das Spiel mit dieser Matrix unendlich oft wiederholt würde - im Idealfall niemand, weil es genau dann ein Nullsummenspiel wäre.
Ein Beispiel zur Verdeutlichung :
Gegeben sei folgende Matrix :
In diesem Fall wäre Zeile 1 für den Spieler vorteilhaft, da er einmal gewinnt ([z1, s1] = 1) und einmal das Spiel unentschieden ausgeht ([z1, s2] = 0). Wählt er hingegen Zeile 2, so gewinnt er ebenfalls dann, wenn der Gegner Spalte 1 wählt ([z2, s1] = 1), verliert aber, wenn die Wahl seines Gegenübers auf Spalte 2 fällt ([z2, s2] = -1).
Aus der Sicht des anderen Spielers ist Spalte 2 die für ihn günstigere Wahl, da er dann einmal unentschieden spielt ([z1, s2] = 0) bzw. gewinnt ([z2, s2] = -1). Spalte 1 hingegen ist für ihn unannehmbar, da er auf jeden Fall verliert.
Für obiges Beispiel ist es also für den ersten Spieler günstig, Zeile 1 zu wählen, für den anderen Spieler ist Spalte 2 die bessere Variante. Treffen beide Spieler entsprechend diesen Überlegungen ihre Wahl, so geht das Spiel unentschieden aus ([z1, s2] = 0). Diese Matrix begünstigt Spieler 1, da er in zwei Fällen gewinnt, einmal unentschieden spielt und nur einmal verliert - entsprechend ist der andere Spieler benachteiligt.
Die obige Matrix ist eine der einfachsten denkbaren Beispiele. Wesentlich interessanter wird es natürlich, wenn zum einen die Matrix größer wird und zum anderen die Beträge der Zahlen ebenfalls einen größeren Umfang annehmen. Dann ist nicht mehr so einfach zu entscheiden, welche Zeile bzw. Spalte am günstigsten ist bzw. was der andere Spieler wählt !
Interessanterweise gibt es immer eine optimale Strategie, um diese Problemstellung zu lösen (und das Programm beherrscht diese natürlich ;-) ) ! Bemerkenswert ist, daß dabei auch eine Wahl getroffen werden kann, die auf den ersten Blick als ungünstig einzustufen ist. Aber es muß natürlich auch einkalkuliert werden, was der Gegenspieler wählen könnte und wie ihm gegebenenfalls ein Strich durch die Rechnung gemacht werden kann ! ;-)
Ich möchte an dieser Stelle nicht weiter auf die Theorie der Zwei-Personen-Nullsummenspiele eingehen. (Wenn ich einmal viel Zeit haben sollte, schreibe ich ein paar Zeilen dazu. ;-) ) Es gibt sehr viel Literatur zu diesem Thema. Stellvertretend sei auf folgendes Buch verwiesen : G. Owen, Spieltheorie, Springer Verlag.
Spielablauf :
Nach Programmstart wird zunächst die erste Matrix erzeugt. In der Anzeige erscheint 1. MATRIX und danach 1. ZEILE:. Nun werden die einzelnen Elemente dieser Zeile, durch Kommata voneinander getrennt, angezeigt. Diese Zahlen müssen vom Spieler auf einem Blatt Papier notiert werden, da die Anzeige ja nur eine Zeile anzeigen kann. ;-) Ist die Matrix vollständig, erscheint nach einem akustischen Signal FERTIG in der Anzeige.
Nun berechnet der HP-41CX die Spalte, die für ihn am günstigsten ist und der Spieler sucht sich entsprechend eine Zeile der Matrix aus. Nach einem erneuten akustischen Signal fordert der HP-41CX zur Eingabe der Zeile auf. Dann gibt er bekannt, welche Spalte er berechnet hat und danach das Element, welches durch Zeile und Spalte bestimmt wird. Ist der Wert dieses Elementes positiv, so gewinnt der Spieler diese Runde. Ist der Wert Null, so erscheint REMIS in der Anzeige, diese Runde ging unentschieden aus. Ist der Wert des Elementes hingegen negativ, so gewinnt der HP-41CX. In letzterem Fall ist das Spiel sofort beendet. Der HP-41CX zeigt nun noch an, wieviele Versuche der Spieler hatte und bis zu welcher Matrix er gelangt ist.
Im ersten oder zweiten Fall wird der Spieler jetzt gefragt, ob er weiterspielen möchte : auf die Meldung WEITER ? J/N muß der Spieler ein J eingeben, um das Spiel fortzusetzen. Bei einem N wird das Spiel beendet. War der Spielausgang unentschieden, so wird nun eine Matrix gleichen Schwierigkeitsgrades erzeugt. Hatte der Spieler die vorherige Runde gewonnen, so wird der Schwierigkeitsgrad erhöht. Es gibt insgesamt 21 Schwierigkeitsgrade für die Matrizen.
ERWSP muß das erste Programm im Erweiterten Speicher sein (bei CAT 4 muß ERWSP zuerst angezeigt werden). Es müssen keine Adressen von Hand angesprungen werden !
Nachdem ERWSP in den erweiterten Speicher geladen wurde, kann das Hauptprogramm SPIEL9 geladen werden. Vor Programmstart muß SIZE 122 ausgeführt werden. SPIEL9 legt im erweiterten Speicher zusätzlich die Datendatei DATA mit 28 Registern Größe an, die bei Programmende wieder gelöscht wird.
Programmlisting ERWSP :
01 LBL "ERWSP" 02 RCL 04 03 2 04 XY? ungleich 05 GTO 01 06 ISG 04 07 "" (Leeranweisung) 08 GTO "HP" 09 LBL 01 10 X<>Y 11 3 12 XY? ungleich 13 GTO 01 14 RCL 07 15 2 16 X=Y? 17 GTO 02 18 ISG 04 19 "" (Leeranweisung) 20 GTO "HP" 21 LBL 02 22 ISG 07 23 "" (Leeranweisung) 24 5 25 STO 06 26 GTO "HP" 27 LBL 01 28 X<>Y 29 4 30 XY? ungleich 31 GTO 01 32 RCL 07 33 3 34 X=Y? 35 GTO 02 36 ISG 04 37 "" (Leeranweisung) 38 5 39 STO 06 40 3 41 STO 07 42 GTO "HP" 43 LBL 02 44 ISG 07 45 "" (Leeranweisung) 46 7 47 STO 06 48 GTO "HP" 49 LBL 01 50 X<>Y 51 5 52 XY? ungleich 53 GTO 01 54 RCL 07 55 3 56 X=Y? 57 GTO 02 58 ISG 04 59 "" (Leeranweisung) 60 3 61 STO 07 62 5 63 STO 06 64 GTO "HP" 65 LBL 02 66 ISG 07 67 "" (Leeranweisung) 68 7 69 STO 06 70 GTO "HP" 71 LBL 01 72 X<>Y 73 6 74 XY? ungleich 75 GTO 11 76 RCL 07 77 3 78 X=Y? 79 GTO 01 80 X<>Y 81 4 82 X=Y? 83 GTO 02 84 ISG 04 85 "" (Leeranweisung) 86 3 87 STO 07 88 5 89 STO 06 90 GTO "HP" 91 LBL 02 92 ISG 07 93 "" (Leeranweisung) 94 9 95 STO 06 96 GTO "HP" 97 LBL 01 98 ISG 07 99 "" (Leeranweisung) 100 7 101 STO 06 102 GTO "HP" 103 LBL 11 104 X<>Y 105 7 106 XY? ungleich 107 GTO 11 108 RCL 07 109 3 110 X=Y? 111 GTO 01 112 X<>Y 113 4 114 X=Y? 115 GTO 02 116 ISG 04 117 "" (Leeranweisung) 118 4 119 STO 07 120 7 121 STO 06 122 GTO "HP" 123 LBL 02 124 ISG 07 125 "" (Leeranweisung) 126 9 127 STO 06 128 GTO "HP" 129 LBL 01 130 ISG 07 131 "" (Leeranweisung) 132 7 133 STO 06 134 GTO "HP" 135 LBL 11 136 X<>Y 137 8 138 XY? ungleich 139 GTO 01 140 RCL 07 141 4 142 X=Y? 143 GTO 02 144 ISG 04 145 "" (Leeranweisung) 146 4 147 STO 07 148 7 149 STO 06 150 GTO "HP" 151 LBL 02 152 ISG 07 153 "" (Leeranweisung) 154 9 155 STO 06 156 GTO "HP" 157 LBL 01 158 X<>Y 159 9 160 XY? ungleich 161 GTO 11 162 RCL 07 163 4 164 X=Y? 165 GTO 01 166 X<>Y 167 5 168 X=Y? 169 GTO 02 170 ISG 04 171 "" (Leeranweisung) 172 4 173 STO 07 174 7 175 STO 06 176 GTO "HP" 177 LBL 02 178 ISG 07 179 "" (Leeranweisung) 180 11 181 STO 06 182 GTO "HP" 183 LBL 01 184 ISG 07 185 "" (Leeranweisung) 186 9 187 STO 06 188 GTO "HP" 189 LBL 11 190 RCL 07 191 4 192 X=Y? 193 GTO 01 194 X<>Y 195 5 196 X=Y? 197 GTO 02 198 TONE 0 199 TONE 3 200 TONE 5 201 TONE 7 202 TONE 9 203 "GRATULATION" 204 AVIEW 205 PSE 206 PSE 207 GTO "ENDE" 208 LBL 02 209 ISG 07 210 "" (Leeranweisung) 211 11 212 STO 06 213 GTO "HP" 214 LBL 01 215 ISG 07 216 "" (Leeranweisung) 217 9 218 STO 06 219 GTO "HP" 220 END
Programmlisting SPIEL9 (Hauptprogramm) :
01 LBL "SPIEL9" 02 "MATRIXSPIEL" 03 AVIEW 04 CLRG 05 CF 05 06 "DATA" 07 28 08 CRFLD 09 E 10 SEEKPT 11 11 12 SAVEX 13 X<>Y 14 STO 05 15 ISG X 16 "" (Leeranweisung) 17 STO 04 18 STO 07 19 ISG X 20 "" (Leeranweisung) 21 STO 06 22 FIX 0 23 CF 29 24 26 25 SEEKPT 26 TIME 27 E2 28 / 29 SAVEX 30 LBL "HP" 31 2,025 32 STO 10 33 LBL 14 34 RCL 10 35 SEEKPT 36 , 37 SAVEX 38 ISG 10 39 GTO 14 40 27 41 SEEKPT 42 GETX 43 ISG X 44 "" (Leeranweisung) 45 X<>Y 46 SEEKPT 47 X<>Y 48 SAVEX 49 SIGN 50 STO 08 51 RCL 05 52 CLA 53 " " (1 Leerzeichen) 54 ARCL X 55 ". MATRIX :" 56 AVIEW 57 RCL 04 58 X^2 59 LASTX 60 + 61 E1 62 + 63 E3 64 / 65 11 66 + 67 STO 09 68 RCL 04 69 E3 70 / 71 ISG X 72 STO 10 73 LBL 03 74 RCL 08 75 " " (1 Leerzeichen) 76 ARCL X 77 ". ZEILE :" 78 AVIEW 79 CLA 80 LBL 00 81 XEQ 16 82 RCL 06 83 MOD 84 ISG X 85 "" (Leeranweisung) 86 STO IND 09 87 RCL 07 88 - 89 ARCL X 90 LASTX 91 + 92 DSE X 93 "" (Leeranweisung) 94 RCL 08 95 15 96 + 97 , 98 SEEKPT 99 X<>Y 100 SAVEX 101 RCL Z 102 RCL 10 103 INT 104 XEQ 18 105 ISG 10 106 GTO 01 107 GTO 02 108 LBL 01 109 "," 110 ISG 09 111 GTO 00 112 LBL 02 113 TONE 5 114 AVIEW 115 ISG 08 116 "" (Leeranweisung) 117 ISG 09 118 SIGN 119 STO IND 09 120 RCL 04 121 ST- 10 122 STOP 123 ISG 09 124 GTO 03 125 BEEP 126 " FERTIG" 127 AVIEW 128 SIGN 129 STO 00 130 1,003 131 CLRGX 132 LBL 30 133 ISG 02 134 LBL 31 135 ISG 03 136 "" (Leeranweisung) 137 RCL 04 138 ISG X 139 "" (Leeranweisung) 140 RCL 03 141 X>Y? 142 GTO 40 143 RCL 04 144 RCL 02 145 X>Y? 146 GTO 40 147 RCL 03 148 XEQ 37 149 X<> Z 150 XEQ 37 151 E3 152 / 153 + 154 RCL 04 155 ISG X 156 "" (Leeranweisung) 157 E5 158 / 159 + 160 XEQ 39 161 RCL IND M 162 ST* 00 163 X=0? 164 GTO 31 165 1/X 166 RCL M 167 INT 168 XEQ 36 169 RDN 170 STO 01 171 XEQ 33 172 RCL 01 173 ST- 01 174 RCL 02 175 X=Y? 176 GTO 32 177 XEQ 35 178 RCL 00 179 CHS 180 STO 00 181 LBL 32 182 ISG 01 183 "" (Leeranweisung) 184 RCL 04 185 RCL 01 186 X>Y? 187 GTO 30 188 RCL 02 189 X=Y? 190 GTO 32 191 RCL 01 192 RCL 03 193 XEQ 37 194 RDN 195 RCL IND T 196 CHS 197 XEQ 34 198 GTO 32 199 LBL 33 200 XEQ 38 201 X<>Y 202 LBL 04 203 ST* IND Y 204 ISG Y 205 GTO 04 206 RTN 207 LBL 34 208 STO M 209 RDN 210 XEQ 38 211 X<>Y 212 XEQ 38 213 RCL M 214 SIGN 215 LBL 05 216 RDN 217 RCL IND Y 218 LAST X 219 * 220 ST+ IND Y 221 ISG Y 222 "" (Leeranweisung) 223 ISG Z 224 GTO 05 225 RTN 226 LBL 35 227 XEQ 38 228 X<>Y 229 XEQ 38 230 INT 231 E3 232 / 233 X<>Y 234 INT 235 + 236 RCL 04 237 ISG X 238 "" (Leeranweisung) 239 E6 240 / 241 + 242 REGSWAP 243 RTN 244 LBL 38 245 RCL 04 246 ISG X 247 "" (Leeranweisung) 248 * 249 11 250 + 251 RCL X 252 RCL 04 253 ISG X 254 "" (Leeranweisung) 255 ST- Z 256 SIGN 257 - 258 E3 259 / 260 + 261 RTN 262 LBL 36 263 11 264 - 265 RCL 04 266 ISG X 267 "" (Leeranweisung) 268 X<>Y 269 STO O (der Buchstabe O - keine Null) 270 X<>Y 271 MOD 272 ST- O 273 LASTX 274 ST/ O 275 CLX 276 X<> O 277 y<>Y 278 ISG Y 279 "" (Leeranweisung) 280 ISG X 281 "" (Leeranweisung) 282 RTN 283 LBL 37 284 X<> 04 285 ISG X 286 "" (Leeranweisung) 287 ST- 04 288 * 289 ST+ 04 290 X<> L 291 DSE X 292 X<> 04 293 E1 294 + 295 RTN 296 LBL 39 297 STO M 298 STO N 299 STO O 300 RCL IND X 301 ABS 302 ENTER^ 303 ENTER^ 304 RDN 305 LBL 07 306 CLX 307 RCL IND Z 308 ABS 309 X>Y? 310 GTO 01 311 R^ 312 X>Y? 313 GTO 02 314 RDN 315 LBL 06 316 ISG Z 317 GTO 07 318 X<>Y 319 R^ 320 RTN 321 LBL 01 322 X<>Y 323 CLX 324 RCL Z 325 STO M 326 GTO 06 327 LBL 02 328 CLX 329 RCL T 330 STO N 331 X<>Y 332 RDN 333 GTO 06 334 LBL 40 335 CLD 336 RCL 04 337 RCL X 338 E3 339 / 340 ISG X 341 STO 10 342 ISG Y 343 "" (Leeranweisung) 344 X<>Y 345 STO 09 346 LBL 08 347 RCL 09 348 RCL 10 349 INT 350 * 351 E1 352 + 353 RCL IND X 354 RCL 10 355 2 356 + 357 SEEKPT 358 X<>Y 359 SAVEX 360 LASTX 361 XEQ 19 362 + 363 2 364 SEEKPT 365 X<>Y 366 SAVEX 367 ISG 10 368 GTO 08 369 RCL 04 370 ST- 10 371 LBL 09 372 RCL 10 373 2 374 + 375 XEQ 19 376 LASTX 377 XEQ 19 378 X0? ungleich 379 1/X 380 * 381 RCL 10 382 2 383 + 384 SEEKPT 385 X<>Y 386 SAVEX 387 ISG 10 388 GTO 09 389 RCL 04 390 ST- 10 391 3 392 SEEKPT 393 GETX 394 GETX 395 GETX 396 GETX 397 XEQ 15 398 STO M 399 RDN 400 STO N 401 RDN 402 4 403 RCL 04 404 X<=Y? 405 GTO 02 406 - 407 CHS 408 E3 409 / 410 ISG X 411 STO 10 412 RDN 413 RCL N 414 RCL M 415 LBL 10 416 GETX 417 XEQ 15 418 ISG 10 419 GTO 10 420 GTO 01 421 LBL 02 422 R^ 423 R^ 424 RCL N 425 RCL M 426 LBL 01 427 E 428 STO 09 429 RDN 430 13 431 SEEKPT 432 RDN 433 SAVEX 434 RDN 435 SAVEX 436 RDN 437 SAVEX 438 XEQ 16 439 9 440 MOD 441 2 442 X<=Y? 443 GTO 01 444 15 445 SEEKPT 446 GETX 447 X<=0? 448 GTO 11 449 GTO 02 450 LBL 01 451 X<>Y 452 5 453 X<=Y? 454 GTO 01 455 LBL 11 456 14 457 SEEKPT 458 GETX 459 X>0? 460 GTO 02 461 LBL 01 462 13 463 SEEKPT 464 GETX 465 LBL 02 466 3 467 SEEKPT 468 X<>Y 469 LBL 12 470 GETX 471 X=Y? 472 GTO 13 473 RDN 474 ISG 09 475 "" (Leeranweisung) 476 GTO 12 477 LBL 13 478 BEEP 479 " ZEILE ?" 480 PROMPT 481 STO 10 482 FC?C 22 483 GTO 13 484 X<=0? 485 GTO 13 486 RCL 04 487 X<Y? 488 GTO 13 489 X<>Y 490 15 491 + 492 , 493 SEEKPT 494 X<>Y 495 SAVEX 496 " HP-41CX:" 497 AVIEW 498 PSE 499 " SPALTE " 500 ARCL 09 501 AVIEW 502 PSE 503 RCL 09 504 XEQ 17 505 ISG X 506 "" (Leeranweisung) 507 RCL 07 508 - 509 " [" 510 ARCL 10 511 "," 512 ARCL 09 513 "] = " 514 ARCL X 515 AVIEW 516 PSE 517 PSE 518 X<0? 519 GTO 20 520 BEEP 521 X=0? 522 GTO 01 523 " GRATULIERE" 524 GTO 02 525 LBL 01 526 " REMIS" 527 SF 05 528 LBL 02 529 AVIEW 530 PSE 531 AON 532 "WEITER ? J/N" 533 PROMPT 534 FS? 49 535 GTO 21 536 78 537 AOFF 538 ATOX 539 X=Y? 540 GTO "ENDE" 541 FS?C 05 542 GTO "HP" 543 ISG 05 544 "" (Leeranweisung) 545 " " (BE) 546 ASTO b 547 LBL 16 548 26 549 SEEKPT 550 GETX 551 R-D 552 FRC 553 R-D 554 FRC 555 FS? 06 556 E^X 557 FRC 558 26 559 SEEKPT 560 X<>Y 561 SAVEX 562 E6 563 * 564 INT 565 RTN 566 LBL 17 567 DSE X 568 "" (Leeranweisung) 569 E 570 XEQ 19 571 X<>y 572 Y^X 573 , 574 XEQ 19 575 XEQ 19 576 X<>Y 577 ST/ Y 578 X<>Y 579 INT 580 E 581 XEQ 19 582 MOD 583 RTN 584 LBL 18 585 XEQ 17 586 X<>Y 587 ST* Z 588 * 589 , 590 XEQ 19 591 XEQ 19 592 X<>Y 593 - 594 + 595 , 596 XEQ 19 597 SEEKPT 598 X<>Y 599 SAVEX 600 RTN 601 LBL 19 602 SEEKPT 603 CLX 604 GETX 605 RTN 606 LBL 21 607 BEEP 608 " BATTERIE" 609 SF 11 610 OFF 611 AVIEW 612 STOP 613 LBL 15 614 X<Y? 615 X<>Y 616 R^ 617 X<Y? 618 X<>Y 619 R^ 620 X<Y? 621 X<>Y 622 RDN 623 X<Y? 624 X<>Y 625 RDN 626 X<Y? 627 X<>Y 628 R^ 629 X<Y? 630 X<>Y 631 R^ 632 RTN 633 LBL 20 634 TONE 8 635 TONE 7 636 TONE 5 637 TONE 3 638 TONE 2 639 TONE 0 640 TONE 10 641 TONE 1 642 " BEDAURE," 643 PSE 644 AVIEW 645 PSE 646 LBL "ENDE" 647 " SPIELENDE" 648 AVIEW 649 27 650 SEEKPT 651 GETX 652 CLA 653 ARCL X 654 " VERSUCH" 655 E 656 XY? ungleich 657 "E" 658 RCL 05 659 PSE 660 AVIEW 661 " " (1 Leerzeichen) 662 ARCL X 663 ". MATRIX" 664 PSE 665 AVIEW 666 FIX 4 667 SF 29 668 "DATA" 669 PURFL 670 CF 06 671 CLA 672 CLRG 673 CLST 674 END
Zurück zu Ausgewählte (Spiel-)Programme für den HP-41CX
Zurück zu Naturwissenschaften und mathematische Spielereien
Kai Schröder, 6.6.2001