Il Blog di Fabrizio Mondo

Algoritmo del supermercato

December 20, 2006 1:27 pm

Stamattina mi trovavo al supermercato per fare la spesa, sarà che mancano pochi giorni a natale, ma c’era una confuzione incredibile, ai limiti del sopportabile.

Mentre mi stufavo, tra me e me pensavo a quanto erano lente le code per pagare… e mi chiedevo: “ma il metodo tradizionale con cui vengono gestite le code al supermercato è davvero il migliore?

Probabilmente no, vediamo di esaminarlo sfruttando un pò di conoscenza dei sistemi operativi e cercando di ipotizzare che il sistema casse-clienti possa avere una politica di scheduling diversa.

Mi sembra scontato notare che le code alla posta, o al supermercato, sono gestite secondo una politica FIFO, ovvero first In, First out, chi prima arriva, prima viene servito alla cassa, sono proprio delle Code ;)

E se provassimo ad ipotizzare qualcos’altro?

Politica LIFO, trasformare le code in pile. Uhm, assolutamente impossibile, in quanto in periodi di forte affollamento del supermercato chi entra presto rischia posticipazione indefinita (per i non esperti, rischia di restare al supermarket a vita)

Quindi, LIFO da escludere.

Politica Round-Robin, ovvero una FIFO ciclica. Se entro un tot di tempo, non finisce di essere servito, allora ritorna alla fine della coda e aspetta da capo. Uhm, difficile, in quanto le operazioni al supermercato o alla posta spesso sono ATOMICHE, ovvero inscindibili e devono essere fatte dall’inizio alla fine.

Anche la Round Robin è da escludere (anche se non sempre…)

Politica Shortest process first, ovvero il carrello piu vuoto passa per primo. Questa politica viene applicata più spesso di quanto non si creda. Con le casse rapide si fa qualcosa del genere, mentre in assenza di esse i più furbi, con carrelli vuoti, chiedono di passare prima e spesso ce la fanno. Per potere applicare totalmente questa politica di scheduling occorrerebbe sapere con precisione ciascun carico di lavoro, e non credo sia possibile sapere se la nonnina ha preso 4 latte di pelati oppure 3. E soprattutto, anche qualora si sapesse, chi fa spese grosse rischierebbe di non andare mai alla cassa.

Neanche la SPF è da accettare come possibile.

A questo punto mi viene lo sconforto, le principali politiche alternative di scheduling alternative non sono applicabili.

Non per questo mi do per vinto! Si può comunque fare qualcosa.

Ad esempio, si guadagna tempo se al posto di creare N code per le N casse, si crea una sola coda, e man mano si sceglie la cassa che finisce prima, in questo modo si ottimizzano eventuali tempi morti.

Se poi a questa aggiungiamo un sistema di casse rapide piu efficiente, dove per esempio si divide in: “carrelli vuotissimi”, “carrelli semipieni” e “spese di tutto l’anno” chi ha vagoni di merce aspetta di più, ma chi fa una spesa NORMALE non aspetta millenni… e poi sapete com’è ogni cosa ha un suo costo…