Creato da sweet.sensation il 15/12/2006

Healing Hand

She’s a cold, dark night in the dead of winter

 

 

« Intro al tagTagliatelle in fiore »

Problema delle due armate

Post n°6 pubblicato il 18 Dicembre 2006 da sweet.sensation
 

Quante volte vi sarà capitato, parlando al telefono con il/la vostro/a innamorato/a, di arrivare alla fine della telefonata ed inscenare, praticamente in simultanea, l'irritante balletto del "Attacca tu", "No prima tu" che si protrae per minuti con gioia immensa da parte della vostra Compagnia dei Telefoni che intanto vi addebita soldi in bolletta (a meno che non abbiate canone fisso indipendente dalla durata delle chiamate...).

In informatica esiste un problema analogo detto "rilascio della connessione" che riguarda due soggetti che si scambiano informazioni: come faccio a capire quando l'altra parte vuole interrompere la connessione? Un modo potrebbe essere della serie "Io ho finito, chiudiamo, "Si anche io, bye bye !!"". In realtà le cose non sono così semplici.  In letteratura il modello più astratto che rappresenta tale problema è detto "problema delle due armate".
Supponiamo che due armate A e B siano in querra, e che l'armata A sia divisa in due eserciti: detti 1 e 2. Quest'ultimi devono accordarsi su quando attaccare l'armata B. Per farlo devono inviare da una parte all'altra del campo di guerra un messaggero, che però può essere fatto prigioniero dall'armata B.

Il comandante dell'esercito 1 manda un messaggero comunicando al comandante dell'esercito 2 "attacchiamo al tramonto, siete d'accordo?". Il comandante 2 riceve il messaggio rimanda indietro il messaggero con risposta affermativa e tutto sembra risolto. Ma c'è un ma. Il comandante 2 non sa se il messaggero è arrivato e se, quindi, il comandante 1 ha ricevuto il messaggio. E' facile intuire che aggiungere ulteriori passaggi di conferma non risolve la situazione:  c'è sempre l'ultimo messaggio di conferma che chi ha inviato non sa se sia arrivato o meno.

Ora, ritornando al nostro problema di rilascio della connessione, dal punto di vista pratico, la cosa viene risolta introducendo un timeout: una delle due parti manda il messaggio ed attiva un timer: se nel lasso di tempo preaccordato dalle parti arriva un messaggio di conferma allora tutto è a posto, altrimenti scaduto il timeout la parte considera terminata la connessione e rilascia il canale di comunicazione. Il succo del discorso è questo. Il metodo funziona e tutto sembra ok.

Ma c'è una cosa che non va.  Nella versione "militaresca" questo approccio potrebbe portare ad uno stallo: il messaggero potrebbe non arrivare mai e i due eserciti non attaccano. Se aggiungiamo che la versione originale assume che ciascuno dei due eserciti singolarmente sia meno forte dell'armata B (ma che uniti siano più forti), l'armata B potrebbe attaccarli separatamente e vincere la battaglia......

Ciò vorrebbe dire che la soluzione concreta non risolve la versione più astratta del "problema".


Mumble mumble.....



 
 
 
Vai alla Home Page del blog
Citazioni nei Blog Amici: 18
 

ULTIME VISITE AL BLOG

camelia_79Onestosempreepnaposweet.sensationGaberFabersolardgl2gianfilippolattanziLa_GabrielaIl_giustiziere01daclisdragon642gianfrancociabocchiclara.amandolipantaleoefrancamario.dandrea
 
 

FACEBOOK

 
 

TAG

 

CERCA IN QUESTO BLOG

  Trova
 

ARCHIVIO MESSAGGI

 
 << Settembre 2024 >> 
 
LuMaMeGiVeSaDo
 
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
 
 
 

© Italiaonline S.p.A. 2024Direzione e coordinamento di Libero Acquisition S.á r.l.P. IVA 03970540963