{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/solving-imperfect-information-games-via","title":"Solving Imperfect-Information Games via Discounted Regret Minimization","arxiv_id":"1809.04040","date":"2018-09-11","proceeding":null,"authors":["Noam Brown","Tuomas Sandholm"],"abstract":"Counterfactual regret minimization (CFR) is a family of iterative algorithms\nthat are the most popular and, in practice, fastest approach to approximately\nsolving large imperfect-information games. In this paper we introduce novel CFR\nvariants that 1) discount regrets from earlier iterations in various ways (in\nsome cases differently for positive and negative regrets), 2) reweight\niterations in various ways to obtain the output strategies, 3) use a\nnon-standard regret minimizer and/or 4) leverage \"optimistic regret matching\".\nThey lead to dramatically improved performance in many settings. For one, we\nintroduce a variant that outperforms CFR+, the prior state-of-the-art\nalgorithm, in every game tested, including large-scale realistic settings. CFR+\nis a formidable benchmark: no other algorithm has been able to outperform it.\nFinally, we show that, unlike CFR+, many of the important new variants are\ncompatible with modern imperfect-information-game pruning techniques and one is\nalso compatible with sampling in the game tree.","url_abs":"http://arxiv.org/abs/1809.04040v3","url_pdf":"http://arxiv.org/pdf/1809.04040v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"solving-imperfect-information-games-via","repo_url":"https://github.com/b-inary/wasm-postflop","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"AGPL-3.0"}},{"paper_slug":"solving-imperfect-information-games-via","repo_url":"https://github.com/gabrfarina/exp-a-spiel","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"solving-imperfect-information-games-via","repo_url":"https://github.com/maxschorer/ticket_to_ride","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"solving-imperfect-information-games-via","repo_url":"https://github.com/samhippie/shallow-red","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"solving-imperfect-information-games-via","repo_url":"https://github.com/timpalpant/go-cfr","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"GPL-3.0"}}],"tasks":[{"task_slug":null,"task_name":"counterfactual"}],"methods":[{"method_slug":"pruning","method_name":"Pruning"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1809.04040","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1809.04040"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/gabrfarina/exp-a-spiel","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/timpalpant/go-cfr","reach":{"status":"ok","spdx":"GPL-3.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/b-inary/wasm-postflop","reach":{"status":"ok","spdx":"AGPL-3.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/maxschorer/ticket_to_ride","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/samhippie/shallow-red","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":8},"by_repo_kind":{"listed":{"samples":8,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"7a7606597b0113b0","entry":"actionToTensor","repo":"samhippie/shallow-red","repo_kind":"listed","path":"old/modelInput.py","file_url":"https://github.com/samhippie/shallow-red/blob/HEAD/old/modelInput.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7a7606597b0113b0"}},{"code_sha256_prefix":"ae5e00e21ff84986","entry":"checkTeamSet","repo":"samhippie/shallow-red","repo_kind":"listed","path":"moves.py","file_url":"https://github.com/samhippie/shallow-red/blob/HEAD/moves.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ae5e00e21ff84986"}},{"code_sha256_prefix":"184988b03098fdd5","entry":"combineTeamSets","repo":"samhippie/shallow-red","repo_kind":"listed","path":"moves.py","file_url":"https://github.com/samhippie/shallow-red/blob/HEAD/moves.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"184988b03098fdd5"}},{"code_sha256_prefix":"0fad39aae37cdc44","entry":"enumId","repo":"samhippie/shallow-red","repo_kind":"listed","path":"old/modelInput.py","file_url":"https://github.com/samhippie/shallow-red/blob/HEAD/old/modelInput.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0fad39aae37cdc44"}},{"code_sha256_prefix":"05bad44fc80be3da","entry":"infosetToRepr","repo":"samhippie/shallow-red","repo_kind":"listed","path":"simpleModel.py","file_url":"https://github.com/samhippie/shallow-red/blob/HEAD/simpleModel.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"05bad44fc80be3da"}},{"code_sha256_prefix":"b7daeccde00646cf","entry":"makeTeams","repo":"samhippie/shallow-red","repo_kind":"listed","path":"moves.py","file_url":"https://github.com/samhippie/shallow-red/blob/HEAD/moves.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b7daeccde00646cf"}},{"code_sha256_prefix":"af8a0162a3d86fd9","entry":"myCollate","repo":"samhippie/shallow-red","repo_kind":"listed","path":"dataStorage.py","file_url":"https://github.com/samhippie/shallow-red/blob/HEAD/dataStorage.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"af8a0162a3d86fd9"}},{"code_sha256_prefix":"42d3e8c859d5479e","entry":"stateToTensor","repo":"samhippie/shallow-red","repo_kind":"listed","path":"old/modelInput.py","file_url":"https://github.com/samhippie/shallow-red/blob/HEAD/old/modelInput.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"42d3e8c859d5479e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}