https://github.com/orisano/procon26
procon26に沖縄高専が用いたソルバー
https://github.com/orisano/procon26
Last synced: 10 months ago
JSON representation
procon26に沖縄高専が用いたソルバー
- Host: GitHub
- URL: https://github.com/orisano/procon26
- Owner: orisano
- Created: 2016-01-03T08:46:54.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2020-04-29T20:13:57.000Z (about 6 years ago)
- Last Synced: 2025-09-30T02:46:20.362Z (10 months ago)
- Language: C++
- Homepage:
- Size: 198 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# procon26
第26回高専プロコン競技部門のソルバー
[ルール詳細](http://www.procon.gr.jp/wp-content/uploads//2016/12/No.26_recruitment_nagano.pdf)
## 使用したライブラリ
* [tcmalloc](https://github.com/gperftools/gperftools)
* [cmdline](https://github.com/tanakh/cmdline)
## ソルバー
### 各ソルバー共通の工夫
#### Zobrist Hash
盤面の重複削除のためにZobrist Hashを用いて高速に処理している。
#### 盤面の状態から解を復元
解は盤面から復元できるため、探索中は情報を保持していない。
メモリ使用量が抑えられより多くの盤面の探索を可能にした。
### Beam
ビームサーチを用いて解を求める。
データ構造は愚直な物を使用しており、速度は早くないがスキップを考慮した盤面を探索することができる。
### BitBeam
ビームサーチを用いて解を求める。
上の愚直なビームサーチとは違い、盤面・タイルをbit表現したものを使っており省メモリ化、置けるかどうかの判定の高速化を実現した。
ソルバーの中では最速で、答えも最良の物を返すことが多い。
### Jin
優先度付きキューを用いた変則最良優先探索で解を求める。
メモリ使用量がソルバーの中では最高だが、多様性が確保できるところが強みである。
## Env
Mac OS X (g++-5.2) のみで確認しています。
## Usage
1. CMakeでbuildする
2. ./bin出力されたsolverの実行ファイルを実行する
3. solver毎に与えるパラメータがあるのでsolverごとのusageを見る
4. rc以下にある問題ファイルを-fに指定して実行すると標準出力に解を出力する