プロコン・競プロ・ハッカソン・CTF・オンラインジャッジなどをされる方々の雑談の場としたいです
雑談ですのでプロコン・競プロ・ハッカソン・CTF・オンラインジャッジなどに関係しない内容でも構いません。
当然ですが
したらば掲示板サービスの禁止事項に触れるような内容の雑談は禁止です
詳しくはガイドラインをお読みください
http://rentalbbs.shitaraba.com/rule/guideline.html
雑談ですのでプロコン・競プロ・ハッカソン・CTF・オンラインジャッジなどに関係しない内容でも構いません。
当然ですが
したらば掲示板サービスの禁止事項に触れるような内容の雑談は禁止です
詳しくはガイドラインをお読みください
http://rentalbbs.shitaraba.com/rule/guideline.html
なんか9月4日にGeeksForGeeksで大会あるみたいだけど
全く注目されないのはレーティング戦ではないってとことと
スポンサー企業の採用面接(?)のチャンスがある感じの大会だからか
賞金とTシャツはあるみたいだけど
全く注目されないのはレーティング戦ではないってとことと
スポンサー企業の採用面接(?)のチャンスがある感じの大会だからか
賞金とTシャツはあるみたいだけど
PlusCALとTLA+は日本語圏での情報少ねーな
The PlusCal Algorithm Language
http://research.microsoft.com/en-us/um/people/lamport/tla/pluscal.html
The PlusCal Algorithm Language
http://research.microsoft.com/en-us/um/people/lamport/tla/pluscal.html
TLA+でのハノイの塔
Examples/specifications/tower_of_hanoi at master ・ tlaplus/Examples ・ GitHub
https://github.com/tlaplus/Examples/tree/master/specifications/tower_of_hanoi
パッと見、関数型プログラミング言語に近いのか?
Examples/specifications/tower_of_hanoi at master ・ tlaplus/Examples ・ GitHub
https://github.com/tlaplus/Examples/tree/master/specifications/tower_of_hanoi
パッと見、関数型プログラミング言語に近いのか?
TLA+ - Wikipedia, the free encyclopedia
https://en.wikipedia.org/wiki/TLA%2B
面白そうな言語なのに日本語資料が少ないことが悔やまれる
https://en.wikipedia.org/wiki/TLA%2B
面白そうな言語なのに日本語資料が少ないことが悔やまれる
Petr Mitrichev - Wikipedia, the free encyclopedia
https://en.wikipedia.org/wiki/Petr_Mitrichev
競プロのめっちゃ強い人がウィキペディアに記事あった
https://en.wikipedia.org/wiki/Petr_Mitrichev
競プロのめっちゃ強い人がウィキペディアに記事あった
俺が読んできた解説がことごとく説明下手な人間によって書かれていたとかいうなら
説明上手い人に出会うことを目標に計算量理解してる人らと交流持つとかそんな感じ?
> 俺が読んできた解説がことごとく説明下手な人間によって書かれていた
この前提が正しいかどうかも分からん
その説明が易しいのか難しいのかすら見当つかないわけだし
どうすりゃいいんだよ!
説明上手い人に出会うことを目標に計算量理解してる人らと交流持つとかそんな感じ?
> 俺が読んできた解説がことごとく説明下手な人間によって書かれていた
この前提が正しいかどうかも分からん
その説明が易しいのか難しいのかすら見当つかないわけだし
どうすりゃいいんだよ!
dp[k-1][i][j]は頂点0~(k-1)のk個の頂点だけを使ったときのiとjの最短経路か
そこに頂点kを加えたときのiとjの最短経路dp[k][i][j]を求めるってこととか
頂点(k-1)までを使った最短経路は求まっているのだから頂点kを経由する経路についてだけ新たに考えればよいと
そこに頂点kを加えたときのiとjの最短経路dp[k][i][j]を求めるってこととか
頂点(k-1)までを使った最短経路は求まっているのだから頂点kを経由する経路についてだけ新たに考えればよいと
dp[k-1][i][k]+dp[k-1][k][j]は
iとkのどこも経由しない直通と
kとjのどこも経由しない直通との和になってるはず(ここまでのDPでは頂点kについては考慮してないはずだから)
iとkのどこも経由しない直通と
kとjのどこも経由しない直通との和になってるはず(ここまでのDPでは頂点kについては考慮してないはずだから)
min(dp[k-1][i][j],dp[k-1][i][k]+dp[k-1][k][j])は
頂点kを一切経由しない最短経路と
頂点kのみを経由する経路とで
最小のほうを選択して頂点0~k個使う場合のiとjの最短経路を求めている・・・
頂点kを一切経由しない最短経路と
頂点kのみを経由する経路とで
最小のほうを選択して頂点0~k個使う場合のiとjの最短経路を求めている・・・
dp[k-1][i][j]は
i -> j の可能性もあるし
i -> a -> b -> j の可能性もある
その中での最短経路、そこに頂点kを加える
i -> k -> j と比較するわけだけど
例えば i -> a -> k -> j のほうが短くなったりしないのだろうか
i -> j の可能性もあるし
i -> a -> b -> j の可能性もある
その中での最短経路、そこに頂点kを加える
i -> k -> j と比較するわけだけど
例えば i -> a -> k -> j のほうが短くなったりしないのだろうか
そうか、本にあるコードは(k-1)を省略した2次元のほうのコードだから
それをそのままdp[k-1][i][j]の3次元のコードとして捉えちゃダメなんだな
使用する頂点の数を考慮する場合は本のとは違うコードにならなければならないのか
それをそのままdp[k-1][i][j]の3次元のコードとして捉えちゃダメなんだな
使用する頂点の数を考慮する場合は本のとは違うコードにならなければならないのか
3次元版のときは最初に頂点kを始点あるいは終点とした最短経路を求めてから頂点kを経由する最短経路を求める必要があるのかな?
2次元版のは
全ての頂点(0~V)においてiからjまでの頂点0~(k-1)を経由する可能性のある最短経路に対して
頂点kをi,jにおいてそれぞれの頂点0~(k-1)を経由する可能性のある最短経路で経由させた場合に新たなiとjの最短経路になるかっていう感じ
全ての頂点(0~V)においてiからjまでの頂点0~(k-1)を経由する可能性のある最短経路に対して
頂点kをi,jにおいてそれぞれの頂点0~(k-1)を経由する可能性のある最短経路で経由させた場合に新たなiとjの最短経路になるかっていう感じ
蟻本の「頂点0~kのみを使う」というのは「最短経路の経由点として使う」という意味なのか
>>73での間違い解釈はi,jに関しては0~(k-1)を使うと思ってたけどそうではなく0~Vを使う
「頂点0~kとi,jのみを使う」って一文、何か不自然さを感じてたけど、「と」による区切れがi,jは0~Vを使うという意味が含まれてたのか
>>73での間違い解釈はi,jに関しては0~(k-1)を使うと思ってたけどそうではなく0~Vを使う
「頂点0~kとi,jのみを使う」って一文、何か不自然さを感じてたけど、「と」による区切れがi,jは0~Vを使うという意味が含まれてたのか
つまり3次元版のdp[k][i][j]は頂点0~kを経由する可能性のあるi間j(頂点0~V)の最短経路を表す
3次元を2次元に落とし込める理由は
入力側の頂点(k-1)を1度経由させる経路は
dp[k-1][i][k-1]もdp[k-1][k-1][j]もどちらも頂点(k-1)以降を経由しない(頂点0~(k-2)を経由する可能性のある)最短経路が保証され
2次元のdp[i][k-1]もdp[k-1][j]も同様のことが言える
更新される側の
2次元の場合、dp[i][j]が更新されていくわけで入力側に何らかの影響がありそうな雰囲気を感じることがあるのかもしれないけど
入力に影響がありそうに見えるのはこのiかjがどちらかが(k-1)だった場合、
つまり始点か終点が頂点(k-1)であり、それの最短経路の経由点に頂点(k-1)を含むことはないので入力に全く影響を与えない
3次元で言うと
dp[k][i][k-1]=min(dp[k-1][i][k-1],dp[k-1][i][k-1]+dp[k-1][k-1][k-1])これは常にdp[k][i][k-1]=dp[k-1][i][k-1] (どう見ても自明)
同様にdp[k][k-1][j]についてもいえる
i!=k-1かつj!=k-1のときはdp[k-1][][]からdp[k][][]への計算に再利用はされないから
3次元の最初の次元である使用する頂点の数というのを分けて考える必要ないから2次元に落とし込める
だめだ、俺も日本語下手だわ
入力側の頂点(k-1)を1度経由させる経路は
dp[k-1][i][k-1]もdp[k-1][k-1][j]もどちらも頂点(k-1)以降を経由しない(頂点0~(k-2)を経由する可能性のある)最短経路が保証され
2次元のdp[i][k-1]もdp[k-1][j]も同様のことが言える
更新される側の
2次元の場合、dp[i][j]が更新されていくわけで入力側に何らかの影響がありそうな雰囲気を感じることがあるのかもしれないけど
入力に影響がありそうに見えるのはこのiかjがどちらかが(k-1)だった場合、
つまり始点か終点が頂点(k-1)であり、それの最短経路の経由点に頂点(k-1)を含むことはないので入力に全く影響を与えない
3次元で言うと
dp[k][i][k-1]=min(dp[k-1][i][k-1],dp[k-1][i][k-1]+dp[k-1][k-1][k-1])これは常にdp[k][i][k-1]=dp[k-1][i][k-1] (どう見ても自明)
同様にdp[k][k-1][j]についてもいえる
i!=k-1かつj!=k-1のときはdp[k-1][][]からdp[k][][]への計算に再利用はされないから
3次元の最初の次元である使用する頂点の数というのを分けて考える必要ないから2次元に落とし込める
だめだ、俺も日本語下手だわ
プログラマー (5ch)
競プロのアンケートらしい
競プロのアンケートらしい
続き44秒後位に新着取得可