_antoniobernardo
(90 punti)
1' di lettura
BUSY PHONE CALL (a symmetric problem)






Mi è capitato circa 8267 volte (o forse 8268) di telefonare ad una persona e trovare occupato.
Poco male, fai il 5 e buonanotte!
In un certo senso sì, buonanotte. Ma non mi sono potuto tirare indietro quando ho capito che si trattava di una LOS (Linea Occupata Simmetricamente - vocabolo desmatronico).
In breve, se la persona sta parlando con altrui essere umano diverso da voi che chiamate, benissimo fate il 5.
Ma come fate ad essere sicuri che stia intrattenendo una conversazione con un'altra persona? E se stesse invece cercando di chiamarvi a sua volta e trova occupato perché voi fate la stessa cosa?
In questo caso la domanda sarà: "Qual è la migliore strategia da seguire?"

E non è molto facile scoprirlo visto che supponiamo fin d'ora che entrambi svolgano il medesimo ragionamento.
Ad esempio, una strategia (fallace) potrebbe essere "attacco la cornetta e aspetto che arrivi la telefonata" .
Anche un bambino capirebbe che i due facendo lo stesso ragionamento, sarebbero indotti ad attendere un tempo tra l'infinito ed infinito più uno.
Insomma, la chiave della soluzione dove sta?
Risiede nel fatto che dobbiamo far svolgere ai due un comportamento diverso. E tutto ciò semplicemente con le sole informazioni che disponiamo.

Sostanzialmente abbiamo bisogno che uno attacchi il telefono e che l'altro chiami.
Questo è possibile.
Innanzitutto immaginiamo che chi chiama non conosce il proprio numero.
Se i due avessero a disposizione un computer per la generazione di numeri random e prendessero il primo numero che viene loro mostrato dal pc, supponiamo in un range umano di 30 secondi ed attendessero esattamente un numero di secondi pari al numero propostogli dal computer, avremmo discrete chances di metterci in contatto.
In questo caso la probabilità di ritrovare occupato al primo tentativo è 1 su 30, ma già al secondo tentativo è così irrisoria (0,1%) che si può ritenere sicuro il 'contatto'.
Gli inconvenienti principali di questo metodo sono sostanzialmente due e tutti voi lettori avrete già sentito puzza di poca praticità. Innanzitutto il pc; cavolo saranno pure piccoli i portatili al giorno d'oggi, ma portarsene sempre dietro uno è ben lungi dal definirsi pratico e comodo. Mi direte che ci sono i palmari, ma tutti hanno a disposizione un palmare? A noi interessa coprire il maggior numero di casi ed anche una semplice calcolatrice programmabile potrebbe esser di poco aiuto e soprattutto di poca diffusione. Inoltre c'é da considerare un fatto: se a me esce il numero 24 attenderò 24 secondi prima di rifare il numero, ma se all'altro chiamante esce il 25? O il 26 o il 23? Di certo rischieremmo (anche con la discreta velocità del tasto R) di non riuscire a fare il numero in un secondo o due e peggio ancora se stiamo telefonando da un cellulare che dovrà cercare la banda!
Comunque il nostro passetto in avanti lo stiamo per compiere, perché una delle informazioni che i due hanno sicuramente a disposizione è il numero di telefono che stanno facendo.
Ed è oltretutto un'ottima distribuzione di numeri random che non saranno mai uguali al 100%.
Allora cosa si potrebbe fare? Si potrebbe ad esempio prendere la prima cifra A ed attendere esattamente A secondi prima di ritentare la telefonata. La probabilità che l'altra persona abbia la stessa cifra è del 10% e se consideriamo che spesso si chiama verso lo stesso distretto o prefisso di cellulare, questa percentuale salirà di molto. Ma allora perché non partire dal fondo? E' molto più probabile che siano differenti i numeri in coda che quelli in testa rappresentati dallo stesso distretto se non addirittura dallo stesso prefisso cittadino.
Le probabilità d'incontrare un numero uguale per entrambi i numeri di telefono sarà del 10% in maniera molto più 'forte' della precedente, al secondo tentativo sarà dunque dell'1% e diverrà irrisoria al terzo tentativo: 1 su 1000.
Rimarrà però purtroppo il problema dell'uno/due secondi di range per fare materialmente il numero. Ad esempio, il numero che voglio chiamare termina per 5 e quello mio per 4. La persona che voglio chiamare attenderà 4 secondi, farà il numero e prima di prendere la linea saranno passati magari 6/7 secondi (4+2 o 4+3 non 6 o 7 secondi dalla fine del conteggio!) durante i quali io stesso avrò terminato la mia attesa e starò componendo il numero dell'altro. Senza contare il problema della precisione di calcolo di questi secondi; li conto a mente (caso peggiore)? Lo strumento che ho a disposizione ha la stessa precisione di quello dell'altro? Forse quest'ultimo inconveniente è superabile dal fatto che per tempi così brevi, tutti gli orologi o cronometri possono ritenersi ugualmente precisi, ma possiamo anche 'sgarrare' nel momento di partenza: quando inizia il conteggio?
A questo punto un buon metodo potrebbe essere quello di prendere il quintuplo della cifra che abbiamo ed attendere esattamente questi secondi. Se dopo tre tentativi troviamo ancora occupato, possiamo ragionevolmente ritenere che l'altra persona sia impegnata in una conversazione diversa dalla nostra.
Ma attendere il quintuplo di una cifra vicina al 9 può essere estenuante.
Ad esempio, supponiamo che Guidalcisio voglia chiamare il suo amico Brepustene al cellulare le cui ultime 4 cifre sono 2348. Al primo tentativo (il tentativo ZERO) Guidalcisio troverà occupato e si domanderà se sia incappato o meno in una LOS. Allora comincerà con l'attendere 40 secondi e poi farà di nuovo il numero. Non conoscendo il suo stesso numero di telefono per poter capire quanti e quali secondi stia aspettando eventualmente Brepustene continuerà, in caso trovi ancora occupato, ad attendere altri 20 secondi (4 per 5) e poi ancora 15. A questo punto noi gli consigliamo di riprovare tra un'oretta, ma se invece sapesse quale sia il proprio numero, le cose cambierebbero in meglio.
Infatti dovrebbe semplicemente prendere la prima cifra diversa dal suo numero partendo dal fondo. Questo proprio perché nel caso di una LOS, Brepustene adotterebbe la stessa strategia.
Immaginiamo i due numeri come di seguito:
Guidalcisio deve fare il: 70546256<u>1</u> 63842348Brepustene deve fare il: 70452625<u>2</u> 63842348

Guidalcisio attenderà 5 secondi e farà nuovamente il numero di Brepustene. A sua volta Brepustene attenderà 10 secondi prima di rifare il numero di Guidalcisio e con molta probabilità prima che passino questi 10 secondi riceverà la chiamata di Guidalcisio.
Appare comunque evidente che c'é un 'di più' a questo punto della strategia perché seguendo entrambi lo stesso ragionamento e conoscendo entrambi il proprio numero, sapranno sicuramente in partenza chi chiamerà per primo, ovvero Guidalcisio.
Ricordo che nel caso in cui i due non conoscano il proprio numero di telefono (molto comune tra gli esseri umani), la probabilità (visto questo esempio) che abbiano 8 cifre uguali è dello 0,000001%, ovvero 1 su 100 milioni.
E' più facile che 2 italiani che s'incontrano all'estero si conoscano.
Ora, abbiamo detto che attendere il quintuplo di una cifra da 0 a 9 possa risultare poco pratico, anche nel caso in cui uno dei due stia o meno intorno ai 20 secondi (cifra 4 dunque).
Esiste un metodo migliore di queste estenuanti attese?
Beh direi di sì, ma solo nel caso che Guidalcisio e Brepustene conoscano il proprio numero di telefono.
Uno dei due compone il numero dell'amico e trova occupato.
Sarà una LOS o una LOA (Linea Occupata Asimmetricamente, ovvero terzo ricevente tra i piedi)?
E' sufficiente prendersi tutto il tempo che si vuole (peraltro breve) per osservare quale tra i due numeri sia il più grande. Seguendo la regola dell'Anziano, chi ha il numero di telefono più grande si riposa e attende la chiamata dell'altro.

Esempio

SOLVING LOS PROBLEMGuidalcisioBrepusteneChi chiamaChi attende
Numero di telefono192.745.19<u>8</u> .831.234.1192.745.19<u>7</u> .831.234.1--
Numero di telefono da chiamare 192.745.197.831.234.1192.745.198.831.234.1--
Numero più grande192.745.19<u>8</u> .831.234.1-BrepusteneGuidalcisio


Dalla tabella si capisce che colui che deve chiamare è colui che, scorrendo da sinistra, ha il primo numero diverso più piccolo. Abbastanza veloce d'afferrare.
Esaminiamo invece il caso in cui uno solo dei due stesse chiaccherando con una terza persona; l'altro applicherebbe il metodo dell'Anziano e troverebbe occupato se fosse lui il più giovane. Allora capirebbe che era solo una LOA.
Se invece fosse lui l'Anziano e la telefonata non arriva diciamo entro venti secondi, potrebbe ritenere anche quà di aver beccato una LOA.

Nel caso in cui Guidalcisio o Brepustene decidano di chiamare rispettivamente Brepustene o Guidalcisio senza conoscere quale sia il proprio numero di telefono è sufficiente applicare il metodo del 5 e cioé dei quintupli.
Ma riassiumiamo il tutto con due esempi.

Esempi

Faccio parte di quell'80% circa (fonte dati: A.P.R.I. - Approssimazione Percentuale per Rendere l'Idea) di persone che conoscono il proprio numero oltre a quello che stanno chiamando.
Chiamo.
Trovo occupato.
Attacco la cornetta. LOS o LOA?
Esamino subito i due numeri e so che la stessa cosa sta facendo l'altra persona, dunque non ho fretta.

A) Il mio è minore, continuo a chiamare.

  • trovo libero e il gioco è fatto
  • trovo occupato e so che posso riprovare più tardi

B) Il mio è maggiore, attendo.

  • squilla il telefono e il gioco è fatto
  • non squilla il telefono e so che posso riprovare più tardi

Se invece facessi parte di quel simpaticissimo 20% e si presuppone che io sappia di non sapere :-) ...
applicherei il metodo del 5.

A) parto dall'ultima cifra, la moltiplico per 5 e conto (decisamente a mente)
  • finito di contare richiamo
    • libero, ok
    • occupato, passo alla seconda cifra (la penultima del numero), la moltiplico per 5 e conto
      • libero, ok
      • occupato, passo alla terza cifra (la terzultima del numero), la moltiplico per 5 e conto
        • libero, ok
        • occupato, consiglio di riprovare più tardi


Se siete degli speranzosi incalliti, provate pure con la quarta cifra, ma per ottenere un ottimo del problema ritengo che lo 0,1% sia sufficiente a farvi desistere.

Perciò riassumendo, nella maggior parte dei casi sarà applicato l'Anziano.
Per quelle persone che non conoscono il proprio numero applicate pure il 5.
Memorizzatevi quei piccoli casi e ricordatevi che:

1) l'Anziano riposa

2) se non vi mettete in contatto entro 20 secondi è una LOA

3) anche con il metodo del 5 in un tempo massimo di 2 minuti e dieci secondi (45+45+40) capirete se è una LOS o una LOA

Facendo una media del metodo del 5 potremmo accontentarci di un 130 secondi diviso tre.
Dunque 43 secondi circa per venire a capo del problema.

Not too bad.

Rimarrebbe il caso in cui noi siamo a conoscenza del metodo e l'altra persona no.
In questo caso ci allontaneremmo dal presupposto che i due ragionino alla stessa maniera o meglio, applichino lo stesso algoritmo o strategia.
Ma anche quì siamo sostanzialmente salvi poiché si possono verificare due sole situazioni critiche sui 4 casi possibili:

1) io sono l'Anziano, attendo e la stessa cosa inconsciamente farà l'altra persona

2) io non sono l'Anziano, chiamo l'altra persona che continuerà imperterrita a digitare il mio numero

Sembrerebbero due situazioni di stallo, ma non è così.
Infatti io ragiono con una strategia, l'altro no. E questa è una distribuzione diversificata delle azioni, indistinguibilmente diverse tra loro (lo abbiamo preso proprio come caso particolare).
Perciò nel primo caso avremo un'attesa assolutamente asimmetrica in quanto io avrò pianificato di attendere e dunque non chiamerò più per un bel pò. L'altro invece è in "modalità random" e dunque al 99% dei casi alzerà la cornetta molto prima che io ritenti.
Nel secondo caso io, con la mia strategia penserei che l'altra persona stia parlando con un terzo interlocutore, abbasserò il telefono e come prima, non ritenterò per un tempo t sicuramente maggiore al 99% del tempo random t' dell'altra persona.


E adesso scusate...

.....ma devo fare una telefonata ;-)