フォード・ファルカーソンのアルゴリズム で、ネットワークの最大フローを算出してみます。 最大フローとは 以下のようなそうめん流しシステム(=ネットワーク)があるとします。 「→」は「竹とい」を示します。「○」は、「竹とい」の接点。 「→」の横の数値は、1分間に転送可能なそうめんの量を表します。 このシステムで、「1分間に 任意の二点間(例: a→f) に転送可能な最大そうめん量」が「最大フロー」となります。 ネットワークのデータ構造 例によって、構築と探索に必要な最低限の機能のみ用意。 Networkは、頂点(Vertex)と、頂点と頂点を結ぶ辺(edge)を持ちます。 各辺は「capacity」フィールドで最大転送量を持ちます。 各頂点は、頂点から出る辺(=edge.fromが頂点の辺 =前進辺)の集合(forward)と、頂点に入る辺(=edge.toが頂点の辺 =後退辺)の集合(ba