Questo algoritmo ha un nome?

1

Questo algoritmo ha un nome? Ho elencato tre esempi di seguito. Sto volendo documentare un codice che usa questo algoritmo e non so come chiamarlo. La mia versione è molto più complicata ma è fondamentalmente questa.

Esempio 1:

var maxValue = Int32.MinValue;
foreach (var value in new [] {2, 3, 4, 4, -3, 1, 7})
{
    if (value > maxValue)
        maxValue = value;
}

Esempio 2:

var minValue = Int32.MaxValue;
foreach (var value in new [] {7, 6, 5, 4, 3, 2, 20, 42})
{
    if (value < maxValue)
        minValue = value;
}

Esempio 3:

var mostPrimeFactors = 0;
var valueWithMostPrimeFactors = 0
foreach (var value in new [] {2, 4, 6, 8, 12, 60, 360})
{
    var primeFactorCount = GetPrimeFactors(value).Count;
    if (primeFactorCount > mostPrimeFactors)
    {
        mostPrimeFactors = primeFactorCount
        mostPrimeFactors = value;
    }
}
    
posta Jordan 08.02.2017 - 23:25
fonte

3 risposte

8

Come dice @FrankHileman, massimi e minimi sembrano essere le operazioni eseguite da questi algoritmi.

Tuttavia, i massimi ei minimi sono funzioni matematiche continue piuttosto che cose che riducono un insieme discreto di valori a un singolo valore.

Come applicati a una matrice o sequenza, questi particolari algoritmi sono ciascuno un tipo di piega , che opera su una serie di valori e fornisce un output (singolo) più piccolo.

Alcune lingue offrono un'operazione di piegatura che richiede

  • un set di dati (l'array o la sequenza),
  • una funzione (ad es. che cattura l'algoritmo min o max in termini di un singolo confronto, cioè piuttosto che in termini di elenco completo / matrice / sequenza), e
  • un valore iniziale (il primo della lista) e

che restituisce un singolo valore.

Fold invocherà la funzione di riduzione su ciascun elemento (forse in modo ricorsivo) e alla fine restituirà un singolo valore come risultato finale.

Vedi anche MapReduce , una capacità per fare map & piega / riduci, distribuito su più nodi di calcolo.

    
risposta data 08.02.2017 - 23:42
fonte
2

Nei tuoi esempi, la caratteristica comune è l'iterazione attraverso una sequenza per trovare un membro che corrisponde a una caratteristica particolare.

Quindi, la classe generale di algoritmi che potresti cercare è solo una ricerca sequenziale (ovvero ricerca lineare ). È la forma generale di algoritmi che "controlla in sequenza ogni elemento dell'elenco per il valore di destinazione finché non viene trovata una corrispondenza o finché tutti gli elementi non sono stati cercati".

Nel tuo caso, le caratteristiche a cui stai facendo corrispondenze sono matematiche, ma i confronti non fanno parte dell'algoritmo. Sono i tuoi criteri di corrispondenza. L'aspetto algoritmico di tutti e tre gli esempi è l'iterazione.

    
risposta data 09.02.2017 - 01:25
fonte
2

Per approfondire ciò che @Erik_Eidt ha detto, i massimi ei minimi rientrano nella categoria percentili . Sono solo i percentili più grandi e più piccoli. Può essere utile trovare altri percentili come la mediana o modalità .

Ad esempio, nell'elaborazione delle immagini è possibile utilizzare il colore mediano di un'area di pixel per attenuare i disturbi dell'immagine preservando i bordi degli oggetti.

    
risposta data 09.02.2017 - 06:32
fonte

Leggi altre domande sui tag