E 'ancora un Algoritmo Greedy

2

Come prefazione affermerò che questo è per un compito a casa. Ne ho già parlato con il professore e non userò questo disegno. Questo scopo di questa domanda è se l'algoritmo definito è avido o meno. Inoltre, se questo è nella sezione sbagliata, mi scuso e per favore fatemi sapere dove dovrebbe essere richiesto.

Vorrei sapere se il seguente algoritmo sarebbe considerato un algoritmo avido. Ci sono due fasi dell'algoritmo, ma sono interessato all'algoritmo nel suo complesso.

Primo stadio: lancia una serie di algoritmi grezzi predefiniti. Ogni algoritmo fornirebbe una soluzione per il problema generale. Ad esempio, dato il problema di pianificazione, se avessi i seguenti algoritmi:

  1. Scegli la richiesta più lunga di tutte le scelte.
  2. Scegli la richiesta più breve di tutte le scelte.
  3. Scegli l'ultima richiesta finale di tutte le scelte.

Secondo stadio: ora avrei tre "soluzioni" tra cui scegliere. Ora scelgo la soluzione "migliore" da alcuni criteri, ad esempio il numero massimo di richieste pianificate.

Questo algoritmo a due stadi è considerato un algoritmo ingordo poiché tutte le parti stesse sono golose?

    
posta John Thomas 26.11.2014 - 23:49
fonte

1 risposta

1

Per prima cosa definiamo un algoritmo avido - lo prenderò da Wikipedia perché è ragionevole.

A greedy algorithm is an algorithm that follows the problem solving heuristic of making the locally optimal choice at each stage with the hope of finding a global optimum.

Per la tua soluzione ponderata, non è un algoritmo avido perché non c'è davvero una questione di più fasi e di fare scelte nella speranza di trovare un optimum globale. Sarebbe più probabile chiamarlo un metodo amalgamato o, più idiomaticamente, un metodo Goldilocks: prova tutte le opzioni e scegli quella che ti piace di più. Questo assomiglia più a un metodo a forza bruta, o un metodo best-of-three (come con alcune ottimizzazioni di quicksort nel problema di scegliere una buona mediana), che assomiglia a un algoritmo tradizionale avido.

Il problema principale, al di là delle definizioni tecniche, è la ragione per considerare il termine "avido" stesso: come può un tentativo di risolvere un problema affrontare il fatto che a volte ciò che sembra l'idea migliore in quel momento può non portare il risultato ideale? Se generalmente ignora questo problema e fa solo ciò che ha più senso un passo alla volta, la soluzione è generalmente considerata una golosa; se tenta in qualche modo di considerare l'impatto dell'ottima locale, non lo è (anche se produce risultati terribili!); se considera tutte le possibili soluzioni, è brute-force ... ecc.

    
risposta data 27.11.2014 - 01:10
fonte

Leggi altre domande sui tag