kemuniku / cplib

Creative Commons Zero v1.0 Universal
4 stars 0 forks source link

Functional Graphテンプレ #251

Open kemuniku opened 1 week ago

kemuniku commented 1 week ago

いろいろできるとちょっと便利かもしれない 今のところやりたいこと ・サイクルへの距離(サイクルに含まれる場合は0) ・連結成分に存在するサイクルのサイクル長 ・サイクルを取得 ・x回辺の先へ移動を繰り返した後の頂点(x<=10^18)

seekworser commented 1 week ago

とりあえず前計算O(N)でlen_to_cycleとcycle_lenあたりを計算したい

kemuniku commented 1 week ago

前計算O(NlogN)かO(Nlog(10^18))かけてi個先の頂点をダブリングするやつが欲しい説もある

kemuniku commented 1 week ago

あとはサイクルに属しているかのboolとか?

kemuniku commented 1 week ago

あとはget cycleとか(O(N)でいいので)

kemuniku commented 1 week ago

サイクルに属しているかのboolは、サイクルまでの距離(属しているならば0)の配列の作成で対応しましょう

kemuniku commented 1 week ago

i頂点先ってO(N)/O(1)でできるっけ

seekworser commented 1 week ago

できる気がしてきた

kemuniku commented 1 week ago

パスではなく木なのでむりじゃないかなぁになった Level Ancestor Problem がクエリO(logN)なので

seekworser commented 1 week ago

ごめんなさいになった

kemuniku commented 1 week ago

<O(n), O(1)> LAが存在するらしいです(何?)

kemuniku commented 1 week ago

実用上は遅いらしいのでどうしようねといった感じ 1.全部ダブリングでやる log(10^18)とかまでもつ 2.一部ダブリングでやる log(木の深さ) 3.HL分解する メモリがO(N)になります

seekworser commented 1 week ago

備忘 https://37zigen.com/level-ancestor-problem/

kemuniku commented 1 week ago

そういえばLevel Ancestor Problem って今ない?(HL分解にありましたっけ)

seekworser commented 1 week ago

LAはあったはず https://github.com/kemuniku/cplib/blob/96dedc8ca7273c40ba574b012fe5cfb9be7668e7/src/cplib/tree/heavylightdecomposition.nim#L138

seekworser commented 1 week ago

個人的には実装軽いし1でいいいかなの気持ちがあります

kemuniku commented 1 week ago

2もそんなには重くないと思うぜ!

seekworser commented 1 week ago

ヒィン………

kemuniku commented 5 days ago

頂点AからBに行くことはできるか、できるなら何回の移動で行くことができるか とか