電気通信大学 情報理工学研究科 情報・ネットワーク工学専攻 2023年8月実施 選択問題 アルゴリズムとデータ構造
标签:
Author
祭音Myyura (co-authored with GPT 5.6 SOL)
Description
正の辺コストをもつ連結無向グラフに対する Prim 法を考える。指定グラフで辺の追加順を求め、隣接リストを単純走査する場合の計算量を評価せよ。さらに優先度付きキューによる高速化と、最小全域木の 1 辺のコストが増加した場合の再計算法を示せ。
题目描述
给出 Prim 最小生成树算法,要求写出指定图从顶点 开始时的选边顺序,分析朴素邻接表实现的复杂度,以优先队列加速,并设计树边权值增大后的高效重算方法。
Kai
(1)
各段階でカットを横切る最小コストの辺を選ぶと、
の順に追加される。
(2)
step.3 の各実行で に属する全頂点の隣接リストを走査すると、1 回当たり最悪 である。while ループは 回実行されるので、
となる。
(3)
を辺コストをキーとする二分最小ヒープとする。
- 初期化時に に接続する全辺を に挿入する。
- step.3 では から最小辺を取り出す。両端点がすでに にあれば捨て、カットを横切る辺が得られるまで繰り返す。
- step.5 で新頂点 を に加えた後、 の隣接リストを走査し、他端点が にある各辺を に挿入する。
各辺は高々 1 回挿入・取出しされ、各ヒープ操作は である。
(4)
全隣接リストの走査は 、ヒープ操作は合計 である。したがって、
となる。
(5)
コストが増加した木の辺を とする。
- から を除き、2 つの連結成分 と を得る。
- 更新後の の全辺を 1 回走査し、このカットを横切る最小コスト辺 を求める。
- を新しい全域木とする。
更新前後のコストを とする。更新後の任意の全域木を とする。
- ならば、 を含む木はすべて同じだけ値が増えるので であり、 より である。
- ならば、 の閉路上にこのカットを横切る辺 がある。更新前の の最小性より
であるから、 となる。
よって は更新後の最小全域木である。
走査は 1 回だけなので計算量は
であり、Prim 法を最初から行う より高速である。図の例で を から にすると、代替辺は (コスト )となる。