corrections

This commit is contained in:
Mateusz 2022-06-21 15:55:33 +02:00
parent 5b67b5b953
commit 6e42853e38
2 changed files with 24 additions and 27 deletions

View File

@ -17,7 +17,8 @@
"source": [ "source": [
"## Problem\n", "## Problem\n",
"\n", "\n",
"Emulacja ataku sieci..." "W jakich topologiach sieci komputerowych potencjalny atak wirusa rozprzestrzeniałby się najszybciej, a w których najwolniej?\n",
"Aby rozwiązać ten problem zaprojektowaliśmy symulację ataków wirusa na różne rodzaje topologii sieci."
] ]
}, },
{ {
@ -31,29 +32,29 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [ "source": [
"## Spacer losowe prosty na grafie\n", "## Spacer losowe prosty na grafie\n",
"Inaczej błądzenie losowe. Obiekt przemieszczający się na grafie losowo wybiera jeden z sąsiednich do obecnego wezłów, żeby się do nich przemieścić. Ruch ten nie zależy od historii ruchów - tylko ostatnie przemieszczenie jest brane pod uwagę przy podejmowaniu decyzji." "Inaczej błądzenie losowe. Obiekt przemieszczający się na grafie losowo wybiera jeden z sąsiednich do obecnego wezłów, żeby się do nich przemieścić. Ruch ten nie zależy od historii ruchów - tylko ostatnie przemieszczenie jest brane pod uwagę przy podejmowaniu decyzji."
], ]
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"source": [
"## Model\n",
"Model sieci reprezentowany jest jako graf nieskierowany. Każdy węzeł reprezentuje w nim urządzenie a krawędzie połączenia między nimi. Węzły zaznaczone na czerwono reprezentują urządzenie zainfekowane przez wirusa, który przemieszcza się do nowych urządzeń spacerem losowym - w każdym kroku wirus wybiera jeden z sąsiadujących węzłów z jednakowym prawdopodobieństwem i próbuje go zainfekować."
],
"metadata": { "metadata": {
"collapsed": false, "collapsed": false,
"pycharm": { "pycharm": {
"name": "#%% md\n" "name": "#%% md\n"
} }
} },
"source": [
"## Model\n",
"Model sieci reprezentowany jest jako graf nieskierowany. Każdy węzeł reprezentuje w nim urządzenie a krawędzie połączenia między nimi. Węzły zaznaczone na czerwono reprezentują urządzenie zainfekowane przez wirusa, który przemieszcza się do nowych urządzeń spacerem losowym - w każdym kroku wirus wybiera jeden z sąsiadujących węzłów z jednakowym prawdopodobieństwem i próbuje go zainfekować."
]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
@ -65,12 +66,10 @@
] ]
}, },
{ {
"cell_type": "code", "cell_type": "markdown",
"execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [],
"source": [ "source": [
"# kod" "### Przedstawienie kodu"
] ]
}, },
{ {
@ -81,12 +80,10 @@
] ]
}, },
{ {
"cell_type": "code", "cell_type": "markdown",
"execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [],
"source": [ "source": [
"# kod" "### Przegląd plików gif"
] ]
}, },
{ {
@ -121,4 +118,4 @@
}, },
"nbformat": 4, "nbformat": 4,
"nbformat_minor": 2 "nbformat_minor": 2
} }

View File

@ -206,13 +206,13 @@ def bus_experiment():
sizes = [0, 8, 15] sizes = [0, 8, 15]
for i in sizes: for i in sizes:
bus, bus_avg_degree, node_count = bus_network(20 + i) bus, bus_avg_degree, node_count = bus_network(20 + i)
do_graph_animation('bus{i}.gif', bus, 90, nx.spiral_layout) do_graph_animation(f'bus{i}.gif', bus, 90, nx.spiral_layout)
speeds.append(bus.rounds_survived / node_count) speeds.append(bus.rounds_survived / node_count)
degrees.append(bus_avg_degree) degrees.append(bus_avg_degree)
print(f"\n{node_count} NODE STAR") print(f"\n{node_count} NODE STAR")
print(f"average degree = {bus_avg_degree}") print(f"average degree = {bus_avg_degree}")
print(f"propagation speed = {round(speeds[-1], 2)}") print(f"propagation speed = {round(speeds[-1], 2)}")
print(f"bus{i} rounds survived = {bus.rounds_survived + 1}") print(f"bus_{i} rounds survived = {bus.rounds_survived + 1}")
summary(degrees, speeds) summary(degrees, speeds)
@ -222,13 +222,13 @@ def ring_experiment():
sizes = [0, 8, 15] sizes = [0, 8, 15]
for i in sizes: for i in sizes:
ring, ring_avg_degree, node_count = ring_network(20 + i) ring, ring_avg_degree, node_count = ring_network(20 + i)
do_graph_animation('bus{i}.gif', ring, 90, nx.spiral_layout) do_graph_animation(f'ring{i}.gif', ring, 90, nx.spiral_layout)
speeds.append(ring.rounds_survived / node_count) speeds.append(ring.rounds_survived / node_count)
degrees.append(ring_avg_degree) degrees.append(ring_avg_degree)
print(f"\n{node_count} NODE STAR") print(f"\n{node_count} NODE STAR")
print(f"average degree = {ring_avg_degree}") print(f"average degree = {ring_avg_degree}")
print(f"propagation speed = {round(speeds[-1], 2)}") print(f"propagation speed = {round(speeds[-1], 2)}")
print(f"ring{i} rounds survived = {ring.rounds_survived + 1}") print(f"ring_{i} rounds survived = {ring.rounds_survived + 1}")
def star_experiment(): def star_experiment():
degrees = [] degrees = []
@ -242,7 +242,7 @@ def star_experiment():
print(f"\n{node_count} NODE STAR") print(f"\n{node_count} NODE STAR")
print(f"average degree = {star_avg_degree}") print(f"average degree = {star_avg_degree}")
print(f"propagation speed = {round(speeds[-1], 2)}") print(f"propagation speed = {round(speeds[-1], 2)}")
print(f"star{i} rounds survived = {star.rounds_survived + 1}") print(f"star_{i} rounds survived = {star.rounds_survived + 1}")
summary(degrees, speeds) summary(degrees, speeds)