Divide et impera (informatica)

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

Divide et impera (in italiano «dividi e domina», «dividi e impera», «separa e conquista» o «dividi e conquista») indica, in informatica, un approccio per la risoluzione di problemi computazionali.

Descrizione[modifica | modifica wikitesto]

Il termine è più strettamente riconducibile a un algoritmo. Esso divide ricorsivamente un problema in due o più sotto-problemi di egual dimensione fin quando questi ultimi diventino di semplice risoluzione; quindi si combinano le soluzioni al fine di ottenere la soluzione del problema dato.

Questo approccio permette di affrontare in modo semplice problemi anche molto difficili (non complessi, dove la complessità sia irriducibile o non-lineare); inoltre la natura del divide permette di parallelizzare la computazione aumentandone l'efficienza su sistemi distribuiti o multiprocessore. Questo tipo di approccio è tipicamente detto top down.

Un programma sviluppato secondo questa tecnica è sostanzialmente diviso in tre parti:

  • Divide: in questa parte si procede alla suddivisione dei problemi in problemi di dimensione minore;
  • Impera: nella seconda parte i problemi vengono risolti in modo ricorsivo. Quando i sottoproblemi arrivano ad avere una dimensione sufficientemente piccola, essi vengono risolti direttamente tramite il caso base;
  • Combina: l'ultima fase del paradigma prevede di ricombinare l'output ottenuto dalle precedenti chiamate ricorsive al fine di ottenere il risultato finale.

In informatica questo principio viene applicato in modo diffuso per la risoluzione di molteplici problemi. Le applicazioni più conosciute sono due dei più usati algoritmi di ordinamento, il quick sort e il merge sort, oltre che l'algoritmo veloce per il calcolo della trasformata di Fourier veloce (FFT).

Si può parlare anche di divide et impera applicato al campo dell'analisi e del progetto del software.

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Controllo di autoritàGND (DE4291466-8