Appunti Fondamenti di Informatica 7/05/015 I motori di ricerca Algoritmi e strutture dati I motori di ricerca sono tra i servizi internet maggiormente utilizzati. Come in un libro sono generalmente presenti un sommario iniziale che ne riassume la struttura e un indice analitico per il rapido reperimento delle informazioni, anche un motore di ricerca contiene un indice analitico, quello delle pagine web. Le pagine web sono individuate mediante un URL (Uniform Resource Locator) che identifica il percorso che i pacchetti del mittente devono effettuare sulla rete per accedere alla risorsa richiesta. Un esempio di URL è http://mb.unisalento.it/index.htm - http (Hypertext Transfer Protocol) è il protocollo per il trasferimento di ipertesti, un insieme di regole che stabiliscono il modo in cui trattare l informazione (altri protocolli sono UDP e FTP); -.it identifica lo Stato; -.unisalento indica l istituzione universitaria; - mb individua il computer dell istituzione in cui sono presenti le informazioni richieste; - index.htm è il file richiesto..it è un doio di primo livello mentre.unisalento.it è un doio di secondo livello. Se non è presente alcuna indicazione sul file da selezionare, il file richiesto di default è index.htm. All URL corrisponde un codice, detto indirizzo IP, che identifica univocamente il computer sulla rete e che in questo caso è 193.04.73.118 Per comprendere il funzionamento dell URL consideriamo la mappa del mondo. Essa può essere suddivisa in aree, ognuna delle quali può essere suddivisa in regioni, a loro volta divisibili in sottoregioni. Allo stesso modo il codice che identifica il doio può essere considerato come diviso in 56 zone, a loro volta suddivise in 56 sottozone, anch esse divisibili in 56 sottozone.
Un motore di ricerca come Google può essere rappresentato da un computer costituito da due software: il crawler e l indexer. mb unisalento crawler indexer G MIUR Mentre non sono presenti computer sufficientemente intelligenti per trattare in modo completo la semantica, è abbastanza semplice esaare la sintassi dei contenuti di una pagina web. Ad esempio, sono presenti algoritmi in grado di riconoscere la radice di un verbo escludendone le flessioni. I crawler o spider individuano i link contenuti in una pagina web ed esaano le pagine da essi indirizzate, ricercando altri link e ripetendo il procedimento. Ad oggi il crawler di Google effettua una scansione di internet mediamente in una settimana. L indexer prende in input una pagina passata dal crawler ed esclude gli aspetti sintattici trascurabili includendo le parole rilevanti all interno di un indice analitico, un database dove a ogni parola è associato l elenco di tutte le pagine web (indicate mediante URL) in cui è stata individuata e il numero di riferimenti alla parola presenti al loro interno. La dimensione dell indice creato è molto più piccola rispetto all insieme delle pagine stesse. Un parametro valutato dal motore di ricerca per l ordinamento delle pagine è il ranking, sul quale influiscono il numero di volte che una parola compare nella pagina web o il pagamento di uno specifico servizio. La SEO (Search Engine Optimization) è l ottimizzazione delle pagine web finalizzata a una migliore rilevazione da parte dei motori di ricerca. Poiché l indice analitico creato è posto in ordine alfabetico, il motore di ricerca deve essere in grado di effettuare l ordinamento di parole su liste molto grandi. Gli algoritmi di ordinamento Il concetto di algoritmo prevede la descrizione di un problema in modo operativo. Un algoritmo particolarmente ricorrente è quello dell ordinamento. Consideriamo un vettore di interi: A = {1, 7, 5,, 9} Per ordinare il vettore A, tra gli oltre duecento algoritmi esistenti, scegliamo il Bubble Sort o algoritmo di ordinamento a bolle. Il nome dell algoritmo deriva
dall analogia con il fenomeno fisico della precipitazione dei componenti più pesanti e del galleggiamento di quelli più leggeri in un recipiente pieno d acqua. Allo stesso modo, per ogni coppia di elementi del vettore, partendo dal basso, confrontiamo i due valori considerati e poniamo in una posizione superiore il più piccolo tra i due: 1 7 1 5 7 5 9 9 1 7 5 9 Confrontando il e il 9, quest ultimo, più pesante, resta in basso, mentre resta nella posizione superiore. Proseguendo con i confronti si completa il primo ciclo di ordinamento. Dopo tale processo la posizione più alta è occupata dal imo tra tutti i valori del vettore. Da un problema di dimensione 5 si passa, quindi, a un problema di dimensione 4. Consideriamo il vettore composto dagli elementi restanti e confrontando le coppie di interi operiamo un secondo ciclo di ordinamento. 1 1 7 5 5 5 5 7 9 9 1 5 7 9 Procedendo in questo modo, il vettore risulta ordinato dopo 4 passaggi. Esaiamo un generico vettore di interi composto da n elementi: n elementi n-1 elementi n- elementi. max. max 1 n-1 Effettuando i confronti tra le coppie e ponendo il numero inferiore nella posizione più elevata, il problema dell ordinamento risulta completamente risolto dopo n-1 passaggi. Poiché tramite i codici qualunque grandezza può essere trasformata in numeri, l ordinamento di parole o dei pixel di un immagine è ricondotto all ordinamento di un insieme di numeri. L ordinamento per colore dei pixel di una fotografia permette di ottenere l istogramma della fotografia, utilizzato per correggerne l esposizione.
Definendo come operazione la composizione di un confronto e di uno scambio, OP = CFR + SCAMBIO il numero di operazioni di cui si necessita per completare l ordinamento su un array di n elementi è n 1 + n + n 3 + n 4 +... + 1 Tale problema è definito somma triangolare e la sua soluzione è n Avendo 10 6 elementi all interno del vettore, l algoritmo Bubble Sort per il suo ordinamento richiede circa 10 1 operazioni. È questo il motivo per cui, in relazione al problema dell ordinamento, si parla di complessità computazionale, teoria che permette di valutare il tempo necessario per lo svolgimento di tutte le operazioni. Esistono algoritmi, detti indecidibili, che non terano mai. Ne è un esempio l algoritmo che permette di sapere se un deterato programma funziona o non funziona. Altri algoritmi sono invece decidibili e calcolabili. Il imo valore teorico del numero di operazioni necessarie per il completamento dell ordinamento di un vettore di n elementi è f ( n) = nlog n Se il vettore è composto da 10 6 elementi, il suo valore è circa 0*10 6, molto ore di quello relativo all algoritmo Bubble Sort.
Si riporta il codice C relativo all algoritmo iterativo di ordinamento Bubble Sort di un vettore composto da 5 interi. Lorenzo Cazzella Walter Enzo Re