Optimizing Time for Eigenvector Calculation
Total Page:16
File Type:pdf, Size:1020Kb
Optimizing Time For Eigenvector Calculation [to find better moves during the Fuseki of Go] Bachelor-Thesis von Simone Wälde aus Würzburg Tag der Einreichung: 1. Gutachten: Manja Marz 2. Gutachten: Johannes Fürnkranz Fachbereich Informatik Knowlegde Engineering Group Optimizing Time For Eigenvector Calculation [to find better moves during the Fuseki of Go] Vorgelegte Bachelor-Thesis von Simone Wälde aus Würzburg 1. Gutachten: Manja Marz 2. Gutachten: Johannes Fürnkranz Tag der Einreichung: Bitte zitieren Sie dieses Dokument als: URN: urn:nbn:de:tuda-tuprints-12345 URL: http://tuprints.ulb.tu-darmstadt.de/1234 Dieses Dokument wird bereitgestellt von tuprints, E-Publishing-Service der TU Darmstadt http://tuprints.ulb.tu-darmstadt.de [email protected] Die Veröffentlichung steht unter folgender Creative Commons Lizenz: Namensnennung – Keine kommerzielle Nutzung – Keine Bearbeitung 2.0 Deutschland http://creativecommons.org/licenses/by-nc-nd/2.0/de/ Erklärung zur Bachelor-Thesis Hiermit versichere ich, die vorliegende Bachelor-Thesis ohne Hilfe Dritter nur mit den angegebenen Quellen und Hilfsmitteln angefertigt zu haben. Alle Stellen, die aus Quellen entnommen wurden, sind als solche kenntlich gemacht. Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungs- behörde vorgelegen. Darmstadt, den November 30, 2016 (S. Wälde) Contents 1 Abstract 6 2 Introduction 7 2.1 Introduction to Go . 7 2.1.1 History of the Game . 7 2.1.2 Rules of the Game . 8 2.2 Rating and Ranks in Go . 11 2.2.1 EGF Rating Formula . 11 2.2.2 Online Servers . 12 2.3 Different Approaches to Computer Go . 12 2.3.1 Pattern Recognition . 12 2.3.2 Monte Carlo Tree Search . 13 2.3.3 Neural Networks . 14 2.4 Composition of this Thesis . 15 3 Introducing the Heuristic and its Underlying Algorithm 16 3.1 Explanation of the Algorithm . 16 3.2 Mathematical Background of the Algorithm . 17 3.3 The Purpose of Eigenvector Computation . 19 3.4 Demonstration of the Algorithm . 20 4 Perfomance Comparison of Eigenvector Functions 24 4.1 Direct Methods . 25 4.1.1 Performance of eigen() ................................................ 25 4.1.2 Performance of the EigenSolver ........................................... 26 4.1.3 Performance of gsl_eigen_symmv() ......................................... 27 4.1.4 Performace of SciPy and NumPy Routines . 28 4.1.5 Overview and Discussion of Direct Methods . 31 4.2 Iterative Methods . 32 4.2.1 Performance of the Arnoldi and Lanczos Method . 32 4.2.2 Performance of the Spectral Shift Power Method . 34 4.2.3 Performance of the Inverse Power Method . 35 4.2.4 Overview and Discussion of Iterative Methods . 40 4.3 Conclusion on Performance Tests . 41 5 Testing the Heuristic in Pachi 42 5.1 About Pachi . 42 5.2 Testing Pachi* against Pachi . 42 5.3 First Tests . 43 5.3.1 First Test without modifications . 43 5.3.2 Test 2: Adding a Phantom Function to Pachi . 43 5.3.3 Test 3: Confining the Algorithm to Fuseki . 44 5.3.4 Test 4: Without p1 . 44 5.3.5 Conclusion on the First Tests . 44 5.4 Additional Tests: Varying Equivalent Experience . 45 5.4.1 Eqex Formula inspired by Pachi’s Pattern Prior . 45 5.4.2 Enhancing the Formula . 46 5.5 Conclusion on Pachi . 47 6 Conclusion 48 Appendices 49 A Performance Files of eigen() 50 A.1 matrix A . 50 A.2 matrix B . 50 2 A.3 matrix C . 50 B Performance Files of gsl_eigen_symmv() 51 B.1 matrix A . 51 B.2 matrix B . 51 B.3 matrix C . 51 C Performance Files of Naive Self Implementation 52 C.1 matrix A . 52 C.2 matrix B . 52 C.3 matrix C . 52 D Performance Files of numpy.linalg.eigh() 53 D.1 matrix A . 53 D.2 matrix B . 53 D.3 matrix C . 53 E Performance Files of scipy.linalg.eig 54 E.1 matrix A . 54 E.2 matrix B . 54 E.3 matrix C . 54 F Performance Files of scipy.linalg.eigh() 55 F.1 matrixA.............................................................. 55 F.2 matrixB.............................................................. 55 F.3 matrixC.............................................................. 55 G Performance Files of EigenSolver 56 G.1 matrix A . 56 G.2 matrix B . 56 G.3 matrix C . 56 H Performance Files of Naive Self Implementation 57 H.1 matrix A . 57 H.2 matrix B . 57 H.3 matrix C . 57 I Performance Files of Spectral Shift using Eigen 58 I.1 matrix A . ..