はい、これは宿題になります (私は大学のためではなく独学です) 質問ですが、解決策を求めているわけではありません。代わりに、質問自体を明確にしたいと考えています。
CLRS第 3 版、593 ページ、物品税 22.1-5、
有向グラフ G = (V, E) の 2 乗はグラフ G 2 = (V, E 2 )であり、G がu の間に最大で 2 つのエッジを持つパスを含む場合にのみ、(u,v) ∈ E 2となります。と v。G の隣接リスト表現と隣接行列表現の両方について、G からG 2を計算するための効率的なアルゴリズムを説明してください。アルゴリズムの実行時間を解析してください。
ただし、CLRS の第 2 版 (本のリンクが見つかりません) の 530 ページでは、同じ演習ですが、説明が少し異なります。
有向グラフ G = (V, E) の 2 乗はグラフ G 2 = (V, E 2 ) であり、(u,w) ∈ E 2は、ある v ∈ V に対して両方の (u,v ) ∈ E および (v,w) ∈ E.つまり、Gが u と wの間にちょうど 2 つのエッジを持つパスを含むときはいつでも、G 2 は u と w の間にエッジを含みます。G の隣接リスト表現と隣接行列表現の両方について、G からG 2を計算するための効率的なアルゴリズムを説明してください。アルゴリズムの実行時間を解析してください。
「正確に2つのエッジ」を使用した古い演習については、理解して解決できます。たとえば、adjacency-list の場合、v->neighbour->neighbour.neighbour を実行し、(v, neighbour.neighbour) を新しい E 2に追加します。
しかし、「最大で 2 つのエッジ」を使用する新しい演習については、私は混乱しています。
「G に u と v の間に最大で 2 つのエッジがあるパスが含まれている場合のみ」とはどういう意味ですか?
1 つのエッジが「最大で 2 つのエッジ」という条件を満たすことができるため、u と v が 1 つのエッジのみを含むパスを 1 つしか持たない場合、E 2に (u, v) を追加する必要がありますか?
u と v に 2 つのエッジを持つパスがあり、3 つのエッジを持つ別のパスもある場合、 (u, v) を E 2に追加できますか?