Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Tesina informatica sull?algoritmo, Tesine universitarie di Elementi di Informatica

algoritmo

Tipologia: Tesine universitarie

2015/2016

Caricato il 07/06/2016

madalina_chistol
madalina_chistol 🇮🇹

4 documenti

1 / 14

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Tesina informatica
L’informatica è la scienza che tratta della elaborazione delle informazioni , essa non riguarda
soltanto l’ambito numerico o scientifico , ma coinvolge tutte le attività umane . Andiamo a prendere
in particolare analisi uno dei metodi: l’algoritmo . Un algoritmo è un procedimento che risolve un
determinato problema attraverso un numero finito di passi elementari.
Il termine deriva dalla trascrizione latina del nome del matematico persiano al-Khwarizmi che è
considerato uno dei primi autori ad aver fatto riferimento a questo concetto.
al-Khwarizmi
L'algoritmo è un concetto fondamentale dell'informatica, anzitutto perché è alla base della nozione
teorica di calcolabilità: un problema è calcolabile quando è risolvibile mediante un algoritmo.
Inoltre, l'algoritmo è un concetto cardine anche della fase di programmazione dello sviluppo di un
software: preso un problema da automatizzare, la programmazione costituisce essenzialmente la
traduzione o codifica di un algoritmo per tale problema in programma, scritto in un certo
linguaggio, che può essere quindi effettivamente eseguito da un calcolatore. Nel secolo scorso, il
concetto di algoritmo venne formalizzato per risolvere il problema matematico della "decisione" ,
posto da David Hilbert nel 1928 , e altre successive formalizzazioni giunsero con lo sviluppo dei
concetti di "calcolabilità effettiva" e di "metodo effettivo". Le formalizzazioni matematiche più
famose sono le funzioni ricorsive di Gödel–Herbrand–Kleene del 1930, 1934 e 1935 ; il Calcolo
Lambda di Alonzo Church e la Formulation 1 di Emil Post del 1936 ; e, infine, la Macchina di Alan
Turing del 1936–37 e 1939 .
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Anteprima parziale del testo

Scarica Tesina informatica sull?algoritmo e più Tesine universitarie in PDF di Elementi di Informatica solo su Docsity!

Tesina informatica

L’informatica è la scienza che tratta della elaborazione delle informazioni , essa non riguarda soltanto l’ambito numerico o scientifico , ma coinvolge tutte le attività umane. Andiamo a prendere in particolare analisi uno dei metodi: l’algoritmo. Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi elementari.

Il termine deriva dalla trascrizione latina del nome del matematico persiano al-Khwarizmi che è

considerato uno dei primi autori ad aver fatto riferimento a questo concetto.

al-Khwarizmi

L'algoritmo è un concetto fondamentale dell'informatica, anzitutto perché è alla base della nozione teorica di calcolabilità: un problema è calcolabile quando è risolvibile mediante un algoritmo. Inoltre, l'algoritmo è un concetto cardine anche della fase di programmazione dello sviluppo di un software: preso un problema da automatizzare, la programmazione costituisce essenzialmente la traduzione o codifica di un algoritmo per tale problema in programma, scritto in un certo linguaggio, che può essere quindi effettivamente eseguito da un calcolatore. Nel secolo scorso, il concetto di algoritmo venne formalizzato per risolvere il problema matematico della "decisione" , posto da David Hilbert nel 1928 , e altre successive formalizzazioni giunsero con lo sviluppo dei concetti di "calcolabilità effettiva" e di "metodo effettivo". Le formalizzazioni matematiche più famose sono le funzioni ricorsive di Gödel–Herbrand–Kleene del 1930, 1934 e 1935 ; il Calcolo Lambda di Alonzo Church e la Formulation 1 di Emil Post del 1936 ; e, infine, la Macchina di Alan Turing del 1936–37 e 1939.

(macchina di turing) (in ordine: alan turing , Gödel, Kleene e Alonzo Church)

Nonostante ciò, una definizione del concetto di algoritmo che sia formale e non tecnica manca tuttora e si è pertanto costretti ad accontentarsi dell'idea intuitiva di algoritmo come una sequenza ordinata e finita di passi (operazioni o istruzioni) elementari che conduce a un ben determinato risultato in un tempo finito.

Modelli formali

Rappresentazione grafica dell'algoritmo Quicksort

La definizione di algoritmo appena riportata è piuttosto informale, mentre era necessario disporre di una definizione più rigorosa per trattare il concetto di algoritmo con strumenti matematici. Al tal fine sono stati definiti alcuni modelli matematici di algoritmo, fra i quali uno dei più celebri è la macchina di Turing. Essa rappresenta una sorta di computer ideale corredato di un programma da eseguire, ma, rispetto a un computer ideale, la macchina di Turing ha un funzionamento estremamente più semplice cosicché il suo funzionamento possa essere facilmente descritto in termini matematici, facendo uso di concetti come insieme, relazione e funzione. La macchina di Von Neumann, che è il modello di architettura sottostante a tutti i computer attuali, è equivalente, in termini di potere di calcolo, alla macchina di Turing. In altre parole, è stato dimostrato che un certo problema può essere risolto da un computer (opportunamente programmato) se e solo se esso può essere risolto anche da una macchina di Turing. Oltre alla macchina di Turing, proposta da Alan Turing nel 1936, nello stesso periodo altri matematici hanno elaborato diverse rappresentazioni formali del concetto di algoritmo, fra i quali ricordiamo, per esempio, il lambda calcolo. Dopo alcuni anni, emerse che tutti questi modelli erano equivalenti: i problemi che una macchina di Turing poteva risolvere erano gli stessi che poteva risolvere una macchina di von Neumann e anche gli stessi che poteva risolvere una funzione costruita col lambda calcolo inserire riferimento o citare

( Es. diagramma di flusso)

L'algoritmo viene generalmente descritto come "procedimento di risoluzione di un problema". In questo contesto, i "problemi" che si considerano sono quasi sempre caratterizzati da dati di ingresso (input) variabili, su cui l'algoritmo stesso opererà per giungere fino alla soluzione. Per esempio, il calcolo del massimo comune divisore fra due numeri è un esempio di "problema", e i suoi dati di ingresso, variabili di volta in volta, sono i due numeri in questione. A un non matematico questa potrebbe apparire come una "famiglia di problemi" (il problema di calcolare il massimo comune divisore fra 10 e 15, il problema di calcolarlo fra 40 e 60, fra 35 e 95, e così via). Il matematico e l'informatico identificano con la parola "problema" l'intera famiglia e con "istanza" o "x" ciascuno dei quesiti specifici ottenuti fissando due particolari valori. Data questa premessa, un algoritmo risolve un problema se per qualunque istanza del problema esso produce in un tempo finito la soluzione desiderata, ovvero un certo risultato o dato in uscita (output).Se questa idea aveva già una certa importanza per il calcolo matematico, l'avvento dell'informatica l'ha arricchita di una nuova importanza, ed è infatti con l'informatica che il termine "algoritmo" ha iniziato a diffondersi. Difatti, se per ottenere un certo risultato (risolvere un certo problema) esiste un procedimento infallibile, che può essere descritto in modo non ambiguo fino ai dettagli, e conduce sempre all'obiettivo desiderato in un tempo finito, allora esistono le condizioni per affidare questo compito a un computer, semplicemente introducendo l'algoritmo in questione in un programma scritto in un opportuno linguaggio comprensibile alla macchina.

Inizialmente un algoritmo può essere descritto attraverso l'uso di un diagramma di flusso o ricorrendo a uno pseudocodice. Successivamente, nella fase di programmazione l'algoritmo così scritto verrà tradotto in linguaggio di programmazione a opera di un programmatore sotto forma di codice sorgente dando vita al programma che sarà eseguito dal calcolatore, eventualmente dopo un'ulteriore traduzione in linguaggio macchina. Particolare rilevanza teorica in tale ambito assume il teorema di Böhm-Jacopini che afferma che qualunque algoritmo può essere implementato utilizzando tre sole strutture, la sequenza, la selezione e il ciclo (iterazione), da applicare ricorsivamente alla composizione di istruzioni elementari. Nella pratica corrente il programmatore professionista nel suo lavoro svolge automaticamente questo processo di traduzione scrivendo direttamente il codice sorgente necessario nelle suddette modalità avendo già trovato la soluzione al problema dato.Da questa definizione, si deducono quindi le seguenti proprietà fondamentali che deve avere un qualunque algoritmo:

  • i passi dell’algoritmo devono essere elementari, cioè non possono essere ulteriormente divisibili ( atomicità );
  • i passi dell’algoritmo non possono essere interpretati in altri modi ( non ambiguità );
  • l’algoritmo deve per forza essere svolto in un certo numero di specifici passi e, nello stesso tempo, deve richiedere in ingresso soltanto una determinata quantità di dati ( finitezza );
  • l’esecuzione dell’algoritmo deve terminare entro un certo periodo di tempo ( terminazione );
  • l’esecuzione dell’algoritmo deve portare ad un risultato univoco ( effettività );
  • ogni passo dell’algoritmo deve essere ben stabilito ( determinismo ).

Ad esempio, per preparare il caffè, bisogna:

  • prendere la macchinetta del caffè, il caffè macinato ed un cucchiaino;
  • aprire la macchinetta del caffè e successivamente togliere il filtro;
  • riempire la macchinetta del caffè con dell’acqua;
  • mettere il caffè macinato nel filtro tramite il cucchiaino;
  • mettere il filtro con il caffè macinato sopra la macchinetta riempita con dell’acqua;
  • (^) chiudere la macchinetta del caffè;
  • aprire il fornello;
  • posizionare la macchinetta sul fornello.

Come vedi, questo semplice esempio rispecchia tutte le proprietà che dovrebbe avere un qualsiasi algoritmo ed in più dovrebbe farti capire sia come si creano gli algoritmi, sia come dovrebbero essere tutti gli altri algoritmi (solamente che gli altri algoritmi potrebbero essere molto più lunghi ed intricati rispetto a questo).

Diagrammi di flusso

A volte, per mostrare la procedura seguita da un certo algoritmo, potrebbe anche essere adoperato un cosiddetto diagramma di flusso. Per rappresentare i diversi concetti, nella maggior parte dei casi, questi diagrammi di flusso utilizzano infatti cinque distinti blocchi:

La rappresentazione grafica di un algoritmo mediante l’utilizzo di un diagramma di flusso potrebbe sembrare una sciocchezza, eppure, utilizzando questi semplici diagrammi, non solo è possibile esprimere concetti molto complessi, ma a volte è anche possibile facilitare il compito al programmatore che deve creare complicati programmi.

Andiamo adesso ad analizzare degli algoritmi molto discussi nell’ ultimo

arco di tempo, denominati: algoritmo Calderoli, algoritmo Volkswagen e

algoritmo MIUR.

Algoritmo Calderoli :

Il senatore leghista roberto calderoli ha inventato un algoritmo capace di modificare le leggi. sono frutto di tre software che li hanno generati secondo un sistema ideato dal suo staff. il leghista ha presentato i suoi emendamenti – cioè le sue proposte di modifica – alla riforma del Senato. Sono 82.730.460. La produzione è ricca perché dipende da tre software incrociati, invenzione di Calderoli insieme col suo staff di ragazzi. Il problema sarà catalogarli, perché quando la Lega depositò 500 mila emendamenti in commissione, l’operazione occupò l’ufficio del presidente Piero Grasso per due settimane. A 250 mila emendamenti a settimana, ci vorrebbero 331 giorni per la sola catalogazione, cioè 47 settimane, quasi un anno. Ovviamente non è andata così ma, per dare la dimensione della goliardata di Calderoli, per contenere il testo di tutti i suoi emendamenti servirebbero 16 mila e 500 volumi da mille pagine l’uno, e se qualcuno desiderasse stampata l’opera completa la dovrebbe pagare 478 mila e 500 euro. Il problema, oltre al prezzo abbastanza impegnativo, sarebbe il peso: oltre 41 tonnellate di carta, più o meno l’equivalente di otto robusti elefanti africani. Certo, se tutti i 321 senatori chiedessero la loro copia, il peso passerebbe a 13 mila tonnellate di carta: per intenderci, pari a 94 Boeing 777. Palazzo Madama sprofonderebbe risolvendo in un secondo il problema del bicameralismo perfetto. Il particolare attacco informatico in questione viene denominato DoS ( Denial of Service) che consiste nel sovraccaricare di richieste un determinato servizio per poi farlo definitivamente collassare. La pratica che riesce a creare tale effetto negativo viene denominato article spinning, molto conosciuta in rete poiché ha l'intento di dare visibilità nei motori di ricerca ai vari siti web. Infatti, questa è una tecnica di Search engine Optimization cara ai webmaster proprietari di blog o di siti web .I software programmati secondo tale riescono a riscrivere, utilizzando sinonimi o cambiando la posizione degli elementi testuali, varie copie di un testo originale .Tale metodo, naturalmente, a lungo andare abbassa di molto la qualità del testo di partenza, ma riesce nell'intento dell'Onorevole Calderoli di bloccare effettivamente l'attività parlamentare. Per risolvere il problema della qualità, si serve di solito di uno spintax , ovvero di una lista di sinonimi o di testi, mediante la quale è possibile rendere le frasi che si genereranno di senso compiuto grazie a dei pattern strutturali come questo : { arrivederci | alla prossima | saluti | buonasera }. Le parentesi graffe racchiudono all'interno tutte le variabili che mediante il software si potranno trovare casualmente. I pipe, invece, vengono utilizzati per dividere i termini possibili. Utilizzando più SPINTAX si possono generare frasi corrette come per esempio : { arrivederci | alla prossima | salve | buonasera } signore, { passi | trascorra | le auguro } una buona serata.Dalla quale stringa si potranno generare casualmente frasi di questo tipo per n= generazioni :

arrivederci signore, passi una buona serata. alla prossima signore, passi una buona serata.

arrivederci signore,trascorra una buona serata. alla prossima signore, trascorra una buona serata.

arrivederci signore, le auguro una buona serata. alla prossima signore, le auguro una buona serata.

salve signore, passi una buona serata. buonasera signore, passi una buona serata.

salve signore, trascorra una buona serata. buonasera signore, trascorra una buona serata.

salve signore, le auguro una buona serata. buonasera signore, le auguro una buona serata.

Tuttavia, i limiti sono comunque presenti , come per esempio si può facilmente intuire quanto sia difficile in alcuni casi che in una frase il programma riesca ad associare correttamente il maschile ed il femminile, poiché il software genera casualmente i sinonimi proposti con lo spintax o comunque con le parole presenti nel suo stesso vocabolario.La tattica di Calderoli è prettamente

crollo del titolo borsistico. La scoperta del trucco ideato dal colosso automobilistico tedesco, però, risale a parecchio tempo fa. Una dettagliata relazione di Bloomberg ricostruisce le tappe dello scandalo, che ha il suo prologo nei primi mesi del 2014. I primi sospetti sorgono a Peter Mock, responsabile per l’Europa dell’International Council on Clean Transportation (organizzazione indipendente che si occupa di trasporti e sostenibilità) conduce test sulle emissioni nocive delle versioni europee di tre automobili diesel: una Volkswagen Jetta e una Passat, oltre che una Bmw X5. In laboratorio nessuno dei tre modelli risulta fuori norma per quanto riguarda la valutazione degli inquinanti, in particolare degli ossidi di azoto NOx. Diverso il discorso per le prove su strada, durante le quali i due veicoli Volkswagen forniscono prestazioni diverse e decisamente peggiori. La discrepanza è troppo evidente per passare inosservata, soprattutto se tali dati provengono da auto equipaggiate con un motore di ultima generazione come il diesel 2. Tdi ad iniezione diretta.

Mock a questo punto chiama in causa i colleghi d’oltreoceano, in particolare il suo omologo John German. I modelli automobilistici presentano sensibili differenze tra i due continenti ed è dunque probabile che, a parità di condizioni, le versioni americane non sforino i limiti consenti per legge. Mock contatta due istituti: il California Air Resources Board è incaricato di effettuare i test sui rulli, mentre ai tecnici della Università della West Virginia spettano i controlli su strada. Guidano le due Volkswagen e la Bmw lungo i 2mila chilometri che separano San Diego da Seattle. A bordo assieme a loro c’è un’apparecchiatura Pems, Portable Emission Measurement System. Questa scatola, che si inserisce nel bagagliaio, rappresenta la tecnologia più sofisticata in circolazione per il controllo e l’omologazione di consumi ed emissioni: in Europa sarà utilizzata a partire dal 2017. I risultati negativi colpevolizzano definitivamente il gruppo di Wolfsburg: alla guida le emissioni di NOx della Jetta superano i limiti di 15-35 volte, quelle della Passat di 5- volte. Nessuno sforamento per la BMW X5. Alla base di questo “imbroglio”

troviamo un unico e sofisticato software : il cosi detto "Defeat device", un impianto di manipolazione vietato dal Clean Air Act. Durante la normale guida del veicolo tale software restava latente non operando sul sistema automobilistico, permettendo le emissioni superiori tra le 10 e le 40 volte in più dei livelli consentiti dalla legge. Tuttavia, nei momenti in cui si verificavano le condizioni classiche di un controllo ( le quali sono pressoché sempre le stesse e schematiche ) Defeat Device modificava i parametri della stessa centralina intervenendo sul motore per ridurre al minimo le emissioni di ossido di azoto. Erano proprio gli algoritmi della Defeat device a controllare le informazioni riguardo la velocità del veicolo, il numero dei giri del motore,l'angolo dello sterzo e altri fattori e a operare quando risultavano coincidenti alle condizioni impostate da chi lo aveva programmato. Ad esempio durante i test delle autovetture, nelle auto viene applicato un tipo di connettore Obd che si pone in relazione con la centralina scaricando tutti i dati nel momento del test. Defeat Device era in grado di riconoscere se si trovava su dei rulli, se era connesso l'Odb e considerando tutti questi valori con i parametri di marcia decideva se intervenire o meno. Alcuni esperti ritengono che tale software riusciva a far risparmiare carburante e aumentare di molto le prestazioni del motore, a discapito, come si è detto, dell'ambiente. All'interno delle autovetture indagate esisteva la presenza di un altro software chiamato AECD, che prende in considerazione vari fattori come la temperatura esterna, la velocità, il numero dei giri e la marcia inserita per ignorare parzialmente o completamente le procedure del controllo delle emissioni in alcune situazioni. Tale procedura è usuale nell'industria automobilistica, poiché consente di superare i limiti delle emissioni delle NOx quando la macchina si trova in una salita ripida o quando la temperatura esterna è molto fredda. Oggi giorno, tuttavia, tale software è presente anche in altri veicoli della nota VW che non sono stati implicati nello scandalo e il rischio è proprio che la nota industria abbia anche manomesso questo programma. Per ovviare al problema del nocivo Defeat device c'è bisogno di un'ora di manutenzione per disabilitare lo stesso softwar. l'EPA ha vietato le varie proposte dei cittadini per modificare autonomamente il Defeat Device, poiché tale azione potrebbe consentire agli stessi consumatori di decodificare il software e scoprire la composizione del noto algoritmo per

Il mea culpa tedesco

A luglio l’Epa minaccia lo stop alla vendita di tutti i modelli della Volkswagen negli Stati Uniti. L’azienda prova ancora a giustificarsi, ma la sua posizione ormai è compromessa. Il 18 settembre giunge l’ammissione definitiva, che svela l’imbroglio. Un dispositivo retto da un complicato algoritmo e progettato dallo stesso gruppo di Wolfsburg era in grado di identificare quando il mezzo era sotto esame e in quelle circostanze poteva limitare le emissioni di ossidi di azoto tramite interventi su alcuni parametri del motore e della centralina. Il software è stato posto in dotazione a 482mila veicoli venduti in America fra il 2009 e il 2015. Per ammissione dell’azienda in tutto sono 11 milioni i veicoli coinvolti in circolazione, i modelli europei non sarebbero esenti da imbrogli. L’Epa ordina di richiamarli tutti quanti e di bloccare la vendita negli Stati Uniti dei modelli Volkswagen che montano i motori incriminati.