Beispiel #1
0
 /// <summary>
 /// Wyznacza ścieżkę powiekszającą o maksymalnej przepustowości
 /// </summary>
 /// <param name="g">Graf rezydualny</param>
 /// <param name="s">Wierzchołek źródłowy</param>
 /// <param name="t">Wierzchołek docelowy</param>
 /// <returns>
 /// Krotka (augmentingValue, augmentingFlow) składająca się z przepustowości wyznaczonej ścieżki
 /// i grafu opisującego tą ścieżkę
 /// </returns>
 /// <remarks>
 /// Jeśli ścieżka powiększająca nie istnieje, to zwracana jest krotka (0.0,null).<para/>
 /// Jeśli graf g jest typu <see cref="AdjacencyMatrixGraph"/> to wyznaczona ścieżka powiększająca p jest typu
 /// <see cref="AdjacencyListsGraph{HashTableAdjacencyList}"/>,
 /// w przeciwnym przypadku ścieżka p jest takiego samego typu jak graf g.
 /// </remarks>
 /// <seealso cref="MaxFlowGraphExtender"/>
 /// <seealso cref="ASD.Graphs"/>
 public static (double augmentingValue, Graph augmentingFlow) MaxFlowPath(this Graph g, int s, int t)
 {
     return(g.FindPath <EdgesMaxPriorityQueue>(s, t));
 }
Beispiel #2
0
 /// <summary>
 /// Wyznacza najkrótszą ścieżkę powiekszającą
 /// </summary>
 /// <param name="g">Graf rezydualny</param>
 /// <param name="s">Wierzchołek źródłowy</param>
 /// <param name="t">Wierzchołek docelowy</param>
 /// <returns>
 /// Krotka (augmentingValue, augmentingFlow) składająca się z przepustowości wyznaczonej ścieżki
 /// i grafu opisującego tą ścieżkę
 /// </returns>
 /// <remarks>
 /// Jeśli ścieżka powiększająca nie istnieje, to zwracana jest krotka (0.0,null).<para/>
 /// Jeśli graf g jest typu <see cref="AdjacencyMatrixGraph"/> to wyznaczona ścieżka powiększająca p
 /// jest typu <see cref="AdjacencyListsGraph{HashTableAdjacencyList}"/>,
 /// w przeciwnym przypadku ścieżka p jest takiego samego typu jak graf g.
 /// </remarks>
 /// <seealso cref="MaxFlowGraphExtender"/>
 /// <seealso cref="ASD.Graphs"/>
 public static (double augmentingValue, Graph augmentingFlow) BFPath(this Graph g, int s, int t)
 {
     return(g.FindPath <EdgesQueue>(s, t));
 }