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:
parent
743c08ed68
commit
fe7f3107ed
63 changed files with 1796 additions and 1562 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -7,3 +7,4 @@
|
|||
.trash
|
||||
|
||||
**/0 - Materiale di studio/
|
||||
**/0 - Piano di studi/
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"accentColor": "#d14224",
|
||||
"textFontFamily": "",
|
||||
"monospaceFontFamily": "",
|
||||
"theme": "obsidian",
|
||||
"baseFontSize": 16,
|
||||
"enabledCssSnippets": [
|
||||
"canvas-zoom",
|
||||
"canvas-node-placeholder-size"
|
||||
]
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"accentColor": "#d14224",
|
||||
"textFontFamily": "",
|
||||
"monospaceFontFamily": "",
|
||||
"theme": "obsidian",
|
||||
"baseFontSize": 16,
|
||||
"enabledCssSnippets": [
|
||||
"canvas-zoom",
|
||||
"canvas-node-placeholder-size"
|
||||
]
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
[
|
||||
"obsidian-file-color",
|
||||
"steffo-file-index"
|
||||
]
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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"
|
||||
]
|
|
@ -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
36
.obsidian/graph.json
vendored
|
@ -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
|
||||
}
|
36
.obsidian/plugins/obsidian-file-color/data.json
vendored
36
.obsidian/plugins/obsidian-file-color/data.json
vendored
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
212
.obsidian/workspace.sync-conflict-20231104-233155-TC3LVPI.json
vendored
Normal file
212
.obsidian/workspace.sync-conflict-20231104-233155-TC3LVPI.json
vendored
Normal 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"
|
||||
]
|
||||
}
|
|
@ -1,8 +1,7 @@
|
|||
[[algoritmo]] di ==PROBLEMA==.
|
||||
|
||||
## Funzionamento
|
||||
|
||||
==...==
|
||||
> [!Summary]
|
||||
> ==...==
|
||||
|
||||
## [[Comportamento]]
|
||||
|
||||
|
|
|
@ -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]].
|
||||
|
||||
|
|
|
@ -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]]
|
||||
|
|
|
@ -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]].
|
||||
|
|
|
@ -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.
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -1 +1,6 @@
|
|||
---
|
||||
aliases:
|
||||
- spontaneamente
|
||||
---
|
||||
|
||||
Avvenimento [[istantaneo]] che ha luogo all'esterno del [[sistema]].
|
|
@ -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.
|
|
@ -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.
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
[[sistema distribuito]] che non ha [[restrizione di tempo]].
|
|
@ -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"}
|
||||
]
|
||||
}
|
|
@ -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]]
|
||||
|
||||
|
|
|
@ -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`
|
||||
|
|
|
@ -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]]
|
||||
|
||||
|
|
|
@ -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]]
|
||||
|
||||
|
|
|
@ -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]]
|
||||
|
||||
==...==
|
|
@ -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]]
|
||||
|
||||
|
|
|
@ -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"}
|
||||
]
|
||||
}
|
|
@ -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]].
|
|
@ -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,7 +8,7 @@ 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]]**
|
||||
|
@ -16,3 +16,9 @@ Si vuole [[problema di ricerca|determinare]] uno [[spanning tree]] per il [[sist
|
|||
- [[full-duplex|grafo indiretto]]
|
||||
- **[[restrizione di tempo|Tempo]]**
|
||||
- [[ritardo di comunicazione unitario]]
|
||||
- [[terminazione locale]]
|
||||
|
||||
### [[Algoritmo|Algoritmi]]
|
||||
|
||||
- [[multiple spanning tree transform]]
|
||||
- [[selective spanning tree transform]]
|
|
@ -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]].
|
|
@ -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.
|
||||
|
|
@ -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)
|
||||
$$
|
|
@ -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)
|
||||
$$
|
|
@ -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]]
|
||||
|
|
|
@ -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!
|
|
@ -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.
|
|
@ -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"}
|
||||
]
|
||||
}
|
|
@ -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?==
|
||||
$$
|
||||
|
||||
$$
|
|
@ -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]]
|
|
@ -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==
|
|
@ -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]]
|
||||
|
||||
==...==
|
|
@ -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]]
|
||||
|
||||
- ==...==
|
||||
- ==...==
|
|
@ -0,0 +1,3 @@
|
|||
==TODO==
|
||||
|
||||
Non è possibile raggiungere il consenso con un sistema deterministico se [[entità]] possono fallire.
|
|
@ -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]]
|
||||
|
||||
==...==
|
19
README.md
19
README.md
|
@ -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)!
|
||||
|
|
|
@ -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
Loading…
Reference in a new issue