b"\n_START_ARTICLE_\nCalcolo approssimato\n_START_PARAGRAPH_\nIl calcolo approssimato \xc3\xa8 una qualunque forma di calcolo il cui risultato non \xc3\xa8 garantito essere corretto. Esistono diversi domini applicativi dove una approssimazione del risultato \xc3\xa8 comunque tollerata. In situazioni simili \xc3\xa8 possibile applicare tecniche di approssimazione che consentono di eseguire il calcolo consumando una quantit\xc3\xa0 di risorse inferiore rispetto a quanta ne sarebbe richiesta da un calcolo esatto._NEWLINE_Un esempio di campo applicativo dove il calcolo approssimato trova ampio spazio sono i sistemi di pianificazione di itinerari stradali dove pur di avere un risultato entro un breve lasso di tempo, si accetta di seguire un percorso subottimo invece del percorso ottimo. Un altro esempio di campo applicativo \xc3\xa8 quello dell'elaborazione video. Per effettuare sul momento elaborazioni particolarmente complesse si accetta di saltare occasionalmente un fotogramma. Questa tecnica sfrutta il fatto che entro un certo valore di frame rate l'apparato visivo di un essere umano non percepisce difetti nel video. Simili tecniche sono ampiamente utilizzate in ambito videoludico._NEWLINE_Il fattore chiave per l'applicazione di strategie di calcolo approssimato \xc3\xa8 l'identificazione delle procedure che possono essere approssimate con grande risparmio di risorse senza drastiche ripercussioni sulla qualit\xc3\xa0 del risultato. Esistono situazioni in cui l'identificazione di tali procedure \xc3\xa8 banale; esistono condizioni in cui solo un esperto del dominio applicativo \xc3\xa8 in grado di isolare le operazioni meno sensibili agli errori; molto spesso si tratta di raggiungere un compromesso tra le prestazioni che si desidera migliorare e l'errore che si introduce. Nell'ultimo caso si ricorre allo studio della propagazione degli errori all'interno dell'algoritmo di elaborazione in analisi.\n_START_SECTION_\nStrategie\n_START_PARAGRAPH_\nIl calcolo approssimato pu\xc3\xb2 essere applicato a diversi livelli di granularit\xc3\xa0 e in diversi contesti.\n_START_SECTION_\nApprossimazione dell'hardware\n_START_PARAGRAPH_\n\xc3\x88 possibile progettare e realizzare componenti logici che forniscono risultati approssimati in tempi pi\xc3\xb9 rapidi e/o consumando meno potenza rispetto ai corrispettivi componenti esatti._NEWLINE_Due sono i fattori sui quali si pu\xc3\xb2 agire per guadagnare prestazioni: la logica del circuito e le condizioni di lavoro. Nel primo caso l'approssimazione mira ad eliminare dal circuito la logica necessaria a gestire configurazioni di input poco frequenti. Il componente fornir\xc3\xa0 il risultato esatto la maggior parte delle volte. Nei sistemi che realmente implementano soluzioni di questo tipo \xc3\xa8 pratica comune affiancare hardware approssimato a componenti esatti e stabilire politiche di utilizzo di uno e dell'altro. Nel secondo caso il circuito pu\xc3\xb2 essere alimentato a tensione ridotta per risparmiare energia a scapito di una possibile corruzione accidentale dei dati (bit flipping).\n_START_SECTION_\nApprossimazione dei dati\n_START_PARAGRAPH_\n\xc3\x88 possibile rinunciare parzialmente alla precisione dei dati che sono oggetto di elaborazione e/o di archiviazione per risparmiare risorse._NEWLINE_Un esempio \xc3\xa8 l'elaborazione dei dati in virgola mobile. Esistono diversi standard di rappresentazione binaria di numeri in virgola mobile (float, double, ...) e ciascuno di essi garantisce una diversa precisione. L'elaborazione di un numero rappresentato secondo uno standard a maggiore precisione richiede pi\xc3\xb9 tempo ed energia rispetto ad un numero che segue uno standard meno preciso. Lo standard di rappresentazione utilizzato \xc3\xa8 di solito impostato dal programmatore del sistema. Applicare forzosamente, per una parte dell'elaborazione e/o archiviazione di (una parte dei) dati, uno standard a precisione inferiore consente di risparmiare tempo ed energia._NEWLINE_\xc3\x88 possibile agire anche sull'hardware che controlla i dati rendendo approssimata la rappresentazione dei dati in memoria o la loro presenza in memoria. Nel primo caso rientrano le strutture di memoria che troncano i bit meno significativi di un numero. Un esempio del secondo caso sono i sistemi di memoria volatile (DRAM e simili) quando vengono aggiornati a frequenze inferiori rispetto a quelle standard per consumare meno potenza; questo pu\xc3\xb2 compromettere la coerenza dei dati in memoria._NEWLINE_La disabilitazione dei sistemi di controllo e correzione degli errori riduce il tempo di elaborazione di un pacchetto di dati a scapito di garanzie sulla correttezza degli stessi.\n_START_SECTION_\nParadigmi derivati\n_START_PARAGRAPH_\nIl calcolo approssimato ha come principale limitazione l'identificazione dell'impatto che una possibile approssimazione ha sul risultato finale. Su applicazioni di larga scala spesso accade che chi possiede conoscenza sufficiente riguardo al dominio applicativo non possiede le conoscenze tecniche per implementare correttamente tecniche di calcolo approssimato. Derivati da questi problemi, sono emersi paradigmi di programmazione che nettamente separano i ruoli di esperto del dominio e di esperto di efficienza. Questo riduce il livello minimo di conoscenze di una singola figura professionale per applicare le tecniche di calcolo approssimato e ne favorisce la loro diffusione."