示例#1
0
# 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,
示例#6
0
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")
示例#11
0
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\""