Category: Programming
Go engine
Mastering the game of Go with deep neural networks and tree search
David Silver, Aja Huang1, Chris J. Maddison, Arthur Guez, Laurent Sifre1, George van den Driessche, Julian Schrittwieser, Ioannis Antonoglou, Veda Panneershelvam, Marc Lanctot, Sander Dieleman, Dominik Grewe,
John Nham, Nal Kalchbrenner, Ilya Sutskever, Timothy Lillicrap, Madeleine Leach1, Koray Kavukcuoglu,
Thore Graepel1, Demis Hassabis
The game of Go has long been viewed as the most challenging of classic games for artificial intelligence owing to its enormous search space and the difficulty of evaluating board positions and moves. Here we introduce a new approach to computer Go that uses ‘value networks’ to evaluate board positions and ‘policy networks’ to select moves. These deep neural networks are trained by a novel combination of supervised learning from human expert games, and reinforcement learning from games of selfplay. Without any lookahead search, the neural networks play Go at the level of stateoftheart Monte Carlo tree search programs that simulate thousands of random games of selfplay. We also introduce a new search algorithm that combines Monte Carlo simulation with value and policy networks. Using this search algorithm,our program AlphaGo achieved a 99.8% winning rate against other Go programs, and defeated the human European Go champion by 5 games to 0. This is the first time that a computer program has defeated a human professional player in the fullsized game of Go, a feat previously thought to be at least a decade away.
Continue reading “Go engine”
4D Rubik’s cube
This video is an introduction to the mysterious 4D Rubik’s cube. Here my main focus is on revealing some ingenious tricks that will allow you to design your own algorithms for this crazy puzzle based on what you already know about the normal Rubik’s cube.
Part 2 of this video is a handson introduction to the 4D Rubik’s cube simulator “Magic Cube 4D”. It is hosted on Mathologer 2:
https://youtu.be/Ph6P1Ixfqzk
You can download “Magic Cube 4D” for free from here: http://superliminal.com/cube/cube.htm
If you are really daring/totally insane and would like to try blindsolving the 4D Rubik’s cube or any of the other puzzles included in “Magic Cube 4D”, there is a custom made Mathologer version of the program that you can download from here: http://superliminal.com/cube/mc4dbli…
(ctrld will toggle between greyed out and normal coloured pieces).
Special thanks go to Melinda Green, one of the developers of Magic Cube 4D and the person behind the Magic Cube 4D website for introducing me to the world of higherdimensional twisty puzzles, answering my many questions about the program and putting together the custom made blindcubing version of the program.
I’ve used the following fabulous programs to generate the clips of 3D and 4D Rubik’s cubes doing their thing featured in this video:
1. CubeTwister by Werner Randelshoferhttps://www.randelshofer.ch/cubetwister/
2. Magic Cube 3D by David Vanderschel http://davidv.home.texas.net/MC3D/
3. Magic Cube 5D by Roice Nelson http://www.gravitation3d.com/magiccub…
4. Magic Puzzle Ultimate by Andrey Astrelin http://cardiizastrograda.com/astr/MPUlt/ and, of course,
5. Magic Cube 4D itself.
Enjoy!
Burkard Polster
Some footnotes (for experts):
1. In a scrambled normal Rubik’s Cube the permutations of edges and corners will always have the same parity, that is, either both will be odd or both even. The four algorithms that I start with (cycling 3 edges, cycling 3 corners, flipping 2 edges, twisting 2 corners) correspond to even permutations of both the edges and the corners. This means that you won’t be able to solve the normal Rubik’s cube by just using these algorithms if the parity of the edge (and corner) permutation is odd. However, on closer inspection it turns out that you can do so if that parity is even. And, if it is odd, just executing one quarter turn will turn these odd permutations into even permutations which can then be unscrambled just using those for algorithms.
2. The face piece and edge piece permutations of the 4D Rubik’s cube are connected in a similar way, that is, either both permutations are odd or both are even. This means that if you get stuck solving the face hypercubies just using the algorithms that I talk about in the video (which all correspond to even permutations of those pieces), just execute a suitable twist and you are on your way. Once the face hypercubies are solved just using our algorithms you can solve the edge hypercubies. The corner piece permutation is always even and can always be solved just using the algorithms derived in the video.
dancing links
In computer science, dancing links is the technique suggested by Donald Knuth to efficiently implement his Algorithm X.^{[1]} Algorithm X is a recursive, nondeterministic, depthfirst, backtracking algorithm that finds all solutions to the exact cover problem. Some of the betterknown exact cover problems include tiling, the n queens problem, and Sudoku.
The name dancing links stems from the way the algorithm works, as iterations of the algorithm cause the links to “dance” with partner links so as to resemble an “exquisitely choreographed dance.” Knuth credits Hiroshi Hitotsumatsu and Kōhei Noshita with having invented the idea in 1979,^{[2]} but it is his paper which has popularized it.
“Algorithm X” is the name Donald Knuth used in his paper “Dancing Links” to refer to “the most obvious trialanderror approach” for finding all solutions to the exact coverproblem.^{[1]} Technically, Algorithm X is a recursive, nondeterministic, depthfirst, backtracking algorithm. While Algorithm X is generally useful as a succinct explanation of how theexact cover problem may be solved, Knuth’s intent in presenting it was merely to demonstrate the utility of the dancing links technique via an efficient implementation he called DLX.^{[1]}
The exact cover problem is represented in Algorithm X using a matrix A consisting of 0s and 1s. The goal is to select a subset of the rows so that the digit 1 appears in each column exactly once.
Algorithm X functions as follows:

 If the matrix A has no columns, the current partial solution is a valid solution; terminate successfully.
 Otherwise choose a column c (deterministically).
 Choose a row r such that A_{r, c} = 1 (nondeterministically).
 Include row r in the partial solution.
 For each column j such that A_{r, j} = 1,
 for each row i such that A_{i, j} = 1,
 delete row i from matrix A.
 delete column j from matrix A.
 for each row i such that A_{i, j} = 1,
 Repeat this algorithm recursively on the reduced matrix A.
The nondeterministic choice of r means that the algorithm essentially clones itself into independent subalgorithms; each subalgorithm inherits the current matrix A, but reduces it with respect to a different row r. If column c is entirely zero, there are no subalgorithms and the process terminates unsuccessfully.
The subalgorithms form a search tree in a natural way, with the original problem at the root and with level k containing each subalgorithm that corresponds to k chosen rows. Backtracking is the process of traversing the tree in preorder, depth first.
Any systematic rule for choosing column c in this procedure will find all solutions, but some rules work much better than others. To reduce the number of iterations, Knuthsuggests that the column choosing algorithm select a column with the lowest number of 1s in it.
VoltDB updates database with Web links
Responding to a growing user base of online service providers, VoltDB has outfitted its namesake inmemory database management system with additional tools to communicate with other technologies usually found in a Web applications stack.
Responding to a growing user base of online service providers, VoltDB has outfitted its namesake inmemory database management system with additional tools to communicate with other technologies usually found in a Web applications stack.
Data science
Agile management
Agile management, or agile process management, or simply agile refer to an iterative, incremental method of managing the design and build activities for engineering, information technology, and other business areas that aims to provide new product or service development in a highly flexible and interactive manner; an example is its application in Scrum, an original form of agile software development.^{[1]} It requires capable individuals from the relevant business, openness to consistent customer input, and management openness to nonhierarchical forms of leadership. Agile can in fact be viewed as a broadening and generalization of the principles of the earlier successful array of Scrum concepts and techniques to more diverse business activities. Agile also traces its evolution to a “consensus event”, the publication of the “Agile manifesto“, and it has conceptual links to lean techniques, kanban (かんばん(看板)^{?}), and the Six Sigma area of business ideas.^{[1]}
Agile X techniques may also be called extreme process management. It is a variant of iterative life cycle^{[2]} where deliverables are submitted in stages. The main difference between agile and iterative development is that agile methods complete small portions of the deliverables in each delivery cycle (iteration)^{[3]} while iterative methods evolve the entire set of deliverables over time, completing them near the end of the project. Both iterative and agile methods were developed as a reaction to various obstacles that developed in more sequential forms of project organization. For example, as technology projects grow in complexity, end users tend to have difficulty defining the long term requirements without being able to view progressive prototypes. Projects that develop in iterations can constantly gather feedback to help refine those requirements. According to JeanLoup Richet (Research Fellow at ESSEC Institute for Strategic Innovation & Services) “this approach can be leveraged effectively for nonsoftware products and for project management in general, especially in areas of innovation and uncertainty. The end result is a product or project that best meets current customer needs and is delivered with minimal costs, waste, and time, enabling companies to achieve bottom line gains earlier than via traditional approaches.^{[4]} Agile management also offers a simple framework promoting communication and reflection on past work amongst team members.^{[5]}
Agile methods are mentioned in the Guide to the Project Management Body of Knowledge (PMBOK Guide) under the Project Lifecycle definition:
Adaptive project life cycle, a project life cycle, also known as changedriven or agile methods, that is intended to facilitate change and require a high degree of ongoing stakeholder involvement. Adaptive life cycles are also iterative and incremental, but differ in that iterations are very rapid (usually 24 weeks in length) and are fixed in time and resources.^{[6]}
The Personal Software Process (PSP)
The Personal Software Process (PSP) is a structured software development process that is intended to help software engineers better understand and improve their performance by tracking their predicted and actual development of code. The PSP was created by Watts Humphrey to apply the underlying principles of the Software Engineering Institute’s (SEI) Capability Maturity Model (CMM) to the software development practices of a single developer. It claims to give software engineers the process skills necessary to work on a Team Software Process (TSP) team.
“Personal Software Process” and “PSP” are registered service marks of the Carnegie Mellon University.^{[1]}