# funkcja dla gęstości 0.4 def johnson_04(x, a, b, c): return [(0.4 * a * np.log10(v)) * pow(v, 3) - (0.4 * b * np.log10(v)) * pow(v, 2) + c for v in x] # funkcja dla gęstości 0.8 def johnson_08(x, a, b, c): return [(0.8 * a * np.log10(v)) * pow(v, 3) - (0.8 * b * np.log10(v)) * pow(v, 2) + c for v in x] print("Algorytm Johnsona, w zależności od gęstości grafu") make_plot("../generated_graphs/density_0.1.graph", "johnson", 20, "r", johnson_01, density=0.1) print("wykres << gęstość 0.1") make_plot("../generated_graphs/density_0.4.graph", "johnson", 20, "g", johnson_04, density=0.4) print("wykres << gęstość 0.4") make_plot("../generated_graphs/density_0.8.graph", "johnson", 20, "b", johnson_08,
import matplotlib.pyplot as plt import numpy as np from plots.make_plot import make_plot # jedna funkcja dla algorytmu Floyda-Warshalla dla wszystkich gęstości - zależność od 1 zmiennej def floyd_warshall(x, a, b): return [a * pow(v, 3) + b for v in x] # funkcja dla dla algorytmu Johnsona dla stałej ilości wierzchołków def johnson(x, a, b, c): return [(a * pow(v, 2)) * np.log10(v) + (380 * b * v) + c for v in x] print("Porównanie algorytmów Floyda-Warshalla i Johnsona dla stałej ilości krawędzi") make_plot("../generated_graphs/const_380_edges.graph", "floyd_warshall", 20, "g", floyd_warshall) print("wykres << Floyd-Warshall") make_plot("../generated_graphs/const_380_edges.graph", "johnson", 20, "b", johnson) print("wykres << Johnson") plt.xlabel("liczba wierzchołków") plt.ylabel("czas (s)") plt.grid() plt.savefig(fname="pdf_files/Wykres_stałe_krawędzie_Floyd_Warshall_Johnson.pdf", dpi=300, quality=100, format="pdf") print("Wykres został zapisany do pliku \"Wykres_stałe_krawędzie_Floyd_Warshall_Johnson.pdf\"") plt.show()
import matplotlib.pyplot as plt from described.graph import Graph, Edge, Vertex from plots.make_plot import make_plot make_plot("const_380_edges.graph", "dijkstra_naive", 100, "r", use_polyfit=True, dim=3) make_plot("const_380_edges.graph", "dijkstra", 100, "g", use_polyfit=True, dim=3) plt.xlabel("liczba wierzchołków") plt.ylabel("czas (s)") plt.legend() plt.grid() plt.savefig(fname="Wykres_Dijkstra_naiwny_kolejka.pdf", dpi=300, quality=100, format="pdf") plt.show()
# funkcja dla gęstości 0.8 - ze sprawdzaniem def bellman_ford_08(x, a, b, c): return [(0.4 * a) * (pow(v, 3)) - (0.4 * b) * pow(v, 2) + c for v in x] # funkcja dla gęstości 0.8 def dijkstra_08(x, a, b, c): return [ (0.4 * a * np.log10(v)) * (pow(v, 2)) - (0.4 * b * np.log10(v)) * v + c for v in x ] print("Algorytm Bellmana-Forda bez sprawdzania ujemnych cykli") make_plot("../generated_graphs/density_0.4.graph", "bellman_ford_no_check", 20, "r", bellman_ford_08_no_check) print("wykres << bellman-ford bez sprawdzania") make_plot("../generated_graphs/density_0.4.graph", "bellman_ford", 20, "g", bellman_ford_08) print("wykres << bellman-ford ze sprawdzaniem") make_plot("../generated_graphs/density_0.4.graph", "dijkstra", 20, "b", dijkstra_08) print("wykres << dijkstra") plt.xlabel("liczba wierzchołków") plt.ylabel("czas (s)") plt.grid() plt.savefig(fname="pdf_files/Wykres_Bellman_Ford_bez_sprawdzania.pdf", dpi=300, quality=100, format="pdf")
for v in x ] # funkcja dla gęstości 0.8 def dijkstra_08(x, a, b, c): return [ (0.8 * a * np.log10(v)) * (pow(v, 2)) - (0.8 * b * np.log10(v)) * v + c for v in x ] print("Algorytm Dijkstry, wykres w zależności od gęstości grafu") make_plot("../generated_graphs/density_0.1.graph", "dijkstra", 200, "r", dijkstra_01, density=0.1) print("wykres << gęstość 0.1") make_plot("../generated_graphs/density_0.4.graph", "dijkstra", 200, "g", dijkstra_04, density=0.4) print("wykres << gęstość 0.4") make_plot("../generated_graphs/density_0.8.graph", "dijkstra", 200, "b", dijkstra_08,
import matplotlib.pyplot as plt from plots.make_plot import make_plot print("Poszukiwanie definicji grafu gęstego\nDla 10 wierzchołków") make_plot("../generated_graphs/const_10_vertices_edges_0_20.graph", "floyd_warshall", 100, "g", count_edges=True, use_polyfit=True) print("wykres << Floyd-Warshall") make_plot("../generated_graphs/const_10_vertices_edges_0_20.graph", "johnson", 100, "b", count_edges=True, use_polyfit=True) print("wykres << Johnson") plt.xlabel("liczba krawędzi") plt.ylabel("czas (s)") plt.grid() plt.savefig(fname="pdf_files/Wykres_granica_gęstego_grafu_10_wierzchołków.pdf", dpi=300, quality=100, format="pdf") plt.close() print("Wykres został zapisany do pliku \"Wykres_granica_gęstego_grafu_10_wierzchołków.pdf\"") print("-" * 50) print("Dla 50 wierzchołków") make_plot("../generated_graphs/const_50_vertices_edges_0_250.graph", "floyd_warshall", 30, "g", count_edges=True, use_polyfit=True) print("wykres << Floyd-Warshall") make_plot("../generated_graphs/const_50_vertices_edges_0_250.graph", "johnson", 30, "b", count_edges=True, use_polyfit=True) print("wykres << Johnson") plt.xlabel("liczba krawędzi") plt.ylabel("czas (s)") plt.grid() plt.savefig(fname="pdf_files/Wykres_granica_gęstego_grafu_50_wierzchołków.pdf", dpi=300, quality=100, format="pdf") plt.close() print("Wykres został zapisany do pliku \"Wykres_granica_gęstego_grafu_50_wierzchołków.pdf\"") print("-" * 50)
# funkcja dla gęstości 0.8 def dijkstra_all_08(x, a, b, c): return [ v * ((0.8 * a * np.log10(v)) * (pow(v, 2)) - (0.8 * b * np.log10(v)) * v + c) for v in x ] print( "Algorytm Dijkstry dla wszystkich wierzchołków, wykres w zależności od gęstości grafu" ) make_plot("../generated_graphs/density_0.1.graph", "dijkstra_all_vertices", 10, "r", dijkstra_all_01, density=0.1) print("wykres << gęstość 0.1") make_plot("../generated_graphs/density_0.4.graph", "dijkstra_all_vertices", 10, "g", dijkstra_all_04, density=0.4) print("wykres << gęstość 0.4") make_plot("../generated_graphs/density_0.8.graph", "dijkstra_all_vertices", 10, "b", dijkstra_all_08,
# jedna funkcja dla algorytmu Floyda-Warshalla dla wszystkich gęstości - zależność od 1 zmiennej def floyd_warshall(x, a, b): return [a * pow(50, 3) + b for _ in x] # funkcja dla dla algorytmu Johnsona dla stałej ilości wierzchołków def johnson(x, a, b): return [(50 * a) * e + (250 * np.log10(50)) + b for e in x] print( "Porównanie algorytmów z iloczynem odległości, Floyda-Warshalla i Johnsona dla stałej ilości wierzchołków" ) make_plot("../generated_graphs/const_50_vertices.graph", "faster_matrix_multiply", 20, "r", count_edges=True, use_polyfit=True) print("wykres << matrix") make_plot("../generated_graphs/const_50_vertices.graph", "floyd_warshall", 20, "g", count_edges=True, use_polyfit=True) print("wykres << Floyd-Warshall") make_plot("../generated_graphs/const_50_vertices.graph", "johnson", 20, "b", count_edges=True,
import matplotlib.pyplot as plt import numpy as np from plots.make_plot import make_plot # jedna funkcja dla wszystkich gęstości - zależność od 1 zmiennej def matrix(x, a, b): return [a * pow(v, 3) * np.log10(v) + b for v in x] print("Algorytm z iloczynem odległości, w zależności od gęstości grafu") make_plot("../generated_graphs/density_0.1.graph", "faster_matrix_multiply", 20, "r", matrix, density=0.1) print("wykres << gęstość 0.1") make_plot("../generated_graphs/density_0.4.graph", "faster_matrix_multiply", 20, "g", matrix, density=0.4) print("wykres << gęstość 0.4") make_plot("../generated_graphs/density_0.8.graph", "faster_matrix_multiply", 20, "b", matrix, density=0.8)
import matplotlib.pyplot as plt from plots.make_plot import make_plot # jedna funkcja dla wszystkich gęstości - zależność od 1 zmiennej def floyd_warshall(x, a, b): return [a * pow(v, 3) + b for v in x] print("Algorytm Floyda-Warshalla, w zależności od gęstości grafu") make_plot("../generated_graphs/density_0.1.graph", "floyd_warshall", 20, "r", floyd_warshall, density=0.1) print("wykres << gęstość 0.1") make_plot("../generated_graphs/density_0.4.graph", "floyd_warshall", 20, "g", floyd_warshall, density=0.4) print("wykres << gęstość 0.4") make_plot("../generated_graphs/density_0.8.graph", "floyd_warshall", 20, "b", floyd_warshall, density=0.8) print("wykres << gęstość 0.8")
import matplotlib.pyplot as plt from plots.make_plot import make_plot print( "Porównanie algorytmów Dijkstry i Bellmana-Forda dla stałej ilości wierzchołków" ) make_plot("../generated_graphs/const_50_vertices.graph", "dijkstra", 100, "g", count_edges=True, use_polyfit=True) print("wykres << Dijkstra") make_plot("../generated_graphs/const_50_vertices.graph", "bellman_ford", 100, "b", count_edges=True, use_polyfit=True) print("wykres << Bellman-Ford") plt.xlabel("liczba krawędzi") plt.ylabel("czas (s)") plt.grid() plt.savefig( fname="pdf_files/Wykres_stałe_wierzchołki_Dijkstra_Bellman_Ford.pdf", dpi=300, quality=100, format="pdf") print( "Wykres został zapisany do pliku \"Wykres_stałe_wierzchołki_Dijkstra_Bellman_Ford.pdf\""