SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌
(2014.7.12)
Boost.Graphで
JR全線乗り尽くしプラン
を立てる
H.Hiro @ Sapporo.cpp
Twitter: @h_hiro_
http://hhiro.net/about/
自己紹介
●
某研究員
(もう学生じゃありません)
●
アルゴリズム作るのは本業です
●
趣味でもプログラム書いてます
●
C++とかRubyとか他にも何でも
●
最近はアマチュアサッカーの
観戦とかも
ソースコードは
こちらです
https://github.com/maraigue
/cpp-chinese-postman
今回の内容
JR線全線を乗り尽くす
地図:国土数値情報 鉄道データ N02-08
(2008年現在;JR以外の鉄道も入ってます)
鉄道ファンにとって
一つのステータス
これをなるべく
短い乗車距離で
実現したい
今回のルール
●
単に乗り尽くしたら終わりでは
なく、「出発地点まで帰って
くる」までの乗車距離で考える
●
出発地点まで戻るときも含め
JR以外の交通機関は
利用しないとする
予備知識
グラフ理論
●
グラフ:状態(頂点 vertex, node)と、
二つの状態を結ぶもの(辺 edge)からなる
データ構造(今回は駅が頂点、路線が辺)
●
各辺には、通ることで加算される利益や
損失の数値(重み)を与えることができる
(今回は距離を重みとし損失とみなす)
桑園 札幌 苗穂 白石 平和
厚別八軒
琴似
22 16 22 36
4422
22
(辺の重みに書かれた
 距離の単位は「0.1km」)
補足
●
今回は、JR線が3方向以上に分岐している
駅のみ頂点とする。
●
今回は、辺は両方向に行き来できるもの
のみ扱う(無向グラフ undirected graph)。
一方通行は考えない
桑園 札幌 苗穂 白石 平和
厚別八軒
琴似
22 16 22 36
4422
22
(辺の重みに書かれた
 距離の単位は「0.1km」)
Boost.Graph
Boost.Graph:
グラフ構造を扱うライブラリ
// 無向グラフを扱うために必要なものをインクルード
#include <boost/graph/undirected_graph.hpp>
// グラフの型の定義。
// 頂点から出る辺の一覧はstd::vector、頂点の一覧はstd::set、
// 無向グラフ、頂点には駅名、辺にはint型で重みを付与
typedef boost::adjacency_list<boost::vecS, boost::setS,
boost::undirectedS,
boost::property<boost::vertex_name_t, std::string>,
boost::property<boost::edge_weight_t, int> > Graph;
// 続く
Boost.Graph:
グラフ構造を扱うライブラリ
// 続き
int main(void){
Graph g;
// 頂点を追加
vertex_descriptor v1 = boost::add_vertex("桑園", g);
vertex_descriptor v2 = boost::add_vertex("白石", g);
// 辺を追加
// 第3パラメータは辺の属性(ここでは重み=距離)
edge_descriptor e1 = boost::add_edge(v1, v2, 74, g);
}
実際のコードを
見てみましょう
// 駅名をキー、頂点を値とする連想配列
std::map<std::string, RouteNetwork::vertex_descriptor> names2vertices;
while(!(ifs.eof())){
// (中略:ここで行を読み込む)
// s[0] と s[1] に地点名が、 distance に距離が入る
// 頂点を追加(まだ存在していないなら)
for(size_t i = 0; i <= 1; ++i){
it = names2vertices.find(s[i]);
if(it == names2vertices.end()){
vd[i] = boost::add_vertex(s[i], *this);
names2vertices.insert(std::make_pair(s[i], vd[i]));
}else{
vd[i] = it->second;
}
}
// 辺を追加
boost::add_edge(vd[0], vd[1], distance, *this);
total_distance += distance;
}
今回の
問題設定
今回の問題は、グラフ理論の
用語で言えば
●
無向グラフが与えられたとき
●
すべての辺を少なくとも1回通る
始点と終点が同一である経路で
●
経路の辺の重みの総和が最小に
なるものを求めよ。
ちなみにこの問題は
「中国人郵便配達問題」
って名前が付いてます
なお、Wikipediaの
「中国人郵便配達問題」
を書いた"Sinryow"は
私です
もう少し
グラフ理論について
必要なことを解説します
今回用いる
グラフ理論の概念(1)
橋
225
34
236
628
橋:
その辺1本が消えることで
路線網が分断される
(非連結になる)ような辺
函館
大沼
森
長万部
1256
五稜郭
中小国
↓青森
↑三厩
↑桑園
↓東室蘭
353
━━━━ :橋
━━━━ :橋でない
橋:
その辺1本が消えることで
路線網が分断される
(非連結になる)ような辺
➔
橋は明らかに2回通らないと
ならない
(全路線を通って出発地点に
戻る必要があるため)
今回用いる
グラフ理論の概念(2)
オイラーグラフ
オイラーグラフ:
スタート地点から一筆書き
(全ての辺をちょうど1回ずつ通る経路)で
スタート地点に戻ることのできるグラフ
オイラーグラフでない
(一筆書きはできるけど) オイラーグラフである
なぜオイラーグラフを考える?
➔
もしJRの路線網がオイラーグラフなら、
単に一筆書きになる(各区間1回ずつ通る)
ように辿るのが最短経路なのは明らか。
➔
ただ現実には、2回通らないとならない
区間が存在する。
【補足】いかなる区間も1回か2回通ればよく、3回通る
必要はない。(証明は省略)
なぜオイラーグラフを考える?
➔
2回通ったところに辺が2本存在すると
仮定してオイラーグラフになれば
全線乗り尽して出発地点に戻れる。
➔
2回通る区間を極力少なくすればよい。
オイラーグラフでない オイラーグラフである
ここを
2本に増やす
オイラーグラフの特性
●
グラフのすべての頂点について、
繋がっている辺の数(次数)が偶数ならば
オイラーグラフである。逆も成り立つ。
●
一部の辺を2本に増やし、上記の条件を
満たせるようにすればよい。
オイラーグラフでない オイラーグラフである
次数3
次数3
次数2
次数2
次数2 次数2
次数2
次数2
次数4
次数4
問題の解き方
1.
橋を見つけて個別のグラフに
切り離す。
橋は「2回通る」と結論付ける。
函館
五稜郭
中小国
大沼
森
長万部
室蘭
東室蘭
苫小牧
沼ノ端
追分
新得
夕張
新夕張
東釧路
根室
南千歳
新千歳空港
桑園 白石
新十津川
増毛
滝川
深川
旭川 新旭川
稚内
富良野
様似
岩見沢
1.
橋を見つけて個別のグラフに
切り離す。
橋は「2回通る」と結論付ける。
函館
五稜郭
中小国
大沼
森
長万部
室蘭
東室蘭
苫小牧
沼ノ端
追分
新得
夕張
新夕張
東釧路
根室
南千歳
新千歳空港
桑園 白石
新十津川
増毛
滝川
深川
旭川 新旭川
稚内
富良野
様似
岩見沢
橋を検出するアルゴリズム
http://nupioca.hatenadiary.jp/
entry/2013/11/03/200006
●
アルゴリズム自体はシンプルです
●
逆に、何でこのアルゴリズムでうまく
いくのかが不思議です(私も理解してません)
2.
次数2以下の頂点を削除し辺を
統合する。(やらなくても
いいけど効率化のために)
894 新得254 新夕張追分
↓沼ノ端
↑岩見沢
↑富良野
↓東釧路
←南千歳
夕張
橋のため削除
2.
次数2以下の頂点を削除し辺を
統合する。(やらなくても
いいけど効率化のために)
新得254+894=1148追分
↓沼ノ端
↑岩見沢
↑富良野
↓東釧路
←南千歳
夕張
橋のため削除
2.
次数2以下の頂点を削除し辺を
統合する。(やらなくても
いいけど効率化のために)
函館
五稜郭
中小国
大沼
森
長万部
室蘭
東室蘭
苫小牧
沼ノ端
追分
新得
夕張
新夕張
東釧路
根室
南千歳
新千歳空港
桑園 白石
新十津川
増毛
滝川
深川
旭川 新旭川
稚内
富良野
様似
岩見沢
2.
次数2以下の頂点を削除し辺を
統合する。(やらなくても
いいけど効率化のために)
沼ノ端
追分
新得南千歳
白石
滝川
旭川
富良野
岩見沢
Boost.Graphだとこんな具合
// ---------- 変数宣言類は大幅に省略してます ----------
std::pair<vertex_iterator, vertex_iterator> vertex_range = boost::vertices(*this);
for(vertex_iterator itv = vertex_range.first; itv != vertex_range.second; ++itv){
if(out_degree(*itv, *this) == 2){ // 次数が2の頂点があったら
// 隣接する頂点と辺を覚えておき
std::pair<out_edge_iterator, out_edge_iterator> edge_range =
boost::out_edges(*itv, *this);
for(out_edge_iterator ite = edge_range.first;
ite != edge_range.second; ++ite, ++i){
sides[i] = vertex_target(*itv, *ite);
distance += boost::get(boost::edge_weight, *this, *ite);
links[i] = *ite;
}
// 元の辺を取り除くとともに新しく辺を加える
boost::add_edge(sides[0], sides[1], distance, *this);
boost::remove_edge(links[0], *this); boost::remove_edge(links[1], *this);
}
}
3. (どこの辺を2本に増やすか決めたい)
分割された各グラフについて、
「すべての頂点の組に対する
最短距離」を求める
白 岩 滝 旭 富 新 南 沼 追
白
岩
滝
旭
富
新
南
沼
追
沼ノ端
追分
新得南千歳
白石
滝川
旭川
富良野
岩見沢
白 岩 滝 旭 富 新 南 沼 追
白
岩
滝
旭
富
新
南
沼
追
この問題には「フロイド=ワーシャル法」と
いう有名なアルゴリズムがあって
Boost.Graphにも入っています
boost::floyd_warshall_all_pairs_shortest_paths(graph, result);
resultは「result[vertex1][vertex2] としたときに辺の重みが返る」
ものなら何でもよい。例えばstd::map< vertex_descriptor,
std::map<vertex_descriptor, int> > (辺の重みがintの場合)
沼ノ端
追分
新得南千歳
白石
滝川
旭川
富良野
岩見沢
4. (どこの辺を2本に増やすか決めたい)
次数が奇数の頂点を2つずつ
組み合わせ、さっき求めた距離の
和が最小になるものを見つける
沼ノ端
追分
新得南千歳
白石
滝川
旭川
富良野
岩見沢
●
(白石, 旭川)・(南千歳, 新得)・
(沼ノ端, 岩見沢)・(滝川, 富良野)
●
(白石, 南千歳)・(沼ノ端, 岩見沢)・
(滝川, 新得)・(旭川, 富良野)
…
4. (どこの辺を2本に増やすか決めたい)
次数が奇数の頂点を2つずつ
組み合わせ、さっき求めた距離の
和が最小になるものを見つける
沼ノ端
追分
新得南千歳
白石
滝川
旭川
富良野
岩見沢
最適な組み合わせ:
(白石, 岩見沢)・(南千歳, 沼ノ端)・
(滝川, 旭川)・(富良野, 新得)
最適な「2つずつの組み合わせ方」
を求めるのは面倒
●
全通り組み合わせてみるのは、
組み合わせ爆発を起こしてしまう
●
「整数計画問題」という形に落とせば、
ライブラリに食わせて解ける
→今回は"GLPK"を使います
整数計画問題
●
変数に整数しか入らず、かつ
指定された制約式を満たすものの中で
特定の式を最大化/最小化する問題
制約式・最大化/最小化する式には
和・定数倍・等式/不等式のみ利用可能
●
変数が多いと一般には低速(組み合わせ爆発
が起きる)だが、多くの場合に高速
●
今回の場合は、頂点数の3乗に比例する
程度の時間で解ける(っぽい)
●
GLPK:これを解いてくれるライブラリ
どう整数計画問題にするのか
●
変数:2つの駅の組み合わせ
(使ったもの:1、使わなかったもの:0)
●
制約式:どの駅も1回しか登場しない
●
最小化すべきもの:組み合わせにより
生じる移動距離の総和
最小化すべき式:777×白石滝川+348×白石岩見沢+…
// 「組の距離×使った辺」を最小にする。各組の距離はさっき求めた
0≦白石滝川≦1、0≦白石岩見沢≦1、0≦白石沼ノ端≦1、…
// 各組み合わせは「使うか使わないか」の二つだけ
白石滝川+白石岩見沢+白石沼ノ端+…=1
白石滝川+滝川岩見沢+滝川沼ノ端+…=1
// 各駅とも、1回の組み合わせにしか登場しない
GLPKに解かせた結果
(JR北海道分)
沼ノ端
追分
新得
南千歳
白石
滝川
旭川
富良野
岩見沢
GLPKに解かせた結果
(JR全国分)
GLPKに解かせた結果
(JR全国分)
メモリ不足で
解けませんでした…。
頂点数140くらい、
考えるべき辺が10,000組くらい
最終結果:JR北海道全線
(橋と、最小距離組み合わせの結果出た辺のみ2回通ればよい)
函館
五稜郭
中小国
大沼
森
長万部
室蘭
東室蘭
苫小牧
沼ノ端
追分
新得
夕張
新夕張
東釧路
根室
南千歳
新千歳空港
桑園 白石
新十津川
増毛
滝川
深川
旭川 新旭川
稚内
富良野
様似
岩見沢
━━━━:2回通る
━━━━:1回通る
JR北海道の総距離
2457.7km(営業キロ)
左図の総乗車距離
3565.0km(同)
総距離の145%
最終結果:JR北海道全線
(橋と、最小距離組み合わせの結果出た辺のみ2回通ればよい)
函館
五稜郭
中小国
大沼
森
長万部
室蘭
東室蘭
苫小牧
沼ノ端
追分
新得
夕張
新夕張
東釧路
根室
南千歳
新千歳空港
桑園 白石
新十津川
増毛
滝川
深川
旭川 新旭川
稚内
富良野
様似
岩見沢
一筆書き経路の例
白石→桑園→新十津川→桑園
→長万部→森→大沼→五稜郭
→函館→五稜郭→中小国→五稜郭
→大沼→森→長万部→東室蘭
→室蘭→東室蘭→苫小牧→様似
→苫小牧→沼ノ端→追分→岩見沢
→白石→南千歳→沼ノ端→南千歳
→新千歳空港→南千歳→追分
→新夕張→夕張→新夕張→新得
→東釧路→根室→東釧路→新旭川
→稚内→新旭川→旭川→深川
→増毛→深川→滝川→富良野
→新得→富良野→旭川→深川
→滝川→岩見沢→白石
補足:
●
「2回通る必要のある辺」が求められれば、
実際にどの経路で辿ればよいかは勝手に
決まる。
●
オイラーグラフの特徴として、「辿れなく
なる頂点が存在しなくならない限りは、
適当に辿っていても一筆書きになる」
というものがあるため。
実際に
プログラムで
解いてみます
参考文献・資料:
●
アルゴリズムの大枠の解説:
「経営科学OR用語大事典」
Saul I. Gass、Carl M. Harris
森村英典[監訳]、刀根薫[監訳]、伊理正夫[監訳]
朝倉書店 ISBN 4254121318
●
グラフ理論の基礎:
「グラフ理論入門(原書第4版)」
Robin J. Wilson、西関隆夫[訳]・西関裕子[訳]
近代科学社 ISBN 4764902966
参考資料:
http://ocw.hokudai.ac.jp/Course/Faculty/Engineering
/GraphTheory/2007/
参考文献・資料:
●
もっと難しい(理論的に考えたときに
計算時間がかかる)問題:
「JRの切符として買える最長のものを求める」
(最長片道切符)
http://www.swa.gr.jp/lop/
ありがとう
ございました

Contenu connexe

Tendances

Divisor
DivisorDivisor
Divisor
oupc
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
 

Tendances (20)

Gpu vs fpga
Gpu vs fpgaGpu vs fpga
Gpu vs fpga
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
Divisor
DivisorDivisor
Divisor
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
圏論は、随伴が全て
圏論は、随伴が全て圏論は、随伴が全て
圏論は、随伴が全て
 
C++の黒魔術
C++の黒魔術C++の黒魔術
C++の黒魔術
 
Topological sort
Topological sortTopological sort
Topological sort
 
自動定理証明の紹介
自動定理証明の紹介自動定理証明の紹介
自動定理証明の紹介
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
 
CuPy解説
CuPy解説CuPy解説
CuPy解説
 
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 
強化学習その1
強化学習その1強化学習その1
強化学習その1
 
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
 
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 

En vedette

Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Hiro H.
 
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
Hiro H.
 
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
Hiro H.
 
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を 効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を 効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
Hiro H.
 

En vedette (20)

C++用将棋ライブラリ "OpenShogiLib"の紹介
C++用将棋ライブラリ"OpenShogiLib"の紹介C++用将棋ライブラリ"OpenShogiLib"の紹介
C++用将棋ライブラリ "OpenShogiLib"の紹介
 
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術
 
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
 
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
 
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
 
Study3 boost
Study3 boostStudy3 boost
Study3 boost
 
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
 
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
 
関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ
 
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
 
C++ template-primer
C++ template-primerC++ template-primer
C++ template-primer
 
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
 
Sapporocpp#2 exception-primer
Sapporocpp#2 exception-primerSapporocpp#2 exception-primer
Sapporocpp#2 exception-primer
 
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
 
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を 効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を 効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
 
最近のC++ @ Sapporo.cpp #5
最近のC++ @ Sapporo.cpp #5最近のC++ @ Sapporo.cpp #5
最近のC++ @ Sapporo.cpp #5
 
Introduction to boost test
Introduction to boost testIntroduction to boost test
Introduction to boost test
 
CG基礎3 メタリンク
CG基礎3 メタリンクCG基礎3 メタリンク
CG基礎3 メタリンク
 
ABC2015 Summer LT
ABC2015 Summer LTABC2015 Summer LT
ABC2015 Summer LT
 
Boost study meeting opening 4
Boost study meeting opening 4Boost study meeting opening 4
Boost study meeting opening 4
 

Plus de Hiro H.

わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
Hiro H.
 

Plus de Hiro H. (20)

pandas便利だけどデフォルトパラメータでファイルを読み込むな!
pandas便利だけどデフォルトパラメータでファイルを読み込むな!pandas便利だけどデフォルトパラメータでファイルを読み込むな!
pandas便利だけどデフォルトパラメータでファイルを読み込むな!
 
式を書くだけで最適化計算してほしい!~CVXPY編~
式を書くだけで最適化計算してほしい!~CVXPY編~式を書くだけで最適化計算してほしい!~CVXPY編~
式を書くだけで最適化計算してほしい!~CVXPY編~
 
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
 
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
 
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
 
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
配列の要素挿入・削除もランダムアクセスも両方高速にできる?配列の要素挿入・削除もランダムアクセスも両方高速にできる?
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
 
PCSじゃないよ、PCAだよ
PCSじゃないよ、PCAだよPCSじゃないよ、PCAだよ
PCSじゃないよ、PCAだよ
 
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
 
スマホ音楽ゲームの動画から譜面をデータ化したかった
スマホ音楽ゲームの動画から譜面をデータ化したかったスマホ音楽ゲームの動画から譜面をデータ化したかった
スマホ音楽ゲームの動画から譜面をデータ化したかった
 
シンデレラガールズ声優の増え方まとめ
シンデレラガールズ声優の増え方まとめシンデレラガールズ声優の増え方まとめ
シンデレラガールズ声優の増え方まとめ
 
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
 
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
 
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
 
最近デレステ創作譜面作ってるので技術的な見地から話します
最近デレステ創作譜面作ってるので技術的な見地から話します最近デレステ創作譜面作ってるので技術的な見地から話します
最近デレステ創作譜面作ってるので技術的な見地から話します
 
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようC++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
 
デレステの劇場で登場したアイドルの回数の統計取ってます
デレステの劇場で登場したアイドルの回数の統計取ってますデレステの劇場で登場したアイドルの回数の統計取ってます
デレステの劇場で登場したアイドルの回数の統計取ってます
 
名古屋市営地下鉄最小距離完乗
名古屋市営地下鉄最小距離完乗名古屋市営地下鉄最小距離完乗
名古屋市営地下鉄最小距離完乗
 
MSYS2使いはじめました
MSYS2使いはじめましたMSYS2使いはじめました
MSYS2使いはじめました
 
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
 
rsyncで差分バックアップしようぜ!
rsyncで差分バックアップしようぜ!rsyncで差分バックアップしようぜ!
rsyncで差分バックアップしようぜ!
 

Dernier

Dernier (7)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)