1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-21 18:34:18 +00:00

Complete 9 - Algoritmi distribuiti/3 - Computazione distribuita

This commit is contained in:
Steffo 2023-11-05 05:15:02 +01:00
parent 743c08ed68
commit fe7f3107ed
Signed by: steffo
GPG key ID: 2A24051445686895
63 changed files with 1796 additions and 1562 deletions

1
.gitignore vendored
View file

@ -7,3 +7,4 @@
.trash
**/0 - Materiale di studio/
**/0 - Piano di studi/

View file

@ -1,11 +0,0 @@
{
"accentColor": "#d14224",
"textFontFamily": "",
"monospaceFontFamily": "",
"theme": "obsidian",
"baseFontSize": 16,
"enabledCssSnippets": [
"canvas-zoom",
"canvas-node-placeholder-size"
]
}

View file

@ -1,11 +0,0 @@
{
"accentColor": "#d14224",
"textFontFamily": "",
"monospaceFontFamily": "",
"theme": "obsidian",
"baseFontSize": 16,
"enabledCssSnippets": [
"canvas-zoom",
"canvas-node-placeholder-size"
]
}

View file

@ -1,4 +0,0 @@
[
"obsidian-file-color",
"steffo-file-index"
]

View file

@ -1,31 +0,0 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"page-preview": false,
"daily-notes": false,
"templates": true,
"note-composer": false,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"starred": false,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": false,
"publish": false,
"sync": false,
"bookmarks": true,
"properties": true
}

View file

@ -1,31 +0,0 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"page-preview": false,
"daily-notes": false,
"templates": true,
"note-composer": false,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"starred": false,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": false,
"publish": false,
"sync": false,
"bookmarks": true,
"properties": true
}

View file

@ -1,17 +0,0 @@
[
"file-explorer",
"global-search",
"switcher",
"graph",
"backlink",
"canvas",
"outgoing-link",
"tag-pane",
"properties",
"templates",
"command-palette",
"editor-status",
"bookmarks",
"outline",
"word-count"
]

View file

@ -1,17 +0,0 @@
[
"file-explorer",
"global-search",
"switcher",
"graph",
"backlink",
"canvas",
"outgoing-link",
"tag-pane",
"properties",
"templates",
"command-palette",
"editor-status",
"bookmarks",
"outline",
"word-count"
]

36
.obsidian/graph.json vendored
View file

@ -6,39 +6,17 @@
"hideUnresolved": false,
"showOrphans": true,
"collapse-color-groups": false,
"colorGroups": [
{
"query": "path:\"8 - Sistemi complessi\"",
"color": {
"a": 1,
"rgb": 16776960
}
},
{
"query": "path:\"9 - Algoritmi distribuiti\" ",
"color": {
"a": 1,
"rgb": 255
}
},
{
"query": "path:\"8 - Crittografia applicata\" ",
"color": {
"a": 1,
"rgb": 16728064
}
}
],
"colorGroups": [],
"collapse-display": false,
"showArrow": false,
"textFadeMultiplier": -3,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
"lineSizeMultiplier": 1,
"collapse-forces": false,
"centerStrength": 0.864583333333333,
"repelStrength": 20,
"centerStrength": 0.518713248970312,
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 30,
"scale": 0.14225414259055147,
"close": true
"linkDistance": 250,
"scale": 0.32007182082874036,
"close": false
}

View file

@ -117,10 +117,6 @@
"path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "0 - Generale",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
@ -281,10 +277,6 @@
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/5 - Leader election",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/5 - Leader election/2 - Su anello",
"color": "fc3lLaITDn62PYbzBhqxl"
@ -350,7 +342,7 @@
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "X - Introduction to quantum information processing/★ introduction to quantum information processing.md",
"path": "7 - Introduction to quantum information processing/★ introduction to quantum information processing.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
@ -374,7 +366,7 @@
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "X - Fondamenti di machine learning/★ fondamenti di machine learning.md",
"path": "9 - Fondamenti di machine learning/★ fondamenti di machine learning.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
@ -397,14 +389,6 @@
"path": "9 - Algoritmi distribuiti/★ algoritmi distribuiti.md",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/terminazione locale.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/terminazione globale.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Computation in trees",
"color": "fc3lLaITDn62PYbzBhqxl"
@ -412,6 +396,22 @@
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Computation in trees/★ computation in trees.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "0 - Piano di studi/★ piano di studi.md",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/7 - Guasti",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/traversal+ protocol.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/traversal protocol.md",
"color": "fc3lLaITDn62PYbzBhqxl"
}
]
}

View file

@ -1,345 +0,0 @@
{
"palette": [
{
"id": "7j7Pqog0VHMVVAfazMNlb",
"name": "Accent",
"value": "#d14224"
},
{
"id": "me4XBNQC4rwzQFLlvIAn0",
"name": "System",
"value": "#5c0f00"
},
{
"id": "fc3lLaITDn62PYbzBhqxl",
"name": "To do",
"value": "#d7a628"
}
],
"fileColors": [
{
"path": "8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/2 - Operation framework/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/2 - Confidenzialità/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/6 - Indistinguibilità autenticata/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/3 - Contestualizzazione ed estendibilità/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/4 - Controllo dell'accesso/1 - Modello/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "7 - High performance computing/★ glossario.md",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Metodologie di sviluppo software/★ Materiale di studio/1 - Slides/05-AgileMethodologies_2_decrypted.pdf",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Metodologie di sviluppo software/★ Materiale di studio/1 - Slides/06-ProjectEstimation.pdf",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Metodologie di sviluppo software/★ Materiale di studio/1 - Slides/07-DesignPatterns.pdf",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Metodologie di sviluppo software/★ Materiale di studio",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/2 - Teoria delle curve ellittiche/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "0 - Generale/★ esami.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "0 - Generale",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/5 - Strutture dati particolari/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Integrità semplice/★ mappa concettuale.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Sistemi complessi/2 - Sistemi complessi/★ sistemi complessi.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Sistemi complessi/3 - Automi cellulari/★ automi cellulari.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Sistemi complessi/4 - Grafi/★ grafi.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Sistemi complessi/5 - Origine della vita/★ insiemi auto-replicanti.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Sistemi complessi/6 - Robustezza/★ robustezza.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Sistemi complessi/1 - Sistemi dinamici/★ sistemi dinamici.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Sistemi complessi/2 - Sistemi complessi/topological mixing.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Sistemi complessi/2 - Sistemi complessi/dense periodic orbits.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Sistemi complessi/2 - Sistemi complessi/Landau's phenomenological theory.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Sistemi complessi/4 - Grafi/percolation threshold.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Sistemi complessi/4 - Grafi/★ grafi multi-livello.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Sistemi complessi/4 - Grafi/rete interdipendente.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Sistemi complessi/4 - Grafi/rete multiplex correlata.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Sistemi complessi/4 - Grafi/★ ipergrafi.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "8 - Sistemi complessi/5 - Origine della vita/insieme auto-catalitico riflessivo generato da cibo.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/07_RBNd_COLOR.pdf",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Sistemi complessi/6 - Robustezza/🞵 parentesi anti-eugenica.md",
"color": "me4XBNQC4rwzQFLlvIAn0"
},
{
"path": "8 - Sistemi complessi/6 - Robustezza/robustezza differenziale.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Sistemi complessi/6 - Robustezza/versatilità.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Sistemi complessi/6 - Robustezza/evolvibilità.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Sistemi complessi/5 - Origine della vita/modello di Kauffman gene-RBN.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Sistemi complessi/5 - Origine della vita/★ geni come random boolean network.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "9 - Algoritmi distribuiti/1 - Problemi",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/1 - Problemi/★ problemi.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "9 - Algoritmi distribuiti/1 - Problemi/classe di problemi NP-difficili.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/2 - Algoritmi di approssimazione/relax and round.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/2 - Algoritmi di approssimazione/vertex cover problem.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/2 - Algoritmi di approssimazione/relax and round per vertex cover problem.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/2 - Algoritmi di approssimazione/minimum perfect matching.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/2 - Algoritmi di approssimazione/★ algoritmi di approssimazione.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "9 - Algoritmi distribuiti/2 - Algoritmi di approssimazione",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/flooding broadcast v3.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/flooding broadcast v2.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/protocollo shout v1.md",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/5 - Routing",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Leader election",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Leader election/2 - Su anello",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Leader election/3 - Su grafo generico",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Leader election/1 - Concetti",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "7 - Big data analytics/★ indice.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
},
{
"path": "7 - Introduction to quantum information processing",
"color": "fc3lLaITDn62PYbzBhqxl"
},
{
"path": "8 - Crittografia applicata/★ indice.canvas",
"color": "7j7Pqog0VHMVVAfazMNlb"
}
]
}

View file

@ -1,210 +0,0 @@
{
"main": {
"id": "ea42b6c6a6ada42e",
"type": "split",
"children": [
{
"id": "60117978cefd2149",
"type": "tabs",
"children": [
{
"id": "24671e9d856e1cb9",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "README.md",
"mode": "source",
"backlinks": false,
"source": false
}
}
}
],
"stacked": true
}
],
"direction": "vertical"
},
"left": {
"id": "3dc78bddd518c3f3",
"type": "split",
"children": [
{
"id": "d5fc1d7e0478ba75",
"type": "tabs",
"children": [
{
"id": "cc2c082e511eafc9",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical"
}
}
},
{
"id": "4240e87522252410",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "appunti",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
}
}
},
{
"id": "7b02a464bd7f94f4",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {}
}
}
]
}
],
"direction": "horizontal",
"width": 282.5
},
"right": {
"id": "4ef3f291c2866b38",
"type": "split",
"children": [
{
"id": "a0f58612eee5101f",
"type": "tabs",
"children": [
{
"id": "da0ecf3eab9f1146",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "README.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
}
}
},
{
"id": "517852a0c1eb77e0",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"file": "README.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
}
}
},
{
"id": "7e28c6b81ba7a75b",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true
}
}
},
{
"id": "d08b5edb3d762c99",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"file": "README.md"
}
}
},
{
"id": "3da04ae84a020b40",
"type": "leaf",
"state": {
"type": "all-properties",
"state": {
"sortOrder": "frequency"
}
}
}
]
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"canvas:Create new canvas": true,
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"command-palette:Open command palette": false,
"templates:Insert template": false
}
},
"active": "24671e9d856e1cb9",
"lastOpenFiles": [
"LICENSE.md",
"LICENSE.txt",
"README.md",
"7 - High performance computing.md",
"7 - Big data analytics/README.md",
"7+-+Big.md",
"7.md",
"9 - Programmazione mobile/README.md",
"9 - Kernel hacking/README.md",
"7 - High performance computing/README.md",
"X - Fondamenti di machine learning/README.md",
"9 - Cloud and edge computing/README.md",
"9 - Algoritmi distribuiti/0 - Materiale di studio/Slides/01 - Problemi e algoritmi.pdf",
"9 - Algoritmi distribuiti/README.md",
"8 - Sviluppo di software sicuro/README.md",
"8 - Sistemi complessi/README.md",
"8 - Metodologie di sviluppo software/README.md",
"8 - Sistemi complessi/Untitled.canvas",
"8 - Crittografia applicata/README.md",
"X - Introduction to quantum information processing/README.md",
"7 - High performance computing/glossario.md",
"7 - Big data analytics/★ indice.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/★ concetti.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/5 - Routing/★ routing.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Leader election/★ leader election.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/★ spanning tree.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/★ broadcast.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/broadcast.md",
"0 - Template/problema distribuito.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/costruzione di uno spanning tree.md",
"0 - Template/algoritmo distribuito.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Leader election/1 - Concetti/leader election.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/costruzione di uno spanning tree tramite traversal.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/wake-up problem.md",
"0 - Template",
"8 - Sistemi complessi/2 - Sistemi complessi/★ sistemi complessi.canvas",
"9 - Algoritmi distribuiti/0 - Materiale di studio/Slides/03 - Algoritmi distribuiti.pdf",
"9 - Algoritmi distribuiti/1 - Problemi/★ problemi.canvas",
"0 - Generale/★ esami.canvas",
"steffo-file-index-ignore.json",
"steffo-file-index-ignore.json.part",
"steffo-file-index.json",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Leader election/1 - Concetti",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Leader election/3 - Su grafo generico",
"8 - Sistemi complessi/3 - Automi cellulari/modello HPP · regola di transizione.png",
"8 - Crittografia applicata/3 - Comunicazione/2 - Garanzie/2 - Indistinguibilità/Pasted image 20230331181648.png"
]
}

View file

@ -1,210 +0,0 @@
{
"main": {
"id": "ea42b6c6a6ada42e",
"type": "split",
"children": [
{
"id": "60117978cefd2149",
"type": "tabs",
"children": [
{
"id": "24671e9d856e1cb9",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "README.md",
"mode": "source",
"backlinks": false,
"source": false
}
}
}
],
"stacked": true
}
],
"direction": "vertical"
},
"left": {
"id": "3dc78bddd518c3f3",
"type": "split",
"children": [
{
"id": "d5fc1d7e0478ba75",
"type": "tabs",
"children": [
{
"id": "cc2c082e511eafc9",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical"
}
}
},
{
"id": "4240e87522252410",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "appunti",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
}
}
},
{
"id": "7b02a464bd7f94f4",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {}
}
}
]
}
],
"direction": "horizontal",
"width": 282.5
},
"right": {
"id": "4ef3f291c2866b38",
"type": "split",
"children": [
{
"id": "a0f58612eee5101f",
"type": "tabs",
"children": [
{
"id": "da0ecf3eab9f1146",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "README.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
}
}
},
{
"id": "517852a0c1eb77e0",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"file": "README.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
}
}
},
{
"id": "7e28c6b81ba7a75b",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true
}
}
},
{
"id": "d08b5edb3d762c99",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"file": "README.md"
}
}
},
{
"id": "3da04ae84a020b40",
"type": "leaf",
"state": {
"type": "all-properties",
"state": {
"sortOrder": "frequency"
}
}
}
]
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"canvas:Create new canvas": true,
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"command-palette:Open command palette": false,
"templates:Insert template": false
}
},
"active": "24671e9d856e1cb9",
"lastOpenFiles": [
"LICENSE.md",
"LICENSE.txt",
"README.md",
"7 - High performance computing.md",
"7 - Big data analytics/README.md",
"7+-+Big.md",
"7.md",
"9 - Programmazione mobile/README.md",
"9 - Kernel hacking/README.md",
"7 - High performance computing/README.md",
"X - Fondamenti di machine learning/README.md",
"9 - Cloud and edge computing/README.md",
"9 - Algoritmi distribuiti/0 - Materiale di studio/Slides/01 - Problemi e algoritmi.pdf",
"9 - Algoritmi distribuiti/README.md",
"8 - Sviluppo di software sicuro/README.md",
"8 - Sistemi complessi/README.md",
"8 - Metodologie di sviluppo software/README.md",
"8 - Sistemi complessi/Untitled.canvas",
"8 - Crittografia applicata/README.md",
"X - Introduction to quantum information processing/README.md",
"7 - High performance computing/glossario.md",
"7 - Big data analytics/★ indice.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/★ concetti.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/5 - Routing/★ routing.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Leader election/★ leader election.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/★ spanning tree.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/★ broadcast.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/broadcast.md",
"0 - Template/problema distribuito.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/costruzione di uno spanning tree.md",
"0 - Template/algoritmo distribuito.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Leader election/1 - Concetti/leader election.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/costruzione di uno spanning tree tramite traversal.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/wake-up problem.md",
"0 - Template",
"8 - Sistemi complessi/2 - Sistemi complessi/★ sistemi complessi.canvas",
"9 - Algoritmi distribuiti/0 - Materiale di studio/Slides/03 - Algoritmi distribuiti.pdf",
"9 - Algoritmi distribuiti/1 - Problemi/★ problemi.canvas",
"0 - Generale/★ esami.canvas",
"steffo-file-index-ignore.json",
"steffo-file-index-ignore.json.part",
"steffo-file-index.json",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Leader election/1 - Concetti",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Leader election/3 - Su grafo generico",
"8 - Sistemi complessi/3 - Automi cellulari/modello HPP · regola di transizione.png",
"8 - Crittografia applicata/3 - Comunicazione/2 - Garanzie/2 - Indistinguibilità/Pasted image 20230331181648.png"
]
}

View file

@ -0,0 +1,212 @@
{
"main": {
"id": "ea42b6c6a6ada42e",
"type": "split",
"children": [
{
"id": "353bd9b9e09f62d7",
"type": "tabs",
"children": [
{
"id": "6e2c961c3fbc766e",
"type": "leaf",
"state": {
"type": "canvas",
"state": {
"file": "9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/★ concetti.canvas",
"viewState": {
"x": 569.2194349966362,
"y": -1224.5487072802703,
"zoom": -2.8
}
}
}
}
],
"stacked": true
}
],
"direction": "vertical"
},
"left": {
"id": "3dc78bddd518c3f3",
"type": "split",
"children": [
{
"id": "d5fc1d7e0478ba75",
"type": "tabs",
"children": [
{
"id": "cc2c082e511eafc9",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical"
}
}
},
{
"id": "4240e87522252410",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "stato di un'enti",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
}
}
},
{
"id": "7b02a464bd7f94f4",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {}
}
}
]
}
],
"direction": "horizontal",
"width": 282.5
},
"right": {
"id": "4ef3f291c2866b38",
"type": "split",
"children": [
{
"id": "a0f58612eee5101f",
"type": "tabs",
"children": [
{
"id": "da0ecf3eab9f1146",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/★ concetti.canvas",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
}
}
},
{
"id": "517852a0c1eb77e0",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"file": "9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/★ concetti.canvas",
"linksCollapsed": false,
"unlinkedCollapsed": true
}
}
},
{
"id": "7e28c6b81ba7a75b",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true
}
}
},
{
"id": "d08b5edb3d762c99",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"file": "9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/★ concetti.canvas"
}
}
},
{
"id": "3da04ae84a020b40",
"type": "leaf",
"state": {
"type": "all-properties",
"state": {
"sortOrder": "frequency"
}
}
}
]
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"canvas:Create new canvas": true,
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"templates:Insert template": false
}
},
"active": "6e2c961c3fbc766e",
"lastOpenFiles": [
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/criterio di costo sincrono.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/criterio di costo asincrono.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/★ concetti.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/restrizione di tempo.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/ritardo di comunicazione unitario.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/ritardo di comunicazione limitato.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/sistema distribuito asincrono.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/tick.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/ritardo di comunicazione illimitato.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/terminazione globale.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/terminazione locale.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/7 - Guasti/teorema innominato.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/sincronicità.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/7 - Guasti/edge-broadcast-possibility.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/7 - Guasti/ft-broad-election.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/7 - Guasti/leader election con fallimenti su grafo completo.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/7 - Guasti/two steps.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/7 - Guasti/consenso con fallimenti su grafo completo.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/one step.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/flooding v3.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/7 - Guasti/consenso broadcast.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/restrizione di affidabilità.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/7 - Guasti",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/condiviso.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/X - Guasti/component failure.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/X - Guasti/temporary fault.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/X - Guasti/permanent fault.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/X - Guasti/crash fault.md",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/X - Guasti",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/Untitled",
"9 - Algoritmi distribuiti/0 - Materiale di studio/Slides/07 - Routing.pdf",
"steffo-file-index.sync-conflict-20231102-110633-UV5KNJL.json",
"9 - Programmazione mobile/0 - Materiale di studio/Slides/2 - Computer graphics/6 - GLTextures.pdf",
"9 - Programmazione mobile/0 - Materiale di studio/Slides/1 - Android/05 - MultiThread.pdf",
"9 - Programmazione mobile/0 - Materiale di studio/Slides/1 - Android/01 - IntroMobileOS.pdf",
"9 - Programmazione mobile/0 - Materiale di studio/Slides/2 - Computer graphics/8 - GLCS.pdf",
"9 - Programmazione mobile/0 - Materiale di studio/Slides/1 - Android/06 - AndroidX&More.pdf",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/6 - Routing/★ routing.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/5 - Leader election/★ leader election.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/4 - Computation in trees/★ computation in trees.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/5 - Routing/★ routing.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/★ spanning tree.canvas",
"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/★ broadcast.canvas",
"8 - Crittografia applicata/★ indice.canvas",
"7 - Big data analytics/★ indice.canvas",
"0 - Generale/★ esami.canvas",
"8 - Sistemi complessi/3 - Automi cellulari/modello HPP · regola di transizione.png",
"8 - Crittografia applicata/3 - Comunicazione/2 - Garanzie/2 - Indistinguibilità/Pasted image 20230331181648.png"
]
}

View file

@ -1,8 +1,7 @@
[[algoritmo]] di ==PROBLEMA==.
## Funzionamento
==...==
> [!Summary]
> ==...==
## [[Comportamento]]

View file

@ -1,4 +1,4 @@
[[teorema]].
[[teorema innominato]].
Dimostra come [[modello di calcolo|modelli di calcolo]] diversi si possano [[simulazione|simulare]] a vicenda con [[costo computazionale]] [[polinomiale]].

View file

@ -7,7 +7,7 @@ Misura di [[costo computazionale]] per [[sistema distribuito|sistemi distribuiti
Può essere di:
- [[comunicazione]]
- [[tempo]]
- [[criterio di costo sincrono totale]]
- [[criterio di costo sincrono]]
- [[criterio di costo asincrono]]
- [[spazio]] usato dai [[messaggio|messaggi]]:
- [[criterio di costo logaritmico]]

View file

@ -1,3 +1,3 @@
[[criterio di costo]] di [[tempo]] per [[sistema distribuito|sistemi distribuiti]].
[[criterio di costo]] di [[tempo]] per [[sistema distribuito|sistemi distribuiti]] con [[ritardo di comunicazione illimitato]].
Misurato con la catena di [[messaggio|messaggi]] più lunga del [[sistema distribuito]].

View file

@ -1,3 +1,3 @@
[[criterio di costo]] di [[tempo]] per [[sistema distribuito|sistemi distribuiti]].
[[criterio di costo]] di [[tempo]] per [[sistema distribuito|sistemi distribuiti]] con [[ritardo di comunicazione limitato]].
Misurato con 1 unità di tempo per 1 [[messaggio]] scambiato.

View file

@ -3,6 +3,6 @@ aliases:
- grafo indiretto
---
[[restrizione di comunicazione|restrizione di comunicazione]] applicabile a un [[canale di comunicazione]].
[[restrizione di topologia]] applicabile a un [[canale di comunicazione]].
Determina che entrambe le [[entità]] possono inviare e ricevere [[messaggio|messaggi]] in esso.

View file

@ -3,6 +3,6 @@ aliases:
- grafo diretto
---
[[restrizione di comunicazione|restrizione di comunicazione]] applicabile a un [[canale di comunicazione]].
[[restrizione di topologia]] applicabile a un [[canale di comunicazione]].
Determina che una sola delle due [[entità]] può inviare [[messaggio|messaggi]] in esso, e che l'altra può solo riceverli.

View file

@ -1 +1,6 @@
Avvenimento [[istantaneo]] che ha luogo all'esterno del [[sistema]].
---
aliases:
- spontaneamente
---
Avvenimento [[istantaneo]] che ha luogo all'esterno del [[sistema]].

View file

@ -2,4 +2,4 @@
- se nel modello si verificano [[guasti]]
- di che tipo
- quanto di frequente
- se le [[entità]] sono in grado di rilevarli
- se le [[entità]] sono in grado di rilevarli

View file

@ -1,3 +1,3 @@
[[restrizioni al modello dei sistemi distribuiti|restrizione]] che specifica:
- quanto [[tempo]] ci mette un [[messaggio]]ad arrivare
- quanto [[tempo]] ci mette un [[messaggio]] ad arrivare
- se i [[clock]] delle entità sono sincronizzati

View file

@ -0,0 +1,10 @@
---
aliases:
- sistema distribuito asincrono
- asincronicità
- asincrono
---
[[restrizione di tempo|"restrizione" di tempo]].
Specifica che un [[messaggio]] può richiedere un tempo illimitato per arrivare a destinazione.

View file

@ -1,3 +1,10 @@
---
aliases:
- sistema distribuito sincrono
- sincronicità
- sincrono
---
[[restrizione di tempo]].
Specifica che se un [[messaggio]] non viene ricevuto entro un certo [[timeout]], significa che il suo invio è fallito.

View file

@ -1 +0,0 @@
[[sistema distribuito]] che non ha [[restrizione di tempo]].

View file

@ -1,59 +1,59 @@
{
"nodes":[
{"id":"0e88c8c55309b762","type":"group","x":220,"y":-2860,"width":1960,"height":2480,"label":"Restrizioni del modello"},
{"id":"840584051841921d","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/tick.md","x":240,"y":960,"width":400,"height":400},
{"id":"ec508dff8f0fad49","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/clock.md","x":240,"y":400,"width":400,"height":400},
{"id":"0e88c8c55309b762","type":"group","x":220,"y":-2860,"width":2440,"height":2480,"label":"Restrizioni del modello"},
{"id":"de6e2a65c63084c7","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/stato di un'entità.md","x":800,"y":-160,"width":400,"height":400},
{"id":"7126bfdd6ead22a9","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/insieme degli stati di un'entità.md","x":1360,"y":-160,"width":400,"height":400},
{"id":"c986480451be1efe","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/entità.md","x":240,"y":-160,"width":400,"height":400},
{"id":"9ff0a423dbb281a0","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/rete di comunicazione.md","x":-320,"y":-160,"width":400,"height":400},
{"id":"40f55b66f9214ecd","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/sistema distribuito.md","x":-320,"y":-1360,"width":400,"height":400},
{"id":"97624a26a3c7d126","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/sistema sequenziale.md","x":-320,"y":-2480,"width":400,"height":400},
{"id":"97d5f142a5c95ce3","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/sistema parallelo.md","x":-320,"y":-1920,"width":400,"height":400},
{"id":"961e2a0551edc3c5","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/restrizione di comunicazione.md","x":800,"y":-2840,"width":400,"height":200},
{"id":"bdeb2e85bcb32f7e","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/restrizioni al modello dei sistemi distribuiti.md","x":240,"y":-800,"width":400,"height":400},
{"id":"d8754617f38feb06","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/canale di comunicazione.md","x":-320,"y":400,"width":400,"height":400},
{"id":"afa296d887da4394","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/evento.md","x":-600,"y":1520,"width":400,"height":400},
{"id":"44b1b735656f3c4b","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/azione.md","x":1360,"y":1520,"width":400,"height":400},
{"id":"1d32058a6d2df7ec","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/comportamento.md","x":800,"y":1520,"width":400,"height":400},
{"id":"ce14b5c90fd5e953","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/ambiente.md","x":-1440,"y":400,"width":400,"height":400},
{"id":"9fed72abdca670aa","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/impulso spontaneo.md","x":-1440,"y":960,"width":400,"height":400},
{"id":"afa296d887da4394","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/evento.md","x":-600,"y":1520,"width":400,"height":400},
{"id":"162d4cf61ff647a2","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/personale.md","x":-880,"y":2080,"width":400,"height":200},
{"id":"904bb8e648bdcb90","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/individuale.md","x":-320,"y":2080,"width":400,"height":200},
{"id":"e23a1daa61a49d62","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/interno.md","x":-880,"y":2320,"width":400,"height":200},
{"id":"17f246e08226b97c","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/esterno.md","x":-880,"y":2560,"width":400,"height":200},
{"id":"37d87879f33b9570","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/condiviso.md","x":-320,"y":2320,"width":400,"height":200},
{"id":"4f5b2defe1e9072a","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/assioma del ritardo di comunicazione.md","x":-880,"y":680,"width":400,"height":400},
{"id":"9abf440226d21d98","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/assioma dell'orientamento locale.md","x":-880,"y":120,"width":400,"height":400},
{"id":"806b3a8cfb46e427","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/sistema distribuito simmetrico.md","x":-320,"y":-800,"width":400,"height":400,"color":"#ffffff"},
{"id":"ec508dff8f0fad49","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/clock.md","x":240,"y":400,"width":400,"height":400},
{"id":"840584051841921d","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/tick.md","x":240,"y":960,"width":400,"height":400},
{"id":"6b49f0fc996cb192","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/messaggio.md","x":-320,"y":960,"width":400,"height":400},
{"id":"d8754617f38feb06","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/canale di comunicazione.md","x":-320,"y":400,"width":400,"height":400},
{"id":"5253e63787adc7c1","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/sistema distribuito asincrono.md","x":-880,"y":-800,"width":400,"height":400},
{"id":"5cb928eebbce8c85","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/comunicazione.md","x":-1440,"y":-1920,"width":400,"height":400},
{"id":"0663141369318ae1","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/costo computazionale distribuito.md","x":-880,"y":-1360,"width":400,"height":400},
{"id":"1bbe4f0ecb072362","type":"file","file":"9 - Algoritmi distribuiti/1 - Problemi/spazio.md","x":-1440,"y":-800,"width":400,"height":400},
{"id":"68d2646884fe10e3","type":"file","file":"9 - Algoritmi distribuiti/1 - Problemi/tempo.md","x":-1440,"y":-1360,"width":400,"height":400},
{"id":"9fed72abdca670aa","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/impulso spontaneo.md","x":-1440,"y":960,"width":400,"height":400},
{"id":"5cb928eebbce8c85","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/comunicazione.md","x":-1440,"y":-1920,"width":400,"height":400},
{"id":"ce14b5c90fd5e953","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/ambiente.md","x":-1440,"y":-160,"width":400,"height":400},
{"id":"4f5b2defe1e9072a","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/assioma del ritardo di comunicazione.md","x":-880,"y":960,"width":400,"height":400},
{"id":"565ab4c957334768","type":"file","file":"9 - Algoritmi distribuiti/1 - Problemi/criterio di costo uniforme.md","x":-2000,"y":-560,"width":400,"height":200},
{"id":"9c678aa28deb9edc","type":"file","file":"9 - Algoritmi distribuiti/1 - Problemi/criterio di costo logaritmico.md","x":-2000,"y":-840,"width":400,"height":200},
{"id":"68d2646884fe10e3","type":"file","file":"9 - Algoritmi distribuiti/1 - Problemi/tempo.md","x":-1440,"y":-1360,"width":400,"height":400},
{"id":"7307a3e6d21d094d","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/criterio di costo asincrono.md","x":-2000,"y":-1120,"width":400,"height":200},
{"id":"3c2d2701a7095e82","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/criterio di costo sincrono totale.md","x":-2000,"y":-1400,"width":400,"height":200},
{"id":"dacdf2aa108d08d3","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/half-duplex.md","x":1280,"y":-2560,"width":400,"height":200},
{"id":"ca6adc368f6aed21","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/channel failure detection.md","x":1280,"y":-2280,"width":400,"height":200},
{"id":"a16e77231955a7a3","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/entity failure detection.md","x":1760,"y":-2280,"width":400,"height":200},
{"id":"961e2a0551edc3c5","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/restrizione di comunicazione.md","x":800,"y":-2840,"width":400,"height":480},
{"id":"e52fa24f0be7ac0e","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/full-duplex.md","x":1760,"y":-2560,"width":400,"height":200},
{"id":"281bcf7f0a4b5be1","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/restrizione di affidabilità.md","x":800,"y":-2280,"width":400,"height":760},
{"id":"b69def8d92ba28df","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/consegna garantita.md","x":1280,"y":-1720,"width":400,"height":200},
{"id":"887f1f52394b3721","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/affidabilità parziale.md","x":1280,"y":-2000,"width":400,"height":200},
{"id":"6b3170059dad55ef","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/affidabilità totale.md","x":1760,"y":-2000,"width":400,"height":200},
{"id":"3c2d2701a7095e82","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/criterio di costo sincrono.md","x":-2000,"y":-1400,"width":400,"height":200},
{"id":"9abf440226d21d98","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/assioma dell'orientamento locale.md","x":-880,"y":-160,"width":400,"height":400},
{"id":"5f79f222c02d34a4","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/iniziatore singolo.md","x":1280,"y":-2840,"width":400,"height":200},
{"id":"8feba6ce763a0898","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/iniziatori multipli.md","x":1760,"y":-2840,"width":400,"height":200},
{"id":"97624a26a3c7d126","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/sistema sequenziale.md","x":-320,"y":-2480,"width":400,"height":400},
{"id":"97d5f142a5c95ce3","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/sistema parallelo.md","x":-320,"y":-1920,"width":400,"height":400},
{"id":"40f55b66f9214ecd","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/sistema distribuito.md","x":-320,"y":-1360,"width":400,"height":400},
{"id":"83b3be69f6f3d497","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/timeout.md","x":1520,"y":-880,"width":400,"height":200},
{"id":"bdeb2e85bcb32f7e","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/restrizioni al modello dei sistemi distribuiti.md","x":240,"y":-800,"width":400,"height":400},
{"id":"2d21a7ed903a16e7","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/restrizione di tempo.md","x":800,"y":-1160,"width":400,"height":760},
{"id":"472610beeef20101","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/ritardo di comunicazione limitato.md","x":1280,"y":-600,"width":400,"height":200},
{"id":"fc4c48607c9ae580","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/ritardo di comunicazione unitario.md","x":1760,"y":-600,"width":400,"height":200},
{"id":"de6e2a65c63084c7","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/stato di un'entità.md","x":800,"y":-160,"width":400,"height":400},
{"id":"7126bfdd6ead22a9","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/insieme degli stati di un'entità.md","x":1360,"y":-160,"width":400,"height":400},
{"id":"c986480451be1efe","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/entità.md","x":240,"y":-160,"width":400,"height":400},
{"id":"806b3a8cfb46e427","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/sistema distribuito simmetrico.md","x":-320,"y":-800,"width":400,"height":400,"color":"#ffffff"},
{"id":"9ff0a423dbb281a0","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/rete di comunicazione.md","x":-320,"y":-160,"width":400,"height":400},
{"id":"4a1b9354e73b16bc","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/identificatori univoci.md","x":1280,"y":-1440,"width":400,"height":200},
{"id":"0951993b4f64f1b4","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/restrizione di topologia.md","x":800,"y":-1440,"width":400,"height":200},
{"id":"55006dcc3b515353","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/terminazione locale.md","x":1280,"y":-1160,"width":400,"height":200},
{"id":"d12cedf357c12705","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/terminazione globale.md","x":1760,"y":-1160,"width":400,"height":200}
{"id":"d12cedf357c12705","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/terminazione globale.md","x":1760,"y":-1160,"width":400,"height":200},
{"id":"4a1b9354e73b16bc","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/identificatori univoci.md","x":1280,"y":-1440,"width":400,"height":200},
{"id":"2d21a7ed903a16e7","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/restrizione di tempo.md","x":800,"y":-1160,"width":400,"height":760},
{"id":"83b3be69f6f3d497","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/timeout.md","x":2000,"y":-880,"width":400,"height":200},
{"id":"dbe3b5d5f2baeb7f","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/ritardo di comunicazione illimitato.md","x":1280,"y":-600,"width":400,"height":200},
{"id":"472610beeef20101","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/ritardo di comunicazione limitato.md","x":1760,"y":-600,"width":400,"height":200},
{"id":"ca6adc368f6aed21","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/channel failure detection.md","x":1280,"y":-2560,"width":400,"height":200},
{"id":"887f1f52394b3721","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/affidabilità parziale.md","x":1280,"y":-2280,"width":400,"height":200},
{"id":"b69def8d92ba28df","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/consegna garantita.md","x":1280,"y":-2000,"width":400,"height":200},
{"id":"281bcf7f0a4b5be1","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/restrizione di affidabilità.md","x":800,"y":-2560,"width":400,"height":760},
{"id":"7d0f048f4b43f33d","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/full-duplex.md","x":1760,"y":-1720,"width":400,"height":200},
{"id":"ce3d37417ee5bf4d","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/half-duplex.md","x":1280,"y":-1720,"width":400,"height":200},
{"id":"0951993b4f64f1b4","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/restrizione di topologia.md","x":800,"y":-1720,"width":400,"height":480},
{"id":"fc4c48607c9ae580","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/ritardo di comunicazione unitario.md","x":2240,"y":-600,"width":400,"height":200},
{"id":"a16e77231955a7a3","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/entity failure detection.md","x":1760,"y":-2560,"width":400,"height":200},
{"id":"6b3170059dad55ef","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/1 - Concetti/affidabilità totale.md","x":1760,"y":-2280,"width":400,"height":200}
],
"edges":[
{"id":"1bb35cb60ca4ea15","fromNode":"afa296d887da4394","fromSide":"bottom","toNode":"904bb8e648bdcb90","toSide":"top"},
@ -84,22 +84,18 @@
{"id":"dd45c7bedf4f7b2f","fromNode":"bdeb2e85bcb32f7e","fromSide":"right","toNode":"0951993b4f64f1b4","toSide":"left"},
{"id":"7ff1125c9d9e35a5","fromNode":"bdeb2e85bcb32f7e","fromSide":"right","toNode":"281bcf7f0a4b5be1","toSide":"left"},
{"id":"33e268a6e899fc4e","fromNode":"bdeb2e85bcb32f7e","fromSide":"right","toNode":"961e2a0551edc3c5","toSide":"left"},
{"id":"871d1f1275fdaa32","fromNode":"961e2a0551edc3c5","fromSide":"right","toNode":"dacdf2aa108d08d3","toSide":"left"},
{"id":"4e22445bef4f3751","fromNode":"9ff0a423dbb281a0","fromSide":"bottom","toNode":"d8754617f38feb06","toSide":"top"},
{"id":"c0e7edefcb021bbe","fromNode":"d8754617f38feb06","fromSide":"bottom","toNode":"6b49f0fc996cb192","toSide":"top"},
{"id":"5956ff40fae387a3","fromNode":"c986480451be1efe","fromSide":"left","toNode":"d8754617f38feb06","toSide":"right"},
{"id":"5aaf3514189eca67","fromNode":"dacdf2aa108d08d3","fromSide":"right","toNode":"e52fa24f0be7ac0e","toSide":"left"},
{"id":"e25ad17df986933d","fromNode":"281bcf7f0a4b5be1","fromSide":"right","toNode":"ca6adc368f6aed21","toSide":"left"},
{"id":"d17369530cedcf91","fromNode":"ca6adc368f6aed21","fromSide":"right","toNode":"a16e77231955a7a3","toSide":"left"},
{"id":"bd17cdba235c81af","fromNode":"281bcf7f0a4b5be1","fromSide":"right","toNode":"b69def8d92ba28df","toSide":"left"},
{"id":"d56cbf4dce71a7f3","fromNode":"281bcf7f0a4b5be1","fromSide":"right","toNode":"887f1f52394b3721","toSide":"left"},
{"id":"d75e4e97c723ecbb","fromNode":"887f1f52394b3721","fromSide":"right","toNode":"6b3170059dad55ef","toSide":"left"},
{"id":"4a9cb9f5028c684d","fromNode":"2d21a7ed903a16e7","fromSide":"right","toNode":"472610beeef20101","toSide":"left"},
{"id":"2e95c9b13ce50fd0","fromNode":"472610beeef20101","fromSide":"top","toNode":"83b3be69f6f3d497","toSide":"bottom"},
{"id":"d63be18341405890","fromNode":"472610beeef20101","fromSide":"right","toNode":"fc4c48607c9ae580","toSide":"left"},
{"id":"17033b6f222151a8","fromNode":"fc4c48607c9ae580","fromSide":"top","toNode":"83b3be69f6f3d497","toSide":"bottom"},
{"id":"b9abeefc64ec5360","fromNode":"806b3a8cfb46e427","fromSide":"bottom","toNode":"ce14b5c90fd5e953","toSide":"top"},
{"id":"c138c3d197e13fb4","fromNode":"40f55b66f9214ecd","fromSide":"bottom","toNode":"5253e63787adc7c1","toSide":"top"},
{"id":"26e0891ec4447f53","fromNode":"40f55b66f9214ecd","fromSide":"left","toNode":"0663141369318ae1","toSide":"right"},
{"id":"ec682837ca5406eb","fromNode":"0663141369318ae1","fromSide":"left","toNode":"5cb928eebbce8c85","toSide":"right"},
{"id":"d178df5a2a75a712","fromNode":"1bbe4f0ecb072362","fromSide":"left","toNode":"565ab4c957334768","toSide":"right"},
@ -111,6 +107,11 @@
{"id":"459233fc20cad1e7","fromNode":"961e2a0551edc3c5","fromSide":"right","toNode":"5f79f222c02d34a4","toSide":"left"},
{"id":"862f0a43ddf5a87a","fromNode":"5f79f222c02d34a4","fromSide":"right","toNode":"8feba6ce763a0898","toSide":"left"},
{"id":"92889f0a7be5f7d4","fromNode":"55006dcc3b515353","fromSide":"right","toNode":"d12cedf357c12705","toSide":"left"},
{"id":"02d76934b8ed7603","fromNode":"2d21a7ed903a16e7","fromSide":"right","toNode":"55006dcc3b515353","toSide":"left"}
{"id":"02d76934b8ed7603","fromNode":"2d21a7ed903a16e7","fromSide":"right","toNode":"55006dcc3b515353","toSide":"left"},
{"id":"7b82b81786037fe6","fromNode":"2d21a7ed903a16e7","fromSide":"right","toNode":"dbe3b5d5f2baeb7f","toSide":"left"},
{"id":"13ecf8445dea426a","fromNode":"dbe3b5d5f2baeb7f","fromSide":"right","toNode":"472610beeef20101","toSide":"left"},
{"id":"81615994263f9203","fromNode":"0951993b4f64f1b4","fromSide":"right","toNode":"4a1b9354e73b16bc","toSide":"left"},
{"id":"946800279c546347","fromNode":"ce3d37417ee5bf4d","fromSide":"right","toNode":"7d0f048f4b43f33d","toSide":"left"},
{"id":"60e9ac87e9ce4fc1","fromNode":"0951993b4f64f1b4","fromSide":"right","toNode":"ce3d37417ee5bf4d","toSide":"left"}
]
}

View file

@ -11,7 +11,6 @@ Una [[entità]] vuole comunicare un'informazione a tutto il resto del [[sistema
## [[restrizioni al modello dei sistemi distribuiti|Restrizioni]]
- [[terminazione locale]]
- **[[restrizione di comunicazione|Comunicazione]]**
- [[iniziatore singolo]]
- **[[restrizione di affidabilità|Affidabilità]]**
@ -20,7 +19,8 @@ Una [[entità]] vuole comunicare un'informazione a tutto il resto del [[sistema
- [[grafo connesso]]
- [[full-duplex|grafo indiretto]]
- **[[restrizione di tempo|Tempo]]**
- [[ritardo di comunicazione unitario]]
- [[ritardo di comunicazione illimitato]]
- [[terminazione locale]]
## [[algoritmo|Algoritmi]]

View file

@ -1,8 +1,8 @@
[[algoritmo]] ***[[algoritmo corretto|incorretto]]*** di [[broadcast problem]].
## Funzionamento
> [!Summary]
> Il [[leader]] invia il suo messaggio iniziale a tutti i vicini, e loro lo inoltrano a loro volta ai loro vicini.
Il [[leader]] invia il suo messaggio iniziale a tutti i vicini, e loro lo inoltrano a loro volta ai loro vicini.
## [[Comportamento]]
### `LEADER`

View file

@ -1,8 +1,7 @@
[[algoritmo]] di [[broadcast problem]] che risolve l'incorrettezza del [[flooding v1]].
## Funzionamento
Il [[leader]] invia il suo messaggio iniziale a tutti i vicini, e, ***se è la prima volta che lo ricevono***, loro lo inoltrano a loro volta ai loro vicini.
> [!Summary]
> Il [[leader]] invia il suo messaggio iniziale a tutti i vicini, e, ***se è la prima volta che lo ricevono***, loro lo inoltrano a loro volta ai loro vicini.
## [[Comportamento]]
@ -37,12 +36,7 @@ on_receive! {
### `DONE`
Non fa niente:
```rust
on_receive! {
_ => {},
}
```
Non fa niente.
## [[algoritmo corretto|Correttezza]]

View file

@ -1,8 +1,7 @@
[[algoritmo]] di [[broadcast problem]] che riduce il [[comunicazione|numero di messaggi]] rispetto al [[flooding v2]]. ^6af4aa
[[algoritmo]] di [[broadcast problem]] che riduce il [[comunicazione|numero di messaggi]] rispetto al [[flooding v2]].
## Funzionamento
Il [[leader]] invia il suo [[messaggio]] iniziale a tutti i vicini, e, se è la prima volta che lo ricevono, loro lo inoltrano a loro volta ai loro vicini ***tranne quello che gliel'ha inviato***.
> [!Summary]
> Il [[leader]] invia il suo [[messaggio]] iniziale a tutti i vicini, e, se è la prima volta che lo ricevono, loro lo inoltrano a loro volta ai loro vicini ***tranne quello che gliel'ha inviato***.
## [[Comportamento]]
@ -37,12 +36,7 @@ on_receive! {
### `DONE`
Non fa niente:
```rust
on_receive! {
_ => {},
}
```
Non fa niente.
## [[algoritmo corretto|Correttezza]]

View file

@ -0,0 +1,42 @@
[[algoritmo]] di [[broadcast problem su grafo completo]].
## Funzionamento
Il [[leader]] invia il suo [[messaggio]] a tutti i vicini.
## [[Comportamento]]
### `LEADER`
All'[[impulso spontaneo|inizio dell'algoritmo]], invia il suo [[messaggio]]:
```rust
spontaneously! {
send!(0..MAX_FAULTS, Message {leader: true});
state!(DONE);
}
```
### `SLEEPING`
Non fa niente:
```rust
on_receive! {
_ => {},
}
```
## [[algoritmo corretto|Correttezza]]
==...==
## [[costo computazionale distribuito|Costo computazionale]]
### [[Comunicazione]]
==...==
### [[Spazio]]
==...==
### [[Tempo]]
==...==

View file

@ -6,7 +6,6 @@ Problema per un [[sistema distribuito]], variante del [[broadcast problem]].
## [[restrizioni al modello dei sistemi distribuiti|Restrizioni]]
- [[terminazione locale]]
- **[[restrizione di comunicazione|Comunicazione]]**
- ***[[iniziatori multipli]]***
- **[[restrizione di affidabilità|Affidabilità]]**
@ -15,7 +14,8 @@ Problema per un [[sistema distribuito]], variante del [[broadcast problem]].
- [[grafo connesso]]
- [[full-duplex|grafo indiretto]]
- **[[restrizione di tempo|Tempo]]**
- [[ritardo di comunicazione unitario]]
- [[ritardo di comunicazione illimitato]]
- [[terminazione locale]]
## [[algoritmo|Algoritmi]]

View file

@ -1,17 +1,17 @@
{
"nodes":[
{"id":"1ae79343ecdc2ecf","type":"group","x":900,"y":540,"width":1640,"height":1000,"color":"5","label":"Flooding"},
{"id":"1bf892659093d611","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/flooding v1.md","x":920,"y":560,"width":480,"height":960},
{"id":"a1841455be06b505","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/flooding v2.md","x":1480,"y":560,"width":480,"height":960},
{"id":"ea39c9f9c9d31ba6","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/flooding v3.md","x":2040,"y":560,"width":480,"height":960},
{"id":"1ae79343ecdc2ecf","type":"group","x":1040,"y":540,"width":1640,"height":1000,"color":"5","label":"Flooding"},
{"id":"1bf892659093d611","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/flooding v1.md","x":1060,"y":560,"width":480,"height":960},
{"id":"a1841455be06b505","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/flooding v2.md","x":1620,"y":560,"width":480,"height":960},
{"id":"ea39c9f9c9d31ba6","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/flooding v3.md","x":2180,"y":560,"width":480,"height":960},
{"id":"f3ab5010d2f02e70","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/broadcast problem.md","x":-120,"y":560,"width":960,"height":960},
{"id":"11f8175c0f53986b","x":-120,"y":1680,"width":960,"height":960,"type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/wake-up problem.md"}
{"id":"11f8175c0f53986b","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/wake-up problem.md","x":-120,"y":1680,"width":960,"height":960}
],
"edges":[
{"id":"35072e6a9d31a026","fromNode":"1bf892659093d611","fromSide":"right","toNode":"a1841455be06b505","toSide":"left"},
{"id":"3dc6b0d3f79913da","fromNode":"a1841455be06b505","fromSide":"right","toNode":"ea39c9f9c9d31ba6","toSide":"left"},
{"id":"ef4269bad6676843","fromNode":"f3ab5010d2f02e70","fromSide":"bottom","toNode":"11f8175c0f53986b","toSide":"top"},
{"id":"29e162f3ecbad77b","fromNode":"11f8175c0f53986b","fromSide":"right","toNode":"1ae79343ecdc2ecf","toSide":"left"},
{"id":"b064dba571d8d37f","fromNode":"f3ab5010d2f02e70","fromSide":"right","toNode":"1ae79343ecdc2ecf","toSide":"left"}
{"id":"b064dba571d8d37f","fromNode":"f3ab5010d2f02e70","fromSide":"right","toNode":"1ae79343ecdc2ecf","toSide":"left"},
{"id":"34325df0153caeb1","fromNode":"f3ab5010d2f02e70","fromSide":"left","toNode":"11f8175c0f53986b","toSide":"left"}
]
}

View file

@ -0,0 +1,22 @@
***[[problema di ottimizzazione]]*** per un [[sistema distribuito]], che estende il problema di [[spanning tree construction]].
## Definizione
Si vuole ***minimizzare il [[diametro di un grafo|diametro]]*** di uno [[spanning tree]] per il [[sistema distribuito]] in modo da massimizzare l'efficienza del [[broadcast problem|broadcast]].
## [[restrizioni al modello dei sistemi distribuiti|Restrizioni]]
- **[[restrizione di comunicazione|Comunicazione]]**
- [[iniziatore singolo]]
- **[[restrizione di affidabilità|Affidabilità]]**
- [[affidabilità totale]]
- **[[restrizione di topologia|Topologia]]**
- [[grafo connesso]]
- [[full-duplex|grafo indiretto]]
- **[[restrizione di tempo|Tempo]]**
- [[ritardo di comunicazione illimitato]]
- [[terminazione locale]]
## Idea degli [[algoritmo|algoritmi]]
Trovare il [[centrality|centro]] del [[grafo]], poi effettuare una [[breadth-first search]].

View file

@ -1,4 +1,4 @@
Problema per un [[sistema distribuito]], che estende il problema di [[spanning tree construction]].
[[problema di ricerca]] per un [[sistema distribuito]], che estende il problema di [[spanning tree construction]].
## Definizione
@ -8,11 +8,17 @@ Si vuole [[problema di ricerca|determinare]] uno [[spanning tree]] per il [[sist
- **[[restrizione di comunicazione|Comunicazione]]**
- ***[[iniziatori multipli]]***
- [[identificatori univoci]]
- ***[[identificatori univoci]]***
- **[[restrizione di affidabilità|Affidabilità]]**
- [[affidabilità totale]]
- **[[restrizione di topologia|Topologia]]**
- [[grafo connesso]]
- [[full-duplex|grafo indiretto]]
- **[[restrizione di tempo|Tempo]]**
- [[ritardo di comunicazione unitario]]
- [[ritardo di comunicazione unitario]]
- [[terminazione locale]]
### [[Algoritmo|Algoritmi]]
- [[multiple spanning tree transform]]
- [[selective spanning tree transform]]

View file

@ -0,0 +1,4 @@
[[trasformata]] di [[multiple spanning tree construction]].
> [!Summary]
> Ogni iniziatore [[spanning tree construction|costruisce il proprio spanning tree]], distinguendolo da quello degli altri con il proprio [[identificatori univoci|identificatore]].

View file

@ -0,0 +1,7 @@
[[trasformata]] per [[multiple spanning tree construction]].
> [!Summary]
> Ogni iniziatore inizia a [[spanning tree construction|costruire il proprio spanning tree]], ma quando viene aggiunto allo [[spanning tree]] di qualcuno con un [[identificatori univoci|identificatore]] minore, si interrompe.
>
> Quando l'algoritmo termina, l'iniziatore con [[identificatore]] minore invia un [[broadcast problem|broadcast]] di terminazione.

View file

@ -0,0 +1,152 @@
[[algoritmo]] di [[spanning tree construction]], basato sul [[flooding v3]].
> [!Summary]
> Ciascuna [[entità]] chiede ai propri vicini se può entrare a fare parte dello [[spanning tree]], e loro ***rispondono sì oppure no***.
## [[Comportamento]]
Il [[leader]] viene inizializzato a `LEADER`, le altre [[entità]] vengono inizializzate a `IDLE`.
### `LEADER`
Il [[leader]] chiede [[impulso spontaneo|spontaneamente]] alle [[entità]] se possono entrare a fare parte dello [[spanning tree]], poi si attiva in attesa di risposte:
```rust
spontaneously!({
self.received = 0;
send!(*, Question);
state!(ACTIVE);
})
```
### `IDLE`
Un'[[entità]] `IDLE` è in attesa di domande.
Quando ne riceve una, risponde positivamente, poi ripete la domanda e si attiva a sua volta:
```rust
on_receive!(
Question => {
self.received = 1;
self.parent = sender;
send!(sender, Answer::Yes);
send!(!sender, Question);
if self.neighbours.length() > self.received {
state!(DONE)
}
else {
state!(ACTIVE)
};
},
)
```
### `ACTIVE`
Un [[entità]] `ACTIVE` è in attesa di risposte.
Se la risposta è positiva, aggiunge il mittente allo spanning tree:
```rust
on_receive!(
Answer::Yes => {
self.neighbours_in_tree.insert(sender);
}
)
```
E poi la conteggia:
```rust
on_receive!(
Answer => {
self.received += 1
if self.neighbours.length() > self.received {
state!(DONE);
}
},
)
```
Inoltre, risponde alle domande con `Answer::No`:
```rust
on_receive!(
Question => {
send!(sender, Answer::No);
}
)
```
### `DONE`
Un [[entità]] `DONE` sa tutte le informazioni possibili sui suoi vicini.
Non fa nient'altro.
## [[algoritmo corretto|Correttezza]]
Dato che:
1. Tutte le [[entità]] tranne il [[leader]] inviano esattamente un `Answer::Yes`.
2. L'invio e la ricezione di `Answer::Yes` [[arco di un grafo|collegano]] le due [[entità]] coinvolte.
Allora, il [[grafo]] risultante è un [[albero]] [[grafo connesso|connesso]].
## [[costo computazionale distribuito|Costo computazionale]]
Questo protocollo è equivalente al [[flooding v3]], ma con le ***[[entità]] raggiunte che inviano anche una risposta***.
### [[Comunicazione]]
#### Singoli scambi di messaggi
Controlliamo che e quanti messaggi attraversano i [[canale di comunicazione|canali]].
##### Scoperta di un nuovo nodo
Un nodo invia `Question`, l'altro risponda con `Answer::Yes`:
$$
\color{LightCoral} (2 \cdot (Entities - 1))
$$
##### Incontro di due nodi conosciuti
Entrambi i nodi inviano `Question` in tutti i casi che non sono quello precedente:
$$
\color{SpringGreen} (2 \cdot (Channels - (Entities - 1)))
$$
Entrambi i nodi poi rispondono `Answer::No`:
$$
\color{SkyBlue} (2 \cdot (Channels - (Entities - 1)))
$$
#### Costo totale
Il costo computazionale quindi è:
$$
{\color{LightCoral} (2 \cdot (Entities - 1)}
+
{\color{SpringGreen} (2 \cdot (Channels - (Entities - 1)))}
+
{\color{SkyBlue} (2 \cdot (Channels - (Entities - 1)))}
$$
Espanso:
$$
{\color{LightCoral} 2 \cdot Entities - 2}
+
{\color{SpringGreen} 2 \cdot Channels - 2 \cdot Entities + 2}
+
{\color{SkyBlue} 2 \cdot Channels - 2 \cdot Entities + 2}
$$
Ridotto:
$$
4 \cdot Channels - 2 \cdot Entities + 2
$$
Infine, raccogliendo, si nota che è esattamente il doppio del [[flooding v3]]:
$$
2 \cdot (2 \cdot Channels - (Entities - 1))
$$
In [[notazione asintotica]], è sempre:
$$
\Large O(Channels)
$$

View file

@ -0,0 +1,145 @@
[[algoritmo]] di [[spanning tree construction]] che migliora lo [[shout protocol]].
> [!Summary]
> Ciascuna [[entità]] chiede ai propri vicini se può entrare a fare parte dello [[spanning tree]], e loro rispondono sì ***oppure nulla***.
## [[Comportamento]]
Il [[leader]] viene inizializzato a `LEADER`, le altre [[entità]] vengono inizializzate a `IDLE`.
### `LEADER`
Il [[leader]] chiede [[impulso spontaneo|spontaneamente]] alle [[entità]] se possono entrare a fare parte dello [[spanning tree]], poi si attiva in attesa di risposte:
```rust
spontaneously!({
self.received = 0;
send!(*, Question);
state!(ACTIVE);
})
```
### `IDLE`
Un'[[entità]] `IDLE` è in attesa di domande.
Quando ne riceve una, risponde positivamente, poi ripete la domanda e si attiva a sua volta:
```rust
on_receive!(
Question => {
self.received = 1;
self.parent = sender;
send!(sender, Answer::Yes);
send!(!sender, Question);
if self.neighbours.length() > self.received {
state!(DONE)
}
else {
state!(ACTIVE)
};
},
)
```
### `ACTIVE`
Un [[entità]] `ACTIVE` è in attesa di risposte.
Se la risposta è positiva, aggiunge il mittente allo spanning tree:
```rust
on_receive!(
Answer::Yes => {
self.neighbours_in_tree.insert(sender);
}
)
```
E poi la conteggia:
```rust
on_receive!(
Answer => {
self.received += 1
if self.neighbours.length() > self.received {
state!(DONE);
}
},
)
```
***Invece che rispondere alle domande, esse vengono interpretate come una risposta negativa***:
```rust
on_receive!(
Question => {
self.received += 1
if self.neighbours.length() > self.received {
state!(DONE);
}
}
)
```
### `DONE`
Un [[entità]] `DONE` sa tutte le informazioni possibili sui suoi vicini.
Non fa nient'altro.
## [[algoritmo corretto|Correttezza]]
Dato che:
1. Tutte le [[entità]] tranne il [[leader]] inviano esattamente un `Answer::Yes`.
2. L'invio e la ricezione di `Answer::Yes` [[arco di un grafo|collegano]] le due [[entità]] coinvolte.
Allora, il [[grafo]] risultante è un [[albero]] [[grafo connesso|connesso]].
## [[costo computazionale distribuito|Costo computazionale]]
Questo protocollo è equivalente al [[flooding v3]], ma con le [[entità]] raggiunte che inviano anche una risposta.
### [[Comunicazione]]
#### Singoli scambi di messaggi
Controlliamo che e quanti messaggi attraversano i [[canale di comunicazione|canali]].
##### Scoperta di un nuovo nodo
Un nodo invia `Question`, l'altro risponda con `Answer::Yes`.
Si verifica in:
$$
\color{LightCoral} (2 \cdot (Entities - 1))
$$
##### Incontro di due nodi conosciuti
Entrambi i nodi inviano `Question` in tutti i casi che non sono quello precedente:
$$
\color{SpringGreen} (2 \cdot (Channels - (Entities - 1)))
$$
***Non viene inviata una risposta in questo caso.***
##### Costo totale
$$
{\color{LightCoral} (2 \cdot (Entities - 1))}
+
{\color{SpringGreen} (2 \cdot (Channels - (Entities - 1)))}
$$
Espanso:
$$
{\color{LightCoral} 2 \cdot Entities - 2}
+
{\color{SpringGreen} 2 \cdot Channels - 2 \cdot Entities + 2}
$$
Ridotto:
$$
2 \cdot Channels
$$
In [[notazione asintotica]], è sempre:
$$
\Large O(Channels)
$$

View file

@ -1,8 +1,8 @@
Problema per un [[sistema distribuito]].
[[problema di ricerca]] per un [[sistema distribuito]].
## Definizione
Si vuole [[problema di ricerca|determinare]] uno [[spanning tree]] per il [[sistema distribuito]] in modo da poter effettuare efficientemente [[broadcast problem|broadcast]].
Si vuole determinare uno [[spanning tree]] per il [[sistema distribuito]] in modo da poter effettuare efficientemente [[broadcast problem|broadcast]].
## [[restrizioni al modello dei sistemi distribuiti|Restrizioni]]
@ -14,10 +14,12 @@ Si vuole [[problema di ricerca|determinare]] uno [[spanning tree]] per il [[sist
- [[grafo connesso]]
- [[full-duplex|grafo indiretto]]
- **[[restrizione di tempo|Tempo]]**
- [[ritardo di comunicazione unitario]]
- [[ritardo di comunicazione illimitato]]
- [[terminazione locale]]
## [[algoritmo|Algoritmi]]
- [[SHOUT protocol]]
- [[SHOUT+ protocol]]
- [[spanning tree by depth-first traversal]]
- [[shout protocol]]
- [[shout+ protocol]]
- [[traversal protocol]]
- [[traversal+ protocol]]

View file

@ -0,0 +1,127 @@
[[algoritmo]] di [[spanning tree construction]].
> [!Summary]
> Le [[entità]] del grafo vengono visitate sequenzialmente attraverso una [[depth-first search]].
>
> In ogni momento, a solo una [[entità]] è permesso eseguire codice, e questo permesso è tracciato attraverso un [[token metaforico]].
## [[Comportamento]]
L'[[entità]] [[iniziatore singolo|iniziatrice]] viene inizializzata a `LEADER`, mentre le altre vengono inizializzate a `IDLE`.
==Questo modello è brutto...==
### `visit_next(self)`
Definiamo una funzione che si ripeterà più volte che invia il token al primo nodo non visitato dal nodo attuale, e quando non rimangono più token, notifica il nodo genitore.
```rust
impl Entity {
fn visit_next(self) {
if self.unvisited.length() > 0 {
state!(VISITED);
let entity = self.unvisited.pop();
send!(entity, Token::Forward);
}
else {
if(self.parent) {
send!(self.parent, Token::Finished);
}
state!(DONE);
}
}
}
```
### `LEADER`
L'[[entità]] `LEADER` inizia la visita:
```rust
spontaneously!({
self.unvisited = self.neighbours.clone();
self.parent = null;
self.children = vec![];
state!(VISITED);
self.visit_next();
})
```
### `IDLE`
Una [[entità]] `IDLE` è in attesa di ricevere il [[token metaforico]]:
```rust
on_receive!(
Token::Forward => {
self.parent = sender;
self.unvisited.remove(sender);
state!(VISITED);
self.visit_next();
}
)
```
### `VISITED`
Una [[entità]] `VISITED` ha già ricevuto il [[token metaforico]] in precedenza, e se lo riceve, lo rifiuta con `Token::BackEdge`, che porta a una nuova visita da parte del mittente:
```rust
on_receive!(
Token::Forward => {
self.unvisited.remove(sender);
send!(sender, Token::BackEdge);
}
Token::BackEdge => {
self.visit_next();
}
)
```
Può anche ricevere un `Token::Finished`, che indica che l'[[entità]] mittente ha terminato l'elaborazione; essa viene aggiunta all'albero, e poi la visita continua:
```rust
on_receive!(
Token::Finished => {
self.children.push(sender);
self.visit_next();
}
)
```
### `DONE`
Un [[entità]] `DONE` sa tutte le informazioni possibili sui suoi vicini.
Non fa nient'altro.
## [[algoritmo corretto|Correttezza]]
==...==
## [[costo computazionale distribuito|Costo computazionale]]
### [[Comunicazione]]
Tutti i [[canale di comunicazione|canali]] vengono visitati due volte, uno da `Token::Forward`, e uno da `Token::BackEdge` o `Token::Finished`:
$$
2 \cdot Channels
$$
In [[notazione asintotica]], è:
$$
\Large O(Channels)
$$
> [!Note]
> Coincide strettamente con il lower bound.
### [[Tempo]]
Essendo la visita del grafo sequenziale, il tempo richiesto coincide con il costo di comunicazione:
$$
2 \cdot Channels
$$
In [[notazione asintotica]], è:
$$
\Large O(Channels)
$$
> [!Warning]
> Non coincide con il lower bound!

View file

@ -0,0 +1,188 @@
[[algoritmo]] di [[spanning tree construction]] che migliora il [[traversal protocol]].
> [!Summary]
> Le [[entità]] del grafo vengono visitate sequenzialmente attraverso una [[depth-first search]].
>
> In ogni momento, a solo una [[entità]] è permesso ***visitarne altre***, e questo permesso è tracciato attraverso un [[token metaforico]].
## [[Comportamento]]
L'[[entità]] [[iniziatore singolo|iniziatrice]] viene inizializzata a `LEADER`, mentre le altre vengono inizializzate a `IDLE`.
==Questo modello è brutto e sbagliato nel caso ci sia un grafo di un nodo solo...==
### `visit_next(self)`
Definiamo una funzione che si ripeterà più volte che invia il token al primo nodo non visitato dal nodo attuale, e quando non rimangono più token, notifica il nodo genitore.
```rust
impl Entity {
fn visit_next(self) {
if self.unvisited.length() > 0 {
state!(VISITED);
let entity = self.unvisited.pop();
send!(entity, Token::Forward);
}
else {
if(self.parent) {
send!(self.parent, Token::Finished);
}
state!(DONE);
}
}
}
```
### `LEADER`
L'[[entità]] `LEADER` ***notifica tutti i suoi vicini che è stata visitata***:
```rust
spontaneously!({
self.unacknowledged = self.neighbours.clone();
self.unvisited = self.neighbours.clone();
self.parent = null;
self.children = vec![];
send!(self.unvisited, Visited::Sender);
})
```
***Quando tutti i vicini hanno risposto, inizia la visita:***
```rust
on_receive!(
Visited::Receiver => {
self.unacknowledged.remove(sender);
if self.unacknowledged.length() == 0 {
state!(VISITED);
self.visit_next();
}
}
)
```
### `IDLE`
Una [[entità]] `IDLE` è in attesa di ricevere il [[token metaforico]].
***Quando lo riceve, notifica tutti i vicini della cosa, come fatto dal leader***:
```rust
spontaneously!({
self.unacknowledged = self.neighbours.clone();
self.unvisited = self.neighbours.clone();
self.children = vec![];
})
on_receive!(
Token::Forward => {
self.parent = sender;
self.unvisited.remove(sender);
send!(self.unvisited, Visited::Sender);
}
Visited::Receiver => {
self.unacknowledged.remove(sender);
if self.unacknowledged.length() == 0 {
state!(VISITED);
self.visit_next();
}
}
Visited::Sender => {
self.unvisited.remove(sender);
send!(sender, Visited::Receiver);
}
)
```
### `VISITED`
Una [[entità]] `VISITED` ha già ricevuto il [[token metaforico]] in precedenza.
Può ricevere ***solo*** un `Token::Finished`, che indica che l'[[entità]] mittente ha terminato l'elaborazione; essa viene aggiunta all'albero, e poi la visita continua:
```rust
on_receive!(
Token::Finished => {
self.children.push(sender);
self.visit_next();
}
)
```
***Non è possibile che riceva `Visited::Sender`, in quanto è già stata rimossa da `self.unvisited`.***
***Per lo stesso motivo, `Token::BackEdge` sono stati rimossi dall'algoritmo.***
### `DONE`
Un [[entità]] `DONE` sa tutte le informazioni possibili sui suoi vicini.
Non fa nient'altro.
## [[algoritmo corretto|Correttezza]]
==...==
## [[costo computazionale distribuito|Costo computazionale]]
### [[Comunicazione]]
Tutti i [[canale di comunicazione|canali]] vengono visitati due volte, uno da `Visited::Sender`, e uno da `Visited::Receiver`:
$$
\color{LightCoral} 2 \cdot Channels
$$
In più, tutti i nodi tranne il [[leader]] invieranno almeno una volta `Token::Forward` e `Token::Finished`.
$$
\color{SpringGreen} 2 \cdot (Entities - 1)
$$
Dunque, il numero di messaggi inviati sarà:
$$
{\color{LightCoral} 2 \cdot Channels}
+
{\color{SpringGreen} 2 \cdot (Entities - 1)}
$$
Essendo il grafo connesso, $(Entities - 1)$ è obbligatoriamente minore di $Channels$, quindi possiamo riscrivere la riga precedente come:
$$
{\color{LightCoral} 2 \cdot Channels}
+
{\color{SpringGreen} 2 \cdot Channels}
=
4 \cdot Channels
$$
In [[notazione asintotica]], è:
$$
\Large O(Channels)
$$
> [!Note]
> Coincide ***asintoticamente*** con il lower bound.
### [[Tempo]]
L'invio di `Visited::Sender` e `Visited::Receiver` corrisponde al tempo di attraversamento di un [[albero]]:
$$
\color{SkyBlue} 2 \cdot (Entities - 1)
$$
In più, tutte le [[entità]] devono inviare sequenzialmente `Token::Forward` e `Token::Finished`:
$$
\color{Lavender} 2 \cdot Entities
$$
Dunque, il tempo necessario sarà:
$$
{\color{SkyBlue} 2 \cdot (Entities - 1)}
+
{\color{Lavender} 2 \cdot Entities}
=
4 \cdot Entities - 2
$$
In [[notazione asintotica]], è:
$$
\Large O(Entities)
$$
> [!Note]
> ***Coincide asintoticamente*** con il lower bound.

View file

@ -1,9 +1,28 @@
{
"nodes":[
{"id":"e4db85d4dd9cb928","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/spanning tree construction.md","x":-320,"y":-1280,"width":960,"height":960},
{"id":"42f2908da34c9d4d","x":-40,"y":-1840,"width":400,"height":400,"type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/spanning tree.md"}
{"id":"f48243a62762bc6a","type":"group","x":780,"y":-1300,"width":920,"height":1000,"color":"5","label":"shout protocol"},
{"id":"a7b374601b504754","type":"group","x":780,"y":-180,"width":920,"height":1000,"color":"5","label":"traversal protocol"},
{"id":"e4db85d4dd9cb928","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/spanning tree construction.md","x":-320,"y":-1280,"width":960,"height":2080},
{"id":"42f2908da34c9d4d","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/spanning tree.md","x":-40,"y":-1840,"width":400,"height":400},
{"id":"975c4e916151d0da","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/shout protocol.md","x":800,"y":-1280,"width":400,"height":960},
{"id":"6affd8da4f6f750a","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/flooding v3.md","x":800,"y":-1840,"width":400,"height":400},
{"id":"1942e37fcdb3b040","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/shout+ protocol.md","x":1280,"y":-1280,"width":400,"height":960},
{"id":"7f269696427c2c8e","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/traversal protocol.md","x":800,"y":-160,"width":400,"height":960},
{"id":"b59b4cc2872c280d","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/broadcast tree construction.md","x":-320,"y":960,"width":960,"height":960},
{"id":"1ccd23a5dd951996","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/multiple spanning tree construction.md","x":-320,"y":2080,"width":960,"height":960},
{"id":"899da42b0ed0d514","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/selective spanning tree transform.md","x":800,"y":2080,"width":400,"height":400},
{"id":"e12fb2819e6c8318","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/traversal+ protocol.md","x":1280,"y":-160,"width":400,"height":960},
{"id":"289f00f041183fee","type":"file","file":"9 - Algoritmi distribuiti/3 - Computazione distribuita/3 - Spanning tree/multiple spanning tree transform.md","x":800,"y":2640,"width":400,"height":400}
],
"edges":[
{"id":"0b872430734f1f17","fromNode":"42f2908da34c9d4d","fromSide":"bottom","toNode":"e4db85d4dd9cb928","toSide":"top"}
{"id":"0b872430734f1f17","fromNode":"42f2908da34c9d4d","fromSide":"bottom","toNode":"e4db85d4dd9cb928","toSide":"top"},
{"id":"0987f6cc5f169aff","fromNode":"6affd8da4f6f750a","fromSide":"bottom","toNode":"975c4e916151d0da","toSide":"top"},
{"id":"1def3d7fb4e72c80","fromNode":"975c4e916151d0da","fromSide":"right","toNode":"1942e37fcdb3b040","toSide":"left"},
{"id":"d6cdc039af788cc2","fromNode":"e4db85d4dd9cb928","fromSide":"right","toNode":"f48243a62762bc6a","toSide":"left"},
{"id":"10b12980f5c61ace","fromNode":"e4db85d4dd9cb928","fromSide":"right","toNode":"a7b374601b504754","toSide":"left"},
{"id":"f1a6a7133261984d","fromNode":"e4db85d4dd9cb928","fromSide":"left","toNode":"b59b4cc2872c280d","toSide":"left"},
{"id":"c3f31624437c16fe","fromNode":"e4db85d4dd9cb928","fromSide":"left","toNode":"1ccd23a5dd951996","toSide":"left"},
{"id":"3f1c364abc8ee36d","fromNode":"1ccd23a5dd951996","fromSide":"right","toNode":"899da42b0ed0d514","toSide":"left"},
{"id":"4b39d4b1f13ff480","fromNode":"1ccd23a5dd951996","fromSide":"right","toNode":"289f00f041183fee","toSide":"left"}
]
}

View file

@ -54,6 +54,15 @@ Definiamo un *albero parziale*, che ad ogni iterazione conterrà i nodi a distan
==...==
## [[costo computazionale distribuito|Costo computazionale]]
Ogni iterazione dell'algoritmo è divisa in tre fasi:
- broadcast
- explore
- convergecast
Definiamo il numero di nodi all'inizio di ogni iterazione come $\def \varNi {{\color{salmon} Nodes_{Iteration}}} \varNi$.
Definiamo l'iterazione attuale come $\def \varIter {{\color{Blue} Iteration_{Current}}} \varIter$.
### [[Comunicazione]]
==...==
@ -62,4 +71,22 @@ Definiamo un *albero parziale*, che ad ogni iterazione conterrà i nodi a distan
==...==
### [[Tempo]]
==...==
Per ogni iterazione, abbiamo che:
| Fase | Costo |
|--|--|
| broadcast | $\varIter - 1$ |
| explore | $2$ |
| convergecast | $\varIter - 1$ |
In totale, avremo allora che il costo di tempo per una certa iterazione sarà:
$$
(\varIter - 1) + 2 + (\varIter - 1) = 2 \cdot \varIter
$$
Allora, il costo per l'intero algoritmo sarà:
==quale?==
$$
$$

View file

@ -0,0 +1,20 @@
Problema per un [[sistema distribuito]].
## Definizione
==...==
## [[restrizioni al modello dei sistemi distribuiti|Restrizioni]]
- **[[restrizione di comunicazione|Comunicazione]]**
- ==...==
- **[[restrizione di affidabilità|Affidabilità]]**
- ==...==
- **[[restrizione di topologia|Topologia]]**
- ==...==
- **[[restrizione di tempo|Tempo]]**
- ==...==
## [[algoritmo|Algoritmi]]
- [[two steps]]

View file

@ -0,0 +1,8 @@
[[restrizione di affidabilità]].
Specifica che il numero di [[fallimento|fallimenti]] di [[canale di comunicazione|canali]] non può superare la [[edge connectivity]].
> [!Tip]
> Questo significa che è sempre possibile fare [[broadcast problem|broadcast]]!
==TITOLO TODO==

View file

@ -0,0 +1,39 @@
[[algoritmo]] di [[leader election con fallimenti su grafo completo]].
## Funzionamento
Usa [[two steps]] come [[broadcast problem|broadcast]].
==TODO==
## [[Comportamento]]
### ==`STATO1`==
==...==
```rust
```
### ==`STATO2`==
==...==
```rust
```
## [[algoritmo corretto|Correttezza]]
==...==
## [[costo computazionale distribuito|Costo computazionale]]
### [[Comunicazione]]
==...==
### [[Spazio]]
==...==
### [[Tempo]]
==...==

View file

@ -0,0 +1,21 @@
Problema per un [[sistema distribuito]], che estende la [[leader election]] a un sistema senza restrizioni di affidabilità.
## Definizione
==...==
## [[restrizioni al modello dei sistemi distribuiti|Restrizioni]]
- **[[restrizione di comunicazione|Comunicazione]]**
- ==...==
- **[[restrizione di affidabilità|Affidabilità]]**
- ==...==
- **[[restrizione di topologia|Topologia]]**
- ==...==
- **[[restrizione di tempo|Tempo]]**
- ==...==
## [[algoritmo|Algoritmi]]
- ==...==
- ==...==

View file

@ -0,0 +1,3 @@
==TODO==
Non è possibile raggiungere il consenso con un sistema deterministico se [[entità]] possono fallire.

View file

@ -0,0 +1,61 @@
[[algoritmo]] di [[consenso con fallimenti su grafo completo]], che estende [[one step]].
## Funzionamento
Il [[leader]] invia il suo [[messaggio]] iniziale ad alcuni nodi, e questi, se lo ricevono direttamente da esso, lo inoltrano a loro volta a tutti i loro vicini, che però non lo inoltreranno.
## [[Comportamento]]
### `LEADER`
All'[[impulso spontaneo|inizio dell'algoritmo]], invia il suo [[messaggio]]:
```rust
spontaneously! {
send!(0..MAX_FAULTS, Message {leader: true});
state!(DONE);
}
```
Se lo riceve indietro, non fa niente:
```rust
on_receive! {
_ => {},
}
```
### `SLEEPING`
Se riceve il [[messaggio]], lo inoltra a tutti i suoi vicini, poi passa allo stato `DONE`:
```rust
on_receive! {
_ => {
send!(!sender, Message {leader: false});
state!(DONE);
},
}
```
### `DONE`
Non fa niente:
```rust
on_receive! {
_ => {},
}
```
## [[algoritmo corretto|Correttezza]]
==...==
## [[costo computazionale distribuito|Costo computazionale]]
### [[Comunicazione]]
==...==
### [[Spazio]]
==...==
### [[Tempo]]
==...==

View file

@ -17,6 +17,8 @@ Buona fortuna! :)
- [[★ big data analytics]]
- [[★ high performance computing]]
- [[★ introduction to quantum information processing]]
- [[★ privacy e tutela dei dati]]
### `8` - Secondo semestre magistrale
@ -31,15 +33,13 @@ Buona fortuna! :)
- [[★ cloud and edge computing]]
- [[★ kernel hacking]]
- [[★ programmazione mobile]]
- [[★ fondamenti di machine learning]]
### `10` - Quarto semestre magistrale
*Non c'è ancora niente qui.*
- [[★ tirocinio]]
- [[★ tesi]]
### `X` - Work-in-progress
- [[★ introduction to quantum information processing]]
- [[★ fondamenti di machine learning]]
## Licenza
@ -47,11 +47,6 @@ Questi appunti sono rilasciati sotto la licenza [CreativeCommons-Attribution-Sha
Vedi [LICENSE.txt](LICENSE.txt).
## Finanziami
Se trovi questi appunti utili, e hai qualche soldo che ti avanza, puoi decidere di [offrirmi un gelato](https://ko-fi.com/steffo)!
## Collabora
I miei appunti purtroppo non sono perfetti, in quanto non ho nessuno che ne effettua la rilettura...
@ -65,3 +60,7 @@ Penso che lo scambio gratuito di appunti e idee tra studenti universitari sia fo
Considera di iniziare anche tu a pubblicare gratuitamente i tuoi appunti online come stiamo facendo io e tanti altri miei colleghi-studenti!
Se non sai come fare per pubblicarli e hai bisogno di una mano, sono disponibile a dartela: [contattami a uno dei recapiti che trovi sul mio sito](https://www.steffo.eu/)!
## Finanzia
Se trovi questi appunti utili, e hai qualche soldo che ti avanza, puoi decidere di [offrirmi un gelato](https://ko-fi.com/steffo)!

View file

@ -1,4 +1,5 @@
[
"[.](?!md|canvas).+$",
"/0 - Materiale di studio/"
"0 - Materiale di studio/",
"0 - Piano di studi/"
]

File diff suppressed because it is too large Load diff