From 6e42853e3878afb755f149c074cb1edfab2fdc4b Mon Sep 17 00:00:00 2001 From: Mateusz Date: Tue, 21 Jun 2022 15:55:33 +0200 Subject: [PATCH] corrections --- network_attack_propagation.ipynb | 41 +++++++++++++++----------------- network_attack_propagation.py | 10 ++++---- 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/network_attack_propagation.ipynb b/network_attack_propagation.ipynb index c5fd1a1..09c0b99 100644 --- a/network_attack_propagation.ipynb +++ b/network_attack_propagation.ipynb @@ -17,7 +17,8 @@ "source": [ "## Problem\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", + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## 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." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "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": { "collapsed": false, "pycharm": { "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", @@ -65,12 +66,10 @@ ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "# kod" + "### Przedstawienie kodu" ] }, { @@ -81,12 +80,10 @@ ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "# kod" + "### Przegląd plików gif" ] }, { @@ -121,4 +118,4 @@ }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} diff --git a/network_attack_propagation.py b/network_attack_propagation.py index e11c2f9..4a8ce9d 100644 --- a/network_attack_propagation.py +++ b/network_attack_propagation.py @@ -206,13 +206,13 @@ def bus_experiment(): sizes = [0, 8, 15] for i in sizes: 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) degrees.append(bus_avg_degree) print(f"\n{node_count} NODE STAR") print(f"average degree = {bus_avg_degree}") 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) @@ -222,13 +222,13 @@ def ring_experiment(): sizes = [0, 8, 15] for i in sizes: 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) degrees.append(ring_avg_degree) print(f"\n{node_count} NODE STAR") print(f"average degree = {ring_avg_degree}") 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(): degrees = [] @@ -242,7 +242,7 @@ def star_experiment(): print(f"\n{node_count} NODE STAR") print(f"average degree = {star_avg_degree}") 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)