L'analisi Smoothed è utilizzata al di fuori del mondo accademico?


24

L' analisi semplificata ha trovato la sua strada nell'analisi del flusso principale di algoritmi? È comune per i progettisti di algoritmi applicare un'analisi uniforme ai loro algoritmi?


11
Le persone applicano qualche tipo di analisi della complessità ai loro algoritmi al di fuori del mondo accademico?
Dave Clarke

2
Cosa dice @DaveClarke; forse dovrebbe chiedere analisi rigorose (o non banali). Mi aspetto che molti praticanti guardino i loro algoritmi, contino la profondità di annidamento del loop e diano: "Questo è !". O(n3)
Raffaello

3
Durante la ricerca di qualsiasi uso di analisi semplificata diversa da Simplex, ho trovato un elenco curato da uno dei ragazzi che hanno scoperto la tecnica.
Raffaello

1
@DaveClarke che ne dici delle persone che lavorano in IBM o HP o NTT? Non dovrebbero usare quel tipo di analisi?
Marcos Villagra

1
@DaveClarke Lo faccio.
Kevin

Risposte:


12

Potrei sbagliarmi, ma considero l'analisi smussata come un modo per spiegare il comportamento pratico degli algoritmi che hanno cattive garanzie teoriche (simplex, k-medie e così via). Non sono sicuro di cosa significherebbe usare un'analisi uniforme nella pratica, se non per giustificare l'uso di un particolare euristico con prestazioni peggiori nel peggiore dei casi ("Il mio euristico ha un comportamento nel peggiore dei casi blah blah, ma un'analisi smussata indica che lo farà fare bene in pratica ecc. ecc. ")


2
Il problema è che finora, i grandi successi dell'analisi regolare sono stati spiegando la pratica corrente, quindi i professionisti potrebbero semplicemente reagire dicendo "beh, è ​​bello che si possa dimostrare che tutto ciò che ho fatto ha senso" :). Non so se qualcuno abbia deciso di usare un euristico finora meno noto PERCHÉ l'analisi è lisciata.
Suresh

L'analisi formale levigata è molto difficile, non c'è motivo per cui nessuno in teoria dovrebbe praticarla. D'altra parte, se lo consideri come un euristico usato per analizzare un algoritmo (ovvero, l'input è semi-casuale), allora è probabilmente usato tutto il tempo.
Yuval Filmus,

3

Il modo in cui le persone analizzano gli algoritmi nel mondo reale è molto diverso dal mondo accademico. Mentre in ambito accademico l'obiettivo è quello di trovare un limite superiore dimostrabilmente corretto sul tempo di esecuzione, nella vita reale l'obiettivo è capire come funziona l'algoritmo e quali modifiche possono migliorare il tempo di esecuzione. Esistono due metodi principali che sono vietati nel mondo accademico ma utilizzati nella pratica:

  • Il metodo di approssimazione. Qui si usano molte ipotesi di semplificazione per provare a prevedere il tempo di esecuzione di un algoritmo. Simile a quello che fanno i fisici teorici.
  • Sperimentazione. Esegui il tuo algoritmo e misuri diverse statistiche: quanto tempo è stato dedicato a ciascuna parte, quante volte è stata chiamata ogni funzione, quante volte è stato eseguito ciascun ramo e così via. Queste informazioni possono essere utilizzate per ottimizzare l'algoritmo. La sperimentazione viene anche utilizzata per scoprire se alcune approssimazioni fatte durante l'analisi dell'algoritmo funzionano o meno nella pratica.

Detto questo, non penso che sia molto comune analizzare un algoritmo in pratica, oltre ad aggiungere del testo di riempimento in una relativa pubblicazione accademica. L'attenzione si concentra sull'ingegneria del software o sull'ottimizzazione di basso livello, a seconda dell'argomento.

Infine, l'analisi semplificata è un'euristica che può essere utilizzata per spiegare perché gli algoritmi funzionano meglio nella pratica di quanto suggerirebbe il loro caso peggiore, vale a dire dal momento che alcuni degli input sono "casuali" in un certo senso. Questa euristica può essere utilizzata per approssimare il comportamento dell'algoritmo se si utilizza il metodo di approssimazione.


"Mentre in ambito accademico l'obiettivo è quello di trovare un limite superiore dimostrabilmente corretto sul tempo di esecuzione" - questo è un obiettivo, non l' obiettivo. C'è anche molto lavoro sull'analisi media dei casi, anche se lo studente CS medio potrebbe non vederlo molto (perché è relativamente difficile). "Capire come funziona l'algoritmo" è, probabilmente, la base di tutti gli algoritmi nel mondo accademico.
Raffaello
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.