14 ms·
Number of legal 18x18 Go positions computed. One more to go
- tunesmith 12y agoJust because the number of legal positions is computed doesn't mean we're anywhere close to "solving" 18x18 Go, right? What's the utility of computing the number of legal positions?
- lambda 12y agoNo, nowhere remotely close. This is just a matter of trying to precisely characterize the state space; there are upper and lower bounds that have been established, but it's an interesting computational problem to precisely characterize exactly how many legal positions there are. I think that there's not much utility in this work beyond "it's an interesting challenge," but, well, there's not much utility in any game beyond "it's an interesting challenge."
- deleted 12y ago[deleted]
- sjtrny 12y agoGovernment funding, collaboration with outside companies and IP. Looks like John Tromp was affiliated with CWI (http://en.wikipedia.org/wiki/Centrum_Wiskunde_%26_Informatica http://en.wikipedia.org/wiki/Centrum_Wiskunde_%26_Informatic...), which is funded by the Netherlands gov. Take a look at the "spin off companies" section in the wikipedia article. Often government funded research organisations turn some of their research into products to help fund themselves.
- jszymborski 12y agosomething something top-down dynamic programming shuffles on, muttering
- placeybordeaux 12y agoIt's just an open problem in combinatorics. Plenty of math doesn't have a specific utility associated with the problems.
- joe_the_user 12y agoWell, it would be interesting problem in combinatorics if you calculated the result in an interesting fashion. Something like numberjack, which uses constraint programming for combinatorial optimization, would be useful and an article about how someone did this would be useful but alas the op is just a dull statement of a result and doesn't have much merit imho.
- tromp 12y agoAs George Mallory said when asked "Why did you want to climb Mount Everest?" "Because it's there." The number of legal Go positions is a simply defined number that is easily approximated but an enormous computational challenge to compute exactly. I've made it my Mount Everest:-) I also want to see if the number, written as 19x19 trits in ternary, corresponds to a legal position, which would be totally awesome (but at 1.2% the odds are against it).
- vacri 12y agoTechniques developed to figure out this problem can be used in other fields. Developing them against a 'fact-checkable' issue can help troubleshoot issues, as opposed to using them on a dataset where we don't know what it's supposed to look like.
- ep103 12y agoiirc the best two pieces of software in the world are approximately 2dan
- joelangeway 12y agoOne example that just occurred to me: The base 2 log of the number of legal positions of a 9x9 go game is about 126.3, which means if I use a good hash of board positions yielding twice that number of bits, I have a better than 50/50 chance of having no collisions. That is very good to know if you've got anything like a transposition table in a Go playing program.
- cstoner 12y agoGenerally, a Zobrist hashing system is used (which is a specific type of transpositon table) for Go. It's also probably used for chess, but I don't follow chess AIs as closely.
- Someone 12y agoYou don't really need that precise an estimate. 81 * 2log3 ~= 128.38 So, the number of legal positions is only a factor of about 5 down from the number of positions disregarding life.
- chizthtor 12y agoThey got 57 legal position for a 2x2 game of go. They're counting all the symmetries. They're not pruning anything. facepalm
- DavidSJ 12y agoRotation and mirroring only buy you a factor of 8, and that's for positions that aren't already symmetric.
- tlarkworthy 12y agoexactly, spatial symmetries occupy a vanishingly small proportion of the state space that its not worth the added complexity and runtime cost (unlike the color symmetry).
- crispweed 12y agoWell no, they occupy around 7/8 of the state space (if the symmetries buy you a factor of 8). But I guess the point is that the state space is so large that the factor of 8 still doesn't do a lot to make things tractable..
- lambda 12y agoOf course they are taking symmetries into account. They are including symmetries in their definition of what the different states are, and thus accounting for them in the count, but they absolutely are pruning symmetries in their implementation. Read the draft of the paper (https://tromp.github.io/go/gostate.ps https://tromp.github.io/go/gostate.ps) if you're interested in the techniques.
- tromp 12y agoI'm not pruning any board symmetries. So, yes, the 4x4 position with only one Black stone adjacent to a corner would be counted 8 times (with the Black stone at A2 or A3 or B1 or B4 or C1 or C4 or D2 or D3). The only symmetry that the algorithm takes advantage of is color symmetry; but even there nothing is pruned; the count for a color-normalized state is simply doubled.
- protomyth 12y agoSo, given all the positions, can you tell which one(s) are possible results of another position after another turn? // did not know you couldn't do this for chess (paper even pointed to why)
- tromp 12y agoAre you asking whether it's possible to determine all possible 1-move predecessors of a given position? If so, then yes, that is pretty straightforward. E.g. the last move was either a pass, or a move by White, or a move by Black. For a move by White, it was either a suicide, so could be on any point in an empty region enclosed by Black, or it was no suicide and is one of the points occupied by White in the given position, possibly having captured a Black group in any of the adjacent empty regions enclosed by White.
- protomyth 12y agoYeah, that what I'm asking (in a really bad way). I wonder, given a list of positions, how long it would take to build the transitions between them. I would imagine 19x19 would be a "practically forever" type thing.
- tromp 12y agoIt would take at least a nanosecond for each position. Given that 6x6 already has 62567386502084877, it would take at least 724 days. To take "practically forever", 7x7 more than suffices:)
- everyone 12y agoAnyone here play? It is pretty much the ultimate boardgame. Its like game-theory the game. From the very start you are embroiled in interesting risk/reward and provoking you opponent to overextending type stuff. Great place to play is gokgs.com I actually cant play many strategy games anymore because I realize this is like go with a load of crap thrown on it. My friend and I call this 'false complexity' the game isnt really complex it just has loads of rules and random stuff to familiarise yourself with before getting into the game proper. Its not a great a comparison but I would say something like magic the gathering or Dota would be good contenders for most 'false complexity' attained in a game.
- simpleblend 12y agoI've been playing for a couple years now. Easily one of the most enjoyable games I've ever played. The amount of complexity that's hidden in something seemingly so simple so really rewarding to me. I've only managed to get to around 14-11k so far, but I'm looking forward to progressing as I get older in life!
- jessaustin 12y ago...'false complexity' the game isnt really complex it just has loads of rules and random stuff... Another term I've seen for this concept is "complication". Then one may speak of simple, complex, or complicated systems. Complexity is (perhaps unexpected) behavior that arises from the interaction of relatively few basic behaviors. Complication comes instead from just heaping more and more crap on top of the existing system. There is no accounting for taste. Many people appreciate complication more than complexity. I have played go, but not enough to be any good at it.
- deleted 12y ago[deleted]
- deleted 12y ago[deleted]
- davepeck 12y ago
- julbaxter 12y agoAnother great resource about Go combinatory: http://ps.waltheri.net/ http://ps.waltheri.net/
- deleted 12y ago[deleted]
- e12e 12y agoI don't understand this quote: "[determining the number of valid positions is] sadly unattainable for Chess, where determining if a given position is legal is the essence of a class problems known as Retrograde analysis.". Is this due to some subtle distinction between valid moves/games and positions? Because since the starting position is given, and the rules are set, surely it's possible (in theory) to simply emulate all possible moves, and recording positions as one goes along, backtracking on cycles [ed: and on check mate]?
- cevn 12y agoIt seems that in chess, the (current) "best" way to figure out whether a move was legal is through retrograde analysis (1). As you can imagine, this becomes very expensive, very fast. Not only that, but the current position may be legal in chess given some previous conditions, but illegal given others (consider Castling). Therefore, given no extra information, you may not be able to tell whether a given chessboard is legal without being given the entire history of the board as well. Disclaimer: I don't know what I'm talking about, just googled retrograde analysis 1. http://en.wikipedia.org/wiki/Retrograde_analysis http://en.wikipedia.org/wiki/Retrograde_analysis
- b3n 12y agoI'm not sure what ruleset OP is using for their analysis, but with superko in place you would also need the entire history of the board to know if a move is valid.
- tromp 12y agoAlthough rulesets might differ on what is considered a legal move, they all agree on what is a legal position: one where every connected group of stones has liberties (empty adjacent point). Furthermore, in all rulesets you can reach any legal position by playing legal moves (and passes) from the empty starting position.
- e12e 12y agoRight. So unattainable means "not feasible", not impossible - or that it's not possible to enumerate all legal positions. I of course realize that simulating all possible games (ignoring cycles) would be very demanding.
- userbinator 12y agoFollowing 9 months of computation and 4 petabyte of disk IO on a Dell PowerEdge R280 server I wonder if the time could be improved by optimising the programs some more, since at this scale constants matter a lot. The amount of memory needed might not be reducible but optimising a tight loop and reordering it to take advantage of cache effects could yield nontrivial speedups. Taking advantage of the very wide new instructions in recent CPUs might also be worth it, instructions which compilers often have difficulty figuring out how to use effectively: http://davidad.github.io/blog/2014/02/25/overkilling-the-8-queens-problem/ http://davidad.github.io/blog/2014/02/25/overkilling-the-8-q...
- tromp 12y agoMost time is spent normalizing, encoding, decoding, and sorting so-called border states, compact 18*3-bit descriptions of all information needed about a partial board position to determine its legal full-board completions. This code is fairly optimized, but it's possible that a small factor could be gained by expert analysis. Even so, there's little to no room for reducing the amount of disk-IO, so the end-result might be that the problem becomes more IO bound than CPU bound.
- pathikrit 12y agoI want to learn Go. I would like to practice against a bot first before I get on KGS. What is a good Go program I can run on my Mac to practice against? The AI does not need to be very good at all since I am novice. Once I get familiar with rules, I will play online against players. What is a good Go client to play online on the Mac?
- esgoto 12y agoGnuGo is easy enough for beginners I think. I also used a bot called Aya when learning, but I don't know if that is available for OSX. Regarding clients, there are a few options. CGoban2 is the only client you can use to access KGS, which is currently the biggest English-speaking server. You can also try online-go.com which is entirely browser-based so you don't need a client, and there's also IGS, a Japanese server which can be accessed through their own client called GoPanda2 or other clients like qGo2. There are also two servers called Tygem and WBaduk which are mostly Korean. They have proprietary clients you can run through Wine. I think they're supposed to be accessible through qGo2 as well, but I haven't been able to play through it, only observe others' games. Also, if you're just learning, http://senseis.xmp.net/ http://senseis.xmp.net/ is a great resource.
- RBerenguel 12y agoPachi and fuego are open source engines you can make work on Mac. To play online, IGS is quite nice-looking on Mac, and the most western-populated server is KGS. Ogs is a browser based turn & real time server, too. KGS: Kiseido Go Server IGS: Internet Go Server OGS: Online Go Server
- xcombelle 12y agoBe aware that practicing against AI lead to poor play and very few improvement, playing weak or strong human is far better. Especially with handicap.
- tjl 12y agoIf you just want software to play against, without the client aspect, I'd recommend an older version of Sen:te's Goban (version 3.2). Unlike the latest version, it's free (the latest version is $10). It's quite old, but it seems to still work. It uses an older version of the Gnu GO engine. It used to be able to connect to the Pandas server. I don't know if that part still works. You should be able to find download links. If the Mac version of SmartGO has features similar to the Windows version, it should be excellent. But, they've been focused on iPhone/iPad apps so it hasn't come out yet.
- hemmer 12y agoI wonder if this sort of thing might be appropriate for grid computing, e.g. BOINC? There are plenty of mathematically minded projects. http://boinc.berkeley.edu/ http://boinc.berkeley.edu/
- Houshalter 12y agoFor fun I did a search for approximations to the function with Eureqa. I get exp(0.0319x(naturalLogOfLastValue) + 1.056xn^2 - 0.184). Some other approximations here: http://i.imgur.com/w84aPWs.png?1 http://i.imgur.com/w84aPWs.png?1 Note they are all in the log domain.
- alexbecker 12y ago> we need from 10 to 13 servers, each with at least 8 cores, 512GB RAM, and ample disk space (10-15TB), running for about 5-9 months. Is he sure about 512GB of RAM? That's a lot of memory. Even the 32-core memory-optimized AWS instances only have 244GB.
- nippoo 12y agoWhere I'm currently working (computational neuroscience / data analysis) we've just had to upgrade our servers and 512GB is only just enough for some datasets. A couple of the labs nearby (genomics) share a cluster of ~10 machines with 1.5TB RAM each. So no, 512GB isn't stupidly high (though it's still uncommon!). (Large SQL servers, etc, often have this much RAM)
- sjtrny 12y agoI once used over 500GB on a university research server simply using MATLABs backslash (linesr system solver) operator when processing a single image. I accidentally forgot to scale the image down from original resolution of 5MP. I woke up to an email from a very alarmed sys admin. Anyway it's super easy to use that amount of RAM.
- tromp 12y agoAdmittedly, the 512GB in one server is mostly for convenience. In each round, I run 8 processes each using 63GB, which could in principle also be farmed out to other machines with some more administrative and monitoring overhead.
- DiaaAttia 12y agoHello, we provide jobs for ESL teachers through http://preply.com/en/skype/english-tutoring-jobs http://preply.com/en/skype/english-tutoring-jobs
- DiaaAttia 12y agoHello, we provide jobs for ESL teachers through http://preply.com/en/skype/english-tutoring-jobs http://preply.com/en/skype/english-tutoring-jobs