1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-29 13:24:17 +00:00
appunti-steffo/9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Algoritmi di broadcast/broadcast problem.md

84 lines
2.5 KiB
Markdown

---
aliases:
- broadcast
---
Problema per un [[sistema distribuito]].
## Definizione
Una [[entità]] vuole comunicare un'informazione a tutto il resto del [[sistema distribuito]].
## [[restrizioni al modello dei sistemi distribuiti|Restrizioni]]
- **[[restrizione di comunicazione|Comunicazione]]**
- [[dimensione dei messaggi illimitata]]
- [[half-duplex]]
- **[[restrizione di affidabilità|Affidabilità]]**
- [[affidabilità totale]]
- **[[restrizione di topologia|Topologia]]**
- [[grafo connesso]]
- **[[restrizione di tempo|Tempo]]**
- [[ritardo di comunicazione illimitato]]
- [[risveglio singolo]]
- [[terminazione locale]]
## [[algoritmo|Algoritmi]]
- **Flooding**
- [[flooding v1]] (non [[algoritmo corretto|corretto]]...)
- [[flooding v2]] ([[algoritmo corretto|corretto]].)
- [[flooding v3]] (ottimizzato!)
## [[costo computazionale|Costo computazionale]]
### [[comunicazione]]
#### In un [[grafo]] qualsiasi
Ogni [[entità]] deve ricevere per forza il messaggio, quindi sicuramente:
$$
\Omega(Entities)
$$
In più, non è possibile togliere nessun [[canale di comunicazione|canale]] senza rischiare che un'[[entità]] non venga raggiunta, in quanto non si hanno informazioni sulla [[rete di comunicazione]] sottostante:
$$
\Large 2 \cdot Channels - (Entities - 1)
$$
#### [[restrizioni al modello dei sistemi distribuiti|Restringendo]] a un [[albero]] con [[leader]] alla [[radice di un albero|radice]]
In un [[albero]], è impossibile che due [[entità]] vicine vengano scoperte contemporaneamente, pertanto il [[notazione Ω-grande|lower bound]] diminuisce a:
$$
\Large Channels
$$
#### [[restrizioni al modello dei sistemi distribuiti|Restringendo]] a un [[grafo completo]]
In un [[grafo completo]] il [[leader]] può inviare il [[messaggio]] direttamente ai suoi vicini:
$$
\Large Nodes
$$
### [[9 - Algoritmi distribuiti/1 - Problemi algoritmici/tempo]]
#### In un [[grafo]] qualsiasi
Il [[grafo]] potrebbe essere un [[cammino di un grafo]], che richiederebbe che ogni arco venisse attraversato, quindi sicuramente:
$$
\Large Channels
$$
#### [[restrizioni al modello dei sistemi distribuiti|Restringendo]] a un [[albero]] con [[leader]] alla [[radice di un albero|radice]]
Anche un [[albero]] potrebbe essere un [[cammino di un grafo]] come un [[grafo]] qualsiasi:
$$
\Large Channels
$$
#### [[restrizioni al modello dei sistemi distribuiti|Restringendo]] a un [[grafo completo]]
In un [[grafo completo]], tutte le [[entità]] sono vicine del [[leader]], quindi ricevono tutte il [[messaggio]] contemporaneamente:
$$
\Large 1
$$