|TECH| Rubrica mensile| Lo zio di Google, un italiano…


Scrivere nel 2012 del motore di ricerca Google e di Larry Page e presentarli a degli internauti non ha alcun senso, perché ormai da svariati anni chiunque sentendo tali nomi sa di cosa stiamo parlando. Tutto ciò non è più vero se, invece, parliamo di Hyper Search o di Massimo Marchiori, eppure allo stesso modo ci stiamo riferendo ad un motore di ricerca per il Web ed al suo creatore. Ma oltre ad essere entrambi degli engine per il Web, cosa li accomuna? Semplice: il modo di pensare, di ragionare, o per meglio dire, il loro algoritmo di indicizzazione delle pagine. Per comprendere meglio la questione dobbiamo fare un passo indietro, precisamente nel 1996, anno in cui un giovanissimo matematico ed informatico, di nome Massimo Marchiori, laureatosi con 110 e lode all’Università di Padova ha sviluppato un mini motore di ricerca dal nome Hyper Search, e lo ha presentato negli Stati Uniti alla Conferenza Mondiale di Internet e del Web. In tale conferenza era presente uno dei fondatori di Google, Larry Page , il quale immediatamente capì il valore dell’algoritmo sviluppato da Marchiori e decise di utilizzarlo in parte per la creazione del famoso algoritmo Page Rank, sviluppato presso i laboratori di ricerca della Stanford University e che ha rivoluzionato la storia del World Wide Web. In questo articolo non parleremo però del Page Rank, ma andremo ad analizzare l’algoritmo di ricerca alla base dell’engine Hyper Search. Prima di addentrarci nella spiegazione di tale algoritmo è doveroso fare una piccola premessa, per meglio comprendere quale fosse la situazione informatica e del Web negli anni in cui tale algoritmo è stato creato, così da apprezzarne ancor di più il valore. Come già detto, ci riferiamo alla metà degli anni novanta, periodo in cui Internet crebbe in maniera esponenziale, cominciò ad entrare nelle case dei cittadini comuni, ed era presente non più solo negli uffici o nei laboratori di ricerca. Essenzialmente le risorse in Internet erano immagini e pagine HTML, anche se proprio in quegli anni, è nato il PHP, un potentissimo linguaggio di scripting che ha contribuito enormemente al cambiamento dei servizi offerti dai siti internet, ma questa è un’altra storia, di cui forse un giorno parleremo…  La mole di informazioni che un algoritmo di indicizzazione doveva gestire era, già allora, spropositata. In un mondo in cui esistevano milioni di utenti e decine di milioni di risorse da indicizzare, è indubbio, c’era bisogno di qualcosa che aiutasse gli utenti nella loro navigazione. Ed è proprio a questo grido di aiuto che risposero i motori di ricerca. I primi search engine erano interessati solamente al contenuto testuale di una risorsa Web senza calcolare in alcun modo il suo valore basandosi anche sulla sua iper informazione, il cosidetto hypertext, i link. Ma perché mai dovrebbero essere importanti i link? Pensandoci bene, in realtà un link è un collegamento verso una risorsa. Quindi ragionando in questi termini potremmo dire che alla base dell’algoritmo di Marchiori c’è proprio un ragionamento costruito sull’ipertesto di una pagina web, ovvero per spiegarlo in maniera più semplice definiamo la “iper” informazione di una pagina web come l’ammontare di informazioni che possiamo ottenere a partire da una pagina in un browser e navigando attraverso i suoi link. Quindi le informazioni (potenziali) che potremmo ottenere da una risorsa web, saranno date dalla somma del testo contenuto in essa e dal testo contenuto nei suoi hyperlink, si potrebbe pensare inizialmente; possiamo immediatamente dire che ciò è errato ma a partire da questo ragionamento riusciremo meglio comprendere cosa c’è alla base dell’algoritmo che vogliamo analizzare. Partiamo quindi da un esempio semplice e procediamo con calma.

In questo primo esempio è mostrato il caso più semplice, ovvero abbiamo un oggetto A, a cui possiamo pensare come alla pagina nel browser dell’utente, che ha un link ad un oggetto B, ovvero una pagina accessibile tramite questo link. Quello che ci interessa è calcolare il valore, in termini di informazione testuale, dell’oggetto A. Come già detto, potremmo inizialmente pensare che il valore di A sia dato dalla somma del suo contenuto testuale con il contenuto testuale dell’oggetto B.

 A —> B

Ma credo sia evidente che questo approccio non è corretto, perché dobbiamo pensare innanzi tutto che per ogni click dell’utente vi è un costo in termini di tempo dovuto alla richiesta al server del contenuto di B e poi, volendo rimanere in un sistema di stampo meritocratico, dobbiamo renderci conto che se così fosse il valore di A sarebbe maggiore di quello di B. Infatti, poniamo il caso in cui A avesse un basso contenuto testuale, mentre B un grande contenuto, a questo punto è subito evidente il limite della precedente formulazione dato che con questi presupposti A avrebbe un valore maggiore di B. Questo limite è ancora più grande se aumenta la profondità, che passa da 1 a K. In questo caso avremmo un valore di A calcolato come la sommatoria dei valori testuali delle risorse da 1 a k e questo non è accettabile ed è profondamente scorretto.

 A —> B1 —> … —> B (k-1) —> B (k)

Per risolvere questo limite evidente basterà dire che il contributo all’iper informazione di A da parte di un oggetto ad un profondità K non sarà dato dalla totalità dei suoi contenuti testuali ma da un valore diminuito di un fattore F compreso tra 0 ed 1

 INFORMATION[k](A)= F·INFORMATION[k-1](B)

Per tener conto però della profondità, tra 1 e k, a cui si trova una risorsa B, dobbiamo elevare F al numero corrispondente alla profondità stessa di B. In questo modo cosa otteniamo? Banalmente l’informazione di A sarà costituita dalla sommatoria delle informazioni testuali delle risorse B che vanno da 1 a k, tenendo conto però che più una risorsa risulta “lontana” da A, più il suo valore diminuisce, e questo è logico perché per arrivare ad una risorsa k l’utente dovrà attraversare k-1 passaggi, i quali, come detto in precedenza, hanno un costo in termini di click e di tempo atteso per la transazione sul web.

F·TEXTINFO(B1) + … + Fn·TEXTINFO(Bn)

Per ora ci fermeremo a questo livello, limitandoci al caso migliore e non andremo oltre esaminando la ricorsione o il caso pessimo o medio dell’algoritmo. In questo articolo abbiamo quindi esaminato parzialmente un algoritmo che potremmo definire rivoluzionario, pensando al periodo in cui è stato presentato e con un pizzico di orgoglio vorrei ricordare che la mente da cui è scaturito è italiana, ed invito i lettori ad informarsi sulla appassionante storia di Massimo Marchiori, un illustre italiano, pluripremiato dalla comunità scientifico-informatica, che con non pochi sacrifici ha deciso di rimanere nella sua terra natia ed ivi continuare la sua ricerca nonostante tutti i limiti oggettivi evidenti imposti dalla classe politica italiana e del pesante degrado in cui riversano i nostri atenei.

Silvio Marotta

Fonte: http://www.w3.org/People/Massimo/papers/WWW6/