corrections
This commit is contained in:
parent
5b67b5b953
commit
6e42853e38
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user